Skip to content

Commit b90cb33

Browse files
authored
Merge pull request #32 from virtualcell/app-params
parse vcml application parameters
2 parents 35b1f75 + 13985a7 commit b90cb33

File tree

7 files changed

+26
-4
lines changed

7 files changed

+26
-4
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,7 @@ test_output_1/
178178
examples/test_output/SimID_*
179179
/examples/notebooks/*.py
180180
/examples/solver_output/zarr/
181+
182+
examples/notebooks/workspace/
183+
184+
examples/scripts/workspace/

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,4 @@ coming soon.
7777

7878
### Geometry import example
7979

80-
[![Open in Colab ](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/14L3WaV42PEu7NvAQdil7i8mEL4WTPF9h?usp=sharing)
80+
[![Open in Colab ](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/14L3WaV42PEu7NvAQdil7i8mEL4WTPF9h?usp=sharing)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "pyvcell"
3-
version = "0.1.18"
3+
version = "0.1.19"
44
description = "This is the python wrapper for vcell modeling and simulation"
55
authors = ["Jim Schaff <[email protected]>"]
66
repository = "https://github.com/virtualcell/pyvcell"

pyvcell/vcml/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ class Parameter(VcmlNode):
3232
unit: str
3333

3434

35+
class ApplicationParameter(Parameter):
36+
pass
37+
38+
3539
class ModelParameter(Parameter):
3640
pass
3741

@@ -370,6 +374,7 @@ class Application(VcmlNode):
370374
species_mappings: list[SpeciesMapping] = Field(default_factory=list)
371375
reaction_mappings: list[ReactionMapping] = Field(default_factory=list)
372376
simulations: list[Simulation] = Field(default_factory=list)
377+
application_parameters: list[ApplicationParameter] = Field(default_factory=list)
373378

374379
def __repr__(self) -> str:
375380
return f"Application(name={self.name}, geometry={self.geometry}, sims={self.simulation_names})"

pyvcell/vcml/vcml_reader.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def visit_Parameter(self, element: _Element, node: vc.Model | vc.Kinetics) -> No
144144
name: str = element.get("Name", default="unnamed")
145145
role = element.get("Role", default="user defined")
146146
unit = element.get("Unit", default="tbd")
147-
parameter: vc.ModelParameter | vc.KineticsParameter
147+
parameter: vc.ModelParameter | vc.KineticsParameter | vc.ApplicationParameter
148148
if strip_namespace(parent.tag) == "ModelParameters":
149149
model: vc.Model = node # type: ignore[assignment]
150150
model_parameter = vc.ModelParameter(name=name, value=value, role=role, unit=unit)
@@ -161,6 +161,11 @@ def visit_Parameter(self, element: _Element, node: vc.Model | vc.Kinetics) -> No
161161
)
162162
kinetics.kinetics_parameters.append(kinetics_parameter)
163163
parameter = kinetics_parameter
164+
elif strip_namespace(parent.tag) == "ApplicationParameters":
165+
application: vc.Application = node # type: ignore[assignment]
166+
application_parameter = vc.ApplicationParameter(name=name, value=value, role=role, unit=unit)
167+
application.application_parameters.append(application_parameter)
168+
parameter = application_parameter
164169
else:
165170
raise ValueError("Unexpected parent tag")
166171
self.generic_visit(element, parameter)

pyvcell/vcml/vcml_writer.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,14 @@ def write_application(self, application: Application, parent: _Element) -> None:
119119
parent.append(geometry_element)
120120
self.write_geometry(application.geometry, geometry_element)
121121

122+
# ---- application parameters -----
123+
application_parameters_element = Element("ApplicationParameters")
124+
parent.append(application_parameters_element)
125+
for parameter in application.application_parameters:
126+
parameter_element = Element("Parameter", Name=parameter.name, Role=parameter.role, Unit=parameter.unit)
127+
parameter_element.text = str(parameter.value)
128+
application_parameters_element.append(parameter_element)
129+
122130
# ---- geometry context -----
123131
geometry_context_element = Element("GeometryContext")
124132
parent.append(geometry_context_element)

tests/_internal/api/vcell_client/test_publication_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,4 @@ def test_get_publications() -> None:
4949
mathmodel_refs=[],
5050
var_date=date(year=2024, month=11, day=26),
5151
)
52-
assert pubs[0] == example_pub
52+
assert example_pub in pubs

0 commit comments

Comments
 (0)