Components
Allows for combining PhysiCell input components into whole inputs.
Currently, only supports this for intracellular ODE (libRoadRunner) models.
Public API
PhysiCellModelManager.PhysiCellComponent — Type
PhysiCellComponentA struct to hold the information about a component that is used to assemble an input of PhysiCell.
The type and name are the only fields that are compared for equality. The type represents the type of component that it is. Currently, only "roadrunner" is supported. The name is the name of the file inside the components/type/ directory. The id is the id of the component, which will be -1 to indicate it is not yet set. The id is used to link which cell definition(s) use which component(s).
Fields
type::String: The type of the component (e.g., "roadrunner", "dfba", "maboss").name::String: The name of the component (e.g., "component.xml").id::Int: The id of the component (e.g., 1, 2, 3). This is used to link which cell definition(s) use which component(s). A value of -1 indicates that the id is not yet set.
Examples
julia> PhysiCellComponent("roadrunner", "test.xml")
PhysiCellComponent("roadrunner", "test.xml", -1)component = PhysiCellComponent("roadrunner", "test.xml")
PhysiCellComponent(component, 78) # set the id to 78; users should not need to do this
# output
PhysiCellComponent("roadrunner", "test.xml", 78)PhysiCellModelManager.assembleIntracellular! — Method
assembleIntracellular!(cell_to_components_dict::Dict{String,Vector{PhysiCellComponent}}; name::String="assembled", skip_db_insert::Bool=false)Assembles the intracellular components for the given cell types into a single file.
First, check if the components have been previously assembled. If so, return that folder name. If not, create a new folder and save the components there as a single file along with the assembly manifest; finally, update the database with the new folder.
Arguments
cell_to_components_dict::Dict{String,Vector{PhysiCellComponent}}: A dictionary mapping cell types to their components.- The keys are the cell type names (e.g., "Tcell", "Bcell").
- The values can be either a single
PhysiCellComponentor a vector ofPhysiCellComponents.
name::String: The name of the folder to create (default is "assembled").skip_db_insert::Bool: If true, skip the database insert (default is false). Skipped when importing a project. Users should not need to set this.
Returns
folder::String: The name of the folder where the components were assembled.
Private API
PhysiCellModelManager.disassembleIntracellular — Method
disassembleIntracellular(path_to_xml::String)Disassemble the intracellular XML file into separate files for each intracellular component.
The files will be saved next to the varied XML file with the following naming convention: <basename>_<cell>_ID<id>_<type>.xml where <basename> is the base name of the input XML file, <cell> is the cell type that uses the component, <id> is the ID of the component, and <type> is the type of the component (e.g., "roadrunner").
PhysiCellModelManager.findComponentID — Method
findComponentID(assembly_manifest::Dict, component::PhysiCellComponent)Find the ID of the given component in the assembly manifest.
PhysiCellModelManager.intracellularAssemblyManifestsEquivalent — Method
intracellularAssemblyManifestsEquivalent(A::Dict, B::Dict)Compare two intracellular assembly manifests to see if they are equivalent.
Two manifests may assign different IDs to the same components. This function compares the component files to see if the manifests are equivalent.
PhysiCellModelManager.intracellularFolder — Method
intracellularFolder(assembly_manifest::Dict)Get the folder that contains the intracellular assembly manifest that is equivalent to the given assembly manifest, if one exists.
If no such folder exists, return nothing.
PhysiCellModelManager.updateIntracellularComponentIDs! — Method
updateIntracellularComponentIDs!(cell_to_components_dict::Dict{String,Vector{PhysiCellComponent}}, path_to_folder::String)Update the IDs of the components in the given dictionary to match those in the assembly manifest in the given folder.