source: TI02-CSML/trunk/csml/API/ops_FileExtract.py @ 2215

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI02-CSML/trunk/csml/API/ops_FileExtract.py@2215
Revision 2215, 2.5 KB checked in by domlowe, 13 years ago (diff)

adding online parser to svn

Line 
1''' ops_AbstractFileExtract  contains operations for AbstractFileExtracts'''
2import csml.csmllibs.csmldataiface
3import sys
4import Numeric
5
6
7class DataContainer(object):
8    #dataArray needs to be the standards data container   
9    def __init__(self, data=None):
10        self.dataArray=None
11        if data is not None:
12            self.data=data
13            self.setup()
14   
15    def setup(self):
16        self.dataArray=Numeric.array(self.data)
17       
18        #try:
19            #self.dataArray=self.data.tolist()
20        #except:
21            #self.dataArray=self.data
22     
23
24       
25def testmethod(self):
26    print 'testmethod for AbstractFileExtract feature'
27    return 'testmethod AbstractFileExtract'
28
29
30def getAxisInfo(self, varName):
31    pass
32
33def getData(self,  fileposition=None,**kwargs):
34    #file position defines the position of the filename if a list of filenames exists
35    #**kwargs can hold subsetting request.
36    #print fileposition
37    #print self.fileName
38   
39    #get the right file  ##TO DO< check this is ok with FILE LIST
40    if fileposition is not None:
41        file =self.fileList.fileNames.CONTENT.split()[fileposition]
42        #file=self.fileName.CONTENT.split()[fileposition]
43    else:
44        file=self.fileName.CONTENT
45    #open the file
46    DI = csml.csmllibs.csmldataiface.DataInterface()
47    DI=DI.getUnknownInterfaceType(file)
48    DI.openFile(file)
49    DI.setAxis(self.variableName.CONTENT)
50    try:
51        DI.setAxis(self.variableName.CONTENT)
52        data=DI.getDataForAxis()
53        dataArray=data
54        fillvalue=None
55        axisorder=None
56        units=None
57    except:
58        DI.setVariable(self.variableName.CONTENT)
59        #get fill value (if there is one)   
60        fillvalue=DI.getVariableAttribute('_FillValue')
61        if kwargs:
62            print 'subsetting'
63            data = DI.getSubsetOfDataForVar(**kwargs)
64        else:
65            print 'non subsetting'
66            data = DI.getDataForVar()
67        DC=DataContainer(data)
68        dataArray=DC.dataArray
69        units=[]
70        axisorder=DI.getVariableAxes()
71        for axis in axisorder:   
72            DI.setAxis(axis)
73            units.append(DI.getAxisAttribute('units'))
74    DI.closeFile()
75    return dataArray, fillvalue, axisorder, units
76       
77def __calendar(file,timedim):
78    #open the file
79    DI = csmldataiface.DataInterface()
80    DI=DI.getUnknownInterfaceType(file)
81    DI.openFile(file)
82    DI.setAxis(timedim)
83    cal=DI.getAxisAttribute('calendar')
84    units=DI.getAxisAttribute('units')
85    return cal, units
86   
Note: See TracBrowser for help on using the repository browser.