Changeset 361
- Timestamp:
- 13/01/05 16:03:52 (16 years ago)
- Location:
- nappy/trunk
- Files:
-
- 3 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
nappy/trunk/data_files/1010.na
r347 r361 1 4 610101 45 1010 2 2 De Rudder, Anne 3 3 Rutherford Appleton Laboratory, Chilton OX11 0QX, UK - Tel.: +44 (0) 1235 445837 … … 31 31 is also used to give account for the fact that there is virtually no O(1D) present below 32 32 the altitude of 20 km. 33 1234 33 12 35 34 The files included in this data set illustrate each of the 9 NASA Ames file format indices -
nappy/trunk/general.py
r349 r361 22 22 # Imports from local package 23 23 import naFile, naFile1001, naFile1010, naFile1020, naFile2010 24 import naFile2110, naFile21 10, naFile2160, naFile231024 import naFile2110, naFile2160, naFile2310 25 25 import naFile3010, naFile4010 26 26 … … 52 52 elif d["NIV"]==3: # 3 independent variables 53 53 return 3010 54 elif d["NIV"]==2: # 2 independent variables 55 # Three choices here: 2010 - Straightforward 2-D variables 56 # 2110 - one independent variable changes length 57 # 2160 - some auxiliary variables are character strings 58 for aux_var in d["A"]: 59 if type(aux_var[0])==str: 60 return 2160 61 if type(d["X"][0][0])==list: 62 return 2110 63 else: 64 return 2010 54 # 2 independent variables 55 # Four choices here: 2010 - Straightforward 2-D variables 56 # 2110 - one independent variable changes length and the values are specified 57 # 2310 - one indepenent variable changes length but only the first value is specifically stated 58 # 2160 - the independent unbounded variable is a character string 59 # (not "some auxiliary variables are character strings" as previously coded) 60 61 elif d["NIV"]==2 and type(d["X"][0][0])==str: 62 return 2160 63 elif d["NIV"]==2 and type(d["X"][0][1])==list and len(d["X"][0][1])>1: 64 return 2110 65 elif d["NIV"]==2 and type(d["X"][0][1])==list and len(d["X"][0][1])==1: 66 return 2310 67 elif d["NIV"]==2: 68 return 2010 69 #for aux_var in d["A"]: 70 # if type(aux_var[0])==str: 71 # return 2160 72 #print d["X"][0][0] 73 #if type(d["X"][0][0])==str: 74 # return 2160 75 #elif type(d["X"][0][1])==list: 76 # return 2110 77 # else: 78 # return 2010 65 79 elif d["NIV"]==1: # 1 independent variable 66 80 # Three choices here: 1001 - No auxiliary variables … … 74 88 return 1010 75 89 else: 76 raise """Could not resolve the dictionary object to create a suitable NASA 77 Ames File Format Index (FFI). Please modify the contents and try again.""" 90 raise "Could not resolve the dictionary object to create a suitable NASA Ames File Format Index (FFI). Please modify the contents and try again." 78 91 79 92 -
nappy/trunk/naFile2110.py
r349 r361 26 26 """ 27 27 Reads FFI-specifc header section. 28 """ 28 """ 29 29 self._readCommonHeader() 30 30 self.DX=readItemsFromLine(self.file.readline(), self.NIV, float) 31 self.DX.reverse() # Reverse because C-type array is least-changing first 31 self.DX.reverse() # Reverse because C-type array is least-changing first 32 32 self.XNAME=readItemsFromLines(self._readLines(self.NIV), self.NIV, str) 33 self.XNAME.reverse() # Reverse because C-type array is least-changing first 33 self.XNAME.reverse() # Reverse because C-type array is least-changing first 34 34 self._readVariablesHeaderSection() 35 35 self._readAuxVariablesHeaderSection() 36 36 self._readComments() 37 38 def writeHeader(self): 39 """ 40 Writes FFI-specifc header section. 41 """ 42 self._writeCommonHeader() 43 self.DX.reverse() 44 self.file.write(("%s "*self.NIV+"\n") % tuple(self.DX)) 45 self.XNAME.reverse() 46 self.file.write("%s\n"*self.NIV % tuple(self.XNAME)) 47 self._writeVariablesHeaderSection() 48 self._writeAuxVariablesHeaderSection() 49 self._writeComments() 37 50 38 51 def _setupArrays(self): … … 44 57 self.X=[] # Needs to be a list of sublists each containing [x0n, [x1n, x1n+1, x1n+2....]] 45 58 self.NX=[] 46 59 47 60 for n in range(self.NV): 48 61 self.V.append([]) 49 62 for i in range(self.NAUXV): 50 63 self.A.append([]) 51 64 52 65 def _readData1(self, datalines, ivar_count): … … 57 70 (x_and_a, rtlines)=readItemsFromUnknownLines(datalines, self.NAUXV+1, float) 58 71 (x, aux)=(x_and_a[0], x_and_a[1:]) 72 count=0 59 73 for a in range(self.NAUXV): 60 self.A.append(aux[a]) 74 self.A[a].append(aux[count]) 75 count=count+1 76 #for a in range(self.NAUXV): 77 #self.A.append(aux[a]) 61 78 self.X.append([]) 62 79 self.X[ivar_count].append(x) … … 65 82 self.NX.append(int(aux[0])) 66 83 return rtlines 67 84 68 85 def _readData2(self, datalines, ivar_count): 69 86 """ 70 87 Reads second line/section (if used) of current block of data. 71 """ 88 """ 72 89 # Now get the dependent variables 73 90 for n in range(self.NV): … … 83 100 rtlines=datalines 84 101 return rtlines 102 103 def writeData(self): 104 """ 105 Writes the data section of the file. 106 This method can be called directly by the user. 107 """ 108 # Set up unbounded IV loop 109 # self.NX.reverse() 110 for m in range(len(self.X)): 111 # Write Independent variable mark and auxiliary variables 112 var_string="%s " % self.X[m][0] 113 for a in range(self.NAUXV): 114 var_string=var_string+("%s " % self.A[a][m]) 115 self.file.write("%s\n" % var_string.rstrip()) 116 # Write second independant variable and dependant variables 117 for p in range(self.NX[m]): 118 var_string="%s " % self.X[m][1][p] 119 for n in range(self.NV): 120 var_string=var_string+("%s " %self.V[n][m][p]) 121 self.file.write("%s \n" %var_string) -
nappy/trunk/naFile2160.py
r349 r361 26 26 """ 27 27 Reads FFI-specifc header section. 28 """ 28 """ 29 29 self._normalizedX="no" 30 30 self._readCommonHeader() … … 32 32 self.LENX=readItemFromLine(self.file.readline(), float) 33 33 self.XNAME=readItemsFromLines(self._readLines(self.NIV), self.NIV, str) 34 self.XNAME.reverse() # Reverse because C-type array is least-changing first 34 self.XNAME.reverse() # Reverse because C-type array is least-changing first 35 35 self._readVariablesHeaderSection() 36 36 self._readCharAuxVariablesHeaderSection() 37 37 self._readComments() 38 39 def writeHeader(self): 40 """ 41 Writes FFI-specific header section. 42 """ 43 self._writeCommonHeader() 44 self.DX.reverse() 45 self.file.write("%s\n" % tuple(self.DX)) 46 self.file.write("%s\n" % self.LENX) 47 self.XNAME.reverse() 48 self.file.write("%s\n"*self.NIV % tuple(self.XNAME)) 49 self._writeVariablesHeaderSection() 50 self._writeAuxVariablesHeaderSection() 51 self._writeComments() 52 53 def _writeAuxVariablesHeaderSection(self): 54 """ 55 Writes the auxiliary variables section of the header for FFI 2160. 56 Assumes we are at the right point in the file. 57 """ 58 self.file.write("%s\n" % self.NAUXV) 59 self.file.write("%s\n" % self.NAUXC) 60 if self.NAUXV>0: 61 self.file.write(("%s "*(self.NAUXV-self.NAUXC)+"\n") % tuple(self.ASCAL)) 62 self.file.write(("%s "*(self.NAUXV-self.NAUXC)+"\n") % tuple(self.AMISS[0:(self.NAUXV-self.NAUXC)])) 63 self.file.write(("%s "*self.NAUXC+"\n") % tuple(self.LENA[(self.NAUXV-self.NAUXC):])) 64 self.file.write(("%s\n"*self.NAUXC) % tuple(self.AMISS[(self.NAUXV-self.NAUXC):])) 65 self.file.write("%s\n"*self.NAUXV % tuple(self.ANAME)) 38 66 39 67 def _setupArrays(self): … … 58 86 # Get character string independent variable 59 87 (x1, datalines)=readItemsFromUnknownLines(datalines, 1, str) 60 61 self.X[ivar_count].append(x1 )88 self.X.append([]) 89 self.X[ivar_count].append(x1[0]) 62 90 # Set up list to take second changing independent variable 63 91 self.X[ivar_count].append([]) … … 65 93 (aux, datalines)=readItemsFromUnknownLines(datalines, (self.NAUXV-self.NAUXC), float) 66 94 self.NX.append(int(aux[0])) 67 for a in range(self.NAUXV-self.NAUXC): 68 self.A.append(aux[a]) 95 count=0 96 for a in range(self.NAUXV-self.NAUXC): 97 self.A[a].append(aux[count]) 98 count=count+1 69 99 # Get character AUX vars 70 100 (auxc)=readItemsFromLines(datalines[:self.NAUXC], self.NAUXC, str) 71 101 rtlines=datalines[self.NAUXC:] 72 for a in range(self.NAUXC): 73 self.A.append(auxc[a]) 102 count=0 103 for a in range(self.NAUXC): 104 self.A[(self.NAUXV-self.NAUXC)+a].append(auxc[count]) 105 count=count+1 74 106 return rtlines 75 107 108 def writeData(self): 109 """ 110 Writes the data section of the file. 111 This method can be called directly by the user. 112 """ 113 # Set up unbounded IV loop 114 # self.NX.reverse() 115 for m in range(len(self.X)): 116 # Write Independent variable mark and auxiliary variables 117 var_string="%s " % self.X[m][0] 118 self.file.write("%s\n" % var_string.rstrip()) 119 var_string="" 120 for a in range(self.NAUXV-self.NAUXC): 121 var_string=var_string+("%s " % self.A[a][m]) 122 self.file.write("%s\n" % var_string.rstrip()) 123 124 for a in range(self.NAUXC): 125 var_string=("%s " % self.A[(self.NAUXV-self.NAUXC)+a][m]) 126 self.file.write("%s\n" % var_string.rstrip()) 127 128 # Write second independant variable and dependant variables 129 for p in range(self.NX[m]): 130 var_string="%s " % self.X[m][1][p] 131 for n in range(self.NV): 132 var_string=var_string+("%s " %self.V[n][m][p]) 133 self.file.write("%s \n" %var_string) -
nappy/trunk/naFile2310.py
r349 r361 35 35 self._readAuxVariablesHeaderSection() 36 36 self._readComments() 37 38 def _readData1(self, datalines, ivar_count): 37 38 def writeHeader(self): 39 """ 40 Writes FFI-specifc header section. 41 """ 42 self._writeCommonHeader() 43 #self.DX.reverse() 44 self.file.write(("%s\n") % self.DX[0]) 45 self.XNAME.reverse() 46 self.file.write("%s\n"*self.NIV % tuple(self.XNAME)) 47 self._writeVariablesHeaderSection() 48 self._writeAuxVariablesHeaderSection() 49 self._writeComments() 50 51 def _readData1(self, datalines, ivar_count): 39 52 """ 40 53 Reads first line/section of current block of data. … … 43 56 (x_and_a, rtlines)=readItemsFromUnknownLines(datalines, self.NAUXV+1, float) 44 57 (x, aux)=(x_and_a[0], x_and_a[1:]) 58 count=0 45 59 for a in range(self.NAUXV): 46 self.A.append(aux[a]) 60 self.A[a].append(aux[count]) 61 count=count+1 47 62 self.X.append([]) 48 63 self.X[ivar_count].append(x) 49 64 # Set up list to take second changing independent variable 50 self.X[ivar_count].append([aux[1]]) 65 self.X[ivar_count].append([aux[1]]) 51 66 self.NX.append(int(aux[0])) 52 67 self.DX.append(int(aux[2])) … … 66 81 count=count+1 67 82 return rtlines 83 84 def writeData(self): 85 """ 86 Writes the data section of the file. 87 This method can be called directly by the user. 88 """ 89 # Set up unbounded IV loop 90 # self.NX.reverse() 91 for m in range(len(self.X)): 92 # Write Independent variable mark and auxiliary variables 93 var_string="%s " % self.X[m][0] 94 for a in range(self.NAUXV): 95 var_string=var_string+("%s " % self.A[a][m]) 96 self.file.write("%s\n" % var_string.rstrip()) 97 # Write second independant variable and dependant variables 98 var_string="" 99 for p in range(self.NX[m]): 100 #var_string="%s " % self.X[m][1][p] 101 for n in range(self.NV): 102 var_string=var_string+("%s " %self.V[n][m][p]) 103 self.file.write("%s \n" %var_string) -
nappy/trunk/output/out1010.na
r357 r361 1 4 610101 45 1010 2 2 De Rudder, Anne 3 3 Rutherford Appleton Laboratory, Chilton OX11 0QX, UK - Tel.: +44 (0) 1235 445837 … … 32 32 the altitude of 20 km. 33 33 12 34 1235 34 The files included in this data set illustrate each of the 9 NASA Ames file format indices 36 35 (FFI). A detailed description of the NASA Ames format can be found on the Web site of the … … 44 43 Altitude (km) Pressure (mb) [M] (cm-3) < 2 auxiliary dependent variables > 45 44 O2 (cm-3) O3 (cm-3) O(3P) (cm-3) O(1D) (cm-3) < 4 primary dependent variables > 45 46 46 10.0 265.0 8610000.0 47 47 1700000.0 1000000.0 1.3 10000.0 -
nappy/trunk/output/out2010.na
r360 r361 9 9 8 10 10 8 11 11 250.000 200.000 150.000 100.000 70.000 50.000 30.000 10.000 12 12 Pressure levels (mb) 13 13 Time (UT seconds) from 00 hours on launch date -
nappy/trunk/output/out3010.na
r357 r361 9 9 7 4 10 10 1 1 11 -90.00012 50.00011 50.000 12 -90.000 13 13 Latitude (degrees) 14 14 Altitude (km) -
nappy/trunk/output/out4010.na
r357 r361 9 9 13 7 2 10 10 1 1 1 11 -30.00012 13 20.00011 20.000 12 90.000 13 -30.000 14 14 Longitude (degrees) 15 15 Latitude (degrees) -
nappy/trunk/test/testReadAllFFIs.py
r360 r361 27 27 f.readData() 28 28 print "DX:",f.DX 29 print "NX:" ,f.NX 30 print "X:", f.X 29 31 print "VNAME", f.VNAME 30 print "V:",f.V[0] 31 print "NX:" ,f.NX 32 print "V:",f.V[0:] 33 f.getNADict() 34 # print "NNCOML:",f.NNCOML 35 # print "NCOM:",f.NCOM 36 32 37 33 38 if f.NAUXV>0: 34 print "AUX:" 35 print f.ANAME[0] 36 print "scaling factor %s" %f.ASCAL[0] 37 print f.A[0] 38 print f.A[1:] 39 print "AUXs:" 40 print f.ANAME[0:] 41 print "AUX scaling factors %s" %f.ASCAL[0:] 42 print "AUX missing values %s" %f.AMISS[0:] 43 print "AUX lengths %s" %f.LENA 44 print "AUX names %s" %f.ANAME[0:] 45 print f.A[0:] -
nappy/trunk/test/testWrites.py
r357 r361 18 18 import nappy ; reload(nappy) 19 19 20 for ffi in [1001, 1010, 1020, 2010, 3010, 4010]: #18/05/04 selatham 20 for ffi in [1001, 1010, 1020, 2010, 2110, 2160, 2310, 3010, 4010]: 21 #for ffi in [2160]: #testing single format 21 22 infile=os.path.join("..", "data_files", "%s.na" % ffi) 22 23 print "Reading in ", infile … … 31 32 print "\nFile written successfully, so let's open it." 32 33 33 x=nappy.openNAFile(outfile)34 z=nappy.openNAFile(outfile) 34 35 print "variables are:\n" 35 print x.getVariables() 36 print z.getVariables() 37 d2=z.getNADict() 38 z.readData() 39 print "DX:",z.DX 40 print "NX:" ,z.NX 41 print "X:", z.X 42 print "VNAME", z.VNAME 43 print "V:",z.V[0:] 44 print "\n"
Note: See TracChangeset
for help on using the changeset viewer.