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

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

Fixed some bad imports in main na_file modules.

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# Imports from python standard library
14
15
16# Imports from local package
17import nappy.utils.text_parser
18import nappy.na_file.na_file_1010
19
20class NAFile1020(nappy.na_file.na_file_1010.NAFile1010):
21    """
22    Class to read, write and interact with NASA Ames files conforming to the
23    File Format Index (FFI) 1020.
24    """
25
26    def readHeader(self):
27        """
28        Reads FFI-specifc header section.
29        """   
30        self._normalized_X = False
31        self._readCommonHeader()
32        self.DX = nappy.utils.text_parser.readItemsFromLine(self.file.readline(), self.NIV, float)
33        if self.DX == 0:
34            raise "DX found to be zero (0). Not allowed for FFI 1020."
35
36        self.NVPM = nappy.utils.text_parser.readItemFromLine(self.file.readline(), int)
37        self.XNAME = nappy.utils.text_parser.readItemsFromLines(self._readLines(self.NIV), self.NIV, str)
38        self._readVariablesHeaderSection()
39        self._readAuxVariablesHeaderSection()
40        self._readComments()
41 
42    def _readData2(self, datalines, ivar_count):
43        """
44        Reads second line/section (if used) of current block of data.
45        """
46        # Now get the dependent variables
47        raise "I need tidying up as my indentation is wrong! - 1020._readData2!"
48        (v, rtlines) = nappy.utils.text_parser.readItemsFromUnknownLines(datalines, self.NV * self.NVPM, float)             
49        count = 0
50        for n in range(self.NV):
51            #self.V[n].append([])
52            for i in range(self.NVPM):   # Number of steps where independent variable is implied
53                self.V[n].append(v[count])                                             
54                count = count + 1                                                                               
55        return rtlines
56
57    def _normalizeIndVars(self):
58        """
59        Normalizes the values in the unbounded independent variable for FFIs
60        that store an abbreviated version of this axis.
61        """
62        newX = []
63        for x in self.X[0]:
64            for i in range(self.NVPM):
65                newX.append(x + (i * self.DX))
66
67        self.X[0] = newX
68        self._normalized_X = True
69
70    def writeHeader(self):                                                                             
71        """                                                                                                     
72        Writes FFI-specifc header section.                                             
73        """                                                                                             
74        self._writeCommonHeader()                                                               
75        self.header.write(("%s " * self.NIV + "\n") % tuple(self.DX))                                   
76        self.header.write(("%s\n") %self.NVPM)                                                 
77        self.file.write("%s\n" * self.NIV % tuple(self.XNAME))                                 
78        self._writeVariablesHeaderSection()                                             
79        self._writeAuxVariablesHeaderSection()                                                 
80        self._writeComments()                                                           
81        lines = self._fixHeaderLength(self.header)
82        self.file.writelines(lines)
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         for m in range(len(self.X)):                                                                   
90            # Write Independent variable mark and auxiliary variables                           
91            var_string = "%s    " % self.X[m]           
92                                               
93            for a in range(self.NAUXV):                                                                 
94                var_string = var_string + ("%s    " % self.A[a][m])   
95                       
96            self.file.write("%s\n" % var_string.rstrip())       
97                               
98            # Write dependant variables.                                                                                                                                               
99            count = 0                                                                                   
100            for n in range(self.NV):                                                                   
101                var_string = "" 
102                                                                       
103                for p in range(self.NVPM):                                                             
104                    var_ind = (m * self.NVPM) + p                                                       
105                    var_string = var_string + ("%s    " %self.V[n][var_ind])           
106                    count = count + 1   
107                                                               
108                self.file.write("%s    \n" %var_string)                                                 
109
Note: See TracBrowser for help on using the repository browser.