source: nappy/trunk/naFile1010.py @ 348

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/nappy/trunk/naFile1010.py@348
Revision 348, 4.2 KB checked in by selatham, 15 years ago (diff)

08/11/04 include Sue Latham's changes for bug fixes and new Write methods.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1"""
2naFile1010.py
3=============
4
5Container module for NAFile1010 class.
6
7"""
8#   Copyright (C) 2004 NERC DataGrid
9#   This software may be distributed under the terms of the
10#   Q Public License, version 1.0 or later. http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt
11
12# 08/05/04 updated by selatham for bug fixes and new write methods
13
14# Imports from python standard library
15
16# Imports from local package
17import naFile1001
18from textParser import *
19
20class NAFile1010(naFile1001.NAFile1001):
21    """
22    Class to read, write and interact with NASA Ames files conforming to the
23    File Format Index (FFI) 1010.
24    """
25
26    def readHeader(self):
27        """
28        Reads FFI-specifc header section.
29        """       
30        self._readCommonHeader()
31        self.DX=readItemsFromLine(self.file.readline(), self.NIV, float)
32        self.XNAME=readItemsFromLines(self._readLines(self.NIV), self.NIV, str)
33        self._readVariablesHeaderSection()
34        self._readAuxVariablesHeaderSection()
35        self._readComments()
36
37    def writeHeader(self):                                                              #08/05/04 selatham
38         """                                                                                    #08/05/04 selatham
39         Writes FFI-specifc header section.                                     #08/05/04 selatham
40         """                                                                                    #08/05/04 selatham
41         self._writeCommonHeader()                                              #08/05/04 selatham
42         self.file.write(("%s "*self.NIV+"\n") % tuple(self.DX))                #08/05/04 selatham
43         self.file.write("%s\n"*self.NIV % tuple(self.XNAME))                   #08/05/04 selatham
44         self._writeVariablesHeaderSection()                                    #08/05/04 selatham
45         self._writeAuxVariablesHeaderSection()                                 #08/05/04 selatham
46         self._writeComments()                                                  #08/05/04 selatham
47
48    def _setupArrays(self):
49        """
50        Sets up FFI-specific arrays to fill with data (lists of lists).
51        """       
52        self.X=[]
53        self.V=[]
54        self.A=[]
55        for n in range(self.NV):
56            self.V.append([])
57        for a in range(self.NAUXV):
58            self.A.append([])
59
60    def _readData1(self, datalines, ivar_count): 
61        """
62        Reads first line/section of current block of data.
63        """
64        # Start with independent and Auxilliary vars
65        (x2_and_a, rtlines)=readItemsFromUnknownLines(datalines, 1+self.NAUXV, float)
66        (x, aux)=(x2_and_a[0], x2_and_a[1:])
67        self.X.append(x)
68        count=0
69        for a in range(self.NAUXV):
70            self.A[a].append(aux[count])
71            count=count+1
72        return rtlines
73   
74    def _readData2(self, datalines, ivar_count):
75        """
76        Reads second line/section (if used) of current block of data.
77        """       
78        # Now get the dependent variables
79        (v, rtlines)=readItemsFromUnknownLines(datalines, self.NV, float)             
80        # Set up mth list in self.V                                                     #08/05/04 selatham
81        # self.V.append([])                                                             #08/05/04 selatham
82        count=0
83        for n in range(self.NV):
84            #self.V[n].append([])                                                               #08/05/04 selatham
85            #self.V[ivar_count].append(v[count])                                        #08/05/04 selatham
86            self.V[n].append(v[count])                                                  #08/05/04 selatham
87            count=count+1
88        return rtlines
89
90    def writeData(self):                                                                        #08/05/04 selatham
91         """                                                                                    #08/05/04 selatham
92         Writes the data section of the file.                                           #08/05/04 selatham
93         This method can be called directly by the user.                        #08/05/04 selatham
94         """                                                                                    #08/05/04 selatham
95         for m in range(len(self.X)):                                                   #08/05/04 selatham
96             # Write Independent variable mark and auxiliary variables          #08/05/04 selatham
97             var_string="%s    " % self.X[m]                                    #08/05/04 selatham
98             for a in range(self.NAUXV):                                                #08/05/04 selatham
99                 var_string=var_string+("%s    " % self.A[a][m])                #08/05/04 selatham
100             self.file.write("%s\n" % var_string.rstrip())                              #08/05/04 selatham
101             # Write dependant variables                                                #08/05/04 selatham
102             var_string=""                                                              #08/05/04 selatham
103             for n in range(self.NV):                                                   #08/05/04 selatham
104                  var_string=var_string+("%s    " %self.V[n][m])                #08/05/04 selatham
105             self.file.write("%s    \n" %var_string)                                    #08/05/04 selatham
Note: See TracBrowser for help on using the repository browser.