source: TI02-CSML/trunk/csml/API/ops_AbstractFeature.py @ 2547

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

basics of QXF subsetting working

Line 
1''' ops_AbstractFeature  contains operations for AbstractFeatures'''
2import string
3import cdtime
4import csml
5import csmlutils
6import MA
7
8def testmethod(self):
9    print 'testmethod for abstract feature'
10    return 'testmethod abstract feature'
11
12def getAllowedSubsettings(self):
13    return ['none']
14
15
16def getDataFromChunks(self, fileList, minIdx, maxIdx):
17    minIndex=minIdx
18    maxIndex=maxIdx
19    data=[]
20    totalarraylength = 0   
21    for file in fileList:
22        DI=csml.csmllibs.csmldataiface.DataInterface()
23        DI=DI.getUnknownInterfaceType(file) 
24        DI.openFile(file)
25        DI.setVariable(self.name.CONTENT)
26        datachunk=DI.getDataForVar()       
27        chunklength=len(datachunk)
28        startpoint=totalarraylength
29        totalarraylength=totalarraylength +chunklength
30               
31        if minIndex >= totalarraylength:
32            #print 'before selection, skipping %s'%file
33            continue
34       
35        elif minIndex < totalarraylength:
36            if minIndex >= startpoint:
37                sliceMin=minIndex-startpoint
38                #print 'selection starts in %s at index %s'%(file, sliceMin)
39                if maxIndex < totalarraylength:
40                    #print 'selection self contained in %s'%file
41                    sliceMax=sliceMin + (maxIndex-minIndex) +1
42                    data=datachunk[sliceMin:sliceMax]
43                    continue
44                else:
45                    #print 'selection goes beyond this file'
46                    data.append(datachunk[sliceMin: len(datachunk)])
47                    continue
48       
49        if maxIndex  < startpoint:
50            #print 'gone past end of selection, skipping %s'%file
51            continue
52        elif maxIndex >= totalarraylength:
53            #get the whole chunk
54            data.append(datachunk)
55            continue
56       
57        elif maxIndex <= totalarraylength:     
58            sliceMax=(maxIndex-startpoint) +1
59            data.append(datachunk[0:sliceMax])
60            continue   
61    try:
62        result=MA.concatenate(data)
63    except:
64        result =data
65    return result
66   
67
68
69
Note: See TracBrowser for help on using the repository browser.