Parameter Scan¶
Copasi supports three types of scan, a regular parameter scan, a repeat scan and sampling from a parametric distributions.
We first build a model to work with throughout the tutorial.
[6]:
import os
import site
site.addsitedir('D:\pycotools3')
from pycotools3 import model, tasks, viz
import pandas
working_directory = r'/home/ncw135/Documents/pycotools3/docs/source/Tutorials/timecourse_tutorial'
if not os.path.isdir(working_directory):
os.makedirs(working_directory)
copasi_file = os.path.join(working_directory, 'michaelis_menten.cps')
if os.path.isfile(copasi_file):
os.remove(copasi_file)
antimony_string = """
model michaelis_menten()
compartment cell = 1.0
var E in cell
var S in cell
var ES in cell
var P in cell
kf = 0.1
kb = 1
kcat = 0.3
E = 75
S = 1000
SBindE: S + E => ES; kf*S*E
ESUnbind: ES => S + E; kb*ES
ProdForm: ES => P + E; kcat*ES
end
"""
with model.BuildAntimony(copasi_file) as loader:
mm = loader.load(antimony_string)
mm
[6]:
Model(name=michaelis_menten, time_unit=s, volume_unit=l, quantity_unit=mol)
[11]:
S = tasks.Scan(
mm, scan_type='scan', subtask='time_course', report_type='time_course',
report_name = 'ParameterScanOfTimeCourse.txt', variable='S',
minimum=1, maximum=20, number_of_steps=8, run=True,
)
## Now check parameter scan data exists
os.path.isfile(S.report_name)
[11]:
True
Two Way Parameter Scan¶
By default, scan tasks are removed before setting up a new scan. To set up dual scans, set clear_scans to False in a second call to Scan
so that the first is not removed prior to adding the second.
[12]:
## Clear scans for setting up first scan
tasks.Scan(
mm, scan_type='scan', subtask='time_course', report_type='time_course',
variable='E', minimum=1, maximum=20, number_of_steps=8, run=False, clear_scan=True,
)
## do not clear tasks when setting up the second
S = tasks.Scan(
mm, scan_type='scan', subtask='time_course', report_type='time_course',
report_name = 'TwoWayParameterScanOfTimeCourse.csv', variable='S',
minimum=1, maximum=20, number_of_steps=8, run=True, clear_scan=False,
)
## check the output exists
os.path.isfile(S.report_name)
[12]:
True
An arbitrary number of scans can be setup this way. Further, its possible to chain together scans with repeat or random distribution scans.
Repeat Scan Items¶
Repeat scans are very useful for running multiple parameter estimations and for running stochastic time courses.
[13]:
## Assume Parameter Estimation task already configured
tasks.Scan(
mm, scan_type='repeat', subtask='parameter_estimation', report_type='parameter_estimation',
number_of_steps=6, run=False, ##set run to True to run via CopasiSE
)
## Assume model runs stochastically and time course settings are already configured
tasks.Scan(
mm, scan_type='repeat', subtask='time_course', report_type='time_course',
number_of_steps=100, run=False, ##set run to True to run via CopasiSE
)
[13]:
<pycotools3.tasks.Scan at 0x246af8b7be0>