Run output is placed under
out/
:Some of the output data is stored as
.cpickle
files. To observe those files, you need the original Python classes, and therefore you have to be inside Docker, from the host it won't work.We can list all the plots that have been produced under
Plots are also available in SVG and PDF formats, e.g.:
out/
with
find -name '*.png'
The output directory has a hierarchical structure of type:
where:
./out/manual/wildtype_000000/000000/generation_000000/000000/
wildtype_000000
: variant conditions.wildtype
is a human readable label, and000000
is an index amongst the possiblewildtype
conditions. For example, we can have different simulations with different nutrients, or different DNA sequences. An example of this is shown at run variants.000000
: initial random seed for the initial cell, likely fed to NumPy'snp.random.seed
genereation_000000
: this will increase with generations if we simulate multiple cells, which is supported by the model000000
: this will presumably contain the cell index within a generation
We also understand that some of the top level directories contain summaries over all cells, e.g. the
massFractionSummary.pdf
plot exists at several levels of the hierarchy:
./out/manual/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/000000/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/000000/generation_000000/000000/plotOut/massFractionSummary.pdf
Each of thoes four levels of
plotOut
is generated by a different one of the analysis scripts:./out/manual/plotOut
: generated bypython runscripts/manual/analysisVariant.py
. Contains comparisons of different variant conditions. We confirm this by looking at the results of run variants../out/manual/wildtype_000000/plotOut
: generated bypython runscripts/manual/analysisCohort.py --variant_index 0
. TODO not sure how to differentiate between two different labels e.g.wildtype_000000
andsomethingElse_000000
. If-v
is not given, a it just picks the first one alphabetically. TODO not sure how to automatically generate all of those plots without inspecting the directories../out/manual/wildtype_000000/000000/plotOut
: generated bypython runscripts/manual/analysisMultigen.py --variant_index 0 --seed 0
./out/manual/wildtype_000000/000000/generation_000000/000000/plotOut
: generated bypython runscripts/manual/analysisSingle.py --variant_index 0 --seed 0 --generation 0 --daughter 0
. Contains information about a single specific cell.
Let's look into a sample plot,
out/manual/plotOut/svg_plots/massFractionSummary.svg
, and try to understand as much as we can about what it means and how it was generated.This plot contains how much of each type of mass is present in all cells. Since we simulated just one cell, it will be the same as the results for that cell.
We can see that all of them grow more or less linearly, perhaps as the start of an exponential. We can see that all of them grow more or less linearly, perhaps as the start of an exponential. We can see that all of them grow more or less linearly, perhaps as the start of an exponential.which must correspond to the different
By grepping the title "Cell mass fractions" in the source code, we see the files:
models/ecoli/analysis/cohort/massFractionSummary.py
models/ecoli/analysis/multigen/massFractionSummary.py
models/ecoli/analysis/variant/massFractionSummary.py
massFractionSummary
plots throughout different levels of the hierarchy.By reading
models/ecoli/analysis/variant/massFractionSummary.py
a little bit, we see that:- the plotting is done with Matplotlib, hurray
- it is reading its data from files under
./out/manual/wildtype_000000/000000/generation_000000/000000/simOut/Mass/
, more precisely./out/manual/wildtype_000000/000000/generation_000000/000000/simOut/Mass/columns/<column-name>/data
. They are binary files however.Looking at the source forwholecell/io/tablereader.py
shows that those are just a standard NumPy serialization mechanism. Maybe they should have used the Hierarchical Data Format instead.We can also take this opportunity to try and find where the data is coming from.Mass
from the./out/manual/wildtype_000000/000000/generation_000000/000000/simOut/Mass/
looks like an ID, so wegrep
that and we reachmodels/ecoli/listeners/mass.py
.From this we understand that all data that is to be saved from a simulation must be coming from listeners: likely nothing, or not much, is dumped by default, because otherwise it would take up too much disk space. You have to explicitly say what it is that you want to save via a listener that acts on each time step.
More plot types will be explored at time series run variant, where we will contrast two runs with different growth mediums.
Articles by others on the same topic
There are currently no matching articles.