Simulating a model with basico

First some jupyter magic for plotting and convenience

[1]:
%pylab
%matplotlib inline
import sys
if not '../..' in sys.path:
    sys.path.append('../..')
Using matplotlib backend: Qt5Agg
Populating the interactive namespace from numpy and matplotlib

Now import basico

[2]:
from basico import *

now we are ready to load a model, just adjust the file_name variable, to match yours. The file can be a COPASI or SBML file. For this example, we use the brusselator model, that is distributed with the package.

[3]:
file_name = get_examples('brusselator')[0]
[4]:
model = load_model(file_name)

now we are ready to simulate. Calling run_time_course will run the simulation as specified in the COPASI file and return a pandas dataframe for it.

[5]:
run_time_course().head()
[5]:
X Y
Time
2.0 0.345934 2.368188
2.5 0.182762 2.658596
3.0 0.147433 2.863681
3.5 0.141129 3.048319
4.0 0.140734 3.228345

for plotting you would then just plot that as one does

[6]:
df = run_time_course()
df.plot()
[6]:
<AxesSubplot:xlabel='Time'>
../_images/notebooks_Simple_simulations_with_basico_10_1.png

The run_time_course command

you can change different options for the time course by adding named parameters into the run_time_course_command. Supported are:

  • model: incase you want to use another model than the one last loaded

  • scheduled: to mark the model as scheduled

  • update_model: to update the initial state after the simulation is run

  • duration: to specify how long the simulation is run

  • automatic: in case you would like automatic step size being used

  • output_event: in case you would like to have the event values before and after the event hit listed

  • start_time: to change the start time

  • step_number or intervals: to overwrite the number of steps being used

  • method: a method name to use for the simulation.

so lets run two simulations that will be different slightly, as we will use the update_model flag:

[7]:
df1 = run_time_course(update_model=True)
df2 = run_time_course(update_model=True)
[8]:
df1.plot(), df2.plot()
[8]:
(<AxesSubplot:xlabel='Time'>, <AxesSubplot:xlabel='Time'>)
../_images/notebooks_Simple_simulations_with_basico_14_1.png
../_images/notebooks_Simple_simulations_with_basico_14_2.png

And now you could plot the difference between them too:

[9]:
(df1-df2).plot()
[9]:
<AxesSubplot:xlabel='Time'>
../_images/notebooks_Simple_simulations_with_basico_16_1.png
[10]:
(df1-df2).describe()
[10]:
X Y
count 197.000000 197.000000
mean -0.014562 -0.123916
std 1.592729 3.615933
min -6.630084 -3.816620
25% -0.056936 -2.428037
50% -0.024780 -2.245888
75% 0.077394 4.837513
max 7.051794 6.844179
[ ]: