source: nappy/trunk/naFile1020.py @ 354

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

write method for 1020. removed stray testfile.

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