source: nappy/trunk/nappy/na_file/na_file_1010.py @ 3461

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/nappy/trunk/nappy/na_file/na_file_1010.py@3461
Revision 3461, 3.8 KB checked in by ckilburn, 12 years ago (diff)

delimiter changes

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"""
6naFile1010.py
7=============
8
9Container module for NAFile1010 class.
10
11"""
12
13# 08/05/04 updated by selatham for bug fixes and new write methods
14
15# Imports from python standard library
16
17# Imports from local package
18import nappy.utils.text_parser
19import nappy.na_file.na_file_1001
20
21class NAFile1010(nappy.na_file.na_file_1001.NAFile1001):
22    """
23    Class to read, write and interact with NASA Ames files conforming to the
24    File Format Index (FFI) 1010.
25    """
26
27    def readHeader(self):
28        """
29        Reads FFI-specifc header section.
30        """       
31        self._readCommonHeader()
32        self.DX = nappy.utils.text_parser.readItemsFromLine(self.file.readline(), self.NIV, float)
33        self.XNAME = nappy.utils.text_parser.readItemsFromLines(self._readLines(self.NIV), self.NIV, str)
34        self._readVariablesHeaderSection()
35        self._readAuxVariablesHeaderSection()
36        self._readComments()
37
38    def writeHeader(self):                                                             
39        """                                                                                     
40        Writes FFI-specifc header section.                                     
41        """                                                                                     
42        self._writeCommonHeader()                                               
43        self.header.write(("%s " * self.NIV + "\n") % tuple(self.DX))                   
44        self.header.write("%s\n" * self.NIV % tuple(self.XNAME))                       
45        self._writeVariablesHeaderSection()                                     
46        self._writeAuxVariablesHeaderSection()                                 
47        self._writeComments()                                                   
48        self._fixHeaderLength()
49        self.file.write(self.header.read())
50
51    def _setupArrays(self):
52        """
53        Sets up FFI-specific arrays to fill with data (lists of lists).
54        """       
55        self.X = []
56        self.V = []
57        self.A = []
58
59        for n in range(self.NV):
60            self.V.append([])
61        for a in range(self.NAUXV):
62            self.A.append([])
63
64    def _readData1(self, datalines, ivar_count): 
65        """
66        Reads first line/section of current block of data.
67        """
68        # Start with independent and Auxilliary vars
69        (x2_and_a, rtlines) = nappy.utils.text_parser.readItemsFromUnknownLines(datalines, 1 + self.NAUXV, float)
70        (x, aux) = (x2_and_a[0], x2_and_a[1:])
71        self.X.append(x)
72
73        count = 0
74        for a in range(self.NAUXV):
75            self.A[a].append(aux[count])
76            count = count + 1
77        return rtlines
78   
79    def _readData2(self, datalines, ivar_count):
80        """
81        Reads second line/section (if used) of current block of data.
82        """       
83        # Now get the dependent variables
84        (v, rtlines) = nappy.utils.text_parser.readItemsFromUnknownLines(datalines, self.NV, float)             
85                                       
86        count = 0
87        for n in range(self.NV):                               
88            self.V[n].append(v[count])                                                 
89            count = count + 1
90
91        return rtlines
92
93    def writeData(self):                                                                       
94         """                                                                                   
95         Writes the data section of the file.                                           
96         This method can be called directly by the user.                       
97         """                                                                                   
98         for m in range(len(self.X)):                                                   
99             # Write Independent variable mark and auxiliary variables         
100             var_string = self.format % self.X[m]   
101                                       
102             for a in range(self.NAUXV):                                               
103                 var_string = var_string + (self.format % self.A[a][m])
104       
105             self.file.write("%s\n" % var_string.rstrip(" ,")) 
106                       
107             # Write dependant variables                                               
108             var_string = ""                                                           
109             for n in range(self.NV):                                                   
110                  var_string = var_string + (self.format % self.V[n][m])       
111       
112             self.file.write("%s\n" % var_string.rstrip(' ,'))                                 
Note: See TracBrowser for help on using the repository browser.