source: nappy/tags/ver_0-9-7/naCore.py @ 339

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/nappy/tags/ver_0-9-7/naCore.py@350
Revision 339, 5.1 KB checked in by astephen, 16 years ago (diff)

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1"""
2naCore.py
3=========
4
5Holds the NACore class that holds only the None type version
6of all the possible NASA Ames variables described in the Gaines
7and Hipkind documents. It also holds a number of useful methods
8for accessing information in the file.
9"""
10
11import re
12pattnBrackets=re.compile("^\s*(.*)\((.+?)\)(.*)\s*$")
13
14class NACore:
15
16    def __init__(self):
17
18        self.A=None
19        self.AMISS=None
20        self.ANAME=None
21        self.ASCAL=None
22        self.DATE=None
23        self.DX=None
24        self.FFI=None
25        self.IVOL=None
26        self.LENA=None
27        self.LENX=None
28        self.MNAME=None
29        self.NAUXC=None
30        self.NAUXV=None
31        self.NCOM=None
32        self.NIV=None
33        self.NLHEAD=None
34        self.NNCOML=None
35        self.NSCOML=None
36        self.NV=None
37        self.NVOL=None
38        self.NVPM=None
39        self.NX=None
40        self.NXDEF=None
41        self.ONAME=None
42        self.ORG=None
43        self.RDATE=None
44        self.SCOM=None
45        self.SNAME=None
46        self.V=None
47        self.VMISS=None
48        self.VNAME=None
49        self.VSCAL=None
50        self.X=None
51        self.XNAME=None       
52
53    def getNADict(self):
54        allNAVars={"A":self.A, "AMISS":self.AMISS, "ANAME":self.ANAME,
55                     "ASCAL":self.ASCAL, "DATE":self.DATE, "DX":self.DX,
56                     "FFI":self.FFI, "IVOL":self.IVOL, "LENA":self.LENA,
57                     "LENX":self.LENX, "MNAME":self.MNAME, "NAUXC":self.NAUXC,
58                     "NAUXV":self.NAUXV, "NCOM":self.NCOM, "NIV":self.NIV,
59                     "NLHEAD":self.NLHEAD, "NNCOML":self.NNCOML,
60                     "NSCOML":self.NSCOML, "NV":self.NV, "NVOL":self.NVOL,
61                     "NVPM":self.NVPM, "NX":self.NX, "NXDEF":self.NXDEF,
62                     "ONAME":self.ONAME, "ORG":self.ORG, "RDATE":self.RDATE,
63                     "SCOM":self.SCOM, "SNAME":self.SNAME, "V":self.V,
64                     "VMISS":self.VMISS, "VNAME":self.VNAME, "VSCAL":self.VSCAL,
65                     "X":self.X, "XNAME":self.XNAME}
66        self.naDict={}
67        for i in allNAVars.keys():
68            if allNAVars[i]!=None:
69                self.naDict[i]=allNAVars[i]
70        return self.naDict
71
72    def __getitem__(self, item):
73        """Need to return whatever user wants and to translate
74        NASA Ames variables such as 'NIV' to explanatory strings
75        such as 'number_of_independent_variables'. Need a map for
76        this defined at top of the nasaAmesData.py module"""
77        if hasattr(self, item):
78            return getattr(self, item)
79        else:
80            return "Item '%s' not found." % item
81
82    def getVariable(self, var_number):       
83        match=pattnBrackets.match(self.VNAME[var_number])
84        if match:
85            (v1, units, v2)=match.groups()
86            variable=v1+" "+v2
87        else:
88            (variable, units)=(self.VNAME[var_number], None)
89        miss=self.getMissingValue(var_number)
90        scale=self.getScaleFactor(var_number)
91        return (variable.strip(), units, miss, scale)
92
93    def getIndependentVariable(self, ivar_number):
94        match=pattnBrackets.match(self.XNAME[ivar_number])
95        if match:
96            (v1, units, v2)=match.groups()
97            variable=v1+" "+v2
98        else:
99            (variable, units)=(self.XNAME[ivar_number], None)
100        return (variable.strip(), units)
101
102    def getAuxVariable(self, avar_number):       
103        match=pattnBrackets.match(self.ANAME[avar_number])
104        if match:
105            (v1, units, v2)=match.groups()
106            variable=v1+" "+v2
107        else:
108            (variable, units)=(self.ANAME[avar_number], None)
109        miss=self.getAuxMissingValue(avar_number)
110        scale=self.getAuxScaleFactor(avar_number)
111        return (variable.strip(), units, miss, scale)   
112
113    def getVariables(self):
114        vars=[]
115        for i in range(self.NV):
116            vars.append(self.getVariable(i))
117        return vars
118
119    def getIndependentVariables(self):
120        ivars=[]
121        for i in range(self.NIV):
122            ivars.append(self.getIndependentVariable(i))
123        return ivars
124
125    def getAuxVariables(self):
126        avars=[]
127        for i in range(self.NAUXV):
128            avars.append(self.getAuxVariable(i))
129        return avars
130
131    def getMissingValue(self, var_number):
132        return self.VMISS[var_number]
133
134    def getScaleFactor(self, var_number):
135        return self.VSCAL[var_number]
136
137    def getAuxMissingValue(self, avar_number):
138        return self.AMISS[avar_number]
139
140    def getAuxScaleFactor(self, avar_number):
141        return self.ASCAL[avar_number]
142
143    def getNumHeaderLines(self):
144        return self.NLHEAD
145
146    def getFFI(self):
147        return self.FFI
148
149    def getOriginator(self):
150        return self.ONAME
151
152    def getOrganisation(self):
153        return self.ORG
154
155    def getOrg(self):
156        return self.getOrganisation()
157
158    def getSource(self):
159        return self.SNAME
160
161    def getMission(self):
162        return self.MNAME
163
164    def getVolumes(self):
165        return (self.IVOL, self.NVOL)
166
167    def getFileDates(self):
168        return (self.DATE, self.RDATE)
169
170    def getNormalComments(self):
171        return self.NCOM
172
173    def getSpecialComments(self):
174        return self.SCOM
175
Note: See TracBrowser for help on using the repository browser.