Glossary¶
Note
Some fully-capitalized words and phrases have the meanings specified in RFC 2119.
- ABM
- Agent-Based Model
- Agent-based model
- agent-based model
- Agent-Based Models
- Agent-based models
- agent-based models
Agent-based modeling is a modeling paradigm in which population-level phenomena are emergent from interactions among simple agents. An agent-based model is a model constructed using this paradigm.
- Boundary Store
- boundary store
- Boundary Stores
- boundary stores
Compartments interact through boundary stores that represent how the compartments affect each other. For example, between an environment compartment and a cell compartment, there might be a boundary store to track the flux of metabolites from the cell to the environment and vice versa.
- Compartment
- compartment
- Compartments
- compartments
Compartments are composites at a single level of a hierarchy. Each compartment is like an agent in an agent-based model, which can be nested in an environment and interact with neighbors, parent, and child compartments. These interactions are possible through boundary stores that connect internal processes to states outside of the compartment. Thus, a model might contain a compartment for an environment which contains two child compartments for the two cells in the environment. For more details, see our guide to compartments.
- composer
- Composer
An object with a generate method, which returns a Composite with Processes and Topologies.
- Composite
- composite
- Composites
- composites
Composites are dictionaries with special keys for processes and topology. The processes key map to a dictionary with initialized processes, and the topology specifies how they are wire to stores.
- Deriver
- deriver
- Derivers
- derivers
Derivers have been deprecated in favor of steps.
- Divider
- divider
- Dividers
- dividers
When a cell divides, we have to decide how to generate the states of its daughter cells. Dividers specify how to generate these daughter cells, for example by assigning half of the value of the variable in the mother cell to each of the daughter cells. We assign a divider to each variable in the schema. For more details, see the documentation for
vivarium.core.registry
.- Embedded Timeseries
- Embedded timeseries
- embedded timeseries
An embedded timeseries has nearly the same shape as a simulation state dictionary, only each variable’s value is a list of values over time, and there is an additional
time
key. For details, see the guide on emitters.- Emitter
- emitter
- Emitters
- emitters
While a simulation is running, the current state is stored in stores, but this information is overwritten at each timestep with an updated state. When we want to save off variable values for later analysis, we send these data to one of our emitters, each of which formats the data for a storage medium, for example a database or a Kafka message. We then query the emitter to get the formatted data.
- Exchange
- exchange
- Exchanges
- exchanges
The flux between a cell and its environment. This is stored in a boundary store.
- Engine
- engine
- Experiment
- experiment
- Experiments
- experiments
Vivarium defines simulations using
vivarium.core.engine.Engine
objects. These simulations can contain arbitrarily nested compartments, and you can run them to simulate your model over time. See the documentation for theEngine
class and our guide to experiments for more details.- Flow
- flow
- Flows
- flows
Flows specify dependency graphs for running steps. They have the same structure as topologies, but instead of their leaf values being paths, they are lists of paths where each path specifies a dependency step.
- Inner
- inner
A once-removed internal node position relative to a given node in the tree. Nodes can have multiple inners connected to them. The reciprocal relationship is an outer, but a node can have at most one outer.
- Masking
- masking
When Vivarium passes stores to processes, it includes only the variables the process has requested. We call this filtering masking.
- MSM
- Multiscale Model
- Multiscale model
- multiscale model
- Multiscale Models
- Multiscale models
- multiscale models
Multiscale models use different spatial and temporal scales for their component sub-models. For example, Vivarium models a cell’s internal processes and the interactions between cells and their environment at different temporal scales since these processes require different degrees of temporal precision.
- Outer
- outer
A once-removed external node position relative to a given node in the tree. Each node, except for the top-most node, has one outer node that it exists within. The reciprocal relationship is an inner, but a node can have many inners.
- Path
- path
- Paths
- paths
In its most general form, a path specifies an item in a nested dictionary as a tuple of dictionary keys. For example, consider the following nested dictionary:
{ 'a': { 'b': { 'c': None, }, 'd': {}, }, }
In this example, the path
('a', 'b', 'c')
points toNone
.In Vivarium, we often use paths to identify nodes within the hierarchy. This works because the hierarchy is just a collection of nested dictionaries.
- Path Timeseries
- Path timeseries
- path timeseries
A path timeseries is a flattened form of an embedded timeseries where keys are paths in the simulation state dictionary and values are lists of the variable value over time. We describe simulation data formats in more detail in our guide to emitters.
- Port
- port
- Ports
- ports
When a process needs access to part of the model state, it will be provided a store. The ports of a process are what the process calls those stores. When running a process, you provide a store to each of the process’s ports. Think of the ports as physical ports into which a cable to a store can be plugged.
- Process
- process
- Processes
- processes
A process in Vivarium models a cellular process by defining how the state of the model should change at each timepoint, given the current state of the model. During the simulation, each process is provided with the current state of the model and the timestep, and the process returns an update that changes the state of the model. Each process is an instance of a process class.
To learn how to write a process, check out our process-writing tutorial. For a detailed guide to processes, see our guide to processes.
- Process Class
- Process class
- process class
- Process Classes
- Process classes
- process classes
A process class is a Python class that defines a process’s model. These classes can be instantiated, and optionally configured, to create processes. Each process class must subclass either
vivarium.core.process.Process
or another process class.- Process Command
- Process command
- process command
- Process Commands
- Process commands
- process commands
Instructions that let Vivarium communicate with parallel processes in a remote-procedure-call-like fashion. See the processes guide for details.
- Raw Data
- Raw data
- raw data
The primary format for simulation data is “raw data.” See the guide on emitters.
- Schema
- schema
- Schemas
- schemas
A schema defines the properties of a set of variables by associating with each variable a set of schema key-value pairs.
- Schema Key
- Schema key
- schema key
- Schema Keys
- Schema keys
- schema keys
- Schema Value
- Schema value
- schema value
- Schema Values
- Schema values
- schema values
- Schema Key-Value Pair
- Schema key-value pair
- schema key-value pair
- Schema Key-Value Pairs
- Schema key-value pairs
- schema key-value pairs
Each variable is defined by a set of schema key-value pairs. The available keys are defined in
vivarium.core.store.Store.schema_keys
. These keys are described in more detail in the documentation forvivarium.core.store.Store
.- Serializer
- serializer
- Serializers
- serializers
A serializer is an object that converts data of a certain type into a format that can transmitted and stored.
- Step
- step
- Steps
- steps
Steps run after all processes have run for a timepoint and compute values from the state of the model. These steps may have dependencies on each other, and these dependencies are specified in the
flow
key ofvivarium.core.composer.Composite
dictionaries. For more information, see the documentation forvivarium.core.composer.Composer
.- Store
- store
- Stores
- stores
The state of the model is broken down into stores, each of which represents the state of some physical or conceptual subset of the overall state. For example, a cell model might have a store for the proteins in the cytoplasm, another for the transcripts in the cytoplasm, and one for the transcripts in the nucleus. Each variable must belong to exactly one store.
- Store API
- store API
An experimental API that allows for simulations to be built up from stores.
- Template
- template
- Templates
- templates
A template describes a genetic element, its binding site, and the available downstream termination sites on genetic material. A chromosome has operons as its templates which include sites for RNA binding and release. An mRNA transcript also has templates which describe where a ribosome can bind and will subsequently release the transcript. Templates are defined in template specifications.
- Template Specification
- Template specification
- template specification
- Template Specifications
- Template specifications
- template specifications
Template specifications define templates as
dict
objects with the following keys:id (
str
): The template name. You SHOULD use the name of the associated operon or transcript.position (
int
): The index in the genetic sequence of the start of the genetic element being described. In a chromosome, for example, this would denote the start of the modeled operon’s promoter. On mRNA transcripts (where we are describing how ribosomes bind), this SHOULD be set to0
.direction (
int
):1
if the template should be read in the forward direction,-1
to proceed in the reverse direction. For mRNA transcripts, this SHOULD be1
.sites (
list
): A list of binding sites. Each binding site is specified as adict
with the following keys:position (
int
): The offset in the sequence from the template position to the start of the binding site. This value is not currently used and MAY be set to 0.length (
int
): The length, in base-pairs, of the binding site. This value is not currently used and MAY be set to 0.thresholds (
list
): A list of tuples, each of which has a factor name as the first element and a concentration threshold as the second. When the concentration of the factor exceeds the threshold, the site will bind the factor. For example, in an operon the factor would be a transcription factor.
terminators (
list
): A list of terminators, which halt reading of the template. As such, which genes are encoded on a template depends on which terminator halts transcription or translation. Each terminator is specified as adict
with the following keys:position (
int
): The index in the genetic sequence of the terminator.strength (
int
): The relative strength of the terminator. For example, if there remain two terminators ahead of RNA polymerase, the first of strength 3 and the second of strength 1, then there is a 75% chance that the polymerase will stop at the first terminator. If the polymerase does not stop, it is guaranteed to stop at the second terminator.products (
list
): A list of the genes that will be transcribed or translated should transcription/translation halt at this terminator.
- Timepoint
- timepoint
- Timepoints
- timepoints
We discretize time into timepoints and update the model state at each timepoint. We collect data from the model at each timepoint. Note that each compartment may be running with different timesteps depending on how finely we need to discretize time.
- Timeseries
- timeseries
“Timeseries” can refer to the general way in whcih we store simulation data or to an embedded timeseries. See the guide on emitters for details.
- Timestep
- timestep
- Timesteps
- timesteps
The amount of time elapsed between two timepoints. This is the amount of time for which processes compute an update. For example, if we discretize time into two-second intervals, then each process will be asked to compute an update for how the state changes over the next two seconds. The timestep is two seconds.
- Topology
- topology
- Topologies
- topologies
A topology defines how stores are associated to ports. This tells Vivarium which store to pass to each port of each process during the simulation. See the constructor documentation for
vivarium.core.engine.Engine
for a more detailed specification of the form of a topology.- Hierarchy
- hierarchy
- Hierarchies
- hierarchies
- Compartment Hierarchy
- compartment hierarchy
- Tree
- tree
- Trees
- trees
We nest the stores of a model to form a tree called a hierarchy. Each internal node is a store and each leaf node is a variable. This tree can be traversed like a directory tree, and stores are identified by paths. For details see the hierarchy guide. Note that this used to be called a tree.
- Update
- update
- Updates
- updates
An update describes how the model state should change due to the influence of a process over some period of time (usually a timestep).
- Updater
- updater
- Updaters
- updaters
An updater describes how an update should be applied to the model state to produce the updated state. For example, the update could be added to the old value or replace it. Updaters are described in more detail in the documentation for
vivarium.core.registry
.- Variable
- variable
- Variables
- variables
The state of the model is a collection of variables. Each variable stores a piece of information about the full model state. For example, the concentration of glucose in the cytoplasm might be a variable, while the concentration of glucose-6-phosphate in the cytoplasm is another variable. The extracellular concentration of glucose might be a third variable. As these examples illustrate, variables are often track the amount of a molecule in a physical region. Exceptions exist though, for instance whether a cell is dead could also be a variable.
Each variable is defined by a set of schema key-value pairs.
- WCM
- Whole-Cell Model
- Whole-cell model
- whole-cell model
- Whole-Cell Models
- Whole-cell models
- whole-cell models
Whole-cell models seek to simulate a cell by modeling the molecular mechanisms that occur within it. For example, a cell’s export of antibiotics might be modeled by the transcription of the appropriate genes, translation of the produced transcripts, and finally complexation of the translated subunits. Ideally the simulated phenotype is emergent from the modeled processes, though many such models also include assumptions that simplify the model.