Intracellular inputs
PhysiCellModelManager.jl currently only supports ODE intracellular models using libRoadRunner. It uses a specialized format to achieve this, creating the SBML files needed by libRoadRunner at PhysiCell runtime. Briefly, the intracellular.xml
file defines a mapping between cell definitions and intracellular models. See the template provided here.
To facilitate creation of such files, and to make it easy to mix-and-match intracellular models, users can place the SBML files that define the ODEs into data/components/roadrunner
and then simply reference those to construct the specialized XMLs needed. For example, place the Toy_Metabolic_Model.xml
from sampleprojectsintracellular/ode/ode_energy/config/ into data/components/roadrunner
and assemble the XML as follows
cell_type = "default" # name of the cell type using this intracellular model
component = PhysiCellComponent("roadrunner", "Toy_Metabolic_Model.xml") # pass in the type of the component and the name of the file to use
cell_type_to_component = Dict{String, PhysiCellComponent}(cell_type => component) # add other entries to this Dict for other cell types using an intracellular model
intracellular_folder = assembleIntracellular!(cell_type_to_component; name="toy_metabolic") # will return "toy_metabolic" or "toy_metabolic_n"
This creates a folder at data/inputs/intracellulars/
with the name stored in intracellular_folder
. Also, the !
in assembleIntracellular!
references how the components in the cell_type_to_component
Dict
are updated to match those in data/inputs/intracellulars/$(intracellular_folder)/intracellular.xml
. Use these IDs to make variations on the components by using
xml_path = ["intracellulars", "intracellular:ID:$(component.id)", ...]
where the ...
is the path starting with the root of the XML file (sbml
for SBML files).
Finally, pass this folder into InputFolders
to use this input in simulation runs:
inputs = InputFolders(...; ..., intracellular=intracellular_folder, ...)