Mercurial > repos > iuc > pcdl_make_graph_gml
changeset 0:6d0f91e057f3 draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/pcdl/ commit 7c74921b41bd7ab639e5a3f8b54e407f79ed8f16
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,23 @@ +pcdl +==== + +Galaxy wrapper for the pcdl PhysiCell Data Loader command line commands. +Pcdl is paramount for downstream analysis from PhysiCell output. +As such, the pcdl Galaxy tools are useful if you work with the interactive +PhysiCell Studio Galaxy tool. ++ https://usegalaxy.eu/?tool_id=interactive_tool_pcstudio&version=latest + +You will have to unzip the PhysiCell output folder before you can run +pcdl Galaxy tools on it. ++ https://usegalaxy.eu/?tool_id=toolshed.g2.bx.psu.edu%2Frepos%2Fimgteam%2Funzip%2Funzip%2F6.0%2Bgalaxy0&version=latest ++ https://usegalaxy.org/?tool_id=toolshed.g2.bx.psu.edu%2Frepos%2Frheiland%2Fphysicell_studio%2Finteractive_tool_pcstudio%2F0.3&version=latest + +More information about PhysiCell, PhysiCell Studio, and PhysiCell Data Loader +can be found here: ++ https://physicell.org/index.html ++ https://physicell-studio.readthedocs.io/en/latest/index.html ++ https://github.com/elmbeech/physicelldataloader + +Date: 2025-06-06 +License: BSD-3-Clause +Author: Elmar Bucher
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pcdl_macros.xml Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,444 @@ +<macros> + <!-- requirements --> + <xml name="requirement"> + <requirement type="package" version="3.3.8">pcdl</requirement> + </xml> + <!-- input --> + <xml name="aggregate_num"> + <param argument="--aggregate_num" label="aggregation function for focus numeric data" type="select" display="radio" help=""> + <option value="max">max</option> + <option value="mean" selected="true">mean</option> + <option value="median">median</option> + <option value="min">min</option> + <option value="std">std</option> + <option value="var">var</option> + </param> + </xml> + <xml name="allvalues"> + <param argument="--allvalues" label="all values" type="boolean" truevalue="true" falsevalue="false" checked="false" help="For numeric data, should only the min and max values or all values be returned?"/> + </xml> + <xml name="alpha"> + <param argument="--alpha" label="alpha channel" type="float" value="1.0" optional="false" help="Alpha channel transparency value between 1 (not transparent at all) and 0 (totally transparent)."/> + </xml> + <xml name="attribute"> + <param name="attribute" label="attribute" type="text" value="cell_type" optional="false" help="Listing of mcds.get_cell_df dataframe column names, used for cell attributes."/> + </xml> + <xml name="cmap"> + <param argument="--cmap" label="color map" type="select" help="Matplotlib colormap from https://matplotlib.org/stable/tutorials/colors/colormaps.html ."> + <!-- perceptually uniform sequential --> + <option value="viridis" selected="true">viridis</option> + <option value="viridis_r">viridis reversed</option> + <option value="plasma">plasma</option> + <option value="plasma_r">plasma reversed</option> + <option value="inferno">inferno</option> + <option value="inferno_r">inferno reversed</option> + <option value="magam">magma</option> + <option value="magam_r">magma reversed</option> + <option value="cividis">cividis</option> + <option value="cividis_r">cividis reversed</option> + <!-- sequential --> + <option value="Greys">Greys</option> + <option value="Greys_r">Greys reversed</option> + <option value="Purples">Purples</option> + <option value="Purples_r">Purples reversed</option> + <option value="Blues">Blues</option> + <option value="Blues_r">Blues reversed</option> + <option value="Greens">Greens</option> + <option value="Greens_r">Greens reversed</option> + <option value="Oranges">Oranges</option> + <option value="Oranges_r">Oranges reversed</option> + <option value="Reds">Reds</option> + <option value="Reds_r">Reds reversed</option> + <option value="YlOrBr">YlOrBr</option> + <option value="YlOrBr_r">YlOrBr reversed</option> + <option value="YlOrRd">YlOrRd</option> + <option value="YlOrRd_r">YlOrRd reversed</option> + <option value="OrRd">OrRd</option> + <option value="OrRd_r">OrRd reversed</option> + <option value="PuRd">PuRd</option> + <option value="PuRd_r">PuRd reversed</option> + <option value="RdPu">RdPu</option> + <option value="RdPu_r">RdPu reversed</option> + <option value="BuPu">BuPu</option> + <option value="BuPu_r">BuPu reversed</option> + <option value="GnBu">GnBu</option> + <option value="GnBu_r">GnBu reversed</option> + <option value="PuBu">PuBu</option> + <option value="PuBu_r">PuBu reversed</option> + <option value="YlGnBu">YlGnBu</option> + <option value="YlGnBu_r">YlGnBu reversed</option> + <option value="PuBuGn">PuBuGn</option> + <option value="PuBuGn_r">PuBuGn reversed</option> + <option value="BuGn">BuGn</option> + <option value="BuGn_r">BuGn reversed</option> + <option value="YlGn">YlGn</option> + <option value="YlGn_r">YlGn reversed</option> + <!-- sequential 2 --> + <option value="binary">binary</option> + <option value="binary_r">binary reversed</option> + <option value="gist_yarg">gist_yarg</option> + <option value="gist_yarg_r">gist_yarg reversed</option> + <option value="gist_gray">gist_gray</option> + <option value="gist_gray_r">gist_gray reversed</option> + <option value="gray">gray</option> + <option value="gray_r">gray reversed</option> + <option value="bone">bone</option> + <option value="bone_r">bone reversed</option> + <option value="pink">pink</option> + <option value="pink_r">pink reversed</option> + <option value="spring">spring</option> + <option value="spring_r">spring reversed</option> + <option value="summer">summer</option> + <option value="summer_r">summer reversed</option> + <option value="autumn">autumn</option> + <option value="autumn_r">autumn reversed</option> + <option value="winter">winter</option> + <option value="winter_r">winter reversed</option> + <option value="cool">cool</option> + <option value="cool_r">cool reversed</option> + <option value="Wistia">Wistia</option> + <option value="Wistia_r">Wistia reversed</option> + <option value="hot">hot</option> + <option value="hot_r">hot reversed</option> + <option value="afmhot">afmhot</option> + <option value="afmhot_r">afmhot reversed</option> + <option value="gist_heat">gist_heat</option> + <option value="gist_heat_r">gist_heat reversed</option> + <option value="copper">copper</option> + <option value="copper_r">copper reversed</option> + <!-- diverging --> + <option value="PiYG">PiYG</option> + <option value="PiYG_r">PiYG reversed</option> + <option value="PRGn">PRGn</option> + <option value="PRGn_r">PRGn reversed</option> + <option value="BrBG">BrBG</option> + <option value="BrBG_r">BrBG reversed</option> + <option value="PuOr">PuOr</option> + <option value="PuOr_r">PuOr reversed</option> + <option value="RdGy">RdGy</option> + <option value="RdGy_r">RdGy reversed</option> + <option value="RdBu">RdBu</option> + <option value="RdBu_r">RdBu reversed</option> + <option value="RdYlBu">RdYlBu</option> + <option value="RdYlBu_r">RdYlBu reversed</option> + <option value="RdYlGn">RdYlGn</option> + <option value="RdYlGn_r">RdYlGn reversed</option> + <option value="Spectral">Spectral</option> + <option value="Spectral_r">Spectral reversed</option> + <option value="coolwarm">coolwarm</option> + <option value="coolwarm_r">coolwarm reversed</option> + <option value="bwr">bwr</option> + <option value="bwr_r">bwr reversed</option> + <option value="seismic">seismic</option> + <option value="seismic_r">seismic reversed</option> + <option value="berlin">berlin</option> + <option value="berlin_r">berlin reversed</option> + <option value="managua">managua</option> + <option value="managua_r">managua reversed</option> + <option value="vanimo">vanimo</option> + <option value="vanimo_r">vanimo reversed</option> + <!-- cyclic --> + <option value="twilight">twilight</option> + <option value="twilight_r">twilight reversed</option> + <option value="twilight_shifted">twilight_shifted</option> + <option value="twilight_shifted_r">twilight_shifted reversed</option> + <option value="hsv">hsv</option> + <option value="hsv_r">hsv reversed</option> + <!-- qualitative --> + <option value="Pastel1">Pastel1</option> + <option value="Pastel2">Pastel2</option> + <option value="Paired">Paired</option> + <option value="Accent">Accent</option> + <option value="Accent_r">Accent reversed</option> + <option value="Dark2">Dark2</option> + <option value="Dark2_r">Dark2 reversed</option> + <option value="Set1">Set1</option> + <option value="Set1_r">Set1 reversed</option> + <option value="Set2">Set2</option> + <option value="Set2_r">Set2 reversed</option> + <option value="Set3">Set3</option> + <option value="Set3_r">Set3 reversed</option> + <option value="tab10">tab10</option> + <option value="tab10_r">tab10 reversed</option> + <option value="tab20">tab20</option> + <option value="tab20_r">tab20 reversed</option> + <option value="tab20b">tab20b</option> + <option value="tab20b_r">tab20b reversed</option> + <option value="tab20c">tab20c</option> + <option value="tab20c_r">tab20c reversed</option> + <!-- miscellaneous --> + <option value="flag">flag</option> + <option value="flag_r">flag reversed</option> + <option value="prism">prism</option> + <option value="prism_r">prism reversed</option> + <option value="ocean">ocean</option> + <option value="ocean_r">ocean reversed</option> + <option value="gist_earth">gist_earth</option> + <option value="gist_earth_r">gist_earth reversed</option> + <option value="terrain">terrain</option> + <option value="terrain_r">terrain reversed</option> + <option value="gist_stern">gist_stern</option> + <option value="gist_stern_r">gist_stern reversed</option> + <option value="gnuplot">gnuplot</option> + <option value="gnuplot_r">gnuplot reversed</option> + <option value="gnuplot2">gnuplot2</option> + <option value="gnuplot2_r">gnuplot2 reversed</option> + <option value="CMRmap">CMRmap</option> + <option value="CMRmap_r">CMRmap reversed</option> + <option value="cubehelix">cubehelix</option> + <option value="cubehelix_r">cubehelix reversed</option> + <option value="brg">brg</option> + <option value="brg_r">brg reversed</option> + <option value="gist_rainbow">gist_rainbow</option> + <option value="gist_rainbow_r">gist_rainbow reversed</option> + <option value="rainbow">rainbow</option> + <option value="rainbow_r">rainbow reversed</option> + <option value="jet">jet</option> + <option value="jet_r">jet reversed</option> + <option value="turbo">turbo</option> + <option value="turbo_r">turbo reverse</option> + <option value="gist_ncar">gist_ncar</option> + <option value="gist_ncar_r">gist_ncar reversed</option> + </param> + </xml> + <xml name="collapse"> + <param argument="--collapse" label="collapse" type="boolean" truevalue="true" falsevalue="false" checked="true" help="Should all mcds time steps from the time series be collapsed into one big file, or a many files, one file for each time step?"/> + </xml> + <xml name="color"> + <param argument="--color" label="color" type="text" value="none" optional="false" help="Listing of color strings referred to by name, RGB or RGBA code."/> + </xml> + <xml name="custom_data_type"> + <param argument="--custom_data_type" label="custom data type" type="text" value="" optional="true" help="Parameter to specify custom_data variable types other than float (namely: int, bool, str) like this var:dtype myint:int mybool:bool mystr:str. Downstream float and int will be handled as numeric, bool as Boolean, and str as categorical data."/> + </xml> + <xml name="drop"> + <param argument="--drop" label="drop" type="text" value="" optional="true" help="Set of column labels (pcdl_get_cell_attribute_list, pcdl_get_substrate_list) to be dropped. Don't worry: essential columns like ID, coordinates and time will never be dropped. Attention: when the keep parameter is given, then the drop parameter has to be an empty string!"/> + </xml> + <xml name="edge_attribute"> + <param argument="--edge_attribute" label="edge attribute" type="boolean" truevalue="true" falsevalue="false" checked="true" help="Specifies if the spatial Euclidean distance is used for edge attribute, to generate a weighted graph."/> + </xml> + <xml name="entropy"> + <param name="entropy" label="values" type="integer" value="1" optional="false" help="Minimal number of values a variable has to have in any of the mcds time steps to be outputted. Variables that have only 1 state carry no information. None is a state too."/> + </xml> + <xml name="ext"> + <param argument="--ext" label="file extension" type="select" display="radio" help="Output image format. Possible formats are jpeg, png, and tiff."> + <option value="jpeg" selected="true">jpeg</option> + <!-- + <option value="png">png</option> + <option value="tiff">tiff</option> + --> + </param> + </xml> + <xml name="extrema"> + <param argument="--extrema" label="extrem values" type="text" value="none" optional="false" help="Two floats separated by a space. None takes min and max from data."> + <validator type="regex" message="None or two float values separated by a space!">^[enoENO0-9-. ]*$</validator> + </param> + </xml> + <xml name="figbgcolor"> + <param argument="--figbgcolor" label="figure background color" type="text" value="none" optional="false" help="Figure background color. None is transparent (png) or white (jpeg, tiff)."/> + </xml> + <xml name="figsizepx_x"> + <param name="figsizepx_x" label="figure size x-axis in pixel" type="integer" value="640" optional="false" help="Size of the figure in pixels. The given x and y will be rounded to the nearest even number, to be able to generate movies from the images. (--figsizepx)"/> + </xml> + <xml name="figsizepx_y"> + <param name="figsizepx_y" label="figure size y-axis in pixel" type="integer" value="480" optional="false" help="Size of the figure in pixels. The given x and y will be rounded to the nearest even number, to be able to generate movies from the images. (--figsizepx)"/> + </xml> + <xml name="fill"> + <param argument="--fill" label="fill" type="boolean" truevalue="true" falsevalue="false" checked="true" help="True generates a matplotlib contourf plot. False generates a matplotlib contour plot."/> + </xml> + <xml name="focus_cell"> + <param name="focus_cell" label="focus" type="text" value="cell_type" optional="false" help="Column name from the pcdl_get_cell_attribute_list listing."/> + </xml> + <xml name="focus_subs"> + <param name="focus_subs" label="focus" type="text" optional="false" help="Substrate from the pcdl_get_substrate_list listing."/> + </xml> + <xml name="focus_cat"> + <param name="focus_cat" label="focus categorical data" type="text" value="none" optional="false" help="Categorical or boolean data column within dataframe specified under frame (pcdl_get_cell_attribute_list or pcdl_get_substrate_list). None is total, which is all agents or voxels, no categories."/> + </xml> + <xml name="focus_num"> + <param name="focus_num" label="focus numerical data" type="text" value="none" optional="false" help="Numerical data column within dataframe specified under frame (pcdl_get_cell_attribute_list or pcdl_get_substrate_list). None is count, agent or voxel count."/> + </xml> + <xml name="frame"> + <param argument="--frame" label="frame" type="select" display="radio" help="To specifies the data dataframe from which the values are taken. Cell: agent centric value. Conc: whole domain centric substarte concentration values."> + <option value="cell" selected="true">cell</option> + <option value="conc">conc</option> + </param> + </xml> + <xml name="framerate"> + <param argument="--framerate" label="values" type="integer" value="12" optional="false" help="Specifies how many images per second will be used. Humans are capable of processing 12 images per second and seeing them individually. Higher rates are seen as motion."/> + </xml> + <xml name="graph"> + <param argument="--graph" label="graph" type="boolean" truevalue="true" falsevalue="false" checked="true" help="Should neighbor graph, attached graph, and attached spring graph be extracted and loaded into the resulting object?"/> + </xml> + <xml name="graph_type"> + <param argument="--graph_type" label="graph type" type="select" display="radio" help="Specify which physicell graph output data should be processed. Neighbor: neighbor graph data. Attached: attached graph data. Spring: spring attache graph data."> + <option value="neighbor" selected="true">neighbor</option> + <option value="attached">attached</option> + <option value="spring">spring</option> + </param> + </xml> + <xml name="grid"> + <param argument="--grid" label="grid" type="boolean" truevalue="true" falsevalue="false" checked="true" help="Plot axis grid lines."/> + </xml> + <xml name="interface"> + <param name="interface" label="interface" type="select" display="radio" help="Specify the image format from which the gif will be generated. These images can be generated with the pcdl_plot_scatter or pcdl_plot_contour function."> + <option value="jpeg" selected="true">jpeg</option> + <!-- + <option value="png">png</option> + <option value="tiff">tiff</option> + --> + </param> + </xml> + <xml name="keep"> + <param argument="--keep" label="keep" type="text" value="" optional="true" help="Set of column labels (pcdl_get_cell_attribute_list, pcdl_get_substrate_list) to be kept. Set parameter values to 1 to be sure that all variables are kept. Don't worry: essential columns like ID, coordinates and time will always be kept."/> + </xml> + <xml name="legend"> + <param argument="--legend" label="legend" type="select" display="radio" help="If True or reverse, place legend on axis subplots."> + <option value="false">false</option> + <option value="reverse">reverse</option> + <option value="true" selected="true">true</option> + </param> + </xml> + <xml name="legend_loc"> + <param argument="--legend_loc" label="legend location" type="select" display="radio" help="The location of the categorical legend, if applicable."> + <option value="best">best</option> + <option value="upper right">upper right</option> + <option value="upper center"/> + <option value="upper left"/> + <option value="center left"/> + <option value="lower left" selected="true"/> + <option value="lower center"/> + <option value="lower right"/> + <option value="center right"/> + <option value="center"/> + </param> + </xml> + <xml name="linestyle"> + <param argument="--linestyle" label="line style" type="select" display="radio" help="Matplotlib line style."> + <option value="-" selected="true">-</option> + <option value="--">--</option> + <option value=".-">.-</option> + <option value=":">:</option> + </param> + </xml> + <xml name="linewidth"> + <param argument="--linewidth" label="line width" type="integer" value="1" optional="false" help="Line width in points."/> + </xml> + <xml name="logy"> + <param argument="--logy" label="logarithmic y-axis" type="boolean" truevalue="true" falsevalue="false" checked="false" help="If True, then y axis is natural log scaled."/> + </xml> + <xml name="microenv"> + <param argument="--microenv" label="micro environment" type="boolean" truevalue="true" falsevalue="false" checked="true" help="Should the microenvironment be extracted and loaded into the resulting object? Setting microenv to False will use less memory and speed up processing."/> + </xml> + <xml name="node_attribute"> + <param argument="--node_attribute" label="node attribute" type="text" value="" optional="true" help="Listing of pcdl_get_cell_attribute attributes, used for node attributes."/> + </xml> + <xml name="path"> + <param name="path" label="data collection" type="data_collection" collection_type="list" help="PhysiCell output data collection."/> + </xml> + <xml name="physiboss"> + <param argument="--physiboss" label="physiboss" type="boolean" truevalue="true" falsevalue="false" checked="true" help="If found, should physiboss state data be extracted and loaded into the resulting object?"/> + </xml> + <xml name="s"> + <param argument="--s" label="s" type="float" value="1.0" optional="false" help="Scatter plot dot size scale factor. With figsizepx extracted from initial.svg, scale factor 1.0 should be ok. Adjust if necessary."/> + </xml> + <xml name="scale"> + <param argument="--scale" label="scale" type="select" display="radio" help="Specify how the data should be scaled. Possible values are None, maxabs, minmax, std. None: no scaling. Maxabs: maximum absolute value distance scaler maps all values linearly into a [-1, 1] interval. Minmax: minimum maximum distance scaler maps all values linearly into a [0, 1] interval. Std: standard deviation scaler maps all values to sigmas."> + <option value="none">none</option> + <option value="maxabs" selected="true">maxabs</option> + <option value="minmax">minmax</option> + <option value="std">std</option> + </param> + </xml> + <xml name="secondary_y"> + <param argument="--secondary_y" label="secondary y-axis" type="boolean" truevalue="true" falsevalue="false" checked="false" help="Plot on the secondary y-axis?"/> + </xml> + <xml name="sharex"> + <param argument="--sharex" label="shared x-axis" type="boolean" truevalue="true" falsevalue="false" checked="false" help="In case subplots is True, share x-axis by setting some x-axis labels to invisible."/> + </xml> + <xml name="sharey"> + <param argument="sharey" label="shared y-axis" type="boolean" truevalue="true" falsevalue="false" checked="false" help="In case subplots is True, share y-axis range and possibly setting some y-axis labels to invisible."/> + </xml> + <xml name="subplots"> + <param argument="--subplots" label="subplots" type="boolean" truevalue="true" falsevalue="false" checked="false" help="`Should the plot be split into subplots, one per curve?"/> + </xml> + <xml name="title"> + <param argument="--title" label="title" type="text" value="none" optional="false" help="Title to use for the plot. None will print no title."/> + </xml> + <xml name="title_prefix."> + <param argument="--title_prefix" label="title" type="text" value="" optional="true" help="Title prefix."/> + </xml> + <xml name="verbose"> + <param argument="--verbose" label="verbose" type="boolean" truevalue="true" falsevalue="false" checked="false" help="Setting verbose to True for more text output, while processing."/> + </xml> + <xml name="xlim"> + <param argument="--xlim" label="x-axis limit" type="text" value="none" optional="false" help="Two floats separated by a space. X axis min and max value. None takes min and max from mesh x axis range."> + <validator type="regex" message="None or two float values separated by a space!">^[enoENO0-9-. ]*$</validator> + </param> + </xml> + <xml name="xyequal"> + <param argument="--xyequal" label="equal x-axis y-axis spacing" type="boolean" truevalue="true" falsevalue="false" checked="true" help="To specify equal axis spacing for x and y axis."/> + </xml> + <xml name="ylim"> + <param argument="--ylim" label="y-axis limit" type="text" value="none" optional="false" help="Two floats separated by a space. y axis min and max value. None takes min and max from mesh y axis range."> + <validator type="regex" message="None or two float values separated by a space!">^[enoENO0-9-. ]*$</validator> + </param> + </xml> + <xml name="yunit"> + <param argument="--yunit" label="y-axis unit" type="text" value="none" optional="false" help="String to specify y-axis unit. None will not print a unit on the y-axis."/> + </xml> + <xml name="z_axis"> + <param argument="--z_axis" label="z-axis" type="text" value="none" optional="false" help="For a categorical focus: list of labels; for a numeric focus: list of two floats; None, depending on the focus column variable dtype, extracts labels or min and max values from data."/> + </xml> + <xml name="z_slice"> + <param argument="--z_slice" label="z-axis slice" type="float" value="0.0" optional="false" help="Z-axis cut position to slice a 2D xy-plain out of the 3D mesh. If z_slice position numeric but not an exact mesh center coordinate, then z_slice will be adjusted to the nearest mesh center value, the smaller one, if the coordinate lies on a saddle point."/> + </xml> + <!-- test --> + <xml name="output"> + <collection type="list"> + <element name="initial_attached_cells_graph.txt" value="initial_attached_cells_graph.txt"/> + <element name="initial_cell_neighbor_graph.txt" value="initial_cell_neighbor_graph.txt"/> + <element name="initial_cells.mat" value="initial_cells.mat"/> + <element name="initial_mesh0.mat" value="initial_mesh0.mat"/> + <element name="initial_microenvironment0.mat" value="initial_microenvironment0.mat"/> + <element name="initial_spring_attached_cells_graph.txt" value="initial_spring_attached_cells_graph.txt"/> + <element name="initial.svg" value="initial.svg"/> + <element name="initial.xml" value="initial.xml"/> + <element name="legend.svg" value="legend.svg"/> + <element name="output00000000_attached_cells_graph.txt" value="output00000000_attached_cells_graph.txt"/> + <element name="output00000000_cell_neighbor_graph.txt" value="output00000000_cell_neighbor_graph.txt"/> + <element name="output00000000_cells.mat" value="output00000000_cells.mat"/> + <element name="output00000000_microenvironment0.mat" value="output00000000_microenvironment0.mat"/> + <element name="output00000000_spring_attached_cells_graph.txt" value="output00000000_spring_attached_cells_graph.txt"/> + <element name="output00000000.xml" value="output00000000.xml"/> + <element name="output00000001_attached_cells_graph.txt" value="output00000001_attached_cells_graph.txt"/> + <element name="output00000001_cell_neighbor_graph.txt" value="output00000001_cell_neighbor_graph.txt"/> + <element name="output00000001_cells.mat" value="output00000001_cells.mat"/> + <element name="output00000001_microenvironment0.mat" value="output00000001_microenvironment0.mat"/> + <element name="output00000001_spring_attached_cells_graph.txt" value="output00000001_spring_attached_cells_graph.txt"/> + <element name="output00000001.xml" value="output00000001.xml"/> + <element name="final_attached_cells_graph.txt" value="final_attached_cells_graph.txt"/> + <element name="final_cell_neighbor_graph.txt" value="final_cell_neighbor_graph.txt"/> + <element name="final_cells.mat" value="final_cells.mat"/> + <element name="final_microenvironment0.mat" value="final_microenvironment0.mat"/> + <element name="final_spring_attached_cells_graph.txt" value="final_spring_attached_cells_graph.txt"/> + <element name="final.svg" value="final.svg"/> + <element name="final.xml" value="final.xml"/> + <element name="PhysiCell_settings.xml" value="PhysiCell_settings.xml"/> + <!-- test pcdl_make_gif.xml and pcdl_make_movie.xml --> + <element name="output00000000_oxygen.jpeg" value="output00000000_oxygen.jpeg"/> + <element name="output00000001_oxygen.jpeg" value="output00000001_oxygen.jpeg"/> + </collection> + </xml> + <!-- meta --> + <xml name="citation"> + <citation type="bibtex"> + @misc{githubphysicelldataloader, + author = {Bucher, Elmar}, + year = {2025}, + title = {physicelldataloader}, + publisher = {GitHub}, + journal = {GitHub repository}, + url = {https://github.com/elmbeech/physicelldataloader}, + }</citation> + </xml> +</macros>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pcdl_make_graph_gml.xml Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,135 @@ +<tool id="pcdl_make_graph_gml" name="pcdl_make_graph_gml" version="3.0.1+galaxy0" profile="21.05"> + <macros> + <import>pcdl_macros.xml</import> + </macros> + <requirements> + <expand macro="requirement"/> + </requirements> + <command><![CDATA[ + #import re + mkdir output_pc && + #for $file in $path: + #set $filename = re.sub('[^\w\-\.\s]', '_', str($file.element_identifier)) + ln -s '$file' output_pc/$filename && + #end for + + pcdl_make_graph_gml 'output_pc' $graph_type + --custom_data_type $custom_data_type + --microenv $microenv + --physiboss $physiboss + --settingxml 'none' + --verbose $verbose + --edge_attribute $edge_attribute + --node_attribute $node_attribute + ]]></command> + <inputs> + <section name="essential" title="essential:" expanded="true"> + <expand macro="path"/> + <expand macro="graph_type"/> + <expand macro="custom_data_type"/> + <expand macro="edge_attribute"/> + <expand macro="node_attribute"/> + </section> + <section name="advanced" title="advanced:" expanded="false"> + <expand macro="microenv"/> + <expand macro="physiboss"/> + <expand macro="verbose"/> + </section> + </inputs> + <outputs> + <collection name="graph_gml" type="list"> + <discover_datasets pattern="(?P<designation>.+\.gml)" format="txt" directory="output_pc" visible="false"/> + </collection> + </outputs> + <tests> + <test expect_num_outputs="1"> + <section name="essential"> + <param name="path"> + <expand macro="output"/> + </param> + <param name="graph_type" value="attached"/> + </section> + <section name="advanced"> + <param name="verbose" value="false"/> + </section> + <output_collection name="graph_gml" count="2"> + <element name="output00000000_attached.gml"> + <assert_contents> + <has_text text="graph ["/> + <has_text text="node ["/> + <has_text text="]"/> + </assert_contents> + </element> + <element name="output00000001_attached.gml"> + <assert_contents> + <has_text text="graph ["/> + <has_text text="node ["/> + <has_text text="]"/> + </assert_contents> + </element> + </output_collection> + </test> + <test expect_num_outputs="1"> + <section name="essential"> + <param name="path"> + <expand macro="output"/> + </param> + <param name="graph_type" value="neighbor"/> + </section> + <section name="advanced"> + <param name="verbose" value="false"/> + </section> + <output_collection name="graph_gml" count="2"> + <element name="output00000000_neighbor.gml"> + <assert_contents> + <has_text text="graph ["/> + <has_text text="node ["/> + <has_text text="]"/> + </assert_contents> + </element> + <element name="output00000001_neighbor.gml"> + <assert_contents> + <has_text text="graph ["/> + <has_text text="node ["/> + <has_text text="]"/> + </assert_contents> + </element> + </output_collection> + </test> + <test expect_num_outputs="1"> + <section name="essential"> + <param name="path"> + <expand macro="output"/> + </param> + <param name="graph_type" value="spring"/> + </section> + <section name="advanced"> + <param name="verbose" value="false"/> + </section> + <output_collection name="graph_gml" count="2"> + <element name="output00000000_spring.gml"> + <assert_contents> + <has_text text="graph ["/> + <has_text text="node ["/> + <has_text text="]"/> + </assert_contents> + </element> + <element name="output00000001_spring.gml"> + <assert_contents> + <has_text text="graph ["/> + <has_text text="node ["/> + <has_text text="]"/> + </assert_contents> + </element> + </output_collection> + </test> + </tests> + <help><![CDATA[ +Function to generate graph files in the gml graph modelling language standard format. Gml was the outcome of an initiative that started at the international symposium on graph drawing 1995 in Passau and ended at Graph Drawing 1996 in Berkeley. The networkx python library (https://networkx.org/) and igraph C and python libraries (https://igraph.org/) for graph analysis are gml compatible and can as such read and write this file format. + +Homepage: https://github.com/elmbeech/physicelldataloader + ]]></help> + <citations> + <expand macro="citation"/> + </citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/PhysiCell_settings.xml Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,405 @@ +<PhysiCell_settings version="devel-version"> + + <domain> + <x_min>-30</x_min> + <x_max>300</x_max> + <y_min>-20</y_min> + <y_max>200</y_max> + <z_min>-10</z_min> + <z_max>100</z_max> + <dx>30</dx> + <dy>20</dy> + <dz>10</dz> + <use_2D>false</use_2D> + </domain> + + <overall> + <max_time units="min">1440.0</max_time> + <time_units>min</time_units> + <space_units>micron</space_units> + <dt_diffusion units="min">0.01</dt_diffusion> + <dt_mechanics units="min">0.1</dt_mechanics> + <dt_phenotype units="min">6</dt_phenotype> + </overall> + + <parallel> + <omp_num_threads>1</omp_num_threads> + </parallel> + + <save> + <folder>output</folder> + <full_data> + <interval units="min">60</interval> + <enable>true</enable> + </full_data> + <SVG> + <interval units="min">60</interval> + <enable>false</enable> + <plot_substrate enabled="false" limits="false"> + <substrate>water</substrate> + <colormap>YlOrRd</colormap> + <min_conc>0</min_conc> + <max_conc>1</max_conc> + </plot_substrate> + </SVG> + <legacy_data> + <enable>false</enable> + </legacy_data> + </save> + + <options> + <legacy_random_points_on_sphere_in_divide>false</legacy_random_points_on_sphere_in_divide> + <virtual_wall_at_domain_edge>true</virtual_wall_at_domain_edge> + <disable_automated_spring_adhesions>false</disable_automated_spring_adhesions> + <random_seed>0</random_seed> + </options> + + <microenvironment_setup> + <variable name="oxygen" units="dimensionless" ID="0"> + <physical_parameter_set> + <diffusion_coefficient units="micron^2/min">1e3</diffusion_coefficient> + <decay_rate units="1/min">1</decay_rate> + </physical_parameter_set> + <initial_condition units="dimensionless">1e3</initial_condition> + <Dirichlet_boundary_condition units="dimensionless" enabled="False">0.0</Dirichlet_boundary_condition> + <Dirichlet_options> + <boundary_value ID="xmin" enabled="False" /> + <boundary_value ID="xmax" enabled="False" /> + <boundary_value ID="ymin" enabled="False" /> + <boundary_value ID="ymax" enabled="False" /> + <boundary_value ID="zmin" enabled="False" /> + <boundary_value ID="zmax" enabled="False" /> + </Dirichlet_options> + </variable> + <variable name="water" units="dimensionless" ID="1"> + <physical_parameter_set> + <diffusion_coefficient units="micron^2/min">1e6</diffusion_coefficient> + <decay_rate units="1/min">0.001</decay_rate> + </physical_parameter_set> + <initial_condition units="dimensionless">1e3</initial_condition> + <Dirichlet_boundary_condition units="dimensionless" enabled="True">1e3</Dirichlet_boundary_condition> + <Dirichlet_options> + <boundary_value ID="xmin" enabled="True">1e3</boundary_value> + <boundary_value ID="xmax" enabled="True">1e3</boundary_value> + <boundary_value ID="ymin" enabled="True">1e3</boundary_value> + <boundary_value ID="ymax" enabled="True">1e3</boundary_value> + <boundary_value ID="zmin" enabled="True">1e3</boundary_value> + <boundary_value ID="zmax" enabled="True">1e3</boundary_value> + </Dirichlet_options> + </variable> + <options> + <calculate_gradients>true</calculate_gradients> + <track_internalized_substrates_in_each_agent>true</track_internalized_substrates_in_each_agent> + <initial_condition type="matlab" enabled="false"> + <filename>./config/initial.mat</filename> + </initial_condition> + <dirichlet_nodes type="matlab" enabled="false"> + <filename>./config/dirichlet.mat</filename> + </dirichlet_nodes> + </options> + </microenvironment_setup> + + <cell_definitions> + <cell_definition name="default" ID="0"> + <phenotype> + <cycle code="6" name="Flow cytometry model (separated)"> + <phase_transition_rates units="1/min"> + <rate start_index="0" end_index="1" fixed_duration="false">0.003333</rate> + <rate start_index="1" end_index="2" fixed_duration="true">0.002083</rate> + <rate start_index="2" end_index="3" fixed_duration="true">0.004167</rate> + <rate start_index="3" end_index="0" fixed_duration="true">0.016667</rate> + </phase_transition_rates> + </cycle> + <death> + <model code="100" name="apoptosis"> + <death_rate units="1/min">5.31667e-05</death_rate> + <phase_durations units="min"> + <duration index="0" fixed_duration="true">516</duration> + </phase_durations> + <parameters> + <unlysed_fluid_change_rate units="1/min">0.05</unlysed_fluid_change_rate> + <lysed_fluid_change_rate units="1/min">0</lysed_fluid_change_rate> + <cytoplasmic_biomass_change_rate units="1/min">1.66667e-02</cytoplasmic_biomass_change_rate> + <nuclear_biomass_change_rate units="1/min">5.83333e-03</nuclear_biomass_change_rate> + <calcification_rate units="1/min">0</calcification_rate> + <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> + </parameters> + </model> + <model code="101" name="necrosis"> + <death_rate units="1/min">0.0</death_rate> + <phase_durations units="min"> + <duration index="0" fixed_duration="true">0</duration> + <duration index="1" fixed_duration="true">86400</duration> + </phase_durations> + <parameters> + <unlysed_fluid_change_rate units="1/min">1.11667e-2</unlysed_fluid_change_rate> + <lysed_fluid_change_rate units="1/min">8.33333e-4</lysed_fluid_change_rate> + <cytoplasmic_biomass_change_rate units="1/min">5.33333e-5</cytoplasmic_biomass_change_rate> + <nuclear_biomass_change_rate units="1/min">2.16667e-3</nuclear_biomass_change_rate> + <calcification_rate units="1/min">0</calcification_rate> + <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> + </parameters> + </model> + </death> + <volume> + <total units="micron^3">2494</total> + <fluid_fraction units="dimensionless">0.75</fluid_fraction> + <nuclear units="micron^3">540</nuclear> + <fluid_change_rate units="1/min">0.05</fluid_change_rate> + <cytoplasmic_biomass_change_rate units="1/min">0.0045</cytoplasmic_biomass_change_rate> + <nuclear_biomass_change_rate units="1/min">0.0055</nuclear_biomass_change_rate> + <calcified_fraction units="dimensionless">0</calcified_fraction> + <calcification_rate units="1/min">0</calcification_rate> + <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> + </volume> + <mechanics> + <cell_cell_adhesion_strength units="micron/min">0.4</cell_cell_adhesion_strength> + <cell_cell_repulsion_strength units="micron/min">10.0</cell_cell_repulsion_strength> + <relative_maximum_adhesion_distance units="dimensionless">1.25</relative_maximum_adhesion_distance> + <cell_adhesion_affinities> + <cell_adhesion_affinity name="blood_cells">1.0</cell_adhesion_affinity> + <cell_adhesion_affinity name="default">1</cell_adhesion_affinity> + </cell_adhesion_affinities> + <options> + <set_relative_equilibrium_distance enabled="false" units="dimensionless">1.8</set_relative_equilibrium_distance> + <set_absolute_equilibrium_distance enabled="false" units="micron">15.12</set_absolute_equilibrium_distance> + </options> + <attachment_elastic_constant units="1/min">0.01</attachment_elastic_constant> + <attachment_rate units="1/min">0.05</attachment_rate> + <detachment_rate units="1/min">0.03</detachment_rate> + <maximum_number_of_attachments>12</maximum_number_of_attachments> + </mechanics> + <motility> + <speed units="micron/min">1</speed> + <persistence_time units="min">1</persistence_time> + <migration_bias units="dimensionless">.2</migration_bias> + <options> + <enabled>true</enabled> + <use_2D>true</use_2D> + <chemotaxis> + <enabled>true</enabled> + <substrate>oxygen</substrate> + <direction>1</direction> + </chemotaxis> + <advanced_chemotaxis> + <enabled>false</enabled> + <normalize_each_gradient>false</normalize_each_gradient> + <chemotactic_sensitivities> + <chemotactic_sensitivity substrate="oxygen">0.0</chemotactic_sensitivity> + <chemotactic_sensitivity substrate="water">0.0</chemotactic_sensitivity> + </chemotactic_sensitivities> + </advanced_chemotaxis> + </options> + </motility> + <secretion> + <substrate name="oxygen"> + <secretion_rate units="1/min">0</secretion_rate> + <secretion_target units="substrate density">0</secretion_target> + <uptake_rate units="1/min">10</uptake_rate> + <net_export_rate units="total substrate/min">0.0</net_export_rate> + </substrate> + <substrate name="water"> + <secretion_rate units="1/min">5</secretion_rate> + <secretion_target units="substrate density">15</secretion_target> + <uptake_rate units="1/min">0</uptake_rate> + <net_export_rate units="total substrate/min">0</net_export_rate> + </substrate> + </secretion> + <cell_interactions> + <apoptotic_phagocytosis_rate units="1/min">0.0</apoptotic_phagocytosis_rate> + <necrotic_phagocytosis_rate units="1/min">0.0</necrotic_phagocytosis_rate> + <other_dead_phagocytosis_rate units="1/min">0.0</other_dead_phagocytosis_rate> + <live_phagocytosis_rates> + <phagocytosis_rate name="blood_cells" units="1/min">0.001</phagocytosis_rate> + <phagocytosis_rate name="default" units="1/min">0.0</phagocytosis_rate> + </live_phagocytosis_rates> + <attack_rates> + <attack_rate name="blood_cells" units="1/min">0.0025</attack_rate> + <attack_rate name="default" units="1/min">0.0</attack_rate> + </attack_rates> + <attack_damage_rate units="1/min">1.0</attack_damage_rate> + <attack_duration units="min">0.1</attack_duration> + <fusion_rates> + <fusion_rate name="blood_cells" units="1/min">0.0</fusion_rate> + <fusion_rate name="default" units="1/min">0.005</fusion_rate> + </fusion_rates> + </cell_interactions> + <cell_transformations> + <transformation_rates> + <transformation_rate name="blood_cells" units="1/min">0.0</transformation_rate> + <transformation_rate name="default" units="1/min">0.0</transformation_rate> + </transformation_rates> + </cell_transformations> + <cell_integrity> + <damage_rate units="1/min">0.0</damage_rate> + <damage_repair_rate units="1/min">0.0</damage_repair_rate> + </cell_integrity> + </phenotype> + <custom_data> + <sample conserved="false" units="dimensionless" description="">1.0</sample> + </custom_data> + <initial_parameter_distributions enabled="false"> + </initial_parameter_distributions> + </cell_definition> + <cell_definition name="blood_cells" ID="1"> + <phenotype> + <cycle code="5" name="live"> + <phase_durations units="min"> + <duration index="0" fixed_duration="false">1388.888889</duration> + </phase_durations> + </cycle> + <death> + <model code="100" name="apoptosis"> + <death_rate units="1/min">5.31667e-05</death_rate> + <phase_transition_rates units="1/min"> + <rate start_index="0" end_index="1" fixed_duration="false">0.001938</rate> + </phase_transition_rates> + <parameters> + <unlysed_fluid_change_rate units="1/min">0.05</unlysed_fluid_change_rate> + <lysed_fluid_change_rate units="1/min">0</lysed_fluid_change_rate> + <cytoplasmic_biomass_change_rate units="1/min">1.66667e-02</cytoplasmic_biomass_change_rate> + <nuclear_biomass_change_rate units="1/min">5.83333e-03</nuclear_biomass_change_rate> + <calcification_rate units="1/min">0</calcification_rate> + <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> + </parameters> + </model> + <model code="101" name="necrosis"> + <death_rate units="1/min">0.0</death_rate> + <phase_transition_rates units="1/min"> + <rate start_index="0" end_index="1" fixed_duration="false">9000000000.0</rate> + <rate start_index="1" end_index="2" fixed_duration="true">1.15741e-05</rate> + </phase_transition_rates> + <parameters> + <unlysed_fluid_change_rate units="1/min">1.11667e-02</unlysed_fluid_change_rate> + <lysed_fluid_change_rate units="1/min">8.33333e-4</lysed_fluid_change_rate> + <cytoplasmic_biomass_change_rate units="1/min">5.33333e-05</cytoplasmic_biomass_change_rate> + <nuclear_biomass_change_rate units="1/min">2.16667e-4</nuclear_biomass_change_rate> + <calcification_rate units="1/min">7e-05</calcification_rate> + <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> + </parameters> + </model> + </death> + <volume> + <total units="micron^3">2494</total> + <fluid_fraction units="dimensionless">0.75</fluid_fraction> + <nuclear units="micron^3">540</nuclear> + <fluid_change_rate units="1/min">0.05</fluid_change_rate> + <cytoplasmic_biomass_change_rate units="1/min">0.0045</cytoplasmic_biomass_change_rate> + <nuclear_biomass_change_rate units="1/min">0.0055</nuclear_biomass_change_rate> + <calcified_fraction units="dimensionless">0.0</calcified_fraction> + <calcification_rate units="1/min">0.0</calcification_rate> + <relative_rupture_volume units="dimensionless">2</relative_rupture_volume> + </volume> + <mechanics> + <cell_cell_adhesion_strength units="micron/min">0.4</cell_cell_adhesion_strength> + <cell_cell_repulsion_strength units="micron/min">10.0</cell_cell_repulsion_strength> + <relative_maximum_adhesion_distance units="dimensionless">1.25</relative_maximum_adhesion_distance> + <cell_adhesion_affinities> + <cell_adhesion_affinity name="blood_cells">1.0</cell_adhesion_affinity> + <cell_adhesion_affinity name="default">1.0</cell_adhesion_affinity> + </cell_adhesion_affinities> + <options> + <set_relative_equilibrium_distance enabled="false" units="dimensionless">1.8</set_relative_equilibrium_distance> + <set_absolute_equilibrium_distance enabled="false" units="micron">15.12</set_absolute_equilibrium_distance> + </options> + <attachment_elastic_constant units="1/min">0.01</attachment_elastic_constant> + <attachment_rate units="1/min">0.0</attachment_rate> + <detachment_rate units="1/min">0.0</detachment_rate> + <maximum_number_of_attachments>12</maximum_number_of_attachments> + </mechanics> + <motility> + <speed units="micron/min">2.5</speed> + <persistence_time units="min">1.0</persistence_time> + <migration_bias units="dimensionless">.5</migration_bias> + <options> + <enabled>true</enabled> + <use_2D>true</use_2D> + <chemotaxis> + <enabled>true</enabled> + <substrate>water</substrate> + <direction>1</direction> + </chemotaxis> + <advanced_chemotaxis> + <enabled>false</enabled> + <normalize_each_gradient>false</normalize_each_gradient> + <chemotactic_sensitivities> + <chemotactic_sensitivity substrate="oxygen">0.0</chemotactic_sensitivity> + <chemotactic_sensitivity substrate="water">0.0</chemotactic_sensitivity> + </chemotactic_sensitivities> + </advanced_chemotaxis> + </options> + </motility> + <secretion> + <substrate name="oxygen"> + <secretion_rate units="1/min">1000</secretion_rate> + <secretion_target units="substrate density">50000</secretion_target> + <uptake_rate units="1/min">0</uptake_rate> + <net_export_rate units="total substrate/min">0.0</net_export_rate> + </substrate> + <substrate name="water"> + <secretion_rate units="1/min">0</secretion_rate> + <secretion_target units="substrate density">1.0</secretion_target> + <uptake_rate units="1/min">10</uptake_rate> + <net_export_rate units="total substrate/min">0.0</net_export_rate> + </substrate> + </secretion> + <cell_interactions> + <apoptotic_phagocytosis_rate units="1/min">0.0</apoptotic_phagocytosis_rate> + <necrotic_phagocytosis_rate units="1/min">0.0</necrotic_phagocytosis_rate> + <other_dead_phagocytosis_rate units="1/min">0.0</other_dead_phagocytosis_rate> + <live_phagocytosis_rates> + <phagocytosis_rate name="blood_cells" units="1/min">0.0</phagocytosis_rate> + <phagocytosis_rate name="default" units="1/min">0.0005</phagocytosis_rate> + </live_phagocytosis_rates> + <attack_rates> + <attack_rate name="blood_cells" units="1/min">0</attack_rate> + <attack_rate name="default" units="1/min">0.006</attack_rate> + </attack_rates> + <attack_damage_rate units="1/min">1.0</attack_damage_rate> + <attack_duration units="min">0.1</attack_duration> + <fusion_rates> + <fusion_rate name="blood_cells" units="1/min">0.0</fusion_rate> + <fusion_rate name="default" units="1/min">0.0</fusion_rate> + </fusion_rates> + </cell_interactions> + <cell_transformations> + <transformation_rates> + <transformation_rate name="blood_cells" units="1/min">0.0</transformation_rate> + <transformation_rate name="default" units="1/min">0.0</transformation_rate> + </transformation_rates> + </cell_transformations> + <cell_integrity> + <damage_rate units="1/min">0.0</damage_rate> + <damage_repair_rate units="1/min">0.0</damage_repair_rate> + </cell_integrity> + </phenotype> + <custom_data> + <sample conserved="false" units="dimensionless" description="">0.0</sample> + </custom_data> + <initial_parameter_distributions enabled="false"> + </initial_parameter_distributions> + </cell_definition> + </cell_definitions> + + <initial_conditions> + <cell_positions type="csv" enabled="false"> + <folder>./config</folder> + <filename>cells.csv</filename> + </cell_positions> + </initial_conditions> + + <cell_rules> + <rulesets> + <ruleset protocol="CBHG" version="3.0" format="csv" enabled="false"> + <folder>./config</folder> + <filename>cell_rules.csv</filename> + </ruleset> + </rulesets> + <settings /> + </cell_rules> + + <user_parameters> + <random_seed type="int" units="dimensionless" description="">0</random_seed> + <number_of_cells type="int" units="none" description="initial number of cells (for each cell type)">64</number_of_cells> + </user_parameters> +</PhysiCell_settings>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/final.svg Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with PhysiCell (http://PhysiCell.MathCancer.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="330" + height="235.4" + id="svg2"> + <rect x="0" y="0" width="330" height="235.4" stroke-width="0.44" stroke="white" fill="white"/> + <text x="2.75" y="6.6" + font-family="Arial" font-size="5.5" fill="black" > + Current time: 1 days, 0 hours, and 0.01 minutes, z = 0.00 μm + </text> + <text x="2.75" y="12.65" + font-family="Arial" font-size="5.225" fill="black" > + 153 agents + </text> + <g id="tissue" + transform="translate(0,235.4) scale(1,-1)"> + <g id="ECM"> + </g> + <g id="cells"> + <g id="cell221" type="blood_cells" dead="false" > + <circle cx="11.6773" cy="40.0676" r="7.56839" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="11.6773" cy="40.0676" r="4.59401" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell211" type="blood_cells" dead="false" > + <circle cx="246.546" cy="23.6682" r="7.73991" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="246.546" cy="23.6682" r="4.32432" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell217" type="blood_cells" dead="false" > + <circle cx="32.4856" cy="22.041" r="7.588" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="32.4856" cy="22.041" r="4.32853" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell181" type="blood_cells" dead="false" > + <circle cx="298.995" cy="154.977" r="8.20756" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="298.995" cy="154.977" r="4.91146" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell116" type="blood_cells" dead="false" > + <circle cx="55.4011" cy="52.7132" r="8.3834" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="55.4011" cy="52.7132" r="5.01959" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell186" type="blood_cells" dead="false" > + <circle cx="276.325" cy="20.5077" r="7.55579" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="276.325" cy="20.5077" r="3.81607" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell121" type="blood_cells" dead="false" > + <circle cx="171.568" cy="25.0672" r="8.32907" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="171.568" cy="25.0672" r="4.96197" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell61" type="default" dead="false" > + <circle cx="98.0084" cy="68.538" r="9.5346" stroke-width="0.5" stroke="black" fill="grey"/> + <circle cx="98.0084" cy="68.538" r="5.79063" stroke-width="0.5" stroke="grey" fill="grey"/> + </g> + <g id="cell227" type="default" dead="false" > + <circle cx="252.012" cy="118.395" r="16.4982" stroke-width="0.5" stroke="black" fill="grey"/> + <circle cx="252.012" cy="118.395" r="6.01826" stroke-width="0.5" stroke="grey" fill="grey"/> + </g> + <g id="cell114" type="blood_cells" dead="false" > + <circle cx="60.1648" cy="190.79" r="11.7838" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="60.1648" cy="190.79" r="5.27501" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell76" type="blood_cells" dead="false" > + <circle cx="36.3672" cy="103.597" r="8.41242" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="36.3672" cy="103.597" r="5.05119" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell78" type="blood_cells" dead="false" > + <circle cx="32.7971" cy="133.644" r="8.38582" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="32.7971" cy="133.644" r="5.03282" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell81" type="blood_cells" dead="false" > + <circle cx="114.284" cy="28.2712" r="6.33528" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="114.284" cy="28.2712" r="3.64177" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell82" type="blood_cells" dead="false" > + <circle cx="91.1458" cy="162.9" r="7.80952" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="91.1458" cy="162.9" r="4.60238" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell92" type="blood_cells" dead="false" > + <circle cx="242.122" cy="186.211" r="8.22893" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="242.122" cy="186.211" r="4.73931" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell149" type="blood_cells" dead="false" > + <circle cx="297.842" cy="107.582" r="8.29668" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="297.842" cy="107.582" r="4.88818" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell146" type="blood_cells" dead="false" > + <circle cx="167.537" cy="123.751" r="8.3816" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="167.537" cy="123.751" r="5.02782" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell166" type="blood_cells" dead="false" > + <circle cx="127.977" cy="54.0253" r="8.2632" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="127.977" cy="54.0253" r="4.90888" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell167" type="blood_cells" dead="false" > + <circle cx="288.107" cy="197.185" r="7.41716" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="288.107" cy="197.185" r="4.51857" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell175" type="default" dead="false" > + <circle cx="279.985" cy="85.2776" r="12.5052" stroke-width="0.5" stroke="black" fill="grey"/> + <circle cx="279.985" cy="85.2776" r="7.09876" stroke-width="0.5" stroke="grey" fill="grey"/> + </g> + <g id="cell194" type="default" dead="false" > + <circle cx="49.4206" cy="148.405" r="10.0222" stroke-width="0.5" stroke="black" fill="grey"/> + </g> + <g id="cell199" type="blood_cells" dead="false" > + <circle cx="77.3926" cy="41.0929" r="7.97396" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="77.3926" cy="41.0929" r="4.80584" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell201" type="default" dead="false" > + <circle cx="181.596" cy="185.073" r="12.4176" stroke-width="0.5" stroke="black" fill="grey"/> + <circle cx="181.596" cy="185.073" r="7.03455" stroke-width="0.5" stroke="grey" fill="grey"/> + </g> + <g id="cell212" type="blood_cells" dead="false" > + <circle cx="15.0027" cy="184.561" r="7.55186" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="15.0027" cy="184.561" r="4.15016" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell209" type="default" dead="false" > + <circle cx="148.078" cy="30.1195" r="19.3662" stroke-width="0.5" stroke="black" fill="grey"/> + <circle cx="148.078" cy="30.1195" r="7.40524" stroke-width="0.5" stroke="grey" fill="grey"/> + </g> + <g id="cell224" type="blood_cells" dead="false" > + <circle cx="34.9009" cy="163.503" r="6.03498" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="34.9009" cy="163.503" r="3.70414" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell233" type="blood_cells" dead="false" > + <circle cx="66.7854" cy="12.0238" r="5.48717" stroke-width="0.5" stroke="black" fill="red"/> + </g> + <g id="cell249" type="blood_cells" dead="false" > + <circle cx="32.8655" cy="148.559" r="6.03275" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="32.8655" cy="148.559" r="3.7005" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell251" type="blood_cells" dead="false" > + <circle cx="129.5" cy="38.4617" r="3.68004" stroke-width="0.5" stroke="black" fill="red"/> + </g> + </g> + </g> + <rect x="124.5" y="227.7" width="200" height="2.2" stroke-width="0.44" stroke="rgb(255,255,255)" fill="rgb(0,0,0)"/> + <text x="125.875" y="226.325" + font-family="Arial" font-size="5.5" fill="black" > + 200 μm + </text> + <text x="5.5" y="229.9" + font-family="Arial" font-size="4.125" fill="black" > + 0 days, 0 hours, 0 minutes, and 10.5490 seconds + </text> + <rect x="0" y="15.4" width="330" height="220" stroke-width="0.44" stroke="rgb(0,0,0)" fill="none"/> + <rect x="355" y="15.4" width="25" height="195" stroke-width="0.44" stroke="black" fill="none"/> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/final.xml Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,168 @@ +<?xml version="1.0"?> +<MultiCellDS version="2" type="snapshot/simulation"> + <metadata> + <software> + <name>PhysiCell</name> + <version>1.14.1</version> + <URL>http://physicell.org</URL> + <creator> + <orcid-identifier> + <path>0000-0002-9925-0151</path> + <given-names>Paul</given-names> + <family-name>Macklin</family-name> + <email>macklinp@iu.edu</email> + <url>http://MathCancer.org</url> + <organization-name>Indiana University & PhysiCell Project</organization-name> + <department-name>Intelligent Systems Engineering</department-name> + </orcid-identifier> + </creator> + <citation> + <text>A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin. PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellular Systems, PLoS Comput. Biol. 14(2): e1005991, 2018. DOI: 10.1371/journal.pcbi.1005991</text> + <DOI>10.1371/journal.pcbi.1005991</DOI> + <URL>https://dx.doi.org/PMC5841829</URL> + <PMID>29474446</PMID> + <PMCID>PMC5841829</PMCID> + </citation> + <user /> + </software> + <citation /> + <current_time units="min">1440.010000</current_time> + <current_runtime units="sec">10.548248</current_runtime> + <created>2025-01-05T08:14:42Z</created> + <last_modified>2025-01-05T08:14:42Z</last_modified> + </metadata> + <microenvironment> + <domain name="microenvironment"> + <mesh type="Cartesian" uniform="false" regular="true" units="micron"> + <bounding_box type="axis-aligned" units="micron">-30.000000 -20.000000 -10.000000 300.000000 200.000000 100.000000</bounding_box> + <x_coordinates delimiter=" ">-15 15 45 75 105 135 165 195 225 255 285</x_coordinates> + <y_coordinates delimiter=" ">-10 10 30 50 70 90 110 130 150 170 190</y_coordinates> + <z_coordinates delimiter=" ">-5 5 15 25 35 45 55 65 75 85 95</z_coordinates> + <voxels type="matlab"> + <filename>initial_mesh0.mat</filename> + </voxels> + </mesh> + <variables> + <variable name="oxygen" units="dimensionless" ID="0"> + <physical_parameter_set> + <conditions /> + <diffusion_coefficient units="micron^2/min">1000.000000</diffusion_coefficient> + <decay_rate units="1/min">1.000000</decay_rate> + </physical_parameter_set> + </variable> + <variable name="water" units="dimensionless" ID="1"> + <physical_parameter_set> + <conditions /> + <diffusion_coefficient units="micron^2/min">1000000.000000</diffusion_coefficient> + <decay_rate units="1/min">0.001000</decay_rate> + </physical_parameter_set> + </variable> + </variables> + <data type="matlab"> + <filename>final_microenvironment0.mat</filename> + </data> + </domain> + </microenvironment> + <cellular_information> + <cell_populations> + <cell_population type="individual"> + <custom> + <simplified_data type="matlab" source="PhysiCell" data_version="2"> + <cell_types> + <type ID="0" type="0">default</type> + <type ID="1" type="1">blood_cells</type> + </cell_types> + <labels> + <label index="0" size="1" units="none">ID</label> + <label index="1" size="3" units="microns">position</label> + <label index="4" size="1" units="cubic microns">total_volume</label> + <label index="5" size="1" units="none">cell_type</label> + <label index="6" size="1" units="none">cycle_model</label> + <label index="7" size="1" units="none">current_phase</label> + <label index="8" size="1" units="min">elapsed_time_in_phase</label> + <label index="9" size="1" units="cubic microns">nuclear_volume</label> + <label index="10" size="1" units="cubic microns">cytoplasmic_volume</label> + <label index="11" size="1" units="none">fluid_fraction</label> + <label index="12" size="1" units="none">calcified_fraction</label> + <label index="13" size="3" units="none">orientation</label> + <label index="16" size="1" units="none">polarity</label> + <label index="17" size="3" units="micron/min">velocity</label> + <label index="20" size="1" units="none">pressure</label> + <label index="21" size="1" units="none">number_of_nuclei</label> + <label index="22" size="1" units="min">total_attack_time</label> + <label index="23" size="1" units="none">contact_with_basement_membrane</label> + <label index="24" size="1" units="1/min">current_cycle_phase_exit_rate</label> + <label index="25" size="1" units="min">elapsed_time_in_phase</label> + <label index="26" size="1" units="none">dead</label> + <label index="27" size="1" units="none">current_death_model</label> + <label index="28" size="2" units="1/min">death_rates</label> + <label index="30" size="1" units="1/min">cytoplasmic_biomass_change_rate</label> + <label index="31" size="1" units="1/min">nuclear_biomass_change_rate</label> + <label index="32" size="1" units="1/min">fluid_change_rate</label> + <label index="33" size="1" units="1/min">calcification_rate</label> + <label index="34" size="1" units="cubic microns">target_solid_cytoplasmic</label> + <label index="35" size="1" units="cubic microns">target_solid_nuclear</label> + <label index="36" size="1" units="none">target_fluid_fraction</label> + <label index="37" size="1" units="microns">radius</label> + <label index="38" size="1" units="microns">nuclear_radius</label> + <label index="39" size="1" units="square microns">surface_area</label> + <label index="40" size="1" units="micron/min">cell_cell_adhesion_strength</label> + <label index="41" size="1" units="micron/min">cell_BM_adhesion_strength</label> + <label index="42" size="1" units="micron/min">cell_cell_repulsion_strength</label> + <label index="43" size="1" units="micron/min">cell_BM_repulsion_strength</label> + <label index="44" size="2" units="none">cell_adhesion_affinities</label> + <label index="46" size="1" units="none">relative_maximum_adhesion_distance</label> + <label index="47" size="1" units="none">maximum_number_of_attachments</label> + <label index="48" size="1" units="1/min">attachment_elastic_constant</label> + <label index="49" size="1" units="1/min">attachment_rate</label> + <label index="50" size="1" units="1/min">detachment_rate</label> + <label index="51" size="1" units="none">is_motile</label> + <label index="52" size="1" units="min">persistence_time</label> + <label index="53" size="1" units="micron/min">migration_speed</label> + <label index="54" size="3" units="none">migration_bias_direction</label> + <label index="57" size="1" units="none">migration_bias</label> + <label index="58" size="3" units="micron/min">motility_vector</label> + <label index="61" size="1" units="none">chemotaxis_index</label> + <label index="62" size="1" units="none">chemotaxis_direction</label> + <label index="63" size="2" units="none">chemotactic_sensitivities</label> + <label index="65" size="2" units="1/min">secretion_rates</label> + <label index="67" size="2" units="1/min">uptake_rates</label> + <label index="69" size="2" units="stuff/cubic micron">saturation_densities</label> + <label index="71" size="2" units="stuff/min">net_export_rates</label> + <label index="73" size="2" units="stuff">internalized_total_substrates</label> + <label index="75" size="2" units="none">fraction_released_at_death</label> + <label index="77" size="2" units="none">fraction_transferred_when_ingested</label> + <label index="79" size="1" units="1/min">apoptotic_phagocytosis_rate</label> + <label index="80" size="1" units="1/min">necrotic_phagocytosis_rate</label> + <label index="81" size="1" units="1/min">other_dead_phagocytosis_rate</label> + <label index="82" size="2" units="1/min">live_phagocytosis_rates</label> + <label index="84" size="2" units="1/min">attack_rates</label> + <label index="86" size="2" units="none">immunogenicities</label> + <label index="88" size="1" units="none">attack_target</label> + <label index="89" size="1" units="1/min">attack_damage_rate</label> + <label index="90" size="1" units="min">attack_duration</label> + <label index="91" size="1" units="none">attack_total_damage_delivered</label> + <label index="92" size="2" units="1/min">fusion_rates</label> + <label index="94" size="2" units="1/min">transformation_rates</label> + <label index="96" size="2" units="none">asymmetric_division_probabilities</label> + <label index="98" size="1" units="none">damage</label> + <label index="99" size="1" units="1/min">damage_rate</label> + <label index="100" size="1" units="1/min">damage_repair_rate</label> + <label index="101" size="1" units="dimensionless">sample</label> + </labels> + <filename>final_cells.mat</filename> + </simplified_data> + <neighbor_graph type="text" source="PhysiCell" data_version="2"> + <filename>final_cell_neighbor_graph.txt</filename> + </neighbor_graph> + <attached_cells_graph type="text" source="PhysiCell" data_version="2"> + <filename>final_attached_cells_graph.txt</filename> + </attached_cells_graph> + <spring_attached_cells_graph type="text" source="PhysiCell" data_version="2"> + <filename>final_spring_attached_cells_graph.txt</filename> + </spring_attached_cells_graph> + </custom> + </cell_population> + </cell_populations> + </cellular_information> +</MultiCellDS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/final_attached_cells_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,153 @@ +210: +1: +221: +225: +211: +206: +108: +230: +164: +152: +213: +137: +143: +185: +159: +229: +242: +17: +102: +161: +217: +115: +135: +160: +239: +244: +106: +181: +120: +112: +188: +116: +125: +158: +136: +186: +139: +190: +124: +226: +132: +238: +142: +228: +148: +153: +145: +123: +48: +154: +131: +51: +215: +127: +216: +144: +130: +57: +214: +121: +180: +61: +163: +227: +64: +65: +138: +67: +134: +69: +70: +71: +72: +73: +114: +75: +76: +241: +78: +79: +150: +81: +82: +83: +84: +151: +119: +87: +88: +89: +90: +91: +92: +93: +94: +95: +96: +97: +98: +149: +146: +147: +156: +157: +165: +166: +167: +168: +169: +170: +171: +172: +173: +174: +175: +177: +182: +183: +184: +187: +218: +245: +194: +195: +197: +243: +199: +200: +201: +202: +212: +204: +205: +207: +208: +209: +219: +224: +231: +232: +233: +234: +235: +236: +237: +240: +246: +247: +248: +249: +250: +251: +252: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/final_cell_neighbor_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,153 @@ +210: +1: +221: +225: 195 +211: +206: 158,217 +108: 17 +230: 180,96,188 +164: 48 +152: +213: +137: 218,51 +143: 102 +185: +159: +229: 250,139 +242: 204 +17: 243,108 +102: 143 +161: 214,94 +217: 206 +115: 195,226 +135: +160: 97 +239: 124 +244: 170 +106: +181: 57 +120: 168,240 +112: +188: 230 +116: +125: 158,182 +158: 206,125 +136: 87 +186: 134 +139: 151,229 +190: +124: 239 +226: 115,90 +132: +238: +142: +228: 72 +148: +153: 95 +145: +123: 169 +48: 164 +154: +131: +51: 137,236,247 +215: +127: 207,157 +216: +144: 173 +130: +57: 181,98 +214: 161,94,202,165 +121: 209 +180: 230 +61: +163: +227: 150 +64: 252,194 +65: +138: 204 +67: +134: 186 +69: 209 +70: +71: +72: 228 +73: 183,96 +114: +75: +76: +241: +78: 249,194 +79: +150: 227 +81: 209 +82: +83: +84: 243 +151: 139 +119: +87: 136 +88: +89: +90: 226 +91: 165 +92: +93: +94: 161,235,214 +95: 153 +96: 230,73 +97: 160 +98: 183,57 +149: +146: +147: 170,171 +156: 197 +157: 248,127 +165: 91,214 +166: 251,209 +167: 184 +168: 120 +169: 123 +170: 147,244 +171: 147 +172: +173: 177,144 +174: +175: +177: 173 +182: 125 +183: 98,73 +184: 167 +187: +218: 137 +245: +194: 78,249,64,224 +195: 115,225 +197: 156 +243: 17,84 +199: +200: +201: +202: 214 +212: +204: 138,242 +205: +207: 127 +208: +209: 166,251,81,69,121 +219: +224: 249,194 +231: +232: +233: +234: +235: 94 +236: 51,247 +237: +240: 120 +246: +247: 236,51 +248: 157 +249: 78,194,224 +250: 229 +251: 166,209 +252: 64 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/final_spring_attached_cells_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,153 @@ +210: +1: +221: +225: +211: +206: +108: 17 +230: 96,160 +164: 48 +152: +213: +137: 51 +143: +185: +159: +229: +242: +17: 108,243 +102: +161: +217: +115: +135: +160: 230 +239: 184 +244: +106: +181: +120: +112: +188: +116: +125: +158: +136: +186: +139: +190: +124: +226: +132: +238: +142: +228: +148: +153: +145: +123: +48: 164 +154: +131: +51: 247,137 +215: +127: +216: +144: +130: +57: 98 +214: 165,94 +121: 209 +180: +61: +163: +227: 150 +64: +65: +138: +67: +134: +69: +70: +71: +72: +73: 183 +114: +75: +76: +241: +78: 194 +79: +150: 227 +81: 209 +82: +83: +84: +151: +119: +87: +88: +89: +90: +91: +92: +93: +94: 214 +95: +96: 230 +97: +98: 57 +149: +146: +147: +156: +157: +165: 214 +166: +167: 184 +168: +169: +170: +171: +172: +173: +174: +175: +177: +182: +183: 73 +184: 167,239 +187: +218: +245: +194: 78 +195: +197: +243: 17 +199: +200: +201: +202: +212: +204: +205: +207: +208: +209: 121,251,81 +219: +224: +231: +232: +233: +234: +235: +236: +237: +240: +246: +247: 51 +248: +249: +250: +251: 209 +252: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/initial.svg Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with PhysiCell (http://PhysiCell.MathCancer.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="330" + height="235.4" + id="svg2"> + <rect x="0" y="0" width="330" height="235.4" stroke-width="0.44" stroke="white" fill="white"/> + <text x="2.75" y="6.6" + font-family="Arial" font-size="5.5" fill="black" > + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + </text> + <text x="2.75" y="12.65" + font-family="Arial" font-size="5.225" fill="black" > + 128 agents + </text> + <g id="tissue" + transform="translate(0,235.4) scale(1,-1)"> + <g id="ECM"> + </g> + <g id="cells"> + <g id="cell0" type="default" dead="false" > + <circle cx="52.7318" cy="218.272" r="6.23542" stroke-width="0.5" stroke="black" fill="grey"/> + </g> + <g id="cell3" type="default" dead="false" > + <circle cx="191.157" cy="124.201" r="5.7871" stroke-width="0.5" stroke="black" fill="grey"/> + </g> + <g id="cell27" type="default" dead="false" > + <circle cx="224.485" cy="179.039" r="5.63702" stroke-width="0.5" stroke="black" fill="grey"/> + </g> + <g id="cell49" type="default" dead="false" > + <circle cx="25.3463" cy="143.367" r="1.01298" stroke-width="0.5" stroke="black" fill="grey"/> + </g> + <g id="cell57" type="default" dead="false" > + <circle cx="315.533" cy="148.077" r="5.98617" stroke-width="0.5" stroke="black" fill="grey"/> + </g> + <g id="cell60" type="default" dead="false" > + <circle cx="42.9673" cy="37.4551" r="4.43211" stroke-width="0.5" stroke="black" fill="grey"/> + </g> + <g id="cell64" type="blood_cells" dead="false" > + <circle cx="46.8638" cy="39.5511" r="8.40204" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="46.8638" cy="39.5511" r="5.03387" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell66" type="blood_cells" dead="false" > + <circle cx="139.057" cy="186.207" r="6.28998" stroke-width="0.5" stroke="black" fill="red"/> + </g> + <g id="cell72" type="blood_cells" dead="false" > + <circle cx="155.065" cy="24.5973" r="7.30388" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="155.065" cy="24.5973" r="2.84469" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell79" type="blood_cells" dead="false" > + <circle cx="39.9525" cy="78.6143" r="7.70317" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="39.9525" cy="78.6143" r="3.75293" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell97" type="blood_cells" dead="false" > + <circle cx="307.785" cy="150.396" r="8.26678" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="307.785" cy="150.396" r="4.80472" stroke-width="0.5" stroke="red" fill="red"/> + </g> + <g id="cell117" type="blood_cells" dead="false" > + <circle cx="30.9781" cy="131.92" r="7.92567" stroke-width="0.5" stroke="black" fill="red"/> + <circle cx="30.9781" cy="131.92" r="4.1907" stroke-width="0.5" stroke="red" fill="red"/> + </g> + </g> + </g> + <rect x="124.5" y="227.7" width="200" height="2.2" stroke-width="0.44" stroke="rgb(255,255,255)" fill="rgb(0,0,0)"/> + <text x="125.875" y="226.325" + font-family="Arial" font-size="5.5" fill="black" > + 200 μm + </text> + <text x="5.5" y="229.9" + font-family="Arial" font-size="4.125" fill="black" > + 0 days, 0 hours, 0 minutes, and 0.0095 seconds + </text> + <rect x="0" y="15.4" width="330" height="220" stroke-width="0.44" stroke="rgb(0,0,0)" fill="none"/> + <rect x="355" y="15.4" width="25" height="195" stroke-width="0.44" stroke="black" fill="none"/> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/initial.xml Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,168 @@ +<?xml version="1.0"?> +<MultiCellDS version="2" type="snapshot/simulation"> + <metadata> + <software> + <name>PhysiCell</name> + <version>1.14.1</version> + <URL>http://physicell.org</URL> + <creator> + <orcid-identifier> + <path>0000-0002-9925-0151</path> + <given-names>Paul</given-names> + <family-name>Macklin</family-name> + <email>macklinp@iu.edu</email> + <url>http://MathCancer.org</url> + <organization-name>Indiana University & PhysiCell Project</organization-name> + <department-name>Intelligent Systems Engineering</department-name> + </orcid-identifier> + </creator> + <citation> + <text>A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin. PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellular Systems, PLoS Comput. Biol. 14(2): e1005991, 2018. DOI: 10.1371/journal.pcbi.1005991</text> + <DOI>10.1371/journal.pcbi.1005991</DOI> + <URL>https://dx.doi.org/PMC5841829</URL> + <PMID>29474446</PMID> + <PMCID>PMC5841829</PMCID> + </citation> + <user /> + </software> + <citation /> + <current_time units="min">0.000000</current_time> + <current_runtime units="sec">0.008479</current_runtime> + <created>2025-01-05T08:14:32Z</created> + <last_modified>2025-01-05T08:14:32Z</last_modified> + </metadata> + <microenvironment> + <domain name="microenvironment"> + <mesh type="Cartesian" uniform="false" regular="true" units="micron"> + <bounding_box type="axis-aligned" units="micron">-30.000000 -20.000000 -10.000000 300.000000 200.000000 100.000000</bounding_box> + <x_coordinates delimiter=" ">-15 15 45 75 105 135 165 195 225 255 285</x_coordinates> + <y_coordinates delimiter=" ">-10 10 30 50 70 90 110 130 150 170 190</y_coordinates> + <z_coordinates delimiter=" ">-5 5 15 25 35 45 55 65 75 85 95</z_coordinates> + <voxels type="matlab"> + <filename>initial_mesh0.mat</filename> + </voxels> + </mesh> + <variables> + <variable name="oxygen" units="dimensionless" ID="0"> + <physical_parameter_set> + <conditions /> + <diffusion_coefficient units="micron^2/min">1000.000000</diffusion_coefficient> + <decay_rate units="1/min">1.000000</decay_rate> + </physical_parameter_set> + </variable> + <variable name="water" units="dimensionless" ID="1"> + <physical_parameter_set> + <conditions /> + <diffusion_coefficient units="micron^2/min">1000000.000000</diffusion_coefficient> + <decay_rate units="1/min">0.001000</decay_rate> + </physical_parameter_set> + </variable> + </variables> + <data type="matlab"> + <filename>initial_microenvironment0.mat</filename> + </data> + </domain> + </microenvironment> + <cellular_information> + <cell_populations> + <cell_population type="individual"> + <custom> + <simplified_data type="matlab" source="PhysiCell" data_version="2"> + <cell_types> + <type ID="0" type="0">default</type> + <type ID="1" type="1">blood_cells</type> + </cell_types> + <labels> + <label index="0" size="1" units="none">ID</label> + <label index="1" size="3" units="microns">position</label> + <label index="4" size="1" units="cubic microns">total_volume</label> + <label index="5" size="1" units="none">cell_type</label> + <label index="6" size="1" units="none">cycle_model</label> + <label index="7" size="1" units="none">current_phase</label> + <label index="8" size="1" units="min">elapsed_time_in_phase</label> + <label index="9" size="1" units="cubic microns">nuclear_volume</label> + <label index="10" size="1" units="cubic microns">cytoplasmic_volume</label> + <label index="11" size="1" units="none">fluid_fraction</label> + <label index="12" size="1" units="none">calcified_fraction</label> + <label index="13" size="3" units="none">orientation</label> + <label index="16" size="1" units="none">polarity</label> + <label index="17" size="3" units="micron/min">velocity</label> + <label index="20" size="1" units="none">pressure</label> + <label index="21" size="1" units="none">number_of_nuclei</label> + <label index="22" size="1" units="min">total_attack_time</label> + <label index="23" size="1" units="none">contact_with_basement_membrane</label> + <label index="24" size="1" units="1/min">current_cycle_phase_exit_rate</label> + <label index="25" size="1" units="min">elapsed_time_in_phase</label> + <label index="26" size="1" units="none">dead</label> + <label index="27" size="1" units="none">current_death_model</label> + <label index="28" size="2" units="1/min">death_rates</label> + <label index="30" size="1" units="1/min">cytoplasmic_biomass_change_rate</label> + <label index="31" size="1" units="1/min">nuclear_biomass_change_rate</label> + <label index="32" size="1" units="1/min">fluid_change_rate</label> + <label index="33" size="1" units="1/min">calcification_rate</label> + <label index="34" size="1" units="cubic microns">target_solid_cytoplasmic</label> + <label index="35" size="1" units="cubic microns">target_solid_nuclear</label> + <label index="36" size="1" units="none">target_fluid_fraction</label> + <label index="37" size="1" units="microns">radius</label> + <label index="38" size="1" units="microns">nuclear_radius</label> + <label index="39" size="1" units="square microns">surface_area</label> + <label index="40" size="1" units="micron/min">cell_cell_adhesion_strength</label> + <label index="41" size="1" units="micron/min">cell_BM_adhesion_strength</label> + <label index="42" size="1" units="micron/min">cell_cell_repulsion_strength</label> + <label index="43" size="1" units="micron/min">cell_BM_repulsion_strength</label> + <label index="44" size="2" units="none">cell_adhesion_affinities</label> + <label index="46" size="1" units="none">relative_maximum_adhesion_distance</label> + <label index="47" size="1" units="none">maximum_number_of_attachments</label> + <label index="48" size="1" units="1/min">attachment_elastic_constant</label> + <label index="49" size="1" units="1/min">attachment_rate</label> + <label index="50" size="1" units="1/min">detachment_rate</label> + <label index="51" size="1" units="none">is_motile</label> + <label index="52" size="1" units="min">persistence_time</label> + <label index="53" size="1" units="micron/min">migration_speed</label> + <label index="54" size="3" units="none">migration_bias_direction</label> + <label index="57" size="1" units="none">migration_bias</label> + <label index="58" size="3" units="micron/min">motility_vector</label> + <label index="61" size="1" units="none">chemotaxis_index</label> + <label index="62" size="1" units="none">chemotaxis_direction</label> + <label index="63" size="2" units="none">chemotactic_sensitivities</label> + <label index="65" size="2" units="1/min">secretion_rates</label> + <label index="67" size="2" units="1/min">uptake_rates</label> + <label index="69" size="2" units="stuff/cubic micron">saturation_densities</label> + <label index="71" size="2" units="stuff/min">net_export_rates</label> + <label index="73" size="2" units="stuff">internalized_total_substrates</label> + <label index="75" size="2" units="none">fraction_released_at_death</label> + <label index="77" size="2" units="none">fraction_transferred_when_ingested</label> + <label index="79" size="1" units="1/min">apoptotic_phagocytosis_rate</label> + <label index="80" size="1" units="1/min">necrotic_phagocytosis_rate</label> + <label index="81" size="1" units="1/min">other_dead_phagocytosis_rate</label> + <label index="82" size="2" units="1/min">live_phagocytosis_rates</label> + <label index="84" size="2" units="1/min">attack_rates</label> + <label index="86" size="2" units="none">immunogenicities</label> + <label index="88" size="1" units="none">attack_target</label> + <label index="89" size="1" units="1/min">attack_damage_rate</label> + <label index="90" size="1" units="min">attack_duration</label> + <label index="91" size="1" units="none">attack_total_damage_delivered</label> + <label index="92" size="2" units="1/min">fusion_rates</label> + <label index="94" size="2" units="1/min">transformation_rates</label> + <label index="96" size="2" units="none">asymmetric_division_probabilities</label> + <label index="98" size="1" units="none">damage</label> + <label index="99" size="1" units="1/min">damage_rate</label> + <label index="100" size="1" units="1/min">damage_repair_rate</label> + <label index="101" size="1" units="dimensionless">sample</label> + </labels> + <filename>initial_cells.mat</filename> + </simplified_data> + <neighbor_graph type="text" source="PhysiCell" data_version="2"> + <filename>initial_cell_neighbor_graph.txt</filename> + </neighbor_graph> + <attached_cells_graph type="text" source="PhysiCell" data_version="2"> + <filename>initial_attached_cells_graph.txt</filename> + </attached_cells_graph> + <spring_attached_cells_graph type="text" source="PhysiCell" data_version="2"> + <filename>initial_spring_attached_cells_graph.txt</filename> + </spring_attached_cells_graph> + </custom> + </cell_population> + </cell_populations> + </cellular_information> +</MultiCellDS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/initial_attached_cells_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,128 @@ +0: +1: +2: +3: +4: +5: +6: +7: +8: +9: +10: +11: +12: +13: +14: +15: +16: +17: +18: +19: +20: +21: +22: +23: +24: +25: +26: +27: +28: +29: +30: +31: +32: +33: +34: +35: +36: +37: +38: +39: +40: +41: +42: +43: +44: +45: +46: +47: +48: +49: +50: +51: +52: +53: +54: +55: +56: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: +91: +92: +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +104: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: +118: +119: +120: +121: +122: +123: +124: +125: +126: +127: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/initial_cell_neighbor_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,128 @@ +0: +1: +2: +3: +4: +5: +6: +7: +8: +9: +10: +11: +12: +13: +14: +15: +16: +17: +18: +19: +20: +21: +22: +23: +24: +25: +26: +27: +28: +29: +30: +31: +32: +33: +34: +35: +36: +37: +38: +39: +40: +41: +42: +43: +44: +45: +46: +47: +48: +49: +50: +51: +52: +53: +54: +55: +56: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: +91: +92: +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +104: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: +118: +119: +120: +121: +122: +123: +124: +125: +126: +127: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/initial_spring_attached_cells_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,128 @@ +0: +1: +2: +3: +4: +5: +6: +7: +8: +9: +10: +11: +12: +13: +14: +15: +16: +17: +18: +19: +20: +21: +22: +23: +24: +25: +26: +27: +28: +29: +30: +31: +32: +33: +34: +35: +36: +37: +38: +39: +40: +41: +42: +43: +44: +45: +46: +47: +48: +49: +50: +51: +52: +53: +54: +55: +56: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: +91: +92: +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +104: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: +118: +119: +120: +121: +122: +123: +124: +125: +126: +127: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/legend.svg Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with PhysiCell (http://PhysiCell.MathCancer.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="1440" + height="130" + id="svg2"> + <circle cx="32.5" cy="32.5" r="25" stroke-width="1" stroke="black" fill="grey"/> + <circle cx="32.5" cy="32.5" r="12.5" stroke-width="1" stroke="grey" fill="grey"/> + <text x="72.5" y="45.25" + font-family="Arial" font-size="42.5" fill="black" > + default + </text> + <circle cx="32.5" cy="97.5" r="25" stroke-width="1" stroke="black" fill="red"/> + <circle cx="32.5" cy="97.5" r="12.5" stroke-width="1" stroke="red" fill="red"/> + <text x="72.5" y="110.25" + font-family="Arial" font-size="42.5" fill="black" > + blood_cells + </text> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output00000000.xml Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,168 @@ +<?xml version="1.0"?> +<MultiCellDS version="2" type="snapshot/simulation"> + <metadata> + <software> + <name>PhysiCell</name> + <version>1.14.1</version> + <URL>http://physicell.org</URL> + <creator> + <orcid-identifier> + <path>0000-0002-9925-0151</path> + <given-names>Paul</given-names> + <family-name>Macklin</family-name> + <email>macklinp@iu.edu</email> + <url>http://MathCancer.org</url> + <organization-name>Indiana University & PhysiCell Project</organization-name> + <department-name>Intelligent Systems Engineering</department-name> + </orcid-identifier> + </creator> + <citation> + <text>A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin. PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellular Systems, PLoS Comput. Biol. 14(2): e1005991, 2018. DOI: 10.1371/journal.pcbi.1005991</text> + <DOI>10.1371/journal.pcbi.1005991</DOI> + <URL>https://dx.doi.org/PMC5841829</URL> + <PMID>29474446</PMID> + <PMCID>PMC5841829</PMCID> + </citation> + <user /> + </software> + <citation /> + <current_time units="min">0.000000</current_time> + <current_runtime units="sec">0.000030</current_runtime> + <created>2025-01-05T08:14:32Z</created> + <last_modified>2025-01-05T08:14:32Z</last_modified> + </metadata> + <microenvironment> + <domain name="microenvironment"> + <mesh type="Cartesian" uniform="false" regular="true" units="micron"> + <bounding_box type="axis-aligned" units="micron">-30.000000 -20.000000 -10.000000 300.000000 200.000000 100.000000</bounding_box> + <x_coordinates delimiter=" ">-15 15 45 75 105 135 165 195 225 255 285</x_coordinates> + <y_coordinates delimiter=" ">-10 10 30 50 70 90 110 130 150 170 190</y_coordinates> + <z_coordinates delimiter=" ">-5 5 15 25 35 45 55 65 75 85 95</z_coordinates> + <voxels type="matlab"> + <filename>initial_mesh0.mat</filename> + </voxels> + </mesh> + <variables> + <variable name="oxygen" units="dimensionless" ID="0"> + <physical_parameter_set> + <conditions /> + <diffusion_coefficient units="micron^2/min">1000.000000</diffusion_coefficient> + <decay_rate units="1/min">1.000000</decay_rate> + </physical_parameter_set> + </variable> + <variable name="water" units="dimensionless" ID="1"> + <physical_parameter_set> + <conditions /> + <diffusion_coefficient units="micron^2/min">1000000.000000</diffusion_coefficient> + <decay_rate units="1/min">0.001000</decay_rate> + </physical_parameter_set> + </variable> + </variables> + <data type="matlab"> + <filename>output00000000_microenvironment0.mat</filename> + </data> + </domain> + </microenvironment> + <cellular_information> + <cell_populations> + <cell_population type="individual"> + <custom> + <simplified_data type="matlab" source="PhysiCell" data_version="2"> + <cell_types> + <type ID="0" type="0">default</type> + <type ID="1" type="1">blood_cells</type> + </cell_types> + <labels> + <label index="0" size="1" units="none">ID</label> + <label index="1" size="3" units="microns">position</label> + <label index="4" size="1" units="cubic microns">total_volume</label> + <label index="5" size="1" units="none">cell_type</label> + <label index="6" size="1" units="none">cycle_model</label> + <label index="7" size="1" units="none">current_phase</label> + <label index="8" size="1" units="min">elapsed_time_in_phase</label> + <label index="9" size="1" units="cubic microns">nuclear_volume</label> + <label index="10" size="1" units="cubic microns">cytoplasmic_volume</label> + <label index="11" size="1" units="none">fluid_fraction</label> + <label index="12" size="1" units="none">calcified_fraction</label> + <label index="13" size="3" units="none">orientation</label> + <label index="16" size="1" units="none">polarity</label> + <label index="17" size="3" units="micron/min">velocity</label> + <label index="20" size="1" units="none">pressure</label> + <label index="21" size="1" units="none">number_of_nuclei</label> + <label index="22" size="1" units="min">total_attack_time</label> + <label index="23" size="1" units="none">contact_with_basement_membrane</label> + <label index="24" size="1" units="1/min">current_cycle_phase_exit_rate</label> + <label index="25" size="1" units="min">elapsed_time_in_phase</label> + <label index="26" size="1" units="none">dead</label> + <label index="27" size="1" units="none">current_death_model</label> + <label index="28" size="2" units="1/min">death_rates</label> + <label index="30" size="1" units="1/min">cytoplasmic_biomass_change_rate</label> + <label index="31" size="1" units="1/min">nuclear_biomass_change_rate</label> + <label index="32" size="1" units="1/min">fluid_change_rate</label> + <label index="33" size="1" units="1/min">calcification_rate</label> + <label index="34" size="1" units="cubic microns">target_solid_cytoplasmic</label> + <label index="35" size="1" units="cubic microns">target_solid_nuclear</label> + <label index="36" size="1" units="none">target_fluid_fraction</label> + <label index="37" size="1" units="microns">radius</label> + <label index="38" size="1" units="microns">nuclear_radius</label> + <label index="39" size="1" units="square microns">surface_area</label> + <label index="40" size="1" units="micron/min">cell_cell_adhesion_strength</label> + <label index="41" size="1" units="micron/min">cell_BM_adhesion_strength</label> + <label index="42" size="1" units="micron/min">cell_cell_repulsion_strength</label> + <label index="43" size="1" units="micron/min">cell_BM_repulsion_strength</label> + <label index="44" size="2" units="none">cell_adhesion_affinities</label> + <label index="46" size="1" units="none">relative_maximum_adhesion_distance</label> + <label index="47" size="1" units="none">maximum_number_of_attachments</label> + <label index="48" size="1" units="1/min">attachment_elastic_constant</label> + <label index="49" size="1" units="1/min">attachment_rate</label> + <label index="50" size="1" units="1/min">detachment_rate</label> + <label index="51" size="1" units="none">is_motile</label> + <label index="52" size="1" units="min">persistence_time</label> + <label index="53" size="1" units="micron/min">migration_speed</label> + <label index="54" size="3" units="none">migration_bias_direction</label> + <label index="57" size="1" units="none">migration_bias</label> + <label index="58" size="3" units="micron/min">motility_vector</label> + <label index="61" size="1" units="none">chemotaxis_index</label> + <label index="62" size="1" units="none">chemotaxis_direction</label> + <label index="63" size="2" units="none">chemotactic_sensitivities</label> + <label index="65" size="2" units="1/min">secretion_rates</label> + <label index="67" size="2" units="1/min">uptake_rates</label> + <label index="69" size="2" units="stuff/cubic micron">saturation_densities</label> + <label index="71" size="2" units="stuff/min">net_export_rates</label> + <label index="73" size="2" units="stuff">internalized_total_substrates</label> + <label index="75" size="2" units="none">fraction_released_at_death</label> + <label index="77" size="2" units="none">fraction_transferred_when_ingested</label> + <label index="79" size="1" units="1/min">apoptotic_phagocytosis_rate</label> + <label index="80" size="1" units="1/min">necrotic_phagocytosis_rate</label> + <label index="81" size="1" units="1/min">other_dead_phagocytosis_rate</label> + <label index="82" size="2" units="1/min">live_phagocytosis_rates</label> + <label index="84" size="2" units="1/min">attack_rates</label> + <label index="86" size="2" units="none">immunogenicities</label> + <label index="88" size="1" units="none">attack_target</label> + <label index="89" size="1" units="1/min">attack_damage_rate</label> + <label index="90" size="1" units="min">attack_duration</label> + <label index="91" size="1" units="none">attack_total_damage_delivered</label> + <label index="92" size="2" units="1/min">fusion_rates</label> + <label index="94" size="2" units="1/min">transformation_rates</label> + <label index="96" size="2" units="none">asymmetric_division_probabilities</label> + <label index="98" size="1" units="none">damage</label> + <label index="99" size="1" units="1/min">damage_rate</label> + <label index="100" size="1" units="1/min">damage_repair_rate</label> + <label index="101" size="1" units="dimensionless">sample</label> + </labels> + <filename>output00000000_cells.mat</filename> + </simplified_data> + <neighbor_graph type="text" source="PhysiCell" data_version="2"> + <filename>output00000000_cell_neighbor_graph.txt</filename> + </neighbor_graph> + <attached_cells_graph type="text" source="PhysiCell" data_version="2"> + <filename>output00000000_attached_cells_graph.txt</filename> + </attached_cells_graph> + <spring_attached_cells_graph type="text" source="PhysiCell" data_version="2"> + <filename>output00000000_spring_attached_cells_graph.txt</filename> + </spring_attached_cells_graph> + </custom> + </cell_population> + </cell_populations> + </cellular_information> +</MultiCellDS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output00000000_attached_cells_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,128 @@ +0: +1: +2: +3: +4: +5: +6: +7: +8: +9: +10: +11: +12: +13: +14: +15: +16: +17: +18: +19: +20: +21: +22: +23: +24: +25: +26: +27: +28: +29: +30: +31: +32: +33: +34: +35: +36: +37: +38: +39: +40: +41: +42: +43: +44: +45: +46: +47: +48: +49: +50: +51: +52: +53: +54: +55: +56: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: +91: +92: +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +104: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: +118: +119: +120: +121: +122: +123: +124: +125: +126: +127: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output00000000_cell_neighbor_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,128 @@ +0: +1: +2: +3: +4: +5: +6: +7: +8: +9: +10: +11: +12: +13: +14: +15: +16: +17: +18: +19: +20: +21: +22: +23: +24: +25: +26: +27: +28: +29: +30: +31: +32: +33: +34: +35: +36: +37: +38: +39: +40: +41: +42: +43: +44: +45: +46: +47: +48: +49: +50: +51: +52: +53: +54: +55: +56: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: +91: +92: +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +104: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: +118: +119: +120: +121: +122: +123: +124: +125: +126: +127: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output00000000_spring_attached_cells_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,128 @@ +0: +1: +2: +3: +4: +5: +6: +7: +8: +9: +10: +11: +12: +13: +14: +15: +16: +17: +18: +19: +20: +21: +22: +23: +24: +25: +26: +27: +28: +29: +30: +31: +32: +33: +34: +35: +36: +37: +38: +39: +40: +41: +42: +43: +44: +45: +46: +47: +48: +49: +50: +51: +52: +53: +54: +55: +56: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: +91: +92: +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +104: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: +118: +119: +120: +121: +122: +123: +124: +125: +126: +127: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output00000001.xml Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,168 @@ +<?xml version="1.0"?> +<MultiCellDS version="2" type="snapshot/simulation"> + <metadata> + <software> + <name>PhysiCell</name> + <version>1.14.1</version> + <URL>http://physicell.org</URL> + <creator> + <orcid-identifier> + <path>0000-0002-9925-0151</path> + <given-names>Paul</given-names> + <family-name>Macklin</family-name> + <email>macklinp@iu.edu</email> + <url>http://MathCancer.org</url> + <organization-name>Indiana University & PhysiCell Project</organization-name> + <department-name>Intelligent Systems Engineering</department-name> + </orcid-identifier> + </creator> + <citation> + <text>A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin. PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellular Systems, PLoS Comput. Biol. 14(2): e1005991, 2018. DOI: 10.1371/journal.pcbi.1005991</text> + <DOI>10.1371/journal.pcbi.1005991</DOI> + <URL>https://dx.doi.org/PMC5841829</URL> + <PMID>29474446</PMID> + <PMCID>PMC5841829</PMCID> + </citation> + <user /> + </software> + <citation /> + <current_time units="min">60.000000</current_time> + <current_runtime units="sec">0.510965</current_runtime> + <created>2025-01-05T08:14:32Z</created> + <last_modified>2025-01-05T08:14:32Z</last_modified> + </metadata> + <microenvironment> + <domain name="microenvironment"> + <mesh type="Cartesian" uniform="false" regular="true" units="micron"> + <bounding_box type="axis-aligned" units="micron">-30.000000 -20.000000 -10.000000 300.000000 200.000000 100.000000</bounding_box> + <x_coordinates delimiter=" ">-15 15 45 75 105 135 165 195 225 255 285</x_coordinates> + <y_coordinates delimiter=" ">-10 10 30 50 70 90 110 130 150 170 190</y_coordinates> + <z_coordinates delimiter=" ">-5 5 15 25 35 45 55 65 75 85 95</z_coordinates> + <voxels type="matlab"> + <filename>initial_mesh0.mat</filename> + </voxels> + </mesh> + <variables> + <variable name="oxygen" units="dimensionless" ID="0"> + <physical_parameter_set> + <conditions /> + <diffusion_coefficient units="micron^2/min">1000.000000</diffusion_coefficient> + <decay_rate units="1/min">1.000000</decay_rate> + </physical_parameter_set> + </variable> + <variable name="water" units="dimensionless" ID="1"> + <physical_parameter_set> + <conditions /> + <diffusion_coefficient units="micron^2/min">1000000.000000</diffusion_coefficient> + <decay_rate units="1/min">0.001000</decay_rate> + </physical_parameter_set> + </variable> + </variables> + <data type="matlab"> + <filename>output00000001_microenvironment0.mat</filename> + </data> + </domain> + </microenvironment> + <cellular_information> + <cell_populations> + <cell_population type="individual"> + <custom> + <simplified_data type="matlab" source="PhysiCell" data_version="2"> + <cell_types> + <type ID="0" type="0">default</type> + <type ID="1" type="1">blood_cells</type> + </cell_types> + <labels> + <label index="0" size="1" units="none">ID</label> + <label index="1" size="3" units="microns">position</label> + <label index="4" size="1" units="cubic microns">total_volume</label> + <label index="5" size="1" units="none">cell_type</label> + <label index="6" size="1" units="none">cycle_model</label> + <label index="7" size="1" units="none">current_phase</label> + <label index="8" size="1" units="min">elapsed_time_in_phase</label> + <label index="9" size="1" units="cubic microns">nuclear_volume</label> + <label index="10" size="1" units="cubic microns">cytoplasmic_volume</label> + <label index="11" size="1" units="none">fluid_fraction</label> + <label index="12" size="1" units="none">calcified_fraction</label> + <label index="13" size="3" units="none">orientation</label> + <label index="16" size="1" units="none">polarity</label> + <label index="17" size="3" units="micron/min">velocity</label> + <label index="20" size="1" units="none">pressure</label> + <label index="21" size="1" units="none">number_of_nuclei</label> + <label index="22" size="1" units="min">total_attack_time</label> + <label index="23" size="1" units="none">contact_with_basement_membrane</label> + <label index="24" size="1" units="1/min">current_cycle_phase_exit_rate</label> + <label index="25" size="1" units="min">elapsed_time_in_phase</label> + <label index="26" size="1" units="none">dead</label> + <label index="27" size="1" units="none">current_death_model</label> + <label index="28" size="2" units="1/min">death_rates</label> + <label index="30" size="1" units="1/min">cytoplasmic_biomass_change_rate</label> + <label index="31" size="1" units="1/min">nuclear_biomass_change_rate</label> + <label index="32" size="1" units="1/min">fluid_change_rate</label> + <label index="33" size="1" units="1/min">calcification_rate</label> + <label index="34" size="1" units="cubic microns">target_solid_cytoplasmic</label> + <label index="35" size="1" units="cubic microns">target_solid_nuclear</label> + <label index="36" size="1" units="none">target_fluid_fraction</label> + <label index="37" size="1" units="microns">radius</label> + <label index="38" size="1" units="microns">nuclear_radius</label> + <label index="39" size="1" units="square microns">surface_area</label> + <label index="40" size="1" units="micron/min">cell_cell_adhesion_strength</label> + <label index="41" size="1" units="micron/min">cell_BM_adhesion_strength</label> + <label index="42" size="1" units="micron/min">cell_cell_repulsion_strength</label> + <label index="43" size="1" units="micron/min">cell_BM_repulsion_strength</label> + <label index="44" size="2" units="none">cell_adhesion_affinities</label> + <label index="46" size="1" units="none">relative_maximum_adhesion_distance</label> + <label index="47" size="1" units="none">maximum_number_of_attachments</label> + <label index="48" size="1" units="1/min">attachment_elastic_constant</label> + <label index="49" size="1" units="1/min">attachment_rate</label> + <label index="50" size="1" units="1/min">detachment_rate</label> + <label index="51" size="1" units="none">is_motile</label> + <label index="52" size="1" units="min">persistence_time</label> + <label index="53" size="1" units="micron/min">migration_speed</label> + <label index="54" size="3" units="none">migration_bias_direction</label> + <label index="57" size="1" units="none">migration_bias</label> + <label index="58" size="3" units="micron/min">motility_vector</label> + <label index="61" size="1" units="none">chemotaxis_index</label> + <label index="62" size="1" units="none">chemotaxis_direction</label> + <label index="63" size="2" units="none">chemotactic_sensitivities</label> + <label index="65" size="2" units="1/min">secretion_rates</label> + <label index="67" size="2" units="1/min">uptake_rates</label> + <label index="69" size="2" units="stuff/cubic micron">saturation_densities</label> + <label index="71" size="2" units="stuff/min">net_export_rates</label> + <label index="73" size="2" units="stuff">internalized_total_substrates</label> + <label index="75" size="2" units="none">fraction_released_at_death</label> + <label index="77" size="2" units="none">fraction_transferred_when_ingested</label> + <label index="79" size="1" units="1/min">apoptotic_phagocytosis_rate</label> + <label index="80" size="1" units="1/min">necrotic_phagocytosis_rate</label> + <label index="81" size="1" units="1/min">other_dead_phagocytosis_rate</label> + <label index="82" size="2" units="1/min">live_phagocytosis_rates</label> + <label index="84" size="2" units="1/min">attack_rates</label> + <label index="86" size="2" units="none">immunogenicities</label> + <label index="88" size="1" units="none">attack_target</label> + <label index="89" size="1" units="1/min">attack_damage_rate</label> + <label index="90" size="1" units="min">attack_duration</label> + <label index="91" size="1" units="none">attack_total_damage_delivered</label> + <label index="92" size="2" units="1/min">fusion_rates</label> + <label index="94" size="2" units="1/min">transformation_rates</label> + <label index="96" size="2" units="none">asymmetric_division_probabilities</label> + <label index="98" size="1" units="none">damage</label> + <label index="99" size="1" units="1/min">damage_rate</label> + <label index="100" size="1" units="1/min">damage_repair_rate</label> + <label index="101" size="1" units="dimensionless">sample</label> + </labels> + <filename>output00000001_cells.mat</filename> + </simplified_data> + <neighbor_graph type="text" source="PhysiCell" data_version="2"> + <filename>output00000001_cell_neighbor_graph.txt</filename> + </neighbor_graph> + <attached_cells_graph type="text" source="PhysiCell" data_version="2"> + <filename>output00000001_attached_cells_graph.txt</filename> + </attached_cells_graph> + <spring_attached_cells_graph type="text" source="PhysiCell" data_version="2"> + <filename>output00000001_spring_attached_cells_graph.txt</filename> + </spring_attached_cells_graph> + </custom> + </cell_population> + </cell_populations> + </cellular_information> +</MultiCellDS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output00000001_attached_cells_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,125 @@ +0: +1: +2: +3: +4: +5: +6: +7: +8: +9: +10: +11: +12: +13: +14: +126: +16: +17: +18: +19: +20: +21: +22: +23: +24: +25: +26: +27: +28: +29: +30: +31: +32: +33: +34: +35: +36: +37: +124: +39: +40: +41: +42: +43: +44: +45: +46: +47: +48: +49: +50: +51: +52: +127: +54: +55: +130: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: +91: +92: +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +125: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: +118: +119: +120: +121: +122: +123: +131: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output00000001_cell_neighbor_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,125 @@ +0: +1: 68 +2: +3: +4: 59 +5: +6: +7: 69,58 +8: +9: +10: +11: +12: +13: +14: +126: 22 +16: 109 +17: +18: 98 +19: 76,94 +20: 106 +21: +22: 126 +23: +24: 94 +25: +26: +27: +28: 48 +29: +30: +31: 35 +32: 95 +33: +34: 47 +35: 31 +36: 77 +37: 65,123 +124: +39: 75 +40: 74,86 +41: 87 +42: +43: +44: 84 +45: +46: 54 +47: 34 +48: 28 +49: +50: 60,116 +51: +52: +127: 75 +54: 46 +55: +130: +57: 97 +58: 7 +59: 66,4 +60: 64,50 +61: +62: +63: +64: 60 +65: 37 +66: 59 +67: +68: 1 +69: 7 +70: +71: +72: +73: +74: 40 +75: 127,39 +76: 19,81 +77: 36 +78: +79: 116 +80: 73 +81: 76 +82: +83: +84: 44 +85: +86: 40 +87: 41 +88: +89: +90: +91: +92: +93: +94: 19,24 +95: 32 +96: +97: 57 +98: 18 +99: +100: +101: +102: +103: +125: 121 +105: +106: 20 +107: +108: +109: 16 +110: +111: +112: +113: +114: +115: +116: 50,79 +117: +118: 122 +119: +120: +121: 125 +122: 118 +123: 37 +131: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output00000001_spring_attached_cells_graph.txt Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,125 @@ +0: +1: +2: +3: +4: 59 +5: +6: +7: +8: +9: +10: +11: +12: +13: +14: +126: +16: +17: +18: 98 +19: +20: +21: +22: +23: +24: +25: +26: +27: +28: 48 +29: +30: +31: 35 +32: 95 +33: +34: +35: 31 +36: 77 +37: 123,65 +124: +39: 75 +40: +41: +42: +43: +44: 84 +45: +46: 54 +47: +48: 28 +49: 117 +50: 116,60 +51: +52: +127: +54: 46 +55: +130: +57: +58: +59: 66,4 +60: 64,50 +61: +62: +63: +64: 60 +65: 37 +66: 59 +67: +68: +69: +70: +71: +72: +73: +74: +75: 39 +76: +77: 36 +78: +79: +80: +81: +82: +83: +84: 44 +85: +86: +87: +88: +89: +90: +91: +92: +93: +94: +95: 32 +96: +97: +98: 18 +99: +100: +101: +102: +103: +125: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: 50 +117: 49 +118: +119: +120: +121: +122: +123: 37 +131: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/timeseries_cell_attribute_minmax.json Mon Aug 04 19:01:20 2025 +0000 @@ -0,0 +1,1 @@ +{"apoptotic_phagocytosis_rate": [0.0, 0.0], "asymmetric_division_probabilities_000": [0.0, 0.0], "asymmetric_division_probabilities_001": [0.0, 0.0], "attachment_elastic_constant": [0.01, 0.01], "attachment_rate": [0.0, 0.05], "attack_damage_rate": [1.0, 1.0], "attack_duration": [0.1, 0.1], "attack_target": [-1.0, -1.0], "attack_total_damage_delivered": [0.0, 0.20000000000003126], "blood_cells_attack_rates": [0.0, 0.0025], "blood_cells_cell_adhesion_affinities": [1.0, 1.0], "blood_cells_fusion_rates": [0.0, 0.0], "blood_cells_immunogenicities": [1.0, 1.0], "blood_cells_live_phagocytosis_rates": [0.0, 0.001], "blood_cells_transformation_rates": [0.0, 0.0], "calcification_rate": [0.0, 0.0], "calcified_fraction": [0.0, 0.0], "cell_BM_adhesion_strength": [4.0, 4.0], "cell_BM_repulsion_strength": [100.0, 100.0], "cell_cell_adhesion_strength": [0.4, 0.4], "cell_cell_repulsion_strength": [10.0, 10.0], "cell_count_voxel": [1, 2], "cell_density_micron3": [0.00016666666666666666, 0.0003333333333333333], "cell_type": ["blood_cells", "default"], "chemotaxis_direction": [1.0, 1.0], "chemotaxis_index": ["oxygen", "water"], "contact_with_basement_membrane": [false], "current_cycle_phase_exit_rate": [0.0007199999999424, 0.003333], "current_death_model": ["0"], "current_phase": ["G0G1_phase", "S_phase", "apoptotic", "live"], "cycle_model": ["apoptosis_death_model", "flow_cytometry_separated_cycle_model", "live_cells_cycle_model"], "cytoplasmic_biomass_change_rate": [0.0045, 0.0166667], "cytoplasmic_volume": [983.5947499999987, 5862.0], "damage": [0.0, 0.20000000000003126], "damage_rate": [0.0, 0.0], "damage_repair_rate": [0.0, 0.0], "dead": [false, true], "death_rates_0": [5.31667e-05, 5.31667e-05], "death_rates_1": [0.0, 0.0], "default_attack_rates": [0.0, 0.006], "default_cell_adhesion_affinities": [1.0, 1.0], "default_fusion_rates": [0.0, 0.005], "default_immunogenicities": [1.0, 1.0], "default_live_phagocytosis_rates": [0.0, 0.0005], "default_transformation_rates": [0.0, 0.0], "detachment_rate": [0.0, 0.03], "elapsed_time_in_phase": [0.0, 59.999999999997826], "fluid_change_rate": [0.05, 0.05], "fluid_fraction": [0.6373991145328126, 0.7569238623013873], "is_motile": [false, true], "maximum_number_of_attachments": [12, 12], "migration_bias": [0.2, 0.5], "migration_bias_direction_vectorlength": [0.0, 1.0], "migration_bias_direction_x": [-1.0, 1.0], "migration_bias_direction_y": [-1.0, 1.0], "migration_bias_direction_z": [-1.0, 1.0], "migration_speed": [1.0, 2.5], "motility_vector_vectorlength": [0.0, 2.5000000000000004], "motility_vector_x": [-2.486793550458016, 2.455852993003917], "motility_vector_y": [-2.4966742471817582, 2.2730577339090874], "motility_vector_z": [-2.1068935111770823, 1.8946060981594308], "necrotic_phagocytosis_rate": [0.0, 0.0], "nuclear_biomass_change_rate": [0.0055, 0.00583333], "nuclear_radius": [4.020509832078209, 7.285770189015841], "nuclear_volume": [272.22749999999957, 1620.0], "number_of_nuclei": [1, 3], "orientation_vectorlength": [0.9999999999999999, 1.0], "orientation_x": [-0.9998198763652759, 0.9881209318256264], "orientation_y": [-0.9923765290928437, 0.9980932470125923], "orientation_z": [-0.9988291520969345, 0.9995130292635848], "other_dead_phagocytosis_rate": [0.0, 0.0], "oxygen": [680.3846029534271, 49664.8227525245], "oxygen_chemotactic_sensitivities": [0.0, 0.0], "oxygen_decay_rate": [1.0, 1.0], "oxygen_diffusion_coefficient": [1000.0, 1000.0], "oxygen_fraction_released_at_death": [0.0, 0.0], "oxygen_fraction_transferred_when_ingested": [1.0, 1.0], "oxygen_internalized_total_substrates": [-114595021520.99211, 29061231019.999565], "oxygen_net_export_rates": [0.0, 0.0], "oxygen_saturation_densities": [0.0, 50000.0], "oxygen_secretion_rates": [0.0, 1000.0], "oxygen_uptake_rates": [0.0, 10.0], "persistence_time": [1.0, 1.0], "polarity": [0.0, 0.0], "position_vectorlength": [15.702462882974425, 320.2332747956235], "pressure": [0.0, 3.477442475942624], "radius": [6.692882306092925, 12.133228172907586], "relative_maximum_adhesion_distance": [1.25, 1.25], "sample": [0.0, 1.0], "surface_area": [562.906469544556, 1849.9610886837118], "target_fluid_fraction": [0.0, 0.75], "target_solid_cytoplasmic": [0.0, 1465.5], "target_solid_nuclear": [0.0, 405.0], "total_attack_time": [0.0, 0.20000000000003126], "total_volume": [1255.8222499999983, 7482.0], "velocity_vectorlength": [0.0, 0.0], "velocity_x": [0.0, 0.0], "velocity_y": [0.0, 0.0], "velocity_z": [0.0, 0.0], "water": [937.8055019681188, 1000.0], "water_chemotactic_sensitivities": [0.0, 0.0], "water_decay_rate": [0.001, 0.001], "water_diffusion_coefficient": [1000000.0, 1000000.0], "water_fraction_released_at_death": [0.0, 0.0], "water_fraction_transferred_when_ingested": [1.0, 1.0], "water_internalized_total_substrates": [0.0, 2109883578.3197234], "water_net_export_rates": [0.0, 0.0], "water_saturation_densities": [1.0, 15.0], "water_secretion_rates": [0.0, 5.0], "water_uptake_rates": [0.0, 10.0]} \ No newline at end of file