Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -178,3 +178,7 @@ test_output_1/
examples/test_output/SimID_*
/examples/notebooks/*.py
/examples/solver_output/zarr/

examples/notebooks/workspace/

examples/scripts/workspace/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,4 @@ coming soon.

### Geometry import example

[![Open in Colab ](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/14L3WaV42PEu7NvAQdil7i8mEL4WTPF9h?usp=sharing)
[![Open in Colab ](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/14L3WaV42PEu7NvAQdil7i8mEL4WTPF9h?usp=sharing)
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "pyvcell"
version = "0.1.18"
version = "0.1.19"
description = "This is the python wrapper for vcell modeling and simulation"
authors = ["Jim Schaff <schaff@uchc.edu>"]
repository = "https://github.com/virtualcell/pyvcell"
Expand Down
5 changes: 5 additions & 0 deletions pyvcell/vcml/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ class Parameter(VcmlNode):
unit: str


class ApplicationParameter(Parameter):
pass


class ModelParameter(Parameter):
pass

Expand Down Expand Up @@ -370,6 +374,7 @@ class Application(VcmlNode):
species_mappings: list[SpeciesMapping] = Field(default_factory=list)
reaction_mappings: list[ReactionMapping] = Field(default_factory=list)
simulations: list[Simulation] = Field(default_factory=list)
application_parameters: list[ApplicationParameter] = Field(default_factory=list)

def __repr__(self) -> str:
return f"Application(name={self.name}, geometry={self.geometry}, sims={self.simulation_names})"
Expand Down
7 changes: 6 additions & 1 deletion pyvcell/vcml/vcml_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ def visit_Parameter(self, element: _Element, node: vc.Model | vc.Kinetics) -> No
name: str = element.get("Name", default="unnamed")
role = element.get("Role", default="user defined")
unit = element.get("Unit", default="tbd")
parameter: vc.ModelParameter | vc.KineticsParameter
parameter: vc.ModelParameter | vc.KineticsParameter | vc.ApplicationParameter
if strip_namespace(parent.tag) == "ModelParameters":
model: vc.Model = node # type: ignore[assignment]
model_parameter = vc.ModelParameter(name=name, value=value, role=role, unit=unit)
Expand All @@ -161,6 +161,11 @@ def visit_Parameter(self, element: _Element, node: vc.Model | vc.Kinetics) -> No
)
kinetics.kinetics_parameters.append(kinetics_parameter)
parameter = kinetics_parameter
elif strip_namespace(parent.tag) == "ApplicationParameters":
application: vc.Application = node # type: ignore[assignment]
application_parameter = vc.ApplicationParameter(name=name, value=value, role=role, unit=unit)
application.application_parameters.append(application_parameter)
parameter = application_parameter
else:
raise ValueError("Unexpected parent tag")
self.generic_visit(element, parameter)
Expand Down
8 changes: 8 additions & 0 deletions pyvcell/vcml/vcml_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,14 @@ def write_application(self, application: Application, parent: _Element) -> None:
parent.append(geometry_element)
self.write_geometry(application.geometry, geometry_element)

# ---- application parameters -----
application_parameters_element = Element("ApplicationParameters")
parent.append(application_parameters_element)
for parameter in application.application_parameters:
parameter_element = Element("Parameter", Name=parameter.name, Role=parameter.role, Unit=parameter.unit)
parameter_element.text = str(parameter.value)
application_parameters_element.append(parameter_element)

# ---- geometry context -----
geometry_context_element = Element("GeometryContext")
parent.append(geometry_context_element)
Expand Down
2 changes: 1 addition & 1 deletion tests/_internal/api/vcell_client/test_publication_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@ def test_get_publications() -> None:
mathmodel_refs=[],
var_date=date(year=2024, month=11, day=26),
)
assert pubs[0] == example_pub
assert example_pub in pubs