source: nappy/trunk/naFile1020.py @ 348

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

08/11/04 include Sue Latham's changes for bug fixes and new Write methods.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1"""
2naFile1020.py
3=============
4
5Container module for NAFile1020 class.
6
7"""
8#   Copyright (C) 2004 NERC DataGrid
9#   This software may be distributed under the terms of the
10#   Q Public License, version 1.0 or later.  http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt
11
12# 08/05/04 updated by selatham for bug fixes and new write methods
13
14# Imports from python standard library
15
16# Imports from local package
17from textParser import *
18import naFile1010
19
20class NAFile1020(naFile1010.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._normalizedX="no"
31        self._readCommonHeader()
32        self.DX=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=readItemFromLine(self.file.readline(), int)
37        self.XNAME=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        (v, rtlines)=readItemsFromUnknownLines(datalines, self.NV*self.NVPM, float)             
48        count=0
49        for n in range(self.NV):
50            self.V[n].append([])
51            for i in range(self.NVPM):   # Number of steps where independent variable is implied
52                self.V[n][ivar_count].append(v[count])
53            count=count+1
54        return rtlines
55
56    def _normalizeIndVars(self):
57        """
58        Normalizes the values in the unbounded independent variable for FFIs
59        that store an abbreviated version of this axis.
60        """
61        newX=[]
62        for x in self.X[0]:
63            for i in range(self.NVPM):
64                newX.append(x+(i*self.DX))
65        self.X[0]=newX
66        self._normalizedX="yes"
67
68    def writeData(self):                                                                                        #08/11/04 selatham
69         """                                                                                                    #08/11/04 selatham
70         Writes the data section of the file.                                                           #08/11/04 selatham
71         This method can be called directly by the user.                                        #08/11/04 selatham
72         """                                                                                                    #08/11/04 selatham
73         for m in range(len(self.X)):                                                                   #08/11/04 selatham
74             # Write Independent variable mark and auxiliary variables                          #08/11/04 selatham
75             var_string="%s    " % self.X[m]                                                    #08/11/04 selatham
76             for a in range(self.NAUXV):                                                                #08/11/04 selatham
77                 var_string=var_string+("%s    " % self.A[a][m])                                #08/11/04 selatham
78             self.file.write("%s\n" % var_string.rstrip())                                      #08/11/04 selatham
79             # Write dependant variablesf.                                                              #08/11/04 selatham
80             var_string=""                                                                              #08/11/04 selatham
81             for n in range(self.NV):                                                                   #08/11/04 selatham
82                  var_string=var_string+("%s    " %self.V[n][m])                                #08/11/04 selatham
83             self.file.write("%s    \n" %var_string)                                                    #08/11/04 selatham
84
Note: See TracBrowser for help on using the repository browser.