{ "cells": [ { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Calculating for bodyWeight/2:(710, 16) [300.42769002826583]\n", "Calculating for brainBloodPC/34:(710, 16) [0.08617769624105241]\n", "Calculating for brainPC/13:(710, 16) [0.7755992661694717]\n", "Calculating for fatPC/29:(710, 16) [0.001938998165423679]\n", "Calculating for gutPC/37:(710, 16) [0.3987761199573678]\n", "Calculating for hairPCBlood/10:(710, 16) [24664.976951005923]\n", "Calculating for kidneyPC/23:(710, 16) [1.3788431398568386]\n", "Calculating for liverPC/36:(710, 16) [2.1544424060263103]\n", "Calculating for rbcPC/4:(710, 16) [12.409588258711548]\n", "Calculating for richlyPerfusedPC/27:(710, 16) [0.08617769624105241]\n", "Calculating for slowlyPerfusedPC/8:(710, 16) [0.34471078496420965]\n", "Calculating for cardiacOutputScaled/24:(710, 16) [0.005367027600000001]\n", "Calculating for kidneyFlowFraction/25:(710, 16) [0.00275625]\n", "Calculating for richlyPerfusedFlowFraction/28:(710, 16) [0.0030140099999999997]\n", "Calculating for fatFlowFraction/30:(710, 16) [0.00024335999999999995]\n", "Calculating for slowlyPerfusedFlowFraction/32:(710, 16) [0.00558009]\n", "Calculating for brainBloodFlowFraction/33:(710, 16) [0.00116964]\n", "Calculating for liverInFlowFraction/39:(710, 16) [0.0002166784]\n", "Calculating for liverOutFlowFraction/35:(710, 16) [0.00463761]\n", "Calculating for gutFlowFraction/38:(710, 16) [0.0035676729]\n", "Calculating for plasmaVolumeFraction/1:(710, 16) [1.1289600000000003e-05]\n", "Calculating for redBloodCellsVolumeFraction/3:(710, 16) [3.6e-05]\n", "Calculating for kidneyVolumeFraction/5:(710, 16) [1.44e-06]\n", "Calculating for richlyPerfusedVolumeFraction/26:(710, 16) [0.0009]\n", "Calculating for fatVolumeFraction/31:(710, 16) [0.004292870400000001]\n", "Calculating for hairVolumeFraction/9:(710, 16) [1e-06]\n", "Calculating for slowlyPerfusedVolumeFraction/6:(710, 16) [0.0031359999999999995]\n", "Calculating for brainBloodVolumeFraction/12:(710, 16) [4.41e-06]\n", "Calculating for brainVolumeFraction/14:(710, 16) [3.6e-05]\n", "Calculating for liverVolumeFraction/15:(710, 16) [4.225e-05]\n", "Calculating for gutVolumeFraction/20:(710, 16) [6.502500000000001e-06]\n", "Calculating for intestineVolumeFraction/17:(710, 16) [0.0017640000000000002]\n", "Calculating for kBScaled/16:(710, 16) [2.403409770466711e-13]\n", "Calculating for kBRScaled/11:(710, 16) [2.4034097704667107e-09]\n", "Calculating for kDScaled/21:(710, 16) [2.403409770466711e-13]\n", "Calculating for kFScaled/22:(710, 16) [1.3513331382768287e-12]\n", "Calculating for kHScaled/7:(710, 16) [8.298904480451765e-16]\n", "Calculating for kIScaled/18:(710, 16) [2.4034097704667105e-11]\n", "Calculating for kRBCScaled/0:(710, 16) [5.386106015065777e-05]\n", "Calculating for kRScaled/19:(710, 16) [5.979775546700763e-10]\n", "Done simultaneous LSODA SE\n", "Time: 9.853 s\n" ] } ], "source": [ "import scipy.integrate\n", "import numpy\n", "import matplotlib.pyplot\n", "import os\n", "import json\n", "import scipy.interpolate\n", "#for partial specialization\n", "import cModel\n", "import importlib\n", "importlib.reload(cModel)\n", "import time\n", "import ivp\n", "importlib.reload(ivp)\n", "import runSolver\n", "importlib.reload(runSolver)\n", "\n", "#run solver\n", "fh=os.path.expanduser('~')\n", "setupFile=os.path.join(fh,'software','src','PBPK','setup','setupFast.json')\n", "modelFile=os.path.join(fh,'software','src','PBPK','models','humanHG.json')\n", "parameterFile=os.path.join(fh,'software','src','PBPK','models','humanHG_parameters1.json')\n", "runSolver.main([setupFile,modelFile,parameterFile],os.path.join(os.path.expanduser('~'),'temp'))\n" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Calculating for bodyWeight/2:(710, 16) [300.42769002826583]\n", "Calculating for brainBloodPC/34:(710, 16) [0.08617769624105241]\n", "Calculating for brainPC/13:(710, 16) [0.7755992661694717]\n", "Calculating for fatPC/29:(710, 16) [0.001938998165423679]\n", "Calculating for gutPC/37:(710, 16) [0.3987761199573678]\n", "Calculating for hairPCBlood/10:(710, 16) [24664.976951005923]\n", "Calculating for kidneyPC/23:(710, 16) [1.3788431398568386]\n", "Calculating for liverPC/36:(710, 16) [2.1544424060263103]\n", "Calculating for rbcPC/4:(710, 16) [12.409588258711548]\n", "Calculating for richlyPerfusedPC/27:(710, 16) [0.08617769624105241]\n", "Calculating for slowlyPerfusedPC/8:(710, 16) [0.34471078496420965]\n", "Calculating for cardiacOutputScaled/24:(710, 16) [0.005367027600000001]\n", "Calculating for kidneyFlowFraction/25:(710, 16) [0.00275625]\n", "Calculating for richlyPerfusedFlowFraction/28:(710, 16) [0.0030140099999999997]\n", "Calculating for fatFlowFraction/30:(710, 16) [0.00024335999999999995]\n", "Calculating for slowlyPerfusedFlowFraction/32:(710, 16) [0.00558009]\n", "Calculating for brainBloodFlowFraction/33:(710, 16) [0.00116964]\n", "Calculating for liverInFlowFraction/39:(710, 16) [0.0002166784]\n", "Calculating for liverOutFlowFraction/35:(710, 16) [0.00463761]\n", "Calculating for gutFlowFraction/38:(710, 16) [0.0035676729]\n", "Calculating for plasmaVolumeFraction/1:(710, 16) [1.1289600000000003e-05]\n", "Calculating for redBloodCellsVolumeFraction/3:(710, 16) [3.6e-05]\n", "Calculating for kidneyVolumeFraction/5:(710, 16) [1.44e-06]\n", "Calculating for richlyPerfusedVolumeFraction/26:(710, 16) [0.0009]\n", "Calculating for fatVolumeFraction/31:(710, 16) [0.004292870400000001]\n", "Calculating for hairVolumeFraction/9:(710, 16) [1e-06]\n", "Calculating for slowlyPerfusedVolumeFraction/6:(710, 16) [0.0031359999999999995]\n", "Calculating for brainBloodVolumeFraction/12:(710, 16) [4.41e-06]\n", "Calculating for brainVolumeFraction/14:(710, 16) [3.6e-05]\n", "Calculating for liverVolumeFraction/15:(710, 16) [4.225e-05]\n", "Calculating for gutVolumeFraction/20:(710, 16) [6.502500000000001e-06]\n", "Calculating for intestineVolumeFraction/17:(710, 16) [0.0017640000000000002]\n", "Calculating for kBScaled/16:(710, 16) [2.403409770466711e-13]\n", "Calculating for kBRScaled/11:(710, 16) [2.4034097704667107e-09]\n", "Calculating for kDScaled/21:(710, 16) [2.403409770466711e-13]\n", "Calculating for kFScaled/22:(710, 16) [1.3513331382768287e-12]\n", "Calculating for kHScaled/7:(710, 16) [8.298904480451765e-16]\n", "Calculating for kIScaled/18:(710, 16) [2.4034097704667105e-11]\n", "Calculating for kRBCScaled/0:(710, 16) [5.386106015065777e-05]\n", "Calculating for kRScaled/19:(710, 16) [5.979775546700763e-10]\n", "Done simultaneous LSODA SE\n" ] } ], "source": [ "jobDir=os.path.join(fh,'temp')\n", "model=cModel.model()\n", "#sys.parse(os.path.join(fh,'software','src','Integra','models','cDiazepam.json'))\n", "setupFile=os.path.join(fh,'software','src','PBPK','setup','setupFast.json')\n", "modelFile=os.path.join(fh,'software','src','PBPK','models','humanHG.json')\n", "parameterFile=os.path.join(fh,'software','src','PBPK','models','humanHG_parameters1.json')\n", "model.parse(modelFile,parameterFile)\n", "setup=runSolver.parseSetup(setupFile)\n", "scale=runSolver.getScale(setup)\n", "tmax=setup['tmax']*scale\n", "t,sol,se,s1=ivp.solveSimultaneous(model,tmax,atol=setup['atol'],\\\n", " rtol=setup['rtol'],method=setup['method'])\n", "\n" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "***********done************\n", "(16, 16)\n", "22\n", "Time: 0.714 s\n", "[ 0. 0. 0. 0. 0. 0.\n", " 0. 0.12434798 -0.00099998 0. 0. 0.\n", " 0. 0. 0. 0. ]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "model=cModel.model()\n", "fh=os.path.expanduser('~')\n", "#sys.parse(os.path.join(fh,'software','src','Integra','models','cDiazepam.json'))\n", "setupFile=os.path.join(fh,'software','src','PBPK','setup','setupFast.json')\n", "modelFile=os.path.join(fh,'software','src','PBPK','models','humanHG.json')\n", "parameterFile=os.path.join(fh,'software','src','PBPK','models','humanHG_parameters1.json')\n", "sys.parse(modelFile,parameterFile)\n", "setup=runSolver.parseSetup(setupFile)\n", "tscale=runSolver.getScale(setup)\n", "\n", "#sys.inspect() \n", "\n", "print(\"***********done************\")\n", "print(model.M(1).shape)\n", "#print(sys.fSS(2))\n", "print(model.m)\n", "\n", "nt=setup['nt']\n", "qtmax=24*60*365*10\n", "qt=numpy.linspace(0,qtmax,nt)\n", "#ft=[fw['derivatives']['fetusGrowthDuration'](x) for x in qt]\n", "try:\n", " fw=model.get('fetusWeight')\n", " ft=[fw['value'](x) for x in qt]\n", " matplotlib.pyplot.plot(qt/tscale,ft)\n", "except (KeyError,TypeError):\n", " pass\n", "\n", "try:\n", " hw=model.get('hairVolume')\n", " ht=[10*hw['value'](x) for x in qt]\n", " matplotlib.pyplot.plot(qt/tscale,ht)\n", "except (KeyError,TypeError):\n", " pass\n", "start_time=time.time()\n", "for i in range(100000):\n", " model.M(1e7)\n", "end_time=time.time()\n", "print('Time: {:.3f} s'.format(end_time-start_time))\n", "print(sys.M(1000)[8,:])" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Calculating for hairPCBlood/0:(10645, 17) [24664.976951005923]\n", "Calculating for hairVolumeFraction/1:(10645, 17) [8.925742052568391e-07]\n", "Done simultaneous LSODA SE\n", "Time: 11.279 s\n" ] } ], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# #copy output of Thompson et al1\n", "fig, axs = matplotlib.pyplot.subplots(5, 3,figsize=(15,25))\n", "name=['arterial','adipose','brain','heart','kidney','liver','lung','muscle','skin',\n", " 'splanchnic','stomach','testes','excrement']\n", "name=['plasma','gut','hair','kidney','liver','inorganicMercury','redBloodCells','slowlyPerfused']\n", "\n", "#diazepam\n", "max=[1.5,2.6,3,4,5,2.5,6.8,1.5,1.5,4,4.2,3,25]\n", "#cotinine\n", "max=[9]*13\n", "max[12]=90\n", "max[2]=2\n", "\n", "\n", "max=[1000*x for x in max]\n", "for i in range(len(name)):\n", " row=i//3\n", " col=i%3\n", " fy=sol[:,model.lut[name[i]]]\n", " fe=se[:,model.lut[name[i]]]\n", " ax=axs[row,col]\n", " ax.plot(t/tscale,fy)\n", " ax.fill_between(t/tscale, fy-fe, fy + fe, color='red',alpha=0.1)\n", " ax.plot(t/tscale,fy-fe,color='red',linewidth=1,alpha=0.2)\n", " ax.plot(t/tscale,fy+fe,color='red',linewidth=1,alpha=0.2)\n", " axs[row,col].set_title(name[i])\n", " #axs[row,col].set_ylim([0,max[i]])\n", " axs[row,col].set_xlim([0,1.1*tmax/tscale])\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7\n" ] }, { "data": { "text/plain": [ "7440" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#gD=sys.get(\"hairGrowthDuration\")\n", "#print(gD['value']/60/24/365)\n", "print(sys.lut['slowlyPerfused'])\n", "ft=[sys.fSS(x)[0,8,7] for x in qt]\n", "#matplotlib.pyplot.imshow(sys.fSS(3e6)[0])\n", "matplotlib.pyplot.plot(qt/tscale,ft)\n", "30*248" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }