Changeset 3405


Ignore:
Timestamp:
12/02/08 23:13:06 (12 years ago)
Author:
astephen
Message:

Got some of the code actually working!

Location:
nappy/trunk/nappy/nc_interface
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • nappy/trunk/nappy/nc_interface/cdms_to_na.py

    r3390 r3405  
    3838items_as_lists = ["DATE", "RDATE", "ANAME", "VNAME"] 
    3939var_limit = 5000 # surely never going to get this many vars in a file! 
    40 DEBUG = nappy.utils.DEBUG  
    4140 
    42 class NCToNA: 
     41DEBUG = nappy.utils.getDebug()  
     42 
     43class CDMSToNA: 
    4344    """ 
    44     Converts a NetCDF file to one or more NASA Ames files. 
     45    Converts CDMS objects to NASA Ames file dictionaries. 
    4546    """ 
    4647 
     
    130131                var_metadata = var_obj.attributes        
    131132                var_value = var_obj 
    132                         var_obj = cdms.createVariable(Numeric.array(var_obj),  
    133                     id=nappy.cdms_utils.var_utils.getBestName(var_metadata).replace(" ", "_"),  
    134                     attributes=var_metadata) 
    135                         var_obj.value = var_obj._data[0]                  
     133                var_obj = cdms.createVariable(Numeric.array(var_obj),  
     134                id=nappy.cdms_utils.var_utils.getBestName(var_metadata).replace(" ", "_"),  
     135                                   attributes=var_metadata) 
     136                var_obj.value = var_obj._data[0]                  
    136137                 
    137138            vars.append(var_obj) 
  • nappy/trunk/nappy/nc_interface/na_content_collector.py

    r3398 r3405  
    1919from nappy.na_error import na_error 
    2020import nappy.utils 
    21 import nappy.utils.axis_utils 
     21import nappy.cdms_utils.axis_utils 
    2222import nappy.cdms_utils.var_utils 
    2323import nappy.utils.common_utils 
    2424import nappy.na_file.na_core 
    2525 
    26 nc_to_na_map = utils.getConfigDict()["nc_to_na_map"] 
     26nc_to_na_map = nappy.utils.getConfigDict()["nc_to_na_map"] 
    2727 
    2828# Import external packages (if available) 
     
    3636cdms.setAutoBounds("off")  
    3737 
    38 DEBUG = nappy.utils.common_utils.getDebug()  
    39  
    40 class NAContentCollector(NACore): 
     38DEBUG = nappy.utils.getDebug()  
     39 
     40class NAContentCollector(nappy.na_file.na_core.NACore): 
    4141    """ 
    4242    Class to build a NASA Ames File object from a set of  
     
    341341                self.na_dict["X"].append(axis.tolist()) 
    342342                break 
    343         else: # If did not break out of the loop 
    344             max_length = length 
    345             if length > 3: max_length = 3 
     343            else: # If did not break out of the loop 
     344                max_length = length 
     345                if length > 3: max_length = 3 
     346 
    346347                self.na_dict["DX"].append(incr) 
    347348                self.na_dict["NXDEF"].append(max_length) 
     
    508509                        if var_comm_flag == None: 
    509510                            var_comm_flag = 1 
    510                                     if spec_comm_flag == None: 
    511                                             SCOM = ["###NASA Ames Special Comments follow###"] + rank_zero_vars_string 
    512                             SCOM.append("Additional Variable Attributes defined in the source file and not translated elsewhere:") 
    513                             SCOM.append("###Variable attributes from source (NetCDF) file follow###") 
     511 
     512                    if spec_comm_flag == None: 
     513                        SCOM = ["###NASA Ames Special Comments follow###"] + rank_zero_vars_string 
     514                        SCOM.append("Additional Variable Attributes defined in the source file and not translated elsewhere:") 
     515                        SCOM.append("###Variable attributes from source (NetCDF) file follow###") 
    514516                        varflag = "using"  
    515                         SCOM.append("\tVariable %s: %s" % (var.id, name)) 
     517 
     518                    SCOM.append("\tVariable %s: %s" % (var.id, name)) 
    516519                    SCOM.append("\t\t%s = %s" % (scom, value)) 
    517520 
    518         if var_comm_flag == 1:  SCOM.append("###Variable attributes from source (NetCDF) file end###") 
     521        if var_comm_flag == 1:   
     522            SCOM.append("###Variable attributes from source (NetCDF) file end###") 
    519523        if spec_comm_flag == 1: 
    520524            SCOM.append("###NASA Ames Special Comments end###") 
  • nappy/trunk/nappy/nc_interface/na_to_cdms.py

    r3398 r3405  
    77============= 
    88 
    9 Container module for mixin class NAToCdms that is sub-classed 
    10 by NAFile classes. 
     9Container module for class NADictToCdmsObjects that is sub-classed 
     10by NAToNC classes. 
    1111 
    1212""" 
     
    2222import nappy.utils.common_utils 
    2323 
    24 na_to_nc_map = utils.getConfigDict()["na_to_nc_map"] 
     24na_to_nc_map = nappy.utils.getConfigDict()["na_to_nc_map"] 
     25print na_to_nc_map 
    2526 
    2627# Import external packages (if available) 
     
    6061""" 
    6162 
    62 DEBUG = nappy.utils.common_utils.getDebug()  
     63DEBUG = nappy.utils.getDebug()  
     64 
    6365 
    6466class NADictToCdmsObjects: 
     
    8385 
    8486        # Check if we have capability to convert this FFI 
    85         if self.na_file_obj.ffi in (2110, 2160, 2310):  
    86                 raise Exception("Cannot convert NASA Ames File Format Index (FFI) " + `self.na_file_obj.ffi` + " to CDMS objects. No mapping implemented yet.") 
     87        if self.na_file_obj.FFI in (2110, 2160, 2310):  
     88                raise Exception("Cannot convert NASA Ames File Format Index (FFI) " + `self.na_file_obj.FFI` + " to CDMS objects. No mapping implemented yet.") 
    8789 
    8890        self.output_message = []  # for output printing message 
     
    100102 
    101103        self.na_file_obj.readData() 
    102         #self.cdms_filename = filename 
    103         #self.cdms_file = cdms.open(self.cdms_filename, 'w') 
    104          
    105         # at file level: write global attributes 
    106         #for key in global_attributes.keys(): 
    107         #    setattr(self.cdms_file, key, global_attributes[key]) 
    108104 
    109105        # Convert global attribute 
     
    115111        # Convert main variables 
    116112        if not hasattr(self, 'cdms_variables'):  self._convertCdmsVariables() 
    117         #for var in self.cdms_variables: 
    118         #    self.cdms_file.write(var) 
    119113 
    120114        # Then do auxiliary variables 
    121         if hasattr(self, "NAUXV") and (type(self.NAUXV) == type(1) and self.NAUXV > 0):   # Are there any auxiliary variables? 
     115        if hasattr(self.na_file_obj, "NAUXV") and (type(self.na_file_obj.NAUXV) == type(1) and self.na_file_obj.NAUXV > 0):   # Are there any auxiliary variables? 
    122116            if not hasattr(self, 'cdms_aux_variables'):   
    123117                self._convertCdmsAuxVariables() 
     118        else: 
     119            self.cdms_aux_variables = [] 
    124120             
    125             #for avar in self.cdms_aux_variables: 
    126             #    self.cdms_file.write(avar) 
    127  
    128         #self.cdms_file.close() 
    129         #rt = "cdms_file '%s' written successfully." % self.cdms_filename 
    130121        self.converted = True 
    131122        return (self.cdms_variables, self.cdms_aux_variables, self.global_attributes) 
     
    181172                else: 
    182173                    # Any other strange tuple just gets merged into a string 
    183                         item = (getattr(self.na_file_obj, key[0])) + "\n" + (getattr(self.na_file_obj, key[1])) 
     174                    item = (getattr(self.na_file_obj, key[0])) + "\n" + (getattr(self.na_file_obj, key[1])) 
    184175                    # setattr(self.cdms_file, cdms_map.fromNA[key], item) 
    185176                    self.global_attributes[na_to_nc_map[key]] = item 
     
    208199        self.cdms_variables = [] 
    209200 
    210         if self.variables == "all":     
    211             for var_number in range(self.NV): 
    212             self.cdms_variables.append(self._convertNAToCdmsVariable(var_number)) 
     201        if self.variables == None:     
     202            for var_number in range(self.na_file_obj.NV): 
     203                self.cdms_variables.append(self._convertNAToCdmsVariable(var_number)) 
    213204        else: 
    214205            if type(self.variables[0]) == type(1): # They are integers = indices 
     
    217208            elif type(self.variables[0]) == type("string"):  # Vars are strings 
    218209                for var_name in self.variables: 
    219                     if var_name in self.VNAME: 
    220                         var_number = self.VNAME.index(var_name) 
     210                    if var_name in self.na_file_obj.VNAME: 
     211                        var_number = self.na_file_obj.VNAME.index(var_name) 
    221212                        self.cdms_variables.append(self._convertNAToCdmsVariable(var_number)) 
    222213                    else: 
     
    266257        self.cdms_aux_variables = [] 
    267258 
    268         if self.aux_variables == "all":     
    269             for avar_number in range(self.NAUXV): 
     259        if self.aux_variables == None:     
     260            for avar_number in range(self.na_file_obj.NAUXV): 
    270261                self.cdms_aux_variables.append(self._convertNAAuxToCdmsVariable(avar_number)) 
    271262        else: 
     
    276267            elif type(self.aux_variables[0]) == type("string"): # They are strings 
    277268                for avar_name in self.aux_variables: 
    278                     if avar_name in self.ANAME: 
    279                         avar_number = self.ANAME.index(avar_name) 
     269                    if avar_name in self.na_file_obj.ANAME: 
     270                        avar_number = self.na_file_obj.ANAME.index(avar_name) 
    280271                        self.cdms_aux_variables.append(self._convertNAAuxToCdmsVariable(avar_number))  
    281272            else: 
     
    286277        Converts an auxiliary variable to a cdms variable. 
    287278        """ 
    288         (var_name, units, miss, scal) = self.na_file_obj(avar_number) 
     279        (var_name, units, miss, scal) = self.na_file_obj.getAuxVariable(avar_number) 
    289280        array = Numeric.array(self.na_file_obj.A[avar_number]) 
    290281        array = array * scal 
     
    329320            self.cdms_axes.append(self._convertNAIndVarToCdmsAxis(ivar_number)) 
    330321 
     322 
    331323    def _convertNAIndVarToCdmsAxis(self, ivar_number): 
    332324        """ 
    333325        Creates a cdms axis from a NASA Ames independent variable. 
    334326        """ 
    335         if self._normalized_X == False:   self.na_file_obj._normalizeIndVars() 
     327        if self.na_file_obj._normalized_X == False:   self.na_file_obj._normalizeIndVars() 
    336328 
    337329        if self.na_file_obj.NIV == 1: 
     
    342334        axis = cdms.createAxis(array) 
    343335        axis.id = axis.name = axis.long_name = self.na_file_obj.XNAME[ivar_number] 
    344         (var_name, units) = self.getIndependentVariable(ivar_number) 
     336        (var_name, units) = self.na_file_obj.getIndependentVariable(ivar_number) 
    345337         
    346338        # Sort units etc 
     
    374366                    else:  
    375367                        time_units_input = "" 
    376                     self.output_message.append(message) 
    377  
    378                         self.time_units = time_units_input 
    379  
    380                     axis.units = self.time_units 
     368 
     369                self.output_message.append(message) 
     370                self.time_units = time_units_input 
     371 
     372            axis.units = self.time_units 
    381373            axis.long_name = axis.name = "time (%s)" % self.time_units 
    382374 
    383         if axis.units == None:   
     375        if not hasattr(axis, "units") or axis.units == None:   
    384376            if units: 
    385377                axis.units = units       
  • nappy/trunk/nappy/nc_interface/na_to_nc.py

    r3391 r3405  
    1313# Imports from python standard library 
    1414 
     15# Imports from external packages 
     16import cdms 
     17 
    1518# Import from nappy package 
    1619import nappy.nc_interface.na_to_cdms 
    1720from nappy.na_error import na_error 
    1821 
    19 class NAToNC(nappy.nc_interface.na_to_cdms.NAToCdms): 
     22 
     23class NAToNC(nappy.nc_interface.na_to_cdms.NADictToCdmsObjects): 
    2024    """ 
    2125    Converts a NASA Ames file to a NetCDF file. 
    2226    """ 
    2327     
    24     def __init__(self, na_file, variables="all", aux_variables="all", 
     28    def __init__(self, na_file, variables=None, aux_variables=None, 
    2529                 global_attributes={"Conventions":"CF-1.0"}, 
    2630                 time_units=None, time_warning=True,  
     
    4044            na_file_obj = nappy.openNAFile(na_file_obj) 
    4145 
    42         nappy.nc_interface.na_to_cdms.NAToCdms(self, na_file_obj, variables=variables,  
     46        nappy.nc_interface.na_to_cdms.NADictToCdmsObjects.__init__(self, na_file_obj, variables=variables,  
    4347                 aux_variables=aux_variables, 
    4448                 global_attributes=global_attributes, 
  • nappy/trunk/nappy/nc_interface/nc_to_na.py

    r3398 r3405  
    2020import nappy.utils 
    2121import nappy.utils.common_utils 
    22 import nappy.cdms_utils.var_utils 
    23 import nappy.na_file.na_core 
     22import nappy.nc_interface.cdms_to_na 
    2423import nappy.nc_interface.na_content_collector 
    2524 
     
    3534 
    3635# Define global variables 
    37 DEBUG = nappy.utils.common_utils.getDebug()  
     36DEBUG = nappy.utils.getDebug()  
    3837 
    3938class NCToNA(nappy.nc_interface.cdms_to_na.CDMSToNA): 
     
    6059        # Now need to read CDMS file so parent class methods are compatible 
    6160        (cdms_variables, global_atts) = self._readCDMSFile(self.nc_file, var_ids, exclude_vars) 
    62         nappy.nc_interface.cdms_to_na.CDMSToNA(self, cdms_variables, global_atts=global_atts,  
     61        nappy.nc_interface.cdms_to_na.CDMSToNA.__init__(self, cdms_variables, global_atts=global_atts,  
    6362                    na_items_to_override=na_items_to_override, only_return_file_names=only_return_file_names) 
    6463  
     
    9695        for this_na_dict in self.na_dict_list: 
    9796            if len(na_dict_list) == 1: 
    98                     suffix = "" 
    99                 else: 
    100                     suffix = "_%s" % file_counter 
     97                suffix = "" 
     98            else: 
     99                suffix = "_%s" % file_counter 
    101100 
    102101            # Create file name 
     
    183182            file_counter += 1 
    184183 
    185                 if DEBUG: print msg 
    186                 self.output_message.append(msg) 
     184            if DEBUG: print msg 
     185            self.output_message.append(msg) 
    187186             
    188187        full_file_count = (actual_file_counter - 1) 
Note: See TracChangeset for help on using the changeset viewer.