def generate_tensorplex_report(self):
        """
            Generates stats to be reported to tensorplex
        """
        global_step = int(time.time() - self.init_time)

        time_elapsed = time.time() - self.last_tensorplex_iter_time + 1e-6

        cum_count_collected = self.cumulative_collected_count
        new_exp_count = cum_count_collected - self.last_experience_count
        self.last_experience_count = cum_count_collected

        cum_count_sampled = self.cumulative_sampled_count
        new_sample_count = cum_count_sampled - self.last_sample_count
        self.last_sample_count = cum_count_sampled

        cum_count_requests = self.cumulative_request_count
        new_request_count = cum_count_requests - self.last_request_count
        self.last_request_count = cum_count_requests

        exp_in_speed = self.exp_in_speed.add_value(new_exp_count / time_elapsed)
        exp_out_speed = self.exp_out_speed.add_value(new_sample_count / time_elapsed)
        handle_sample_request_speed = self.handle_sample_request_speed.add_value(
                                                    new_request_count / time_elapsed)

        insert_time = self.insert_time.avg
        sample_time = self.sample_time.avg
        serialize_time = self.serialize_time.avg

        core_metrics = {
            'num_exps': len(self),
            'total_collected_exps': cum_count_collected,
            'total_sampled_exps': cum_count_sampled,
            'total_sample_requests': self.cumulative_request_count,
            'exp_in_per_s': exp_in_speed,
            'exp_out_per_s': exp_out_speed,
            'requests_per_s': handle_sample_request_speed,
            'insert_time_s': insert_time,
            'sample_time_s': sample_time,
            'serialize_time_s': serialize_time,
        }

        serialize_load = serialize_time * handle_sample_request_speed / time_elapsed
        collect_exp_load = insert_time * exp_in_speed / time_elapsed
        sample_exp_load = sample_time * handle_sample_request_speed / time_elapsed

        system_metrics = {
            'lifetime_experience_utilization_percent':
            cum_count_sampled / (cum_count_collected + 1) * 100,
            'current_experience_utilization_percent': exp_out_speed / (exp_in_speed + 1) * 100,
            'serialization_load_percent': serialize_load * 100,
            'collect_exp_load_percent': collect_exp_load * 100,
            'sample_exp_load_percent': sample_exp_load * 100,
            # 'exp_queue_occupancy_percent': self._exp_queue.occupancy() * 100,
        }

        all_metrics = {}
        for k in core_metrics:
            all_metrics['.core/' + k] = core_metrics[k]
        for k in system_metrics:
            all_metrics['.system/' + k] = system_metrics[k]
        self.tensorplex.add_scalars(all_metrics, global_step=global_step)

        self.last_tensorplex_iter_time = time.time()

            Generates stats to be reported to tensorplex
        
surreal/replay/base.py