Welcome to mycelyso’s documentation!¶
See mycelyso Readme for information.
Indices and tables¶
Contents:

mycelyso Readme¶
Frontmatter¶
Screenshot¶

Installation and Analysis Tutorial Videos¶


These videos shows how to download and unpack mycelyso as well as to run a test analysis using the pre-packages Windows version of mycelyso.
Publication¶
When using mycelyso for scientific applications, please cite our publication:
Sachs CC, Koepff J, Wiechert W, Grünberger A, Nöh K (2019) mycelyso – high-throughput analysis of Streptomyces mycelium live cell imaging data BMC Bioinformatics, volume 20, 452, doi: 10.1186/s12859-019-3004-1
It is available on the BMC Bioinformatics homepage at DOI: 10.1186/s12859-019-3004-1
Documentation¶
Documentation can be built using sphinx, but is available online as well at Read the Docs.
Getting mycelyso and Datasets¶
Example Datasets¶
You can find an example dataset deposited at zenodo DOI: 10.5281/zenodo.376281.
Ways to install mycelyso¶
Pre-Bundled Windows Application¶
If you don’t have a Python 3 installation ready, and want to just run mycelyso, we you can download a pre-packaged version for 64-bit versions of Windows (mycelyso-win64.zip) from AppVeyor.
Please note, that, instead of python -m mycelyso
or python -m mycelyso_inspector
, the calls would then be mycelyso.exe
or mycelyso_inspector.exe
.
Packages for the conda Package manager¶
While mycelyso is a pure Python package, it has some dependencies which are a bit more complex to build and might not be present in the PyPI (Python Package Index). Thankfully the conda Package manager / Anaconda environment provides all packages necessary in an easy to use manner. To use it, please download Anaconda (Miniconda could be downloaded as well, but as most packages included in Anaconda are needed anyways, it does hardly provide a size benefit).
You have to enable the necessary channels (we aim to add mycelyso to bioconda lateron):
> conda config --add channels conda-forge
> conda config --add channels bioconda
> conda config --add channels csachs
> conda install -y mycelyso mycelyso-inspector
Please note that this readme assumes you are starting with a fresh install of Anaconda/Miniconda. If you start with an existing installation, individual dependency packages might need to be updated.
Packages from PyPI (for advanced users)¶
If you have a working Python 3 installation and can eventually fix missing dependencies, you can as well use the PyPI version:
> pip install --user mycelyso mycelyso-inspector
Directly from github (for advanced users)¶
> pip install --user https://github.com/modsim/mycelyso/archive/master.zip mycelyso-inspector
mycelyso Quickstart¶
mycelyso is packaged as a Python module, to run it, use the following syntax:
> python -m mycelyso
Which will produce the help screen:
mycelyso INFO
MYCElium anaLYsis __ SOftware
___ __ _________ / /_ _____ ___ Developed 2015 - 2019 by
/ ' \/ // / __/ -_) / // (_-</ _ \ __
/_/_/_/\_, /\__/\__/_/\_, /___/\___/' \. Christian C. Sachs at
/___/ /___/ |
\ ` __ ,'''' Modeling&Simulation Group
\ `----._ _,' `' _/
---' '' `-' Research Centre Juelich
For more information visit: github.com/modsim/mycelyso
If you use this software in a publication, please cite our paper:
Sachs CC, Koepff J, Wiechert W, Grünberger A, Nöh K (2019)
mycelyso – high-throughput analysis of Streptomyces mycelium live cell imaging data
BMC Bioinformatics, volume 20, 452, doi: 10.1186/s12859-019-3004-1
usage: __main__.py [-h] [-m MODULES] [-n PROCESSES] [--prompt]
[-tp TIMEPOINTS] [-mp POSITIONS] [-t TUNABLE]
[--tunables-show] [--tunables-load TUNABLES_LOAD]
[--tunables-save TUNABLES_SAVE] [--meta META]
[--interactive] [--output OUTPUT]
input
positional arguments:
input input file
optional arguments:
-h, --help show this help message and exit
-m MODULES, --module MODULES
-n PROCESSES, --processes PROCESSES
--prompt, --prompt
-tp TIMEPOINTS, --timepoints TIMEPOINTS
-mp POSITIONS, --positions POSITIONS
-t TUNABLE, --tunable TUNABLE
--tunables-show
--tunables-load TUNABLES_LOAD
--tunables-save TUNABLES_SAVE
--meta META, --meta META
--interactive, --interactive
--output OUTPUT, --output OUTPUT
To run an analysis, just pass the appropriate filename as a parameter. The desired timepoints can be selected via the
--timepoints
switch, and if the file contains multiple positions, they can be selected with --positions
.
Supported file formats are TIFF, OME-TIFF, Nikon ND2 and Zeiss CZI.
The analysis will use all cores present by default. While this is generally desirable, it might lead to consuming
too much memory (as each parallel acting process needs a certain additionally amount of memory).
If you notice that mycelyso takes up too much memory, try limiting the number of processes via -n
.
If you choose -n 0
, the code will additionally not use the parallel subsystem (multiprocessing
).
Running an analysis¶
To analyze the example dataset, run:
(-t BoxDetection=1
is used, as the spores were grown in rectangular growth chambers, which are to be detected.
Otherwise, the software will use the whole image, or cropping values as set via -t CropWidth=...
/-t CropHeight=...
.
If the data is pre-segmented (i.e. input is a binary image stack), choose -t SkipBinarization=1
.
> python -m mycelyso S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff -t BoxDetection=1
Optionally, you can inspect the segmentation and produced graph on a per-frame basis before running a complete analysis, by
adding the --interactive
flag, in which case mycelyso will start an interactive viewer.
mycelyso stores all data compressed in HDF5 files, by default it will write a file called output.h5
(can be changed with --output
).
> ls -lh --time-style=+
total 1.3G
-rw-rw-r-- 1 sachs sachs 5.4M output.h5
-rw-rw-r-- 1 sachs sachs 1.5G S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff
Multiple datasets/positions can be stored in the same file, it will only make problems if the same position is about to be analyzed twice. Binary masks/skeletons are stored in the HDF5 file, as well as GraphML representations of the tracking graphs. The HDF5 file can be investigated with standard HDF5 tools, tabular data is to be opened with pandas, as it is stored with its format.
Results visualization using mycelyso Inspector¶
However, since the raw data is only interesting if you want to perform custom analyses, it is much more straightforward to use the integrated visualization tool mycelyso Inspector as a helper to take a look at the results:
> python -m mycelyso_inspector
mycelyso Inspector will output the URL it is serving content at, and by default automatically open a browser window with it.
In mycelyso Inspector, you have various information displays: On the top, the HDF5 file / analyzed dataset / position can be selected. On the left, there is a list of graphs available. In the middle, there is the currently selected graph displayed. On the right, there is general information about the whole position (colony level statistics), below the main part is a table with information about individual tracks, and scrolled further down is the possibility to show individual graph tracking in 2D or a colony growth oversight in 3D. Sticky at the bottom is binarized or skeletonized timeline of the position.
The data to all graphs can be downloaded as tab separated text by pressing the right mouse button on a certain graph link (in the left menu) and choosing ‘Save As’.
Information: Occasional warnings in the console about invalid values are due to missing/invalid data points, and are of no particular concern.
WARNING: mycelyso Inspector will serve results from all HDF5 (.h5
) files found in the current directory via an embedded webserver.
Furthermore as a research tool, no special focus was laid on security, as such, you are assumed to prevent unauthorized
access to the tool if you choose to use an address accessible by third parties.
Setting calibration data for TIFF files¶
TIFF files provide no standard way to set temporal information per frame. To set these parameters manually, e.g. a pixel size of 0.09 µm/pixel and an acquisition interval of 600 s (10 min) use:
> python -m mycelyso "the_file.tif?calibration=0.09;interval=600"
Tunable Parameters¶
The analysis’ internal workings are dependent upon some tunable parameters.
All tunables are listed in the tunables documentation subpage. To check their current value, you can
view them all using the --tunables-show
command line option, which will as well print documentation.
To set individual ones to a different values one can use -t SomeTunable=NewValue
.
Individual tunables are documented within the API documentation as well.
> python -m mycelyso --tunables-show
> python -m mycelyso -t SomeTunable=42
Docker¶
Docker a tool allowing for software to be run in pre-defined, encapsulated environments called containers. To run mycelyso via Docker, an image is used which is a self-contained Linux system with mycelyso installed, which can either be preloaded or will be downloaded on the fly.
Use the following commands to run mycelyso via Docker:
To analyze:
> docker run --tty --interactive --rm --volume `pwd`:/data --user `id -u` modsim/mycelyso <parameters ...>
To run mycelyso Inspector:
> docker run --tty --interactive --rm --volume `pwd`:/data --user `id -u` --publish 8888:8888 --entrypoint python modsim/mycelyso -m mycelyso_inspector <parameters ...>
To run interactive mode (display on local X11, under Linux):
> docker run --tty --interactive --rm --volume `pwd`:/data --user `id -u` --env DISPLAY=$DISPLAY --volume /tmp/.X11-unix:/tmp/.X11-unix modsim/mycelyso --interactive <parameters ...>
General remarks: --tty
is used to allocate a tty, necessary for interactive usage, like --interactive
which connects to stdin/stdout.
The --rm
switch tells docker to remove the container (not image) again after use.
As aforementioned, docker is containerized, i.e. unless explicitly stated, no communication with the outside is possible.
Therefore via --volume
the current working directory is mapped into the container.
Third Party Licenses¶
Note that this software contains the following portions from other authors, under the following licenses (all BSD-flavoured):
- mycelyso/pilyso/imagestack/readers/external/czifile.py:
- czifile.py by Christoph Gohlke, licensed BSD (see file head).
- Copyright (c) 2013-2015, Christoph Gohlke, 2013-2015, The Regents of the University of California
License¶
The 2-clause BSD License¶
Copyright (c) 2015-2019 Christian C. Sachs, Forschungszentrum Jülich GmbH. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Example HDF5 Insights¶
This Jupyter Notebook should give a brief overview how to programmatically analyze the HDF5 files produced by mycelyso. Please note that you can always inspect these files with mycelyso Inspector as well, this tutorial should just give you a hint how to open these files if you might want to write your own analyses.
First, it is assumed that an output.h5
is present in the current
directory, with an analysis of the example dataset contained.
You can fetch the example dataset by running get-dataseth.sh
or
download it manually at https://zenodo.org/record/376281.
Afterwards, analyze it with:
> python -m mycelyso S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff -t BoxDetection=1
Afterwards, you will have an output.h5
in the residing in the
directory.
We will be using Pandas to read our data, while the non-tabular data could easily be read with any other HDF5 compatible tool, the tabular data is layed out in a chunked format particular to Pandas, and as such it is easiest to open it with Pandas.
First, some general setup …
%matplotlib inline
%config InlineBackend.figure_formats=['svg']
import pandas
pandas.options.display.max_columns = None
import numpy as np
import networkx as nx
from networkx.readwrite import GraphMLReader
from matplotlib import pyplot, ticker
pyplot.rcParams.update({
'figure.figsize': (10, 6), 'svg.fonttype': 'none',
'font.sans-serif': 'Arial', 'font.family': 'sans-serif',
'image.cmap': 'gray_r', 'image.interpolation': 'none'
})
Opening the HDF5 file¶
We will load the output.h5
using pandas.HDFStore
…
store = pandas.HDFStore('output.h5', 'r')
store
<class 'pandas.io.pytables.HDFStore'>
File path: output.h5
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/result_table frame (shape->[1,208])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/result_table_collected frame (shape->[136,27])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000001 frame (shape->[22,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000002 frame (shape->[29,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000003 frame (shape->[11,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000004 frame (shape->[23,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000005 frame (shape->[16,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000006 frame (shape->[14,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000007 frame (shape->[12,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000008 frame (shape->[9,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000009 frame (shape->[17,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000010 frame (shape->[11,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000011 frame (shape->[8,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000012 frame (shape->[7,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000013 frame (shape->[10,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000014 frame (shape->[5,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000015 frame (shape->[7,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000016 frame (shape->[5,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000017 frame (shape->[7,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000018 frame (shape->[8,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000019 frame (shape->[8,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_individual_track_table_aux_tables/track_table_aux_tables_000000020 frame (shape->[7,8])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/_mapping_track_table_aux_tables/track_table_aux_tables_000000000 frame (shape->[20,2])
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/tables/track_table/track_table_000000000 frame (shape->[20,66])
Now let’s dive a bit into the HDF5 file.
Remember that HDF5 stands for Hierarchical Data Format 5 …
root = store.get_node('/')
print("Root:")
print(repr(root))
print()
print("/results:")
print(repr(root.results))
Root:
/ (RootGroup) ''
children := ['results' (Group)]
/results:
/results (Group) ''
children := ['mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff' (Group)]
The key names are dependent on the on-disk path of the analyzed file. Assuming there is only one file analyzed with one position in the file, we pick the first …
for image_file in root.results:
print(image_file)
for position in image_file:
print(position)
break
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected (Group) ''
We can now investigate what data is available for that particular position
There is e.g., (binary) data, there are images, and there are various tabular datasets
print("data")
print(position.data)
for node in position.data:
print(node)
print()
print("nodes")
print(position.images)
for node in position.images:
print(node)
print()
data
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/data (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/data/banner (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/data/graphml (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/data/overall_graphml (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/data/tunables (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/data/version (Group) ''
nodes
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/images (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/images/binary (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected/images/skeleton (Group) ''
Accessing Graph and Image Data¶
Let’s for example start with pulling out an image from the file, and displaying it …
binary_images = list(position.images.binary)
skeleton_images = list(position.images.skeleton)
n = 120
total = len(binary_images)
assert 0 <= n < total
print("Total count of images: %d" % (total,))
fig, (ax_l, ax_r) = pyplot.subplots(1, 2, sharey=True)
fig.suptitle('Images of Timepoint #%d:' % (n,))
ax_l.imshow(binary_images[n])
ax_l.set_title('Binary Image')
ax_r.imshow(skeleton_images[n])
ax_r.set_title('Skeleton')
Total count of images: 136
Text(0.5,1,'Skeleton')
Let’s now take a look at the graph data present for the position, display it and overlay it onto the image data …
# The graph structure is saved in GraphML
draw_parameters = dict(node_size=25, node_color='darkgray', linewidths=0, edge_color='darkgray', with_labels=False)
#graphml_data = list([np.array(graphml).tobytes() for graphml in list(position.data.graphml)])
graphml_data = list(position.data.graphml)
graph, = GraphMLReader()(string=np.array(graphml_data[n]).tobytes())
# the following draw function needs separate positions...
# each node has its position saved as attributes:
example_node_id = list(sorted(graph.node.keys()))[1]
print("Example node: %s: %r" % (example_node_id, graph.node[example_node_id],))
other_node_id = list(sorted(graph.adj[example_node_id].keys(), reverse=True))[0]
print("Some other node: %s" % (other_node_id,))
print("The distance between the two nodes is: %.2f px" % (graph.adj[example_node_id][other_node_id]['weight']))
pyplot.title('Graph Representation of Timepoint #%d:' % (n,))
# first draw the graph,
pos = {n_id: (n['x'], n['y']) for n_id, n in graph.node.items()}
nx.draw_networkx(graph, pos=pos, **draw_parameters)
example_nodes = [graph.node[node_id] for node_id in [example_node_id, other_node_id]]
# mark on top the two choosen sample nodes
pyplot.scatter([p['x'] for p in example_nodes], [p['y'] for p in example_nodes], zorder=2)
# then show the corresponding binarized image
pyplot.imshow(binary_images[n])
Example node: 1: {'x': 543.0, 'y': 91.0}
Some other node: 4
The distance between the two nodes is: 192.05 px
<matplotlib.image.AxesImage at 0x7f89d9770128>
Accessing Tabular Data¶
In the next few cells we’ll take a look at the tabular data stored in the HDF5 file.
There is for example the result_table
, which contains compounded
information about the whole position:
result_table = store[position.result_table._v_pathname]
result_table
_mapping_track_table_aux_tables | banner | covered_area_linear_regression_intercept | covered_area_linear_regression_pvalue | covered_area_linear_regression_rvalue | covered_area_linear_regression_slope | covered_area_linear_regression_stderr | covered_area_logarithmic_regression_intercept | covered_area_logarithmic_regression_pvalue | covered_area_logarithmic_regression_rvalue | covered_area_logarithmic_regression_slope | covered_area_logarithmic_regression_stderr | covered_area_optimized_linear_regression_begin | covered_area_optimized_linear_regression_begin_index | covered_area_optimized_linear_regression_end | covered_area_optimized_linear_regression_end_index | covered_area_optimized_linear_regression_intercept | covered_area_optimized_linear_regression_pvalue | covered_area_optimized_linear_regression_rvalue | covered_area_optimized_linear_regression_slope | covered_area_optimized_linear_regression_stderr | covered_area_optimized_logarithmic_regression_begin | covered_area_optimized_logarithmic_regression_begin_index | covered_area_optimized_logarithmic_regression_end | covered_area_optimized_logarithmic_regression_end_index | covered_area_optimized_logarithmic_regression_intercept | covered_area_optimized_logarithmic_regression_pvalue | covered_area_optimized_logarithmic_regression_rvalue | covered_area_optimized_logarithmic_regression_slope | covered_area_optimized_logarithmic_regression_stderr | covered_ratio_linear_regression_intercept | covered_ratio_linear_regression_pvalue | covered_ratio_linear_regression_rvalue | covered_ratio_linear_regression_slope | covered_ratio_linear_regression_stderr | covered_ratio_logarithmic_regression_intercept | covered_ratio_logarithmic_regression_pvalue | covered_ratio_logarithmic_regression_rvalue | covered_ratio_logarithmic_regression_slope | covered_ratio_logarithmic_regression_stderr | covered_ratio_optimized_linear_regression_begin | covered_ratio_optimized_linear_regression_begin_index | covered_ratio_optimized_linear_regression_end | covered_ratio_optimized_linear_regression_end_index | covered_ratio_optimized_linear_regression_intercept | covered_ratio_optimized_linear_regression_pvalue | covered_ratio_optimized_linear_regression_rvalue | covered_ratio_optimized_linear_regression_slope | covered_ratio_optimized_linear_regression_stderr | covered_ratio_optimized_logarithmic_regression_begin | covered_ratio_optimized_logarithmic_regression_begin_index | covered_ratio_optimized_logarithmic_regression_end | covered_ratio_optimized_logarithmic_regression_end_index | covered_ratio_optimized_logarithmic_regression_intercept | covered_ratio_optimized_logarithmic_regression_pvalue | covered_ratio_optimized_logarithmic_regression_rvalue | covered_ratio_optimized_logarithmic_regression_slope | covered_ratio_optimized_logarithmic_regression_stderr | filename | filename_complete | graph_edge_count_linear_regression_intercept | graph_edge_count_linear_regression_pvalue | graph_edge_count_linear_regression_rvalue | graph_edge_count_linear_regression_slope | graph_edge_count_linear_regression_stderr | graph_edge_count_logarithmic_regression_intercept | graph_edge_count_logarithmic_regression_pvalue | graph_edge_count_logarithmic_regression_rvalue | graph_edge_count_logarithmic_regression_slope | graph_edge_count_logarithmic_regression_stderr | graph_edge_count_optimized_linear_regression_begin | graph_edge_count_optimized_linear_regression_begin_index | graph_edge_count_optimized_linear_regression_end | graph_edge_count_optimized_linear_regression_end_index | graph_edge_count_optimized_linear_regression_intercept | graph_edge_count_optimized_linear_regression_pvalue | graph_edge_count_optimized_linear_regression_rvalue | graph_edge_count_optimized_linear_regression_slope | graph_edge_count_optimized_linear_regression_stderr | graph_edge_count_optimized_logarithmic_regression_begin | graph_edge_count_optimized_logarithmic_regression_begin_index | graph_edge_count_optimized_logarithmic_regression_end | graph_edge_count_optimized_logarithmic_regression_end_index | graph_edge_count_optimized_logarithmic_regression_intercept | graph_edge_count_optimized_logarithmic_regression_pvalue | graph_edge_count_optimized_logarithmic_regression_rvalue | graph_edge_count_optimized_logarithmic_regression_slope | graph_edge_count_optimized_logarithmic_regression_stderr | graph_edge_length_linear_regression_intercept | graph_edge_length_linear_regression_pvalue | graph_edge_length_linear_regression_rvalue | graph_edge_length_linear_regression_slope | graph_edge_length_linear_regression_stderr | graph_edge_length_logarithmic_regression_intercept | graph_edge_length_logarithmic_regression_pvalue | graph_edge_length_logarithmic_regression_rvalue | graph_edge_length_logarithmic_regression_slope | graph_edge_length_logarithmic_regression_stderr | graph_edge_length_optimized_linear_regression_begin | graph_edge_length_optimized_linear_regression_begin_index | graph_edge_length_optimized_linear_regression_end | graph_edge_length_optimized_linear_regression_end_index | graph_edge_length_optimized_linear_regression_intercept | graph_edge_length_optimized_linear_regression_pvalue | graph_edge_length_optimized_linear_regression_rvalue | graph_edge_length_optimized_linear_regression_slope | graph_edge_length_optimized_linear_regression_stderr | graph_edge_length_optimized_logarithmic_regression_begin | graph_edge_length_optimized_logarithmic_regression_begin_index | graph_edge_length_optimized_logarithmic_regression_end | graph_edge_length_optimized_logarithmic_regression_end_index | graph_edge_length_optimized_logarithmic_regression_intercept | graph_edge_length_optimized_logarithmic_regression_pvalue | graph_edge_length_optimized_logarithmic_regression_rvalue | graph_edge_length_optimized_logarithmic_regression_slope | graph_edge_length_optimized_logarithmic_regression_stderr | graph_endpoint_count_linear_regression_intercept | graph_endpoint_count_linear_regression_pvalue | graph_endpoint_count_linear_regression_rvalue | graph_endpoint_count_linear_regression_slope | graph_endpoint_count_linear_regression_stderr | graph_endpoint_count_logarithmic_regression_intercept | graph_endpoint_count_logarithmic_regression_pvalue | graph_endpoint_count_logarithmic_regression_rvalue | graph_endpoint_count_logarithmic_regression_slope | graph_endpoint_count_logarithmic_regression_stderr | graph_endpoint_count_optimized_linear_regression_begin | graph_endpoint_count_optimized_linear_regression_begin_index | graph_endpoint_count_optimized_linear_regression_end | graph_endpoint_count_optimized_linear_regression_end_index | graph_endpoint_count_optimized_linear_regression_intercept | graph_endpoint_count_optimized_linear_regression_pvalue | graph_endpoint_count_optimized_linear_regression_rvalue | graph_endpoint_count_optimized_linear_regression_slope | graph_endpoint_count_optimized_linear_regression_stderr | graph_endpoint_count_optimized_logarithmic_regression_begin | graph_endpoint_count_optimized_logarithmic_regression_begin_index | graph_endpoint_count_optimized_logarithmic_regression_end | graph_endpoint_count_optimized_logarithmic_regression_end_index | graph_endpoint_count_optimized_logarithmic_regression_intercept | graph_endpoint_count_optimized_logarithmic_regression_pvalue | graph_endpoint_count_optimized_logarithmic_regression_rvalue | graph_endpoint_count_optimized_logarithmic_regression_slope | graph_endpoint_count_optimized_logarithmic_regression_stderr | graph_junction_count_linear_regression_intercept | graph_junction_count_linear_regression_pvalue | graph_junction_count_linear_regression_rvalue | graph_junction_count_linear_regression_slope | graph_junction_count_linear_regression_stderr | graph_junction_count_logarithmic_regression_intercept | graph_junction_count_logarithmic_regression_pvalue | graph_junction_count_logarithmic_regression_rvalue | graph_junction_count_logarithmic_regression_slope | graph_junction_count_logarithmic_regression_stderr | graph_junction_count_optimized_linear_regression_begin | graph_junction_count_optimized_linear_regression_begin_index | graph_junction_count_optimized_linear_regression_end | graph_junction_count_optimized_linear_regression_end_index | graph_junction_count_optimized_linear_regression_intercept | graph_junction_count_optimized_linear_regression_pvalue | graph_junction_count_optimized_linear_regression_rvalue | graph_junction_count_optimized_linear_regression_slope | graph_junction_count_optimized_linear_regression_stderr | graph_junction_count_optimized_logarithmic_regression_begin | graph_junction_count_optimized_logarithmic_regression_begin_index | graph_junction_count_optimized_logarithmic_regression_end | graph_junction_count_optimized_logarithmic_regression_end_index | graph_junction_count_optimized_logarithmic_regression_intercept | graph_junction_count_optimized_logarithmic_regression_pvalue | graph_junction_count_optimized_logarithmic_regression_rvalue | graph_junction_count_optimized_logarithmic_regression_slope | graph_junction_count_optimized_logarithmic_regression_stderr | graph_node_count_linear_regression_intercept | graph_node_count_linear_regression_pvalue | graph_node_count_linear_regression_rvalue | graph_node_count_linear_regression_slope | graph_node_count_linear_regression_stderr | graph_node_count_logarithmic_regression_intercept | graph_node_count_logarithmic_regression_pvalue | graph_node_count_logarithmic_regression_rvalue | graph_node_count_logarithmic_regression_slope | graph_node_count_logarithmic_regression_stderr | graph_node_count_optimized_linear_regression_begin | graph_node_count_optimized_linear_regression_begin_index | graph_node_count_optimized_linear_regression_end | graph_node_count_optimized_linear_regression_end_index | graph_node_count_optimized_linear_regression_intercept | graph_node_count_optimized_linear_regression_pvalue | graph_node_count_optimized_linear_regression_rvalue | graph_node_count_optimized_linear_regression_slope | graph_node_count_optimized_linear_regression_stderr | graph_node_count_optimized_logarithmic_regression_begin | graph_node_count_optimized_logarithmic_regression_begin_index | graph_node_count_optimized_logarithmic_regression_end | graph_node_count_optimized_logarithmic_regression_end_index | graph_node_count_optimized_logarithmic_regression_intercept | graph_node_count_optimized_logarithmic_regression_pvalue | graph_node_count_optimized_logarithmic_regression_rvalue | graph_node_count_optimized_logarithmic_regression_slope | graph_node_count_optimized_logarithmic_regression_stderr | meta_pos | meta_t | metadata | overall_graphml | track_table | track_table_aux_tables | tunables | version | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | -209.368383 | 2.532537e-24 | 0.734525 | 0.008969 | 0.000716 | NaN | NaN | NaN | NaN | NaN | 39345.176144 | 65 | 78338.287784 | 130 | -994.607791 | 1.677850e-22 | 0.884206 | 0.020906 | 0.001391 | 47147.290182 | 78 | 78338.287784 | 130 | -2.303539 | 1.205272e-63 | 0.998338 | 0.000119 | 9.727372e-07 | -0.028316 | 2.532537e-24 | 0.734525 | 0.000001 | 9.681107e-08 | NaN | NaN | NaN | NaN | NaN | 39345.176144 | 65 | 78338.287784 | 130 | -0.134516 | 1.677850e-22 | 0.884206 | 0.000003 | 1.881839e-07 | 47147.290182 | 78 | 78338.287784 | 130 | -11.211959 | 1.205272e-63 | 0.998338 | 0.000119 | 9.727372e-07 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | /mycelyso/S_lividans_TK24_Complex_Medium_nd046... | -28.385481 | 6.207684e-15 | 0.604935 | 0.001209 | 0.000138 | NaN | NaN | NaN | NaN | NaN | 54942.33151 | 91 | 81340.338617 | 136 | -445.363712 | 4.994880e-15 | 0.873456 | 0.007417 | 0.000631 | 54942.33151 | 91 | 81340.338617 | 136 | -8.772886 | 3.728079e-27 | 0.966964 | 0.000178 | 0.000007 | -189.301864 | 6.799061e-22 | 0.706908 | 0.008101 | 0.0007 | NaN | NaN | NaN | NaN | NaN | 39345.176144 | 65 | 81340.338617 | 136 | -1139.396801 | 1.110753e-23 | 0.877234 | 0.023302 | 0.001535 | 47147.290182 | 78 | 81340.338617 | 136 | -2.78033 | 3.708275e-66 | 0.997503 | 0.000123 | 0.000001 | -10.07769 | 1.265490e-16 | 0.633514 | 0.000465 | 0.000049 | NaN | NaN | NaN | NaN | NaN | 54942.33151 | 91 | 81340.338617 | 136 | -157.23131 | 1.693324e-16 | 0.892893 | 0.002662 | 0.000205 | 54942.33151 | 91 | 81340.338617 | 136 | -6.582629 | 2.789480e-35 | 0.986286 | 0.000136 | 0.000003 | -11.862853 | 3.182848e-15 | 0.61005 | 0.00048 | 0.000054 | NaN | NaN | NaN | NaN | NaN | 54942.33151 | 91 | 78338.287784 | 130 | -110.650737 | 1.217144e-17 | 0.929788 | 0.001887 | 0.000123 | 62741.237858 | 104 | 78338.287784 | 130 | -6.592383 | 2.291108e-19 | 0.983605 | 0.000134 | 0.000005 | -21.940543 | 5.114994e-16 | 0.623593 | 0.000945 | 0.000102 | NaN | NaN | NaN | NaN | NaN | 54942.33151 | 91 | 81340.338617 | 136 | -333.239213 | 8.587192e-16 | 0.883997 | 0.005585 | 0.00045 | 54942.33151 | 91 | 81340.338617 | 136 | -7.695156 | 7.400355e-30 | 0.975361 | 0.00016 | 0.000006 | 0 | -1 | 0 | 0 | 21 | 0 | 0 |
Then there is the result_table_collected
, which contains collected
information about every single frame of the time series of one position:
result_table_collected = store[position.result_table_collected._v_pathname]
result_table_collected
area | binary | calibration | covered_area | covered_ratio | crop_b | crop_l | crop_r | crop_t | filename | graph_edge_count | graph_edge_length | graph_endpoint_count | graph_junction_count | graph_node_count | graphml | image_sha256_hash | input_height | input_width | meta_pos | meta_t | metadata | shift_x | shift_y | skeleton | timepoint | tunables_hash | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 7393.965475 | 0 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 0 | FLHyF8lkwKef9Q9yEWsgOFzYc4qFCpKyirTRsfsR7/g= | 128.245 | 57.655 | 0 | 0 | 3.0 | 3.0 | 0 | 356.745246 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
1 | 7393.965475 | 1 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 1 | 494VC0oqeVoCO/0IYeZnowKoultCZe+iYTW5/xRIfXQ= | 128.245 | 57.655 | 0 | 1 | 0.0 | 0.0 | 1 | 954.331815 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
2 | 7393.965475 | 2 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 2 | kg3NjTylgz8a9Z7wnSSmEgxZHxP0tAaj1dxCWuGaMec= | 128.245 | 57.655 | 0 | 2 | -3.0 | -2.0 | 2 | 1548.970068 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
3 | 7393.965475 | 3 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 3 | S6KmMEQmUxMdLbpBnAyTs01xKaGIBjtgP1g/Raq9zqg= | 128.245 | 57.655 | 0 | 3 | -6.0 | -4.0 | 3 | 2152.429459 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
4 | 7393.965475 | 4 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 4 | EM4yxCU5tahPntThJVNQtAus2R69jCszYck1ZHFDhX4= | 128.245 | 57.655 | 0 | 4 | -4.0 | -5.0 | 4 | 2754.315663 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
5 | 7393.965475 | 5 | 0.065 | 11.766625 | 0.001591 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 5.5 | 22.899434 | 5 | 0 | 5 | 5 | c+9vT5uE1ozpUvzrkp1EQcG03GORVwOTjxjrZqRPQn4= | 128.245 | 57.655 | 0 | 5 | -9.0 | -5.0 | 5 | 3349.845006 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
6 | 7393.965475 | 6 | 0.065 | 21.931975 | 0.002966 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 15.5 | 41.708488 | 11 | 1 | 12 | 6 | xvSVz5s+PLa4Sj8oHuz83v2KXW8W//20bogdtZYFYps= | 128.245 | 57.655 | 0 | 6 | -8.0 | -4.0 | 6 | 3954.256373 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
7 | 7393.965475 | 7 | 0.065 | 18.877300 | 0.002553 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 11.5 | 38.285793 | 9 | 0 | 9 | 7 | LDTibVqcoMtulQHwHHQUgtHV1xUFeIk+AnZxudajBL0= | 128.245 | 57.655 | 0 | 7 | -7.0 | -6.0 | 7 | 4548.847011 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
8 | 7393.965475 | 8 | 0.065 | 11.306100 | 0.001529 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 9.0 | 21.241934 | 7 | 0 | 7 | 8 | a3O6yoCLPmRkTBo/O7VFHi62Yc2lxx3w7b4BXKCskPk= | 128.245 | 57.655 | 0 | 8 | -8.0 | -5.0 | 8 | 5149.800172 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
9 | 7393.965475 | 9 | 0.065 | 19.612450 | 0.002652 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 19.0 | 37.788097 | 12 | 3 | 15 | 9 | R8zOCET5fdw+UveaB1/weWXLjxRewlTgsh6JAe1cl2A= | 128.245 | 57.655 | 0 | 9 | -9.0 | -3.0 | 9 | 5747.743609 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
10 | 7393.965475 | 10 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 10 | bwg71JuWU476X8llCcc7HIpK2W+telAz9PmUgbbG3GI= | 128.245 | 57.655 | 0 | 10 | -5.0 | -4.0 | 10 | 6346.900296 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
11 | 7393.965475 | 11 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 11 | 58LrEPmBMhek4StJU2otfhjiYm3Im5//cRvAgkj05mo= | 128.245 | 57.655 | 0 | 11 | -4.0 | -6.0 | 11 | 6946.751259 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
12 | 7393.965475 | 12 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 12 | gpa2zMzRM8K2KE6Lr2AxIaLb+F/gdhuX8XrpRDvxlv8= | 128.245 | 57.655 | 0 | 12 | -4.0 | -5.0 | 12 | 7543.367799 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
13 | 7393.965475 | 13 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 13 | /KsfU2o48XgIY2W1oXsqn6nHxUHs/J/Wv1Z7nj0ZZOk= | 128.245 | 57.655 | 0 | 13 | -7.0 | -4.0 | 13 | 8144.258055 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
14 | 7393.965475 | 14 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 14 | DxApSHRIomGrqNpBitjQEo7QhFrEynEJ8ZmKJrvplnY= | 128.245 | 57.655 | 0 | 14 | -2.0 | -4.0 | 14 | 8747.270315 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
15 | 7393.965475 | 15 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 15 | Co1f04WWFLOobP5pOvdHqNsqTWIINGAZDb73YRPrEMo= | 128.245 | 57.655 | 0 | 15 | -2.0 | -5.0 | 15 | 9342.921723 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
16 | 7393.965475 | 16 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 16 | c4qXuABN6T/+Kqhl1Mu+dDc4DeaFoA6/+/P0O1oXurs= | 128.245 | 57.655 | 0 | 16 | -4.0 | -5.0 | 16 | 9944.746882 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
17 | 7393.965475 | 17 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 17 | rW1XbA7JoDeobq+O88KRJPV2sIinal/XU9yWVK5duzs= | 128.245 | 57.655 | 0 | 17 | -4.0 | -6.0 | 17 | 10546.833173 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
18 | 7393.965475 | 18 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 18 | 4VRvPwGvoi38OdaAH11CJhGkpwIjLmbVoXU9VPxOjpw= | 128.245 | 57.655 | 0 | 18 | -2.0 | -6.0 | 18 | 11142.278725 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
19 | 7393.965475 | 19 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 19 | lGBlKy1m69uZFS4+z2qOu01U4TAepF98z5Qy0rgpKq4= | 128.245 | 57.655 | 0 | 19 | -4.0 | -5.0 | 19 | 11748.821861 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
20 | 7393.965475 | 20 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 20 | suQeImrAqjZDCOeXIo7jXiAo1EbKWi7RHyjg/K92eeo= | 128.245 | 57.655 | 0 | 20 | -5.0 | -5.0 | 20 | 12354.980074 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
21 | 7393.965475 | 21 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 21 | g/nSp2+luy9+GumMUPJZjNTIq/fEsVAZDftXGWzWeT8= | 128.245 | 57.655 | 0 | 21 | -3.0 | -5.0 | 21 | 12944.765587 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
22 | 7393.965475 | 22 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 22 | BovPeepsLCC72gmUDKXJRPCAlQ62ZbcCw6khY2exoVQ= | 128.245 | 57.655 | 0 | 22 | -2.0 | -7.0 | 22 | 13545.854889 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
23 | 7393.965475 | 23 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 23 | 6ddbC20/XQcL62LLIthfgKK1+hZ471gas/x47xAErgU= | 128.245 | 57.655 | 0 | 23 | -5.0 | -6.0 | 23 | 14146.223223 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
24 | 7393.965475 | 24 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 24 | sKWUFcK2/AkvT7VsD479I5RyUSh42fg419mJ+7NGElc= | 128.245 | 57.655 | 0 | 24 | -2.0 | -4.0 | 24 | 14748.335994 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
25 | 7393.965475 | 25 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 25 | 5j1pPeyhTmt8DTk2PXJJY+qXzQLof67lF3iSqHQ7fYs= | 128.245 | 57.655 | 0 | 25 | 3.0 | -6.0 | 25 | 15343.735260 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
26 | 7393.965475 | 26 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 26 | uhGgSzijhmEGPdb+vseY5QkDZXRZDiSaAgKqGYgLNY4= | 128.245 | 57.655 | 0 | 26 | 1.0 | -7.0 | 26 | 15953.863397 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
27 | 7393.965475 | 27 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 27 | VXsOEGRfM7I4HccxdR/32rUj3tZrSypiQk5SFztQ8BQ= | 128.245 | 57.655 | 0 | 27 | 0.0 | -4.0 | 27 | 16542.758080 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
28 | 7393.965475 | 28 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 28 | vjbM5PQTup+sY2oxC7pA0TkBf5sE8TQnR+EkW02XyPU= | 128.245 | 57.655 | 0 | 28 | 0.0 | -4.0 | 28 | 17142.263416 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
29 | 7393.965475 | 29 | 0.065 | 0.000000 | 0.000000 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 0.0 | 0.000000 | 0 | 0 | 0 | 29 | SO9ouW//cxEuF6b5JioGV6TFtg5CsMLKAoTdx8TPIis= | 128.245 | 57.655 | 0 | 29 | 0.0 | -7.0 | 29 | 17740.279887 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
106 | 7393.965475 | 106 | 0.065 | 210.666950 | 0.028492 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 19.5 | 170.239411 | 9 | 8 | 17 | 106 | uAHtyApJzNnPOYnpdVOIKWkvOYSmlCkO8ZC9u2gta5o= | 128.245 | 57.655 | 0 | 106 | 0.0 | -1.0 | 106 | 63947.249755 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
107 | 7393.965475 | 107 | 0.065 | 207.519325 | 0.028066 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 20.0 | 180.808115 | 10 | 7 | 17 | 107 | 25jns/xT4PLo4Jxf505fLowf+A2qcVQmWq4ke+5VCMI= | 128.245 | 57.655 | 0 | 107 | 4.0 | -2.0 | 107 | 64543.707035 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
108 | 7393.965475 | 108 | 0.065 | 219.763375 | 0.029722 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 21.5 | 190.435276 | 11 | 7 | 18 | 108 | OWqQprg2kii5dkmOoNCNbmM2z3lehAazAPO9IRYf9Xo= | 128.245 | 57.655 | 0 | 108 | 2.0 | -1.0 | 108 | 65139.869557 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
109 | 7393.965475 | 109 | 0.065 | 247.859625 | 0.033522 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 25.5 | 195.382602 | 12 | 10 | 22 | 109 | 1qt2o2cQ3+57QE0ZsjDBJPnuBVSWuafV54gucUCPje8= | 128.245 | 57.655 | 0 | 109 | -1.0 | 0.0 | 109 | 65741.778848 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
110 | 7393.965475 | 110 | 0.065 | 264.658225 | 0.035794 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 25.5 | 210.104377 | 13 | 10 | 23 | 110 | fq3wG1zJ0pYaf1oRLGPElzHf1YE1Qx/TNhCJecgfw48= | 128.245 | 57.655 | 0 | 110 | 0.0 | -1.0 | 110 | 66340.189219 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
111 | 7393.965475 | 111 | 0.065 | 280.556900 | 0.037944 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 39.5 | 235.773869 | 18 | 15 | 33 | 111 | vSbq+a0wytKuNcRRbUhf8pTJSyWM4kGIuD4SO1R5lh8= | 128.245 | 57.655 | 0 | 111 | -1.0 | -1.0 | 111 | 66943.783533 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
112 | 7393.965475 | 112 | 0.065 | 294.051550 | 0.039769 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 35.5 | 248.187748 | 16 | 14 | 30 | 112 | EyE6YpZWqRtaLGY6P7Ls5SbX4NOCZSIt+79qYEa7CfQ= | 128.245 | 57.655 | 0 | 112 | -2.0 | -1.0 | 112 | 67544.224723 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
113 | 7393.965475 | 113 | 0.065 | 316.444050 | 0.042798 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 36.5 | 260.646633 | 17 | 14 | 31 | 113 | xMiJu6s5Aibr9FDuX53pjMfDo/NdaTfDU1JBizujn+M= | 128.245 | 57.655 | 0 | 113 | -3.0 | -1.0 | 113 | 68144.223215 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
114 | 7393.965475 | 114 | 0.065 | 342.820725 | 0.046365 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 40.0 | 281.374211 | 19 | 15 | 34 | 114 | K+xpRjw5CaAnpr5Wn+S3JBznhdGApuFuWaRgIzjrD98= | 128.245 | 57.655 | 0 | 114 | -2.0 | -2.0 | 114 | 68741.153508 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
115 | 7393.965475 | 115 | 0.065 | 370.257875 | 0.050076 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 40.5 | 312.852562 | 18 | 16 | 34 | 115 | Mb4MgU9eSza1UKpwZMoYe9vFydo+CgkQIXXlqImQsT0= | 128.245 | 57.655 | 0 | 115 | -3.0 | -2.0 | 115 | 69343.336711 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
116 | 7393.965475 | 116 | 0.065 | 400.344100 | 0.054145 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 46.5 | 336.659457 | 22 | 17 | 39 | 116 | YhrWJOJHelwSMWZ5cireuPWOQerJ3ncgmYWSDmrdeq0= | 128.245 | 57.655 | 0 | 116 | -6.0 | 0.0 | 116 | 69940.686151 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
117 | 7393.965475 | 117 | 0.065 | 433.286425 | 0.058600 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 47.5 | 368.660910 | 20 | 18 | 38 | 117 | sE4DE63xAmb5NKVMReP7pab2izYSVM6UJAm5DkN0VXg= | 128.245 | 57.655 | 0 | 117 | -5.0 | -1.0 | 117 | 70540.386399 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
118 | 7393.965475 | 118 | 0.065 | 481.265525 | 0.065089 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 46.5 | 411.026463 | 20 | 18 | 38 | 118 | 81kFT/ZS0drUpl6kKYXzQw/XjlQzxIzPAmd3nL11+jg= | 128.245 | 57.655 | 0 | 118 | -4.0 | -3.0 | 118 | 71141.753863 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
119 | 7393.965475 | 119 | 0.065 | 528.095425 | 0.071422 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 46.5 | 442.766625 | 21 | 19 | 40 | 119 | M82K/jsBao445C6NKVnTNij+l6tWyNlSw353uGNiDLY= | 128.245 | 57.655 | 0 | 119 | -2.0 | -3.0 | 119 | 71748.778771 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
120 | 7393.965475 | 120 | 0.065 | 588.665025 | 0.079614 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 52.0 | 501.050286 | 24 | 19 | 43 | 120 | uzYdD+ar88aFulsNSqkm0WcNqly45OVPfXdiC2PoGn4= | 128.245 | 57.655 | 0 | 120 | 1.0 | -1.0 | 120 | 72342.288541 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
121 | 7393.965475 | 121 | 0.065 | 637.928525 | 0.086277 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 57.5 | 542.781477 | 25 | 22 | 47 | 121 | Xnoke73h5X3pqffz22tt/XS5zFL58NQRj3FRRLRVdh0= | 128.245 | 57.655 | 0 | 121 | 1.0 | -1.0 | 121 | 72942.162923 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
122 | 7393.965475 | 122 | 0.065 | 616.833100 | 0.083424 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 60.0 | 561.784642 | 25 | 23 | 48 | 122 | /xYS1ZdSkDs7iGCM7EUOEplVF6IvONSJfQS/gUjYfbo= | 128.245 | 57.655 | 0 | 122 | 3.0 | -3.0 | 122 | 73543.257127 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
123 | 7393.965475 | 123 | 0.065 | 735.441525 | 0.099465 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 73.5 | 630.276997 | 31 | 29 | 60 | 123 | u74v7IA9x4990zS2p78PeME6W+CjG3X2WQCoCt4zpzM= | 128.245 | 57.655 | 0 | 123 | -1.0 | -1.0 | 123 | 74140.149509 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
124 | 7393.965475 | 124 | 0.065 | 780.298350 | 0.105532 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 79.5 | 682.208179 | 32 | 31 | 63 | 124 | OoMxDjS6CVZqgFUIt9i3uE3edYm+cQgUGHmVAfoMCpk= | 128.245 | 57.655 | 0 | 124 | -2.0 | -2.0 | 124 | 74739.753889 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
125 | 7393.965475 | 125 | 0.065 | 821.783625 | 0.111142 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 90.5 | 720.402085 | 34 | 37 | 71 | 125 | QunbYZfVig1yXaR7CahU9lp7tbutNgRNCV2trlfH2ag= | 128.245 | 57.655 | 0 | 125 | -2.0 | -3.0 | 125 | 75342.294086 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
126 | 7393.965475 | 126 | 0.065 | 840.644025 | 0.113693 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 94.5 | 750.562416 | 37 | 37 | 74 | 126 | WxArF1YP7mcIyfJ5BwCADhyzu3HjH/EArvQ/ughWwag= | 128.245 | 57.655 | 0 | 126 | -2.0 | -1.0 | 126 | 75940.191470 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
127 | 7393.965475 | 127 | 0.065 | 853.923200 | 0.115489 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 109.5 | 773.762895 | 42 | 42 | 84 | 127 | JNQ60hSinRysv9iHUDlvWbajC3pxmetHJCy4umA78k8= | 128.245 | 57.655 | 0 | 127 | -4.0 | -1.0 | 127 | 76540.684802 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
128 | 7393.965475 | 128 | 0.065 | 908.451050 | 0.122864 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 120.5 | 826.868598 | 45 | 48 | 93 | 128 | DM/8MVnM0IlU4i6dsYVg6pvjKOEQ0G4+ie+lacKNzto= | 128.245 | 57.655 | 0 | 128 | -4.0 | -1.0 | 128 | 77143.279996 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
129 | 7393.965475 | 129 | 0.065 | 928.084625 | 0.125519 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 137.0 | 854.965852 | 56 | 51 | 107 | 129 | vJ6ddwOacUWSEuKgYavl9YYYDhHkZ22SGGd6i5nCv5s= | 128.245 | 57.655 | 0 | 129 | -3.0 | -3.0 | 129 | 77739.277364 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
130 | 7393.965475 | 130 | 0.065 | 995.219875 | 0.134599 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 164.5 | 931.113953 | 59 | 65 | 124 | 130 | EMfLUv7Hu2b7NJOcjA4BGr748D3i+uQYqBR3D1+Olyk= | 128.245 | 57.655 | 0 | 130 | -5.0 | -2.0 | 130 | 78338.287784 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
131 | 7393.965475 | 131 | 0.065 | 1042.451150 | 0.140987 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 177.5 | 982.963010 | 63 | 70 | 133 | 131 | PZNqH1IrTEzf49uuqlNYGyjdzrx4buvzZJonsP68Etg= | 128.245 | 57.655 | 0 | 131 | -5.0 | -2.0 | 131 | 78943.246053 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
132 | 7393.965475 | 132 | 0.065 | 1043.646825 | 0.141148 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 186.0 | 982.474030 | 61 | 75 | 136 | 132 | 1fAdMd5ruK5y/zwSWuqWqcCelW2sBWElCNhU6zhaovY= | 128.245 | 57.655 | 0 | 132 | 1.0 | -2.0 | 132 | 79540.788485 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
133 | 7393.965475 | 133 | 0.065 | 1023.569625 | 0.138433 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 191.5 | 1029.805448 | 73 | 73 | 146 | 133 | bUVUBoCP3NhJCFHhGjHu3czbHLuJQxTkg2iCE6jqeJs= | 128.245 | 57.655 | 0 | 133 | 7.0 | -3.0 | 133 | 80140.704110 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
134 | 7393.965475 | 134 | 0.065 | 1035.670025 | 0.140070 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 218.5 | 1074.944651 | 85 | 80 | 165 | 134 | mh5CCpK+8DkzZ0Jb95x+XF1OLShiK/B/12l78G/UVgY= | 128.245 | 57.655 | 0 | 134 | 5.0 | -1.0 | 134 | 80741.868186 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... | |
135 | 7393.965475 | 135 | 0.065 | 1135.342000 | 0.153550 | 1978 | 754 | 1642 | 4 | S_lividans_TK24_Complex_Medium_nd046_138.ome.tiff | 279.0 | 1201.021333 | 96 | 113 | 209 | 135 | ZdYdZ9ud5oLdOJP5XVD1633MzPXv4GR6EjzZLtCgpNo= | 128.245 | 57.655 | 0 | 135 | 4.0 | 0.0 | 135 | 81340.338617 | VERSION:1:SHA256:iNevP0W3i5SsPhjSobMn0xCxU+e/Y... |
136 rows × 27 columns
The per-frame informations contain e.g. the graph length (i.e. the mycelium length), which can be plotted over time:
timepoint = result_table_collected.timepoint / (60*60)
length = result_table_collected.graph_edge_length
pyplot.title('Length over Time')
pyplot.xlabel('Time [h]')
pyplot.ylabel('Length [µm]')
pyplot.plot(timepoint, length)
[<matplotlib.lines.Line2D at 0x7f89d964edd8>]
Last but not least, we will look at mycelium level tracking data in the
track_table
. The track_table
is a level deeper in the HDF5
structure, next to tables with individual tracks.
track_table = store[list(position.tables.track_table)[0]._v_pathname]
track_table
aux_table | count | duration | logarithmic_normalized_regression_intercept | logarithmic_normalized_regression_pvalue | logarithmic_normalized_regression_rvalue | logarithmic_normalized_regression_slope | logarithmic_normalized_regression_stderr | logarithmic_plain_regression_intercept | logarithmic_plain_regression_pvalue | logarithmic_plain_regression_rvalue | logarithmic_plain_regression_slope | logarithmic_plain_regression_stderr | maximum_distance | maximum_distance_num | minimum_distance | minimum_distance_num | normalized_regression_intercept | normalized_regression_pvalue | normalized_regression_rvalue | normalized_regression_slope | normalized_regression_stderr | optimized_logarithmic_normalized_regression_begin | optimized_logarithmic_normalized_regression_begin_index | optimized_logarithmic_normalized_regression_end | optimized_logarithmic_normalized_regression_end_index | optimized_logarithmic_normalized_regression_intercept | optimized_logarithmic_normalized_regression_pvalue | optimized_logarithmic_normalized_regression_rvalue | optimized_logarithmic_normalized_regression_slope | optimized_logarithmic_normalized_regression_stderr | optimized_logarithmic_regression_begin | optimized_logarithmic_regression_begin_index | optimized_logarithmic_regression_end | optimized_logarithmic_regression_end_index | optimized_logarithmic_regression_intercept | optimized_logarithmic_regression_pvalue | optimized_logarithmic_regression_rvalue | optimized_logarithmic_regression_slope | optimized_logarithmic_regression_stderr | optimized_normalized_regression_begin | optimized_normalized_regression_begin_index | optimized_normalized_regression_end | optimized_normalized_regression_end_index | optimized_normalized_regression_intercept | optimized_normalized_regression_pvalue | optimized_normalized_regression_rvalue | optimized_normalized_regression_slope | optimized_normalized_regression_stderr | optimized_regression_begin | optimized_regression_begin_index | optimized_regression_end | optimized_regression_end_index | optimized_regression_intercept | optimized_regression_pvalue | optimized_regression_rvalue | optimized_regression_slope | optimized_regression_stderr | plain_regression_intercept | plain_regression_pvalue | plain_regression_rvalue | plain_regression_slope | plain_regression_stderr | timepoint_begin | timepoint_center | timepoint_end | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 22 | 12596.588071 | -7.600037 | 1.711806e-24 | 0.997499 | 0.000182 | 0.000003 | -5.825405 | 1.711806e-24 | 0.997499 | 0.000182 | 0.000003 | 57.906361 | 1.0 | 5.898107 | 1.0 | -29.091215 | 1.307881e-14 | 0.975429 | 0.000686 | 0.000035 | 42345.743439 | 0 | 54942.331510 | 21 | -7.700575 | 1.019580e-23 | 0.997723 | 0.000184 | 0.000003 | 42345.743439 | 0 | 54942.331510 | 21 | -5.925944 | 1.019580e-23 | 0.997723 | 0.000184 | 0.000003 | 42345.743439 | 0 | 54942.331510 | 21 | -27.740900 | 4.146086e-14 | 0.976412 | 0.000657 | 0.000033 | 42345.743439 | 0 | 54942.331510 | 21 | -163.618808 | 4.146086e-14 | 0.976412 | 0.003874 | 0.000197 | -171.583111 | 1.307881e-14 | 0.975429 | 0.004046 | 0.000204 | 42345.743439 | 48644.037475 | 54942.331510 |
1 | 1 | 29 | 16795.074294 | -4.477290 | 1.479542e-29 | 0.995785 | 0.000078 | 0.000001 | -0.891770 | 1.479542e-29 | 0.995785 | 0.000078 | 0.000001 | 141.762974 | 10.0 | 36.072102 | 1.0 | -9.033740 | 1.851875e-28 | 0.994916 | 0.000169 | 0.000003 | 58547.219791 | 0 | 75342.294086 | 29 | -4.477290 | 1.479542e-29 | 0.995785 | 0.000078 | 0.000001 | 58547.219791 | 0 | 75342.294086 | 29 | -0.891770 | 1.479542e-29 | 0.995785 | 0.000078 | 0.000001 | 58547.219791 | 0 | 75342.294086 | 29 | -9.033740 | 1.851875e-28 | 0.994916 | 0.000169 | 0.000003 | 58547.219791 | 0 | 75342.294086 | 29 | -325.865976 | 1.851875e-28 | 0.994916 | 0.006103 | 0.000119 | -325.865976 | 1.851875e-28 | 0.994916 | 0.006103 | 0.000119 | 58547.219791 | 66944.756938 | 75342.294086 |
2 | 2 | 11 | 5999.376544 | -15.868380 | 6.611100e-08 | 0.982767 | 0.000263 | 0.000016 | -15.056252 | 6.611100e-08 | 0.982767 | 0.000263 | 0.000016 | 11.042346 | 3.0 | 2.252696 | 1.0 | -40.384477 | 4.331466e-12 | 0.997984 | 0.000677 | 0.000014 | 60944.406990 | 0 | 66943.783533 | 11 | -15.868380 | 6.611100e-08 | 0.982767 | 0.000263 | 0.000016 | 60944.406990 | 0 | 66943.783533 | 11 | -15.056252 | 6.611100e-08 | 0.982767 | 0.000263 | 0.000016 | 60944.406990 | 0 | 66943.783533 | 11 | -40.384477 | 4.331466e-12 | 0.997984 | 0.000677 | 0.000014 | 60944.406990 | 0 | 66943.783533 | 11 | -90.973931 | 4.331466e-12 | 0.997984 | 0.001525 | 0.000032 | -90.973931 | 4.331466e-12 | 0.997984 | 0.001525 | 0.000032 | 60944.406990 | 63944.095262 | 66943.783533 |
3 | 3 | 23 | 13195.742519 | -5.125910 | 7.206502e-28 | 0.998462 | 0.000085 | 0.000001 | -1.566050 | 7.206502e-28 | 0.998462 | 0.000085 | 0.000001 | 111.155492 | 8.0 | 35.158275 | 1.0 | -8.832037 | 1.632991e-21 | 0.993789 | 0.000160 | 0.000004 | 60944.406990 | 0 | 74140.149509 | 23 | -5.125910 | 7.206502e-28 | 0.998462 | 0.000085 | 0.000001 | 60944.406990 | 0 | 74140.149509 | 23 | -1.566050 | 7.206502e-28 | 0.998462 | 0.000085 | 0.000001 | 60944.406990 | 0 | 74140.149509 | 23 | -8.832037 | 1.632991e-21 | 0.993789 | 0.000160 | 0.000004 | 60944.406990 | 0 | 74140.149509 | 23 | -310.519177 | 1.632991e-21 | 0.993789 | 0.005611 | 0.000137 | -310.519177 | 1.632991e-21 | 0.993789 | 0.005611 | 0.000137 | 60944.406990 | 67542.278249 | 74140.149509 |
4 | 4 | 16 | 8999.505265 | -21.524270 | 1.726340e-09 | 0.964524 | 0.000350 | 0.000026 | -21.201628 | 1.726340e-09 | 0.964524 | 0.000350 | 0.000026 | 44.678233 | 2.0 | 1.380772 | 1.0 | -223.912438 | 1.341946e-12 | 0.987353 | 0.003504 | 0.000150 | 63342.783276 | 0 | 72342.288541 | 15 | -22.604725 | 5.227294e-09 | 0.965929 | 0.000367 | 0.000027 | 63342.783276 | 0 | 72342.288541 | 15 | -22.282082 | 5.227294e-09 | 0.965929 | 0.000367 | 0.000027 | 63342.783276 | 0 | 72342.288541 | 15 | -215.096004 | 7.149179e-12 | 0.987747 | 0.003370 | 0.000148 | 63342.783276 | 0 | 72342.288541 | 15 | -296.998464 | 7.149179e-12 | 0.987747 | 0.004654 | 0.000204 | -309.171945 | 1.341946e-12 | 0.987353 | 0.004838 | 0.000208 | 63342.783276 | 67842.535909 | 72342.288541 |
5 | 5 | 14 | 7801.478279 | -23.838927 | 1.409835e-09 | 0.978374 | 0.000370 | 0.000023 | -23.438081 | 1.409835e-09 | 0.978374 | 0.000370 | 0.000023 | 41.950146 | 6.0 | 1.493087 | 1.0 | -185.970032 | 6.770607e-07 | 0.938601 | 0.002806 | 0.000298 | 65741.778848 | 0 | 73543.257127 | 14 | -23.838927 | 1.409835e-09 | 0.978374 | 0.000370 | 0.000023 | 65741.778848 | 0 | 73543.257127 | 14 | -23.438081 | 1.409835e-09 | 0.978374 | 0.000370 | 0.000023 | 65741.778848 | 0 | 73543.257127 | 14 | -185.970032 | 6.770607e-07 | 0.938601 | 0.002806 | 0.000298 | 65741.778848 | 0 | 73543.257127 | 14 | -277.669359 | 6.770607e-07 | 0.938601 | 0.004190 | 0.000445 | -277.669359 | 6.770607e-07 | 0.938601 | 0.004190 | 0.000445 | 65741.778848 | 69642.517987 | 73543.257127 |
6 | 6 | 12 | 6600.509694 | -43.722131 | 3.190588e-05 | 0.914065 | 0.000690 | 0.000097 | -46.108926 | 3.190588e-05 | 0.914065 | 0.000690 | 0.000097 | 23.474375 | 1.0 | 0.091924 | 1.0 | -2616.983966 | 1.009138e-08 | 0.983252 | 0.039382 | 0.002308 | 65741.778848 | 0 | 72342.288541 | 12 | -43.722131 | 3.190588e-05 | 0.914065 | 0.000690 | 0.000097 | 65741.778848 | 0 | 72342.288541 | 12 | -46.108926 | 3.190588e-05 | 0.914065 | 0.000690 | 0.000097 | 65741.778848 | 0 | 72342.288541 | 12 | -2616.983966 | 1.009138e-08 | 0.983252 | 0.039382 | 0.002308 | 65741.778848 | 0 | 72342.288541 | 12 | -240.563324 | 1.009138e-08 | 0.983252 | 0.003620 | 0.000212 | -240.563324 | 1.009138e-08 | 0.983252 | 0.003620 | 0.000212 | 65741.778848 | 69042.033694 | 72342.288541 |
7 | 7 | 9 | 4801.564644 | -30.119407 | 1.333225e-05 | 0.970975 | 0.000459 | 0.000043 | -30.124026 | 1.333225e-05 | 0.970975 | 0.000459 | 0.000043 | 12.486205 | 2.0 | 0.995391 | 1.0 | -138.693554 | 1.941910e-04 | 0.937004 | 0.002094 | 0.000295 | 66340.189219 | 0 | 71141.753863 | 9 | -30.119407 | 1.333225e-05 | 0.970975 | 0.000459 | 0.000043 | 66340.189219 | 0 | 71141.753863 | 9 | -30.124026 | 1.333225e-05 | 0.970975 | 0.000459 | 0.000043 | 66340.189219 | 0 | 71141.753863 | 9 | -138.693554 | 1.941910e-04 | 0.937004 | 0.002094 | 0.000295 | 66340.189219 | 0 | 71141.753863 | 9 | -138.054322 | 1.941910e-04 | 0.937004 | 0.002084 | 0.000294 | -138.054322 | 1.941910e-04 | 0.937004 | 0.002084 | 0.000294 | 66340.189219 | 68740.971541 | 71141.753863 |
8 | 8 | 17 | 9596.901268 | -22.271064 | 1.733538e-09 | 0.957300 | 0.000343 | 0.000027 | -21.766331 | 1.733538e-09 | 0.957300 | 0.000343 | 0.000027 | 57.441002 | 1.0 | 1.656543 | 1.0 | -242.634692 | 9.760773e-15 | 0.991591 | 0.003592 | 0.000121 | 66943.783533 | 0 | 76540.684802 | 17 | -22.271064 | 1.733538e-09 | 0.957300 | 0.000343 | 0.000027 | 66943.783533 | 0 | 76540.684802 | 17 | -21.766331 | 1.733538e-09 | 0.957300 | 0.000343 | 0.000027 | 66943.783533 | 0 | 76540.684802 | 17 | -242.634692 | 9.760773e-15 | 0.991591 | 0.003592 | 0.000121 | 66943.783533 | 0 | 76540.684802 | 17 | -401.934870 | 9.760773e-15 | 0.991591 | 0.005950 | 0.000201 | -401.934870 | 9.760773e-15 | 0.991591 | 0.005950 | 0.000201 | 66943.783533 | 71742.234168 | 76540.684802 |
9 | 9 | 11 | 5998.379390 | -29.357547 | 1.979017e-06 | 0.963090 | 0.000446 | 0.000042 | -29.552716 | 1.979017e-06 | 0.963090 | 0.000446 | 0.000042 | 15.516987 | 1.0 | 0.822696 | 1.0 | -194.768001 | 4.833247e-09 | 0.990387 | 0.002907 | 0.000135 | 66943.783533 | 0 | 72942.162923 | 11 | -29.357547 | 1.979017e-06 | 0.963090 | 0.000446 | 0.000042 | 66943.783533 | 0 | 72942.162923 | 11 | -29.552716 | 1.979017e-06 | 0.963090 | 0.000446 | 0.000042 | 66943.783533 | 0 | 72942.162923 | 11 | -194.768001 | 4.833247e-09 | 0.990387 | 0.002907 | 0.000135 | 66943.783533 | 0 | 72942.162923 | 11 | -160.234763 | 4.833247e-09 | 0.990387 | 0.002392 | 0.000111 | -160.234763 | 4.833247e-09 | 0.990387 | 0.002392 | 0.000111 | 66943.783533 | 69942.973228 | 72942.162923 |
10 | 10 | 8 | 4198.065326 | -48.245996 | 6.569861e-06 | 0.986152 | 0.000710 | 0.000049 | -48.636193 | 6.569861e-06 | 0.986152 | 0.000710 | 0.000049 | 11.633879 | 1.0 | 0.676924 | 1.0 | -275.022799 | 1.801673e-05 | 0.980590 | 0.004022 | 0.000328 | 68144.223215 | 0 | 72342.288541 | 8 | -48.245996 | 6.569861e-06 | 0.986152 | 0.000710 | 0.000049 | 68144.223215 | 0 | 72342.288541 | 8 | -48.636193 | 6.569861e-06 | 0.986152 | 0.000710 | 0.000049 | 68144.223215 | 0 | 72342.288541 | 8 | -275.022799 | 1.801673e-05 | 0.980590 | 0.004022 | 0.000328 | 68144.223215 | 0 | 72342.288541 | 8 | -186.169501 | 1.801673e-05 | 0.980590 | 0.002722 | 0.000222 | -186.169501 | 1.801673e-05 | 0.980590 | 0.002722 | 0.000222 | 68144.223215 | 70243.255878 | 72342.288541 |
11 | 11 | 7 | 3600.022869 | -47.066691 | 5.996060e-04 | 0.960051 | 0.000645 | 0.000084 | -46.870044 | 5.996060e-04 | 0.960051 | 0.000645 | 0.000084 | 14.274661 | 1.0 | 1.217315 | 1.0 | -220.575522 | 1.034271e-07 | 0.998762 | 0.003009 | 0.000067 | 73543.257127 | 0 | 77143.279996 | 6 | -53.306342 | 1.709971e-03 | 0.966044 | 0.000729 | 0.000097 | 73543.257127 | 0 | 77143.279996 | 6 | -53.109695 | 1.709971e-03 | 0.966044 | 0.000729 | 0.000097 | 73543.257127 | 0 | 77143.279996 | 6 | -215.315060 | 2.582288e-06 | 0.998688 | 0.002938 | 0.000075 | 73543.257127 | 0 | 77143.279996 | 6 | -262.106238 | 2.582288e-06 | 0.998688 | 0.003576 | 0.000092 | -268.509877 | 1.034271e-07 | 0.998762 | 0.003662 | 0.000082 | 73543.257127 | 75343.268562 | 77143.279996 |
12 | 12 | 10 | 5400.638976 | -53.862847 | 4.870276e-09 | 0.994214 | 0.000728 | 0.000028 | -54.398991 | 4.870276e-09 | 0.994214 | 0.000728 | 0.000028 | 24.758931 | 2.0 | 0.585000 | 1.0 | -604.374842 | 1.170390e-04 | 0.926455 | 0.008061 | 0.001158 | 74140.149509 | 0 | 79540.788485 | 9 | -56.645897 | 4.971286e-09 | 0.996980 | 0.000764 | 0.000023 | 74140.149509 | 0 | 79540.788485 | 9 | -57.182041 | 4.971286e-09 | 0.996980 | 0.000764 | 0.000023 | 74140.149509 | 0 | 79540.788485 | 9 | -546.454943 | 9.685289e-04 | 0.899213 | 0.007296 | 0.001342 | 74140.149509 | 0 | 79540.788485 | 9 | -319.676142 | 9.685289e-04 | 0.899213 | 0.004268 | 0.000785 | -353.559282 | 1.170390e-04 | 0.926455 | 0.004716 | 0.000677 | 74140.149509 | 76840.468997 | 79540.788485 |
13 | 13 | 5 | 2400.535293 | -16.201586 | 1.183782e-04 | 0.997865 | 0.000219 | 0.000008 | -12.961744 | 1.183782e-04 | 0.997865 | 0.000219 | 0.000008 | 43.186267 | 2.0 | 25.529693 | 1.0 | -20.386272 | 1.192592e-06 | 0.999900 | 0.000288 | 0.000002 | 74140.149509 | 0 | 76540.684802 | 5 | -16.201586 | 1.183782e-04 | 0.997865 | 0.000219 | 0.000008 | 74140.149509 | 0 | 76540.684802 | 5 | -12.961744 | 1.183782e-04 | 0.997865 | 0.000219 | 0.000008 | 74140.149509 | 0 | 76540.684802 | 5 | -20.386272 | 1.192592e-06 | 0.999900 | 0.000288 | 0.000002 | 74140.149509 | 0 | 76540.684802 | 5 | -520.455259 | 1.192592e-06 | 0.999900 | 0.007363 | 0.000060 | -520.455259 | 1.192592e-06 | 0.999900 | 0.007363 | 0.000060 | 74140.149509 | 75340.417155 | 76540.684802 |
14 | 14 | 7 | 3598.533895 | -16.153025 | 4.230040e-06 | 0.994534 | 0.000217 | 0.000010 | -12.834299 | 4.230040e-06 | 0.994534 | 0.000217 | 0.000010 | 60.150146 | 6.0 | 27.625136 | 1.0 | -23.722413 | 8.119266e-10 | 0.999822 | 0.000331 | 0.000003 | 74739.753889 | 0 | 78338.287784 | 6 | -17.117733 | 2.071218e-05 | 0.996282 | 0.000229 | 0.000010 | 74739.753889 | 0 | 78338.287784 | 6 | -13.799007 | 2.071218e-05 | 0.996282 | 0.000229 | 0.000010 | 74739.753889 | 0 | 78338.287784 | 6 | -23.752887 | 1.191299e-07 | 0.999718 | 0.000331 | 0.000004 | 74739.753889 | 0 | 78338.287784 | 6 | -656.176742 | 1.191299e-07 | 0.999718 | 0.009145 | 0.000109 | -655.334883 | 8.119266e-10 | 0.999822 | 0.009134 | 0.000077 | 74739.753889 | 76539.020837 | 78338.287784 |
15 | 15 | 5 | 2398.096314 | -68.488528 | 2.257037e-03 | 0.984743 | 0.000904 | 0.000092 | -68.048039 | 2.257037e-03 | 0.984743 | 0.000904 | 0.000092 | 13.458499 | 2.0 | 1.553467 | 1.0 | -248.736869 | 7.521336e-04 | 0.992672 | 0.003283 | 0.000231 | 75940.191470 | 0 | 78338.287784 | 5 | -68.488528 | 2.257037e-03 | 0.984743 | 0.000904 | 0.000092 | 75940.191470 | 0 | 78338.287784 | 5 | -68.048039 | 2.257037e-03 | 0.984743 | 0.000904 | 0.000092 | 75940.191470 | 0 | 78338.287784 | 5 | -248.736869 | 7.521336e-04 | 0.992672 | 0.003283 | 0.000231 | 75940.191470 | 0 | 78338.287784 | 5 | -386.404560 | 7.521336e-04 | 0.992672 | 0.005099 | 0.000358 | -386.404560 | 7.521336e-04 | 0.992672 | 0.005099 | 0.000358 | 75940.191470 | 77139.239627 | 78338.287784 |
16 | 16 | 7 | 3600.019308 | -49.432006 | 1.254883e-03 | 0.946159 | 0.000651 | 0.000100 | -49.208246 | 1.254883e-03 | 0.946159 | 0.000651 | 0.000100 | 13.193879 | 3.0 | 1.250772 | 1.0 | -226.581932 | 4.779667e-05 | 0.985555 | 0.002972 | 0.000228 | 76540.684802 | 0 | 80140.704110 | 6 | -59.321733 | 1.200094e-03 | 0.971580 | 0.000779 | 0.000095 | 76540.684802 | 0 | 80140.704110 | 6 | -59.097972 | 1.200094e-03 | 0.971580 | 0.000779 | 0.000095 | 76540.684802 | 0 | 80140.704110 | 6 | -253.568080 | 2.703497e-05 | 0.995752 | 0.003320 | 0.000154 | 76540.684802 | 0 | 80140.704110 | 6 | -317.155764 | 2.703497e-05 | 0.995752 | 0.004153 | 0.000192 | -283.402256 | 4.779667e-05 | 0.985555 | 0.003717 | 0.000286 | 76540.684802 | 78340.694456 | 80140.704110 |
17 | 17 | 8 | 4201.183384 | -56.353086 | 8.712980e-04 | 0.928338 | 0.000745 | 0.000122 | -56.645388 | 8.712980e-04 | 0.928338 | 0.000745 | 0.000122 | 20.648160 | 2.0 | 0.746543 | 1.0 | -515.121693 | 2.645955e-06 | 0.989783 | 0.006731 | 0.000396 | 76540.684802 | 0 | 80741.868186 | 8 | -56.353086 | 8.712980e-04 | 0.928338 | 0.000745 | 0.000122 | 76540.684802 | 0 | 80741.868186 | 8 | -56.645388 | 8.712980e-04 | 0.928338 | 0.000745 | 0.000122 | 76540.684802 | 0 | 80741.868186 | 8 | -515.121693 | 2.645955e-06 | 0.989783 | 0.006731 | 0.000396 | 76540.684802 | 0 | 80741.868186 | 8 | -384.560643 | 2.645955e-06 | 0.989783 | 0.005025 | 0.000296 | -384.560643 | 2.645955e-06 | 0.989783 | 0.005025 | 0.000296 | 76540.684802 | 78641.276494 | 80741.868186 |
18 | 18 | 8 | 4201.183384 | -47.728816 | 5.333120e-04 | 0.939326 | 0.000630 | 0.000094 | -46.987604 | 5.333120e-04 | 0.939326 | 0.000630 | 0.000094 | 29.877832 | 4.0 | 2.098478 | 1.0 | -284.175628 | 2.057823e-04 | 0.956015 | 0.003721 | 0.000466 | 76540.684802 | 0 | 80741.868186 | 8 | -47.728816 | 5.333120e-04 | 0.939326 | 0.000630 | 0.000094 | 76540.684802 | 0 | 80741.868186 | 8 | -46.987604 | 5.333120e-04 | 0.939326 | 0.000630 | 0.000094 | 76540.684802 | 0 | 80741.868186 | 8 | -284.175628 | 2.057823e-04 | 0.956015 | 0.003721 | 0.000466 | 76540.684802 | 0 | 80741.868186 | 8 | -596.336198 | 2.057823e-04 | 0.956015 | 0.007807 | 0.000978 | -596.336198 | 2.057823e-04 | 0.956015 | 0.007807 | 0.000978 | 76540.684802 | 78641.276494 | 80741.868186 |
19 | 19 | 7 | 3598.588190 | -39.294228 | 4.651180e-04 | 0.963940 | 0.000514 | 0.000063 | -38.611318 | 4.651180e-04 | 0.963940 | 0.000514 | 0.000063 | 15.595845 | 1.0 | 1.979630 | 1.0 | -136.822009 | 1.485273e-05 | 0.990960 | 0.001786 | 0.000108 | 77143.279996 | 0 | 80741.868186 | 6 | -42.144383 | 2.888146e-03 | 0.955793 | 0.000550 | 0.000085 | 77143.279996 | 0 | 80741.868186 | 6 | -41.461473 | 2.888146e-03 | 0.955793 | 0.000550 | 0.000085 | 77143.279996 | 0 | 80741.868186 | 6 | -123.330258 | 1.094731e-05 | 0.997297 | 0.001613 | 0.000059 | 77143.279996 | 0 | 80741.868186 | 6 | -244.148263 | 1.094731e-05 | 0.997297 | 0.003193 | 0.000118 | -270.856935 | 1.485273e-05 | 0.990960 | 0.003535 | 0.000214 | 77143.279996 | 78942.574091 | 80741.868186 |
Let’s find the longest track and try to visualize it:
track_table.sort_values(by=['count'], ascending=False, inplace=True)
particular_tracking_table = track_table.aux_table[0] # the first
_mapping_track_table_aux_tables = store[list(position.tables._mapping_track_table_aux_tables)[0]._v_pathname]
index = _mapping_track_table_aux_tables.query('_index == @particular_tracking_table').individual_table
the_longest_track = store[getattr(position.tables._individual_track_table_aux_tables, 'track_table_aux_tables_%09d' % (index,))._v_pathname]
the_longest_track
distance | distance_num | node_id_a | node_id_b | node_next_id_a | node_next_id_b | timepoint | track_table_number | |
---|---|---|---|---|---|---|---|---|
0 | 5.898107 | 1.0 | 0 | 1 | 0 | 1 | 42345.743439 | 0 |
1 | 7.083879 | 1.0 | 0 | 1 | 0 | 2 | 42943.263915 | 0 |
2 | 7.251955 | 1.0 | 0 | 2 | 0 | 1 | 43545.771926 | 0 |
3 | 8.919651 | 1.0 | 0 | 1 | 0 | 1 | 44144.751331 | 0 |
4 | 9.688499 | 1.0 | 0 | 1 | 0 | 1 | 44744.694663 | 0 |
5 | 11.311585 | 1.0 | 0 | 1 | 0 | 1 | 45344.289949 | 0 |
6 | 12.540052 | 1.0 | 0 | 1 | 0 | 1 | 45939.743908 | 0 |
7 | 14.456596 | 1.0 | 0 | 1 | 0 | 1 | 46545.171155 | 0 |
8 | 16.146596 | 1.0 | 0 | 1 | 0 | 1 | 47147.290182 | 0 |
9 | 18.101215 | 1.0 | 0 | 1 | 0 | 1 | 47744.704740 | 0 |
10 | 20.143139 | 1.0 | 0 | 1 | 0 | 1 | 48338.214147 | 0 |
11 | 22.355845 | 1.0 | 0 | 1 | 0 | 1 | 48945.238245 | 0 |
12 | 25.077399 | 1.0 | 0 | 1 | 0 | 1 | 49539.787734 | 0 |
13 | 27.538952 | 1.0 | 0 | 1 | 0 | 1 | 50142.246928 | 0 |
14 | 31.024734 | 1.0 | 0 | 1 | 0 | 1 | 50745.344198 | 0 |
15 | 33.735136 | 1.0 | 0 | 1 | 0 | 1 | 51344.796590 | 0 |
16 | 37.211679 | 1.0 | 0 | 1 | 0 | 1 | 51944.723954 | 0 |
17 | 40.819015 | 1.0 | 0 | 1 | 0 | 1 | 52542.958177 | 0 |
18 | 45.219417 | 1.0 | 0 | 1 | 0 | 1 | 53141.803414 | 0 |
19 | 49.032112 | 1.0 | 0 | 1 | 0 | 1 | 53741.353184 | 0 |
20 | 53.111341 | 1.0 | 0 | 1 | 0 | 1 | 54341.241176 | 0 |
21 | 57.906361 | 1.0 | 0 | 1 | 1 | 2 | 54942.331510 | 0 |
timepoint = the_longest_track.timepoint / (60*60)
length = the_longest_track.distance
pyplot.title('Length over Time')
pyplot.xlabel('Time [h]')
pyplot.ylabel('Length [µm]')
pyplot.plot(timepoint, length)
[<matplotlib.lines.Line2D at 0x7f89d9621470>]
Now all tracked hyphae:
pyplot.title('Length over Time')
pyplot.xlabel('Time [h]')
pyplot.ylabel('Length [µm]')
for idx, row in track_table.iterrows():
particular_tracking_table = int(row.aux_table)
index = _mapping_track_table_aux_tables.query('_index == @particular_tracking_table').individual_table
track = store[getattr(position.tables._individual_track_table_aux_tables, 'track_table_aux_tables_%09d' % (index,))._v_pathname]
timepoint = track.timepoint / (60*60)
length = track.distance - track.distance.min()
pyplot.plot(timepoint, length)
pyplot.xlim(0, None)
(0, 22.961576228743152)
Example Alternative Growth Fit¶
Please first see the other Jupyter Notebook, explaining the basics of
accessing mycelyso’s HDF5 files. Furthermore, this file assumes the
output.h5
described in the other notebook to be present in the
current directory.
Within this notebook, we will fit the mycelium length data using a third-party library, croissance (DOI: 10.5281/zenodo.229905 by Lars Schöning (2017)). Please install the current version off github first:
pip install https://github.com/biosustain/croissance/archive/master.zip
First, some general setup …
%matplotlib inline
%config InlineBackend.figure_formats=['svg']
import pandas
pandas.options.display.max_columns = None
import numpy as np
import warnings
import croissance
from croissance.figures import PDFWriter as CroissancePDFWriter
from matplotlib import pyplot
class OutputInstead:
@classmethod
def savefig(cls, fig):
pyplot.gcf().set_size_inches(10, 12)
pyplot.show()
# croissance's PDFWriter is supposed to write to a PDF
# but we want an inline figure, so we mock some bits
CroissancePDFWriter.doc = OutputInstead
CroissancePDFWriter._include_shifted_exponentials = False
def display_result(result, name="Mycelium Length"):
return CroissancePDFWriter.write(CroissancePDFWriter, name, result)
warnings.simplefilter(action='ignore', category=FutureWarning)
pyplot.rcParams.update({
'figure.figsize': (10, 6), 'svg.fonttype': 'none',
'font.sans-serif': 'Arial', 'font.family': 'sans-serif',
'image.cmap': 'gray_r', 'image.interpolation': 'none'
})
Opening the HDF5 file¶
We will load the output.h5
using pandas.HDFStore
…
store = pandas.HDFStore('output.h5', 'r')
root = store.get_node('/')
for image_file in root.results:
print(image_file)
for position in image_file:
print(position)
break
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff (Group) ''
/results/mycelyso_S_lividans_TK24_Complex_Medium_nd046_138_ome_tiff/pos_000000000_t_Collected (Group) ''
and load the first growth curve
result_table_collected = store[position.result_table_collected._v_pathname]
timepoint = result_table_collected.timepoint / (60*60)
length = result_table_collected.graph_edge_length
pyplot.title('Length over Time')
pyplot.xlabel('Time [h]')
pyplot.ylabel('Length [µm]')
pyplot.plot(timepoint, length)
[<matplotlib.lines.Line2D at 0x7fb7dd6e5160>]
Here, we will use the third party tool croissance
to fit the data to
an exponential growth model:
curve = pandas.Series(data=np.array(length), index=np.array(timepoint))
estimator = croissance.Estimator()
result = estimator.growth(curve)
# print(result)
print(result.growth_phases)
[GrowthPhase(start=9.928127173487246, end=22.594538504723342, slope=0.36693539043981077, intercept=3.1588539520729086, n0=-25.525547240977755, attributes={'SNR': 172.5009988033075, 'rank': 100.0})]
And furthermore use its plotting functionality to show the results:
print("Growth rate as determined by croissance µ=%.2f" % (result.growth_phases[0].slope,))
display_result(result)
Growth rate as determined by croissance µ=0.37
mycelyso Developer Documentation¶
Subpackages¶
mycelyso.tunables¶
Module contents¶
This file contains all the tunables available in mycelyso.
You can set them via -t Name=value
on the command line.
-
class
mycelyso.tunables.
BorderArtifactRemovalBorderSize
[source]¶ Bases:
tunable.tunable.Tunable
Remove structures, whose centroid lies within that distance [µm] of a border
-
default
= 10.0¶
-
value
= 10.0¶
-
-
class
mycelyso.tunables.
BoxDetection
[source]¶ Bases:
tunable.tunable.Tunable
Whether to run the rectangular microfluidic growth structure detection as ROI detection
-
default
= False¶
-
value
= False¶
-
-
class
mycelyso.tunables.
CleanUpGaussianSigma
[source]¶ Bases:
tunable.tunable.Tunable
Clean up step: Sigma [µm] used for Gaussian filter
-
default
= 0.075¶
-
value
= 0.075¶
-
-
class
mycelyso.tunables.
CleanUpGaussianThreshold
[source]¶ Bases:
tunable.tunable.Tunable
Clean up step: Threshold used after Gaussian filter (values range from 0 to 1)
-
default
= 0.5¶
-
value
= 0.5¶
-
-
class
mycelyso.tunables.
CleanUpHoleFillSize
[source]¶ Bases:
tunable.tunable.Tunable
Clean up step: Maximum size of holes [µm²] which will be filled
-
default
= 1.0¶
-
value
= 1.0¶
-
-
class
mycelyso.tunables.
CropHeight
[source]¶ Bases:
tunable.tunable.Tunable
Crop value (vertical) of the image [pixels]
-
default
= 0¶
-
value
= 0¶
-
-
class
mycelyso.tunables.
CropWidth
[source]¶ Bases:
tunable.tunable.Tunable
Crop value (horizontal) of the image [pixels]
-
default
= 0¶
-
value
= 0¶
-
-
class
mycelyso.tunables.
NodeEndpointMergeRadius
[source]¶ Bases:
tunable.tunable.Tunable
Radius in which endpoints are going to be merged [µm]
-
default
= 0.5¶
-
value
= 0.5¶
-
-
class
mycelyso.tunables.
NodeJunctionMergeRadius
[source]¶ Bases:
tunable.tunable.Tunable
Radius in which junctions are going to be merged [µm]
-
default
= 0.5¶
-
value
= 0.5¶
-
-
class
mycelyso.tunables.
NodeLookupCutoffRadius
[source]¶ Bases:
tunable.tunable.Tunable
Radius at which nodes will be ignored if they are further away [µm]
-
default
= 2.5¶
-
value
= 2.5¶
-
-
class
mycelyso.tunables.
NodeLookupRadius
[source]¶ Bases:
tunable.tunable.Tunable
Radius in which nodes will be searched for found pixel structures [µm]
-
default
= 0.5¶
-
value
= 0.5¶
-
-
class
mycelyso.tunables.
NodeTrackingEndpointShiftRadius
[source]¶ Bases:
tunable.tunable.Tunable
Maximum search radius for endpoints [µm·h⁻¹]
-
default
= 100.0¶
-
value
= 100.0¶
-
-
class
mycelyso.tunables.
NodeTrackingJunctionShiftRadius
[source]¶ Bases:
tunable.tunable.Tunable
Maximum search radius for junctions [µm·h⁻¹]
-
default
= 5.0¶
-
value
= 5.0¶
-
-
class
mycelyso.tunables.
RemoveSmallStructuresSize
[source]¶ Bases:
tunable.tunable.Tunable
Remove structures up to this size [µm²]
-
default
= 10.0¶
-
value
= 10.0¶
-
-
class
mycelyso.tunables.
SkipBinarization
[source]¶ Bases:
tunable.tunable.Tunable
Whether to directly use the input image as binary mask. Use in case external binarization is desired.
-
default
= False¶
-
value
= False¶
-
-
class
mycelyso.tunables.
StoreImage
[source]¶ Bases:
tunable.tunable.Tunable
Whether to store images in the resulting HDF5. This leads to a potentially much larger output file.
-
default
= False¶
-
value
= False¶
-
-
class
mycelyso.tunables.
ThresholdingParameters
[source]¶ Bases:
tunable.tunable.Tunable
Parameters for the used binarization method, passed as key1:value1,key2:value2,… string
-
default
= ''¶
-
value
= ''¶
-
-
class
mycelyso.tunables.
ThresholdingTechnique
[source]¶ Bases:
tunable.tunable.Tunable
Binarization method to use, for available methods see documentation (mycelyso.processing.binarization)
-
default
= 'experimental_thresholding'¶
-
value
= 'experimental_thresholding'¶
-
-
class
mycelyso.tunables.
TrackingMaximumCoverage
[source]¶ Bases:
tunable.tunable.Tunable
Tracking, maximum covered area ratio at which tracking is still performed
-
default
= 0.2¶
-
value
= 0.2¶
-
-
class
mycelyso.tunables.
TrackingMaximumRelativeShrinkage
[source]¶ Bases:
tunable.tunable.Tunable
Tracking, maximal relative shrinkage
-
default
= 0.2¶
-
value
= 0.2¶
-
-
class
mycelyso.tunables.
TrackingMaximumTipElongationRate
[source]¶ Bases:
tunable.tunable.Tunable
Tracking, maximum tip elongation rate [µm·h⁻¹]
-
default
= 100.0¶
-
value
= 100.0¶
-
-
class
mycelyso.tunables.
TrackingMinimalGrownLength
[source]¶ Bases:
tunable.tunable.Tunable
Tracking, minimal hyphae gained length in track filter [µm]
-
default
= 5.0¶
-
value
= 5.0¶
-
-
class
mycelyso.tunables.
TrackingMinimalMaximumLength
[source]¶ Bases:
tunable.tunable.Tunable
Tracking, minimal hyphae end length in track filter [µm]
-
default
= 10.0¶
-
value
= 10.0¶
-
mycelyso.highlevel package¶
Submodules¶
mycelyso.highlevel.nodeframe module¶
The nodeframe module contains the NodeFrame class, a representation of the graph of one time lapse frame.
-
class
mycelyso.highlevel.nodeframe.
NodeFrame
(pf)[source]¶ Bases:
object
Node frame is a representation of an image stack frame on the graph/node level, it populates its values from a PixelFrame passed.
-
cleanup_adjacency
()[source]¶ Cleans up the adjacency matrix after alterations on the node level have been performed.
Returns:
-
cycles
¶ Detects whether a cycle exists in the graph.
Returns:
-
generate_derived_data
()[source]¶ Generates derived data from the current adjacency matrix.
Derived data are shortest paths, as well as connected components.
Returns:
-
get_connected_nodes
(some_node)[source]¶ Get all nodes which are (somehow) connected to node some_node.
Parameters: some_node – Returns:
-
get_networkx_graph
(with_z=0, return_positions=False)[source]¶ Convert the adjacency matrix based internal graph representation to a networkx graph representation.
Positions are additionally set based upon the pixel coordinate based positions of the nodes.
Parameters: - with_z – Whether z values should be set based upon the timepoint the nodes appear on
- return_positions – Whether positions should be returned jointly with the graph
Returns:
-
get_path
(start_node, end_node)[source]¶ Walks from start_node to end_node in the graph and returns the list of nodes (including both).
Parameters: - start_node –
- end_node –
Returns:
-
mycelyso.highlevel.pipeline module¶
The pipeline module contains the mycelyso-Pipeline, assembled from various functions.
-
class
mycelyso.highlevel.pipeline.
Mycelyso
[source]¶ Bases:
mycelyso.pilyso.application.application.App
The Mycelyso App, implementing a pilyso App.
-
class
mycelyso.highlevel.pipeline.
MycelysoPipeline
(args)[source]¶ Bases:
mycelyso.pilyso.pipeline.pipeline.PipelineExecutionContext
The MycelysoPipeline, defining the pipeline (with slight alterations based upon arguments passed via command line).
mycelyso.highlevel.pixelframe module¶
The pixelframe module contains the PixelFrame class, a representation of one time lapse frame at the binary mask/pixel level.
mycelyso.highlevel.steps module¶
The steps module contains most of the individual, albeit mycelyso-specific processing steps.
-
mycelyso.highlevel.steps.
binarize
(image, binary=None)[source]¶ Binarizes the input image using the experimental thresholding technique.
Parameters: - image –
- binary –
Returns:
-
mycelyso.highlevel.steps.
clean_up
(calibration, binary)[source]¶ Cleans up the image by removing holes smaller than the configured size.
Parameters: - calibration –
- binary –
Returns: >>> clean_up(0.1, np.array([[ True, True, True], ... [ True, False, True], ... [ True, True, True]])) array([[ True, True, True], [ True, True, True], [ True, True, True]])
-
mycelyso.highlevel.steps.
convert_to_nodes
(skeleton, timepoint, calibration, pixel_frame=None, node_frame=None)[source]¶ Passes the input skeleton into a PixelFrame and instantiates a NodeFrame based upon that.
Parameters: - skeleton –
- timepoint –
- calibration –
- pixel_frame –
- node_frame –
Returns:
-
mycelyso.highlevel.steps.
generate_graphml
(node_frame, result)[source]¶ Generates a GraphML representation of a particular frame.
Parameters: - node_frame –
- result –
Returns:
-
mycelyso.highlevel.steps.
generate_overall_graphml
(collected, result)[source]¶ Generates a GraphML representation of the whole graph of one image stack.
Parameters: - collected –
- result –
Returns:
-
mycelyso.highlevel.steps.
graph_statistics
(node_frame, result=None)[source]¶ Adds some information about the graph to the results.
Parameters: - node_frame –
- result –
Returns: >>> pf = PixelFrame(np.array([[0, 0, 0], ... [1, 1, 1], ... [0, 0, 0]]), calibration=15.0) >>> sorted(graph_statistics(NodeFrame(pf)).items()) [('graph_edge_count', 1.0), ('graph_edge_length', 30.0), ('graph_endpoint_count', 2), ('graph_junction_count', 0), ('graph_node_count', 2)]
-
mycelyso.highlevel.steps.
image_statistics
(image, calibration, result=None)[source]¶ Adds some numeric image parameters (i.e. size) to the results.
Parameters: - image –
- calibration –
- result –
Returns: >>> sorted(image_statistics(np.array([[0, 0, 0], ... [0, 0, 0], ... [0, 0, 0]]), calibration=15.0).items()) [('area', 2025.0), ('area_pixel', 9), ('input_height', 45.0), ('input_height_pixel', 3), ('input_width', 45.0), ('input_width_pixel', 3)]
-
mycelyso.highlevel.steps.
individual_tracking
(collected, tracked_fragments=None, tracked_fragments_fates=None)[source]¶ After correspondence has been established by NodeFrame#track, reconstructs growing paths over time.
Parameters: - collected –
- tracked_fragments –
- tracked_fragments_fates –
Returns:
-
mycelyso.highlevel.steps.
prepare_position_regressions
(collected, result)[source]¶ Prepares some regressions over parameters collected per position over time.
Parameters: - collected –
- result –
Returns:
-
mycelyso.highlevel.steps.
prepare_tracked_fragments
(collected, tracked_fragments, tracked_fragments_fates, track_table=None, track_table_aux_tables=None)[source]¶ Filters and converts tracked growing segments to result datasets.
Parameters: - collected –
- tracked_fragments –
- tracked_fragments_fates –
- track_table –
- track_table_aux_tables –
Returns:
-
mycelyso.highlevel.steps.
qimshow
(image, cmap='gray')[source]¶ Debug function, quickly shows the passed image via matplotlibs imshow-facilities.
Parameters: - image –
- cmap –
Returns:
-
mycelyso.highlevel.steps.
quantify_binary
(binary, calibration, result=None)[source]¶ Adds some information about the binary image (i.e. covered ratio, area …) to the results.
Parameters: - binary –
- calibration –
- result –
Returns: >>> sorted(quantify_binary(np.array([[0, 0, 0], ... [1, 1, 1], ... [0, 0, 0]]), calibration=15.0).items()) [('covered_area', 675.0), ('covered_area_pixel', 3), ('covered_ratio', 0.3333333333333333)]
-
mycelyso.highlevel.steps.
remove_border_artifacts
(calibration, binary)[source]¶ Removes structures, which are most likely artifacts because their centroid lies near the border.
Parameters: - calibration –
- binary –
Returns: >>> remove_border_artifacts(0.1, np.array([[ False, False, False], ... [ False, False, True], ... [ False, False, True]])) array([[False, False, False], [False, False, False], [False, False, False]])
-
mycelyso.highlevel.steps.
remove_small_structures
(calibration, binary)[source]¶ Cleans up the image by removing structures smaller than the configured size.
Parameters: - calibration –
- binary –
Returns: >>> remove_small_structures(0.1, np.array([[ False, False, False], ... [ False, False, True], ... [ False, False, True]])) array([[False, False, False], [False, False, False], [False, False, False]])
-
mycelyso.highlevel.steps.
set_empty_crops
(image, crop_t=None, crop_b=None, crop_l=None, crop_r=None)[source]¶ Defines crop parameters based upon image size, effectively not cropping at all.
Parameters: - image –
- crop_t –
- crop_b –
- crop_l –
- crop_r –
Returns:
-
mycelyso.highlevel.steps.
skeletonize
(binary, skeleton=None)[source]¶ Skeletonizes the image using scikit-image’s skeletonize function.
Parameters: - binary –
- skeleton –
Returns: >>> skeletonize(np.array([[0, 0, 1, 1], ... [0, 0, 1, 1], ... [0, 0, 1, 1], ... [0, 0, 1, 1]])) array([[False, False, False, False], [False, False, True, False], [False, False, True, False], [False, False, False, False]])
-
mycelyso.highlevel.steps.
skip_if_image_is_below_size
(min_height=4, min_width=4)[source]¶ Raises a Skip exception if the image size falls below the set image size.
Parameters: - min_height –
- min_width –
Returns: >>> skip_if_image_is_below_size(32, 32)(np.zeros((16,16)), Meta(0, 0)) Traceback (most recent call last): ... mycelyso.pilyso.pipeline.executor.Skip: Meta(pos=0, t=<class 'mycelyso.pilyso.pipeline.executor.Collected'>)
Module contents¶
The highlevel package contains highlevel functionality of mycelyso.
mycelyso.misc package¶
Submodules¶
mycelyso.misc.graphml module¶
The graphml module contains output routines to output GraphML structured data from internal graph representations.
-
mycelyso.misc.graphml.
to_graphml_string
(g)[source]¶ Converts a networkx graph to a GraphML representation.
Parameters: g – graph Returns: graphml string
mycelyso.misc.regression module¶
The regression modules contains some helpers to perform linear fits on data with non-linear begins or ends.
-
mycelyso.misc.regression.
find_linear_window
(x, y, begin=nan, end=nan, window=0.1, condition=('rvalue', 'gt', 0.95), return_begin_end=False, return_nan_if_impossible=True)[source]¶ Tries to find a continuous window in x/y which (mostly) follows a linear relation subject to condition.
If window is a float, it is seen as relative length of the input lists. Linear regressions will be performed on each window, then the windows will be filtered by the condition (eg that they have a rvalue better than 0.95). Then the range between the first and the last window to follow these conditions will be used to perform the overall regression.
See also
scipy.stats.linregress()
Parameters: - x – Input data, independent value
- y – Input data, dependent value
- begin –
- end –
- window – Window, either
- condition – Condition to check, a tuple of three. The first must be a key of a linear regression result object, the second either ‘gt’ or ‘lt’, and the third the value to compare.
- return_begin_end – If true, return the found range as well
- return_nan_if_impossible – If True, return NaN if no suitable region was found, otherwise throws RuntimeError
Returns:
-
mycelyso.misc.regression.
prepare_optimized_regression
(x, y)[source]¶ First finds an optimal window using
find_linear_window()
, than performs a linear regression.Parameters: - x – independent variable
- y – dependent variable
Returns: >>> x = np.linspace(1, 100, 100) >>> y = x * 5 + 10 >>> y[0:10] = 0 # break our nice linear curve >>> prepare_optimized_regression(x, y) OrderedDict([('slope', 5.0), ('intercept', 10.0), ('rvalue', 0.9999999999999999), ('pvalue', 0.0), ('stderr', 7.942345602646859e-09), ('begin_index', 10), ('end_index', 100), ('begin', 11.0), ('end', 100.0)])
mycelyso.misc.util module¶
-
mycelyso.misc.util.
calculate_length
(points, times=1, w=5)[source]¶ Calculates the length of a path.
Paths sampled from pixel grids may contain notable measuring error, if euclidean distances are calculated naively. This method uses an adapted approach from [Cornelisse1984], by repeatedly smoothing the coordinates with a moving average filter before calculating the euclidean distance.
[Cornelisse1984] Cornelisse and van den Berg (1984) Journal of Microscopy 10.1111/j.1365-2818.1984.tb00544.x Parameters: - points – Input points, a numpy array (X, 2)
- times – Times smoothing should be applied
- w – window width of the moving average filter
Returns: Length of the input path
>>> calculate_length(np.array([[1.0, 1.0], ... [5.0, 5.0]])) 5.656854249492381
-
mycelyso.misc.util.
clean_by_radius
(points, radius=15.0)[source]¶ Bins points by radius and returns only one per radius, removing duplicates.
Parameters: - points – Input points
- radius – Radius
Returns: Filtered points
>>> clean_by_radius(np.array([[1.0, 1.0], ... [1.1, 1.1], ... [9.0, 9.0]]), radius=1.5) array([[1., 1.], [9., 9.]])
Module contents¶
The misc package contains various helper functions.
mycelyso.processing package¶
Submodules¶
mycelyso.processing.binarization module¶
The binarization module contains the binarization routine used to segment phase contrast images of mycelium networks into foreground and background.
-
mycelyso.processing.binarization.
bataineh
(image, mask=None, window_size=15, return_threshold=False, **kwargs)[source]¶ Thresholding method as developed by [Bataineh2011a].
[Bataineh2011a] Bataineh et al. (2011) Pattern Recognit. Lett. DOI: 10.1016/j.patrec.2011.08.001 Parameters: - image – Input image
- mask – Possible mask denoting a ROI
- window_size – Window size
- return_threshold – Whether to return a binarization, or the actual threshold values
- kwargs – For compatibility
Returns:
-
mycelyso.processing.binarization.
experimental_thresholding
(image, mask=None, window_size=15, gaussian_sigma=3.0, shift=0.2, target=-0.5, quotient=1.2, return_threshold=False, **kwargs)[source]¶ A novel thresholding method basing upon the shape index as defined by [Koenderink1992], and [Bataineh2011] automatic adaptive thresholding. The method is due to be explained in detail in the future.
[Koenderink1992] Koenderink and van Doorn (1992) Image Vision Comput. DOI: 10.1016/0262-8856(92)90076-F [Bataineh2011] Bataineh et al. (2011) Pattern Recognit. Lett. DOI: 10.1016/j.patrec.2011.08.001 Parameters: - image – Input image
- mask – Possible mask denoting a ROI
- window_size – Window size
- gaussian_sigma – Sigma of the Gaussian used for smoothing
- shift – Shift parameter
- target – Target shape index parameter
- quotient – Quotient parameter
- return_threshold – Whether to return a binarization, or the actual threshold values
- kwargs – For compatibility
Returns:
-
mycelyso.processing.binarization.
feng
(image, mask=None, window_size=15, window_size2=30, a1=0.12, gamma=2, k1=0.25, k2=0.04, return_threshold=False, **kwargs)[source]¶ Thresholding method as developed by [Feng2004].
[Feng2004] Fend & Tan (2004) IEICE Electronics Express DOI: 10.1587/elex.1.501 Parameters: - image – Input image
- mask – Possible mask denoting a ROI
- window_size – Window size
- window_size2 – Second window size
- a1 – a1 value
- gamma – gamma value
- k1 – k1 value
- k2 – k2 value
- return_threshold – Whether to return a binarization, or the actual threshold values
- kwargs – For compatibility
Returns:
-
mycelyso.processing.binarization.
mean_and_std
(image, window_size=15)[source]¶ Helper function returning mean and average images sped up using integral images / summed area tables.
Parameters: - image – Input image
- window_size – Window size
Returns: tuple (mean, std)
-
mycelyso.processing.binarization.
nick
(image, window_size=15, k=-0.1, return_threshold=False, **kwargs)[source]¶ Thresholding method as developed by [Khurshid2009].
[Khurshid2009] Khurshid et al. (2009) Proc. SPIE DOI: 10.1117/12.805827 Parameters: - image – Input image
- window_size – Window size
- k – k value
- return_threshold – Whether to return a binarization, or the actual threshold values
- kwargs – For compatibility
Returns:
-
mycelyso.processing.binarization.
normalize
(image)[source]¶ Normalizes an image to the range 0-1
Parameters: image – Returns:
-
mycelyso.processing.binarization.
phansalkar
(image, window_size=15, k=0.25, r=0.5, p=2.0, q=10.0, return_threshold=False, **kwargs)[source]¶ Thresholding method as developed by [Phansalkar2011].
[Phansalkar2011] Phansalkar et al. (2011) Proc. ICCSP DOI: 10.1109/ICCSP.2011.5739305 Parameters: - image – Input image
- window_size – Window size
- k – k value
- r – r value
- p – p value
- q – q value
- return_threshold – Whether to return a binarization, or the actual threshold values
- kwargs – For compatibility
Returns:
-
mycelyso.processing.binarization.
sauvola
(image, window_size=15, k=0.5, r=128, return_threshold=False, **kwargs)[source]¶ Thresholding method as developed by [Sauvola1997].
[Sauvola1997] Sauvola et al. (1997) Proc. Doc. Anal. Recog. DOI: 10.1109/ICDAR.1997.619831 Parameters: - image – Input image
- window_size – Window size
- k – k value
- r – r value
- return_threshold – Whether to return a binarization, or the actual threshold values
- kwargs – For compatibility
Returns:
-
mycelyso.processing.binarization.
wolf
(image, mask=None, window_size=15, a=0.5, return_threshold=False, **kwargs)[source]¶ Thresholding method as developed by [Wolf2004].
[Wolf2004] Wolf & Jolion (2004) Form. Pattern Anal. & App. DOI: 10.1007/s10044-003-0197-7 Parameters: - image – Input image
- mask – Possible mask denoting a ROI
- window_size – Window size
- a – a value
- return_threshold – Whether to return a binarization, or the actual threshold values
- kwargs – For compatibility
Returns:
mycelyso.processing.pixelgraphs module¶
The pixelgraphs module contains various functions to work with skeleton images, and treating the paths of the skeleton as graphs, which can be walked along.
-
mycelyso.processing.pixelgraphs.
get_all_neighbor_nums
(num)[source]¶ Return all set neighbor bits in num.
Parameters: num – Neighborhood representation. Returns: Array of values
-
mycelyso.processing.pixelgraphs.
get_all_neighbors
(num)[source]¶ Return positions for all set neighbor bits in num
Parameters: num – Neighborhood representation Returns: Array of shifts
-
mycelyso.processing.pixelgraphs.
get_connectivity_map
(binary)[source]¶ Returns a ‘connectivity map’, where each value represents the count of neighbors at a position.
Parameters: binary – Binary input image Returns:
-
mycelyso.processing.pixelgraphs.
get_inverse_neighbor_shift
(num)[source]¶ Get the shift corresponding to the inverse direction represented by num.
Parameters: num – Neighborhood bit Returns: Shift (r, c)
-
mycelyso.processing.pixelgraphs.
get_neighborhood_map
(binary)[source]¶ Returns a ‘neighborhood map’, where each value binary encodes the connections at a point.
Parameters: binary – Binary input image Returns:
-
mycelyso.processing.pixelgraphs.
get_next_neighbor
(num)[source]¶ Returns the coordinates represented by a numeric neighbor bit.
Parameters: num – Neighbor bit Returns: Shift (r, c)
-
mycelyso.processing.pixelgraphs.
is_edge
(connectivity)[source]¶ Returns True if connectivity corresponds an edge (is two).
Parameters: connectivity – Scalar or matrix Returns: Boolean or matrix of boolean
-
mycelyso.processing.pixelgraphs.
is_end
(connectivity)[source]¶ Returns True if connectivity corresponds to an endpoint (is one).
Parameters: connectivity – Scalar or matrix Returns: Boolean or matrix of boolean
Module contents¶
The processing submodule contains various functions and management classes concerned with image processing of hyphae network images.
Module contents¶
mycelyso, the MYCElium anaLYsis SOftware