def run_tensorplex(self):
        """
            Launches a tensorplex process.
            It receives data from multiple sources and
            send them to tensorboard.
        """
        folder = os.path.join(self.session_config.folder, 'tensorboard')
        tensorplex_config = self.session_config.tensorplex

        tensorplex = Tensorplex(
            folder,
            max_processes=tensorplex_config.max_processes,
        )

        """
            Tensorboard categories:
                learner/replay/eval: algorithmic level, e.g. reward, ...
                ***-core: low level metrics, i/o speed, computation time, etc.
                ***-system: Metrics derived from raw metric data in core,
                    i.e. exp_in/exp_out
        """
        (tensorplex
         .register_normal_group('learner')
         .register_indexed_group('agent', tensorplex_config.agent_bin_size)
         .register_indexed_group('eval', 4)
         .register_indexed_group('replay', 10))

        port = os.environ['SYMPH_TENSORPLEX_PORT']
        tensorplex.start_server(port=port)

            Launches a tensorplex process.
            It receives data from multiple sources and
            send them to tensorboard.
        
surreal/launch/launcher.py