{ "cells": [ { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "import ivp\n", "import solveMatrix\n", "import os\n", "import cModel\n", "import sys\n", "import json\n", "from contextlib import contextmanager\n", "import numpy as np\n", "import time\n", "import scipy.interpolate\n", "import shutil\n", "import importlib\n", "from scipy.optimize import least_squares\n", "importlib.reload(solveMatrix)\n", "\n", "import runSolver\n", "importlib.reload(runSolver)\n", "importlib.reload(cModel)\n", "def updateSetup(job):\n", " setupFileSrc = job['setupFile']\n", " setupFile = os.path.join(job['jobDir'], 'setupInput.json')\n", " with open(setupFileSrc, 'r') as f:\n", " setup = json.load(f)\n", " try:\n", " setup.update(job['setupUpdates'])\n", " except KeyError:\n", " pass\n", " with open(setupFile, 'w+') as f:\n", " f.write(json.dumps(setup))\n", " return setupFile\n", "\n", "\n", "def generate_noisy_data(full_sol, noise_std=20.5):\n", " full_sol = np.asarray(full_sol) # Ensure input is a NumPy array\n", " random_state = np.random.RandomState(seed=None)\n", " \n", " # Create highly volatile noise\n", " noise = random_state.normal(loc=0, scale=noise_std, size=full_sol.shape) ** 2 # Squared to amplify large deviations\n", " noise2 = np.random.laplace(loc=0, scale=noise_std * 10, size=full_sol.shape) # Increased scale for even more extreme spikes\n", " \n", " # Introduce highly chaotic scaling factors\n", " random_scaling = random_state.uniform(-200, 400, size=full_sol.shape) # Further extended range for more variation\n", " random_exponent = random_state.uniform(4, 12, size=full_sol.shape) # Increased exponentiation for more instability\n", " \n", " # Apply extreme, chaotic transformations\n", " noisy_data = np.zeros_like(full_sol)\n", " for i in range(len(full_sol)):\n", " perturbation = random_scaling[i] * (abs(noise[i]) ** random_exponent[i]) - noise2[i] * np.sin(full_sol[i])\n", " noisy_data[i] = (1 + np.tanh(perturbation)) * full_sol[i] * np.cosh(noise[i])\n", " \n", " # Introduce frequent large perturbations to increase instability\n", " if random_state.rand() < 0.75: # 30% chance of a drastic shift\n", " noisy_data[i] *= random_state.uniform(2, 5)\n", " \n", " return noisy_data\n", "\n", "\n", "def calculate_residuals(full_sol, noisy_data):\n", " \"\"\"\n", " Calculates residuals based on the solution and noisy data.\n", " \"\"\"\n", " residuals = np.ravel((noisy_data - full_sol))\n", " #print(residuals)\n", " return residuals\n", "\n", "\n", "# Updated cost function\n", "def cost_function(params,parnames,noisy_data,model,startPoint,setup,jobDir):\n", " \"\"\"\n", " Cost function that calculates residuals based on the model.\n", " \"\"\" \n", " #print(params)\n", " model.setValues(parnames,params)\n", " clean_dir(jobDir)\n", " t,sol,se,qt,sOut,full_t,full_sol=runSolver.solve(model,setup,startPoint,jobDir)\n", " residuals = calculate_residuals(np.array(full_sol), noisy_data)\n", " return residuals\n", "\n", "\n", "def create_name_value_dict(original_dict):\n", " return {\n", " val['name']: val['value']\n", " for key, val in original_dict.items()\n", " if isinstance(val, dict) and 'name' in val and 'value' in val\n", " }\n", " \n", " # Create parameter dictionary\n", "def clean_dir(jobDir):\n", " \n", " shutil.rmtree(jobDir)\n", " os.mkdir(jobDir)\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using solution from None\n", "t0=0\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n" ] } ], "source": [ "#PRENOS ZAČETNIH PODATKOV \n", "##############################################################################################################################################\n", "import os\n", "fh = os.path.expanduser(\"~\")\n", "srcDir = \"NONE\"\n", "jobDir = os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen',\"rezultati\")\n", "setup_file = os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen', 'setup', 'setupMinute.json')\n", "model_file = os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen', 'models', 'cDiazepam.json')\n", "parameter_file1 = os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen', 'models', 'cDiazepam_parameters.json')\n", "\n", "\n", "# Prvi model s prvim parameter file\n", "model1 = cModel.model()\n", "model1.parse(model_file, parameter_file1)\n", "setup1 = runSolver.parseSetup(setup_file)\n", "name_value_dict1 = create_name_value_dict(model1.parSetup['parameters'])\n", "\n", "\n", "# Lahko zdaj uporabiš name_value_dict1 in name_value_dict2 ločeno\n", "\n", "\n", " # Excluded parameters\n", "excluded_params1 = {'venousInput',\"heartPC\",\"kidneyPC\",\"remainderPC\",\"skinPC\",\"splanchnicPC\",\"stomachPC\",\"testesPC\",\"one\",\"venousVolume\",\"heartVolume\",\"brainVolume\",\"adiposeVolume\",\"remainderFlow\"}\n", "\n", " # Create initial guesses without excluded parameters\n", "initial_guesses = np.array(\n", " [val for par, val in name_value_dict1.items() if par not in excluded_params1],\n", " dtype=np.float64\n", " )\n", "\n", " # Create list of parameter names without excluded\n", "param_names = [par for par in name_value_dict1.keys() if par not in excluded_params1]\n", "initial_pars = np.array([x for x in initial_guesses])\n", "#initial_pars[3]*=1.1\n", "clean_dir(jobDir)\n", "#print(\"kolicnik\")\n", "#print(initial_guesses/initial_pars)\n", "#print(param_names)\n", "\n", "\n", "\n", "# TO NAREDI REŠITVE Z ZAČETNIMI PARAMETRI\n", "start_point= runSolver.findStartPoint(\"NONE\",setup1)\n", "model1.setValues(param_names,initial_pars)\n", "t,sol,se,qt,sOut,full_t,full_sol = runSolver.solve(model1,setup1,start_point,jobDir)\n", "clean_dir(jobDir)\n", "\n", "\n", "# Step 4: Create a new dictionary for the optimized parameters\n", "# Map the optimized parameters back to the correct order in the original parameter dictionary\n", "optimized_params_dict1 = {par: initial_guesses[i] for i, par in enumerate(param_names)}\n", "\n", "# Step 5: Include the excluded parameters with their original values\n", "for par in excluded_params1:\n", " optimized_params_dict1[par] = name_value_dict1[par]\n", "\n", "# Step 6: Ensure that everything stays in order in the final dictionary\n", "# This will maintain the order of parameters as they appear in the original `name_value_dict2`\n", "final_dict1 = {par: optimized_params_dict1.get(par, name_value_dict1[par]) for par in name_value_dict1}\n", "\n", "\n", "#################################################################################################################333\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using solution from None\n", "t0=0\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.032 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.61\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.030 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.021 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.024 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.019 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.15\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.017 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.024 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.18\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.017 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.043 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.032 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.03\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.030 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.024 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.024 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.46\n", "Done simultaneous LSODA SE\n", "Time: 0.018 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.04\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.023 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.032 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.027 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.58\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.047 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.46\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.74\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.030 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.02\n", "Done simultaneous LSODA SE\n", "Time: 0.036 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.020 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.018 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.027 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.18\n", "Done simultaneous LSODA SE\n", "Time: 0.019 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.48\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.022 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.021 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.018 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.053 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.76\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.022 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.010 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.022 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.021 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.017 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.017 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.01\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.030 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.15\n", "Done simultaneous LSODA SE\n", "Time: 0.105 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.021 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.024 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.024 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.25\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.021 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.58\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.020 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.022 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.022 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.021 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.84\n", "Done simultaneous LSODA SE\n", "Time: 0.029 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.022 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.029 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.022 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.023 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.03\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.020 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.027 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.017 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.011 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.21\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.017 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.014 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.015 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.012 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.026 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.071 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.044 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "At t=0.51\n", "Done simultaneous LSODA SE\n", "Time: 0.025 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.022 s\n", "Completed step _step000\n", "Completed run\n", "[ 1.74659883 -21.59512933 73.43342163 5.2943311 92.22997272\n", " 2.17458492 0.73479546 5.97314366 9.43833359 36.29997533\n", " 80.27193016 18.08766251 8.64495342 18.91622159 -28.78033659\n", " -7.15337052 0.72165612 79.02614902 1.19286922 136.96546951\n", " 51.77227525 13.61706947 -16.19622629 -9.14040946 15.31920667\n", " 12.06094379 -0.25430498]\n", "{'venousInput': 0.01, 'adiposePC': 23.1, 'brainPC': 2.2, 'heartPC': 2.3, 'kidneyPC': 3.2, 'liverPC': 7.1, 'lungPC': 6.3, 'musclePC': 2.4, 'remainderPC': 13.5, 'skinPC': 3.2, 'splanchnicPC': 4.3, 'stomachPC': 4.5, 'testesPC': 4.7, 'adiposeFlow': 2.55, 'brainFlow': 0.78, 'heartFlow': 4.2, 'kidneyFlow': 13.61, 'liverInFlow': 2.55, 'totalFlow': 60, 'muscleFlow': 12.25, 'skinFlow': 7.1, 'splanchnicFlow': 12.25, 'stomachFlow': 1.9, 'testesFlow': 1.9, 'remainderFlow': 4.91, 'adiposeVolume': 8, 'brainVolume': 1.2, 'heartVolume': 1, 'kidneyVolume': 2, 'liverVolume': 11, 'lungVolume': 1.2, 'muscleVolume': 125, 'skinVolume': 43.8, 'splanchnicVolume': 15, 'stomachVolume': 1.1, 'testesVolume': 2.5, 'remainderVolume': 15.8, 'venousVolume': 13.6, 'arterialVolume': 6.8, 'k1': 0.0105, 'one': 1}\n", "{'venousInput': 0.01, 'adiposePC': 1.7465988293694654, 'brainPC': -21.595129329777393, 'heartPC': 2.3, 'kidneyPC': 3.2, 'liverPC': 73.43342162640477, 'lungPC': 5.294331096692011, 'musclePC': 92.2299727216926, 'remainderPC': 13.5, 'skinPC': 3.2, 'splanchnicPC': 4.3, 'stomachPC': 4.5, 'testesPC': 4.7, 'adiposeFlow': 2.174584920485238, 'brainFlow': 0.7347954552044431, 'heartFlow': 5.973143661549732, 'kidneyFlow': 9.438333587016956, 'liverInFlow': 36.299975332476535, 'totalFlow': 80.27193016146373, 'muscleFlow': 18.08766250777834, 'skinFlow': 8.644953418972285, 'splanchnicFlow': 18.916221586431863, 'stomachFlow': -28.780336588095842, 'testesFlow': -7.153370524280696, 'remainderFlow': 4.91, 'adiposeVolume': 8, 'brainVolume': 1.2, 'heartVolume': 1, 'kidneyVolume': 0.7216561223489145, 'liverVolume': 79.02614901847276, 'lungVolume': 1.1928692237387737, 'muscleVolume': 136.96546950816472, 'skinVolume': 51.77227525216925, 'splanchnicVolume': 13.617069468689676, 'stomachVolume': -16.196226290960496, 'testesVolume': -9.140409459100297, 'remainderVolume': 15.319206674351369, 'venousVolume': 13.6, 'arterialVolume': 12.06094378520841, 'k1': -0.2543049806392662, 'one': 1}\n" ] } ], "source": [ "# Z DRUGIMI PARAMETRI\n", "##########################################################################################################################\n", "\n", "fh = os.path.expanduser(\"~\")\n", "# Drugi model z drugim parameter file\n", "parameter_file2 = os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen', 'models', 'cDiazepam_parameters1.json')\n", "model2 = cModel.model()\n", "model2.parse(model_file, parameter_file2)\n", "setup2 = runSolver.parseSetup(setup_file)\n", "name_value_dict2 = create_name_value_dict(model2.parSetup['parameters'])\n", "\n", " # Excluded parameters\n", "excluded_params2 = {'venousInput',\"heartPC\",\"kidneyPC\",\"remainderPC\",\"skinPC\",\"splanchnicPC\",\"stomachPC\",\"testesPC\",\"one\",\"venousVolume\",\"heartVolume\",\"brainVolume\",\"adiposeVolume\",\"remainderFlow\"}\n", "\n", "\n", "# Step 1: Filter out excluded parameters for initial guesses\n", "initial_guesses2 = np.array(\n", " [val for par, val in name_value_dict2.items() if par not in excluded_params2],\n", " dtype=np.float64\n", ")\n", "\n", "param_names2 = [par for par in name_value_dict2.keys() if par not in excluded_params2]\n", "initial_pars2 = np.array([x for x in initial_guesses2])\n", "\n", "# Step 4: Create a new dictionary for the optimized parameters\n", "# Map the optimized parameters back to the correct order in the original parameter dictionary\n", "optimized_params_dict2 = {par: initial_guesses2[i] for i, par in enumerate(param_names2)}\n", "\n", "# Step 5: Include the excluded parameters with their original values\n", "for par in excluded_params2:\n", " optimized_params_dict2[par] = name_value_dict2[par]\n", "\n", "# Step 6: Ensure that everything stays in order in the final dictionary\n", "# This will maintain the order of parameters as they appear in the original `name_value_dict2`\n", "final_dict2 = {par: optimized_params_dict2.get(par, name_value_dict2[par]) for par in name_value_dict2}\n", "\n", "# Step 2: Run optimization\n", "clean_dir(jobDir)\n", "start_point2= runSolver.findStartPoint(\"NONE\",setup2)\n", "t,sol,se,qt,sOut,full_t,full_sol2 = runSolver.solve(model2,setup2,start_point2,jobDir)\n", "result = least_squares(\n", " cost_function, initial_guesses2,\n", " args=(param_names2, full_sol, model2, start_point2, setup2, jobDir)\n", ")\n", "\n", "# Step 3: Retrieve optimized parameters\n", "optimized_params3 = result.x\n", "print(result.x)\n", "# Step 4: Create a new dictionary for the optimized parameters\n", "# Map the optimized parameters back to the correct order in the original parameter dictionary\n", "optimized_params_dict3 = {par: optimized_params3[i] for i, par in enumerate(param_names2)}\n", "\n", "# Step 5: Include the excluded parameters with their original values\n", "for par in excluded_params2:\n", " optimized_params_dict3[par] = name_value_dict2[par]\n", "\n", "# Step 6: Ensure that everything stays in order in the final dictionary\n", "# This will maintain the order of parameters as they appear in the original `name_value_dict2`\n", "final_optimized_dict3 = {par: optimized_params_dict3.get(par, name_value_dict2[par]) for par in name_value_dict2}\n", "\n", "# Now, final_optimized_dict contains the optimized values in the same order as in `name_value_dict2`\n", "print(name_value_dict2)\n", "print(final_optimized_dict3)\n", "\n", "vrednosti3 = np.array(\n", " [val for par, val in final_optimized_dict3.items()],\n", " dtype=np.float64\n", " )\n", "\n", "param_names3 = [par for par in final_optimized_dict3.keys()]\n", "#model2.setValues(param_names3,vrednosti3)\n", "#################################################################################################################################\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Done simultaneous LSODA SE\n", "Time: 0.018 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.016 s\n", "Completed step _step000\n", "Completed run\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.019 s\n", "Completed step _step000\n", "Completed run\n", "[[ nan nan nan ... nan nan nan]\n", " [0.60873508 0.53813026 0.81134775 ... 0.57771961 0.99995013 1. ]\n", " [0.61550637 0.54451048 0.81853063 ... 0.58146461 0.99990086 1. ]\n", " ...\n", " [1.0249745 1.06054859 0.96967546 ... 1.11568738 0.99802461 1. ]\n", " [1.02554972 1.06217769 0.96862133 ... 1.11616898 0.99786717 1. ]\n", " [1.02611539 1.06379957 0.96756267 ... 1.11663802 0.99770678 1. ]]\n", "[[ nan nan nan ... nan nan nan]\n", " [0.60873529 0.53813017 0.81134808 ... 0.57771998 0.99995013 1. ]\n", " [0.61550668 0.54451048 0.8185311 ... 0.58146503 0.99990086 1. ]\n", " ...\n", " [1.02497457 1.06054812 0.96967557 ... 1.11568748 0.99802466 1. ]\n", " [1.02554979 1.06217721 0.96862143 ... 1.11616907 0.99786723 1. ]\n", " [1.02611546 1.06379909 0.96756278 ... 1.11663811 0.99770684 1. ]]\n", "[[ nan nan nan ... nan nan nan]\n", " [1.00000035 0.99999985 1.00000041 ... 1.00000065 1. 1. ]\n", " [1.00000051 1.00000001 1.00000057 ... 1.00000072 1. 1. ]\n", " ...\n", " [1.00000007 0.99999956 1.00000011 ... 1.00000009 1.00000005 1. ]\n", " [1.00000007 0.99999956 1.00000011 ... 1.00000009 1.00000005 1. ]\n", " [1.00000006 0.99999956 1.00000011 ... 1.00000009 1.00000005 1. ]]\n", "[1. 1. 0.78021978 1.18867925 1. 1.\n", " 1. 1. 0.81938591 0.71830986 0.75 0.75384615\n", " 1. 0.60493827 1. 1. 1. 1.\n", " 1. 1. 1. 1. 1. 1.\n", " 1. 1. 1. ]\n", "[ 0.07561034 -9.81596788 10.34273544 0.84037002 38.4291553\n", " 0.8527784 0.94204546 1.42217706 0.6934852 14.23528444\n", " 1.3378655 1.47654388 1.21759907 1.54418135 -15.14754557\n", " -3.76493185 0.36082806 7.18419537 0.99405769 1.09572376\n", " 1.18201542 0.90780463 -14.72384208 -3.65616378 0.96957004\n", " 1.7736682 -24.21952197]\n", "[ 0.07561034 -9.81596788 8.06960677 0.9989304 38.4291553\n", " 0.8527784 0.94204546 1.42217706 0.568232 10.22534516\n", " 1.00339913 1.11308692 1.21759907 0.9341344 -15.14754557\n", " -3.76493185 0.36082806 7.18419537 0.99405769 1.09572376\n", " 1.18201542 0.90780463 -14.72384208 -3.65616378 0.96957004\n", " 1.7736682 -24.21952197]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_32968/671249074.py:15: RuntimeWarning: invalid value encountered in divide\n", " print(np.array(full_sol2)/np.array(full_sol1))\n", "/tmp/ipykernel_32968/671249074.py:16: RuntimeWarning: invalid value encountered in divide\n", " print(np.array(full_sol3)/np.array(full_sol1))\n", "/tmp/ipykernel_32968/671249074.py:17: RuntimeWarning: invalid value encountered in divide\n", " print(np.array(full_sol3)/np.array(full_sol2))\n" ] } ], "source": [ "#model2.setValues(param_names3,vrednosti3)\n", "#################################################################################################################################\n", "# PREVRBA ČE SO 3 različne rešitve\n", "clean_dir(jobDir)\n", "t,sol,se,qt,sOut,full_t,full_sol1 = runSolver.solve(model1,setup1,start_point,jobDir)\n", "clean_dir(jobDir)\n", "t,sol,se,qt,sOut,full_t,full_sol2 = runSolver.solve(model2,setup2,start_point,jobDir)\n", "\n", "\n", "model2.setValues(param_names3,vrednosti3)\n", "clean_dir(jobDir)\n", "t,sol,se,qt,sOut,full_t,full_sol3 = runSolver.solve(model2,setup2,start_point,jobDir)\n", "\n", "\n", "print(np.array(full_sol2)/np.array(full_sol1))\n", "print(np.array(full_sol3)/np.array(full_sol1))\n", "print(np.array(full_sol3)/np.array(full_sol2))\n", "\n", "\n", "print(initial_guesses2/initial_guesses)\n", "print(optimized_params3/initial_guesses2)\n", "print(optimized_params3/initial_guesses)\n", "##################################################################################################################################\n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.019 s\n", "Completed step _step000\n", "Completed run\n", "Parameter 'venousInput' updated to 0.01.\n", "Parameter 'adiposePC' updated to 23.1.\n", "Parameter 'brainPC' updated to 2.2.\n", "Parameter 'heartPC' updated to 4.3.\n", "Parameter 'kidneyPC' updated to 5.2.\n", "Parameter 'liverPC' updated to 9.1.\n", "Parameter 'lungPC' updated to 5.3.\n", "Parameter 'musclePC' updated to 2.4.\n", "Parameter 'remainderPC' updated to 16.5.\n", "Parameter 'skinPC' updated to 3.2.\n", "Parameter 'splanchnicPC' updated to 4.3.\n", "Parameter 'stomachPC' updated to 4.5.\n", "Parameter 'testesPC' updated to 4.7.\n", "Parameter 'adiposeFlow' updated to 2.55.\n", "Parameter 'brainFlow' updated to 0.78.\n", "Parameter 'heartFlow' updated to 4.2.\n", "Parameter 'kidneyFlow' updated to 16.61.\n", "Parameter 'liverInFlow' updated to 3.55.\n", "Parameter 'totalFlow' updated to 80.0.\n", "Parameter 'muscleFlow' updated to 16.25.\n", "Parameter 'skinFlow' updated to 7.1.\n", "Parameter 'splanchnicFlow' updated to 20.25.\n", "Parameter 'stomachFlow' updated to 1.9.\n", "Parameter 'testesFlow' updated to 1.9.\n", "Parameter 'remainderFlow' updated to 4.91.\n", "Parameter 'adiposeVolume' updated to 10.\n", "Parameter 'brainVolume' updated to 1.2.\n", "Parameter 'heartVolume' updated to 1.\n", "Parameter 'kidneyVolume' updated to 2.0.\n", "Parameter 'liverVolume' updated to 11.0.\n", "Parameter 'lungVolume' updated to 1.2.\n", "Parameter 'muscleVolume' updated to 125.0.\n", "Parameter 'skinVolume' updated to 43.8.\n", "Parameter 'splanchnicVolume' updated to 15.0.\n", "Parameter 'stomachVolume' updated to 1.1.\n", "Parameter 'testesVolume' updated to 2.5.\n", "Parameter 'remainderVolume' updated to 15.8.\n", "Parameter 'venousVolume' updated to 13.6.\n", "Parameter 'arterialVolume' updated to 6.8.\n", "Parameter 'k1' updated to 0.0105.\n", "Parameter 'one' updated to 1.\n", "Parameters have been written to the new file: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/run1/parameters.json\n", "Updated parameters have been written to /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/run1/parameters.json\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.017 s\n", "Completed step _step000\n", "Completed run\n", "Parameter 'venousInput' updated to 0.01.\n", "Parameter 'adiposePC' updated to 23.1.\n", "Parameter 'brainPC' updated to 2.2.\n", "Parameter 'heartPC' updated to 2.3.\n", "Parameter 'kidneyPC' updated to 3.2.\n", "Parameter 'liverPC' updated to 7.1.\n", "Parameter 'lungPC' updated to 6.3.\n", "Parameter 'musclePC' updated to 2.4.\n", "Parameter 'remainderPC' updated to 13.5.\n", "Parameter 'skinPC' updated to 3.2.\n", "Parameter 'splanchnicPC' updated to 4.3.\n", "Parameter 'stomachPC' updated to 4.5.\n", "Parameter 'testesPC' updated to 4.7.\n", "Parameter 'adiposeFlow' updated to 2.55.\n", "Parameter 'brainFlow' updated to 0.78.\n", "Parameter 'heartFlow' updated to 4.2.\n", "Parameter 'kidneyFlow' updated to 13.61.\n", "Parameter 'liverInFlow' updated to 2.55.\n", "Parameter 'totalFlow' updated to 60.0.\n", "Parameter 'muscleFlow' updated to 12.25.\n", "Parameter 'skinFlow' updated to 7.1.\n", "Parameter 'splanchnicFlow' updated to 12.25.\n", "Parameter 'stomachFlow' updated to 1.9.\n", "Parameter 'testesFlow' updated to 1.9.\n", "Parameter 'remainderFlow' updated to 4.91.\n", "Parameter 'adiposeVolume' updated to 8.\n", "Parameter 'brainVolume' updated to 1.2.\n", "Parameter 'heartVolume' updated to 1.\n", "Parameter 'kidneyVolume' updated to 2.0.\n", "Parameter 'liverVolume' updated to 11.0.\n", "Parameter 'lungVolume' updated to 1.2.\n", "Parameter 'muscleVolume' updated to 125.0.\n", "Parameter 'skinVolume' updated to 43.8.\n", "Parameter 'splanchnicVolume' updated to 15.0.\n", "Parameter 'stomachVolume' updated to 1.1.\n", "Parameter 'testesVolume' updated to 2.5.\n", "Parameter 'remainderVolume' updated to 15.8.\n", "Parameter 'venousVolume' updated to 13.6.\n", "Parameter 'arterialVolume' updated to 6.8.\n", "Parameter 'k1' updated to 0.0105.\n", "Parameter 'one' updated to 1.\n", "Parameters have been written to the new file: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/run2/parameters.json\n", "Updated parameters have been written to /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/run2/parameters.json\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.013 s\n", "Completed step _step000\n", "Completed run\n", "Parameter 'venousInput' updated to 0.01.\n", "Parameter 'adiposePC' updated to 1.7465988293694654.\n", "Parameter 'brainPC' updated to -21.595129329777393.\n", "Parameter 'heartPC' updated to 2.3.\n", "Parameter 'kidneyPC' updated to 3.2.\n", "Parameter 'liverPC' updated to 73.43342162640477.\n", "Parameter 'lungPC' updated to 5.294331096692011.\n", "Parameter 'musclePC' updated to 92.2299727216926.\n", "Parameter 'remainderPC' updated to 13.5.\n", "Parameter 'skinPC' updated to 3.2.\n", "Parameter 'splanchnicPC' updated to 4.3.\n", "Parameter 'stomachPC' updated to 4.5.\n", "Parameter 'testesPC' updated to 4.7.\n", "Parameter 'adiposeFlow' updated to 2.174584920485238.\n", "Parameter 'brainFlow' updated to 0.7347954552044431.\n", "Parameter 'heartFlow' updated to 5.973143661549732.\n", "Parameter 'kidneyFlow' updated to 9.438333587016956.\n", "Parameter 'liverInFlow' updated to 36.299975332476535.\n", "Parameter 'totalFlow' updated to 80.27193016146373.\n", "Parameter 'muscleFlow' updated to 18.08766250777834.\n", "Parameter 'skinFlow' updated to 8.644953418972285.\n", "Parameter 'splanchnicFlow' updated to 18.916221586431863.\n", "Parameter 'stomachFlow' updated to -28.780336588095842.\n", "Parameter 'testesFlow' updated to -7.153370524280696.\n", "Parameter 'remainderFlow' updated to 4.91.\n", "Parameter 'adiposeVolume' updated to 8.\n", "Parameter 'brainVolume' updated to 1.2.\n", "Parameter 'heartVolume' updated to 1.\n", "Parameter 'kidneyVolume' updated to 0.7216561223489145.\n", "Parameter 'liverVolume' updated to 79.02614901847276.\n", "Parameter 'lungVolume' updated to 1.1928692237387737.\n", "Parameter 'muscleVolume' updated to 136.96546950816472.\n", "Parameter 'skinVolume' updated to 51.77227525216925.\n", "Parameter 'splanchnicVolume' updated to 13.617069468689676.\n", "Parameter 'stomachVolume' updated to -16.196226290960496.\n", "Parameter 'testesVolume' updated to -9.140409459100297.\n", "Parameter 'remainderVolume' updated to 15.319206674351369.\n", "Parameter 'venousVolume' updated to 13.6.\n", "Parameter 'arterialVolume' updated to 12.06094378520841.\n", "Parameter 'k1' updated to -0.2543049806392662.\n", "Parameter 'one' updated to 1.\n", "Parameters have been written to the new file: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/run3/parameters.json\n", "Updated parameters have been written to /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/run3/parameters.json\n", "Parameters for run3 saved at: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/run3/parameters.json\n" ] } ], "source": [ "\n", "# SHRANIMO REŠITVE ZA PARAMETRE\n", "\n", "\n", "def create_or_clean_dir(directory):\n", " \"\"\"Create the directory if it doesn't exist, otherwise clean it.\"\"\"\n", " if os.path.exists(directory):\n", " shutil.rmtree(directory) # Remove the existing directory and its contents\n", " os.makedirs(directory) # Create a fresh directory\n", "\n", "# Example structure to match your requested output format\n", "# Example structure to match your requested output format\n", "def save_parameters(file_path, param_dict):\n", " \"\"\"\n", " Overwrites the original file with the updated parameters.\n", "\n", " Parameters:\n", " file_path (str): The path where the updated parameters will be saved.\n", " param_dict (dict): The updated parameters to save.\n", " \"\"\"\n", " # Ensure the directory exists\n", " os.makedirs(os.path.dirname(file_path), exist_ok=True)\n", "\n", " # Open the original file and load its content to preserve its structure\n", " with open(file_path, 'r') as f:\n", " data = json.load(f)\n", "\n", " # Update the 'parameters' field with the new parameters\n", " data['parameters'] = param_dict\n", "\n", " # Save the updated structure back to the same file\n", " with open(file_path, 'w') as f:\n", " json.dump(data, f, indent=4)\n", "\n", " print(f\"Updated parameters have been written to {file_path}\")\n", " return file_path # Make sure the file path is returned\n", "\n", "# Define unique subdirectories\n", "jobDir1 = os.path.join(jobDir, \"run1\")\n", "jobDir2 = os.path.join(jobDir, \"run2\")\n", "jobDir3 = os.path.join(jobDir, \"run3\")\n", "\n", "# Ensure directories exist and are clean\n", "create_or_clean_dir(jobDir1)\n", "create_or_clean_dir(jobDir2)\n", "create_or_clean_dir(jobDir3)\n", "\n", "\n", "\n", "#ZA ORIGNAL\n", "# Solve and save results in respective directories\n", "t, sol, se, qt, sOut, full_t, full_sol1 = runSolver.solve(model1, setup1, start_point, jobDir1)\n", "# Define file paths for the new parameter file\n", "new_param_file1 = os.path.join(jobDir1, \"parameters.json\")\n", "# Update parameters and save them to the new file\n", "model1.updateParameters(final_dict1, parameter_file1, new_param_file1)\n", "# Save updated parameters to the respective directory\n", "save_parameters(os.path.join(jobDir1, \"parameters.json\"), model1.parSetup['parameters'])\n", "\n", "\n", "\n", "\n", "#ZA DRUGI ORIGINAL\n", "new_param_file2 = os.path.join(jobDir2, \"parameters.json\")\n", "t, sol, se, qt, sOut, full_t, full_sol2 = runSolver.solve(model2, setup2, start_point, jobDir2)\n", "model2.updateParameters(final_dict2, parameter_file2, new_param_file2)\n", "save_parameters(os.path.join(jobDir2, \"parameters.json\"), model2.parSetup['parameters'])\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "# Posodobljeni parametri in rešitev\n", "new_param_file3 = os.path.join(jobDir3, \"parameters.json\")\n", "model2.setValues(param_names3, vrednosti3)\n", "t, sol, se, qt, sOut, full_t, full_sol3 = runSolver.solve(model2, setup2, start_point, jobDir3)\n", "model2.updateParameters(final_optimized_dict3, parameter_file2, new_param_file3)\n", "# Save parameters and immediately store the path for further use\n", "param_file3 = save_parameters(os.path.join(jobDir3, \"parameters.json\"), model2.parSetup['parameters'])\n", "\n", "# Now you can directly use param_file3 in further processing\n", "print(f\"Parameters for run3 saved at: {param_file3}\")\n", "\n", "\n", "########################################################################################################################\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Deleted: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/sol_step000.txt\n", "Deleted: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/se_step000.txt\n", "Deleted: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/t_step000.txt\n", "Deleted: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/sOut_step000.txt\n", "Deleted: /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/qt_step000.txt\n", "['/home/jakob/Documents/Sola/IJS/PBPK_ociscen/setup/setupMinute.json', '/home/jakob/Documents/Sola/IJS/PBPK_ociscen/models/cDiazepam.json', '/home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/run3/parameters.json', 'NONE']\n", "Using /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati\n", "Using solution from None\n", "t0=0\n", "sIn (0,)\n", "t0 0 tmax 1.0\n", "Step required _step000\n", "Done simultaneous LSODA SE\n", "Time: 0.036 s\n", "Completed step _step000\n", "Completed run\n", "Written /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/setup.json\n", "Written /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/model.json\n", "Written /home/jakob/Documents/Sola/IJS/PBPK_ociscen/rezultati/parameters.json\n" ] } ], "source": [ "#ZGRADIMO 3 MODEL (da bo lažje pol risat)\n", "##############################################################################################################################################\n", "# param_file3 already contains the full path to \"parameters.json\"\n", "import os\n", "import glob\n", "directory = os.path.dirname(param_file3)\n", "\n", "\n", "\n", "jobDir3 = os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen',\"rezultati\",\"run3\")\n", "# Make sure param_file3 contains the correct file path, including file name.\n", "# If param_file3 only has the directory, append the file name\n", "parameter_file3 = os.path.join(directory, \"parameters.json\") # Specify the file name\n", "\n", "# Check if it's a valid file\n", "if os.path.isfile(parameter_file3):\n", " with open(parameter_file3, 'r') as f:\n", " # Your code to process the file\n", " pass\n", "else:\n", " print(f\"Error: {parameter_file3} is not a valid file.\")\n", "def clean_txt_files(directory):\n", " \"\"\"Deletes all .txt files in the given directory.\"\"\"\n", " # Use glob to find all .txt files in the directory\n", " txt_files = glob.glob(os.path.join(directory, \"*.txt\"))\n", " \n", " # Loop through the list of files and delete each one\n", " for file in txt_files:\n", " try:\n", " os.remove(file)\n", " print(f\"Deleted: {file}\")\n", " except Exception as e:\n", " print(f\"Error deleting {file}: {e}\")\n", "\n", "\n", "clean_txt_files(jobDir)\n", "# Load the model using the saved parameter file\n", "model3 = cModel.model()\n", "model3.parse(model_file, parameter_file3)\n", "\n", "# Parse the setup\n", "setup3 = runSolver.parseSetup(setup_file)\n", "\n", "# Create the name-value dictionary\n", "name_value_dict3 = create_name_value_dict(model3.parSetup['parameters'])\n", "\n", "########################################################################################################3333\n", "\n", "runSolver.main([setup_file,model_file,parameter_file3,srcDir],jobDir)\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'os' 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[1], line 6\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m#RISANJE\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m########################################################################################################################\u001b[39;00m\n\u001b[1;32m 4\u001b[0m job_configs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 5\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcDiazepam_IVP\u001b[39m\u001b[38;5;124m'\u001b[39m: {\n\u001b[0;32m----> 6\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mjobDir\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[43mos\u001b[49m\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(fh, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mDocuments\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSola\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIJS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPBPK_ociscen\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrezultati\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrun1\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 7\u001b[0m },\n\u001b[1;32m 8\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcDiazepam1_IVP\u001b[39m\u001b[38;5;124m'\u001b[39m: {\n\u001b[1;32m 9\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mjobDir\u001b[39m\u001b[38;5;124m'\u001b[39m: os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(fh, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mDocuments\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSola\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIJS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPBPK_ociscen\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrezultati\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrun2\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 10\u001b[0m },\n\u001b[1;32m 11\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcDiazepamF_IVP\u001b[39m\u001b[38;5;124m'\u001b[39m: {\n\u001b[1;32m 12\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mjobDir\u001b[39m\u001b[38;5;124m'\u001b[39m: os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(fh, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mDocuments\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSola\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIJS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPBPK_ociscen\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrezultati\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrun3\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 13\u001b[0m }\n\u001b[1;32m 14\u001b[0m }\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmergeSolutions\u001b[39m(seq):\n\u001b[1;32m 19\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;124;03m Merge multiple solution dictionaries into a single dictionary.\u001b[39;00m\n\u001b[1;32m 21\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n", "\u001b[0;31mNameError\u001b[0m: name 'os' is not defined" ] } ], "source": [ "#RISANJE\n", "########################################################################################################################\n", "\n", "job_configs = {\n", " 'cDiazepam_IVP': {\n", " 'jobDir': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen', 'rezultati','run1')\n", " },\n", " 'cDiazepam1_IVP': {\n", " 'jobDir': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen', 'rezultati','run2')\n", " },\n", " 'cDiazepamF_IVP': {\n", " 'jobDir': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_ociscen', 'rezultati','run3')\n", " }\n", "}\n", "\n", "\n", "\n", "def mergeSolutions(seq):\n", " \"\"\"\n", " Merge multiple solution dictionaries into a single dictionary.\n", " \"\"\"\n", " out = {}\n", " for v in ['t', 'sol', 'se', 'qt', 'sOut']: # Merge arrays from each solution\n", " out[v] = np.concatenate([x[v] for x in seq])\n", " for v in ['lut', 'lutSE', 'setup', 'model', 'parameters', 'qt', 'sOut']: # Use data from the last solution for these keys\n", " out[v] = seq[-1][v]\n", " return out # Return the merged dictionary\n", "\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 2 }