Changeset 57


Ignore:
Timestamp:
06/02/06 10:19:54 (14 years ago)
Author:
domlowe
Message:

some minor bug fixes

Location:
CSML/trunk/Coapec
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • CSML/trunk/Coapec/csmllibs/csmldataiface.py

    r56 r57  
    4040                elif fileExtension == '.pp': 
    4141                        return cdunifInterface() 
    42                 elif fileExtension == 'grb': 
     42                elif fileExtension == 'ctl': 
    4343                        return cdunifInterface() 
    4444                else: 
     
    7979                                          
    8080        def openFile(self, filename): 
     81                print 'opening NA file: ' + str(filename) 
    8182                self.file=nappy.openNAFile(filename) 
    82                 self.file.readData() 
     83                #print 'reading data....' 
     84                #self.file.readData() 
    8385                print 'nappyopen ' + filename 
    8486         
     
    106108         
    107109        def getDataForAxis(self): 
    108                 #print "self.file.X" +str(self.file.X) 
     110 
     111                if self.file.X == None: 
     112                        #print 'reading data....' 
     113                        self.file.readData() 
     114                                                 
    109115                if type(self.file.X[1])==list: 
    110116                #if len(self.file.X) > 0: 
     
    160166         
    161167        def getDataForVar(self): 
    162                  
     168                if self.file.V == None: 
     169                        #print 'reading data....' 
     170                        self.file.readData() 
     171                                 
    163172                if type(self.file.V[1])==list: 
    164173                        data = self.file.V[self.varstub] 
     
    279288        def setAxis(self,axis): 
    280289                self.axisobj=self.file.getAxis(axis) 
    281                                  
     290                                                                                         
    282291        def getAxisAttribute(self, att): 
    283292                attValue=self.axisobj.attributes[att] 
     
    287296                #this does the same as getAxisAttribute, but is a separate function as different formats handle time differently. 
    288297                return self.getAxisAttribute('units') 
    289          
    290          
     298                 
    291299        def getDataForAxis(self): 
    292300                data = self.axisobj.getValue() 
  • CSML/trunk/Coapec/csmllibs/csmldataset.py

    r55 r57  
    55import csmllibs 
    66 
    7 class csmlDataset: 
     7class csmlDatasetMaker: 
    88        def __init__ (): 
    99                #what arguments do we want here? 
     
    1616        def createDocument(): 
    1717                #creates CSML Document with dataset element 
    18                 self.csmldoc, self.dataset_element = csmllibs.csmlmeta.createDataset(): 
     18                self.csmldoc, self.dataset_element = csmllibs.csmlmeta.createDataset() 
    1919         
    2020        def createGMLMetaData(): 
  • CSML/trunk/Coapec/csmllibs/csmldirectory.py

    r51 r57  
    1010        def setTopDirectory(self,top): 
    1111                self.topdir=top 
     12 
     13        def readSubDir(self, subdir):    
     14                for item in os.listdir(subdir): 
     15                        #print os.path.join(subdir, item) 
     16                        if os.path.isfile(os.path.join(subdir,item)): 
     17                                #print 'file: '+ item 
     18                                pass 
     19                        else: 
     20                                self.subdirlist.append(os.path.join(subdir, item)) 
     21                                self.readSubDir(os.path.join(subdir, item)) 
     22                #subdircount=len(self.subdirlist) 
     23                #print subdircount 
     24 
    1225                 
    1326        def readDirectory(self): 
     
    1932                        else: 
    2033                                self.subdirlist.append(os.path.join(self.topdir, item)) 
    21                                                          
    22                 for subdir in self.subdirlist[1:]:  #for each subdir, slipping top dir. 
    23                         for item in os.listdir(subdir):                          
    24                                 if os.path.isfile(os.path.join(subdir,item)): 
    25                                         pass 
    26                                 else: 
    27                                         self.subdirlist.append(os.path.join(subdir, item)) 
    28                                          
     34                                self.readSubDir(os.path.join(self.topdir, item)) 
     35                print "total" 
     36                counter = len(self.subdirlist)   
     37                print counter 
     38#               print str(self.subdirlist) 
     39                         
     40         
     41 
     42                                 
     43                                 
     44        #       subdircount=len(self.subdirlist) 
     45        #       newsubdircount=0 
    2946                 
     47        #       #keep traversing deeper subdirectories till there are no more depths to traverse. 
     48        #       while subdircount != newsubdircount: 
     49        #               subdircount = len(self.subdirlist) 
     50        #               for subdir in self.subdirlist[1:]:  #for each subdir, skipping top dir. 
     51        #               #       print str(subdir) 
     52        #               #       print "item:" + str(item) 
     53        #                        
     54        #                       errorlist = [] 
     55        #                       try: 
     56        #                               contents=os.listdir(subdir) 
     57        #                       except: 
     58        #                               errorlist.append(subdir) 
     59        #                        
     60        #                       for item in contents:            
     61        #                               print str(os.path.join(subdir,item))             
     62        #                               if os.path.isfile(os.path.join(subdir,item)): 
     63        #                                       pass 
     64        #                               else: 
     65        #                                       self.subdirlist.append(os.path.join(subdir, item)) 
     66        #               newsubdircount = len(self.subdirlist) 
     67        #               print "number of subdirectories: " + str(newsubdircount) 
     68        #                                
     69        #               print errorlist 
     70         
     71 
    3072        def getSubDirectories(self): 
    3173                sublist = self.subdirlist 
     
    86128        elif fileExtension == '.pp': 
    87129                supported = True 
    88         elif fileExtension == 'grb': 
     130        elif fileExtension == 'ctl': 
    89131                supported = True 
    90132        elif nappy.readFFI(filename) in [1001,1010,1020,2010,2110,2160,2310,3010,4010]: 
  • CSML/trunk/Coapec/csmllibs/csmlfeaturetypes.py

    r56 r57  
    2020         
    2121        representativeFiles=ffmap.getRepresentativeFiles() 
    22         print "LENGTH" 
    23         print len(representativeFiles) 
    2422        for repfile in representativeFiles: 
    2523                listOfFiles=[] 
     
    3028                        fname = f.getRelatedFileName() 
    3129                        listOfFiles.append(fname) 
    32                                  
    33                 print "HELLOP" 
    34                 print listOfFiles 
     30 
    3531         
    3632                #THIS IS THE REALLY SLOW FUNCTION CALL!!!!!######################### 
     
    229225                        #close open file 
    230226                         
    231                          
    232  
    233227                DI.closeFile() 
    234228         
     
    236230        return csmldoc, dataset_element, gml_FeatureCollection_element   
    237231                         
    238                  
    239232 
    240233######################################################################### 
     
    252245                        fname = f.getRelatedFileName() 
    253246                        listOfFiles.append(fname) 
     247                print listOfFiles 
    254248                 
    255249        for file in listOfFiles: 
    256250                DI = csmllibs.csmldataiface.DataInterface() 
    257251                DI=DI.getUnknownInterfaceType(file) 
     252                print'opening file' 
    258253                DI.openFile(file) 
     254                print 'getting variables' 
    259255                allVarNames=DI.getListofVariables() 
     256                print 'getting feature count' 
    260257                numFeatures=len(allVarNames)     
    261258                 
     
    281278                        #*********************************************************************** 
    282279                        domainReference_element=csmldoc.createElement("domainReference") 
    283                         #trajectory_element=csmldoc.createElement("Trajectory") 
     280                        #orientedPosition_element=csmldoc.createElement("OrientedPosition") 
    284281                        #locations_element=csmldoc.createElement("locations") 
    285282                        #times_element=csmldoc.createElement("times") 
    286283                        #trajectory_element.appendChild(locations_element) 
    287284                        #trajectory_element.appendChild(times_element) 
    288                         #domainReference_element.appendChild(trajectory_element) 
     285                        #domainReference_element.appendChild(orientedPosition_element) 
    289286                         
    290287                        #gml_timePositionList_element = csmldoc.createElement("gml:TimePositionList") 
  • CSML/trunk/Coapec/csmllibs/csmlfileextracts.py

    r53 r57  
    77 
    88def createFileExtracts(csmldoc, dataset_element, ffmap): 
     9         
     10        print "REPRESENTATIVE FILES:" 
     11        print ffmap.getRepresentativeFiles() 
     12         
    913        #given a featurefilemap object, create file extracts from the "representativeFiles"      
    1014        #used to store extract/filename/variable relationship 
  • CSML/trunk/Coapec/csmllibs/csmlfiles.py

    r53 r57  
    66 
    77class FileMapMaker: 
    8         #uber class which handles the lower level featurefilemap and directorytree classes 
     8        # class which handles the lower level featurefilemap and directorytree classes 
    99        #to build a featurefilemap object of featuretypes/files. 
     10        #current relationships are onetomany, onetoone and mixedft, 
     11        #but others could be created 
    1012        def __init__(self,topdirectory, ftorftdictionary): 
    1113                self.topdir=topdirectory 
     
    2729                 
    2830                for dir in subdirs: 
    29                          
    3031                        file=tree.getFirstInSubDir(dir) 
     32                        if file == None: 
     33                                continue 
    3134                        #create representative file 
    3235                        repfile=csmllibs.csmlfeaturefilemap.representativeFile(file) 
    3336                        repfile.setFeatureType(self.ft) 
    3437                        try: 
     38                                print dir 
    3539                                otherfiles=tree.getAllCSMLFilesExceptFirst(dir) 
    3640                                errtest=otherfiles[0] 
     
    6569                                ffmap.addRepresentativeFile(repfile) 
    6670                return ffmap     
    67                          
    68                          
    6971         
    7072        def mixedft(self): 
  • CSML/trunk/Coapec/csmllibs/csmltime.py

    r54 r57  
    163163                print DI.getListOfAxes() 
    164164                print DI.getListofVariables() 
     165                 
    165166                try: 
    166167                        DI.setAxis(timedim) 
  • CSML/trunk/Coapec/csmlscan.py

    r56 r57  
    9292         
    9393""" 
    94  
    95          
    96  
    97  
    98                  
    99  
    100  
    101  
    102                  
    103  
    104 #maybe these functions don't need to be here.. 
    105 #put in csml extra? 
    106  
    107  
    108 def getArraySize(ncvar): 
    109         #iterates through all dimensions in variable to get array size. 
    110         var = ncvar      
    111         size = var.shape 
    112         varsize = 1 
    113         for item in size: 
    114                 varsize = item *varsize 
    115         return varsize 
    116  
    117  
    118  
    119  
    120 def index(directory,recurse): 
    121         # traverses directory trees, returns list of netcdf files with full path. 
    122         #if recurse == 0 then indexing is non-recursive (only files in first directory are indexed) 
    123         stack = [directory] 
    124         files = [] 
    125         recursive = recurse 
    126         while stack: 
    127                 directory = stack.pop() 
    128                 for file in os.listdir(directory): 
    129                         fullname = os.path.join(directory, file) 
    130                         if file[0] == '.': 
    131                                 #file is in hidden directory, don't process 
    132                                 continue 
    133                         if fullname.endswith('.nc'): 
    134                                 files.append(fullname) 
    135                         elif fullname.endswith('.pp'): 
    136                                 files.append(fullname) 
    137                         elif fullname.endswith('.hdf'): 
    138                                 files.append(fullname) 
    139                         elif fullname.endswith('.grb'): 
    140                                 files.append(fullname) 
    141                         if recursive == 1: 
    142                                 if os.path.isdir(fullname) and not os.path.islink(fullname): 
    143                                         stack.append(fullname) 
    144  
    145         return files 
    146  
    147                  
    148 def shortfilename(fullname): 
    149         #returns the file name only from a full path 
    150         filename=os.path.basename(fullname) 
    151         return filename 
    152  
    153 def relativepath(fullname,directory): 
    154         #returns path and filename relative to directory 
    155         #eg  relativepath("/home/users/me/csmldata/directorya/directorya1/directorya2/file.nc", "/home/users/me/csmldata") 
    156         #will return "directorya/directorya1/directorya2/file.nc" 
    157         snip = len(directory) 
    158         relpath = fullname[snip:] 
    159         return relpath 
    160  
    161  
    162  
    16394 
    16495 
     
    199130 
    200131 
    201  
    202  
    203 # REPLACE All this with csmldirectory object: 
    204 #-------------------------------------------- 
    205 #if directory != None:   
    206 #       dataentity = directory 
    207 #       print "Creating CSML document for " + dataentity 
    208 #       #file args list should be contents (netcdf/pp etc) of the directory: 
    209 #       args = index(directory, recursive) 
    210 #else: 
    211 #       print "Directory not provided, please use -d [nameofdirectory]" 
    212 #       sys.exit() 
    213          
    214                          
    215 ##get list of all filenames  (keep as global) 
    216 #allFileNames = [] 
    217 #print "Getting list of filenames" 
    218 #for i in range(0, len(args)): 
    219 #       allFileNames.append(relativepath(args[i],directory)) 
    220          
    221132#----------------------------------------------------------- 
    222133 
     
    224135 
    225136dataentity=directory #dataentity stringneeded for metadata       
    226 tree = csmllibs.csmldirectory.DirectoryTree() 
    227 tree.setTopDirectory(directory) 
    228 tree.readDirectory() 
    229 allFileNames=tree.getAllCSMLSupportedFiles 
     137#print "1" 
     138#tree = csmllibs.csmldirectory.DirectoryTree() 
     139#print "2" 
     140#tree.setTopDirectory(directory) 
     141#print "3" 
     142#tree.readDirectory() 
     143#print "4" 
     144#allFileNames=tree.getAllCSMLSupportedFiles 
    230145 
    231146                 
     
    262177    fmm = csmllibs.csmlfiles.FileMapMaker(dataentity,csmlfeaturetype) 
    263178    ffmap = fmm.onetoone() #assumption! 
    264     print "creating file extracts" 
    265     csml, ds_element, extractType, extractPrefix, extractDictionary = csmllibs.csmlfileextracts.createFileExtracts(csml, ds_element, ffmap) 
     179   # print "creating file extracts" 
     180    #csml, ds_element, extractType, extractPrefix, extractDictionary = csmllibs.csmlfileextracts.createFileExtracts(csml, ds_element, ffmap) 
    266181    print 'creating feature collection' 
    267182    csml,gml_FeatureCollection=csmllibs.csmlmeta.createFeatureCollection(csml) 
     
    306221        csml=createCSMLProfileSeriesFeature()    
    307222elif csmlfeaturetype == "GridSeriesFeature": 
    308         print"creating dataset -GridSeriesFeature" 
    309         csml, ds_element = csmllibs.csmlmeta.createDataset() 
    310         print "adding GML metadata" 
    311         csml, ds_element = csmllibs.csmlmeta.addGMLMetadata(csml, dataentity, ds_element) 
    312         print "creating filemap" 
    313         fmm = csmllibs.csmlfiles.FileMapMaker(dataentity,csmlfeaturetype) 
    314         ffmap = fmm.onetomany() # suitable for gridseries features.  
    315         print "creating file extracts" 
    316         csml, ds_element, extractType, extractPrefix, extractDictionary = csmllibs.csmlfileextracts.createFileExtracts(csml, ds_element, ffmap) 
    317         print 'creating feature collection' 
    318         csml,gml_FeatureCollection=csmllibs.csmlmeta.createFeatureCollection(csml) 
    319         print "creating features" 
    320         csml, dataset, gml_FeatureCollection = csmllibs.csmlfeaturetypes.createCSMLGridSeriesFeatures(csml, ds_element,gml_FeatureCollection,extractType, extractPrefix, ffmap, extractDictionary,timedimension) 
    321         print "closing feature collection" 
    322         ds_element=csmllibs.csmlmeta.closeFeatureCollection(ds_element,gml_FeatureCollection) 
    323         print 'closing dataset' 
    324         csml = csmllibs.csmlmeta.closeDataset(csml,ds_element) 
    325  
     223    print"creating dataset -GridSeriesFeature" 
     224    csml, ds_element = csmllibs.csmlmeta.createDataset() 
     225    print "adding GML metadata" 
     226    csml, ds_element = csmllibs.csmlmeta.addGMLMetadata(csml, dataentity, ds_element) 
     227    print "creating filemap" 
     228    fmm = csmllibs.csmlfiles.FileMapMaker(dataentity,csmlfeaturetype) 
     229    ffmap = fmm.onetomany() # suitable for gridseries features.  
     230   # ffmap = fmm.onetoone() #is this better for era 40? 
     231    print "creating file extracts" 
     232    csml, ds_element, extractType, extractPrefix, extractDictionary = csmllibs.csmlfileextracts.createFileExtracts(csml, ds_element, ffmap) 
     233    print 'creating feature collection' 
     234    csml,gml_FeatureCollection=csmllibs.csmlmeta.createFeatureCollection(csml) 
     235    print "creating features" 
     236    csml, dataset, gml_FeatureCollection = csmllibs.csmlfeaturetypes.createCSMLGridSeriesFeatures(csml, ds_element,gml_FeatureCollection,extractType, extractPrefix, ffmap, extractDictionary,timedimension) 
     237    print "closing feature collection" 
     238    ds_element=csmllibs.csmlmeta.closeFeatureCollection(ds_element,gml_FeatureCollection) 
     239    print 'closing dataset' 
     240    csml = csmllibs.csmlmeta.closeDataset(csml,ds_element) 
    326241#output csml to terminal 
    327242#xml.dom.ext.PrettyPrint(csml) 
     
    343258 
    344259 
     260 
     261 
     262 
     263 
     264#maybe these functions don't need to be here.. 
     265#put in csml extra? 
     266 
     267 
     268#def getArraySize(ncvar): 
     269#    #iterates through all dimensions in variable to get array size. 
     270#    var = ncvar     
     271#    size = var.shape 
     272#    varsize = 1 
     273#    for item in size: 
     274#        varsize = item *varsize 
     275#    return varsize 
     276 
     277 
     278 
     279 
     280#def index(directory,recurse): 
     281#    # traverses directory trees, returns list of netcdf files with full path. 
     282#    #if recurse == 0 then indexing is non-recursive (only files in first directory are indexed) 
     283#    stack = [directory] 
     284#    files = [] 
     285#    recursive = recurse 
     286#    while stack: 
     287#        directory = stack.pop() 
     288#        for file in os.listdir(directory): 
     289#            fullname = os.path.join(directory, file) 
     290#            if file[0] == '.': 
     291#                #file is in hidden directory, don't process 
     292#                continue 
     293#            if fullname.endswith('.nc'): 
     294           #     files.append(fullname) 
     295          #  elif fullname.endswith('.pp'): 
     296         #       files.append(fullname) 
     297       #     elif fullname.endswith('.hdf'): 
     298        #        files.append(fullname) 
     299      #      elif fullname.endswith('.grb'): 
     300     #           files.append(fullname) 
     301    #        if recursive == 1: 
     302   #             if os.path.isdir(fullname) and not os.path.islink(fullname): 
     303  #                  stack.append(fullname) 
     304 
     305 #   return files 
     306 
     307         
     308#def shortfilename(fullname): 
     309    #returns the file name only from a full path 
     310    #filename=os.path.basename(fullname) 
     311    #return filename 
     312 
     313#def relativepath(fullname,directory): 
     314    #returns path and filename relative to directory 
     315    #eg  relativepath("/home/users/me/csmldata/directorya/directorya1/directorya2/file.nc", "/home/users/me/csmldata") 
     316    #will return "directorya/directorya1/directorya2/file.nc" 
     317 #   snip = len(directory) 
     318  #  relpath = fullname[snip:] 
     319   # return relpath 
     320 
     321 
     322 
     323 
     324 
     325 
     326 
     327 
     328 
     329 
     330 
     331 
     332 
     333 
     334 
Note: See TracChangeset for help on using the changeset viewer.