From a03145a2ef978ae647712caf07eeb7e168b16172 Mon Sep 17 00:00:00 2001 From: Chris Cooling Date: Thu, 12 Dec 2024 11:21:44 +0000 Subject: [PATCH] Added pool version --- 06_cell_population_example.ipynb | 44 ++++++++++++++---- 06_cell_population_example/pool_runtimes.png | Bin 21529 -> 22155 bytes 06_cell_population_example/pool_version.py | 6 +-- 06_cell_population_example/queue_runtimes.png | Bin 20310 -> 19934 bytes 06_cell_population_example/queue_version.py | 2 +- .../serial_runtimes.png | Bin 12066 -> 11964 bytes resources/pool_runtimes.png | Bin 0 -> 22155 bytes resources/queue_runtimes.png | Bin 0 -> 19934 bytes resources/serial_runtimes.png | Bin 0 -> 11964 bytes 9 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 resources/pool_runtimes.png create mode 100644 resources/queue_runtimes.png create mode 100644 resources/serial_runtimes.png diff --git a/06_cell_population_example.ipynb b/06_cell_population_example.ipynb index 365cea2..e3eee77 100644 --- a/06_cell_population_example.ipynb +++ b/06_cell_population_example.ipynb @@ -48,15 +48,19 @@ "\n", "These functions contain the ability to receive a seed to set up the random number generator. This is useful for testing and comparing performance as it allows us to guarantee the output of the simulation.\n", "\n", - "The script contain code which runs two single realisations - one which always dies out and one which always grows (the results are guaranteed by manually choosing the seed of the random number generator). The script then runs 100 realisations of the system. Each realisation receives the number of the realisation (from 0-99) as a seed to ensure reproducibility. The runtimes of the system are printed to the console. When I ran the code, the output was:\n", + "The script contain code which runs two single realisations - one which always dies out and one which always grows (the results are guaranteed by manually choosing the seed of the random number generator). The script then runs 200 realisations of the system. Each realisation receives the number of the realisation (from 0-199) as a seed to ensure reproducibility. The runtimes of the system are printed to the console. When I ran the code, the output was:\n", "\n", - "* Single realisation that always dies: 0.29s\n", - "* Single realisation that always grows: 2.25s\n", - "* 100 realisations: 129.7s\n", + "| Simulation Type | Running Time | Plotting Time |\n", + "|----------------------------------------|---------------------------------|---------------|\n", + "| Single realisation that always dies | 6.2 $\\times 10 ^{-5}\\textrm{s}$ | 0.31s |\n", + "| Single realisation that always grows | 2.0s | 0.20 |\n", + "| 200 realisations | 189s | 0.50s |\n", "\n", - "Each of these times includes the time spent to plot the output of the simulation. For the single realisation that dies, this is the majority of the runtime.\n", + "The time to simulate a growing population is significantly longer than the time to simulate a dying population as there are more cells to simulate. Around 20% of the simulations see a growing population. For a realisation which grows, different realisations may take different amounts of time, depending on how large the population gets. The figure below shows the amount of time taken for each realisation to run, with the number of the longest-lasted realisations added as annotation to the figures:\n", "\n", - "The time to simulate a growing population is significantly longer than the time to simulate a dying population as there are more cells to simulate. Just under 20% of the simulations see a growing population. As the number of realisations is not very high, we might expect there to be some variation in the outputs and the runtimes of the simulation with multiple realisations each time it is run." + "

\n", + "\"A\n", + "

" ] }, { @@ -69,17 +73,37 @@ "\n", "As we parallelise the code, we want to keep the interface for the functions a user might call as similar as possible, specifically, `run_single_realisation` and `run_multiple_realisations`. This means it will take minimal effort adapt existing tests and profiling, and any users running the code, or any places where the code is called in existing projects will not need to be changed.\n", "\n", - "Our first attempt to parallelising the code is to use a queue to store te results produced from a number of realisations in the file `06_cell_population_example/queue.py`. To do this we create the new function `run_n_realisation_queue` which is similar to the old function `run_multiple_realisations` but uses a queue to store the results of all realisations performed in a 2D Numpy array. This function will be called by each process. The function `run_multiple_realisations` is adapted to create the queue, start the processes, collect the results from the queue, and process the results. Each process returns a 2D Numpy array with the population at each time for each realisation.\n", + "Our first attempt to parallelising the code is to use a queue to store te results produced from a number of realisations in the file [`06_cell_population_example/queue_version.py`](06_cell_population_example/queue_version.py). To do this we create the new function `run_n_realisation_queue` which is similar to the old function `run_multiple_realisations` but uses a queue to store the results of all realisations performed in a 2D Numpy array. This function will be called by each process. The function `run_multiple_realisations` is adapted to create the queue, start the processes, collect the results from the queue, and process the results. Each process returns a 2D Numpy array with the population at each time for each realisation.\n", "\n", "When altering `run_multiple_realisations` we have made the number of processes an optional argument with a default value of 1. This means that calls made to the function without specifying the number of processes will still work, making integration of the new function into existing projects easier.\n", "\n", - "This implementation doesn't alter the runtime of the single realisations, but decreases the runtime from around 129s to around 69s on 4 cores. This is a decent speedup, but the code is not 4 times faster. Part of the reason for this becomes apparent when we run the code. The code prints when each process has finished its quarter of the realisations. Typically, the processes will finish at significantly different times. In one example I just ran, process 1 finished in 28 seconds, process 2 finished in 53 seconds, process 4 finished in 53 seconds and process 3 finished in 69 seconds. This is because each realisation does not take the same amount of time to run, with realisations that result in quick death of the cell population taking almost no time compared to a realisation where the population grows. If one process happens to simulate 10 realisations out of 25 where the cell population grows, it will take significantly longer to run than a process where only 2 grow. The figure below shows a hypothetical example of how the time each process spends on each realisation might vary.\n", + "This implementation doesn't alter the runtime of the single realisations, but decreases the runtime from around 189s to around 107s on 4 cores. This is a decent speedup, but the code is not 4 times faster. Part of the reason for this becomes apparent when we run the code and view which process is working on each realisation, as in the figure below:\n", "\n", "

\n", - "\"The\n", + "\"The\n", "

\n", "\n", - "Once a process has finished its realisations it will terminate and the physical core will be inactive. The code is left waiting for the slowest process to finish, meaning progressively fewer of the cores are active as the code runs. This is a common problem when parallelising code, and is known as load imbalance and is the main reason why the code is not 4 times faster when run on 4 cores." + "In the example above, Process 4 was running realisations 150-199, which happened to not include many realisations where the population grew and so finished in 26s. Processes 2 and 3 had more long-lived realisations and took 76s and 80s to run respectively. Process 1 happened to have several long-lived realisations and took 107s to run.\n", + "\n", + "Once a process has finished its realisations it will terminate and the physical core will be inactive. The code is left waiting for the slowest process to finish, meaning progressively fewer of the cores are active as the code runs. This is a common problem when parallelising code, and is known as load imbalance. Ideally, we would like a way to keep our processes busy for more of the time to make the overall calculation finish faster." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pool Implementation\n", + "\n", + "To solve the problem of load imbalance, we can use a `Pool`. The advantage of a pool is that it will keep all the processes busy by assigning them new tasks as they finish their previous task. This means processes will be kept busy for more of the time, and the overall calculation will finish faster. This is implemented in the file [`06_cell_population_example/pool_version.py`](06_cell_population_example/pool_version.py).\n", + "\n", + "This version is arguably simpler than the queue version as we don't need to have a function like `run_n_realisation_queue` to use as an interface between `run_multiple_realisations` and `run_single_realisation`. Instead, we can use the `starmap` function from the `Pool` object to run the realisations. Once we receive the results from the `Pool` object, we can process them into a 2D Numpy array and process them as before.\n", + "\n", + "The figure below shows the amount of time each process spent performing each realisation:\n", + "\n", + "

\n", + "\"The\n", + "\n", + "Primarily because of the way the `Pool` distributes work to the processes, the load is now much more evenly balanced between the processes. The code now takes around 83s to run on 4 cores." ] }, { diff --git a/06_cell_population_example/pool_runtimes.png b/06_cell_population_example/pool_runtimes.png index c384247a35bf6cc1fdc8128b26a713995ff4a647..cce237fd97dc0daa0cda3977cd52eab53b725a31 100644 GIT binary patch literal 22155 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 CDz4iA literal 21529 zcmdqJ1yq&ax-YzF6c80j2~iQHk(Nb?fTDoXNOyNPh?Ej4(xoCGA*ghBC@tL$(hC-y z-?RRE-+Ryf?!J4BbI(5Ke&cfthu~tpylcL5KJ)q241FpuLvo(xJOY6rdGzpsA_9S} zfIwhN^-Cx)>XIRc>+^yq$2EFu%r4GhT$L*>E)`Q8n{M@|m1X7nGy6+dU+p)L z6S2f-lV7@njeWfdTY@W(>c;g;WP}eN`M-R_QzLduXij{j_L2OH4dzJqo2Dk6?TcPr zMx96PUZ&rugY>Umhd(Ma)9cs|;Lq~qK;}#Ehv-TQ=3BO>ZkOS^@8Z*s;JZfb|M^9f zgDaNW)rxU>X=!{335g*qe%II=n5*eg;R^`~J&=-`o_@CZohgu+vaPlCgL!YpI)@}& zhoeD3?BqezEjgAXndzTRFJ8Pr6l?|r1dMBihlGSEOS!o4%O&zVdqt={fR|g&99j)= zWgFIApP}GSBx$fanJf$@7+T}d&DE;Mc`7-GD^}z2Ib%J)2a%3amP_%aFL$!17w{FW zL|@>dB6OVowd?nNRF5m*oa539sYbfu@8KuSKKP{cPt@a9PBZpaha1+%D>SNUM@n3W z4d$G8s^ch@+_#X?uK+}cKPEdJ!Yy%+ZSKVww?lOEPTzO2qV zhq&x8z7=*k)`>q)ZA&fI6z@|~GlFgG<1wXAeYw_FhGdCsBf|_q@93 z#w0vPDzap=%two@4SO@>oK^mbb`e6gk3RU2 z^sBnwM)p&P;rtX|qLYx{>?Sb7O~O{CjI2ltT8X0B;}MH`a(DXu$r6e>wck!k@#^t0 zy6Yx0Gnozx-^-UTxf~asWFEYWiW)9+Wd5pIlDBj@zco)AmG3Lj5<%HKKQECgdXbVK zQ6O=4q1_(~XR4s9R&wzv+bcX#mYq_kD}p%Ntn?;>M$epIrOVlD|LK8MYsG(6R8+Lk zW;}s_!Rrlru}e+O+lEiS9v5Cvi1yma;=rq|s6`}2-VQVj`dloI^MR@R>i&h>*%R*? ztIpq^(w;Cz;GkG%xeRZ`uNpCz*e71iCUd=W`}Wkh>!fk5AJ+bX_7DdWi6lIK-hrn2 zWLML`&~S5S$JwxHU~ZuvHT})$&dVSjsv1Lr))$S<2`s! zQ!gu*h(AU&_7rX0&lrRDsPQ>zZEwHH&K@4mWBTs>`$oe^5!Hpt#m?l48SL@-s=bNX zf-cb;EG*fFYQ+>GSkG1TC%kGYQMm)J8aoDl#84TSsWeO5M>tltRgC@mihF4;Xt_~) zAW!@8lPAPqpQ}_Bw6?ZRwZ6UKwA_~!#Nrs<_@H!0H6+rNUiT@2|LXfre;=QPOPOn< zmc`9Ek~9|s55m0!->gqKEMIGz{y8`p8xlg8z-QUq7)llz8EM*|t>WiyWHD9ik32>- zKw<1Dw$?-_Dk}cz&!Id$J>|6;dSgG^{5COhrEn}($K&TF`<=UY-#v=DC6tkT&-vAN z!PqINDuvd@@;L%OK*pd-L|~kf|xXa;K$wC=OVHPJb@q;1gft<$dqx zhk#+$sBp0k%->v0^)=a=`&oHvNsU~O(b!~WfSU!O1j`*#GOX7)xnJ)u z$6Qfty%{wzZ*^rwLqRFwcZ3U{R(z?FtnB&t`1tL0?SoE(t`w1%fq|Fk=(KU7%bGQ9 z>rzCxd{5JRZA!7Qv8Pfzr`oB}yc6TDlFu#~nGAS+b=DNnqed})!xbbP3mIm3kiGn> z>&ns5kuaV9NTE4dR#ukPSn1pT9JQ#}SeeOc?{g$1#)Em`UqdXYtRulwOg$>4X<(M{#fD-Y%6GaMH?x7WuL$(ZF4TweQj3B2a@dD<25 z%EE-_hV#pm#>NNd&!69)i&A*_=#hTi3p`wW{Foz;RTtqK(qVc7xf&|VMnb-)Uia_c zr$z3v8C*DNeft=aKH<`@T%&tD4r77>2Kzi_|j<~rZEPO_@dj1;0l8l&u zGV{8_;kLQxF-j5&w$>75d42tT%<~;9b0kr5o%cEXxk?Lz4@3Q$&jQ!BhJ?Wj;qQO( zGIplC#A4_2hLN_f-tF#7e_p#U&t5?>2n;CiX}JX3H*gKX2(1j}o5ItJ*u=uZszlWj z?eFg+zBw%^ZlTfcJN;_s2ni8-n=?(sR9t>|L=+e4={qak(Q!hKx0EvFo!K%i2lEhC zlhw(b)%!1UbJ<$Tj#?OelcHJGwmOA3xL{C!_x8r~SyHTx#7{Pk7Mjnh%X@g-J9qA! z)1PiEzZiB+)%|h`Hg&()SW2agCs~TZ?I|LO)I27F^roh!Y9ivsdh~LKYFYO9c7*%b zaRJn}M1J#rq$UivlYdlL7{8IAcR$YQlh)U>3z77yqjXAVWfrWv0fSn3hGO^>YC>#i zQErrlMNLgTH$T6b?;AbBK^!0%d||VRQkToLlNR|(sZn6kOHyB-(ca#Eon`RHoKfqq zyA4l6KV9FSBU7&&LRt@IM!GkRZ_ZB5pFiJh*}gz`Pw)jTRJoHLNAIZrznH0Qz`}W!T z$3NajyRa}HHw2L+H>Zkt#^4ZKKyVp06E{cDwOQs@Nqc!A;clI`&&Ay}J`WSn2!67$ zr6uak8}XLkvG(uZB_*}@Du{KYht1^_`Vpo#XL!J z>v7pUJ%Y8^lO{tdV~34?uML}5@@`p?_Qu4UcQZ(vb}F;MPNd4B#xjwiy8YxrM`B0q zPK(%pR&z`xt3vt#jGvwCP_y+bmIy#1i zh0V=Iid7puKRMjNdMGP9lUK2B(2>BGt636J=D4^uplQo()_n~|$W4U{obC%Z$M!!$zPxz_`+ag<`S2I*fj|=(;`@e?ul>YJOe{z0lF7tpHmIH#hf_ zRMBMphM>)@HclQGBSZqf^{hhx5t2NZ_%zgbV063Oc!5z@JXn%c+uod$9>dvd$Mrsvoz_quw%lW5{GoZ z3+2zw%TQKU)}a37IbNHwI9Ll&QBe&Mbi$aIH#aw(HYSq&aR|2lq(xpPBa?(?-*O;V zzx#tkV{`Le%K^3^V(R;^DcA+Q_PHut)~+)$V);R<-&5o3YhYj?=)QGRv)JmR_tB4y z#<6eu4UgqXJv=?hE?t@~b@(RV-dY$DEnJ_D@S>NvK;E$<7&i!3T3L5 z+uS9`H>^9VOubRv1Pb%nB1l-skvl7cJkHC?+zCJPaU0g(BNApOLW!Xmc5fzUKaZ3apfRq=BHszrxlpRt;t^P7RSVagN5ZfH}~6yU{W$#+9%L(sF&L5JJ(nN9x9X7IIqwa!(NfQ z1WloyBU6b#otO`Dwk49&@i|Nj7!8A-Pp`YQ<0rh(9S*Ta?L1w|r4zqOD^oEjrO$lX zf$d)kTK;h#{2#_b|Maqd0VNd+7F_&$k-{#y`?0eeIvVmn4YaHDF4+eow-ACpV@1Bb zLP86j24_C89I71e-agw(q$xiv%M7;;(xgwg^c_F32yX4M^BV`LvBDL-9e#lN|C1|;hJ4fGAgQu9~*{84d z4`A&-#k~KX7dc%i?TSV!TsbEuCiV{xRok|R&Y#aS8&*3!F8|S)pgL@s+h+ZA)G~i< zCsh68+A!bWV5Q4}19?jJ&kljfFn7H!9rm_86sp#y=GfSCsMeJ_95mD<{C&oqxOG~CuhP1RvW?XEL)d#e*w ziSunAz3D7pQ0n+GJ+?p}?Rl;yeJz6D$Bn(;ET254)_3b@uOapHeb?q}3wg@&g{yjc z>%W96+=lBAg|-7PI=R=_#6}xTcv2bglE0efxBU=Hn=4s1gU_*gpNfJ)TDdPhid7=;@|UV{%0cN|IRzJpNZl4 zV$)!siWBI$W-YP$i8l3G*G`;|jd9+>^-T~64)P6asp;BS;#!b*@jVLfMIMpT%|-gA zO0<40x!AoST^_*@s!v7EQPO(BaUzJKx7L@pFyR7e6+wEc36wFhr)`1 zx9rNU>s{!^E|Am2BE?GAO)GNwDkpk?i%;zL<@UE>y?NQir68=mNz%7(r#478H{Zl8 zAmPEI#LjS_pK1u=vZ0+@P<>ofi@0{aAeob;SazcUUCSy9NuYdTS76=v z4l#v*@cZ_Vuu$ebaZkxQM{9tTed0tE4=puUeNWD9(%=2 zDx4CneM&@cDxJ;bP)-_kww~oUl@W>hF)`H5Jo|RWt!~GRET>7)@YPR|QET|LgBqjS zKb9aw1y)CjpO&#iuiq!~W2!aK^WB`4@i&$2F#M`*8C8i4c^zPy%IM~OV9?RvbX5eJS<=O4-iip7jj zS-AMl>gcGZcIWGg>G&KN1H4hMaA6M(4F!b9U2PZkq-bR7novpNbke#>7$LBOlSwxzRlr@D^1NS&OX=T?FyMm6;m}2o&HGTb}&&!8AIV7 z-n)IIv+sNSadgAYss2h!sp=qaok@X8=~(h)owfGVfc(PjLikjN!t`r~_Ld+l1#iML zD#8+N+XzqR>o3p9Rc|#UkLM^?zh1?)!LecY8KZS0+yB&u92hC$Uz(hx{bfLf>Qh2R z`qo;P#Lwz@lh-$N*oL`IoXb%QC@Cr9*}i?6y*=jG{r!g5Syfq-qkd77q^Ev07&;H=}}8_<_+xu|?pTw@uTeEG7r`89t~ z)9dMyn!s(RkchmclWp@0$O<*-{9&i`!*Y zorcfift?)}v?vD97Dp@ra8EPsO2Ng$y96yoEQj_`)hLqA}+bE?<7)m5wN!)4YSIp?=3wL7&>KX7-SQ}>X1Tv@C^ z6x3N2+l+J6ZN6$3ljqaL-C^bzJ5iqS!XS?D_n%Jq>zW=foi+6`|8|+@@?- zUY;y!oidT5JLz?7IWnnbpUMm)2uzJ#o(VM1pEELk*w0F<=IhAm=wKRPCLk}gD_k~r zM{UtPG7Lh2X-tn}-o(XW1{?$4flMjnAb%EoflgLcm11S!>kT2H_|9bE-U?S+`6NNC zTGVud`R~u?FwH2u;<-^pX={t_;)iAqx&zUJIWi21@J$cP-``)w!x}iF*@MMY=9@QP zmX?;@T?F3hny~Pw`R!5CxXjoQ#EO4t?Uku$mVU(;*J7Itxu}d>-&N{c6EU^#r4&%V zf^)D6#FW>Ed5~MptlLM{uKdVd;s76CqJWLFt1cB)_45@_ae{$#F59pe0@`xawwXGBe=r#ojG8aSV<^tTnBJbgT1m@}Jk;aS$6WifA-{=tC>!x#OA zYo%_6`+RG*Y^lYp`c(Ld{MH75-=3r(hq*PZ&FcRn7B}fQi7?<6W>jcc9r18q^WX~&4^-3fr{>YywL)#byrb0aH~+Cs zs`17BDVO%g+%fODy(v(>wTx3(?Gf`i+>weu`_sQ&w5b_iz4z^NUo#3OwYrZ`j#~aL zF0PAWum|mJbkVtvNhm75GxUIInsg|%Hd&KeS}F(_{ZCIC0Wc7Keab(6`~Z^igX_kG zah@&Ihq;A?-{15lv2k$d8UTa{*-ar3JSOdWt3%(RB%xbxL<%2oD7V_!l~p zHPd@-fdn+#n5bGED~s|uIkZ1oD~XDZR#~V7aJjI()EhCKnd-x0n)SA}h%($V@_=q_ zt1!f2eYUS!!|``PyW|CZ#+}Wr?YR*Xc8-M1z+PuFMNUl-bE>U%OT#GP1V;Giwb-_THA(m#bM?ta{pMwx*%<{W!qjap2d zj@7+(=UfC`0E<`TMJx{7OvyO!4;-S)xEJvo5ob7+c)56@Ia%20&F|r*;C9icb(Ge` zH8CgQ^C;!ZY`=g17WCX@%dgyerNqT@;;FJ9n{<&~#>R#NXqnaVib3;-a&pE%-1)f& zj`^M)>DpB7sPfxRv=v(NSRaREI0oT-)Gzh#caH*Letwgx;rS7Z=x35RXE_Pp9oc%C)@?O5c4z1MN zGMbpTmdCV{DH+?YG%QfZv&eB0Gqr@ZJJZ+y=`Hm;{*%4>?NuJs0oI?1AR3pT#{z~5 z?KiyDN+{Ud-@uXxv>zT`P~jMF`%}n3f5G1$wc#6(n(8j}{h_h!3nd!Vr3Le{U+<51 z$d%Qe%}_Aa-C-vYJ#4KcmvGP9g^}rXVXFI-JyK%Z^~1QWwXMw&H-}ExWomj_0*Ie; z=g)tFxnVU@7z$jI&eky$MaQ|;OYi~BCMw;_R-iXvymc#RsW+1clqyWqfKNh$D-K0C z9@q%7TTk?MSBKfO%lnp;4UK^s#lur8zZw@Y9JrMlSMiCHYr`DvmE|t4M<2>kW-t9{ z=+$ldr1WDuKVJ^t_)*)?#n-lHZRniI*@JjWj?EP3MZ$Hrsg1EKgP|#d+FilAUcU&0 zOQx5m{j0uw8IvV&dJ(L4-$^pW8e8|2P$4fsY|=`;WEkcFTJ?S+ARwpHRHKu1{ec}#!R`u=KH z;O$#3qY(GR7yUUOzx=sB`3s+YYJrz$Ng z`|7(p+9VAayyh>@(rD3an#JuXG@1ugCiB^fjcOiHcfzG!Q-C;2MD<_BUG?!q-Miu6})9boX?(qy}>Z zXhrxiwDfE+gAW(x$~NQW)FqQXp7A@23kx(*CHO^8wv}dq66ST;n6M6`=4nRl?C@0s zTg_6`19OF>7NNP>Wz>M=v7$oxW7Tli4*I#^BXunj^lRIiy2{+*JbS#VNNUvu&4V@* zDZUcx+A^eRJ2}oCRGisRF>E-{=p2vIrtR>_k%%$q-pEtAYB*onLZWMHi^KJ9QJ*Sb z_nuLWA9oRhw38&Um~B{0IQM!5N!nC25qc=ru$}tlCHfcBE8#uD6gPG@f5e(rMtncc zf8Rr&NA-gw&O*Ep%Ll)ZcS;oJJV%;#z7t9SVK`Q5FRiHfn@JKNOoxj?GgnwPiDvP8 z6#*FV1*Zx+!%o^TlpV3IZrDT>x1v&VEVlu!bO1h;s3;YkutDXaMgO4gUF7ytm5Cbm z`9kz22etVNq4<@e&wf zQw3YrS?1(O4$klw|H!v%dfIckFjaTHIFOw(X8P4hcuvsV+&h;i#oGtagfGc1R;^x` zRZ+>;5gEwW?dr=?S{f;0-C6Fx!N}+jZQpP1E|@2+U0tTr^?_sFd*gu1xna`1=KFUO zTf+D3DapxUzO+s^1fRQbAw##uhfS;WTl;en;K88ba-WY@6ZAP21pf9j$OahNc4%nm zZmMC&83pM)wKh_@Lyk_E+q(7J`Nab?!)a^kncXJ)8Vki7sX{nc@YawOYU-k+UH-MH zteKCa4OklA&vVbG9vs;>wlAPg1Yd3(cOz_fG!B zv}tObW&A!qK34y3AQim`WWihA)ST5B31AK0E~o#Ctpfj)9{X3n2%`4XvhkI(FW$BL3oWxIp>>PJDH@y>fVZEb;$%P~H{gT171mDSrvTfQFWN1Y@8YupI26-1@a*TySiYiq?_V;PIY|7QA#NOgXsovWdhbF0{Y zS-qvHE%))LgLd|g#k<5r&3ShWh1sv(mM;%>6-Guzu(nu`UDfl$I6l@nnpsFcbds}k zsGN+7Z>EM=#+nyAJDlwZB59bn%%XR8)V1Fc^giURtE(gLOuM1bzu^Aib;aw8C7MLd zw1l{x9BjH5)L%j zC@-hwD**(gw}8F|rI#KjppN)f7*}j=S~;8X9hZt{nY-j_uWOF+c2~1TD$gtQXRvn< zk4uG&t_k?MC5Vlb1a~?c6@)Y$X0oocLN#m<<$8 zD!+dE3pq|z?OkIfy65~NGc_nrdt6&XTWNT=9NR6=?eN^xNH4e`SH^SML_0bc9_TZs z@Ly#=J}IkucH{YA&SIRY#dDe#A|mZAS>HJsmmg8YcUzfag-Zi=3psaWqkef!oT0?F zKLq!dqLWPTJQn)(teGd};dO0AL%E|lGPhOkhw?$~PaIQu?4|;j%F66Es=hfe9d8j8 znqetr)V@4NxgcbRSg*cXY#aOn`_CY0iaUONgXLj=X;1|65nn6LjGyVacB_i@s`^mr zB^^%^Ma2&a3?Y%hslG0*#?Eraqn7k2Pd$ln73HI(^cntFSQI#SYF$1EbqBxGGrC7W zjCV_Cdkl>rHXHiZ&Lp#cc=z7*7c$R_3~bN~yj!~qZ?~O(bfvl`*gi~?MqVXrDB$KM zHtVjfw{%o}$TwkV&X0dN=UE{cr!oIkc%8es> zd@+VI_~b}`gg1`&oa)zd)Ul{{tw}&fqJGN-LDviT#E6QjW}TqNuz{q>L^cCkUNDT> z-2CXgGJxEl3P`FkyOEc3o`|SyF~t*uPl0;@V+Oaw+{3$f?~Z9dr|V^iBOrEgWmNlG zU^+eSI^82Possy#+47<6U0)83nf2x6gkQyjmugSMy)YxO{b7c`oT$M2IrjJ3C~Z3S0YN&MQ`jS-Q zyC_e^ciyH94+vxX+4gTcO_U4Ubiz|D4En=&|8&>U>bT>%Z16WIYa6)}K?}(MHjdBf z=@?Z1?%g}L)$c98lJ>x*pr)lKch7Nw7>Gmt&LpAL;eudtR@FBN3BMT5_GMgSZ_Ugd zyWeKP786_CJUv~|x4*O}M1UlHsYn0SAsHQ17Zb&twKy$N@S6XWG=jm@%Yw!CY??r^ zE6IMzqb=$&hxzB8Q2E#}-6j@%ZbI8i%g+?9htQa(JrO%24#Ltbu63P^mr1Ne%9$4U z=Whfq?jQIE%Z!ifYFtpjFl!GUbmwaD+>%dv2$WdPtH=%@jT11cB&vawjGSBw;13p{ zypL-6I{QaQy?~=JbcBsfUay0$#}d=u3`b1=I!{e}K06Rb;a3G50C4w$n+Jm?DL8eW zI5^y0T3Rv|&HV7e5BR!FiO=PDcoKW-sBXzOZ}suB=G&%w6*@%EUFWmqyGXc?MdTkY z9``t=l9@SJY-6(P&&iR7>kRH5zoqn>!9b1*@2k9eicz=526L&amIqDGh6^|}Y>jt+ zP%?NWMJQ5JAuxu(!m{fUv0Dgp zr`cGq=r~c;9@o|W8wrQX$f!@x<%K93 z(QmKovCt*7+qw^G8TzDY77_-L@YHmK_Eo0DCD*xPpZJaXv&FIc7J0W#K*n3wkYEjfZs@-ip|Et;_&mZ4b7zc`)!20OswdlBbe8uZE^>k z2XDd9rFxstd&|lPF{k)7KG^?r!_gy68nru$sw22aMaal#w|vEEUCVV(E!MjzS)U4n zvN1BW`<7A5K8PARZqs;PUS0_Ga;G~72M3jh%Q?7LY`b4ma+-hxj!pfWAE?dXzi4TX z=ZU}PoNXwi{hE_{sz!l7i&;NlGMw*r`HIC+V$yY7&AA!&`7$a)(<(koPUN3P^ypCpMozZ_7tYDi9vLO&BB4A& z#ACbGrX(sM;Z=vpjT<)tz?d6bR{h^BIj{2?F(eVe1zLn&a~O3Pop8*cj%WD(zFQEm z!!S(||G<+ILC5Ny92gil=5w@06;$``yvNkx;o-ge$sxkHxN!|XqrUl64Towqo~(*X z6tN9+5qGND#Sdh`K!8)P|A&vC$SUKzhu1^wXeLunw?D^!zuL*B2z6#w^F180G zei_J6z~Ej#3*RZ3!&rGna_ogIB64nfd+x-rfA!YQQTz$(gc|p8eYFYW~B!vj%TwQq#X(IGL5?4Biw9LO;tD1)Csnu$f$fRm6`$N`s=lQTiUR%hJRuHg@FJ>w zL7hZ{t?h3eSHgbV-ggtpB%Ak?rwbRU>Ge2nUM3RT&hR0jZ$#M5*)gGFI?*Tc&o23= zq!ezW4dtQPx>G&U*=91^yK1FMD=hs{zq@rbk^l76%R63e%=k?mYx=TQmj_}d#4*X? zC?TJl>yO<}Ysx(N3RlUc$i;UlENRm5B@AvW?2fv;UV=%2`uJah8C?hkx|3H>CF%OCcSUhoAuI5@yOCWvBIxCM$X_*S7& z6{q*!egXM;ZR*m)x+y`}y4?9vM9<&b-!kxE@_wkfe}vY1O(8$4YGSPI z;$|W7+F|3m&dlMAugWD^v-Gx{HJh>~-RFv z!F)9xqiJLBjRSFshsg$aFoNRhj||s8-TocXW71B?`D5aD2ZUKj$*W32$fTSe$8j`nwWH}%hgOoK~6pe7g@0sIG;`Y%&`xuJj!lnF>|_k0GJoWGmc ze@z&|&o-o^|h~rT>AwRJw1kQLRy7H|Afy+};~>WU8#H@_(f{Np7*w z+ramqY(@JoS*n;dHM2@K#eI#s6?Xy$KPDjsw-WCdcORkc7wm7tp}q$}0auQj%#tRz zD);D#*^0K(WTsO*^&0R6ozL5ppG$GiuxJz2RBjY*iTKXS9K4ENG+$qAfh@)IgCiW& zSeIDA+O~P-q7yOUREkN57V6jMyq_3)rrnzBf3PzhOY_#Rtw&0Wtg@PX{@?V8;{@rx zpV7Oe$GYXcC-0UPg}M}D9NwpenIhjlC@&sh@HGMyV`OCXCNZ%Mqv0Oy&i5VG5kLT^ zx5QSr+*QC*#0_-~R7u%*^w~V8?{tD?URiEAhWj}~oAcUjK0m@{i19d<(c^rB_Y!-v z7W>-r4;BZ8z|7~jNJDT=iHSK3J&3qB zPrp=I7qfavDXN9j5$XDp z$)q!BiPr`e1SDBVA4qBYJP~@_l&S!3rr5_KyH#c$3R4^6H&Hxx0$jL5?!zi&!Rfs& z|B!(Z^Q|sl&ar1z&HbQ|Dhe5xiy&w~gKz0{a^mk^`@tb&GBCbR^Y460G||9#8bNy^ zLBKC{_vbWTyVPtN20ll&qXWk$s~Uo?c{B4V1*5~!$sOOC!_65kioc8`Jr{nJY<;#t zhFRg>0(uwqp*l9!kPx-)RG0Ivd|_3?ZBN^6`x!b!ab@7md!tjWAD?HeH#-EzwX6D6 zt<5BDJz_lz&s|Hjg1`{&Wz_A(S?+M&3wC~@+gW*vU~wj?^4#OtGb0lR1{lN=CU8EJ zk}f{4s;tBWors|YnH{yQNe2aPC~xYqIVsDj7d8)@)O(uyoC%_IrC4V8#}`T|_la*; zu4a!lIHYERe*ZQ;{?YU2G~kZ7dFM`O3%zGX!njxwPWFY%)#? z!F{e866MSn*yzmE$v}I0`l%J7Xye7}4Yi%=GVi>s_^X8-n>XEjb?C{Il**2dHr(&< zL?z|ie*d^XS&URls&kaauSU#jQfITc)Z4S8|Bf1^u#4)q7xdd7xWn6$m}9k6zrT_o zuD`lLlZV2t81H;V&Wf=wgkO!-wls&>P7>6dRjdN4Z?HA{( z2P%;<4N>{|oX{)qS`LJTk}+RqVCc$L$w8o7`)d7h-1n!0Ltnl6WIbAp`26{Eca9q8 z@yUt#&^Ja5^c4^oG%w?<+P(~tJJ<#>@aXfSDB526cDa-O-ugI#_MTG+77qSJ8X8$~aRgimnylinK>>qC!u6UnpPAX& zul#c18YH;bK5?0A{Mh>am7OkY*Y44nbOl8*ccjS?QPfU1M5h*`_qIQW*NCx3GAtTF zf}}z3C`;*cvPfIjjNcVXs@9j5dHOB|CS${;+(+mwH(n7sPnFJdzf_oR6PCLM2h+a@ zBj$O?u6rTX$6~iB$4s-m-N|)FQEg3+fZnb9YZCoue0)}opF3Jzd|EoGjB3Ns9MjX& zJFTb|P2@p0`%xuF6|#TImf9zNYW{L@Cvn9FDROtp&8j{95FZ%dT&UFjs-hCf3f=zX zOW_cLa=MF4%1WP*cibSg$bU$dshz+ z#%#R2$ndcHqvX$DzYNC9oiSCf%+b_iZ@mMa9)e2LOHeL>S0B@bGc!AGRPD`Zk44`4 zN4_ex!yj~DNNnxwbfL-CRA|58D$Fe~Fv=}Fslse)tNtCk`se~6IgcH^Hi|!!H5Of| zZXJA7wVw-lrPn6A4#}AJwI32PwR|cMe%Z}*JH$*(3>b40RVQAtxkWVi#GI>cW;N+} zb`Z}4F+~6D`Cr6PB$rAdyT_kH{W4-|BZyCOzwsZseN;HG=p~PZH`W@?rtkgjmK9_Ll5Pa;5py~I+Ho>zvWa+J=d2J&|F`1WM+siT zbj>6UdN8uNx-}_3qnL%832<>Ci^U0e9;X)Y-_NeD#eOwirVpjei~r0-HPdEMY&+RW zsp};H_Okz-tmD+_vik$jwta|I; zP&sO7j|wOMD$nU{bM&ZBnsoP9&3@5u_1<1_y_G@-F2bg-Ut#u-p6Lc&jtO~=fuWY* zYYGYx6ck%m2djy*aGn>v_^QdsN&2IJ@$TjIQXJV+ueMQ&{F;fc#*gWoLnPGS`mPDS;8X&BR=5+l|8q>7sZ=$AM=TA4DzXu==ARLFlCpfcZQ2|PC#3Tf)zw4B zZ59E=T)%VYCwCQm{)j2ug?=}N9Hwfq5GL($bx<{_jEb;jNtd3s?H44rL>bGt%qU$4zwKXS>*<(Wu(4hJeaX*A*QcsVV4n z7QAY%P`uMr1`zZ=Tjb6%d~o!}y_KHhpfGc$v7 zYQPf=<~~BIINc!d-0Vs?CU(SYOMQazfk93ZvNIRS$pZ(a7;La8^2v5NtGg83VMzYN z8LqsS`T6;?A#tp81{vFz!9CN%SBn%o=33D2c{nAAVq2I`k<|XS4n}2Lbc8blFN1)Y z-Y&QMkv00Nj}!0b&$WG73rw?#0&3N(`3{cUeh(QKB2t7~uF6DSURr6B+gXXSEh(58 z;x5O>10m#f+G6LXi7LgksHjt)^J0zc%3xyV+DLKWMoq9rL3_2lVRKwBOwJ?aNxY|u zE#yyY&&dnYr_Nl7H=2nQ+sRT8Sr+Qp@F(!cy{tNxRw%lYoN=T_e-pzfX^qBy`S78( zhaIoorv}szn2$;|KHkgy6<<_INx^;x5Mcep12rW9d(He0B^OgJu}Ips#rj1hoGGkp zSZJ0CoZ3mQt~cB4DQAxDy>2xvmFG7QTm)u##$$3hE(NqHU{_B%yrGf-TNAi@!k_@l zd}CQ!9r!=yo5lqG7rsfGB1Owuz$7)}GE+;TG*%bZq`}0?RY8-uLhfHSefET4z z_J);K{Hs9{9zLR@^2yip_uuOT`yqn(ZNf_KeLrRaFRu%snAZ^T#<_DSRD+2x^KDoE*+PpPiviwN&|T+C>lPH(4;8dr*q^ z3W#S#5@vQ~GR2j&yWMz z7k1^qFeuO)8MZ`l1Nkl;MkV34nQ5b_co__AA7C@v-k3~HN}_dH9jcrA83pm{OwYY_ zVp_pBG7R4DqPzewqi(tb4pjQAN z%nVHXlFq2b3y0e ztoEjpBv}ZpHA<1k=Vi`xW$r{HYjBeKTX!iXS5FZD1K{iQ_gDbXlc>dmeM@m3tW+JiD~? zle6Zy9y0Di9^1DuSvh*-P)}&ZmoFip^ju&NeFBXX_=O#p&0N1j1Hzp#H-@lVOm@ZQ z0zUfj)dEPeX(h7-W`dDTdjON9{Z{raf*V3`rd~^q(&^xG|8CZE9X^=y!nOcw=~onw z%1PJYD~xal_Ek-f2)Mwp#}`S=F&_VdgFF7!hMRv!dTwfd9Xn4oOZ-E{>n|??(tRdt z&bDIgPb&|2X2;4{^D?uyUcK^b%h!0Y91#}wZj$9NK_`)~dgkh|y_s~?YXmc*WUU47bn^>_3D+jZwqf~T7d zl_XcC!#6^InHCI}J{L7$we=o+^yG;V#KHLri-}}KYXDlw+1c3zqL*8h_=d}!S^fQ; zr-#U{T)BdnT3PXwYAb!WI2i5xD#TNHexs^*jm$z*MD0_C&SQ0TDhS*4SEsOIjw^wE zxLh_W2Od?Q$bYie1LMaTp$ftRTveRN3RCuNHp{^n#{q4ANPX1n`MEhnH{ehKHK0hZ ztHQSzFJD%iM)IezTzZ_{4r0;Uw-OM-T9Ejo7xZix57@c}dIck}K6!Wh9SeKXSQ+!vFVzU#zZl*t!O zXV3ESe<9b35&-FdbkGDQ;_-AX^1hV3v|`N9TV{#m#QrxQ(~W~^hx{u% z|IeTfK@aur&6`?SYvaoHYsE%CFW+-n{Zl%u2gpdH#3tFWd}M1&WUKWCG*AE-7N|0J zbITzWZ^fV3+YORqi&K&D&NH`n&lx#6Bf-3$;=Mb3H&g8JPa1|M2G>LcWU-P!`ow?> zA0HnQwdY6H5bSaTy&N+OA?}YUIN>UTI)Evr z-^$Q4LRe$G!nGH0piRXZ|0#f7Y>T$GBFjOJ)17?Z9%zL!H!Tz_LCgOM0E&3D#MbqR zlBVhn$9n$R$M87XGFl} z5Wt2g?(+JNKWmoQU?_pJ<3%x;)D_=<@>Rn6z`!HWRUDp}aIxvh-|ggm&VUtknPZEamgBDL1s@s6ofh;UR0DW1+365a5um|_kv*9QlPC6_EGcHsU92Cxqiv30UHDNN4*6A0e$`-21yObyJVgd+sfzyeWd*7HKhaRFNTCIG7A zYEJCYK!RVjt*nFWp2E|oZ_<1vA3h`mWf}+ql<(P|Z+jd!v^F#sX=&S`{aKo*5*8S< z3rNh#_XeR-?(Fm=G$P^_xJ?8m+yWxSPUB#foM<8z@mwSjbDDhcyc^dzW^{-Bpd*eBYCtOEfeVeK~4fRJ>+yfb?3b{$%-G?ChXR z8uCNL3=9lukV}*Xv=|OnWWkIa_WUPHn&ebLBfYPL*Gn5h!oqmLZ4n0KYjf#rgmBnK z&DjLEwzY=06((8!%NnycI7b}*ht3F7o&n(ub3~1e=9!$pcq5GZvvhY`F#1eDOJ$Mw zaBffz4o0)U9KT^$Fboq!e*;pY()(`=hVkw`t0I+ zEI%M$7(p-cE7^5IBmLlPGtw74dV2;Xqd8@F-|BJ#Tc5=T@}Z20$t|&C6b`1T(>*(+ zgh%kTc!v+Rv-b8UEtsRApcW=KkK4D<@tSq}efaRfA}8%S=JWxW1a5B1)~@4!Q(M(b zY_$2*Zf&h#EYL+ke<$VOI^dwfkaD2Q()A_^*mf!@h|F&%0jC#%IUdCj_*f{0wI3t` zzCf>OJyM7X-x=q1!8`y`z6IPnA+fQsy@I~JXOHDa`D`ct3XFk;4p5Z&KrS^nFlGRG zkGYIm!*28&DmX+8)(Wd3q~JIkE-jw}$J3;hI|G{Jd_^HzSeSu|hNOa}%la5J`jPXCqNrLNjIqND z&c%Tr^~D&Gk_7GR(|6dlO5ecgE-09W4l7?v?g9rW9YOmOEF8>`dXa=%#T){`bhdX0 zgYpNAa?o1;brsl$Odz@WB!M?;%o%fz4s_u?)!v>hrEti^puI8&X#Q}R&hL+s1euE` z@aT=9c5--EU3b77O4mp8KZ0TRoc@SIVS*X{qcRC54JL*2yu_vh=Dh+y^n;n#oLbLU z7*0_H;Bi-gy{Gi-^yp`2X9lp##B}#C;AOpRk$x9^V(@OPI5A&QIG(~3W+)_!f+kPa zT`@benyz=zn2$CD&!F0kExp%egimee8;ef^qh0*Z60wo&GX3%pNf|BiYOb?|25P^n;U7En=wlVx}?*|vm;;Fc+i72 zr_pc_$j>Y~2#!hsMGSQ`&;9%LnZ~wpypWLhO$`kJHD@Oqn3@Xx?_bGZ$n=_+WEiG^ z%IXj~(#H?m%mN$%i1C%G_{e9-#{cmJ-{h{N#I#epi0^l zRD7JCt`7|8`M|Xlmd|c(%asN;$yQ#wuKXz*Sn(-sod!JC33wLcBj8qBRbWE|xI4TU z*kJm+|Nrm(cdA~m1vV@<+zF1`>I+;l18TS3ul+6ytU8o|$C5qz_xrs%@QAfL&nv2` zjMC0X#MS>TJ-!22aBT)2PF3~g1@K5Z*`L5;V}Q$T`GISJ6&dXR|1q{Mf0qIb&#V7t zxzw%AId)W*!^LIEHBg`d$LE1VZ^vK02&x1nbH8~uCqJLJk7vHx`N!(ziOC%vx?;c< zK)3!rkE*Jwsn7E7?AUnwpSI-0cy8HB$T|RbB2KNuyDZ?x|0}}lt`@woc>z48lfl!~ K&t;ucLK6V{--^xv diff --git a/06_cell_population_example/pool_version.py b/06_cell_population_example/pool_version.py index ae4cba0..4b8310e 100644 --- a/06_cell_population_example/pool_version.py +++ b/06_cell_population_example/pool_version.py @@ -107,10 +107,6 @@ def run_single_realisation(n_initial, reproduction_probability, mean_lifetime, o return run_time, plotting_time -def run_realisation_interface(args): - return run_realisation(*args) - - def run_multiple_realisations(n_initial, reproduction_probability, mean_lifetime, output_times, n_realisations, output_filepath, n_processes=1): ''' Run multiple realisations of the cell population model and plot the results. @@ -128,7 +124,7 @@ def run_multiple_realisations(n_initial, reproduction_probability, mean_lifetime arguments = [(n_initial, reproduction_probability, mean_lifetime, output_times, i) for i in range(n_realisations)] with multiprocessing.Pool(4) as p: - output_list = p.map(run_realisation_interface, arguments) + output_list = p.starmap(run_realisation, arguments) # Make a 2D array to store the populations of each realisation at each time output_populations = np.array([output[0] for output in output_list]) diff --git a/06_cell_population_example/queue_runtimes.png b/06_cell_population_example/queue_runtimes.png index e1a746836333c76a92118d56288e32486154f4a6..5edcb189837aa679eec19d81a155602dd0d101db 100644 GIT binary patch literal 19934 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 v&_M zuTVnS1J?mCYd+8wS|@`3-uUv3nOKEe?WV3)uWiju)JPhY?OHosPE zJ~p^H4&Woel7QA}#ivG&JOM+acnn=qm@(tg1OS&Hdaj?En%evW=pPt!fJ=-*hCrTp z31}`?AK`hL7RXarr=sTxI?)-9c@O|2Qj9*t4IF_1TU_hN`(ukfP;@DSVDQ0`<;A8$ z!B{gM+zlGCme2ySqC$YpC*sb%dzEHF(ADTebe5WI_};B1i|tgNDGobcn4jk~=%4^m zEKLZsSD#{Ho&wL?KJf(DO_27pakE0igJh#DH8b_-s_q|`>4B}d|TJFCKepA%u zW=4X~)le=_FMGY0avmQa--iaE4ST)@09Bv}!=568P3)0Si!<_vzL$Oo30Z`!@bxeB zej4;7(29KSOOscC+}LafU@-PH83<=Mt>rtY=CS@Z@RHQgun)r4GZ7=a$eFPSF`NT1 z?<`2$ZM#K?#KB^yT4{GT(c|zg9N(h9kD39t7Fphw8N;bZnCQMs3Fq1{{q?L3s0TjM zM1f_Xdx9|;Y!D04rEgj?j@8(UN%yTV~J-M|}G%moYWA8&YeL+AB)s>YqU>bKGu!~k5U6wdCM+8UcWiG(tV zhS-GDc+_SD;jn~28i6nvKN>k%!O057mp(YW1iRaTi1-1u0Gc~u1f=eTqHa+=IBY>q z>~^U3y;$od1TGNBJYcPnHZx;EI&QG_Ar(VGR%vy(ZL9@$CaQF~-%-#ng1ukW$%!BK zE*Dhz?A|Tt0BuH2r6qqyJ;c5WCncoAbNo*o>Gk%Mj0UA|y0~wmgMhE6kL4caKGb>p F-vCd3pZfp+ literal 20310 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

  • &wUU5~eaOmt|KqN<8rCVi0d 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

    Q&rRx8d9#-I5-Oom;V1H0`Jh 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�lYGl_~;4j#YUoRtNk?jG#6S1=?Ej3D8|y24&ADXB3~D*gvsP(x#&5~ru= za4^kb4-D$-7M$>CfZS(DWo6~uyu`-OizHXYqQGeqgM~b>4F~t6D`}W{5>s)e0La6x za;Of0;27aE{CU=Ew{oJuc0%HLu~|L1<(f~u^B9Eed|>dQoo#}nKiW@^Cr%4I51ns5 zj(V~z06Sy|j0H$nPAGSn1XoPwK-zv*VnGS6JO6~;EWP7*;0DjWcgV&x01c2#Nr6c_ zE!;dzRZjR5tgi?Top`3(30oI7!NH+bI@{@e!Uy&R2wi2}vpn9;^KOR%VBVKW87g@q z1fm<(Vh;N`p!|BUw}CP>1+6Ipl_;4AdmI*mf(hmq?BVTSrGwzWh=HIh15V&$0E&-D zr%)6Q9szk38#cOnwIk1Ko6QTN1XOOifR!bWx5696->OplH7}qieh3FgLE*ju3N}>H z3sh95NO8b;4o9miEAJB%8K4+_YgQ(M*eVLaP|#EbRt`)nTi!Y#jddu=`G&uU;9kuEgBwL-a|*CS zsatqIurUTsLD?Fx5)XLXuqS4K0S@bu0^rL~yWej6rzf2purb@tM-8VQNHPI5Xap4A zRJ}Vc59gh@LhKL{T^u{Yxw*N)wEXX28TRl18|a43uR#n0n|_iw*)x(j_;VeCaR?y@ zuYl=JIQilG%q@wxqnTEX+jwWeqCPAH$QU*e5GC`vhEk_t^Mbg4$2ydMwYyGCWjEuI z6c;iY0b3yFK5M`^I(E?!w!PoNdQLQWnaYT;zr~8drvKhiZ~w5w!(0FPkhr~5I1Fl# V|Bd51oN{{WLM5M%%V diff --git a/06_cell_population_example/queue_version.py b/06_cell_population_example/queue_version.py index fe9163b..ece10ab 100644 --- a/06_cell_population_example/queue_version.py +++ b/06_cell_population_example/queue_version.py @@ -96,7 +96,7 @@ def run_single_realisation(n_initial, reproduction_probability, mean_lifetime, o ax.set_yscale('log') fig.savefig(output_filepath) - plotting_time = time.time() - run_time + plotting_time = time.time() - run_time - start_time return run_time, plotting_time diff --git a/06_cell_population_example/serial_runtimes.png b/06_cell_population_example/serial_runtimes.png index cdb5e3f240b2ae0f82630429d38ad03bc249f468..409051f72ffd6eb8f0c68926008b9211aa933e03 100644 GIT binary patch literal 11964 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 JxpDXL{{r~RWN!cf literal 12066 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 XyFKp*DRB{?a&SR)jIWnoyBYl-M1|2L diff --git a/resources/pool_runtimes.png b/resources/pool_runtimes.png new file mode 100644 index 0000000000000000000000000000000000000000..cce237fd97dc0daa0cda3977cd52eab53b725a31 GIT binary patch literal 22155 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 CDz4iA literal 0 HcmV?d00001 diff --git a/resources/queue_runtimes.png b/resources/queue_runtimes.png new file mode 100644 index 0000000000000000000000000000000000000000..5edcb189837aa679eec19d81a155602dd0d101db GIT binary patch literal 19934 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 v&_M zuTVnS1J?mCYd+8wS|@`3-uUv3nOKEe?WV3)uWiju)JPhY?OHosPE zJ~p^H4&Woel7QA}#ivG&JOM+acnn=qm@(tg1OS&Hdaj?En%evW=pPt!fJ=-*hCrTp z31}`?AK`hL7RXarr=sTxI?)-9c@O|2Qj9*t4IF_1TU_hN`(ukfP;@DSVDQ0`<;A8$ z!B{gM+zlGCme2ySqC$YpC*sb%dzEHF(ADTebe5WI_};B1i|tgNDGobcn4jk~=%4^m zEKLZsSD#{Ho&wL?KJf(DO_27pakE0igJh#DH8b_-s_q|`>4B}d|TJFCKepA%u zW=4X~)le=_FMGY0avmQa--iaE4ST)@09Bv}!=568P3)0Si!<_vzL$Oo30Z`!@bxeB zej4;7(29KSOOscC+}LafU@-PH83<=Mt>rtY=CS@Z@RHQgun)r4GZ7=a$eFPSF`NT1 z?<`2$ZM#K?#KB^yT4{GT(c|zg9N(h9kD39t7Fphw8N;bZnCQMs3Fq1{{q?L3s0TjM zM1f_Xdx9|;Y!D04rEgj?j@8(UN%yTV~J-M|}G%moYWA8&YeL+AB)s>YqU>bKGu!~k5U6wdCM+8UcWiG(tV zhS-GDc+_SD;jn~28i6nvKN>k%!O057mp(YW1iRaTi1-1u0Gc~u1f=eTqHa+=IBY>q z>~^U3y;$od1TGNBJYcPnHZx;EI&QG_Ar(VGR%vy(ZL9@$CaQF~-%-#ng1ukW$%!BK zE*Dhz?A|Tt0BuH2r6qqyJ;c5WCncoAbNo*o>Gk%Mj0UA|y0~wmgMhE6kL4caKGb>p F-vCd3pZfp+ literal 0 HcmV?d00001 diff --git a/resources/serial_runtimes.png b/resources/serial_runtimes.png new file mode 100644 index 0000000000000000000000000000000000000000..409051f72ffd6eb8f0c68926008b9211aa933e03 GIT binary patch literal 11964 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 JxpDXL{{r~RWN!cf literal 0 HcmV?d00001