vivarium.processes.multibody_physics module

Multibody physics process

class vivarium.processes.multibody_physics.InvokeUpdate(update)[source]

Bases: object

get(timeout=0)[source]
class vivarium.processes.multibody_physics.Multibody(initial_parameters=None)[source]

Bases: vivarium.core.process.Process

Simulates collisions and forces between agent bodies with a multi-body physics engine.

Ports: * agents: The store containing all agent sub-compartments. Each agent in

this store has values for location, angle, length, width, mass, thrust, and torque.

Parameters
  • initial_parameters (dict) – Accepts the following configuration keys:

  • jitter_force (*) – force applied to random positions along agent bodies to mimic thermal fluctuations. Produces Brownian motion.

  • agent_shape (*) – agents can take the shapes rectangle, segment, or circle.

  • bounds (*) – size of the environment in micrometers, with [x, y].

  • mother_machine (*) – if set to True, mother machine barriers are introduced.

  • *animate* (*) –

    interactive matplotlib option to animate multibody. To run with animation turned on set True, and use the TKAgg matplotlib backend:

    $ MPLBACKEND=TKAgg python vivarium/processes/multibody_physics.py
    

Notes

  • rotational diffusion in liquid medium with viscosity = 1 mPa.s: \(Dr = 3.5 \pm0.3 rad^{2}/s\) (Saragosti, et al. 2012. Modeling E. coli tumbles by rotational diffusion.)

  • translational diffusion in liquid medium with viscosity = 1 mPa.s: \(Dt = 100 um^{2}/s\) (Saragosti, et al. 2012. Modeling E. coli tumbles by rotational diffusion.)

animate_frame(agents)[source]
defaults = {'agent_shape': 'segment', 'agents': {}, 'animate': False, 'bounds': [10, 10], 'jitter_force': 0.001, 'mother_machine': False, 'time_step': 2}
name = 'multibody'
next_update(timestep, states)[source]
ports_schema()[source]
vivarium.processes.multibody_physics.agent_body_config(config)[source]
vivarium.processes.multibody_physics.daughter_locations(parent_location, parent_values)[source]
vivarium.processes.multibody_physics.get_baseline_config(config={})[source]
vivarium.processes.multibody_physics.make_random_position(bounds)[source]
vivarium.processes.multibody_physics.random_body_position(body)[source]
vivarium.processes.multibody_physics.run_growth_division(config={})[source]
vivarium.processes.multibody_physics.run_jitter(config={}, out_dir='out', filename='jitter')[source]
vivarium.processes.multibody_physics.run_motility(config={}, out_dir='out', filename='motility')[source]
vivarium.processes.multibody_physics.simulate_growth_division(config, settings)[source]
vivarium.processes.multibody_physics.simulate_motility(config, settings)[source]
vivarium.processes.multibody_physics.single_agent_config(config)[source]
vivarium.processes.multibody_physics.test_multibody(config={'n_agents': 1}, time=10)[source]