source: nappy/trunk/naFile1020.py @ 349

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

Inserted license information.

  • 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 and new write methods
14
15# Imports from python standard library
16
17# Imports from local package
18from textParser import *
19import naFile1010
20
21class NAFile1020(naFile1010.NAFile1010):
22    """
23    Class to read, write and interact with NASA Ames files conforming to the
24    File Format Index (FFI) 1020.
25    """
26
27    def readHeader(self):
28        """
29        Reads FFI-specifc header section.
30        """   
31        self._normalizedX="no"
32        self._readCommonHeader()
33        self.DX=readItemsFromLine(self.file.readline(), self.NIV, float)
34        if self.DX==0:
35            raise "DX found to be zero (0). Not allowed for FFI 1020."
36
37        self.NVPM=readItemFromLine(self.file.readline(), int)
38        self.XNAME=readItemsFromLines(self._readLines(self.NIV), self.NIV, str)
39        self._readVariablesHeaderSection()
40        self._readAuxVariablesHeaderSection()
41        self._readComments()
42 
43    def _readData2(self, datalines, ivar_count):
44        """
45        Reads second line/section (if used) of current block of data.
46        """       
47        # Now get the dependent variables
48        (v, rtlines)=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][ivar_count].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        self.X[0]=newX
67        self._normalizedX="yes"
68
69    def writeData(self):                                                                                        #08/11/04 selatham
70         """                                                                                                    #08/11/04 selatham
71         Writes the data section of the file.                                                           #08/11/04 selatham
72         This method can be called directly by the user.                                        #08/11/04 selatham
73         """                                                                                                    #08/11/04 selatham
74         for m in range(len(self.X)):                                                                   #08/11/04 selatham
75             # Write Independent variable mark and auxiliary variables                          #08/11/04 selatham
76             var_string="%s    " % self.X[m]                                                    #08/11/04 selatham
77             for a in range(self.NAUXV):                                                                #08/11/04 selatham
78                 var_string=var_string+("%s    " % self.A[a][m])                                #08/11/04 selatham
79             self.file.write("%s\n" % var_string.rstrip())                                      #08/11/04 selatham
80             # Write dependant variablesf.                                                              #08/11/04 selatham
81             var_string=""                                                                              #08/11/04 selatham
82             for n in range(self.NV):                                                                   #08/11/04 selatham
83                  var_string=var_string+("%s    " %self.V[n][m])                                #08/11/04 selatham
84             self.file.write("%s    \n" %var_string)                                                    #08/11/04 selatham
85
Note: See TracBrowser for help on using the repository browser.