Ignore:
Timestamp:
31/10/16 09:18:59 (4 years ago)
Author:
mjuckes
Message:

fix on cmv duplication bug

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/src/workbook/isd3b.py

    r770 r799  
    2626from utils_wb import uniCleanFunc 
    2727import ivg 
    28 reload(ivg) 
     28 
     29## 
     30## refCmv.refUid[tab][lab] = k 
     31## 
     32refCmv = ivg.refCmv() 
     33extRefCmv = shelve.open( 'sh/extRefCmv' ) 
     34def chkRefCmv( ntab, lab, u0, msg ): 
     35              if ntab in refCmv.refUid[ntab] and lab in refCmv.refUid[ntab]: 
     36                     uid = refCmv.refUid[ntab][lab] 
     37              else: 
     38                     kk = str( '%s.%s' % (ntab,lab) ) 
     39                     if kk in extRefCmv: 
     40                       uid = extRefCmv[kk] 
     41                       print 'INFO.%s: uid  found in extRedCmv: %s, %s (%s)' % (msg,ntab,lab,uid) 
     42                     else: 
     43                       extRefCmv[kk] = u0 
     44                       print 'WARN.%s: uid not found: %s, %s (%s)' % (msg,ntab,lab,u0) 
     45                       uid = u0 
     46              return uid 
     47 
    2948 
    3049siSurfFluxes = ['sidmasstranx', 'sidmasstrany', 'siforcecoriolx', 'siforcecorioly', 'siforcetiltx', 'siforcetilty', 'siforceintstrx', 'siforceintstry', 'sistrxdtop', 'sistrydtop', 'sistrxdbot', 'sistrydbot', 'siu', 'siv'] 
     
    220239      self.finish() 
    221240      self.finish2() 
     241    extRefCmv.close() 
    222242 
    223243  def prepRequestItem(self): 
     
    428448      item = self.doc.createElement( 'item' ) 
    429449      thisr = self.importWbMods.vars.d1[uid] 
     450      sn = thisr[7] 
     451      if sn.find( ' ' ) != -1: 
     452        print 'WARN.sn.00001: space in sn: ',sn 
     453        thisr[7] = sn.replace( ' ', '_' ) 
     454      if sn.find( '?' ) != -1: 
     455        print 'WARN.sn.00002: question in sn: ',sn 
     456        thisr[7] = sn.replace( '?', '' ) 
     457 
    430458      for i in range( len(kk) -2 ): 
    431459           item.setAttribute( kk[i], thisr[i] ) 
     
    484512      d,u = cf.names[i] 
    485513      uid = str(i) 
     514      if uid.find( ' ' ) != -1: 
     515         print 'SEVERE.sn.00001: BAD SN: %s' % uid 
     516      uid = uid.replace( ' ', '' ) 
    486517      title = string.capwords( string.replace( uid, '_', ' ' ) ) 
    487518      label = string.replace( title, ' ', '' ) 
     
    639670            dset = set() 
    640671            ds2 = set() 
    641             ovuu = {} 
     672            ovuu = collections.defaultdict( set ) 
     673            ovll = collections.defaultdict( list ) 
    642674            for k in thissh: 
    643675              if k[0] != '_': 
     
    690722                  
    691723                ds2.add( (tt.dimensions,tt.cell_methods,tt.cell_measures,tt.flag_values, tt.flag_meanings) ) 
    692                 ovuu[tt.uid] = tt 
     724                ovuu[tt.vid].add( tt.modeling_realm ) 
     725                ovll[tt.vid].append( tt ) 
    693726                if rr[22][-3:] in ['mon','day','3hr']: 
    694727                  fr = rr[22][-3:] 
     
    732765                       sectid = None 
    733766                       
    734                     self.cmv.append( (tt.uid, (tt.dimensions,tt.cell_methods,tt.cell_measures,tt.flag_values,tt.flag_meanings), lab, tt.title, tt.comment, tt.vid, \ 
     767                    uid = chkRefCmv( tt.mipTable, lab, tt.uid, 'cmv.01009' ) 
     768                    self.cmv.append( (uid, (tt.dimensions,tt.cell_methods,tt.cell_measures,tt.flag_values,tt.flag_meanings), lab, tt.title, tt.comment, tt.vid, \ 
    735769                      tt.deflate_level, tt.shuffle, tt.ok_max_mean_abs, tt.flag_meanings, tt.type, tt.ok_min_mean_abs, \ 
    736770                      tt.deflate, tt.valid_min, tt.flag_values, tt.modeling_realm, tt.valid_max, tt.positive, tt.mipTable, \ 
     
    745779                    self.realmByVar[ lab ].append( tt.modeling_realm ) 
    746780                    vgid = tt.gpid 
    747                     self.rqv.append( (str( uuid.uuid1() ),lab, tt.uid, vgid, tt.priority,tt.mipTable,tt.mipTable) ) 
     781                    self.rqv.append( (str( uuid.uuid1() ),lab, uid, vgid, tt.priority,tt.mipTable,tt.mipTable) ) 
    748782                    if sectid not in (None, '_na_'): 
    749                       self.rqv.append( (str( uuid.uuid1() ),lab, tt.uid, sectid, tt.priority,tt.mipTable,tt.mipTable) ) 
     783                      self.rqv.append( (str( uuid.uuid1() ),lab, uid, sectid, tt.priority,tt.mipTable,tt.mipTable) ) 
    750784                    if lab == 'somint': 
    751785                      print 'INFO.somint.0002:', self.rqv[-1] 
     
    803837                  sm.add( tt.mask ) 
    804838 
    805             print '####### masks: ',sm 
    806839            smdd = {} 
    807840            dsn = {'floating ice shelf':u'floating ice sheet', u'ocean':u'sea', 'yes':'seaIce' } 
     
    921954# picking out re-purposed CMIP5 variables 
    922955# 
    923                 if ovuu.has_key(tt.vid): 
    924                   tt1 = ovuu[tt.vid] 
    925                   if tt1.modeling_realm == 'seaIce': 
     956                if ovuu.has_key(tt.vid) and len( ovuu[tt.vid] ) == 1: 
     957                  print 'INFO.ovuu.00001: lookup started %s, %s' % (tt.cmorv,tt.group) 
     958                  if len( ovuu[tt.vid] ) > 1: 
     959                    print 'WARN.ovuu.00002: multiple realms: %s, %s: %s' % (tt.cmorv,tt.group, str( ovuu[tt.vid] ) ) 
     960                  tt1 = ovll[tt.vid][0] 
     961                  thisrealm =  tt1.modeling_realm 
     962                  ttl = ovll[tt.vid][0].title 
     963                  p1 = ovll[tt.vid][0].priority 
     964                  #tt1 = ovuu[tt.vid] 
     965                  if thisrealm == 'seaIce': 
    926966                    ntab = 'OImon' 
    927967                  if tt.priority in [1,2,3]: 
    928968                    p = tt.priority 
    929969                  else: 
    930                     p = int(tt1.priority) 
    931                   thisrealm = tt1.modeling_realm 
     970                    p = int(p1) 
     971 
    932972                  if gr == 'o' and thisrealm == 'atmos': 
    933973                    thisrealm = 'ocean' 
    934974 
    935                   ttl = tt1.title 
    936975                  if string.find( tt.descriptionEx, '//' ) != -1: 
    937976                        ttl += ' ' + string.split( tt.descriptionEx, '/' )[0] 
    938977 
    939                   thiscmv = (tt.uid, (thissh,tt.levels,tt.tstyle,gr,smdd[tt.mask],tt1.flag_values,tt1.flag_meanings), lab, ttl, tt.descriptionEx, tt1.vid, \ 
     978                  uid = chkRefCmv( ntab, lab, tt.uid, 'cmv.01001' ) 
     979 
     980                  thiscmv = (uid, (thissh,tt.levels,tt.tstyle,gr,smdd[tt.mask],tt1.flag_values,tt1.flag_meanings), lab, ttl, tt.descriptionEx, tt1.vid, \ 
    940981                    tt1.deflate_level, tt1.shuffle, tt1.ok_max_mean_abs, tt1.flag_meanings, tt1.type, tt1.ok_min_mean_abs, \ 
    941982                    tt1.deflate, tt1.valid_min, tt1.flag_values, thisrealm, tt1.valid_max, tt1.positive, ntab, \ 
    942983                    prov, provNote, tt.freq, tt.rowIndex, '', int(p),tabsect, '')  
     984 
    943985                  if tt1.valid_max <= tt1.valid_min: 
    944986                    print 'ERROR.valmx.00001: valid_max below/equal valid_min: ',tt1 
     
    949991                  nov += 1 
    950992                else: 
     993                  print 'INFO.ovuu.00003: lookup started %s, %s' % (tt.cmorv,tt.group) 
    951994                  thisrealm = '' 
    952995                  if realmdefix.has_key( prov ): 
     
    9811024                        ttl += ' ' + string.split( tt.descriptionEx, '/' )[0] 
    9821025 
    983                   thiscmv = (tt.uid, (thissh,tt.levels,tt.tstyle,gr,smdd[tt.mask], 'None', 'None'), lab, ttl, tt.descriptionEx, tt.vid, \ 
     1026                  if ntab in refCmv.refUid[ntab] and lab in refCmv.refUid[ntab]: 
     1027                     uid = refCmv.refUid[ntab][lab] 
     1028                  else: 
     1029                     kk = str( '%s.%s' % (ntab,lab) ) 
     1030                     if kk in extRefCmv: 
     1031                       uid = extRefCmv[kk] 
     1032                       print 'INFO.cmv.01003: uid  found in extRedCmv: %s, %s (%s)' % (ntab,lab,uid) 
     1033                     else: 
     1034                       extRefCmv[kk] = tt.uid 
     1035                       print 'ERROR.cmv.01003: uid not found: %s, %s (%s)' % (ntab,lab,tt.uid) 
     1036                       uid = tt.uid 
     1037 
     1038                  uid = chkRefCmv( ntab, lab, tt.uid, 'cmv.01011' ) 
     1039                  thiscmv = (uid, (thissh,tt.levels,tt.tstyle,gr,smdd[tt.mask], 'None', 'None'), lab, ttl, tt.descriptionEx, tt.vid, \ 
    9841040                    0, 0, None, 0, '', None, \ 
    9851041                    0,None,0, thisrealm, None, '', ntab, \ 
     
    9871043                  self.realmByVar[ lab ].append( thisrealm ) 
    9881044 
    989                   thisrqv = [str( uuid.uuid1() ),lab, tt.uid, tt.gpid, p, tt.mip, tt.group]  
     1045                  thisrqv = [str( uuid.uuid1() ),lab, uid, tt.gpid, p, tt.mip, tt.group]  
    9901046                  if lab in ['mrro', 'sisnconc']: 
    9911047                    print 'INFO.%s.0001b:' % lab, thisrqv, ptr, thiscmv 
     
    10001056                  thisrqv[2] = ccchk.uidReplace[thiscmv[0]] 
    10011057                else: 
    1002                   if tt.uid in setu: 
     1058                  if uid in setu: 
    10031059                     print 'SEVERE[1]: duplicate uuid: ',tt.__dict__ 
    1004                   elif tt.uid in setu1: 
     1060                  elif uid in setu1: 
    10051061                     print 'ERROR[2]: duplicate uuid: ',tt.__dict__ 
    10061062                  else: 
    1007                     setu.add( tt.uid ) 
     1063                    setu.add( uid ) 
    10081064                    assert len(thiscmv) == len( self.cmvinfo ), 'BAD CMV specification length: %s' % str(cmv) 
    10091065                    self.cmv.append( thiscmv ) 
     
    10671123         assert False, 'Spatial shapes must be specified in spatialShape_ref.xls: %s' % d 
    10681124         u = str( uuid.uuid1() ) 
     1125         lab = 'ssd-%3.3i' % kk 
     1126         description = 'ssd.%3.3i' % kk 
    10691127       else: 
    10701128         u = WbMods.ls.ss[d][4] 
     1129         lab = WbMods.ls.ss[d][0] 
     1130         description = WbMods.ls.ss[d][1] 
     1131 
    10711132       kk+=1 
    1072        lab = 'ssd-%3.3i' % kk 
    1073        description = 'ssd.%3.3i' % kk 
    10741133       esd[s] = (u,lab,description,d,lfl,nl) 
    10751134       self.spidInfo[u] = (u,lab,description,d,lfl,nl) 
     
    10841143    sshp = set() 
    10851144    eshp = set() 
    1086     lls = ivg.structureList() 
     1145    self.lls = ivg.structureList() 
    10871146    nt_dims = collections.namedtuple( 'dims', ['uid','label','spid','tmid','odims','coords','cell_methods','cell_measures','flag_values','flag_meanings','description','procNote','prov'] ) 
    10881147    kk = 0 
     
    10951154        u = str( uuid.uuid1() ) 
    10961155        spid = esd[tt][0] 
     1156        splab = esd[tt][1] 
    10971157        tmid = etd[tdim][0] 
    10981158        tlab = etd[tdim][1] 
     
    11021162        prov = 'CMIP5/OMIP' 
    11031163        desc = '' 
    1104         print 'INFO.zzz01: ',dims, crd 
     1164        ##print 'INFO.zzz01: ',dims, crd 
    11051165        t0 = (dims,cmet,cmea,flgv,flgm) 
    11061166        if cmet in ['None',None]: 
    1107           cmet = '' 
     1167          if tlab == 'time-mean': 
     1168            cmet = 'time: mean' 
     1169          elif tlab == 'time-point': 
     1170            cmet = 'time: point' 
     1171          else: 
     1172            cmet = '' 
    11081173        if cmea in ['None',None]: 
    1109           cmea = '' 
     1174            cmea = '' 
     1175           
    11101176        if flgv in ['None',None,u'None']: 
    11111177          flgv = '' 
     
    11131179          flgm = '' 
    11141180        t1 = (dims,cmet,cmea,flgv,flgm) 
    1115         errc,u,label = lls.add( [u,label,spid,tlab, odim, crd, cmet, cmea, flgv, flgm, desc, proc, prov] ) 
     1181        ##errc,u,label = self.lls.add( [u,label,spid,tlab, odim, crd, cmet, cmea, flgv, flgm, desc, proc, prov] ) 
     1182        errc,u,label = self.lls.add2( [u,label,splab,tlab, odim, crd, cmet, cmea, flgv, flgm, desc, proc, prov] ) 
    11161183        print 'INFO.t1.0001:',t0,t1,u,label 
    11171184        self.structInfo[u] = (label,cmet,spid,tmid) 
     
    11201187        print 'INFO.strdd.00001: ',u,t0,t1 
    11211188 
    1122     spid = self.dimsSpace['Y-na'][0] 
    1123     tmid = self.dimsTime['time'][0] 
    1124     tlab = self.dimsTime['time'][1] 
    1125     ex1 = [str(uuid.uuid1()), 'extra', spid, tlab, '','','time: mean','','','', 'Structure for zonal means', '', 'For AerChemMIP'] 
    1126     errc,u,label = lls.add( ex1 ) 
    1127     self.structInfo[u] = (label,'',spid,tmid) 
    1128     print 'INFO.structure.00780: ',errc,u,label,ex1 
     1189    ##spid = self.dimsSpace['Y-na'][0] 
     1190    ##splab = 'Y-na' 
     1191    ##tmid = self.dimsTime['time'][0] 
     1192    ##tlab = self.dimsTime['time'][1] 
     1193    ##ex1 = [str(uuid.uuid1()), 'extra', spid, tlab, '','','time: mean','','','', 'Structure for zonal means', '', 'For AerChemMIP'] 
     1194    ##ex2 = [str(uuid.uuid1()), 'extra', splab, tlab, '','','time: mean','','','', 'Structure for zonal means', '', 'For AerChemMIP'] 
     1195    ##errc,u,label = self.lls.add2( ex2 ) 
     1196    ##self.structInfo[u] = (label,'',spid,tmid) 
     1197    ##print 'INFO.structure.00780: ',errc,u,label,ex1 
    11291198    ##stid = self.spsh.uidByLab['XY-O'] 
    11301199    ##tmid = self.dimsTime[''][0] 
     
    11501219        u = str( uuid.uuid1() ) 
    11511220        spid = esd[tt][0] 
    1152         slab = WbMods.ls.labByUid[ spid ] 
     1221        splab = WbMods.ls.labByUid[ spid ] 
    11531222        if spid == 'a6561f64-8883-11e5-b571-ac72891c3257': 
    11541223          print 'ERROR.spid.0002: ',shp,lvls,sty,gr,tmsk, flgv, flgm, prov  
     
    11561225        tlab = etd[tdim][1] 
    11571226 
    1158         if "XY" in slab: 
     1227        if "XY" in splab: 
    11591228          if gr == "M": 
    11601229            cmea = "--MODEL" 
     
    11651234 
    11661235        cmet = '' 
    1167         if sty == u'weighted time mean': 
    1168            print 'INFO.xxxx: ',shp,lvls,sty,gr,tmsk, flgv, flgm, prov 
    11691236        for i in range(4): 
    11701237          if sty in ttt[i]: 
     
    11941261        if strdd.has_key( (dims,cmet,cmea,'','') ) and crd == '' and odim == '': 
    11951262          u = strdd[ (dims,cmet,cmea,'','') ] 
    1196           print 'INFO.zzzy03: ',tt, tdim, cmet, cmea, label, u 
     1263          ##print 'INFO.zzzy03: ',tt, tdim, cmet, cmea, label, u 
    11971264        elif ee1.has_key( (tmid, spid, odim, cmet, cmea, crd) ): 
    11981265          u = ee1[(tmid, spid, odim, cmet, cmea, crd)] 
    1199           print 'INFO.zzzy04: ', tt, tdim, cmet, label, u 
     1266          ##print 'INFO.zzzy04: ', tt, tdim, cmet, label, u 
    12001267        else: 
    1201           errc,u,label = lls.add( [u,label,spid,tlab, odim, crd, cmet, cmea, '', '', desc, proc, prov]  ) 
    1202           print 'INFO.zzzy02: ',tt, tdim, cmet, label, u 
     1268          ##errc,u,label = self.lls.add( [u,label,spid,tlab, odim, crd, cmet, cmea, '', '', desc, proc, prov]  ) 
     1269          errc,u,label = self.lls.add2( [u,label,splab,tlab, odim, crd, cmet, cmea, '', '', desc, proc, prov]  ) 
     1270          ##print 'INFO.zzzy02: ',tt, tdim, cmet, label, u 
    12031271             
    12041272          ee1[(tmid, spid, odim, cmet, cmea, crd)] = u 
     
    12121280 
    12131281    ##nt_dims = collections.namedtuple( 'dims', ['uid','label','spid','tmid','odims','coords','cell_methods','cell_measures','flag_values','flag_meanings','description','procNote','prov'] ) 
    1214     lls.close() 
    1215     cc = collections.defaultdict( list ) 
    1216     for u,nt in lls.ll: 
    1217       print 'INFO.stid.00070: %s' % str( nt.__dict__ ) 
    1218       tt = tuple( [nt.__dict__[k] for k in ['spid','tlab','odims','coords','cell_methods','cell_measures','flag_values','flag_meanings','procNote','prov']] ) 
    1219       cc[tt].append( nt.uid ) 
    1220     ks = [k for k in cc.keys() if len( cc[k] ) > 1] 
    1221     if len( ks ) > 0: 
    1222       print 'DUPLICATE STRUCTURES' 
    1223       for k in ks: 
    1224         print 'DUPLICATE: ',k,len(cc[k]) 
     1282    ##self.lls.close() 
     1283    self.strdd = strdd 
    12251284       
    1226     self.structList = lls.ll 
    1227     self.strdd = strdd 
    1228     oo = open( 'test.csv', 'w' ) 
    1229     s1 = set() 
    1230     for u,nt in lls.ll: 
    1231       assert u in self.structInfo, 'SEVERE: structure uid not in lookup ... %s' %  str( nt.__dict__) 
    1232       if u in s1: 
    1233          print 'SEVERE.structure: repeat uid: ',u 
    1234       s1.add(u) 
    1235       oo.write( '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,\n' % nt ) 
    1236     oo.close() 
    1237  
    12381285  def cmvAudit(self,nn): 
    12391286    nrep = [] 
     
    13051352        freq = freq_map.get( tt.freq, tt.freq ) 
    13061353        ntab = 'aer%s' % tt.freq 
    1307         thiscmv = (str(uuid.uuid1()), (tt.splab,tt.tm), tt.label, tt.title, tt.description, vid, '','','','','float','','','','',"aerosol",'','',ntab,'AerChemMIP','',freq, 0, '', 1, tt.subsect, '') 
     1354 
     1355        u0 = str(uuid.uuid1()) 
     1356        uid = chkRefCmv( ntab, tt.label, tt.uid, 'cmv.01005' ) 
     1357        thiscmv = (uid, (tt.splab,tt.tm), tt.label, tt.title, tt.description, vid, '','','','','float','','','','',"aerosol",'','',ntab,'AerChemMIP','',freq, 0, '', 1, tt.subsect, '') 
    13081358        self.cmv.append( thiscmv ) 
    13091359 
     
    17791829                     item.setAttribute( 'vid', vid ) 
    17801830                     thisd['vid'] = vid 
    1781                      print 'INFO.fixcmv.0002: replacing link in requestVar  %s' % str(ll), vid 
     1831                     ##print 'INFO.fixcmv.0002: replacing link in requestVar  %s' % str(ll), vid 
    17821832                 else: 
    1783                    print 'INFO.fixcmv.0003: not replacing link in requestVar  %s' % str(ll) 
     1833                   ##print 'INFO.fixcmv.0003: not replacing link in requestVar  %s' % str(ll) 
     1834                   pass 
    17841835 
    17851836 
     
    19161967                  cloning = False 
    19171968 
    1918               print 'INFO.requestItem.0001: ', ll 
    19191969              while not finishedClones: 
    19201970                thisl = mycc( '%s %s' % (ll[0],ll[1]) ) 
     
    19481998                    item.setAttribute( 'uid', str(uuid.uuid1()) ) 
    19491999                  kcl += 1 
    1950                   print 'INFO.clone.00001: ',ku, kcl 
     2000                  ##print 'INFO.clone.00001: ',ku, kcl 
    19512001                if ku in self.experiments: 
    19522002                  esid = self.experiments[ku] 
     
    20662116          ktable = self.cmvinfo.index('mipTable') 
    20672117          kfreq  = self.cmvinfo.index('frequency') 
    2068  
    2069           s1 = set() 
     2118          klabel  = self.cmvinfo.index('label') 
     2119 
     2120          s1 = dict() 
    20702121          stab = set() 
    20712122          tmidpt = self.tmLab2Uid['time-point'] 
     
    20742125           if r[0] in self.rep['cmv'].items: 
    20752126             print 'INFO.090.09099: detected cmv replace request: ',r 
     2127           elif r[0] in s1: 
     2128              print 'ERROR.090.09005: duplicate key at ',r,s1[r[0]] 
    20762129           else: 
    2077             if r[0] in s1: 
    2078               print 'ERROR.090.09005: duplicate key at ',r 
    2079             s1.add( r[0] ) 
     2130            s1[ r[0] ] = (r[ktable],r[kfreq],r[klabel]) 
    20802131            stab.add( r[ktable] ) 
    2081  
     2132            u0 = r[0] 
     2133            l0 = r[2] 
    20822134# 
    20832135# identify structures for AerChemMIP tables 
     
    20922144                tmode = 'point' 
    20932145 
    2094               if (tmid,spid,tmode) in self.tmsp2str: 
    2095                 stid = self.tmsp2str[ (tmid,spid,tmode) ] 
     2146              if (tmid,spid,tmode) in self.lls.tmsp2str: 
     2147                stid = self.lls.tmsp2str[ (tmid,spid,tmode) ] 
    20962148              else: 
    20972149                print 'SEVERE.stid.0001: no structure record for ',tmid,spid,tmode,r[1][0] 
     
    21292181 
    21302182            if r[0] in self.fix.fixcmv: 
    2131               print 'INFO.fixcmv.00010: omitting record %s, %s, %s' % (str( self.fix.fixcmv[r[0]] ), r[0],r[2] ) 
     2183             ## print 'INFO.fixcmv.00010: omitting record %s, %s, %s' % (str( self.fix.fixcmv[r[0]] ), r[0],r[2] ) 
     2184              pass 
    21322185            else: 
    21332186              item = self.doc.createElement( 'item' ) 
     
    22812334               
    22822335## append CMORvar record 
     2336              u1 = item.getAttribute('uid') 
     2337              l1 = item.getAttribute( 'label') 
     2338              if l1 != l0: 
     2339                print 'WARN.cmvlab.00030: changed cmv label: %s %s %s %s' % (l0,l1,u0,u1) 
    22832340              self._cmvLabByUid[item.getAttribute('uid')] = item.getAttribute( 'label') 
    22842341              self.ff[ksect][0].appendChild( item ) 
     
    22922349              for r in spsResets[kk][1:]: 
    22932350                ers[r[0]] = utarg 
    2294           flds = self.structList[0][1]._fields 
    2295           for u,nt in self.structList: 
    2296             print 'INFO.stid.00071: %s, %s' % (u,str( nt.__dict__ )) 
    2297             d1 = {} 
    2298             for f in flds: 
     2351          ##flds = self.structList[0][1]._fields 
     2352          flds = self.lls.structAttr 
     2353          for u,nt in self.lls.ll: 
     2354            smode = 'new' 
     2355            if smode == 'new': 
     2356             d1 = self.lls.asDict( u ) 
     2357             tlab = d1['time label'] 
     2358             ##print 'INFO.stid.00072: %s, %s' % (u,str( d1 )) 
     2359            else: 
     2360             ##print 'INFO.stid.00071: %s, %s' % (u,str( nt.__dict__ )) 
     2361             d1 = {} 
     2362             for f in flds: 
    22992363              if f == 'spid' and nt.__dict__[f] in ers: 
    23002364                d1[f] = ers[ nt.__dict__[f] ] 
     
    23462410              d1['cids'] = ooc 
    23472411            t = (tlab,slab,d1['odims'],d1['coords'],d1['cell_methods'],d1['cell_measures'],d1['flag_meanings']) 
    2348             if t not in WbMods.str.lookup and t[4] in WbMods.cellm.cmmap: 
    2349               l = list(t) 
    2350               l[4] = WbMods.cellm.cmmap[t[4]] 
    2351               if tuple(l) in WbMods.str.lookup: 
    2352                 print 'INFO.structure.0052: mapping cell methods' 
    2353                 t = tuple(l) 
    2354               else: 
    2355                 print 'WARN.structure.0052: mapped cell methods did nothing',l 
    23562412 
    23572413            dothis = True 
     
    23852441              item = self.doc.createElement( 'item' ) 
    23862442              for k in d1: 
    2387                   item.setAttribute( k, d1[k] ) 
     2443                if k not in ['time_label','spatial_label', 'time label','spatial label']: 
     2444                  item.setAttribute( k.replace( ' ','_'), d1[k] ) 
    23882445              self.ff[ksect][0].appendChild( item ) 
     2446            else: 
     2447              if not dothis: 
     2448                 print 'INFO.structure.09001: omitting %s' % d1['label'] 
     2449              elif d1['uid'] in doneStructures: 
     2450                 print 'INFO.structure.09002: omitting %s' % d1['label'] 
     2451              elif d1['uid'] in WbMods.str.uidMap: 
     2452                 print 'INFO.structure.09003: omitting %s' % d1['label'] 
    23892453### 
    23902454### 
    2391               if cc == '' and oo == '': 
    2392                 if cm in ['time: mean','time: point']: 
    2393                   if cm == 'time: mean': 
    2394                     tmode = 'mean' 
    2395                   elif cm == 'time: point': 
    2396                     tmode = 'point' 
    2397                   else: 
    2398                     tmode = '' 
    2399                   cme = d1.get( 'cell_measures', '' ) 
    2400                   if cme in ['', 'area: areacella']: 
    2401                     self.tmsp2str[ (item.getAttribute( 'tmid' ),item.getAttribute( 'spid' ),tmode) ] = d1['uid'] 
    2402             print 'INFO.stid.00072: %s [%s]' % (str( d1 ),dothis) 
     2455### define lookup table for AerChemMIP 
     2456### 
     2457### 
     2458              ##if cc == '' and oo == '': 
     2459               ## if cm in ['time: mean','time: point']: 
     2460                ##  if cm == 'time: mean': 
     2461                 ##   tmode = 'mean' 
     2462                  ##elif cm == 'time: point': 
     2463                   ## tmode = 'point' 
     2464                  ##else: 
     2465                   ## tmode = '' 
     2466                  ##cme = d1.get( 'cell_measures', '' ) 
     2467                  ##if cme in ['', 'area: areacella']: 
     2468                   ## self.tmsp2str[ (item.getAttribute( 'tmid' ),item.getAttribute( 'spid' ),tmode) ] = d1['uid'] 
     2469            ##print 'INFO.stid.00073: %s [%s]' % (str( d1 ),dothis) 
    24032470        elif ksect == u'spatialshape': 
    24042471 
     
    24222489              rr[3] = kk 
    24232490            self.spatialDims[rr[0]] = rr[3] 
    2424             bits = rr[3].split( '|' ) 
     2491            bits = [x for x in rr[3].split( '|' ) if x not in ['','?']] 
    24252492            rr.append( string.join( ['dim:%s' % x for x in bits] ) ) 
    24262493            if kk not in spsResets: 
     
    24902557                item.setAttribute( kk[i], str( v ) ) 
    24912558 
    2492             vid = str( t[2] ) 
     2559            vid = item.getAttribute( 'vid' ) 
    24932560            if vid in self.fix.fixcmv: 
    24942561               if self.fix.fixcmv[vid][3] == u'replace': 
     
    24962563                 if vidn not in self._cmvLabByUid: 
    24972564                   print 'SEVERE.fixcmv.00040: attempt to redirect request to non-existant variable: %s,%s,%s::%s' % (vid,vidn,thisl,str(self.fix.fixcmv[vid]) ) 
    2498                  item.setAttribute( 'vid', str( self.fix.fixcmv[vid][4] ) ) 
    2499                  print 'INFO.fixcmv.00050: replacing link in requestVar  %s' % str(t) 
     2565                 labn =  self.cmvByUid[vidn][2] 
     2566                 if vid in self.cmvByUid: 
     2567                    lab =  self.cmvByUid[vid][2] 
     2568                    if lab != labn: 
     2569                      print 'WARN.fixcmv.00001: label change: %s -- %s (%s --> %s)' % (lab,labn,vid,vidn) 
     2570                 elif labn != thisl: 
     2571                      print 'WARN.fixcmv.00002: label change [2]: %s -- %s (%s --> %s)' % (thisl,labn,vid,vidn) 
     2572                 item.setAttribute( 'vid', vidn ) 
     2573                 print 'INFO.fixcmv.00050: replacing link in requestVar  %s  %s %s' % (str(t),vidn,labn) 
    25002574 
    25012575            newd = None 
     
    25042578              mm = self.importWbMods.mmsi.ss[vid] 
    25052579              ##newd = self._editRequestVar01( item, mm, t, {} ) 
     2580 
     2581            vid = item.getAttribute( 'vid' ) 
     2582            if vid not in self.cmvByUid: 
     2583               print 'ERROR.reqvar.000001: vid not found: %s' % str(t) 
     2584            else: 
     2585               lab0 =  self.cmvByUid[vid][2] 
     2586               if vid not in self._cmvLabByUid: 
     2587                  print 'WARN.cmvlab.00020: no _cmv.. record ... %s   %s: %s' % (vid,lab,str( self.cmvByUid[vid] ) ) 
     2588               else: 
     2589                  lab = self._cmvLabByUid[vid] 
     2590               if lab != lab0: 
     2591                  print 'WARN.cmvlab.00010: difference in records ... %s   %s: %s' % (vid,lab,str( self.cmvByUid[vid] ) ) 
     2592               if lab != thisl: 
     2593                  ##print 'INFO.reqvar.00001: inconsistent requestvar label: %s --> %s (%s)' % (thisl, lab, vid) 
     2594                  print 'INFO.reqvar.00001: changing requestvar label: %s --> %s' % (thisl, lab) 
     2595                  item.setAttribute( 'label', lab ) 
     2596  
    25062597 
    25072598            tm = item.getAttribute( 'mip' ) 
     
    28922983         item.setAttribute( kk, cc[kk] ) 
    28932984       this.appendChild( item ) 
    2894        print 'INFO.zzz.00008: Appending ',cc[kk] 
     2985       ##print 'INFO.zzz.00008: Appending ',cc[kk] 
    28952986 
    28962987    this = self.doc.getElementsByTagName('varChoiceLinkR')[0] 
     
    29002991    for cc in ccfg.varChoiceLnk: 
    29012992       item = self.doc.createElement( 'item' ) 
    2902        print 'INFO.zzz', cc 
     2993       ##print 'INFO.zzz', cc 
    29032994       for i in range( len( ccfg.varChoiceLnkInfo ) ): 
    29042995         item.setAttribute( ccfg.varChoiceLnkInfo[i], cc[i] ) 
Note: See TracChangeset for help on using the changeset viewer.