source: nappy/trunk/nappy/na_file/na_file_1020.py @ 3349

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/nappy/trunk/nappy/na_file/na_file_1020.py@3349
Revision 3349, 4.1 KB checked in by astephen, 12 years ago (diff)

Tidied some variable names and boolean types.

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
19import utils.text_parser
20import nappy.na_file.na_file_1010
21
22class NAFile1020(nappy.na_file.na_file_1010.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._normalized_X = False
33        self._readCommonHeader()
34        self.DX = utils.text_parser.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 = utils.text_parser.readItemFromLine(self.file.readline(), int)
39        self.XNAME = utils.text_parser.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        raise "I need tidying up as my indentation is wrong! - 1020._readData2!"
50        (v, rtlines) = utils.text_parser.readItemsFromUnknownLines(datalines, self.NV * self.NVPM, float)             
51        count = 0
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])                                          removed
56                self.V[n].append(v[count])                                                               added
57                count = count + 1                                                                               
58        return rtlines
59
60    def _normalizeIndVars(self):
61        """
62        Normalizes the values in the unbounded independent variable for FFIs
63        that store an abbreviated version of this axis.
64        """
65        newX = []
66        for x in self.X[0]:
67            for i in range(self.NVPM):
68                newX.append(x + (i * self.DX))
69
70        self.X[0] = newX
71        self._normalized_X = True
72
73    def writeHeader(self):                                                                             
74        """                                                                                                     
75        Writes FFI-specifc header section.                                             
76        """                                                                                             
77        self._writeCommonHeader()                                                               
78        self.header.write(("%s " * self.NIV + "\n") % tuple(self.DX))                                   
79        self.header.write(("%s\n") %self.NVPM)                                                 
80        self.file.write("%s\n" * self.NIV % tuple(self.XNAME))                                 
81        self._writeVariablesHeaderSection()                                             
82        self._writeAuxVariablesHeaderSection()                                                 
83        self._writeComments()                                                           
84        lines = self._fixHeaderLength(self.header)
85        self.file.writelines(lines)
86
87    def writeData(self):                                                                               
88         """                                                                                                   
89         Writes the data section of the file.                                                           
90         This method can be called directly by the user.                                       
91         """                                                                                                   
92         for m in range(len(self.X)):                                                                   
93            # Write Independent variable mark and auxiliary variables                           
94            var_string = "%s    " % self.X[m]           
95                                               
96            for a in range(self.NAUXV):                                                                 
97                var_string = var_string + ("%s    " % self.A[a][m])   
98                       
99            self.file.write("%s\n" % var_string.rstrip())       
100                               
101            # Write dependant variables.                                                                                                                                               
102            count = 0                                                                                   
103            for n in range(self.NV):                                                                   
104                var_string = "" 
105                                                                       
106                for p in range(self.NVPM):                                                             
107                    var_ind = (m * self.NVPM) + p                                                       
108                    var_string = var_string + ("%s    " %self.V[n][var_ind])           
109                    count = count + 1   
110                                                               
111                self.file.write("%s    \n" %var_string)                                                 
112
Note: See TracBrowser for help on using the repository browser.