diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 000000000..51c8032b0 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + { + "associatedIndex": 6 +} + + + + + + + { + "keyToString": { + "Python.biosimulator-processes-process.executor": "Debug", + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "git-widget-placeholder": "main", + "last_opened_file_path": "/Users/alex/Desktop/uchc_work/biosimulator-processes/.github/workflows", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors.Color Scheme Font", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1708532751619 + + + + + + + + + \ No newline at end of file diff --git a/notebooks/parameter_scan.ipynb b/notebooks/parameter_scan.ipynb index 379e29077..23459881c 100644 --- a/notebooks/parameter_scan.ipynb +++ b/notebooks/parameter_scan.ipynb @@ -2,38 +2,21 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "initial_id", "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:40:09.529528Z", - "start_time": "2024-03-05T14:40:07.975826Z" - }, "collapsed": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CobraProcess registered successfully.\n", - "CopasiProcess registered successfully.\n", - "SmoldynProcess registered successfully.\n", - "TelluriumProcess registered successfully.\n" - ] - } - ], + "outputs": [], "source": [ "import sys\n", "\n", - "import numpy as np\n", "\n", "sys.path.insert(0, '..')\n", "import os\n", "from process_bigraph import pp, pf\n", "from biosimulator_processes.data_model import *\n", "import numpy as np \n", - "from pydantic import field_validator, Field\n", "from biosimulator_processes.biosimulator_builder import BiosimulatorBuilder" ] }, @@ -47,607 +30,6 @@ "Choose an entrypoint to a non-spatial, COPASI/Tellurium-like simulation process and perform an n-iteration parameter scan of a selected parameter." ] }, - { - "cell_type": "code", - "execution_count": 72, - "id": "641505567730866", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:59:46.693689Z", - "start_time": "2024-03-05T14:59:46.690845Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "x = np.arange(0, 10, 0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "b3eec4bc1c818665", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:40:09.536360Z", - "start_time": "2024-03-05T14:40:09.533248Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. ,\n", - " 6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "907147f7c9afba7a", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "dfa08250e393392", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:51:58.878247Z", - "start_time": "2024-03-05T14:51:58.872705Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "class ParameterScanRange(BaseModel):\n", - " num_iter: int \n", - " interval: int\n", - " param_name: str \n", - " param_range: np.ndarray = Field(default=None) \n", - " \n", - " def perturb(self):\n", - " return np.linspace(\n", - " start=0.0, \n", - " stop=self.num_iter, \n", - " num=self.interval)\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "d221969e44508", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:52:17.448627Z", - "start_time": "2024-03-05T14:52:17.446193Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "scan = ParameterScanRange(\n", - " num_iter=100,\n", - " interval=100,\n", - " param_name='ADP'\n", - " \n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "e3d0382707d19861", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:52:18.291908Z", - "start_time": "2024-03-05T14:52:18.288755Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "_range = scan.perturb()" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "5310420a428f2506", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:52:22.823791Z", - "start_time": "2024-03-05T14:52:22.819997Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "((100,),\n", - " array([ 0. , 1.01010101, 2.02020202, 3.03030303,\n", - " 4.04040404, 5.05050505, 6.06060606, 7.07070707,\n", - " 8.08080808, 9.09090909, 10.1010101 , 11.11111111,\n", - " 12.12121212, 13.13131313, 14.14141414, 15.15151515,\n", - " 16.16161616, 17.17171717, 18.18181818, 19.19191919,\n", - " 20.2020202 , 21.21212121, 22.22222222, 23.23232323,\n", - " 24.24242424, 25.25252525, 26.26262626, 27.27272727,\n", - " 28.28282828, 29.29292929, 30.3030303 , 31.31313131,\n", - " 32.32323232, 33.33333333, 34.34343434, 35.35353535,\n", - " 36.36363636, 37.37373737, 38.38383838, 39.39393939,\n", - " 40.4040404 , 41.41414141, 42.42424242, 43.43434343,\n", - " 44.44444444, 45.45454545, 46.46464646, 47.47474747,\n", - " 48.48484848, 49.49494949, 50.50505051, 51.51515152,\n", - " 52.52525253, 53.53535354, 54.54545455, 55.55555556,\n", - " 56.56565657, 57.57575758, 58.58585859, 59.5959596 ,\n", - " 60.60606061, 61.61616162, 62.62626263, 63.63636364,\n", - " 64.64646465, 65.65656566, 66.66666667, 67.67676768,\n", - " 68.68686869, 69.6969697 , 70.70707071, 71.71717172,\n", - " 72.72727273, 73.73737374, 74.74747475, 75.75757576,\n", - " 76.76767677, 77.77777778, 78.78787879, 79.7979798 ,\n", - " 80.80808081, 81.81818182, 82.82828283, 83.83838384,\n", - " 84.84848485, 85.85858586, 86.86868687, 87.87878788,\n", - " 88.88888889, 89.8989899 , 90.90909091, 91.91919192,\n", - " 92.92929293, 93.93939394, 94.94949495, 95.95959596,\n", - " 96.96969697, 97.97979798, 98.98989899, 100. ]))" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "_range.shape, _range" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "4a43a5b0c28daf70", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:48:55.815294Z", - "start_time": "2024-03-05T14:48:55.813117Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "y = np.linspace(0, 100, 100)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "ccff4a3bed6d8b27", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:48:56.696740Z", - "start_time": "2024-03-05T14:48:56.692974Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(100,\n", - " array([ 0. , 1.01010101, 2.02020202, 3.03030303,\n", - " 4.04040404, 5.05050505, 6.06060606, 7.07070707,\n", - " 8.08080808, 9.09090909, 10.1010101 , 11.11111111,\n", - " 12.12121212, 13.13131313, 14.14141414, 15.15151515,\n", - " 16.16161616, 17.17171717, 18.18181818, 19.19191919,\n", - " 20.2020202 , 21.21212121, 22.22222222, 23.23232323,\n", - " 24.24242424, 25.25252525, 26.26262626, 27.27272727,\n", - " 28.28282828, 29.29292929, 30.3030303 , 31.31313131,\n", - " 32.32323232, 33.33333333, 34.34343434, 35.35353535,\n", - " 36.36363636, 37.37373737, 38.38383838, 39.39393939,\n", - " 40.4040404 , 41.41414141, 42.42424242, 43.43434343,\n", - " 44.44444444, 45.45454545, 46.46464646, 47.47474747,\n", - " 48.48484848, 49.49494949, 50.50505051, 51.51515152,\n", - " 52.52525253, 53.53535354, 54.54545455, 55.55555556,\n", - " 56.56565657, 57.57575758, 58.58585859, 59.5959596 ,\n", - " 60.60606061, 61.61616162, 62.62626263, 63.63636364,\n", - " 64.64646465, 65.65656566, 66.66666667, 67.67676768,\n", - " 68.68686869, 69.6969697 , 70.70707071, 71.71717172,\n", - " 72.72727273, 73.73737374, 74.74747475, 75.75757576,\n", - " 76.76767677, 77.77777778, 78.78787879, 79.7979798 ,\n", - " 80.80808081, 81.81818182, 82.82828283, 83.83838384,\n", - " 84.84848485, 85.85858586, 86.86868687, 87.87878788,\n", - " 88.88888889, 89.8989899 , 90.90909091, 91.91919192,\n", - " 92.92929293, 93.93939394, 94.94949495, 95.95959596,\n", - " 96.96969697, 97.97979798, 98.98989899, 100. ]))" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(y), y" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "b9d1efab450f7cc2", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:44:12.848581Z", - "start_time": "2024-03-05T14:44:12.843940Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "417" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(_range)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "f5084bc9884e25e5", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:44:33.574591Z", - "start_time": "2024-03-05T14:44:33.571563Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(100,)" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "bc70e5d559e5c3af", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:44:41.815625Z", - "start_time": "2024-03-05T14:44:41.811373Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0. , 1.01010101, 2.02020202, 3.03030303, 4.04040404,\n", - " 5.05050505, 6.06060606, 7.07070707, 8.08080808, 9.09090909])" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y[:10]" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "8677495d70dae4b1", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:56:25.548276Z", - "start_time": "2024-03-05T14:56:25.546411Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "y = np.arange(start=0, stop=100, step=2.0)" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "b8c25b961284eaa7", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:56:25.953507Z", - "start_time": "2024-03-05T14:56:25.950838Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "((50,),\n", - " array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 22., 24.,\n", - " 26., 28., 30., 32., 34., 36., 38., 40., 42., 44., 46., 48., 50.,\n", - " 52., 54., 56., 58., 60., 62., 64., 66., 68., 70., 72., 74., 76.,\n", - " 78., 80., 82., 84., 86., 88., 90., 92., 94., 96., 98.]))" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y.shape, y" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "55417e882ec3db8a", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:56:01.543016Z", - "start_time": "2024-03-05T14:56:01.541078Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "# ADD PARAMETER SCAN AS A STEP IMPLEMENTATION" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "7df3348256e9c58b", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T14:59:55.764206Z", - "start_time": "2024-03-05T14:59:55.760557Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "def perturbed_parameter_range(num_iter: int, degree: float):\n", - " _range = []\n", - " for n in range(num_iter):\n", - " if n > 0:\n", - " n = n * degree \n", - " _range.append(n)\n", - " return _range " - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "b721717f3f2ac6d4", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T15:00:39.669354Z", - "start_time": "2024-03-05T15:00:39.666238Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "r = perturbed_parameter_range(100, 0.0023)" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "70a1b7fbf2203ac9", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T15:00:40.152232Z", - "start_time": "2024-03-05T15:00:40.149205Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[0,\n", - " 0.0023,\n", - " 0.0046,\n", - " 0.0069,\n", - " 0.0092,\n", - " 0.0115,\n", - " 0.0138,\n", - " 0.0161,\n", - " 0.0184,\n", - " 0.0207,\n", - " 0.023,\n", - " 0.0253,\n", - " 0.0276,\n", - " 0.0299,\n", - " 0.0322,\n", - " 0.0345,\n", - " 0.0368,\n", - " 0.039099999999999996,\n", - " 0.0414,\n", - " 0.0437,\n", - " 0.046,\n", - " 0.048299999999999996,\n", - " 0.0506,\n", - " 0.0529,\n", - " 0.0552,\n", - " 0.057499999999999996,\n", - " 0.0598,\n", - " 0.0621,\n", - " 0.0644,\n", - " 0.0667,\n", - " 0.069,\n", - " 0.0713,\n", - " 0.0736,\n", - " 0.0759,\n", - " 0.07819999999999999,\n", - " 0.0805,\n", - " 0.0828,\n", - " 0.0851,\n", - " 0.0874,\n", - " 0.0897,\n", - " 0.092,\n", - " 0.0943,\n", - " 0.09659999999999999,\n", - " 0.0989,\n", - " 0.1012,\n", - " 0.1035,\n", - " 0.1058,\n", - " 0.1081,\n", - " 0.1104,\n", - " 0.1127,\n", - " 0.11499999999999999,\n", - " 0.1173,\n", - " 0.1196,\n", - " 0.1219,\n", - " 0.1242,\n", - " 0.1265,\n", - " 0.1288,\n", - " 0.1311,\n", - " 0.1334,\n", - " 0.1357,\n", - " 0.138,\n", - " 0.1403,\n", - " 0.1426,\n", - " 0.1449,\n", - " 0.1472,\n", - " 0.1495,\n", - " 0.1518,\n", - " 0.1541,\n", - " 0.15639999999999998,\n", - " 0.1587,\n", - " 0.161,\n", - " 0.1633,\n", - " 0.1656,\n", - " 0.1679,\n", - " 0.1702,\n", - " 0.1725,\n", - " 0.1748,\n", - " 0.1771,\n", - " 0.1794,\n", - " 0.1817,\n", - " 0.184,\n", - " 0.1863,\n", - " 0.1886,\n", - " 0.1909,\n", - " 0.19319999999999998,\n", - " 0.1955,\n", - " 0.1978,\n", - " 0.2001,\n", - " 0.2024,\n", - " 0.2047,\n", - " 0.207,\n", - " 0.20929999999999999,\n", - " 0.2116,\n", - " 0.2139,\n", - " 0.2162,\n", - " 0.2185,\n", - " 0.2208,\n", - " 0.2231,\n", - " 0.2254,\n", - " 0.22769999999999999]" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "4043f029b2bbc5df", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T15:00:45.653557Z", - "start_time": "2024-03-05T15:00:45.649756Z" - }, - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "100" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(r)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "69263df35d05f476", - "metadata": { - "ExecuteTime": { - "end_time": "2024-03-05T16:24:55.403167Z", - "start_time": "2024-03-05T16:24:53.585623Z" - }, - "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" - ] - } - ], - "source": [ - "from biosimulator_processes.data_model import TimeCourseProcessConfigSchema" - ] - }, { "cell_type": "code", "execution_count": null,