source: nappy/trunk/naCore.py @ 343

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/nappy/trunk/naCore.py@347
Revision 343, 5.3 KB checked in by astephen, 15 years ago (diff)

Latest version with new files in test directory.

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