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

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

more fixes to do with various subsetting options

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