Changeset 25484
- Timestamp:
- 08/27/20 05:03:09 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py ¶
r25460 r25484 17 17 else: 18 18 for r in row: 19 #print("appending {}".format(r))20 19 self.data.append(r) 21 20 … … 98 97 if ncvar is not None: 99 98 FillVar(ncvar, Var) 100 else: # this is a list of fields, specific treatment needed 99 else: # this is a list of fields, specific treatment needed (usually results or outputdefinitions) 101 100 if verbose > 4: 102 101 print("list of fields happens for {}.{}".format(group, field)) 103 102 Listsize = len(md.__dict__[group].__dict__[field]) 104 Subgroup = NCgroup.createGroup(str(field)) 105 try: 106 #take the class of the first element to define nc class and get the list of variables 107 Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field][0].__class__.__name__) 108 subfields = dict.keys(md.__dict__[group].__dict__[field][0].__dict__) 109 except (IndexError, AttributeError): 110 Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field].__class__.__name__) 111 subfields = dict.keys(md.__dict__[group].__dict__[field].__getitem__(0)) 112 113 for subfield in subfields: 114 if subfield not in['errlog', 'outlog']: 115 StackedVar = ResTable() 116 for listindex in range(0, Listsize): 117 try: 118 Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield] 119 lastindex = listindex + 1 120 except AttributeError: 121 Var = md.__dict__[group].__dict__[field].__getitem__(listindex)[subfield] 122 except KeyError: 123 #Some fields only exist for the first step 124 lastindex = listindex 125 continue 103 if group == 'results': #for results we reshape the datas following time rather than subgrouping 104 Subgroup = NCgroup.createGroup(str(field)) 105 try: 106 #take the class of the first element to define nc class and get the list of variables 107 Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field][0].__class__.__name__) 108 subfields = dict.keys(md.__dict__[group].__dict__[field][0].__dict__) 109 except (IndexError, AttributeError): 110 Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field].__class__.__name__) 111 subfields = dict.keys(md.__dict__[group].__dict__[field].__getitem__(0)) 112 for subfield in subfields: 113 if subfield not in['errlog', 'outlog']: 114 StackedVar = ResTable() 115 for listindex in range(0, Listsize): 116 try: 117 Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield] 118 lastindex = listindex + 1 119 except AttributeError: 120 Var = md.__dict__[group].__dict__[field].__getitem__(listindex)[subfield] 121 except KeyError: 122 #Some fields only exist for the first step 123 lastindex = listindex 124 continue 125 Var = SqueezeVar(Var) 126 StackedVar.update(Var) 127 if verbose > 4: 128 print("=$$=creating var for {}.{}.{}".format(group, field, subfield)) 129 print("last index of the list is {}".format(lastindex)) 130 StackedVar = SqueezeVar(StackedVar.finalize(int(lastindex))) 131 DimDict, ncvar = CreateVar(NCData, StackedVar, subfield, Subgroup, DimDict) 132 #and fill it up 133 if ncvar is not None: 134 FillVar(ncvar, StackedVar) 135 elif group == 'outputdefinition': #for outputdefinition we keep a subgroup format 136 for listindex in range(0, Listsize): 137 Subgroupname = str(md.__dict__[group].__dict__[field][listindex].definitionstring) 138 Subgroup = NCgroup.createGroup(Subgroupname) 139 Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field][listindex].__class__.__name__) 140 subfields = dict.keys(md.__dict__[group].__dict__[field][listindex].__dict__) 141 for subfield in subfields: 142 Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield] 126 143 Var = SqueezeVar(Var) 127 StackedVar.update(Var) 128 if verbose > 4: 129 print("=$$=creating var for {}.{}.{}".format(group, field, subfield)) 130 print("last index of the list is {}".format(lastindex)) 131 StackedVar = SqueezeVar(StackedVar.finalize(int(lastindex))) 132 DimDict, ncvar = CreateVar(NCData, StackedVar, subfield, Subgroup, DimDict) 133 #and fill it up 134 if ncvar is not None: 135 FillVar(ncvar, StackedVar) 144 if verbose > 4: 145 print("=--=creating var for {}.{}[{}].{}".format(group, field, listindex, subfield)) 146 DimDict, ncvar = CreateVar(NCData, Var, subfield, Subgroup, DimDict) 147 #and fill it up 148 if ncvar is not None: 149 FillVar(ncvar, Var) 150 else: 151 print("WARNING: unknown treatment for md.{}".format(group)) 136 152 137 153 # No subgroup, we directly treat the variable … … 220 236 # treating scalar string or bool as atribute 221 237 if val_type in [str, bool]: 238 if field == 'name': # it looks like netCDF does not like attributes that are called "name" 239 field = 'varname' 222 240 Group.__setattr__(str(field).swapcase(), str(var)) 223 241 ncvar = None … … 226 244 #if all strings are the same set it as an attribute 227 245 if all(var == var[0]): 246 if field == 'name': 247 field = 'varname' 228 248 Group.__setattr__(str(field).swapcase(), str(var[0])) 229 249 ncvar = None
Note:
See TracChangeset
for help on using the changeset viewer.