diff --git a/Dockerfile b/Dockerfile index 5886321da..b3b10e50d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ COPY ./biosimulator_processes /app/biosimulator_processes COPY composer-notebooks /app/notebooks # copy files -COPY ./pyproject.toml ./poetry.lock ./data ./scripts/trust-notebooks.sh /app/ +COPY toml ./poetry.lock ./data ./scripts/trust-notebooks.sh /app/ COPY ./scripts/enter-lab.sh /usr/local/bin/enter-lab.sh # COPY ./scripts/xvfb-startup.sh /xvfb-startup.sh diff --git a/poetry.lock b/_lock similarity index 100% rename from poetry.lock rename to _lock diff --git a/biosimulator_processes/__init__.py b/biosimulator_processes/__init__.py index 8762e6a4a..731a630b0 100644 --- a/biosimulator_processes/__init__.py +++ b/biosimulator_processes/__init__.py @@ -14,7 +14,7 @@ PROCESSES_TO_REGISTER = [ ('cobra', 'cobra_process.CobraProcess'), ('copasi', 'copasi_process.CopasiProcess'), - ('smoldyn', 'smoldyn_process.SmoldynProcess'), + # ('smoldyn', 'smoldyn_process.SmoldynProcess'), ('tellurium', 'tellurium_process.TelluriumProcess'), ('amici', 'amici_process.AmiciProcess')] diff --git a/containers/exec.py b/containers/exec.py index 0014c2250..f2e80b896 100644 --- a/containers/exec.py +++ b/containers/exec.py @@ -13,7 +13,7 @@ def get_simulators(sims: List[str]): and format as a dictionary. This dictionary is used as configuration for the dynamic creation of containers. """ - with open('biosimulator_processes/poetry.lock') as file: + with open('biosimulator_processes/_lock') as file: lock_data = toml.load(file) simulators = [] @@ -76,7 +76,7 @@ def generate_dockerfile_contents(config: dict) -> str: """ base_path = 'biosimulator_processes/Dockerfile-base' - # TODO: automate mapping simulators to poetry.lock: ie: simulators arg that searches the lock file + # TODO: automate mapping simulators to _lock: ie: simulators arg that searches the lock file with open(base_path, 'r') as fp: dockerfile_contents = fp.read() for simulator in config['simulators']: diff --git a/setup.py b/setup.py index e7065f257..8824b804b 100644 --- a/setup.py +++ b/setup.py @@ -57,7 +57,7 @@ "jupyterlab", "notebook", "bigraph-builder", - "python-libsbml" # ==5.20.2", + "python-libsbml", # ==5.20.2", "docker>=7.0", "toml", "python-libnuml==1.1.6", # ">=1.0.0" diff --git a/test_suite/test.ipynb b/test_suite/test.ipynb index 877011707..540bb1eae 100644 --- a/test_suite/test.ipynb +++ b/test_suite/test.ipynb @@ -6,13 +6,14 @@ "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2024-05-24T21:29:58.840821Z", - "start_time": "2024-05-24T21:29:57.362529Z" + "end_time": "2024-05-24T21:56:34.844563Z", + "start_time": "2024-05-24T21:56:33.367840Z" } }, "source": [ "from biosimulator_processes.processes.copasi_process import CopasiProcess\n", "from biosimulator_processes import CORE \n", + "from biosimulator_processes.processes.instance import generate_ode_process_instance\n", "from process_bigraph import Step\n", "from process_bigraph.experiments.parameter_scan import RunProcess" ], @@ -48,235 +49,139 @@ { "metadata": { "ExecuteTime": { - "end_time": "2024-05-24T21:29:59.511003Z", - "start_time": "2024-05-24T21:29:59.508275Z" - } - }, - "cell_type": "code", - "source": "# TODO: put this in comparator step code", - "id": "a8d4723c01383335", - "outputs": [], - "execution_count": 2 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:32:44.103614Z", - "start_time": "2024-05-24T21:32:44.103550Z" + "end_time": "2024-05-24T21:56:34.847397Z", + "start_time": "2024-05-24T21:56:34.845560Z" } }, "cell_type": "code", "source": [ "fp = '/Users/alexanderpatrie/Desktop/repos/biosimulator-processes/test_suite/examples/sbml-core/Varusai-Sci-Rep-2018-mTOR-signaling-LSODA-LSODAR-SBML/Varusai2018.xml'\n", - "\n", - "copasi_process = RunProcess(config={\n", - " 'process_address': 'local:copasi',\n", - " 'process_config': {'model': {'model_source': fp}},\n", - " 'observables': [['floating_species_concentrations', 'Akt']],\n", - " 'timestep': 0.7,\n", - " 'runtime': 100\n", - "}, core=CORE)\n", - "\n", - "\n", - "t_process = RunProcess(config={\n", - " 'process_address': 'local:tellurium',\n", - " 'process_config': {'model': {'model_source': fp}},\n", - " 'observables': [['floating_species_concentrations', 'Akt']],\n", - " 'timestep': 0.7,\n", - " 'runtime': 100\n", - "}, core=CORE)\n", - "\n", - " \n", - "\n" + "obs1 = ['floating_species_concentrations', 'Akt']\n", + "proc_addresses = ['copasi', 'tellurium', 'amici']\n", + "proc_address = 'amici'\n", + "step = 0.01\n", + "dur = 100" ], "id": "8ea18375e81986ed", "outputs": [], - "execution_count": null - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:30:00.801243Z", - "start_time": "2024-05-24T21:30:00.798751Z" - } - }, - "cell_type": "code", - "source": [ - "def adjust_input_state_parameter(ode_process, path_mapping: dict) -> dict:\n", - " input_state = ode_process.process.initial_state()\n", - " for port_name, mapping in path_mapping.items():\n", - " if isinstance(mapping, dict):\n", - " for path_key, path_val in mapping.items():\n", - " if not isinstance(path_val, dict):\n", - " input_state[port_name][path_key] = path_val\n", - " \n", - " return input_state\n", - " \n", - " \n", - " " - ], - "id": "fe7936d322b38657", - "outputs": [], - "execution_count": 4 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:30:01.322085Z", - "start_time": "2024-05-24T21:30:01.320410Z" - } - }, - "cell_type": "code", - "source": "", - "id": "9bc46475cc8c3b62", - "outputs": [], - "execution_count": 4 + "execution_count": 2 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-05-24T21:30:01.866140Z", - "start_time": "2024-05-24T21:30:01.814180Z" + "end_time": "2024-05-24T21:56:45.021731Z", + "start_time": "2024-05-24T21:56:34.848020Z" } }, "cell_type": "code", - "source": [ - "obs1 = ['floating_species_concentrations', 'Akt']\n", - "proc_address = 'copasi'\n", - "step = 0.01\n", - "dur = 1000\n", - "\n", - "\n", - "copasi_proc = generate_ode_process(fp, process_address=proc_address, simulator='copasi', observables=[obs1], step_size=step, duration=dur)\n" - ], - "id": "9626904f1be38508", + "source": "amici_process = generate_ode_process_instance(entrypoint=fp, process_address=proc_address, step_size=step, duration=dur, observables=obs1)", + "id": "9c075938b352754d", "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "found a filepath\n" + "2024-05-24 17:56:34.901 - amici.sbml_import - INFO - Finished importing SBML (3.12E-02s)\n", + "2024-05-24 17:56:34.954 - amici.sbml_import - INFO - Finished processing SBML observables (5.09E-02s)\n", + "2024-05-24 17:56:34.956 - amici.sbml_import - INFO - Finished processing SBML event observables (4.17E-07s)\n", + "2024-05-24 17:56:34.993 - amici.de_model - INFO - Finished computing xdot (2.98E-03s)\n", + "2024-05-24 17:56:34.996 - amici.de_model - INFO - Finished computing x0 (9.81E-04s)\n", + "2024-05-24 17:56:35.030 - amici.de_model - INFO - Finished computing w (3.17E-02s)\n", + "2024-05-24 17:56:35.543 - amici.de_export - INFO - Finished generating cpp code (5.09E-01s)\n", + "2024-05-24 17:56:44.895 - amici.de_export - INFO - Finished compiling cpp code (9.35E+00s)\n" ] } ], - "execution_count": 5 + "execution_count": 3 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-05-24T21:30:02.956667Z", - "start_time": "2024-05-24T21:30:02.951705Z" + "end_time": "2024-05-24T21:48:40.422305Z", + "start_time": "2024-05-24T21:48:37.102262Z" } }, "cell_type": "code", - "source": "0.5**0.5", - "id": "c7ebed15a95f2470", + "source": "amici_process.update({})", + "id": "8f1851a1b21a0238", "outputs": [ { - "data": { - "text/plain": [ - "0.7071067811865476" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[9], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m \u001B[43mamici_process\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupdate\u001B[49m\u001B[43m(\u001B[49m\u001B[43m{\u001B[49m\u001B[43m}\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/experiments/parameter_scan.py:208\u001B[0m, in \u001B[0;36mRunProcess.update\u001B[0;34m(self, inputs)\u001B[0m\n\u001B[1;32m 202\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mupdate\u001B[39m(\u001B[38;5;28mself\u001B[39m, inputs):\n\u001B[1;32m 203\u001B[0m \u001B[38;5;66;03m# TODO: instead of the composite being a reference it is instead read through\u001B[39;00m\n\u001B[1;32m 204\u001B[0m \u001B[38;5;66;03m# some port and lives in the state of the simulation (??)\u001B[39;00m\n\u001B[1;32m 205\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcomposite\u001B[38;5;241m.\u001B[39mmerge(\n\u001B[1;32m 206\u001B[0m inputs)\n\u001B[0;32m--> 208\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcomposite\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 209\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconfig\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mruntime\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 211\u001B[0m histories \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcomposite\u001B[38;5;241m.\u001B[39mgather_results()\n\u001B[1;32m 213\u001B[0m results \u001B[38;5;241m=\u001B[39m {\n\u001B[1;32m 214\u001B[0m key: timeseries_from_history(\n\u001B[1;32m 215\u001B[0m history,\n\u001B[1;32m 216\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mconfig[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mobservables\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m+\u001B[39m [[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtime\u001B[39m\u001B[38;5;124m'\u001B[39m]])\n\u001B[1;32m 217\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m key, history \u001B[38;5;129;01min\u001B[39;00m histories\u001B[38;5;241m.\u001B[39mitems()}\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py:1078\u001B[0m, in \u001B[0;36mComposite.run\u001B[0;34m(self, interval, force_complete)\u001B[0m\n\u001B[1;32m 1074\u001B[0m paths\u001B[38;5;241m.\u001B[39mappend(path)\n\u001B[1;32m 1076\u001B[0m \u001B[38;5;66;03m# get all update paths, then trigger steps that\u001B[39;00m\n\u001B[1;32m 1077\u001B[0m \u001B[38;5;66;03m# depend on those paths\u001B[39;00m\n\u001B[0;32m-> 1078\u001B[0m update_paths \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mapply_updates\u001B[49m\u001B[43m(\u001B[49m\u001B[43mupdates\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1079\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mtrigger_steps(update_paths)\n\u001B[1;32m 1081\u001B[0m \u001B[38;5;66;03m# # display and emit\u001B[39;00m\n\u001B[1;32m 1082\u001B[0m \u001B[38;5;66;03m# if self.progress_bar:\u001B[39;00m\n\u001B[1;32m 1083\u001B[0m \u001B[38;5;66;03m# print_progress_bar(self.global_time, end_time)\u001B[39;00m\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 1091\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m 1092\u001B[0m \u001B[38;5;66;03m# all processes have run past the interval\u001B[39;00m\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py:1010\u001B[0m, in \u001B[0;36mComposite.apply_updates\u001B[0;34m(self, updates)\u001B[0m\n\u001B[1;32m 1007\u001B[0m paths \u001B[38;5;241m=\u001B[39m hierarchy_depth(update)\n\u001B[1;32m 1008\u001B[0m update_paths\u001B[38;5;241m.\u001B[39mextend(paths\u001B[38;5;241m.\u001B[39mkeys())\n\u001B[0;32m-> 1010\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mstate \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcore\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mapply_update\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 1011\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcomposition\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1012\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstate\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1013\u001B[0m \u001B[43m \u001B[49m\u001B[43mupdate\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1015\u001B[0m bridge_update \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcore\u001B[38;5;241m.\u001B[39mview(\n\u001B[1;32m 1016\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39minterface()[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124moutputs\u001B[39m\u001B[38;5;124m'\u001B[39m],\n\u001B[1;32m 1017\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mbridge[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124moutputs\u001B[39m\u001B[38;5;124m'\u001B[39m],\n\u001B[1;32m 1018\u001B[0m (),\n\u001B[1;32m 1019\u001B[0m update)\n\u001B[1;32m 1021\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m bridge_update:\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/bigraph_schema/type_system.py:569\u001B[0m, in \u001B[0;36mTypeSystem.apply_update\u001B[0;34m(self, schema, state, update)\u001B[0m\n\u001B[1;32m 566\u001B[0m state \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mapply_update(schema, state, update)\n\u001B[1;32m 568\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(update, \u001B[38;5;28mdict\u001B[39m):\n\u001B[0;32m--> 569\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m key, branch \u001B[38;5;129;01min\u001B[39;00m \u001B[43mupdate\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mitems\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m:\n\u001B[1;32m 570\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m key \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;129;01min\u001B[39;00m schema:\n\u001B[1;32m 571\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mException\u001B[39;00m(\n\u001B[1;32m 572\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtrying to update a key that is not in the schema\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m 573\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mfor state: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mkey\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;130;01m\\n\u001B[39;00m\u001B[38;5;132;01m{\u001B[39;00mstate\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;130;01m\\n\u001B[39;00m\u001B[38;5;124mwith schema:\u001B[39m\u001B[38;5;130;01m\\n\u001B[39;00m\u001B[38;5;132;01m{\u001B[39;00mschema\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m'\u001B[39m)\n", + "\u001B[0;31mKeyboardInterrupt\u001B[0m: " + ] } ], - "execution_count": 6 + "execution_count": 9 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-05-24T21:30:03.368927Z", - "start_time": "2024-05-24T21:30:03.366859Z" + "end_time": "2024-05-24T21:45:24.502052Z", + "start_time": "2024-05-24T21:44:21.776174Z" } }, "cell_type": "code", "source": [ - "import numpy as np\n", - "from random import randint\n", - "\n", - "def perturb_param(param_val, perturbation=0.05):\n", - " valRange = np.linspace(0, param_val*perturbation)\n", + "def run_ode_comparison(process_addresses, model_fp, step, dur, observables):\n", + " processes = [generate_ode_process_instance(entrypoint=model_fp, process_address=address, step_size=step, duration=dur, observables=observables) for address in process_addresses]\n", + " print(processes)\n", + " \n", + " return [process.run({}) for process in processes]\n", " \n", - " random_i = randint(0, valRange.shape[0])\n", - " perturbed_val = valRange[random_i]" - ], - "id": "8ab062d2b17acd90", - "outputs": [], - "execution_count": 7 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:32:44.102618Z", - "start_time": "2024-05-24T21:30:04.338973Z" - } - }, - "cell_type": "code", - "source": [ - "\n", - "input_state = adjust_input_state_parameter(copasi_proc, path_mapping={'floating_species_concentrations': {'pIR': 0.05}})\n", "\n", - "r = copasi_proc.update(input_state)" + "run_ode_comparison(proc_addresses, fp, step, dur, obs1)" ], - "id": "98c088be2c3579c9", + "id": "e510458a52feb56d", "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/Users/alexanderpatrie/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py:194: FutureWarning:\n", - "\n", - "Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", - "\n" + "2024-05-24 17:44:21.913 - amici.sbml_import - INFO - Finished loading SBML (1.07E-02s)\n", + "2024-05-24 17:44:21.955 - amici.sbml_import - INFO - Finished importing SBML (3.94E-02s)\n", + "2024-05-24 17:44:21.974 - amici.sbml_import - INFO - Finished processing SBML observables (1.59E-02s)\n", + "2024-05-24 17:44:21.978 - amici.sbml_import - INFO - Finished processing SBML event observables (3.75E-07s)\n", + "2024-05-24 17:44:22.010 - amici.de_model - INFO - Finished computing xdot (3.25E-03s)\n", + "2024-05-24 17:44:22.015 - amici.de_model - INFO - Finished computing x0 (2.35E-03s)\n" ] }, { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", - "\u001B[0;32m/var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/ipykernel_19813/4083697966.py\u001B[0m in \u001B[0;36m?\u001B[0;34m()\u001B[0m\n\u001B[1;32m 1\u001B[0m \u001B[0minput_state\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0madjust_input_state_parameter\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcopasi_proc\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mpath_mapping\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0;34m'floating_species_concentrations'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0;34m{\u001B[0m\u001B[0;34m'pIR'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0;36m0.05\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 2\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m----> 3\u001B[0;31m \u001B[0mr\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcopasi_proc\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mupdate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0minput_state\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/experiments/parameter_scan.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, inputs)\u001B[0m\n\u001B[1;32m 204\u001B[0m \u001B[0;31m# some port and lives in the state of the simulation (??)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 205\u001B[0m self.composite.merge(\n\u001B[1;32m 206\u001B[0m inputs)\n\u001B[1;32m 207\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 208\u001B[0;31m self.composite.run(\n\u001B[0m\u001B[1;32m 209\u001B[0m self.config['runtime'])\n\u001B[1;32m 210\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 211\u001B[0m \u001B[0mhistories\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcomposite\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgather_results\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, interval, force_complete)\u001B[0m\n\u001B[1;32m 1040\u001B[0m \u001B[0mfull_step\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mmath\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0minf\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1041\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1042\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mpath\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mprocess_paths\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1043\u001B[0m \u001B[0mprocess\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mget_path\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mpath\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1044\u001B[0;31m full_step = self.run_process(\n\u001B[0m\u001B[1;32m 1045\u001B[0m \u001B[0mpath\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1046\u001B[0m \u001B[0mprocess\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1047\u001B[0m \u001B[0mend_time\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, path, process, end_time, full_step, force_complete)\u001B[0m\n\u001B[1;32m 970\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0minterval\u001B[0m \u001B[0;34m<\u001B[0m \u001B[0mfull_step\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 971\u001B[0m \u001B[0mfull_step\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 972\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 973\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mfuture\u001B[0m \u001B[0;34m<=\u001B[0m \u001B[0mend_time\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 974\u001B[0;31m update = self.process_update(\n\u001B[0m\u001B[1;32m 975\u001B[0m \u001B[0mpath\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 976\u001B[0m \u001B[0mprocess\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 977\u001B[0m \u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, path, process, states, interval, ports_key)\u001B[0m\n\u001B[1;32m 912\u001B[0m \u001B[0mReturns\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 913\u001B[0m \u001B[0mTuple\u001B[0m \u001B[0mof\u001B[0m \u001B[0mthe\u001B[0m \u001B[0mdeferred\u001B[0m \u001B[0mupdate\u001B[0m \u001B[0;34m(\u001B[0m\u001B[0;32min\u001B[0m \u001B[0mabsolute\u001B[0m \u001B[0mterms\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mand\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 914\u001B[0m \u001B[0;31m`\u001B[0m\u001B[0;31m`\u001B[0m\u001B[0mstore\u001B[0m\u001B[0;31m`\u001B[0m\u001B[0;31m`\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 915\u001B[0m \"\"\"\n\u001B[0;32m--> 916\u001B[0;31m \u001B[0mupdate\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mprocess\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m'instance'\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0minvoke\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mstates\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 917\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 918\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mdefer_project\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mupdate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0margs\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 919\u001B[0m \u001B[0mschema\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mpath\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0margs\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, state, interval)\u001B[0m\n\u001B[1;32m 465\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0minvoke\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 466\u001B[0;31m \u001B[0mupdate\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mupdate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 467\u001B[0m \u001B[0msync\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mSyncUpdate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mupdate\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 468\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0msync\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, inputs, interval)\u001B[0m\n\u001B[1;32m 189\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 190\u001B[0m \u001B[0;31m# extract end values of concentrations from the model and set them in results\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 191\u001B[0m \u001B[0mresults\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m{\u001B[0m\u001B[0;34m'time'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 192\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0muse_counts\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 193\u001B[0;31m results[self.species_context_key] = {\n\u001B[0m\u001B[1;32m 194\u001B[0m mol_id: float(get_species(\n\u001B[1;32m 195\u001B[0m \u001B[0mname\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mmol_id\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 196\u001B[0m \u001B[0mexact\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 193\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mupdate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minputs\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 194\u001B[0;31m \u001B[0;31m# set copasi values according to what is passed in states for concentrations\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 195\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mcat_id\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mvalue\u001B[0m \u001B[0;32min\u001B[0m \u001B[0minputs\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mspecies_context_key\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mitems\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 196\u001B[0m \u001B[0mset_type\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m'particle_number'\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0;34m'counts'\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mspecies_context_key\u001B[0m \u001B[0;32melse\u001B[0m \u001B[0;34m'concentration'\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 197\u001B[0m species_config = {\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/basico/model_info.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(name, exact, **kwargs)\u001B[0m\n\u001B[1;32m 360\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mi\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mrange\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mnum_metabs\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 361\u001B[0m \u001B[0mmetab\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mmetabs\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mi\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 362\u001B[0m \u001B[0;32massert\u001B[0m \u001B[0;34m(\u001B[0m\u001B[0misinstance\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmetab\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mCOPASI\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mCMetab\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 363\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 364\u001B[0;31m \u001B[0munit\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mmetab\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgetUnitExpression\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 365\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0;32mnot\u001B[0m \u001B[0munit\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 366\u001B[0m \u001B[0munit\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mmodel\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgetQuantityUnit\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m+\u001B[0m \u001B[0;34m'/'\u001B[0m \u001B[0;34m+\u001B[0m \u001B[0mmodel\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgetVolumeUnit\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 367\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/COPASI/__init__.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 5103\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mgetUnitExpression\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 5104\u001B[0m \u001B[0;34mr\"\"\"getUnitExpression(CModelEntity self) -> std::string const &\"\"\"\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 5105\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0m_COPASI\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mCModelEntity_getUnitExpression\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", - "\u001B[0;31mKeyboardInterrupt\u001B[0m: " + "name": "stdout", + "output_type": "stream", + "text": [ + "found a filepath\n" ] - } - ], - "execution_count": 8 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:29:28.945276Z", - "start_time": "2024-05-24T21:29:05.141360Z" - } - }, - "cell_type": "code", - "source": "r = copasi_proc.update(perturbed_state)", - "id": "3d38102427669cf7", - "outputs": [ + }, { "name": "stderr", "output_type": "stream", "text": [ + "2024-05-24 17:44:22.029 - amici.de_model - INFO - Finished computing w (1.06E-02s)\n", + "2024-05-24 17:44:22.632 - amici.de_export - INFO - Finished generating cpp code (5.99E-01s)\n", + "2024-05-24 17:44:30.652 - amici.de_export - INFO - Finished compiling cpp code (8.02E+00s)\n", "/Users/alexanderpatrie/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py:194: FutureWarning:\n", "\n", "Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", "\n" ] }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[, , ]\n" + ] + }, { "ename": "KeyboardInterrupt", "evalue": "", @@ -284,937 +189,52 @@ "traceback": [ "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", - "\u001B[0;32m/var/folders/yy/8crj8x7x5_3b86f0js6_0bn00000gr/T/ipykernel_19767/1148221396.py\u001B[0m in \u001B[0;36m?\u001B[0;34m()\u001B[0m\n\u001B[0;32m----> 1\u001B[0;31m \u001B[0mr\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcopasi_proc\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mupdate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mperturbed_state\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/experiments/parameter_scan.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, inputs)\u001B[0m\n\u001B[1;32m 204\u001B[0m \u001B[0;31m# some port and lives in the state of the simulation (??)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 205\u001B[0m self.composite.merge(\n\u001B[1;32m 206\u001B[0m inputs)\n\u001B[1;32m 207\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 208\u001B[0;31m self.composite.run(\n\u001B[0m\u001B[1;32m 209\u001B[0m self.config['runtime'])\n\u001B[1;32m 210\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 211\u001B[0m \u001B[0mhistories\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcomposite\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgather_results\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, interval, force_complete)\u001B[0m\n\u001B[1;32m 1040\u001B[0m \u001B[0mfull_step\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mmath\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0minf\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1041\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1042\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mpath\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mprocess_paths\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1043\u001B[0m \u001B[0mprocess\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mget_path\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mpath\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1044\u001B[0;31m full_step = self.run_process(\n\u001B[0m\u001B[1;32m 1045\u001B[0m \u001B[0mpath\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1046\u001B[0m \u001B[0mprocess\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1047\u001B[0m \u001B[0mend_time\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, path, process, end_time, full_step, force_complete)\u001B[0m\n\u001B[1;32m 970\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0minterval\u001B[0m \u001B[0;34m<\u001B[0m \u001B[0mfull_step\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 971\u001B[0m \u001B[0mfull_step\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 972\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 973\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mfuture\u001B[0m \u001B[0;34m<=\u001B[0m \u001B[0mend_time\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 974\u001B[0;31m update = self.process_update(\n\u001B[0m\u001B[1;32m 975\u001B[0m \u001B[0mpath\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 976\u001B[0m \u001B[0mprocess\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 977\u001B[0m \u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, path, process, states, interval, ports_key)\u001B[0m\n\u001B[1;32m 912\u001B[0m \u001B[0mReturns\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 913\u001B[0m \u001B[0mTuple\u001B[0m \u001B[0mof\u001B[0m \u001B[0mthe\u001B[0m \u001B[0mdeferred\u001B[0m \u001B[0mupdate\u001B[0m \u001B[0;34m(\u001B[0m\u001B[0;32min\u001B[0m \u001B[0mabsolute\u001B[0m \u001B[0mterms\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mand\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 914\u001B[0m \u001B[0;31m`\u001B[0m\u001B[0;31m`\u001B[0m\u001B[0mstore\u001B[0m\u001B[0;31m`\u001B[0m\u001B[0;31m`\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 915\u001B[0m \"\"\"\n\u001B[0;32m--> 916\u001B[0;31m \u001B[0mupdate\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mprocess\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m'instance'\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0minvoke\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mstates\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 917\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 918\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mdefer_project\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mupdate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0margs\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 919\u001B[0m \u001B[0mschema\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mpath\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0margs\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, state, interval)\u001B[0m\n\u001B[1;32m 465\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0minvoke\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 466\u001B[0;31m \u001B[0mupdate\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mupdate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mstate\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 467\u001B[0m \u001B[0msync\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mSyncUpdate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mupdate\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 468\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0msync\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self, inputs, interval)\u001B[0m\n\u001B[1;32m 189\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 190\u001B[0m \u001B[0;31m# extract end values of concentrations from the model and set them in results\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 191\u001B[0m \u001B[0mresults\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m{\u001B[0m\u001B[0;34m'time'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 192\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0muse_counts\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 193\u001B[0;31m results[self.species_context_key] = {\n\u001B[0m\u001B[1;32m 194\u001B[0m mol_id: float(get_species(\n\u001B[1;32m 195\u001B[0m \u001B[0mname\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mmol_id\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 196\u001B[0m \u001B[0mexact\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 193\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mupdate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minputs\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0minterval\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 194\u001B[0;31m \u001B[0;31m# set copasi values according to what is passed in states for concentrations\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 195\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mcat_id\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mvalue\u001B[0m \u001B[0;32min\u001B[0m \u001B[0minputs\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mspecies_context_key\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mitems\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 196\u001B[0m \u001B[0mset_type\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m'particle_number'\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0;34m'counts'\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mspecies_context_key\u001B[0m \u001B[0;32melse\u001B[0m \u001B[0;34m'concentration'\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 197\u001B[0m species_config = {\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/basico/model_info.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(name, exact, **kwargs)\u001B[0m\n\u001B[1;32m 350\u001B[0m \u001B[0;32massert\u001B[0m \u001B[0;34m(\u001B[0m\u001B[0misinstance\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmodel\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mCOPASI\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mCModel\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 351\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 352\u001B[0m \u001B[0mmodel\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcompileIfNecessary\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 353\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 354\u001B[0;31m \u001B[0mmetabs\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mmodel\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgetMetabolites\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 355\u001B[0m \u001B[0;32massert\u001B[0m \u001B[0;34m(\u001B[0m\u001B[0misinstance\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmetabs\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mCOPASI\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mMetabVector\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 356\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 357\u001B[0m \u001B[0mnum_metabs\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mmetabs\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0msize\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/COPASI/__init__.py\u001B[0m in \u001B[0;36m?\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 8777\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mgetMetabolites\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 8778\u001B[0m \u001B[0;34mr\"\"\"getMetabolites(CModel self) -> MetabVector\"\"\"\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 8779\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0m_COPASI\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mCModel_getMetabolites\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", + "Cell \u001B[0;32mIn[5], line 8\u001B[0m\n\u001B[1;32m 3\u001B[0m \u001B[38;5;28mprint\u001B[39m(processes)\n\u001B[1;32m 5\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m [process\u001B[38;5;241m.\u001B[39mrun({}) \u001B[38;5;28;01mfor\u001B[39;00m process \u001B[38;5;129;01min\u001B[39;00m processes]\n\u001B[0;32m----> 8\u001B[0m \u001B[43mrun_ode_comparison\u001B[49m\u001B[43m(\u001B[49m\u001B[43mproc_addresses\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mfp\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mstep\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdur\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mobs1\u001B[49m\u001B[43m)\u001B[49m\n", + "Cell \u001B[0;32mIn[5], line 5\u001B[0m, in \u001B[0;36mrun_ode_comparison\u001B[0;34m(process_addresses, model_fp, step, dur, observables)\u001B[0m\n\u001B[1;32m 2\u001B[0m processes \u001B[38;5;241m=\u001B[39m [generate_ode_process_instance(entrypoint\u001B[38;5;241m=\u001B[39mmodel_fp, process_address\u001B[38;5;241m=\u001B[39maddress, step_size\u001B[38;5;241m=\u001B[39mstep, duration\u001B[38;5;241m=\u001B[39mdur, observables\u001B[38;5;241m=\u001B[39mobservables) \u001B[38;5;28;01mfor\u001B[39;00m address \u001B[38;5;129;01min\u001B[39;00m process_addresses]\n\u001B[1;32m 3\u001B[0m \u001B[38;5;28mprint\u001B[39m(processes)\n\u001B[0;32m----> 5\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m [process\u001B[38;5;241m.\u001B[39mrun({}) \u001B[38;5;28;01mfor\u001B[39;00m process \u001B[38;5;129;01min\u001B[39;00m processes]\n", + "Cell \u001B[0;32mIn[5], line 5\u001B[0m, in \u001B[0;36m\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 2\u001B[0m processes \u001B[38;5;241m=\u001B[39m [generate_ode_process_instance(entrypoint\u001B[38;5;241m=\u001B[39mmodel_fp, process_address\u001B[38;5;241m=\u001B[39maddress, step_size\u001B[38;5;241m=\u001B[39mstep, duration\u001B[38;5;241m=\u001B[39mdur, observables\u001B[38;5;241m=\u001B[39mobservables) \u001B[38;5;28;01mfor\u001B[39;00m address \u001B[38;5;129;01min\u001B[39;00m process_addresses]\n\u001B[1;32m 3\u001B[0m \u001B[38;5;28mprint\u001B[39m(processes)\n\u001B[0;32m----> 5\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m [\u001B[43mprocess\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun\u001B[49m\u001B[43m(\u001B[49m\u001B[43m{\u001B[49m\u001B[43m}\u001B[49m\u001B[43m)\u001B[49m \u001B[38;5;28;01mfor\u001B[39;00m process \u001B[38;5;129;01min\u001B[39;00m processes]\n", + "File \u001B[0;32m~/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/instance.py:15\u001B[0m, in \u001B[0;36mODEProcess.run\u001B[0;34m(self, input_state)\u001B[0m\n\u001B[1;32m 14\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mrun\u001B[39m(\u001B[38;5;28mself\u001B[39m, input_state\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m):\n\u001B[0;32m---> 15\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupdate\u001B[49m\u001B[43m(\u001B[49m\u001B[43minput_state\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;129;43;01mor\u001B[39;49;00m\u001B[43m \u001B[49m\u001B[43m{\u001B[49m\u001B[43m}\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/experiments/parameter_scan.py:208\u001B[0m, in \u001B[0;36mRunProcess.update\u001B[0;34m(self, inputs)\u001B[0m\n\u001B[1;32m 202\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mupdate\u001B[39m(\u001B[38;5;28mself\u001B[39m, inputs):\n\u001B[1;32m 203\u001B[0m \u001B[38;5;66;03m# TODO: instead of the composite being a reference it is instead read through\u001B[39;00m\n\u001B[1;32m 204\u001B[0m \u001B[38;5;66;03m# some port and lives in the state of the simulation (??)\u001B[39;00m\n\u001B[1;32m 205\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcomposite\u001B[38;5;241m.\u001B[39mmerge(\n\u001B[1;32m 206\u001B[0m inputs)\n\u001B[0;32m--> 208\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcomposite\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 209\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconfig\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mruntime\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 211\u001B[0m histories \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcomposite\u001B[38;5;241m.\u001B[39mgather_results()\n\u001B[1;32m 213\u001B[0m results \u001B[38;5;241m=\u001B[39m {\n\u001B[1;32m 214\u001B[0m key: timeseries_from_history(\n\u001B[1;32m 215\u001B[0m history,\n\u001B[1;32m 216\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mconfig[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mobservables\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m+\u001B[39m [[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtime\u001B[39m\u001B[38;5;124m'\u001B[39m]])\n\u001B[1;32m 217\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m key, history \u001B[38;5;129;01min\u001B[39;00m histories\u001B[38;5;241m.\u001B[39mitems()}\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py:1044\u001B[0m, in \u001B[0;36mComposite.run\u001B[0;34m(self, interval, force_complete)\u001B[0m\n\u001B[1;32m 1042\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m path \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mprocess_paths:\n\u001B[1;32m 1043\u001B[0m process \u001B[38;5;241m=\u001B[39m get_path(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mstate, path)\n\u001B[0;32m-> 1044\u001B[0m full_step \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun_process\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 1045\u001B[0m \u001B[43m \u001B[49m\u001B[43mpath\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1046\u001B[0m \u001B[43m \u001B[49m\u001B[43mprocess\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1047\u001B[0m \u001B[43m \u001B[49m\u001B[43mend_time\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1048\u001B[0m \u001B[43m \u001B[49m\u001B[43mfull_step\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1049\u001B[0m \u001B[43m \u001B[49m\u001B[43mforce_complete\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1051\u001B[0m \u001B[38;5;66;03m# apply updates based on process times in self.front\u001B[39;00m\n\u001B[1;32m 1052\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m full_step \u001B[38;5;241m==\u001B[39m math\u001B[38;5;241m.\u001B[39minf:\n\u001B[1;32m 1053\u001B[0m \u001B[38;5;66;03m# no processes ran, jump to next process\u001B[39;00m\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py:974\u001B[0m, in \u001B[0;36mComposite.run_process\u001B[0;34m(self, path, process, end_time, full_step, force_complete)\u001B[0m\n\u001B[1;32m 971\u001B[0m full_step \u001B[38;5;241m=\u001B[39m interval\n\u001B[1;32m 973\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m future \u001B[38;5;241m<\u001B[39m\u001B[38;5;241m=\u001B[39m end_time:\n\u001B[0;32m--> 974\u001B[0m update \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mprocess_update\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 975\u001B[0m \u001B[43m \u001B[49m\u001B[43mpath\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 976\u001B[0m \u001B[43m \u001B[49m\u001B[43mprocess\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 977\u001B[0m \u001B[43m \u001B[49m\u001B[43mstate\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 978\u001B[0m \u001B[43m \u001B[49m\u001B[43mprocess_interval\u001B[49m\n\u001B[1;32m 979\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 981\u001B[0m \u001B[38;5;66;03m# update front, to be applied at its projected time\u001B[39;00m\n\u001B[1;32m 982\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfront[path][\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtime\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m future\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py:916\u001B[0m, in \u001B[0;36mComposite.process_update\u001B[0;34m(self, path, process, states, interval, ports_key)\u001B[0m\n\u001B[1;32m 889\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mprocess_update\u001B[39m(\n\u001B[1;32m 890\u001B[0m \u001B[38;5;28mself\u001B[39m,\n\u001B[1;32m 891\u001B[0m path,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 894\u001B[0m interval,\n\u001B[1;32m 895\u001B[0m ports_key\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124moutputs\u001B[39m\u001B[38;5;124m'\u001B[39m):\n\u001B[1;32m 897\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m\"\"\"Start generating a process's update.\u001B[39;00m\n\u001B[1;32m 898\u001B[0m \n\u001B[1;32m 899\u001B[0m \u001B[38;5;124;03m This function is similar to :py:meth:`_invoke_process` except in\u001B[39;00m\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 914\u001B[0m \u001B[38;5;124;03m ``store``.\u001B[39;00m\n\u001B[1;32m 915\u001B[0m \u001B[38;5;124;03m \"\"\"\u001B[39;00m\n\u001B[0;32m--> 916\u001B[0m update \u001B[38;5;241m=\u001B[39m \u001B[43mprocess\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43minstance\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43minvoke\u001B[49m\u001B[43m(\u001B[49m\u001B[43mstates\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43minterval\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 918\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mdefer_project\u001B[39m(update, args):\n\u001B[1;32m 919\u001B[0m schema, state, path \u001B[38;5;241m=\u001B[39m args\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py:466\u001B[0m, in \u001B[0;36mProcess.invoke\u001B[0;34m(self, state, interval)\u001B[0m\n\u001B[1;32m 465\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21minvoke\u001B[39m(\u001B[38;5;28mself\u001B[39m, state, interval):\n\u001B[0;32m--> 466\u001B[0m update \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupdate\u001B[49m\u001B[43m(\u001B[49m\u001B[43mstate\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43minterval\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 467\u001B[0m sync \u001B[38;5;241m=\u001B[39m SyncUpdate(update)\n\u001B[1;32m 468\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m sync\n", + "File \u001B[0;32m~/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py:193\u001B[0m, in \u001B[0;36mCopasiProcess.update\u001B[0;34m(self, inputs, interval)\u001B[0m\n\u001B[1;32m 191\u001B[0m results \u001B[38;5;241m=\u001B[39m {\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtime\u001B[39m\u001B[38;5;124m'\u001B[39m: interval}\n\u001B[1;32m 192\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39muse_counts:\n\u001B[0;32m--> 193\u001B[0m results[\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mspecies_context_key] \u001B[38;5;241m=\u001B[39m {\n\u001B[1;32m 194\u001B[0m mol_id: \u001B[38;5;28mfloat\u001B[39m(get_species(\n\u001B[1;32m 195\u001B[0m name\u001B[38;5;241m=\u001B[39mmol_id,\n\u001B[1;32m 196\u001B[0m exact\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m,\n\u001B[1;32m 197\u001B[0m model\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcopasi_model_object\n\u001B[1;32m 198\u001B[0m )\u001B[38;5;241m.\u001B[39mparticle_number[\u001B[38;5;241m0\u001B[39m])\n\u001B[1;32m 199\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m mol_id \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfloating_species_list}\n\u001B[1;32m 200\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m 201\u001B[0m results[\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mspecies_context_key] \u001B[38;5;241m=\u001B[39m {\n\u001B[1;32m 202\u001B[0m mol_id: \u001B[38;5;28mfloat\u001B[39m(get_species(\n\u001B[1;32m 203\u001B[0m name\u001B[38;5;241m=\u001B[39mmol_id,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 206\u001B[0m )\u001B[38;5;241m.\u001B[39mconcentration[\u001B[38;5;241m0\u001B[39m])\n\u001B[1;32m 207\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m mol_id \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfloating_species_list}\n", + "File \u001B[0;32m~/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py:194\u001B[0m, in \u001B[0;36m\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 191\u001B[0m results \u001B[38;5;241m=\u001B[39m {\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtime\u001B[39m\u001B[38;5;124m'\u001B[39m: interval}\n\u001B[1;32m 192\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39muse_counts:\n\u001B[1;32m 193\u001B[0m results[\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mspecies_context_key] \u001B[38;5;241m=\u001B[39m {\n\u001B[0;32m--> 194\u001B[0m mol_id: \u001B[38;5;28mfloat\u001B[39m(\u001B[43mget_species\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 195\u001B[0m \u001B[43m \u001B[49m\u001B[43mname\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mmol_id\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 196\u001B[0m \u001B[43m \u001B[49m\u001B[43mexact\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 197\u001B[0m \u001B[43m \u001B[49m\u001B[43mmodel\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcopasi_model_object\u001B[49m\n\u001B[1;32m 198\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241m.\u001B[39mparticle_number[\u001B[38;5;241m0\u001B[39m])\n\u001B[1;32m 199\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m mol_id \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfloating_species_list}\n\u001B[1;32m 200\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m 201\u001B[0m results[\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mspecies_context_key] \u001B[38;5;241m=\u001B[39m {\n\u001B[1;32m 202\u001B[0m mol_id: \u001B[38;5;28mfloat\u001B[39m(get_species(\n\u001B[1;32m 203\u001B[0m name\u001B[38;5;241m=\u001B[39mmol_id,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 206\u001B[0m )\u001B[38;5;241m.\u001B[39mconcentration[\u001B[38;5;241m0\u001B[39m])\n\u001B[1;32m 207\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m mol_id \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfloating_species_list}\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/basico/model_info.py:419\u001B[0m, in \u001B[0;36mget_species\u001B[0;34m(name, exact, **kwargs)\u001B[0m\n\u001B[1;32m 416\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m data:\n\u001B[1;32m 417\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[0;32m--> 419\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mpandas\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mDataFrame\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdata\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdata\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241m.\u001B[39mset_index(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mname\u001B[39m\u001B[38;5;124m'\u001B[39m)\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/pandas/core/frame.py:851\u001B[0m, in \u001B[0;36mDataFrame.__init__\u001B[0;34m(self, data, index, columns, dtype, copy)\u001B[0m\n\u001B[1;32m 849\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m columns \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m 850\u001B[0m columns \u001B[38;5;241m=\u001B[39m ensure_index(columns)\n\u001B[0;32m--> 851\u001B[0m arrays, columns, index \u001B[38;5;241m=\u001B[39m \u001B[43mnested_data_to_arrays\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 852\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;66;43;03m# error: Argument 3 to \"nested_data_to_arrays\" has incompatible\u001B[39;49;00m\n\u001B[1;32m 853\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;66;43;03m# type \"Optional[Collection[Any]]\"; expected \"Optional[Index]\"\u001B[39;49;00m\n\u001B[1;32m 854\u001B[0m \u001B[43m \u001B[49m\u001B[43mdata\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 855\u001B[0m \u001B[43m \u001B[49m\u001B[43mcolumns\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 856\u001B[0m \u001B[43m \u001B[49m\u001B[43mindex\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;66;43;03m# type: ignore[arg-type]\u001B[39;49;00m\n\u001B[1;32m 857\u001B[0m \u001B[43m \u001B[49m\u001B[43mdtype\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 858\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 859\u001B[0m mgr \u001B[38;5;241m=\u001B[39m arrays_to_mgr(\n\u001B[1;32m 860\u001B[0m arrays,\n\u001B[1;32m 861\u001B[0m columns,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 864\u001B[0m typ\u001B[38;5;241m=\u001B[39mmanager,\n\u001B[1;32m 865\u001B[0m )\n\u001B[1;32m 866\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/pandas/core/internals/construction.py:520\u001B[0m, in \u001B[0;36mnested_data_to_arrays\u001B[0;34m(data, columns, index, dtype)\u001B[0m\n\u001B[1;32m 517\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m is_named_tuple(data[\u001B[38;5;241m0\u001B[39m]) \u001B[38;5;129;01mand\u001B[39;00m columns \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m 518\u001B[0m columns \u001B[38;5;241m=\u001B[39m ensure_index(data[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;241m.\u001B[39m_fields)\n\u001B[0;32m--> 520\u001B[0m arrays, columns \u001B[38;5;241m=\u001B[39m \u001B[43mto_arrays\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdata\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcolumns\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdtype\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdtype\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 521\u001B[0m columns \u001B[38;5;241m=\u001B[39m ensure_index(columns)\n\u001B[1;32m 523\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m index \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/pandas/core/internals/construction.py:837\u001B[0m, in \u001B[0;36mto_arrays\u001B[0;34m(data, columns, dtype)\u001B[0m\n\u001B[1;32m 835\u001B[0m arr \u001B[38;5;241m=\u001B[39m _list_to_arrays(data)\n\u001B[1;32m 836\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(data[\u001B[38;5;241m0\u001B[39m], abc\u001B[38;5;241m.\u001B[39mMapping):\n\u001B[0;32m--> 837\u001B[0m arr, columns \u001B[38;5;241m=\u001B[39m \u001B[43m_list_of_dict_to_arrays\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdata\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcolumns\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 838\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(data[\u001B[38;5;241m0\u001B[39m], ABCSeries):\n\u001B[1;32m 839\u001B[0m arr, columns \u001B[38;5;241m=\u001B[39m _list_of_series_to_arrays(data, columns)\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/pandas/core/internals/construction.py:918\u001B[0m, in \u001B[0;36m_list_of_dict_to_arrays\u001B[0;34m(data, columns)\u001B[0m\n\u001B[1;32m 916\u001B[0m sort \u001B[38;5;241m=\u001B[39m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28many\u001B[39m(\u001B[38;5;28misinstance\u001B[39m(d, \u001B[38;5;28mdict\u001B[39m) \u001B[38;5;28;01mfor\u001B[39;00m d \u001B[38;5;129;01min\u001B[39;00m data)\n\u001B[1;32m 917\u001B[0m pre_cols \u001B[38;5;241m=\u001B[39m lib\u001B[38;5;241m.\u001B[39mfast_unique_multiple_list_gen(gen, sort\u001B[38;5;241m=\u001B[39msort)\n\u001B[0;32m--> 918\u001B[0m columns \u001B[38;5;241m=\u001B[39m \u001B[43mensure_index\u001B[49m\u001B[43m(\u001B[49m\u001B[43mpre_cols\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 920\u001B[0m \u001B[38;5;66;03m# assure that they are of the base dict class and not of derived\u001B[39;00m\n\u001B[1;32m 921\u001B[0m \u001B[38;5;66;03m# classes\u001B[39;00m\n\u001B[1;32m 922\u001B[0m data \u001B[38;5;241m=\u001B[39m [d \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mtype\u001B[39m(d) \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28mdict\u001B[39m \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;28mdict\u001B[39m(d) \u001B[38;5;28;01mfor\u001B[39;00m d \u001B[38;5;129;01min\u001B[39;00m data] \u001B[38;5;66;03m# noqa: E721\u001B[39;00m\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/pandas/core/indexes/base.py:7647\u001B[0m, in \u001B[0;36mensure_index\u001B[0;34m(index_like, copy)\u001B[0m\n\u001B[1;32m 7645\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m MultiIndex\u001B[38;5;241m.\u001B[39mfrom_arrays(index_like)\n\u001B[1;32m 7646\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m-> 7647\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mIndex\u001B[49m\u001B[43m(\u001B[49m\u001B[43mindex_like\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcopy\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcopy\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mtupleize_cols\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m)\u001B[49m\n\u001B[1;32m 7648\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m 7649\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m Index(index_like, copy\u001B[38;5;241m=\u001B[39mcopy)\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/pandas/core/indexes/base.py:565\u001B[0m, in \u001B[0;36mIndex.__new__\u001B[0;34m(cls, data, dtype, copy, name, tupleize_cols)\u001B[0m\n\u001B[1;32m 562\u001B[0m data \u001B[38;5;241m=\u001B[39m com\u001B[38;5;241m.\u001B[39masarray_tuplesafe(data, dtype\u001B[38;5;241m=\u001B[39m_dtype_obj)\n\u001B[1;32m 564\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m--> 565\u001B[0m arr \u001B[38;5;241m=\u001B[39m \u001B[43msanitize_array\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdata\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43;01mNone\u001B[39;49;00m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdtype\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdtype\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcopy\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcopy\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 566\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m err:\n\u001B[1;32m 567\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mindex must be specified when data is not list-like\u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mstr\u001B[39m(err):\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/pandas/core/construction.py:657\u001B[0m, in \u001B[0;36msanitize_array\u001B[0;34m(data, index, dtype, copy, allow_2d)\u001B[0m\n\u001B[1;32m 655\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m subarr\u001B[38;5;241m.\u001B[39mdtype \u001B[38;5;241m==\u001B[39m \u001B[38;5;28mobject\u001B[39m:\n\u001B[1;32m 656\u001B[0m subarr \u001B[38;5;241m=\u001B[39m cast(np\u001B[38;5;241m.\u001B[39mndarray, subarr)\n\u001B[0;32m--> 657\u001B[0m subarr \u001B[38;5;241m=\u001B[39m \u001B[43mmaybe_infer_to_datetimelike\u001B[49m\u001B[43m(\u001B[49m\u001B[43msubarr\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 659\u001B[0m subarr \u001B[38;5;241m=\u001B[39m _sanitize_ndim(subarr, data, dtype, index, allow_2d\u001B[38;5;241m=\u001B[39mallow_2d)\n\u001B[1;32m 661\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(subarr, np\u001B[38;5;241m.\u001B[39mndarray):\n\u001B[1;32m 662\u001B[0m \u001B[38;5;66;03m# at this point we should have dtype be None or subarr.dtype == dtype\u001B[39;00m\n", + "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-JaN5cQMh-py3.10/lib/python3.10/site-packages/pandas/core/dtypes/cast.py:1190\u001B[0m, in \u001B[0;36mmaybe_infer_to_datetimelike\u001B[0;34m(value)\u001B[0m\n\u001B[1;32m 1185\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m value\n\u001B[1;32m 1187\u001B[0m \u001B[38;5;66;03m# error: Incompatible return value type (got \"Union[ExtensionArray,\u001B[39;00m\n\u001B[1;32m 1188\u001B[0m \u001B[38;5;66;03m# ndarray[Any, Any]]\", expected \"Union[ndarray[Any, Any], DatetimeArray,\u001B[39;00m\n\u001B[1;32m 1189\u001B[0m \u001B[38;5;66;03m# TimedeltaArray, PeriodArray, IntervalArray]\")\u001B[39;00m\n\u001B[0;32m-> 1190\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mlib\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmaybe_convert_objects\u001B[49m\u001B[43m(\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;66;43;03m# type: ignore[return-value]\u001B[39;49;00m\n\u001B[1;32m 1191\u001B[0m \u001B[43m \u001B[49m\u001B[43mvalue\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1192\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;66;43;03m# Here we do not convert numeric dtypes, as if we wanted that,\u001B[39;49;00m\n\u001B[1;32m 1193\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;66;43;03m# numpy would have done it for us.\u001B[39;49;00m\n\u001B[1;32m 1194\u001B[0m \u001B[43m \u001B[49m\u001B[43mconvert_numeric\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 1195\u001B[0m \u001B[43m \u001B[49m\u001B[43mconvert_non_numeric\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 1196\u001B[0m \u001B[43m \u001B[49m\u001B[43mdtype_if_all_nat\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnp\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdtype\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mM8[ns]\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1197\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n", "\u001B[0;31mKeyboardInterrupt\u001B[0m: " ] } ], - "execution_count": 19 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:11.531666Z", - "start_time": "2024-05-24T21:28:11.528398Z" - } - }, - "cell_type": "code", - "source": "copasi_proc.inputs(), copasi_proc.outputs()", - "id": "73f71d3aec557a2a", - "outputs": [ - { - "data": { - "text/plain": [ - "({'time': 'float',\n", - " 'floating_species_concentrations': {'IR': {'_type': 'float',\n", - " '_apply': 'set'},\n", - " 'pIR': {'_type': 'float', '_apply': 'set'},\n", - " 'IRS': {'_type': 'float', '_apply': 'set'},\n", - " 'pIRS': {'_type': 'float', '_apply': 'set'},\n", - " 'iIRS': {'_type': 'float', '_apply': 'set'},\n", - " 'Akt': {'_type': 'float', '_apply': 'set'},\n", - " 'pAkt': {'_type': 'float', '_apply': 'set'},\n", - " 'mTORC1': {'_type': 'float', '_apply': 'set'},\n", - " 'pmTORC1': {'_type': 'float', '_apply': 'set'},\n", - " 'mTORC2': {'_type': 'float', '_apply': 'set'},\n", - " 'pmTORC2': {'_type': 'float', '_apply': 'set'},\n", - " 'imTORC2': {'_type': 'float', '_apply': 'set'},\n", - " 'mTORC1_DEPTOR': {'_type': 'float', '_apply': 'set'},\n", - " 'mTORC2_DEPTOR': {'_type': 'float', '_apply': 'set'},\n", - " 'DEPTOR': {'_type': 'float', '_apply': 'set'},\n", - " 'pDEPTOR': {'_type': 'float', '_apply': 'set'}},\n", - " 'model_parameters': {'V1': {'_type': 'float', '_apply': 'set'},\n", - " 'Km1': {'_type': 'float', '_apply': 'set'},\n", - " 'V2': {'_type': 'float', '_apply': 'set'},\n", - " 'Km2': {'_type': 'float', '_apply': 'set'},\n", - " 'k3c': {'_type': 'float', '_apply': 'set'},\n", - " 'Km3': {'_type': 'float', '_apply': 'set'},\n", - " 'V4': {'_type': 'float', '_apply': 'set'},\n", - " 'Km4': {'_type': 'float', '_apply': 'set'},\n", - " 'k5ca': {'_type': 'float', '_apply': 'set'},\n", - " 'Km5a': {'_type': 'float', '_apply': 'set'},\n", - " 'k5cb': {'_type': 'float', '_apply': 'set'},\n", - " 'Km5b': {'_type': 'float', '_apply': 'set'},\n", - " 'V6': {'_type': 'float', '_apply': 'set'},\n", - " 'Km6': {'_type': 'float', '_apply': 'set'},\n", - " 'k7c': {'_type': 'float', '_apply': 'set'},\n", - " 'Km7': {'_type': 'float', '_apply': 'set'},\n", - " 'V8': {'_type': 'float', '_apply': 'set'},\n", - " 'Km8': {'_type': 'float', '_apply': 'set'},\n", - " 'k9c': {'_type': 'float', '_apply': 'set'},\n", - " 'Km9': {'_type': 'float', '_apply': 'set'},\n", - " 'V10': {'_type': 'float', '_apply': 'set'},\n", - " 'Km10': {'_type': 'float', '_apply': 'set'},\n", - " 'k11ca': {'_type': 'float', '_apply': 'set'},\n", - " 'Km11a': {'_type': 'float', '_apply': 'set'},\n", - " 'k11cb': {'_type': 'float', '_apply': 'set'},\n", - " 'Km11b': {'_type': 'float', '_apply': 'set'},\n", - " 'V12': {'_type': 'float', '_apply': 'set'},\n", - " 'Km12': {'_type': 'float', '_apply': 'set'},\n", - " 'k13f': {'_type': 'float', '_apply': 'set'},\n", - " 'k13r': {'_type': 'float', '_apply': 'set'},\n", - " 'k14f': {'_type': 'float', '_apply': 'set'},\n", - " 'k14r': {'_type': 'float', '_apply': 'set'},\n", - " 'k15c': {'_type': 'float', '_apply': 'set'},\n", - " 'Km15': {'_type': 'float', '_apply': 'set'},\n", - " 'V16': {'_type': 'float', '_apply': 'set'},\n", - " 'Km16': {'_type': 'float', '_apply': 'set'},\n", - " 'ks17': {'_type': 'float', '_apply': 'set'},\n", - " 'kd18': {'_type': 'float', '_apply': 'set'}},\n", - " 'reactions': {'v1': 'float',\n", - " 'v2': 'float',\n", - " 'v3': 'float',\n", - " 'v4': 'float',\n", - " 'v5': 'float',\n", - " 'v6': 'float',\n", - " 'v7': 'float',\n", - " 'v8': 'float',\n", - " 'v9': 'float',\n", - " 'v10': 'float',\n", - " 'v11': 'float',\n", - " 'v12': 'float',\n", - " 'v13': 'float',\n", - " 'v14': 'float',\n", - " 'v15': 'float',\n", - " 'v16': 'float',\n", - " 'v17': 'float',\n", - " 'v18': 'float'}},\n", - " {'results': {'time': 'list[float]',\n", - " 'floating_species_concentrations': {'Akt': {'_type': 'list',\n", - " '_element': {'_type': 'float',\n", - " '_apply': 'set',\n", - " '_check': 'check_float',\n", - " '_serialize': 'to_string',\n", - " '_description': '64-bit floating point precision number',\n", - " '_default': '0.0',\n", - " '_deserialize': 'deserialize_float',\n", - " '_divide': 'divide_float',\n", - " '_inherit': ['number']}}}}})" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 9 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:11.533951Z", - "start_time": "2024-05-24T21:28:11.532163Z" - } - }, - "cell_type": "code", - "source": [ - "obs = ProcessObservable(path_root='r', root_children=['x', 'y', 'z'])\n", - "\n", - "\n", - "[[obs.path_root, *obs.root_children]]" - ], - "id": "cf337903417eda0e", - "outputs": [ - { - "data": { - "text/plain": [ - "[['r', 'x', 'y', 'z']]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 10 + "execution_count": 5 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-05-24T21:28:11.535729Z", - "start_time": "2024-05-24T21:28:11.534503Z" + "end_time": "2024-05-24T21:42:45.293333Z", + "start_time": "2024-05-24T21:42:45.291951Z" } }, "cell_type": "code", - "source": "# TODO: create run process for each simulator involved in the comparison", - "id": "74bc32d5ccb9bfda", + "source": "", + "id": "46bcae7c258c69cd", "outputs": [], - "execution_count": 11 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:11.538053Z", - "start_time": "2024-05-24T21:28:11.536333Z" - } - }, - "cell_type": "code", - "source": "copasi_process", - "id": "928df4617c927be2", - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 12 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:11.540258Z", - "start_time": "2024-05-24T21:28:11.538526Z" - } - }, - "cell_type": "code", - "source": "copasi_process.process", - "id": "b306f2e44bec1aae", - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 13 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:12.366089Z", - "start_time": "2024-05-24T21:28:11.540856Z" - } - }, - "cell_type": "code", - "source": [ - "copasi_results = copasi_process.update({})\n", - "amici_results = t_process.update({})" - ], - "id": "19b333bac3496818", - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alexanderpatrie/Desktop/repos/biosimulator-processes/biosimulator_processes/processes/copasi_process.py:194: FutureWarning:\n", - "\n", - "Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", - "\n" - ] - } - ], - "execution_count": 14 + "execution_count": 4 }, { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:12.368506Z", - "start_time": "2024-05-24T21:28:12.366799Z" - } - }, + "metadata": {}, "cell_type": "code", - "source": "from process_bigraph import pp", - "id": "dafbc405e234e249", "outputs": [], - "execution_count": 15 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:12.371936Z", - "start_time": "2024-05-24T21:28:12.369087Z" - } - }, - "cell_type": "code", - "source": "pp(copasi_results)", - "id": "5ade772953b70cb7", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{ 'results': { 'floating_species_concentrations': { 'Akt': [ 0.0,\n", - " 6.021953401729781e+22,\n", - " 6.021112979401326e+22,\n", - " 6.019655556618463e+22,\n", - " 6.017768516010995e+22,\n", - " 6.015611698907673e+22,\n", - " 6.013288966310516e+22,\n", - " 6.01085505403383e+22,\n", - " 6.008328606883569e+22,\n", - " 6.005703941780694e+22,\n", - " 6.002960066698436e+22,\n", - " 6.000067131788502e+22,\n", - " 5.9969908581614876e+22,\n", - " 5.993695481550904e+22,\n", - " 5.990145645356191e+22,\n", - " 5.986307568136125e+22,\n", - " 5.9821497205740645e+22,\n", - " 5.977643175803161e+22,\n", - " 5.9727617475413625e+22,\n", - " 5.967481993424905e+22,\n", - " 5.961783135862215e+22,\n", - " 5.955646934641475e+22,\n", - " 5.949057533931026e+22,\n", - " 5.942001298074558e+22,\n", - " 5.934466644826192e+22,\n", - " 5.92644388164159e+22,\n", - " 5.917925047858655e+22,\n", - " 5.90890376459404e+22,\n", - " 5.899375093026752e+22,\n", - " 5.889335397481922e+22,\n", - " 5.8787822248314775e+22,\n", - " 5.867714182375898e+22,\n", - " 5.856130833977876e+22,\n", - " 5.844032588664249e+22,\n", - " 5.831420610416965e+22,\n", - " 5.81829672873341e+22,\n", - " 5.8046633557537455e+22,\n", - " 5.790523409720932e+22,\n", - " 5.775880244303002e+22,\n", - " 5.760737583581744e+22,\n", - " 5.745099462712988e+22,\n", - " 5.728970173436938e+22,\n", - " 5.712354215764097e+22,\n", - " 5.695256252053837e+22,\n", - " 5.677681067998689e+22,\n", - " 5.659633553546397e+22,\n", - " 5.641118608809114e+22,\n", - " 5.622141212305106e+22,\n", - " 5.60270631166014e+22,\n", - " 5.582818847930576e+22,\n", - " 5.562483725100504e+22,\n", - " 5.541705795057654e+22,\n", - " 5.520489844496651e+22,\n", - " 5.498840584142621e+22,\n", - " 5.476762640050839e+22,\n", - " 5.454260546782387e+22,\n", - " 5.431338742262504e+22,\n", - " 5.4080015641406815e+22,\n", - " 5.3842532474866306e+22,\n", - " 5.360097923665189e+22,\n", - " 5.335539620245063e+22,\n", - " 5.3105822618135174e+22,\n", - " 5.285229671646717e+22,\n", - " 5.2594855739476775e+22,\n", - " 5.233353596798951e+22,\n", - " 5.206837274579404e+22,\n", - " 5.179940053439716e+22,\n", - " 5.1526652935654684e+22,\n", - " 5.125016274791671e+22,\n", - " 5.0969962006787035e+22,\n", - " 5.0686082032946865e+22,\n", - " 5.039855348090286e+22,\n", - " 5.01074063884786e+22,\n", - " 4.981267022688463e+22,\n", - " 4.9514373951123635e+22,\n", - " 4.921254605048122e+22,\n", - " 4.890721459894446e+22,\n", - " 4.859840730492512e+22,\n", - " 4.828615155904531e+22,\n", - " 4.7970474488205656e+22,\n", - " 4.765140300111774e+22,\n", - " 4.7328963837463406e+22,\n", - " 4.7003183615571785e+22,\n", - " 4.667408887950031e+22,\n", - " 4.634170614552793e+22,\n", - " 4.600606194803179e+22,\n", - " 4.566718288487246e+22,\n", - " 4.5325095662229754e+22,\n", - " 4.497982713901178e+22,\n", - " 4.46314043708399e+22,\n", - " 4.427985461361994e+22,\n", - " 4.392520552858125e+22,\n", - " 4.356748498173506e+22,\n", - " 4.32067210221802e+22,\n", - " 4.284294255403111e+22,\n", - " 4.247617872201307e+22,\n", - " 4.210645916925217e+22,\n", - " 4.17338140835216e+22,\n", - " 4.135827423654227e+22,\n", - " 4.0979871034765725e+22,\n", - " 4.059863655722707e+22,\n", - " 4.021460361013767e+22,\n", - " 3.982780576359718e+22,\n", - " 3.943827741129774e+22,\n", - " 3.904605380806297e+22,\n", - " 3.865117112706203e+22,\n", - " 3.825366650683283e+22,\n", - " 3.785357811360015e+22,\n", - " 3.7450945192363903e+22,\n", - " 3.7045808115060178e+22,\n", - " 3.6638208451425725e+22,\n", - " 3.6228189027324987e+22,\n", - " 3.58157939812278e+22,\n", - " 3.5401068854192328e+22,\n", - " 3.4984060636399554e+22,\n", - " 3.4564817867835487e+22,\n", - " 3.4143390659910966e+22,\n", - " 3.3719830850916323e+22,\n", - " 3.3294192043864453e+22,\n", - " 3.286652971099074e+22,\n", - " 3.2436901277951775e+22,\n", - " 3.2005366239452606e+22,\n", - " 3.1571986254019797e+22,\n", - " 3.1136825257749876e+22,\n", - " 3.0699949581612565e+22,\n", - " 3.0261428075248325e+22,\n", - " 2.982133223768888e+22,\n", - " 2.937973635535438e+22,\n", - " 2.893671764769308e+22,\n", - " 2.8492356420820376e+22,\n", - " 2.8046736229498706e+22,\n", - " 2.759994404777676e+22,\n", - " 2.7152070448308237e+22,\n", - " 2.6703209791929572e+22,\n", - " 2.6253460425073786e+22,\n", - " 2.580292488775582e+22,\n", - " 2.5351710130924616e+22,\n", - " 2.489992774376047e+22,\n", - " 2.444769418916527e+22,\n", - " 2.3995131050506427e+22,\n", - " 2.3542365285912557e+22,\n", - " 2.3089529512619944e+22,\n", - " 2.26367622137257e+22]},\n", - " 'time': [ 0.0,\n", - " 0.7,\n", - " 1.4,\n", - " 2.1,\n", - " 2.8,\n", - " 3.5,\n", - " 4.2,\n", - " 4.9,\n", - " 5.6,\n", - " 6.3,\n", - " 7.0,\n", - " 7.7,\n", - " 8.4,\n", - " 9.1,\n", - " 9.8,\n", - " 10.5,\n", - " 11.2,\n", - " 11.9,\n", - " 12.6,\n", - " 13.3,\n", - " 14.0,\n", - " 14.7,\n", - " 15.4,\n", - " 16.1,\n", - " 16.8,\n", - " 17.5,\n", - " 18.2,\n", - " 18.9,\n", - " 19.6,\n", - " 20.3,\n", - " 21.0,\n", - " 21.7,\n", - " 22.4,\n", - " 23.1,\n", - " 23.8,\n", - " 24.5,\n", - " 25.2,\n", - " 25.9,\n", - " 26.6,\n", - " 27.3,\n", - " 28.0,\n", - " 28.7,\n", - " 29.4,\n", - " 30.1,\n", - " 30.8,\n", - " 31.5,\n", - " 32.2,\n", - " 32.9,\n", - " 33.6,\n", - " 34.3,\n", - " 35.0,\n", - " 35.7,\n", - " 36.4,\n", - " 37.1,\n", - " 37.8,\n", - " 38.5,\n", - " 39.2,\n", - " 39.9,\n", - " 40.6,\n", - " 41.3,\n", - " 42.0,\n", - " 42.7,\n", - " 43.4,\n", - " 44.1,\n", - " 44.8,\n", - " 45.5,\n", - " 46.2,\n", - " 46.9,\n", - " 47.6,\n", - " 48.3,\n", - " 49.0,\n", - " 49.7,\n", - " 50.4,\n", - " 51.1,\n", - " 51.8,\n", - " 52.5,\n", - " 53.2,\n", - " 53.9,\n", - " 54.6,\n", - " 55.3,\n", - " 56.0,\n", - " 56.7,\n", - " 57.4,\n", - " 58.1,\n", - " 58.8,\n", - " 59.5,\n", - " 60.2,\n", - " 60.9,\n", - " 61.6,\n", - " 62.3,\n", - " 63.0,\n", - " 63.7,\n", - " 64.4,\n", - " 65.1,\n", - " 65.8,\n", - " 66.5,\n", - " 67.2,\n", - " 67.9,\n", - " 68.6,\n", - " 69.3,\n", - " 70.0,\n", - " 70.7,\n", - " 71.4,\n", - " 72.1,\n", - " 72.8,\n", - " 73.5,\n", - " 74.2,\n", - " 74.9,\n", - " 75.6,\n", - " 76.3,\n", - " 77.0,\n", - " 77.7,\n", - " 78.4,\n", - " 79.1,\n", - " 79.8,\n", - " 80.5,\n", - " 81.2,\n", - " 81.9,\n", - " 82.6,\n", - " 83.3,\n", - " 84.0,\n", - " 84.7,\n", - " 85.4,\n", - " 86.1,\n", - " 86.8,\n", - " 87.5,\n", - " 88.2,\n", - " 88.9,\n", - " 89.6,\n", - " 90.3,\n", - " 91.0,\n", - " 91.7,\n", - " 92.4,\n", - " 93.1,\n", - " 93.8,\n", - " 94.5,\n", - " 95.2,\n", - " 95.9,\n", - " 96.6,\n", - " 97.3,\n", - " 98.0,\n", - " 98.7,\n", - " 99.4]}}\n" - ] - } - ], - "execution_count": 16 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:12.419342Z", - "start_time": "2024-05-24T21:28:12.372591Z" - } - }, - "cell_type": "code", - "source": [ - "akt_concen = copasi_results['results']['floating_species_concentrations']['Akt']\n", - "times = copasi_results['results']['time']\n", - "\n", - "\n", - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "plt.plot(times, akt_concen)\n", - "plt.show()" - ], - "id": "37fcc77f381c6ef0", - "outputs": [ - { - "data": { - "text/plain": [ - "
" - ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGsCAYAAACB/u5dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABARUlEQVR4nO3dd3hUZfrG8XtKMklII4EkBBJ6753QERQEQVxXV0VB7AICsrrKurbfrqJrWTsqFlxFUVcRxMIqEHqHIEUp0kIJoaVRJsnM+f0RMpIVlIFJTnLy/VzXXJPMnMk8Oesyd973fd5jMwzDEAAAQADYzS4AAABYB8ECAAAEDMECAAAEDMECAAAEDMECAAAEDMECAAAEDMECAAAEDMECAAAEDMECAAAEDMECAAAEjGnBYuHChRo8eLASExNls9n0xRdf+PX61NRUXXnllapRo4aqVKmiNm3aaNq0aSWOmTJlinr06KGqVauqatWq6tevn1auXBnA3wIAAJzJtGBx/PhxtW7dWq+++uoFvX7p0qVq1aqVPvvsM/3www8aOXKkhg8frtmzZ/uOSU1N1fXXX6/58+dr2bJlSkpK0mWXXaZ9+/YF6tcAAABnsJWHi5DZbDbNmDFDQ4cO9T3mdrv10EMP6aOPPlJWVpZatGihp59+Wr179z7nzxk0aJDi4+P1zjvvnPV5j8ejqlWr6pVXXtHw4cMD/FsAAIByu8ZizJgxWrZsmaZPn64ffvhB11xzjQYMGKBt27ad8zXZ2dmKiYk55/MnTpxQQUHBbx4DAAAuXLkcsdizZ4/q1aunPXv2KDEx0Xdcv3791KlTJz355JO/+hmffPKJbrrpJq1du1bNmzc/6/uMGjVKc+bM0aZNmxQSElIqvwsAAJWZ0+wCzmbDhg3yeDxq1KhRicfdbrdiY2N/dfz8+fM1cuRITZky5Zyh4qmnntL06dOVmppKqAAAoJSUy2CRl5cnh8OhNWvWyOFwlHguPDy8xPcLFizQ4MGD9a9//euc6yaeffZZPfXUU/r+++/VqlWrUqsbAIDKrlwGi7Zt28rj8SgzM1M9evQ453Gpqam64oor9PTTT+uOO+446zH//Oc/9cQTT2jOnDnq0KFDaZUMAABkYrDIy8vT9u3bfd/v3LlTaWlpiomJUaNGjTRs2DANHz5czz33nNq2batDhw5p7ty5atWqlQYNGqT58+friiuu0Lhx43T11VcrIyNDkhQcHOxbnPn000/rkUce0Ycffqg6der4jgkPD//VyAcAALh4pi3eTE1NVZ8+fX71+IgRIzR16lQVFBToH//4h/79739r3759qlatmrp06aLHH39cLVu21M0336z33nvvV6/v1auXUlNTJUl16tTR7t27f3XMo48+qsceeyzQvxIAAJVeuegKAQAA1lBu97EAAAAVD8ECAAAETJkv3vR6vdq/f78iIiJks9nK+u0BAMAFMAxDubm5SkxMlN1+7nGJMg8W+/fvV1JSUlm/LQAACID09HTVqlXrnM+XebCIiIiQVFRYZGRkWb89AAC4ADk5OUpKSvJ9jp9LmQeL4umPyMhIggUAABXM7y1jYPEmAAAIGIIFAAAIGIIFAAAIGIIFAAAIGIIFAAAIGIIFAAAIGIIFAAAIGIIFAAAIGIIFAAAIGIIFAAAIGIIFAAAIGL+Dxb59+3TjjTcqNjZWoaGhatmypVavXl0atQEAgArGr4uQHTt2TN26dVOfPn30zTffqHr16tq2bZuqVq1aWvVdkO2Zufp0zV5JUrDDriCHXcHO0/cOW4nvQ4IcCgt2KDS46D4syOn7OjTIIbv9ty+2AgAAfuFXsHj66aeVlJSkd9991/dY3bp1A17UxXpmzhbN2XQwID8rJMiuKsFnhI1gp8L+N4ycfj7c5VREiPP0fZDv+6Jb0ffBTmafAADW5VewmDVrlvr3769rrrlGCxYsUM2aNTVq1Cjdfvvt53yN2+2W2+32fZ+Tk3Ph1Z6nPHehJKl34+qqHROmfI+hAo9X+YVeFXiKbvkeQ/mFHp0s8OpkfqFO5Ht0Mt9TdF/g8f2sUwVenSrIl44HprZgp12RZ4SP6LAgRYUGqWpYsKqGBSnq9H3VsGBFnb6PCQtWZKjzdy9VCwCA2fwKFjt27NDkyZM1YcIE/fWvf9WqVas0duxYBQcHa8SIEWd9zaRJk/T4448HpNjz5fEakqSr29XS4NaJfr/e6zV0qtBTImycOB0+ir8+M4QUP3fcXajcU4XKO32fe6rA9/WJ/KKwkl/o1eG8fB3Oy/erpmCHXdUjXKoW4VL1cJeqR5xxCw9W9QiXEqJCFR/hktPBqAgAwBw2wzCM8z04ODhYHTp00NKlS32PjR07VqtWrdKyZcvO+pqzjVgkJSUpOztbkZGRF1H6uV37xjKt3HlUr97QToNa1SiV9/BXocer426Pct0FJYJH1okCHTtRoOwT+Tp2okDHTuQr60SBsk7m69jxAmWdyNfxfM/vv8FpdpuUEBmiGtGhSowOVWJUSNF9dKhqRIUoqWqYosKCSvE3BQBYUU5OjqKion7389uvEYsaNWqoWbNmJR5r2rSpPvvss3O+xuVyyeVy+fM2F604K5WndZdOh11RYfYL+lA/VeDR4Ty3DuWevuW5dTg3X4fyTvkey8x162DOKRV4DO3PPqX92ae0Zvexs/68qNAg1alWRXViw1Q7tuR9TJVgplwAABfMr2DRrVs3bdmypcRjW7duVe3atQNa1MUqngqxSkdHSJBDtaqGqVbVsN88zus1dDjPXRQssk5qf9ZJ7cs6qQNZp7Q/u+j7w3n5yj5ZoPXpWVqfnvWrnxHhcqp2tTDVrx6uRvERahhXdJ8UEyaHRc4nAKD0+BUs7r33XnXt2lVPPvmkrr32Wq1cuVJvvvmm3nzzzdKq74KczhWyV7K/vO12m+IiQxQXGaI2SdFnPeZEfqH2HD2hXYdPaPeR49p15Ljv6/3Zp5TrLtTGfTnauK/kIluX064GceFqGBeuhvERahQfocbxEUqKCWWEAwDg41ew6Nixo2bMmKGJEyfq//7v/1S3bl298MILGjZsWGnVd0G8p6dCWMP4a2HBTjVJiFSThF/Pj50q8Cj96AntPHxc2zLztO1grrYezNPPh/LkLvRq0/4cbdpfMnBEhDjVPDFSLRKj1KJmlFrUjFTdauGMbgBAJeVXsJCkK664QldccUVp1BIwxcGCv6T9ExLkUMP4CDWMj9BlzX953OM1lH70hLYezNW2zDxtLQ4cmXnKPVWo5TuOavmOo77jQ4McapYY6QscrZKi1DAugrABAJWA38GiIvB4i+4dBIuAcNhtRYs9q1UpETjyC73anpmnjfuztWlftjbuz9Hm/Tk6WeDRmt3HSiweDXc51SYpWu2So9U2uaraJkcrOizYhN8GAFCaLBksfukKIViUpmCnXc0SI9UsMVLqkCSpaHRj5+Hj2rQ/Wxv3ZWvDvmz9sDdbee5CLd5+WIu3H/a9vl71Kmp3OmS0r11VjeIiLLPgFgAqK0sGC285bDetLBx2mxrEhatBXLiubFNTUlHY2JKRq7V7jmntnmNK25OlHYePa8ehott/Tl/XJTosSJ3qxKhLvVh1rhejpgmRBA0AqGAsGSys1m5a0TnsNt/Ixo1dilqTjx3P17r0Y1q3J0tr9xTdZ50o0H83H9R/Nxdd5yUqNEgd68SoS72isNG0RiTrNACgnLNksDAqabtpRVK1SrAuaRKvS5rES5IKPF5t2JetFTuOavmOI1q966iyTxbo+x8P6vsfi4JGRIhTKfVi1aNRdfVsWE21Y6uY+SsAAM7CksHCQ7tphRPksKtdclW1S66qu3vXV6HHq437c7RixxEt33FEq3YdU+6pwhIjGrVjw9SjYTX1bFhdKfVjFRHCVuUAYDZLBgvaTSs+p8OuNknRapMUrTt7FQWNTftztHj7YS3Yekhrdx/T7iMntPvIHn2wfI8cdpvaJUerR8Pq6tmoulrVjGIqDABMYM1gcbrdlKkQ63A67GqdFK3WSdEa3aeB8tyFWv7zES3cdkiLth3WzsPHtWrXMa3adUzPf7dV1cJduqRJdfVtGq/uDaqpisuS/6kDQLljyX9tfTtvEiwsK9zlVL9m8erXrGiNRvrRE0UhY2tRS+vhPLc+Wb1Xn6zeq2CnXSn1YtWvaZwuaRqvmtGhJlcPANZl6WBBrqg8kmLCNKxzbQ3rXFv5hV6t3HlU3/94UHN/Oqj0oye1YOshLdh6SA/P3KSmNSLVr2mcLm0Wr5Y1o5gyA4AAsmSw8O28yRx7pRTstKt7w2rq3rCaHh3cTNsz8/T9j5ma++NBrd1zTD8eyNGPB3L08rztqhkdqgEtEjSwZYLaJlVlXQYAXCRLBgt23kQxm83mu/7J3b3r6+jxfKVuydT3Px7U/J8OaV/WSb29eKfeXrxT8ZEu9W+eoAEtEtSpToyctBUBgN8sGSxoN8W5xFQJ1h/a1dIf2tXSyXyPFmw9pG83HtDcHzN1MMetfy/brX8v263YKsG6rHm8BrSooa71YxXEf0wAcF4sGSy8XtpN8ftCgx0a0KJohMJd6NHS7Uf09YYD+u7HgzpyPF8frUzXRyvTFVMlWINa1tCQNolqn8x0CQD8FksGC3behL9cTof6NIlTnyZxKvB4tWLHUX298YDmbMzQkeP5en/5br2/fLdqRofqitY1NKR1oprViCS8AsD/sBnFCxLKSE5OjqKiopSdna3IyMhSeY9mj3yrE/keLby/j5Jjw0rlPVA5FHq8WvLzEc1M26f/bjqoPHeh77kGceEa0jpRQ1onqk41thcHYG3n+/ltyREL2k0RKE6HXb0aVVevRtV1qsCjeT9lalbafs3bkqntmXl6/rutev67rWqTFK2r29fSkFaJigpja3EAlZc1gwXtpigFIUEODWxZQwNb1lDOqQLN2ZihWev3a8n2w0pLz1Jaepb+/uVmXdosXle3r6meDavTWQKg0rFmsKDdFKUsMiRI13RI0jUdkpSZe0qz0vbrP2v26qeMXH214YC+2nBA1SNcGtomUVe3r6UmCaUz7QcA5Y0lg0Vxu6mdPxZRBuIiQnRbj3q6tXtdbdqfo8/W7tXMtP06lOvWlEU7NWXRTrWoGak/tquloW1rKjos2OySAaDUWC5YGIZBVwhMYbPZ1KJmlFrUjNLEy5sqdUumPlu7V/N+ytTGfTnauG+znvzmJ13eIkHXdUxWl3oxdJUAsBwLBotfviZYwCzBTrsua56gy5on6OjxfM1K26dPVu/V5gM5mpm2XzPT9qtutSq6rmOSrm5fS9XCXWaXDAABYbl20wKPVw0f+kaStP6Ry1ihj3LDMAxt2Jetj1ama1baPh3P90iSghw2XdosXtd1TFb3BtXYgAtAuVRp2029Z+QkG2ssUI7YbDa1qhWtVrWi9bdBTfXl+v36aFW61qdn6esNGfp6Q4ZqVQ3V9Z2SdW2HJFWPYBQDQMVjvWDh/eVrB1MhKKequJy6rlOyruuUrM37czR91R7NWLdPe4+d1DNztuiF77dqYMsaGp5SW+2Sq7IWA0CFYb1gccaIBWssUBE0S4zU/13ZQhMvb6qvNhzQ+8t3a316lm8tRrMakRqeUltXtqmp0GCH2eUCwG+y3GSB58ypEHIFKpDQYIf+2L6WZo7uplljuuma9rXkctq1+UCOHvx8gzo/+b3+78vN2nn4uNmlAsA5WS5YGGdOhbAIDhVUq1rReuaa1lo+sa/+OrCJkmPClHOqUO8s2ak+z6bqprdXaN5PB31X8gWA8oKpEKAcq1olWHf0rK/butfTgm2H9P6y3Zq/JVOLth3Wom2HVa9aFY3sVkdXt6+lsGDL/d8ZQAVkuX+JPCWChYmFAAFkt9vUp3Gc+jSO054jJ/T+8l2avjJdOw4f18MzN+mZOVt0fedkDU+po5rRoWaXC6ASs9xUyJlXNmUlPawoOTZMDw1qpmV/7avHhzRXndiiaZI3FuxQz3/O1+gP12rN7mNmlwmgkrLciIXvyqaEClhcuMupEV3r6KYutTXvp0y9s2Snlv58RF/9cEBf/XBAbZKidUv3uhrYIoGrrAIoM9YLFlzZFJWM3W5Tv2bx6tcsXpv35+jdJTs1M22/0tKzNPajdfpn1VDd1r2uru2YxDoMAKXOcn/GnDkVAlQ2zRIj9cw1rbXkwUs0vl9DxVQJ1t5jJ/XYl5vV9al5ev6/W3Q4z212mQAszHrBongqhJWbqMSqR7g0vl8jLXngEv19aAslx4Qp60SBXpq3Xd2emqeHZmzQLvbDAFAKrBcsmAoBfEKDHbqpS23Nv6+3XhvWTq1rRcld6NW0FXvU57lUjZq2RmnpWWaXCcBCLDfh6vEFC5MLAcoRh92mgS1r6PIWCVq+46jeXPiz5m855Lv4WUq9WI25pIG61o+lmwrARbFcsCi+CjyXngZ+zWazKaV+rFLqx2pLRq7eXLhDM9P2admOI1q244jaJEVrdJ8G6tc0joAB4IJYbirEc3qNBVMhwG9rnBCh565trQV/6aMRKbXlctqVlp6l2/+9Wpe/uEiz1u+Xhy3DAfjJcsGCNRaAf2pGh+rxK1to8QOX6K5e9RXucuqnjFyN/Wid+j6Xqo9X7VF+off3fxAAyNLBwuRCgAqmeoRLD17eREseuEQTLm2k6LAg7TpyQg98tkG9n5mvqUt26lSBx+wyAZRz1gsWtJsCFyUqLEhj+zbUkgcu0d8GNVVchEv7s0/psS83qxcBA8DvsF6wYCoECIgqLqdu61FPC//SR/8Y2kI1o0N1MMftCxjvLd1FwADwK5YLFr52U8v9ZoA5QoIcurFLbc27r5f+MbSFEqNCdDDHrUdnbVLvZ1L172W75C4kYAAo4tfH72OPPSabzVbi1qRJk9Kq7YIYjFgApcLlLAoY8+/vrb8PbaEaUSHKyDmlR2YWBYz3CRgAdAH7WDRv3lzff//9Lz/AWb62wqDdFChdLmfRbp7XdqilT1al69X5P+tA9ik9PHOTXkv9WaP6NNC1HWrJ5XSYXSoAE/idCpxOpxISEkqjloCgKwQoGy6nQzel1NG1HZP08ap0vVYcML7YqMnzt2tUnwa6hoABVDp+r0TYtm2bEhMTVa9ePQ0bNkx79uz5zePdbrdycnJK3EoTizeBsuVyOjQ8pY5S7++tx4c0V3xkURfJ377YqEueXaD/rNnLRltAJeJXsOjcubOmTp2qb7/9VpMnT9bOnTvVo0cP5ebmnvM1kyZNUlRUlO+WlJR00UX/FtpNAXOEBDk0omsdLbi/jx4f0lxxES7tyzqp+z5drwEvLNS3GzN8a6AAWJfNuIj/p2dlZal27dp6/vnndeutt571GLfbLbfb7fs+JydHSUlJys7OVmRk5IW+9Tkt3HpIw99ZqaY1IvXNuB4B//kAzs/JfI/eW7ZLk1N/VvbJAklS66Ro/aV/Y3VrUM3k6gD4KycnR1FRUb/7+X1RTZnR0dFq1KiRtm/ffs5jXC6XIiMjS9xKU3G7qYN2U8BUocEO3dWrvhb+pY/G9GmgsGCH1qdnadhbKzTsreVcrh2wqIv6+M3Ly9PPP/+sGjVqBKqei0a7KVC+RIUG6b7+jbXg/j66uWsdBTlsWrL9iIa+ukR3vr9a2w6eeyoVQMXjV7C47777tGDBAu3atUtLly7VVVddJYfDoeuvv7606vNb8RoLLvkMlC/VI1x6bEhzzftzb13drpbsNmnOpoPq/8JC/fmT9Uo/esLsEgEEgF/BYu/evbr++uvVuHFjXXvttYqNjdXy5ctVvXr10qrPb76pEHIFUC4lxYTpuWtba874nhrQPEFeQ/ps7V5d8lyqHpu1SYfz3L//QwCUW37tYzF9+vTSqiNgmAoBKoaG8RF6/ab2Wp+epWfmbNHi7Yc1deku/WfNXt3du75u6VZXocHsgQFUNJZb4ujbeZN2U6BCaJ0UrQ9u66xpt3VWq1pRynMX6pk5W9Tn2VR9ujqdPTCACsZywYKdN4GKqVuDavpiVDe9eF0b1YwOVUbOKd3/nx90xcuLtWjbIbPLA3CeLBwsSBZARWO323Rlm5qa++de+uvAJooIcerHAzm66e2VGv7OSv14oHR37gVw8SwbLNh5E6i4QoIcuqNnfS28v49u6VZXQQ6bFm49pIEvLdL9n65XRvYps0sEcA7WCxa0mwKWUbVKsB4Z3EzfT+ilQa1qyDCkT9fsVe9n5+vZOVuU5y40u0QA/8NywYJ2U8B6asdW0as3tNPno7qqQ+2qOlXg1Svzt6v3M/P1/vLdKixetQ3AdJYLFrSbAtbVLrmqPr0rRa/f2E51q1XR4bx8PfzFRg16abEWbztsdnkAZMFgQbspYG02m00DWtTQf+/tqccGN1N0WJC2HMzVjW+v0O3/Xq1dh4+bXSJQqVkuWNBuClQOQQ67bu5WV6n39dbNXevIYbfpu80Hdem/FmjS1z8q91SB2SUClZKFgwXJAqgMosOC9diQ5vp2XA/1bFRdBR5DbyzcoT7PpurjVXvYYAsoY9YLFqf/EWEqBKhcGsZH6L2RHfXOzR1U7/T6iwc+26AhryzWyp1HzS4PqDSsFyxO/3HCiAVQ+dhsNl3SJF7fju+pvw1qqogQpzbtz9G1byzT6A/Xau8xrqAKlDYLBgvaTYHKLthp12096in1vt66oXOy7Dbpqx8OqO9zC/Tcf7foRD77XwClxbLBghELALHhLj15VUvNvqeHutSLkbvQq5fnbdclzy7Q7B/2+9rTAQSO5YIF7aYA/lezxEh9dHsXvX5jOyXFFF3gbMyH63Tj2yu0PTPX7PIAS7FcsKDdFMDZFO9/8d29vTS+X0O5nHYt2X5EA15YpCe//pHtwYEAsVywYOdNAL8lJMih8f0a6bt7e6lf0zgVeg29uXCH+j6XqlnrmR4BLpblggVTIQDOR3JsmN4aUdSemhwTpoM5bo39aJ1umLJCWw8yPQJcKMsFC6ZCAPjjkibx+u+9PTXh0kZyOe1atuOIBr64SE98tZnpEeACWDZYOJgKAXCeQoIcGtu3ob6f0EuXNYtXodfQlEU7dcmzqZqZto/pEcAPlg0WNoIFAD8lxYTpzeEdNHVkR9WJDVNmrlvjpqfpujeXMz0CnCfLBQvfGguCBYAL1LtxnObc21P3XdZIIUF2rdh5VANfXKSnv/1JJ/M9ZpcHlGuWCxbFQ5YOy/1mAMqSy+nQmEtKTo9MTv1Zl72wQPO3ZJpdHlBuWe7jl503AQRSrapF0yNThndQYlSI0o+e1Mh3V2n0tLU6mHPK7PKAcsdywYJ2UwCl4dJm8fpuQi/d3qOuHHabvtpQdO2RqUt2cml24AyWCxa0mwIoLVVcTj00qJm+HNNdbZKilecu1GNfbtZVry3Rxn3ZZpcHlAuWDRa0mwIoLc0SI/X53V31j6EtFBHi1A97szXklcV6/MtN7H2BSs+ywYJ2UwClyW636cYutTX3z700pHWivIb07pJd6vfcAn2z4QB7X6DSslywoN0UQFmKiwjRS9e31b9v6aTasWHKyDmlu6et1a3vrda+rJNmlweUOcsFC9pNAZihZ6PqmjO+p8Ze0kBBDpvm/ZSpS59ncScqH8t9/DIVAsAsIUEOTbissb4Z11Md61TViXyPHvtys/74+lJ27kSlYblgUTwV4qAtBIBJGsSF6+M7UvSPoS0U7nJq3Z4sDXppkf713Va5C9m5E9ZmuWBh0G4KoBwoXtz53YSe6tc0TgUeQy/O3aYrXlqsNbuPmV0eUGosFyw87LwJoBypERWqKcM76JUb2qpaeLC2Zebpj68v1aMzN9KaCkuyXLAoXiNFsABQXthsNl3RKlHfT+ila9rXkmFI7y3brcueX6B5Px00uzwgoCwYLJgKAVA+RYcF65lrWuuDWzsrOSZM+7NP6ZapqzX2o3U6nOc2uzwgIKwXLLzF7aYkCwDlU/eG1TRnfE/d0bOe7DZp1vr96vf8An2+di8ba6HCs16woN0UQAUQGuzQXwc21czR3dW0RqSyThRowifrdet7q5WRzVVTUXFZLljQbgqgImlZK0qzxnTT/f0bK9hhL9pY618L9MnqdEYvUCFZLljQbgqgogly2DW6TwN9Nba7WidFK/dUof7ynx804t1V2s+24KhgLBcsPEyFAKigGsZH6LO7UvTg5U0U7LRr4dZDuuxfC/XRyj2MXqDCsFywKG435bLpACoip8Ouu3rV19dje6htcrTy3IWa+PkGDX9npfYeO2F2ecDvslyw8E2FWO43A1CZNIgL13/u6qq/DWoql9OuRdsOq/+/FuqD5bt93W9AeWS5j9/iqwiyQRaAis5ht+m2HvX0zbge6lC7qo7ne/S3LzbqxrdXKP0ooxconywXLLxs6Q3AYupVD9fHd6bokSuaKSTIrqU/H1H/Fxbq38t2MXqBcueigsVTTz0lm82m8ePHB6ici+el3RSABTnsNt3Sva6+HddTnerG6ES+R4/M3KQb3lrO6AXKlQsOFqtWrdIbb7yhVq1aBbKei8aW3gCsrE61Kpp+exc9PqS5QoMcWr7jqC5/cZE+XkXnCMqHCwoWeXl5GjZsmKZMmaKqVasGuqaLQrspAKuz220a0bWOb+1FnrtQD3y2Qbe+t1qZOezaCXNdULAYPXq0Bg0apH79+v3usW63Wzk5OSVupYl2UwCVRZ1qVfTxnSmaeHkT366dl72wUF+u3292aajE/A4W06dP19q1azVp0qTzOn7SpEmKiory3ZKSkvwu0h+0mwKoTBx2m+7sVV+zx3ZXi5pF1xy556N1Gv3hWh07nm92eaiE/Pr4TU9P17hx4zRt2jSFhISc12smTpyo7Oxs3y09Pf2CCj1ftJsCqIwaxUdoxqhuGte3oRx2m7764YAue2Gh5v100OzSUMn4FSzWrFmjzMxMtWvXTk6nU06nUwsWLNBLL70kp9Mpj8fzq9e4XC5FRkaWuJWm4qkQggWAyibIYde9lzbSjFFd1SAuXIdy3bpl6mr95T/rlXuqwOzyUEn4FSz69u2rDRs2KC0tzXfr0KGDhg0bprS0NDkcjtKq87x5GbEAUMm1qhWt2fd01+096spmkz5ZvVcDXlikpT8fNrs0VAJOfw6OiIhQixYtSjxWpUoVxcbG/upxs3hZYwEACgly6KFBzXRpswTd9+l67Tl6QjdMWaGbu9bRAwOaKDTY/D8EYU2W+/hl500A+EWnujH6ZlwPDeucLEmaunSXrnh5kTbuyza5MliVXyMWZ5OamhqAMgLH127KDlkAIEmq4nLqiata6rLmCbr/0/X6+dBxDX11ie69tJHu6lWffy8RUBYesTC5EAAoZ3o1qq4543vq8hYJKvQaembOFl335jK2BEdAWS5Y0G4KAOdWtUqwXhvWTs9e01rhLqdW7Tqmy19cpP+s2cuW4AgIywULg3ZTAPhNNptNf2xfq8SW4Pd9ul6jprGpFi6e5YIFIxYAcH6SYsL08Z0pur9/YzntNn2zMUP9X1iohVsPmV0aKjDLBQvaTQHg/DnsNo3u00AzRnVT/epVlJnr1vB3VuqxWZt0quDXmx4Cv8dyH7/svAkA/mtZK0qz7+mhESm1JRW3pS6mLRV+s2CwKEoWtE8BgH9Cgx16/MoWmjqyo6pHuLQ9M09XvbZEr6Vu900zA7/HssGCXAEAF6Z34zjNGd9T/ZvHq8Bj6J/fbtGNb61QRvYps0tDBWC5YFGcqm1MhQDABYupEqzXb2yvf17dSmHBDi3bcUQDXlyoOZsyzC4N5ZzlgkVxu6mDYAEAF8Vms+najkmafU93tawZpawTBbrz/TV6aMYGncxnYSfOznLBgnZTAAisetXD9dndXXVnz3qSpGkr9mjIK4v144EckytDeWS5YEG7KQAEXrDTrokDm+r9WzupeoRL2zLzdOWrS/Tukp3s2IkSLPfxy86bAFB6ejSsrm/H9VDfJnHKL/Tq8S8365apq3Q4z212aSgnLBcsPLSbAkCpig136a0RHfT4kOYKdto1f8shDXhhETt2QpIFg0XxVAgDFgBQemw2m0Z0raNZY7qpUXy4DucV7dj5xFeblV/oNbs8mMhSwcIwDKZCAKAMNUmI1Kwx3XVTl6IdO6cs2qk/TF6inw/lmVwZzGKpYHHmxnC0mwJA2QgJcujvQ1toyvAOqhoWpI37cnTFS4v18ao9LOyshCwWLH75D5gRCwAoW5c2i9c343qqa/1YnSzw6IHPNmjMh+uUfaLA7NJQhiwVLM7cy552UwAoewlRIfrg1s56YEATOe02fbXhgAa+tEhrdh8zuzSUEUt9/J454saIBQCYw2636e7e9fXZ3V1VOzZM+7JO6to3lmly6s/ycjEzy7NUsPCckSxoNwUAc7VOitbse7prSOtEebyGnv72J93MnheWZ6lgceYaCwYsAMB8ESFBevG6Nnr66pYKCbJr4dZDuvzFRVr682GzS0MpsVaw8LJ4EwDKG5vNpj91TNbM0d3VMC5ch3LdGvbWCj3/3dYSa+NgDdYKFrSbAkC51TghQrPGdNefOiTJMKSX5m7TDVOWKyP7lNmlIYAsFiyYCgGA8iw02KGn/9hKL17XRlWCHVqx86gGvrRI83/KNLs0BIi1goXvkulFQ28AgPLpyjY1NXtsDzVPjNTR4/kaOXWVnvz6R7YDtwBrBQu28waACqNutSr6fFRX3dy1jiTpzYU7dO0by5R+9IS5heGiWCpYFLebEiwAoGJwOR16bEhzvX5je0WGOJWWnqWBLy3SNxsOmF0aLpClgoVvKsRSvxUAWN+AFgn6elwPtU2OVu6pQt09ba0e/mKjThV4zC4NfrLUR7CXEQsAqLBqVQ3TJ3em6K5e9SVJ7y/frateW6odXCm1QrFYsCi6p9UUACqmIIddD17eRFNHdlRslWD9eCBHg19erC/X7ze7NJwniwWLomRBrgCAiq134zh9Pa6HutSL0fF8j+75aJ0e/mKj3IVMjZR31goWp4csuE4IAFR88ZFFV0od06eBpKKpkT9OXqY9R+gaKc+sFSxoNwUAS3E67Lqvf2O9O7KjqoYFacO+bA16eZH+uynD7NJwDpYKFsV7zrM5FgBYS5/GcfpqbA+1O901csf7a/SP2ZtV4GFDrfLGUsGieI2Fw1K/FQBAkhKjQ/XxnSm6vUddSdJbi3fqT28s0/6skyZXhjNZ6iPYYCoEACwtyGHXQ4Oa6Y2b2isixKm1e7I06KVFSt3CtUbKC0sFC3beBIDKoX/zBH11Tw+1rBmlYycKdPO7q/TsnC0qZGrEdJYKFr4Nsiz1WwEAziY5Nkz/uTtFN3WpLUl6Zf523fj2CmXmcBl2M1nqI9jXbsqIBQBUCi6nQ38f2kIvXd9WVYIdWr7jqAa+tFhLfz5sdmmVlrWCBWssAKBSGtI6UbPu6a4mCRE6nOfWjW+t0Mtzt/n+4ETZsVSw+KXd1ORCAABlrn71cM0Y1U3XdqglryE9991W3Tx1lY7kuc0urVKxVLAwDHbeBIDKLDTYoX/+sbWe+WMrhQTZtXDrIQ1+ebHW7TlmdmmVhqWCBVMhAABJuqZDkmaO7q561apof/YpXfvGMr2/bJfvD1CUHksFC9pNAQDFGidEaOaYbhrYMkEFHkMPz9ykez9O04n8QrNLszS/gsXkyZPVqlUrRUZGKjIyUikpKfrmm29Kqza/0W4KADhTREiQXr2hnf42qKkcdpu+SNuvoa8u0Y5DeWaXZll+fQTXqlVLTz31lNasWaPVq1frkksu0ZVXXqlNmzaVVn1+KV79y4gFAKCYzWbTbT3q6aPbu6h6hEtbD+ZpyCtL9M2GA2aXZkl+BYvBgwdr4MCBatiwoRo1aqQnnnhC4eHhWr58eWnV5xfWWAAAzqVT3Rh9Nba7OtWNUZ67UHdPW6snvtrMbp0BdsGTBh6PR9OnT9fx48eVkpJyzuPcbrdycnJK3EqLxzdiUWpvAQCowOIiQjTtts66o2c9SdKURTt1w1vs1hlIfgeLDRs2KDw8XC6XS3fddZdmzJihZs2anfP4SZMmKSoqyndLSkq6qIJ/C+2mAIDfE+Sw668Dm+r1G9sp3OXUyp1HNejlxVqx44jZpVmC38GicePGSktL04oVK3T33XdrxIgR2rx58zmPnzhxorKzs3239PT0iyr4txRPhdiYCgEA/I4BLWpo1phuahwfoUO5bt3w1gpNWbiDltSL5HewCA4OVoMGDdS+fXtNmjRJrVu31osvvnjO410ul6+LpPhWWorbTblWCADgfNSrHq4Zo7vqyjaJ8ngNPfH1jxo1ba1yTxWYXVqFddGNmV6vV253+dgu1aDdFADgp7Bgp174Uxv9/crmCnLY9M3GDF35yhJtycg1u7QKya+P4IkTJ2rhwoXatWuXNmzYoIkTJyo1NVXDhg0rrfr84qHdFABwAWw2m25KqaOP70xRjagQ7Th8XENfXaKZafvMLq3C8StYZGZmavjw4WrcuLH69u2rVatWac6cObr00ktLqz6/0G4KALgY7ZKravY93dW9QTWdLPBo3PQ0PTpzo/ILaUk9X05/Dn777bdLq46A8O28Sa4AAFyg2HCX3rulk/713Va9Mn+73lu2W+v3Zuu1Ye2UGB1qdnnlnqVWIxTvvEm7KQDgYjjsNt3Xv7HeHtFBkSFOpaVn6YqXF2vxtsNml1buWStY0G4KAAigvk3jNfueHmpWI1JHj+dr+DsrNDn1Z1pSf4OlgoWHqRAAQIAlx4bp81Fd9cf2teQ1pKe//Umjpq1VnpurpJ6NpYIFO28CAEpDSJBDz/yxlf4xtMUZLamLtT2Tq6T+L0sFi+J2U6ZCAACBZrPZdGOX2vr4zhTFR7r086GiltRvN2aYXVq5YqlgUbzGgp03AQClpV1yVX15zy9XSb3rgzX657c/+f64rewsFSwM1lgAAMpA8VVSb+lWV5L0WurPuvndlTp2PN/kysxnqWDh23mTZAEAKGVBDrseGdxML17XRiFBdi3adliDX1msjfuyzS7NVJYKFuy8CQAoa1e2qakZo7opOSZMe4+d1NWTl+qzNXvNLss0FgsWTIUAAMpe0xqR+nJMd/VpXF3uQq/+/Ol6PVJJtwK3VrBg500AgEmiwoL09oiOGte3oSTp38t26/opy3Uw55TJlZUtSwWL4g2yaDcFAJjBbrfp3ksb6e0RHRQR4tSa3cd0xcuLtWrXUbNLKzOWCha0mwIAyoO+TeM1a0x3NY6P0KFct65/c7mmLtlZKbYCt1SwoN0UAFBe1K1WRTNGd9Xg1okq9Bp67MvNmvDJep3M95hdWqmyVLCg3RQAUJ6EBTv10nVt9LdBTeWw2zRj3T79YfJS7TlywuzSSo2lggXtpgCA8sZms+m2HvX0wa2dFVslWD8eyNHgVxYrdUum2aWVCosFC6ZCAADlU0r9WM0e212tk6KVfbJAI6eu0ivztvk6Gq3CWsGCqRAAQDlWIypUn9zZRTd0TpZhSM/+d6vu/GCNck4VmF1awFgrWDAVAgAo51xOh568qqWevrqlgp12fbf5oIa+skTbDuaaXVpAWCxYnN4gi2ABACjn/tQxWZ/emaLEqBDtOFx8CfYDZpd10SwZLJgJAQBUBK2TovXlPd3VpV6Mjud7dNcHayv8JdgtFSyK/4dg500AQEURG+7SB7d21m3df7kE+8ipq5R1omJegt1SwcK38yZDFgCACsTpsOtvV/xyCfaFWw9pyCtL9OOBHLNL85u1goWXqRAAQMV1ZZua+vzubkqKCdWeoyf0h9eWatb6/WaX5RdrBQuDdlMAQMXWLLHoEuw9GlbTyQKPxn60Tk98tVmFnopxCXaLBYuie9pNAQAVWXRYsKaO7KS7e9eXJE1ZtFPD31mpo8fL/7oLiwUL2k0BANbgsNv0wIAmem1YO4UFO7T05yMa/PJibdyXbXZpv8mSwYJcAQCwioEta+iL0d1Ut1oV7cs6qasnL9Vna/aaXdY5WSpY+K5uSrIAAFhIo/gIfTG6my5pEid3oVd//nS9Hpu1SQXlcN2FpYKFQbspAMCiokKD9NbwDhrbt6EkaerSXRo2ZYUO5bpNrqwkSwULD+2mAAALs9ttmnBpI00Z3kHhLqdW7jqqwS8v1ro9x8wuzcdSwYJ2UwBAZXBps3jNHNNN9atXUUbOKf3pjeWavnKP2WVJslywKLpnjQUAwOrqVw/XF6O7qX/zeOV7vHrw8w2a+PkGuQs9ptZlsWDBVAgAoPKICAnS5GHtdX//xrLZpI9W7tF1by7XwZxTptVk0WBBsgAAVA52u02j+zTQOzd3VGSIU1sycpV1osC0epymvXMpoN0UAFBZ9Wkcpy/v6a6dh4+rcUKEaXVYKljQbgoAqMxqx1ZR7dgqptZgyakQBiwAADCHpYJF8VQIIxYAAJjDUsHCoN0UAABTWSpYeGg3BQDAVJYKFrSbAgBgLmsFC9pNAQAwlbWCBe2mAACYymLBgnZTAADM5FewmDRpkjp27KiIiAjFxcVp6NCh2rJlS2nV5jfaTQEAMJdfwWLBggUaPXq0li9fru+++04FBQW67LLLdPz48dKqzy+0mwIAYC6/tvT+9ttvS3w/depUxcXFac2aNerZs2dAC7sQHqZCAAAw1UVdKyQ7O1uSFBMTc85j3G633G637/ucnJyLecvfVLzGwkGyAADAFBe8eNPr9Wr8+PHq1q2bWrRocc7jJk2apKioKN8tKSnpQt/yPGo63W7KGgsAAExxwcFi9OjR2rhxo6ZPn/6bx02cOFHZ2dm+W3p6+oW+5e/yssYCAABTXdBUyJgxYzR79mwtXLhQtWrV+s1jXS6XXC7XBRXnLy9begMAYCq/goVhGLrnnns0Y8YMpaamqm7duqVV1wVh500AAMzlV7AYPXq0PvzwQ82cOVMRERHKyMiQJEVFRSk0NLRUCvQHO28CAGAuv9ZYTJ48WdnZ2erdu7dq1Kjhu3388celVZ9faDcFAMBcfk+FlGfF9TFiAQCAOSx2rZCie9ZYAABgDksFCw+LNwEAMJWlggXtpgAAmMtawYIRCwAATGWtYEG7KQAAprJUsKDdFAAAc1kqWNBuCgCAuSwVLGg3BQDAXJYKFrSbAgBgLssEizN3BWUmBAAAc1gmWBSPVkiMWAAAYBbLBIszcoXsDFkAAGAKCwULpkIAADCbJYMF7aYAAJjDQsHil69ZYwEAgDksEyzOXLxJrgAAwByWCRZntps6SBYAAJjCMsGCdlMAAMxnmWBBuykAAOazTLAongohUwAAYB7LBAsPVzYFAMB0lgkWxVMhNtZXAABgGusECy9TIQAAmM06waJ4KoQRCwAATGOZYOHxjVgQLAAAMItlgkXxGgtaTQEAMI9lggXtpgAAmM8ywcJjMBUCAIDZLBMsvN6ie6ZCAAAwj3WCBVMhAACYznLBgnZTAADMY5lgUdxuys6bAACYxzLBorjdlGuFAABgHssEC9pNAQAwn2WCBTtvAgBgPssEC3beBADAfBYKFkyFAABgNgsGC5IFAABmsVCwKLonWAAAYB7rBIvTyYJ2UwAAzGOdYMEaCwAATGeZYMHOmwAAmM8ywYKdNwEAMJ+FggVTIQAAmM2CwYJkAQCAWfwOFgsXLtTgwYOVmJgom82mL774ohTK8h/tpgAAmM/vYHH8+HG1bt1ar776amnUc8GK203tlhmDAQCg4nH6+4LLL79cl19+eWnUclGYCgEAwHx+Bwt/ud1uud1u3/c5OTml8j5c3RQAAPOV+sTBpEmTFBUV5bslJSWVyvsYtJsCAGC6Ug8WEydOVHZ2tu+Wnp5eKu/jod0UAADTlfpUiMvlksvlKu23YY0FAADlgGV6KGg3BQDAfH6PWOTl5Wn79u2+73fu3Km0tDTFxMQoOTk5oMX5g3ZTAADM53ewWL16tfr06eP7fsKECZKkESNGaOrUqQErzF9MhQAAYD6/g0Xv3r1lFLdglCO0mwIAYD7LTBzQbgoAgPksEyyKp0IYsAAAwDyWCRYe1lgAAGA6ywQL31QIwQIAANNYJlh4aDcFAMB0lvkYpt0UAADzWSdY0G4KAIDprBMsaDcFAMB0FgoWtJsCAGA2ywQL2k0BADCfZYIFO28CAGA+ywSL4nZTBiwAADCPZYJF8RoLNsgCAMA81gkWtJsCAGA66wSL02ss7KyxAADANBYKFsUjFiYXAgBAJWbBYEGyAADALNYJFt6ie9pNAQAwj2WChYedNwEAMJ1lggXtpgAAmM8ywaJ4503WWAAAYB7LBAt23gQAwHyWCRa+qRAWbwIAYBrLBQumQgAAMI91gsXpdlN23gQAwDyWCRYedt4EAMB0lgkWBu2mAACYzjLBwku7KQAAprNMsKDdFAAA81kmWNBuCgCA+SwXLJgKAQDAPNYJFrSbAgBgOssEC9pNAQAwn2WCBe2mAACYzzLBorjd1EawAADANJYJFsXtpkyFAABgHssEC4N2UwAATGeZYOGh3RQAANNZJljQbgoAgPmsEyxoNwUAwHQWDBYkCwAAzGKhYFF0T7AAAMA81gkWtJsCAGA66wQL2k0BADDdBQWLV199VXXq1FFISIg6d+6slStXBrouvxW3m7LzJgAA5vE7WHz88ceaMGGCHn30Ua1du1atW7dW//79lZmZWRr1nbfidlNGLAAAMI/fweL555/X7bffrpEjR6pZs2Z6/fXXFRYWpnfeeac06jtvBu2mAACYzq9gkZ+frzVr1qhfv36//AC7Xf369dOyZcvO+hq3262cnJwSt9LAzpsAAJjPr2Bx+PBheTwexcfHl3g8Pj5eGRkZZ33NpEmTFBUV5bslJSVdeLW/gXZTAADMV+pdIRMnTlR2drbvlp6eXirvc0u3uhrdp76qRQSXys8HAAC/z+nPwdWqVZPD4dDBgwdLPH7w4EElJCSc9TUul0sul+vCKzxPd/euX+rvAQAAfptfIxbBwcFq37695s6d63vM6/Vq7ty5SklJCXhxAACgYvFrxEKSJkyYoBEjRqhDhw7q1KmTXnjhBR0/flwjR44sjfoAAEAF4new+NOf/qRDhw7pkUceUUZGhtq0aaNvv/32Vws6AQBA5WMzijeAKCM5OTmKiopSdna2IiMjy/KtAQDABTrfz2/LXCsEAACYj2ABAAAChmABAAAChmABAAAChmABAAAChmABAAAChmABAAAChmABAAAChmABAAACxu8tvS9W8UafOTk5Zf3WAADgAhV/bv/eht1lHixyc3MlSUlJSWX91gAA4CLl5uYqKirqnM+X+bVCvF6v9u/fr4iICNlstoD93JycHCUlJSk9PZ1rkJQyznXZ4VyXDc5z2eFcl51An2vDMJSbm6vExETZ7edeSVHmIxZ2u121atUqtZ8fGRnJf6xlhHNddjjXZYPzXHY412UnkOf6t0YqirF4EwAABAzBAgAABIxlgoXL5dKjjz4ql8tldimWx7kuO5zrssF5Ljuc67Jj1rku88WbAADAuiwzYgEAAMxHsAAAAAFDsAAAAAFDsAAAAAFjmWDx6quvqk6dOgoJCVHnzp21cuVKs0uq0CZNmqSOHTsqIiJCcXFxGjp0qLZs2VLimFOnTmn06NGKjY1VeHi4rr76ah08eNCkiq3jqaeeks1m0/jx432Pca4DZ9++fbrxxhsVGxur0NBQtWzZUqtXr/Y9bxiGHnnkEdWoUUOhoaHq16+ftm3bZmLFFY/H49HDDz+sunXrKjQ0VPXr19ff//73EteY4DxfmIULF2rw4MFKTEyUzWbTF198UeL58zmvR48e1bBhwxQZGano6GjdeuutysvLC1yRhgVMnz7dCA4ONt555x1j06ZNxu23325ER0cbBw8eNLu0Cqt///7Gu+++a2zcuNFIS0szBg4caCQnJxt5eXm+Y+666y4jKSnJmDt3rrF69WqjS5cuRteuXU2suuJbuXKlUadOHaNVq1bGuHHjfI9zrgPj6NGjRu3atY2bb77ZWLFihbFjxw5jzpw5xvbt233HPPXUU0ZUVJTxxRdfGOvXrzeGDBli1K1b1zh58qSJlVcsTzzxhBEbG2vMnj3b2Llzp/Hpp58a4eHhxosvvug7hvN8Yb7++mvjoYceMj7//HNDkjFjxowSz5/PeR0wYIDRunVrY/ny5caiRYuMBg0aGNdff33AarREsOjUqZMxevRo3/cej8dITEw0Jk2aZGJV1pKZmWlIMhYsWGAYhmFkZWUZQUFBxqeffuo75scffzQkGcuWLTOrzAotNzfXaNiwofHdd98ZvXr18gULznXgPPDAA0b37t3P+bzX6zUSEhKMZ555xvdYVlaW4XK5jI8++qgsSrSEQYMGGbfcckuJx/7whz8Yw4YNMwyD8xwo/xsszue8bt682ZBkrFq1ynfMN998Y9hsNmPfvn0BqavCT4Xk5+drzZo16tevn+8xu92ufv36admyZSZWZi3Z2dmSpJiYGEnSmjVrVFBQUOK8N2nSRMnJyZz3CzR69GgNGjSoxDmVONeBNGvWLHXo0EHXXHON4uLi1LZtW02ZMsX3/M6dO5WRkVHiXEdFRalz586caz907dpVc+fO1datWyVJ69ev1+LFi3X55ZdL4jyXlvM5r8uWLVN0dLQ6dOjgO6Zfv36y2+1asWJFQOoo84uQBdrhw4fl8XgUHx9f4vH4+Hj99NNPJlVlLV6vV+PHj1e3bt3UokULSVJGRoaCg4MVHR1d4tj4+HhlZGSYUGXFNn36dK1du1arVq361XOc68DZsWOHJk+erAkTJuivf/2rVq1apbFjxyo4OFgjRozwnc+z/XvCuT5/Dz74oHJyctSkSRM5HA55PB498cQTGjZsmCRxnkvJ+ZzXjIwMxcXFlXje6XQqJiYmYOe+wgcLlL7Ro0dr48aNWrx4sdmlWFJ6errGjRun7777TiEhIWaXY2ler1cdOnTQk08+KUlq27atNm7cqNdff10jRowwuTrr+OSTTzRt2jR9+OGHat68udLS0jR+/HglJiZyniuBCj8VUq1aNTkcjl+tkD948KASEhJMqso6xowZo9mzZ2v+/PklLnefkJCg/Px8ZWVllTie8+6/NWvWKDMzU+3atZPT6ZTT6dSCBQv00ksvyel0Kj4+nnMdIDVq1FCzZs1KPNa0aVPt2bNHknznk39PLs7999+vBx98UNddd51atmypm266Sffee68mTZokifNcWs7nvCYkJCgzM7PE84WFhTp69GjAzn2FDxbBwcFq37695s6d63vM6/Vq7ty5SklJMbGyis0wDI0ZM0YzZszQvHnzVLdu3RLPt2/fXkFBQSXO+5YtW7Rnzx7Ou5/69u2rDRs2KC0tzXfr0KGDhg0b5vuacx0Y3bp1+1Xb9NatW1W7dm1JUt26dZWQkFDiXOfk5GjFihWcaz+cOHFCdnvJjxeHwyGv1yuJ81xazue8pqSkKCsrS2vWrPEdM2/ePHm9XnXu3DkwhQRkCajJpk+fbrhcLmPq1KnG5s2bjTvuuMOIjo42MjIyzC6twrr77ruNqKgoIzU11Thw4IDvduLECd8xd911l5GcnGzMmzfPWL16tZGSkmKkpKSYWLV1nNkVYhic60BZuXKl4XQ6jSeeeMLYtm2bMW3aNCMsLMz44IMPfMc89dRTRnR0tDFz5kzjhx9+MK688kraIP00YsQIo2bNmr52088//9yoVq2a8Ze//MV3DOf5wuTm5hrr1q0z1q1bZ0gynn/+eWPdunXG7t27DcM4v/M6YMAAo23btsaKFSuMxYsXGw0bNqTd9GxefvllIzk52QgODjY6depkLF++3OySKjRJZ729++67vmNOnjxpjBo1yqhataoRFhZmXHXVVcaBAwfMK9pC/jdYcK4D58svvzRatGhhuFwuo0mTJsabb75Z4nmv12s8/PDDRnx8vOFyuYy+ffsaW7ZsManaiiknJ8cYN26ckZycbISEhBj16tUzHnroIcPtdvuO4TxfmPnz55/13+YRI0YYhnF+5/XIkSPG9ddfb4SHhxuRkZHGyJEjjdzc3IDVyGXTAQBAwFT4NRYAAKD8IFgAAICAIVgAAICAIVgAAICAIVgAAICAIVgAAICAIVgAAICAIVgAAICAIVgAAICAIVgAAICAIVgAAICAIVgAAICA+X/mad+dmTld9QAAAABJRU5ErkJggg==" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 17 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:12.458305Z", - "start_time": "2024-05-24T21:28:12.420027Z" - } - }, - "cell_type": "code", - "source": [ - "pp(copasi_results)\n", - "akt_concen = amici_results['results']['floating_species_concentrations']['Akt']\n", - "times = amici_results['results']['time']\n", - "\n", - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(times, akt_concen)\n", - "plt.show()" - ], - "id": "6afac16712d869e4", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{ 'results': { 'floating_species_concentrations': { 'Akt': [ 0.0,\n", - " 6.021953401729781e+22,\n", - " 6.021112979401326e+22,\n", - " 6.019655556618463e+22,\n", - " 6.017768516010995e+22,\n", - " 6.015611698907673e+22,\n", - " 6.013288966310516e+22,\n", - " 6.01085505403383e+22,\n", - " 6.008328606883569e+22,\n", - " 6.005703941780694e+22,\n", - " 6.002960066698436e+22,\n", - " 6.000067131788502e+22,\n", - " 5.9969908581614876e+22,\n", - " 5.993695481550904e+22,\n", - " 5.990145645356191e+22,\n", - " 5.986307568136125e+22,\n", - " 5.9821497205740645e+22,\n", - " 5.977643175803161e+22,\n", - " 5.9727617475413625e+22,\n", - " 5.967481993424905e+22,\n", - " 5.961783135862215e+22,\n", - " 5.955646934641475e+22,\n", - " 5.949057533931026e+22,\n", - " 5.942001298074558e+22,\n", - " 5.934466644826192e+22,\n", - " 5.92644388164159e+22,\n", - " 5.917925047858655e+22,\n", - " 5.90890376459404e+22,\n", - " 5.899375093026752e+22,\n", - " 5.889335397481922e+22,\n", - " 5.8787822248314775e+22,\n", - " 5.867714182375898e+22,\n", - " 5.856130833977876e+22,\n", - " 5.844032588664249e+22,\n", - " 5.831420610416965e+22,\n", - " 5.81829672873341e+22,\n", - " 5.8046633557537455e+22,\n", - " 5.790523409720932e+22,\n", - " 5.775880244303002e+22,\n", - " 5.760737583581744e+22,\n", - " 5.745099462712988e+22,\n", - " 5.728970173436938e+22,\n", - " 5.712354215764097e+22,\n", - " 5.695256252053837e+22,\n", - " 5.677681067998689e+22,\n", - " 5.659633553546397e+22,\n", - " 5.641118608809114e+22,\n", - " 5.622141212305106e+22,\n", - " 5.60270631166014e+22,\n", - " 5.582818847930576e+22,\n", - " 5.562483725100504e+22,\n", - " 5.541705795057654e+22,\n", - " 5.520489844496651e+22,\n", - " 5.498840584142621e+22,\n", - " 5.476762640050839e+22,\n", - " 5.454260546782387e+22,\n", - " 5.431338742262504e+22,\n", - " 5.4080015641406815e+22,\n", - " 5.3842532474866306e+22,\n", - " 5.360097923665189e+22,\n", - " 5.335539620245063e+22,\n", - " 5.3105822618135174e+22,\n", - " 5.285229671646717e+22,\n", - " 5.2594855739476775e+22,\n", - " 5.233353596798951e+22,\n", - " 5.206837274579404e+22,\n", - " 5.179940053439716e+22,\n", - " 5.1526652935654684e+22,\n", - " 5.125016274791671e+22,\n", - " 5.0969962006787035e+22,\n", - " 5.0686082032946865e+22,\n", - " 5.039855348090286e+22,\n", - " 5.01074063884786e+22,\n", - " 4.981267022688463e+22,\n", - " 4.9514373951123635e+22,\n", - " 4.921254605048122e+22,\n", - " 4.890721459894446e+22,\n", - " 4.859840730492512e+22,\n", - " 4.828615155904531e+22,\n", - " 4.7970474488205656e+22,\n", - " 4.765140300111774e+22,\n", - " 4.7328963837463406e+22,\n", - " 4.7003183615571785e+22,\n", - " 4.667408887950031e+22,\n", - " 4.634170614552793e+22,\n", - " 4.600606194803179e+22,\n", - " 4.566718288487246e+22,\n", - " 4.5325095662229754e+22,\n", - " 4.497982713901178e+22,\n", - " 4.46314043708399e+22,\n", - " 4.427985461361994e+22,\n", - " 4.392520552858125e+22,\n", - " 4.356748498173506e+22,\n", - " 4.32067210221802e+22,\n", - " 4.284294255403111e+22,\n", - " 4.247617872201307e+22,\n", - " 4.210645916925217e+22,\n", - " 4.17338140835216e+22,\n", - " 4.135827423654227e+22,\n", - " 4.0979871034765725e+22,\n", - " 4.059863655722707e+22,\n", - " 4.021460361013767e+22,\n", - " 3.982780576359718e+22,\n", - " 3.943827741129774e+22,\n", - " 3.904605380806297e+22,\n", - " 3.865117112706203e+22,\n", - " 3.825366650683283e+22,\n", - " 3.785357811360015e+22,\n", - " 3.7450945192363903e+22,\n", - " 3.7045808115060178e+22,\n", - " 3.6638208451425725e+22,\n", - " 3.6228189027324987e+22,\n", - " 3.58157939812278e+22,\n", - " 3.5401068854192328e+22,\n", - " 3.4984060636399554e+22,\n", - " 3.4564817867835487e+22,\n", - " 3.4143390659910966e+22,\n", - " 3.3719830850916323e+22,\n", - " 3.3294192043864453e+22,\n", - " 3.286652971099074e+22,\n", - " 3.2436901277951775e+22,\n", - " 3.2005366239452606e+22,\n", - " 3.1571986254019797e+22,\n", - " 3.1136825257749876e+22,\n", - " 3.0699949581612565e+22,\n", - " 3.0261428075248325e+22,\n", - " 2.982133223768888e+22,\n", - " 2.937973635535438e+22,\n", - " 2.893671764769308e+22,\n", - " 2.8492356420820376e+22,\n", - " 2.8046736229498706e+22,\n", - " 2.759994404777676e+22,\n", - " 2.7152070448308237e+22,\n", - " 2.6703209791929572e+22,\n", - " 2.6253460425073786e+22,\n", - " 2.580292488775582e+22,\n", - " 2.5351710130924616e+22,\n", - " 2.489992774376047e+22,\n", - " 2.444769418916527e+22,\n", - " 2.3995131050506427e+22,\n", - " 2.3542365285912557e+22,\n", - " 2.3089529512619944e+22,\n", - " 2.26367622137257e+22]},\n", - " 'time': [ 0.0,\n", - " 0.7,\n", - " 1.4,\n", - " 2.1,\n", - " 2.8,\n", - " 3.5,\n", - " 4.2,\n", - " 4.9,\n", - " 5.6,\n", - " 6.3,\n", - " 7.0,\n", - " 7.7,\n", - " 8.4,\n", - " 9.1,\n", - " 9.8,\n", - " 10.5,\n", - " 11.2,\n", - " 11.9,\n", - " 12.6,\n", - " 13.3,\n", - " 14.0,\n", - " 14.7,\n", - " 15.4,\n", - " 16.1,\n", - " 16.8,\n", - " 17.5,\n", - " 18.2,\n", - " 18.9,\n", - " 19.6,\n", - " 20.3,\n", - " 21.0,\n", - " 21.7,\n", - " 22.4,\n", - " 23.1,\n", - " 23.8,\n", - " 24.5,\n", - " 25.2,\n", - " 25.9,\n", - " 26.6,\n", - " 27.3,\n", - " 28.0,\n", - " 28.7,\n", - " 29.4,\n", - " 30.1,\n", - " 30.8,\n", - " 31.5,\n", - " 32.2,\n", - " 32.9,\n", - " 33.6,\n", - " 34.3,\n", - " 35.0,\n", - " 35.7,\n", - " 36.4,\n", - " 37.1,\n", - " 37.8,\n", - " 38.5,\n", - " 39.2,\n", - " 39.9,\n", - " 40.6,\n", - " 41.3,\n", - " 42.0,\n", - " 42.7,\n", - " 43.4,\n", - " 44.1,\n", - " 44.8,\n", - " 45.5,\n", - " 46.2,\n", - " 46.9,\n", - " 47.6,\n", - " 48.3,\n", - " 49.0,\n", - " 49.7,\n", - " 50.4,\n", - " 51.1,\n", - " 51.8,\n", - " 52.5,\n", - " 53.2,\n", - " 53.9,\n", - " 54.6,\n", - " 55.3,\n", - " 56.0,\n", - " 56.7,\n", - " 57.4,\n", - " 58.1,\n", - " 58.8,\n", - " 59.5,\n", - " 60.2,\n", - " 60.9,\n", - " 61.6,\n", - " 62.3,\n", - " 63.0,\n", - " 63.7,\n", - " 64.4,\n", - " 65.1,\n", - " 65.8,\n", - " 66.5,\n", - " 67.2,\n", - " 67.9,\n", - " 68.6,\n", - " 69.3,\n", - " 70.0,\n", - " 70.7,\n", - " 71.4,\n", - " 72.1,\n", - " 72.8,\n", - " 73.5,\n", - " 74.2,\n", - " 74.9,\n", - " 75.6,\n", - " 76.3,\n", - " 77.0,\n", - " 77.7,\n", - " 78.4,\n", - " 79.1,\n", - " 79.8,\n", - " 80.5,\n", - " 81.2,\n", - " 81.9,\n", - " 82.6,\n", - " 83.3,\n", - " 84.0,\n", - " 84.7,\n", - " 85.4,\n", - " 86.1,\n", - " 86.8,\n", - " 87.5,\n", - " 88.2,\n", - " 88.9,\n", - " 89.6,\n", - " 90.3,\n", - " 91.0,\n", - " 91.7,\n", - " 92.4,\n", - " 93.1,\n", - " 93.8,\n", - " 94.5,\n", - " 95.2,\n", - " 95.9,\n", - " 96.6,\n", - " 97.3,\n", - " 98.0,\n", - " 98.7,\n", - " 99.4]}}\n" - ] - }, - { - "data": { - "text/plain": [ - "
" - ], - "image/png": "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Ly+P/BwKhQgcAAAsdUlx06NHD/Xo0eNbx3m9XtXX16u6ulo5OTmSpM2bNyscDis/P7/Fc3JyctSpUydVVlZq9OjRkqSamhrV1tbK6/VGxu3du1e33XabSktLNX/+/FbN2+l0yul0tmosAACIbzH5tJQk3X777QoGg1q6dKmampo0btw45ebmatWqVZKkI0eOqKCgQC+//LLy8vIkSY888og2bNig5cuXy+VyadKkSZK+fG+N9OWvom677TYVFhbq6aefjjxXYmJiq6LrK3xaCgCA+NPa1++YvKFYklauXKmJEyeqoKBACQkJGj16tBYtWhQ53tTUpJqaGp05cyay77nnnouMbWxsVGFhoZ5//vnI8VdeeUXHjh3TihUrtGLFisj+a665Rv/5z39idSkAACCOxOzOzZWMOzcAAMSfDv2eGwAAgI5C3AAAAKsQNwAAwCrEDQAAsApxAwAArELcAAAAqxA3AADAKsQNAACwCnEDAACsQtwAAACrEDcAAMAqxA0AALAKcQMAAKxC3AAAAKsQNwAAwCrEDQAAsApxAwAArELcAAAAqxA3AADAKsQNAACwCnEDAACsQtwAAACrEDcAAMAqxA0AALAKcQMAAKxC3AAAAKsQNwAAwCrEDQAAsApxAwAArELcAAAAqxA3AADAKsQNAACwCnEDAACsQtwAAACrEDcAAMAqxA0AALAKcQMAAKxC3AAAAKsQNwAAwCrEDQAAsApxAwAArELcAAAAqxA3AADAKsQNAACwCnEDAACsQtwAAACrEDcAAMAqxA0AALAKcQMAAKxC3AAAAKsQNwAAwCrEDQAAsApxAwAArELcAAAAqxA3AADAKsQNAACwCnEDAACsErO4OXHihEpKSuRyuZSamqqysjKdOnXqouecO3dOEyZMUFpamrp06aLRo0crGAy2OPbzzz9Xnz595HA4VF9fH4MrAAAA8ShmcVNSUqK9e/dq06ZNWr9+vd5++22NHz/+ouc89thjeuONN7R27Vpt2bJFR48e1d13393i2LKyMt1www2xmDoAAIhjDmOMaesH3b9/vwYOHKjt27crNzdXkrRx40bdcccd+vTTT5WRkfGNcxoaGtSjRw+tWrVK99xzjyTpwIEDGjBggPx+v4YNGxYZ+8ILL2jNmjWaO3euCgoK9N///lepqamtnl8oFJLb7VZDQ4NcLtd3u1gA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" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 18 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2024-05-24T21:28:12.460097Z", - "start_time": "2024-05-24T21:28:12.458912Z" - } - }, - "cell_type": "code", + "execution_count": null, "source": "", - "id": "1c7094589689e1aa", - "outputs": [], - "execution_count": 18 + "id": "80cfb67a20f5f372" } ], "metadata": { diff --git a/pyproject.toml b/toml similarity index 87% rename from pyproject.toml rename to toml index 8c12d9d3f..582de48c2 100644 --- a/pyproject.toml +++ b/toml @@ -26,16 +26,8 @@ docker = ">=7.0" python-libnuml = "^1.1.6" notebook = "^7.1.1" toml = "*" -fastapi = "^0.109.0" # "*" pyyaml = "*" pydantic = "*" -h5py = "*" -pydantic-settings = "*" -httpx = "*" -tensorstore = "*" -aiofiles = "*" -aiobotocore = "*" -uvicorn = {extras = ["standard"], version = "*"} seaborn = "^0.13.2" # psutil = "^5.9.8"