ecoli.experiments.ecoli_engine_process

Composite for simulations with EngineProcess cells in an environment.

Note

This composite requires a config with the spatial environment enabled.

class ecoli.experiments.ecoli_engine_process.EcoliEngineProcess(config=None)[source]

Bases: Composer

Outer composer for use with :py:class:`~ecoli.processes.engine_process.EngineProcess.

In addition to creating an EngineProcess containing an entire vEcoli simulation, the composite generated by this composer optionally includes the Lysis Step when given a non-empty lysis_config.

Base class for composer classes.

Composers generate composites.

All composer classes must inherit from this class.

Parameters:

config (dict | None) – Dictionary of configuration options that can override the class defaults.

defaults: Dict[str, Any]
{   'agent_id': '0',
    'divide': False,
    'division_threshold': True,
    'emit_paths': (),
    'experiment_id': '',
    'inner_composer_config': {},
    'inner_emitter': 'null',
    'inner_same_timestep': True,
    'lysis_config': {},
    'parallel': False,
    'seed': 0,
    'start_time': 0,
    'stub_schemas': {},
    'tunnel_out_schemas': {},
    'tunnels_in': ()}
generate_processes(config)[source]
generate_topology(config)[source]
class ecoli.experiments.ecoli_engine_process.EcoliInnerSim(config=None)[source]

Bases: Composer

Inner composer to be used with :py:class:`~ecoli.processes.engine_process.EngineProcess.

Base class for composer classes.

Composers generate composites.

All composer classes must inherit from this class.

Parameters:

config (dict | None) – Dictionary of configuration options that can override the class defaults.

defaults: Dict[str, Any]
{   'agent_id': '0',
    'chromosome_path': None,
    'division_threshold': None,
    'division_variable': None,
    'initial_state': None,
    'seed': 0}
generate(config=None)[source]

Generates a complete E. coli simulation composite to be used as the inner simulation in an EngineProcess.

This requires caching the initial state generated in the course of calling build_ecoli() and wrapping the returned composite using EcoliInnerWrapper to ensure that the cached initial state is returned when the initial_state method is called on the composite.

Additionally, this requires a special DivisionDetector Step to set the store located at ("division_trigger",) to True when it is time to divide. This is necessary because the actual logic of division is included in the next_update() method of EngineProcess, making that part of the normal Division process obsolete but not the part that signals the time for division (whether that be via a D period or mass threshold mechanism). The DivisionDetector process takes over that role while relinquishing control over the actual division to EngineProcess.

generate_processes(config)[source]
generate_topology(config)[source]
class ecoli.experiments.ecoli_engine_process.EcoliInnerWrapper(config=None, store=None, processes=None, steps=None, flow=None, topology=None, state=None)[source]

Bases: Composite

Helper class to ensure calling initial_state() on the composite generated by EcoliInnerSim returns the cached initial state and removes the internal reference to this state.

Parameters:
initial_state(config)[source]
ecoli.experiments.ecoli_engine_process.colony_save_states(engine, config)[source]

Runs the simulation while saving the states of the colony at specific timesteps to JSONs in the data folder. The saved files have names of the format {prefix}_seed_{seed}_colony_t{save time}.json if a prefix is specified via the colony_save_prefix configuration option and seed_{seed}_colony_t{save time}.json if not.

ecoli.experiments.ecoli_engine_process.run_simulation(config)[source]

Main method for running colony simulations in accordance with dictionary of configuration options.