ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/osprai/osprai/trunk/cal_module.py
Revision: 13
Committed: Tue Apr 13 06:48:56 2010 UTC (9 years, 6 months ago) by clausted
File size: 1781 byte(s)
Log Message:
Fixed bugs in cal_module and ba_class where arrays of zeros--empty ROIs--would cause errors.
Line User Rev File contents
1 clausted 12 """
2     cal: Calibration module for SPRI data in a ba class.
3     Christopher Lausted, Institute for Systems Biology,
4     OSPRAI developers
5     Last modified on 100412 (yymmdd)
6    
7     Example:
8     #import cal_module as cal
9     #io_module as io
10     #ba1 = io.readsprit("spritdata.txt")
11     #ba2 = cal.calibrate(ba1, (t1,t2), (n1,n2))
12     """
13     __version__ = "100412"
14    
15    
16     ## Import libraries
17     import ba_class as ba
18     import numpy as np
19     from copy import deepcopy
20    
21    
22     def calibrate(ba0, ba1, t1, t2, n1=1335700, n2=1336600):
23     """
24     Use data in ba1 to calibrate ba0.
25     A simple two-point linear calibration using timepoints t1 and t2 and
26     corresponding refractive indices n1 and n2. If n1 and n2 are not given,
27     assume 1x PBS (n1=1335700uRIU) and 2xPBS (n2=1336600uRIU).
28     Average 30 seconds of data (t-15 to 5+15 seconds).
29     The ba object returned will remember the slopes and intercepts used.
30     """
31     ## Error checking
32     if (len(ba0.roi) != len(ba1.roi)):
33     print "Error: The ba objects are of different size."
34     return ba0
35     ## Continue.
36     ba2 = deepcopy(ba0)
37     for i, iroi in enumerate(ba1.roi):
38     ## Average values of camera units around t1 and t2.
39     cu1 = np.average(iroi.time2val(t1-15, t1+15))
40     cu2 = np.average(iroi.time2val(t2-15, t2+15))
41     ## Calculate and record slope and intercept parameters.
42     slope = (n2 - n1) / (cu2 - cu1)
43     intercept = n2 - (slope * cu2)
44     ## Apply the calibration to the new ba object.
45     ba2.roi[i].calibM = slope
46     ba2.roi[i].calibB = intercept
47 clausted 13 ba2.roi[i].value = ba0.roi[i].value * slope + intercept ## type np.array
48 clausted 12 return ba2
49     ## End of calibrate().
50    
51     ################################# End of module #################################