Changeset 361


Ignore:
Timestamp:
13/01/05 16:03:52 (15 years ago)
Author:
selatham
Message:

bug fixes, write classes and other new classes as required.

Location:
nappy/trunk
Files:
3 added
11 edited

Legend:

Unmodified
Added
Removed
  • nappy/trunk/data_files/1010.na

    r347 r361  
    1 46  1010 
     145  1010 
    22De Rudder, Anne 
    33Rutherford Appleton Laboratory, Chilton OX11 0QX, UK - Tel.: +44 (0) 1235 445837 
     
    3131is also used to give account for the fact that there is virtually no O(1D) present below 
    3232the altitude of 20 km. 
    33 12 
    343312 
    3534The files included in this data set illustrate each of the 9 NASA Ames file format indices 
  • nappy/trunk/general.py

    r349 r361  
    2222# Imports from local package 
    2323import naFile, naFile1001, naFile1010, naFile1020, naFile2010 
    24 import naFile2110, naFile2110, naFile2160, naFile2310 
     24import naFile2110, naFile2160, naFile2310 
    2525import naFile3010, naFile4010 
    2626 
     
    5252    elif d["NIV"]==3:     # 3 independent variables 
    5353        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 
    6579    elif d["NIV"]==1:     # 1 independent variable 
    6680        # Three choices here:   1001 - No auxiliary variables 
     
    7488            return 1010 
    7589    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." 
    7891 
    7992 
  • nappy/trunk/naFile2110.py

    r349 r361  
    2626        """ 
    2727        Reads FFI-specifc header section. 
    28         """      
     28        """ 
    2929        self._readCommonHeader() 
    3030        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 
    3232        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 
    3434        self._readVariablesHeaderSection() 
    3535        self._readAuxVariablesHeaderSection() 
    3636        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() 
    3750 
    3851    def _setupArrays(self): 
     
    4457        self.X=[]  # Needs to be a list of sublists each containing [x0n, [x1n, x1n+1, x1n+2....]] 
    4558        self.NX=[] 
    46   
     59 
    4760        for n in range(self.NV): 
    4861            self.V.append([]) 
    4962        for i in range(self.NAUXV): 
    50             self.A.append([]) 
     63           self.A.append([]) 
    5164 
    5265    def _readData1(self, datalines, ivar_count):  
     
    5770        (x_and_a, rtlines)=readItemsFromUnknownLines(datalines, self.NAUXV+1, float) 
    5871        (x, aux)=(x_and_a[0], x_and_a[1:]) 
     72        count=0 
    5973        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]) 
    6178        self.X.append([]) 
    6279        self.X[ivar_count].append(x) 
     
    6582        self.NX.append(int(aux[0])) 
    6683        return rtlines 
    67     
     84 
    6885    def _readData2(self, datalines, ivar_count): 
    6986        """ 
    7087        Reads second line/section (if used) of current block of data. 
    71         """         
     88        """ 
    7289        # Now get the dependent variables 
    7390        for n in range(self.NV): 
     
    83100        rtlines=datalines 
    84101        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  
    2626        """ 
    2727        Reads FFI-specifc header section. 
    28         """         
     28        """ 
    2929        self._normalizedX="no" 
    3030        self._readCommonHeader() 
     
    3232        self.LENX=readItemFromLine(self.file.readline(), float) 
    3333        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 
    3535        self._readVariablesHeaderSection() 
    3636        self._readCharAuxVariablesHeaderSection() 
    3737        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)) 
    3866 
    3967    def _setupArrays(self): 
     
    5886        # Get character string independent variable 
    5987        (x1, datalines)=readItemsFromUnknownLines(datalines, 1, str) 
    60         self.X.append([]) 
    61         self.X[ivar_count].append(x1) 
     88        self.X.append([]) 
     89        self.X[ivar_count].append(x1[0]) 
    6290        # Set up list to take second changing independent variable 
    6391        self.X[ivar_count].append([])   
     
    6593        (aux, datalines)=readItemsFromUnknownLines(datalines, (self.NAUXV-self.NAUXC), float) 
    6694        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 
    6999        # Get character AUX vars 
    70100        (auxc)=readItemsFromLines(datalines[:self.NAUXC], self.NAUXC, str) 
    71101        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 
    74106        return rtlines 
    75107     
     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  
    3535        self._readAuxVariablesHeaderSection() 
    3636        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): 
    3952        """ 
    4053        Reads first line/section of current block of data. 
     
    4356        (x_and_a, rtlines)=readItemsFromUnknownLines(datalines, self.NAUXV+1, float) 
    4457        (x, aux)=(x_and_a[0], x_and_a[1:]) 
     58        count=0 
    4559        for a in range(self.NAUXV): 
    46             self.A.append(aux[a]) 
     60            self.A[a].append(aux[count]) 
     61            count=count+1 
    4762        self.X.append([]) 
    4863        self.X[ivar_count].append(x) 
    4964        # 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]]) 
    5166        self.NX.append(int(aux[0])) 
    5267        self.DX.append(int(aux[2])) 
     
    6681                count=count+1 
    6782        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 46    1010 
     145    1010 
    22De Rudder, Anne 
    33Rutherford Appleton Laboratory, Chilton OX11 0QX, UK - Tel.: +44 (0) 1235 445837 
     
    3232the altitude of 20 km. 
    333312 
    34 12 
    3534The files included in this data set illustrate each of the 9 NASA Ames file format indices 
    3635(FFI). A detailed description of the NASA Ames format can be found on the Web site of the 
     
    4443Altitude (km) Pressure (mb)    [M] (cm-3)                 < 2 auxiliary dependent variables > 
    4544O2 (cm-3)     O3 (cm-3)  O(3P) (cm-3)  O(1D) (cm-3)   < 4 primary dependent variables > 
     45 
    464610.0    265.0    8610000.0 
    47471700000.0    1000000.0    1.3    10000.0         
  • nappy/trunk/output/out2010.na

    r360 r361  
    998  
    10108  
    11  250.000     200.000     150.000     100.000      70.000      50.000      30.000      10.000     
     11250.000     200.000     150.000     100.000      70.000      50.000      30.000      10.000     
    1212Pressure levels (mb) 
    1313Time (UT seconds) from 00 hours on launch date 
  • nappy/trunk/output/out3010.na

    r357 r361  
    997 4  
    10101 1  
    11  -90.000     
    12   50.000     
     1150.000     
     12-90.000     
    1313Latitude (degrees) 
    1414Altitude (km) 
  • nappy/trunk/output/out4010.na

    r357 r361  
    9913 7 2  
    10101 1 1  
    11  -30.000     
    12   90.000     
    13   20.000     
     1120.000     
     1290.000     
     13-30.000     
    1414Longitude (degrees) 
    1515Latitude (degrees) 
  • nappy/trunk/test/testReadAllFFIs.py

    r360 r361  
    2727    f.readData() 
    2828    print "DX:",f.DX 
     29    print "NX:" ,f.NX 
     30    print "X:", f.X 
    2931    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 
    3237 
    3338    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  
    1818import nappy ; reload(nappy) 
    1919 
    20 for ffi in [1001, 1010, 1020, 2010, 3010, 4010]:                                        #18/05/04 selatham 
     20for ffi in [1001, 1010, 1020, 2010, 2110, 2160, 2310, 3010, 4010]: 
     21#for ffi in [2160]:                                     #testing single format 
    2122    infile=os.path.join("..", "data_files", "%s.na" % ffi) 
    2223    print "Reading in ", infile 
     
    3132    print "\nFile written successfully, so let's open it." 
    3233 
    33     x=nappy.openNAFile(outfile) 
     34    z=nappy.openNAFile(outfile) 
    3435    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.