1 |
"""
|
2 |
Christopher Lausted, Institute for Systems Biology
|
3 |
Last modified on 100519 (yymmdd)
|
4 |
Scripts to test various OSPRAI components.
|
5 |
"""
|
6 |
|
7 |
## Import libaries
|
8 |
import ba_class
|
9 |
import vu_module
|
10 |
import io_module
|
11 |
import cal_module
|
12 |
import mdl_module
|
13 |
import fit_module
|
14 |
import osprai_one
|
15 |
## Reload Osprai libraries in case code has changed.
|
16 |
reload(ba_class)
|
17 |
reload (vu_module)
|
18 |
reload(io_module)
|
19 |
reload(cal_module)
|
20 |
reload(mdl_module)
|
21 |
reload(fit_module)
|
22 |
reload(osprai_one)
|
23 |
## Or just import this next one...
|
24 |
from osprai_one import *
|
25 |
|
26 |
|
27 |
def test_io_module():
|
28 |
print "Loading SPR data files..."
|
29 |
ba1 = readbiosensor("example-biosensor.txt")
|
30 |
ba1 = readicmtxt("example-icm.txt")
|
31 |
ba1 = readsprit("example-sprit.txt")
|
32 |
ba1 = applykey(ba1, "example-key.tsv")
|
33 |
print "Writing SPR data files..."
|
34 |
writesprit(ba1,"testwritesprit.txt")
|
35 |
writeclamp(ba1,"testwriteclamp.txt")
|
36 |
writebiosensor(ba1, "testwritebiosensor.txt")
|
37 |
print "Done with test_io_module."
|
38 |
return
|
39 |
|
40 |
def test_cal_module_vu_module():
|
41 |
print "Loading an SPR data file..."
|
42 |
ba1 = readicmtxt("example-icm.txt")
|
43 |
|
44 |
print "Plotting the raw data file..."
|
45 |
dotgraph(ba1)
|
46 |
|
47 |
print "Plotting the calibrated data..."
|
48 |
ba2 = calibrate(ba1, ba1, 2850, 3120)
|
49 |
linegraph(ba2, "Calibrated SPR Data")
|
50 |
dualgraph(ba1, ba2, "Uncalibrated and Calibrated SPR Data")
|
51 |
|
52 |
print "Use ROI #16 as background, subtract, and plot..."
|
53 |
bgset(ba2, 16)
|
54 |
ba3 = bgsubt(ba2)
|
55 |
linegraph(ba3, "Calibrated Referenced SPR Data")
|
56 |
|
57 |
print "Test of scatterplot using time points 500, 1000, 1500, 2000"
|
58 |
scatterplot(ba3, 3600, 4200, 3600, 4700, "Scatterplot")
|
59 |
|
60 |
print "Cutting out an interval..."
|
61 |
ba3 = copyinterval(ba3, 2800, 6200)
|
62 |
linegraph(ba3)
|
63 |
print "Done with test test_cal_module_vu_module."
|
64 |
return
|
65 |
|
66 |
|
67 |
def test_mdl_module_fit_module():
|
68 |
print "Test the model module..."
|
69 |
## Set some default parameters.
|
70 |
dpar = {'t1': {'value':30.0, 'min':30.0, 'max':30.0, 'fixed':'fixed'} }
|
71 |
dpar['rmax'] = {'value':100.0, 'min':1.0, 'max':1000.0, 'fixed':'fixed'}
|
72 |
dpar['conc'] = {'value':1e-5, 'min':1e-12, 'max':1e1, 'fixed':'fixed'}
|
73 |
dpar['cofa'] = {'value':1.0, 'min':1e-10, 'max':1e10, 'fixed':'fixed'}
|
74 |
dpar['kon'] = {'value':2e4, 'min':1e1, 'max':1e8, 'fixed':'fixed'}
|
75 |
dpar['t2'] = {'value':150.0, 'min':10.0, 'max':1000.0, 'fixed':'fixed'}
|
76 |
dpar['koff'] = {'value':1.0e-2, 'min':1e-8, 'max':1e-1, 'fixed':'fixed'}
|
77 |
dpar['t3'] = {'value':270.0, 'min':270.0, 'max':270.0, 'fixed':'fixed'}
|
78 |
## Create ba with three ROIs and 300 datapoints.
|
79 |
ba0 = BiosensorArray(3,300)
|
80 |
for roi in ba0.roi:
|
81 |
roi.time = arange(300, dtype=float) ## Samples every 1 second.
|
82 |
roi.value = zeros(300, dtype=float) + 20 ## Baseline signal is 20 units.
|
83 |
roi.params = deepcopy(dpar)
|
84 |
roi.model = simple1to1
|
85 |
## Set the dilution factors
|
86 |
ba0.roi[0].params['cofa']['value'] = 1.0 / 27
|
87 |
ba0.roi[1].params['cofa']['value'] = 1.0 / 9
|
88 |
ba0.roi[2].params['cofa']['value'] = 1.0 / 3
|
89 |
## Simulate the data and plot it.
|
90 |
for roi in ba0.roi:
|
91 |
roi.value = roi.model(roi.time, roi.value, roi.params)
|
92 |
linegraph(ba0, "Simulation")
|
93 |
|
94 |
## Constrain rmax belowtrue value to show what happens.
|
95 |
print "Testing the fitting..."
|
96 |
ba1 = deepcopy(ba0)
|
97 |
## Set one kon, koff, rmax to float.
|
98 |
ba1.roi[0].params['koff']['fixed'] = 'float'
|
99 |
ba1.roi[0].params['kon']['fixed'] = 'float'
|
100 |
ba1.roi[0].params['rmax'] = {'value':10.0, 'min':1.0, 'max':80.0, 'fixed':'float'}
|
101 |
ba1.roi[1].params['koff']['fixed'] = 0
|
102 |
ba1.roi[1].params['kon']['fixed'] = 0
|
103 |
ba1.roi[1].params['rmax']['fixed'] = 0
|
104 |
ba1.roi[2].params['koff']['fixed'] = 0
|
105 |
ba1.roi[2].params['kon']['fixed'] = 0
|
106 |
ba1.roi[2].params['rmax']['fixed'] = 0
|
107 |
## Fit and then plot.
|
108 |
mclma(ba1.roi)
|
109 |
for roi in ba1.roi:
|
110 |
roi.value =roi.model(roi.time, roi.value, roi.params)
|
111 |
dualgraph(ba0, ba1, "Fitted Data with an incorrect rmax constraint")
|
112 |
print "Done with test test_mdl_module_fit_module."
|
113 |
return
|
114 |
|
115 |
|
116 |
def demo_mtl():
|
117 |
print "Test the model module..."
|
118 |
ba0 = BiosensorArray(1,300) ## Create ba1 with one ROI and 300 datapoints.
|
119 |
roi0 = ba0.roi[0]
|
120 |
roi0.time = arange(300, dtype=float) ## Samples every 1 second.
|
121 |
roi0.value = zeros(300, dtype=float) + 20 ## Baseline signal is 20 units.
|
122 |
roi0.params = {'t1': {'value':30.0, 'min':30.0, 'max':30.0, 'fixed':True} }
|
123 |
roi0.params['rmax'] = {'value': 100.0}
|
124 |
roi0.params['conc'] = {'value': 1e-6}
|
125 |
roi0.params['kon'] = {'value': 5e4}
|
126 |
roi0.params['t2'] = {'value': 150.0}
|
127 |
roi0.params['koff'] = {'value': 5e-3}
|
128 |
roi0.params['t3'] = {'value': 270.0}
|
129 |
roi0.params['kmtl'] = {'value': 2e6}
|
130 |
roi0.name = "kmtl=2e6"
|
131 |
roi0.model = simple1to1_mtl
|
132 |
roi0.value =roi0.model(roi0.time, roi0.value, roi0.params)
|
133 |
|
134 |
ba1 = deepcopy(ba0)
|
135 |
roi0 = ba1.roi[0]
|
136 |
roi0.name = "No MTL"
|
137 |
roi0.model = simple1to1
|
138 |
roi0.value =roi0.model(roi0.time, roi0.value, roi0.params)
|
139 |
dualgraph(ba0, ba1, "With and without MTL")
|
140 |
print "Done with test demo_mtl."
|
141 |
|
142 |
|
143 |
## Run selected test or tests.
|
144 |
#test_io_module()
|
145 |
#test_cal_module_vu_module()
|
146 |
#demo_mtl()
|
147 |
test_mdl_module_fit_module()
|