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 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 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.