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 <13>: dictfile = open(’mydictfile.py’,’w’)  
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 <20>: import pickle  
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 <29>: xstat2 = {}  
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