|
|||
NRAO Home > CASA > CASA Cookbook and User Reference Manual |
|
B.5.1 Saving and Reading Dictionaries
To save a simple dictionary to a file:
CASA <14>: print >>dictfile,"mydict = ",mydict
CASA <15>: dictfile.close()
CASA <16>: !cat mydictfile.py
IPython system call: cat mydictfile.py
mydict = {’source’: ’0137+331’, ’flux’: 5.4000000000000004}
CASA <17>: mydict = {}
CASA <18>: run mydictfile.py
CASA <19>: mydict
Out[19]: {’flux’: 5.4000000000000004, ’source’: ’0137+331’}
More complex dictionaries, like those produced by imstat that contain NumPy arrays, require a different approach to save. The pickle module lets you save general data structures from Python. For example:
CASA <21>: xstat
Out[21]:
{’blc’: array([0, 0, 0, 0]),
’blcf’: ’15:24:08.404, +04.31.59.181, I, 1.41281e+09Hz’,
’flux’: array([ 4.0795296]),
’max’: array([ 0.05235516]),
’maxpos’: array([134, 134, 0, 38]),
’maxposf’: ’15:21:53.976, +05.05.29.998, I, 1.41374e+09Hz’,
’mean’: array([ 1.60097857e-05]),
’medabsdevmed’: array([ 0.00127436]),
’median’: array([ -1.17422514e-05]),
’min’: array([-0.0104834]),
’minpos’: array([160, 1, 0, 30]),
’minposf’: ’15:21:27.899, +04.32.14.923, I, 1.41354e+09Hz’,
’npts’: array([ 3014656.]),
’quartile’: array([ 0.00254881]),
’rms’: array([ 0.00202226]),
’sigma’: array([ 0.0020222]),
’sum’: array([ 48.26399646]),
’sumsq’: array([ 12.32857318]),
’trc’: array([255, 255, 0, 45]),
’trcf’: ’15:19:52.390, +05.35.44.246, I, 1.41391e+09Hz’}
CASA <22>: mydict
Out[22]: {’flux’: 5.4000000000000004, ’source’: ’0137+331’}
CASA <23>: pickfile = ’myxstat.pickle’
CASA <24>: f = open(pickfile,’w’)
CASA <25>: p = pickle.Pickler(f)
CASA <26>: p.dump(xstat)
CASA <27>: p.dump(mydict)
CASA <28>: f.close()
The dictionaries are now saved in pickle file myxstat.pickle in the current directory.
To retrieve:
CASA <30>: mydict2 = {}
CASA <31>: f = open(pickfile)
CASA <32>: u = pickle.Unpickler(f)
CASA <33>: xstat2 = u.load()
CASA <34>: mydict2 = u.load()
CASA <35>: f.close()
CASA <36>: xstat2
Out[36]:
{’blc’: array([0, 0, 0, 0]),
’blcf’: ’15:24:08.404, +04.31.59.181, I, 1.41281e+09Hz’,
’flux’: array([ 4.0795296]),
’max’: array([ 0.05235516]),
’maxpos’: array([134, 134, 0, 38]),
’maxposf’: ’15:21:53.976, +05.05.29.998, I, 1.41374e+09Hz’,
’mean’: array([ 1.60097857e-05]),
’medabsdevmed’: array([ 0.00127436]),
’median’: array([ -1.17422514e-05]),
’min’: array([-0.0104834]),
’minpos’: array([160, 1, 0, 30]),
’minposf’: ’15:21:27.899, +04.32.14.923, I, 1.41354e+09Hz’,
’npts’: array([ 3014656.]),
’quartile’: array([ 0.00254881]),
’rms’: array([ 0.00202226]),
’sigma’: array([ 0.0020222]),
’sum’: array([ 48.26399646]),
’sumsq’: array([ 12.32857318]),
’trc’: array([255, 255, 0, 45]),
’trcf’: ’15:19:52.390, +05.35.44.246, I, 1.41391e+09Hz’}
CASA <37>: mydict2
Out[37]: {’flux’: 5.4000000000000004, ’source’: ’0137+331’}
Thus, you can make scripts that save information and use it later, like for regressions.
Note that these examples use Python file-handling and IO, as well as importing modules such as pickle. See your friendly Python reference for more on this kind of stuff. Its fairly obvious how it works.
More information about CASA may be found at the
CASA web page
Copyright © 2010 Associated Universities Inc., Washington, D.C.
This code is available under the terms of the GNU General Public Lincense
Home |
Contact Us |
Directories |
Site Map |
Help |
Privacy Policy |
Search