Skip to content

Commit fdcd6b1

Browse files
authored
Merge pull request #6 from virtualcell/more-model-editing
model editing and discovery beyond parameter values
2 parents d890cdb + 24acbd0 commit fdcd6b1

32 files changed

+13293
-734
lines changed

.openapi-generator/FILES

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
.openapi-generator-ignore
21
pyvcell/__init__.py
32
pyvcell/api/__init__.py
43
pyvcell/api/vcell_client/__init__.py
@@ -100,5 +99,4 @@ pyvcell/api/vcell_client/models/variable_type.py
10099
pyvcell/api/vcell_client/models/vc_simulation_identifier.py
101100
pyvcell/api/vcell_client/rest.py
102101
pyvcell/api/vcell_client/test/__init__.py
103-
pyvcell/api/vcell_client/test/test_solver_resource_api.py
104102
pyvcell/api/vcell_client_README.md

examples/combined_fvsolver_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import matplotlib.pyplot as plt
77
import numpy as np
8-
import zarr # type: ignore[import-untyped]
8+
import zarr
99
from IPython.display import display
1010

1111
from pyvcell.simdata.mesh import CartesianMesh

examples/data_demo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import matplotlib.pyplot as plt
55
import numpy as np
6-
import zarr # type: ignore[import-untyped]
6+
import zarr
77
from IPython.display import display
88

99
from pyvcell.simdata.mesh import CartesianMesh

examples/fv_solver_workflow.ipynb

Lines changed: 14 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,19 @@
2020
"id": "90320a7fbc22bb09"
2121
},
2222
{
23-
"metadata": {
24-
"ExecuteTime": {
25-
"end_time": "2025-02-20T01:53:43.860052Z",
26-
"start_time": "2025-02-20T01:53:42.882744Z"
27-
}
28-
},
23+
"metadata": {},
2924
"cell_type": "code",
25+
"outputs": [],
26+
"execution_count": null,
3027
"source": [
3128
"from pathlib import Path\n",
3229
"\n",
3330
"import tempfile\n",
3431
"import shutil\n",
3532
"import os\n",
3633
"\n",
37-
"from pyvcell.data_model.simulation import SpatialSimulation\n",
38-
"from pyvcell.data_model.spatial_model import SpatialModel\n",
34+
"from pyvcell.data_model.simulation import SbmlSpatialSimulation\n",
35+
"from pyvcell.data_model.sbml_spatial_model import SbmlSpatialModel\n",
3936
"from pyvcell.simdata.postprocessing import PostProcessing\n",
4037
"from pyvcell.simdata.vtk.fv_mesh_mapping import from_mesh_data\n",
4138
"\n",
@@ -69,25 +66,20 @@
6966
"model_fp = os.path.join(solver_input_dir, \"TinySpatialProject_Application0.xml\")\n",
7067
"\n",
7168
"# define editable spatial model and simulation instances\n",
72-
"model = SpatialModel(filepath=model_fp)\n",
73-
"simulation = SpatialSimulation(model=model, out_dir=solver_output_dir)\n",
69+
"model = SbmlSpatialModel(filepath=model_fp)\n",
70+
"simulation = SbmlSpatialSimulation(sbml_model=model, out_dir=solver_output_dir)\n",
7471
"\n",
7572
"# TODO: replace below with simulation.get_input_files()\n",
7673
"fv_input_file = temp_solver_dir / \"SimID_946368938_0_.fvinput\"\n",
7774
"vcg_file = temp_solver_dir / \"SimID_946368938_0_.vcg\""
7875
],
79-
"id": "4dd5c4de89c0402c",
80-
"outputs": [],
81-
"execution_count": 1
76+
"id": "67917a6259f62909"
8277
},
8378
{
84-
"metadata": {
85-
"ExecuteTime": {
86-
"end_time": "2025-02-20T01:53:44.441106Z",
87-
"start_time": "2025-02-20T01:53:43.863337Z"
88-
}
89-
},
79+
"metadata": {},
9080
"cell_type": "code",
81+
"outputs": [],
82+
"execution_count": null,
9183
"source": [
9284
"# job_id = 0\n",
9385
"# sim_id = 946368938\n",
@@ -96,160 +88,7 @@
9688
"job_id = result.job_id\n",
9789
"sim_id = result.sim_id"
9890
],
99-
"id": "44697a5a1e639e1e",
100-
"outputs": [
101-
{
102-
"name": "stdout",
103-
"output_type": "stream",
104-
"text": [
105-
"initializing mesh\n",
106-
"numVolume=200\n",
107-
"\n",
108-
"mesh initialized\n",
109-
"preprocessing finished\n",
110-
"pdeCount=2, odeCount=0\n",
111-
"error opening log file </Users/alexanderpatrie/Desktop/repos/pyvcell/examples/test_output/SimID_631342098_0_.log>\n",
112-
"simulation [SimID_631342098_0_] started\n",
113-
"temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
114-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0000.sim\n",
115-
"**This is a little endian machine.**\n",
116-
"[[[data:0]]]\n",
117-
"numVolRegions=1\n",
118-
"Region 0: size=200, offset=0\n",
119-
"# of active points = 200\n",
120-
"Constant diffusion/advection in region subdomain00\n",
121-
"numUnknowns = 400\n",
122-
"\n",
123-
"****** using Sundials CVode with PREC_LEFT, relTol=1e-07, absTol=1e-09, maxStep=0.1\n",
124-
"\n",
125-
"----------------------------------\n",
126-
"sundials pde solver is starting from time 0\n",
127-
"----------------------------------\n",
128-
"temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
129-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0001.sim\n",
130-
"[[[data:0.1]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
131-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0002.sim\n",
132-
"[[[data:0.2]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
133-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0003.sim\n",
134-
"[[[data:0.3]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
135-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0004.sim\n",
136-
"[[[data:0.4]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
137-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0005.sim\n",
138-
"[[[data:0.5]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
139-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0006.sim\n",
140-
"[[[data:0.6]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
141-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0007.sim\n",
142-
"[[[data:0.7]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
143-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0008.sim\n",
144-
"[[[data:0.8]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
145-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0009.sim\n",
146-
"[[[data:0.9]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
147-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0010.sim\n",
148-
"[[[data:1]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
149-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0011.sim\n",
150-
"[[[data:1.1]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
151-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0012.sim\n",
152-
"[[[data:1.2]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
153-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0013.sim\n",
154-
"[[[data:1.3]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
155-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0014.sim\n",
156-
"[[[data:1.4]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
157-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0015.sim\n",
158-
"[[[data:1.5]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
159-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0016.sim\n",
160-
"[[[data:1.6]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
161-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0017.sim\n",
162-
"[[[data:1.7]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
163-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0018.sim\n",
164-
"[[[data:1.8]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
165-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0019.sim\n",
166-
"[[[data:1.9]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
167-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0020.sim\n",
168-
"[[[data:2]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
169-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0021.sim\n",
170-
"[[[data:2.1]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
171-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0022.sim\n",
172-
"[[[data:2.2]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
173-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0023.sim\n",
174-
"[[[data:2.3]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
175-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0024.sim\n",
176-
"[[[data:2.4]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
177-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0025.sim\n",
178-
"[[[data:2.5]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
179-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0026.sim\n",
180-
"[[[data:2.6]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
181-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0027.sim\n",
182-
"[[[data:2.7]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
183-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0028.sim\n",
184-
"[[[data:2.8]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
185-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0029.sim\n",
186-
"[[[data:2.9]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
187-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0030.sim\n",
188-
"[[[data:3]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
189-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0031.sim\n",
190-
"[[[data:3.1]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
191-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0032.sim\n",
192-
"[[[data:3.2]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
193-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0033.sim\n",
194-
"[[[data:3.3]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
195-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0034.sim\n",
196-
"[[[data:3.4]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
197-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0035.sim\n",
198-
"[[[data:3.5]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
199-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0036.sim\n",
200-
"[[[data:3.6]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
201-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0037.sim\n",
202-
"[[[data:3.7]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
203-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0038.sim\n",
204-
"[[[data:3.8]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
205-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0039.sim\n",
206-
"[[[data:3.9]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
207-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0040.sim\n",
208-
"[[[data:4]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
209-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0041.sim\n",
210-
"[[[data:4.1]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
211-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0042.sim\n",
212-
"[[[data:4.2]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
213-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0043.sim\n",
214-
"[[[data:4.3]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
215-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0044.sim\n",
216-
"[[[data:4.4]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
217-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0045.sim\n",
218-
"[[[data:4.5]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
219-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0046.sim\n",
220-
"[[[data:4.6]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
221-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0047.sim\n",
222-
"[[[data:4.7]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
223-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0048.sim\n",
224-
"[[[data:4.8]]]temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
225-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0049.sim\n",
226-
"[[[data:4.9]]]\n",
227-
"Final Statistics.. \n",
228-
"\n",
229-
"lenrw = 4089 leniw = 50\n",
230-
"lenrwLS = 4046 leniwLS = 10\n",
231-
"nst = 217\n",
232-
"nfe = 277 nfeLS = 189\n",
233-
"nni = 273 nli = 189\n",
234-
"nsetups = 106 netf = 6\n",
235-
"npe = 5 nps = 378\n",
236-
"ncfn = 0 ncfl = 0\n",
237-
"last step = 0.044432\n",
238-
"\n",
239-
"temporary directory used is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/\n",
240-
"sim file name is /var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/SimID_631342098_0_0050.sim\n",
241-
"[[[data:5]]][[[progress:100%]]]"
242-
]
243-
},
244-
{
245-
"name": "stderr",
246-
"output_type": "stream",
247-
"text": [
248-
"Simulation Complete in Main() ... \n"
249-
]
250-
}
251-
],
252-
"execution_count": 2
91+
"id": "ffc949c0c6ff6844"
25392
},
25493
{
25594
"metadata": {
@@ -559,7 +398,7 @@
559398
"source": [
560399
"from IPython.display import HTML\n",
561400
"\n",
562-
"result.animate_channel_3d(channel_index)"
401+
"result.plotter.animate_channel_3d(channel_index)"
563402
],
564403
"id": "8e6924aee12e66b3",
565404
"outputs": [
@@ -6498,7 +6337,7 @@
64986337
"source": [
64996338
"# animate fluor dataset image over time\n",
65006339
"fluor_index = 0\n",
6501-
"result.animate_image(fluor_index)"
6340+
"result.plotter.animate_image(fluor_index)"
65026341
],
65036342
"id": "51a527f967f11749",
65046343
"outputs": [

examples/fv_solver_workflow.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import os
22
from pathlib import Path
33

4-
from pyvcell.data_model.simulation import SpatialSimulation
5-
from pyvcell.data_model.spatial_model import SpatialModel
4+
from pyvcell.data_model.sbml_spatial_model import SbmlSpatialModel
5+
from pyvcell.data_model.simulation import SbmlSpatialSimulation
66

77
model_fp = Path(os.getcwd()) / "solver_input" / "SmallSpacialProject_3D.xml"
88

99
# define editable spatial model and simulation instances
10-
spatial_model = SpatialModel(filepath=model_fp)
10+
spatial_model = SbmlSpatialModel(filepath=model_fp)
1111
spatial_model.copy_parameters()
12-
simulation = SpatialSimulation(model=spatial_model)
13-
result = simulation.run()
12+
simulation = SbmlSpatialSimulation(sbml_model=spatial_model)
13+
result = simulation.run(duration=5.0, output_time_step=0.1)
1414

15-
result.plot_slice_2d(time_index=3, channel_index=5, z_index=5)
16-
result.plot_slice_3d(time_index=3, channel_index=6)
17-
result.plot_concentrations()
15+
result.plotter.plot_slice_2d(time_index=3, channel_index=5, z_index=5)
16+
result.plotter.plot_slice_3d(time_index=3, channel_index=6)
17+
result.plotter.plot_concentrations()
1818
simulation.cleanup()

0 commit comments

Comments
 (0)