diff --git a/biosimulator_processes/processes/copasi_process.py b/biosimulator_processes/processes/copasi_process.py index 7bc127274..77509fc6e 100644 --- a/biosimulator_processes/processes/copasi_process.py +++ b/biosimulator_processes/processes/copasi_process.py @@ -89,10 +89,11 @@ class CopasiProcess(Process): }, 'biomodel_id': 'maybe[string]', # <-- implies the lack of either model_file or model_reactions 'units': 'maybe[tree[string]]', - 'method': { - '_type': 'string', - '_default': 'lsoda' - } + 'method': 'maybe[string]' + # 'method': { + # '_type': 'string', + # '_default': 'lsoda' + # } } def __init__(self, config=None, core=None): @@ -117,7 +118,7 @@ def __init__(self, config=None, core=None): else: self.copasi_model_object = new_model(name='CopasiProcess Model') - self.model_changes: Dict = self.config['model']['model_changes'] + self.model_changes: Dict = self.config['model'].get('model_changes', {}) reaction_changes: Dict = self.model_changes.get('reaction_changes') # add reactions @@ -145,6 +146,8 @@ def __init__(self, config=None, core=None): # Get a list of compartments self.compartments_list = get_compartments(model=self.copasi_model_object).index.tolist() + self.method = self.config.get('method') + def initial_state(self): floating_species_dict = dict( zip(self.floating_species_list, self.floating_species_initial)) @@ -191,20 +194,28 @@ def update(self, inputs, interval): model=self.copasi_model_object) # run model for "interval" length; we only want the state at the end - timecourse = run_time_course( - start_time=inputs['time'], - duration=interval, - # intervals=1, - update_model=True, - model=self.copasi_model_object) - #method=self.config['solver']) + timecourse_args = { + 'start_time': inputs['time'], + 'duration': interval, + 'update_model': True, + # 'intervals': 1, + 'model': self.copasi_model_object} + if self.method: + timecourse_args['method'] = self.method + + # run the time course with given kwargs + timecourse = run_time_course(**timecourse_args) # extract end values of concentrations from the model and set them in results results = {'time': interval} results['floating_species'] = { - mol_id: float(get_species(name=mol_id, exact=True, - model=self.copasi_model_object).concentration[0]) - for mol_id in self.floating_species_list} + mol_id: float(get_species( + name=mol_id, + exact=True, + model=self.copasi_model_object + ).concentration[0]) + for mol_id in self.floating_species_list + } return results diff --git a/biosimulator_processes/utils.py b/biosimulator_processes/utils.py index d4c821571..81cf1d636 100644 --- a/biosimulator_processes/utils.py +++ b/biosimulator_processes/utils.py @@ -14,9 +14,9 @@ def fetch_biomodel_by_term(term: str, index: int = 0): """ models = biomodels.search_for_model(term) model = models[index] - sbml = biomodels.get_content_for_model(model['id']) - return load_model_from_string(sbml) + return fetch_biomodel(model['id']) def fetch_biomodel(model_id: str): - return biomodels.get_content_for_model(model_id) + sbml = biomodels.get_content_for_model(model_id) + return load_model_from_string(sbml) diff --git a/notebooks/copasi_process_composer.ipynb b/notebooks/copasi_process_composer.ipynb index a604e3083..8e2c83124 100644 --- a/notebooks/copasi_process_composer.ipynb +++ b/notebooks/copasi_process_composer.ipynb @@ -12,14 +12,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "initial_id", - "metadata": { - "ExecuteTime": { - "end_time": "2024-02-28T16:56:33.450213Z", - "start_time": "2024-02-28T16:56:33.445551Z" - } - }, + "metadata": {}, "outputs": [], "source": [ "import sys \n", @@ -29,31 +24,12 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "c6c10dc5988e52d4", "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-02-28T18:42:15.497044Z", - "start_time": "2024-02-28T18:42:13.902065Z" - } + "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CobraProcess registered successfully.\n", - "CopasiProcess registered successfully.\n", - "SmoldynProcess registered successfully.\n", - "TelluriumProcess registered successfully.\n", - "CobraProcess registered successfully.\n", - "CopasiProcess registered successfully.\n", - "SmoldynProcess registered successfully.\n", - "TelluriumProcess registered successfully.\n" - ] - } - ], + "outputs": [], "source": [ "import os \n", "from basico import *\n", @@ -130,14 +106,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "77636dbde3fa6b74", "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-02-28T16:55:01.622694Z", - "start_time": "2024-02-28T16:55:01.616799Z" - } + "collapsed": false }, "outputs": [], "source": [ @@ -193,35 +165,12 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "4c2ef631b005be61", "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-02-28T16:55:02.826058Z", - "start_time": "2024-02-28T16:55:02.781306Z" - } + "collapsed": false }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "'model_file'", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mKeyError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[0;32mIn[8], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m workflow \u001B[38;5;241m=\u001B[39m \u001B[43mComposite\u001B[49m\u001B[43m(\u001B[49m\u001B[43m{\u001B[49m\n\u001B[1;32m 2\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mstate\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m:\u001B[49m\u001B[43m \u001B[49m\u001B[43minstance\u001B[49m\n\u001B[1;32m 3\u001B[0m \u001B[43m}\u001B[49m\u001B[43m)\u001B[49m\n", - "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-KVuYbFzt-py3.10/lib/python3.10/site-packages/process_bigraph/composite.py:411\u001B[0m, in \u001B[0;36mComposite.__init__\u001B[0;34m(self, config, local_types)\u001B[0m\n\u001B[1;32m 408\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mglobal_time\u001B[39m\u001B[38;5;124m'\u001B[39m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;129;01min\u001B[39;00m initial_state:\n\u001B[1;32m 409\u001B[0m initial_state[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mglobal_time\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m0.0\u001B[39m\n\u001B[0;32m--> 411\u001B[0m composition, state \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[43mcomplete\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 412\u001B[0m \u001B[43m \u001B[49m\u001B[43minitial_composition\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 413\u001B[0m \u001B[43m \u001B[49m\u001B[43minitial_state\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 415\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcomposition \u001B[38;5;241m=\u001B[39m copy\u001B[38;5;241m.\u001B[39mdeepcopy(\n\u001B[1;32m 416\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcore\u001B[38;5;241m.\u001B[39maccess(composition))\n\u001B[1;32m 418\u001B[0m \u001B[38;5;66;03m# TODO: add flag to self.core.access(copy=True)\u001B[39;00m\n", - "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-KVuYbFzt-py3.10/lib/python3.10/site-packages/bigraph_schema/type_system.py:1251\u001B[0m, in \u001B[0;36mTypeSystem.complete\u001B[0;34m(self, initial_schema, initial_state)\u001B[0m\n\u001B[1;32m 1245\u001B[0m state \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mhydrate(\n\u001B[1;32m 1246\u001B[0m full_schema,\n\u001B[1;32m 1247\u001B[0m initial_state)\n\u001B[1;32m 1249\u001B[0m \u001B[38;5;66;03m# fill in the parts of the composition schema\u001B[39;00m\n\u001B[1;32m 1250\u001B[0m \u001B[38;5;66;03m# determined by the state\u001B[39;00m\n\u001B[0;32m-> 1251\u001B[0m schema, state \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43minfer_schema\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 1252\u001B[0m \u001B[43m \u001B[49m\u001B[43mfull_schema\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1253\u001B[0m \u001B[43m \u001B[49m\u001B[43mstate\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1255\u001B[0m final_state \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfill(schema, state)\n\u001B[1;32m 1257\u001B[0m \u001B[38;5;66;03m# TODO: add flag to types.access(copy=True)\u001B[39;00m\n", - "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-KVuYbFzt-py3.10/lib/python3.10/site-packages/process_bigraph/type_system.py:243\u001B[0m, in \u001B[0;36mProcessTypes.infer_schema\u001B[0;34m(self, schema, state, top_state, path)\u001B[0m\n\u001B[1;32m 240\u001B[0m inner_path \u001B[38;5;241m=\u001B[39m path \u001B[38;5;241m+\u001B[39m (key,)\n\u001B[1;32m 241\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m get_path(schema, inner_path) \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;129;01mor\u001B[39;00m get_path(state, inner_path) \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;129;01mor\u001B[39;00m (\n\u001B[1;32m 242\u001B[0m \u001B[38;5;28misinstance\u001B[39m(value, \u001B[38;5;28mdict\u001B[39m) \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m_type\u001B[39m\u001B[38;5;124m'\u001B[39m \u001B[38;5;129;01min\u001B[39;00m value):\n\u001B[0;32m--> 243\u001B[0m schema, top_state \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43minfer_schema\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 244\u001B[0m \u001B[43m \u001B[49m\u001B[43mschema\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 245\u001B[0m \u001B[43m \u001B[49m\u001B[43mvalue\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 246\u001B[0m \u001B[43m \u001B[49m\u001B[43mtop_state\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtop_state\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 247\u001B[0m \u001B[43m \u001B[49m\u001B[43mpath\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43minner_path\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 249\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(state, \u001B[38;5;28mstr\u001B[39m):\n\u001B[1;32m 250\u001B[0m \u001B[38;5;28;01mpass\u001B[39;00m\n", - "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-KVuYbFzt-py3.10/lib/python3.10/site-packages/process_bigraph/type_system.py:195\u001B[0m, in \u001B[0;36mProcessTypes.infer_schema\u001B[0;34m(self, schema, state, top_state, path)\u001B[0m\n\u001B[1;32m 192\u001B[0m state_type \u001B[38;5;241m=\u001B[39m state[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m_type\u001B[39m\u001B[38;5;124m'\u001B[39m]\n\u001B[1;32m 193\u001B[0m state_schema \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39maccess(state_type)\n\u001B[0;32m--> 195\u001B[0m hydrated_state \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdeserialize\u001B[49m\u001B[43m(\u001B[49m\u001B[43mstate_schema\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mstate\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 196\u001B[0m top_state \u001B[38;5;241m=\u001B[39m set_path(\n\u001B[1;32m 197\u001B[0m top_state,\n\u001B[1;32m 198\u001B[0m path,\n\u001B[1;32m 199\u001B[0m hydrated_state)\n\u001B[1;32m 201\u001B[0m schema \u001B[38;5;241m=\u001B[39m set_path(\n\u001B[1;32m 202\u001B[0m schema,\n\u001B[1;32m 203\u001B[0m path,\n\u001B[1;32m 204\u001B[0m {\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m_type\u001B[39m\u001B[38;5;124m'\u001B[39m: state_type})\n", - "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-KVuYbFzt-py3.10/lib/python3.10/site-packages/bigraph_schema/type_system.py:605\u001B[0m, in \u001B[0;36mTypeSystem.deserialize\u001B[0;34m(self, schema, encoded)\u001B[0m\n\u001B[1;32m 602\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m encoded \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m 603\u001B[0m encoded \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdefault(schema)\n\u001B[0;32m--> 605\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mdeserialize_function\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 606\u001B[0m \u001B[43m \u001B[49m\u001B[43mencoded\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 607\u001B[0m \u001B[43m \u001B[49m\u001B[43mfound\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 608\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[1;32m 610\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(encoded, \u001B[38;5;28mdict\u001B[39m):\n\u001B[1;32m 611\u001B[0m result \u001B[38;5;241m=\u001B[39m {}\n", - "File \u001B[0;32m~/Library/Caches/pypoetry/virtualenvs/biosimulator-processes-KVuYbFzt-py3.10/lib/python3.10/site-packages/process_bigraph/type_system.py:86\u001B[0m, in \u001B[0;36mdeserialize_process\u001B[0;34m(encoded, schema, core)\u001B[0m\n\u001B[1;32m 81\u001B[0m interval \u001B[38;5;241m=\u001B[39m core\u001B[38;5;241m.\u001B[39mdeserialize(\n\u001B[1;32m 82\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124minterval\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[1;32m 83\u001B[0m encoded\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124minterval\u001B[39m\u001B[38;5;124m'\u001B[39m))\n\u001B[1;32m 85\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124minstance\u001B[39m\u001B[38;5;124m'\u001B[39m \u001B[38;5;129;01min\u001B[39;00m deserialized:\n\u001B[0;32m---> 86\u001B[0m process \u001B[38;5;241m=\u001B[39m \u001B[43minstantiate\u001B[49m\u001B[43m(\u001B[49m\u001B[43mconfig\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 87\u001B[0m deserialized[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124minstance\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m process\n\u001B[1;32m 89\u001B[0m deserialized[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mconfig\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m config\n", - "File \u001B[0;32m~/Desktop/uchc_work/biosimulator-processes/notebooks/../biosimulator_processes/processes/copasi_process.py:142\u001B[0m, in \u001B[0;36m__init__\u001B[0;34m(self, config, core)\u001B[0m\n\u001B[1;32m 139\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21m__init__\u001B[39m(\u001B[38;5;28mself\u001B[39m, config\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m, core\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m):\n\u001B[1;32m 140\u001B[0m \u001B[38;5;28msuper\u001B[39m()\u001B[38;5;241m.\u001B[39m\u001B[38;5;21m__init__\u001B[39m(config, core)\n\u001B[0;32m--> 142\u001B[0m model_file \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mconfig\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel\u001B[39m\u001B[38;5;124m'\u001B[39m)\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel_source\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m 143\u001B[0m sed_model_id \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mconfig\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel\u001B[39m\u001B[38;5;124m'\u001B[39m)\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel_id\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m 144\u001B[0m biomodel_id \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mconfig\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mbiomodel_id\u001B[39m\u001B[38;5;124m'\u001B[39m)\n", - "\u001B[0;31mKeyError\u001B[0m: 'model_file'" - ] - } - ], + "outputs": [], "source": [ "workflow = Composite({\n", " 'state': instance\n", @@ -240,57 +189,12 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "98676149a4ce822f", "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-02-27T21:23:21.963694Z", - "start_time": "2024-02-27T21:23:21.872500Z" - } + "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "/Users/alex/Desktop/uchc_work/biosimulator-processes/biosimulator_processes/processes/copasi_process.py:193: 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", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n", - "Error while running the simulation: >ERROR 2024-02-27T16:23:21<\n", - " CCopasiTask (5): No output file defined for report of task 'Time-Course'.>EXCEPTION 2024-02-27T16:23:21<\n", - " CTrajectoryMethod (25): Invalid state at time '1.000000'.\n" - ] - } - ], + "outputs": [], "source": [ "workflow.run(10)" ] @@ -307,28 +211,12 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "c15cee593ef000a7", "metadata": { - "ExecuteTime": { - "end_time": "2024-02-27T18:03:31.449568Z", - "start_time": "2024-02-27T18:03:31.430175Z" - }, "collapsed": false }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'workflow' is not defined", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[0;32mIn[7], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m results \u001B[38;5;241m=\u001B[39m \u001B[43mworkflow\u001B[49m\u001B[38;5;241m.\u001B[39mgather_results()\n\u001B[1;32m 3\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mRESULTS: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mpf(results)\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m'\u001B[39m)\n", - "\u001B[0;31mNameError\u001B[0m: name 'workflow' is not defined" - ] - } - ], + "outputs": [], "source": [ "results = workflow.gather_results()\n", "\n", @@ -347,13 +235,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "297504800772775e", "metadata": { - "ExecuteTime": { - "end_time": "2024-02-27T18:03:34.777284Z", - "start_time": "2024-02-27T18:03:34.770320Z" - }, "collapsed": false }, "outputs": [], @@ -381,7 +265,7 @@ " 'address': 'local:copasi',\n", " 'config': {\n", " 'model': {\n", - " 'model_source':\n", + " 'model_changes':\n", " }\n", " },\n", " 'inputs': {\n", @@ -427,7 +311,7 @@ { "cell_type": "markdown", "source": [ - "#### Example 2a: " + "#### Example 2a: Define a single process with a different entrypoint." ], "metadata": { "collapsed": false @@ -451,7 +335,7 @@ "metadata": { "collapsed": false }, - "id": "76c24f1f14b6a0b7" + "id": "c7280f14074f4b17" } ], "metadata": {