Changeset 21644


Ignore:
Timestamp:
03/30/17 02:04:17 (8 years ago)
Author:
bdef
Message:

CHG:removing useless code in python export

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py

    r21356 r21644  
    11from netCDF4 import Dataset, stringtochar
    2 import numpy as  np
     2import numpy as np
    33import time
    44import collections
     
    2323        NCData.history = 'Created ' + time.ctime(time.time())
    2424
    25         #gather geometry and timestepping as dimensions
     25        #define netCDF dimensions
    2626        try:
    2727                StepNum=np.shape(dict.values(md.results.__dict__))[1]
     
    3939                        DimDict[len(NewDim)]='DimNum'+str(dimindex)
    4040
    41         #get all model classes and create respective groups
    4241        typelist=[bool,str,unicode,int,float,complex,
    4342                                                collections.OrderedDict,
    4443                                                np.int64,np.ndarray,np.float64]
    4544        groups=dict.keys(md.__dict__)
     45        #get all model classes and create respective groups
    4646        for group in groups:
    4747                NCgroup=NCData.createGroup(str(group))
     
    5858                                else:
    5959                                        StdList=type(md.__dict__[group].__dict__[field][0]) in typelist
    60 
     60                                NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
    6161                                if StdList: #this is a standard or empty list just proceed
    62                                         NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
    6362                                        Var=md.__dict__[group].__dict__[field]
    64                                         DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
     63                                        DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict)
    6564                                else: #this is a list of fields, specific treatment needed
    6665                                        Listsize=len(md.__dict__[group].__dict__[field])
    67                                         NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
    6866                                        Subgroup=NCgroup.createGroup(str(field))
    6967                                        Subgroup.__setattr__('classtype',md.__dict__[group].__dict__[field].__class__.__name__)
     
    8785                                                                except AttributeError:
    8886                                                                        Var=md.__dict__[group].__dict__[field].__getitem__(listindex)[subfield]
    89                                                                 DimDict=CreateVar(NCData,Var,subfield,Listgroup,DimDict,False,md.__dict__[group],field,listindex)
     87                                                                DimDict=CreateVar(NCData,Var,subfield,Listgroup,DimDict,md.__dict__[group],field,listindex)
     88
    9089                        #No subgroup, we directly treat the variable
    9190                        elif type(md.__dict__[group].__dict__[field]) in typelist or field=='bamg':
    9291                                NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
    9392                                Var=md.__dict__[group].__dict__[field]
    94                                 DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
    95                         else:
     93                                DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict)
     94                        elif md.__dict__[group].__dict__[field] is None:
     95                                print( 'field md.{}.{} is None'.format(group,field))
     96                                #do nothing
     97                        else:
    9698                                NCgroup.__setattr__('classtype', str(group))
    9799                                Subgroup=NCgroup.createGroup(str(field))
     
    102104                                        if str(subfield)!='outlog':
    103105                                                Var=md.__dict__[group].__dict__[field].__dict__[subfield]
    104                                                 DimDict=CreateVar(NCData,Var,subfield,Subgroup,DimDict,False)
     106                                                DimDict=CreateVar(NCData,Var,subfield,Subgroup,DimDict)
    105107                               
    106108        NCData.close()
     
    108110#============================================================================
    109111#Define the variables
    110 def CreateVar(NCData,var,field,Group,DimDict,istime,*step_args):
     112def CreateVar(NCData,var,field,Group,DimDict,*step_args):
    111113        #grab type
    112114        try:
     
    136138        #treating list as string table
    137139        elif val_type==list:
    138                 dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
     140                dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim)
    139141                #try to get the type from the first element
    140142                try:
     
    150152        #treating bool tables as string tables
    151153        elif val_type=='bool':
    152                 dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
     154                dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim)
    153155                ncvar = Group.createVariable(str(field),str,dimensions,zlib=True)
    154156                for elt in range(0,val_shape[0]):
     
    156158        #treating dictionaries as tables of strings
    157159        elif val_type==collections.OrderedDict or val_type==dict:
    158                 dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
     160                dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim)
    159161                ncvar = Group.createVariable(str(field),str,dimensions,zlib=True)
    160162                for elt in range(0,val_dim):
     
    163165        #Now dealing with numeric variables
    164166        else:
    165                 dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
     167                dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim)
    166168                ncvar = Group.createVariable(str(field),TypeDict[val_type],dimensions,zlib=True)
    167                 if istime:
    168                         md=step_args[0]
    169                         supfield=step_args[1]
    170                         index=step_args[2]
    171                         vartab=var
    172                         timevar=md.__dict__[supfield].__getitem__(index).__dict__[field]
    173                         try:
    174                                 ncvar[:,:]=timevar[:,:]
    175                         except ValueError:
    176                                 ncvar[:]=timevar.T[:]
    177                 else:
    178                         try:
    179                                 nan_val=np.isnan(var)
    180                                 if nan_val.all():
    181                                         ncvar [:] = 'NaN'
    182                                 else:
    183                                         ncvar[:] = var
    184                         except TypeError: #type does not accept nan, get vallue of the variable
     169                try:
     170                        nan_val=np.isnan(var)
     171                        if nan_val.all():
     172                                ncvar [:] = 'NaN'
     173                        else:
    185174                                ncvar[:] = var
     175                except TypeError: #type does not accept nan, get vallue of the variable
     176                        ncvar[:] = var
    186177        return DimDict
    187178
    188179#============================================================================
    189180#retriev the dimension tuple from a dictionnary
    190 def GetDim(NCData,var,shape,DimDict,i,istime):
     181def GetDim(NCData,var,shape,DimDict,i):
    191182        output=[]
    192183        #grab dimension
     
    211202                                output=[str(DimDict[np.shape(dict.keys(var))[0]])]+[DimDict[2]]
    212203                        break
    213         if istime:
    214                 output=output+['DimNum1']
    215204        return tuple(output), DimDict
Note: See TracChangeset for help on using the changeset viewer.