Ignore:
Timestamp:
20/01/16 17:01:33 (5 years ago)
Author:
mjuckes
Message:

cleaning CMOR tables

File:
1 edited

Legend:

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

    r546 r555  
    399399 
    400400  def prepRequestLink(self): 
    401       s0 = {' ta, ua, va, zg, hus', 'zg', 'utendogw, utendnogw, vtendogw,vtendnogw', 'tntogw,tntnogw', 'tasmax,tasmin,pr,prc,uas,vas', 'utendogw,utendnogw, and psistar, utendvstarad, utendwstarad', ' ta, ua, va, wap, zg, hus', 'vstar, wstar, fy, fz, utenddivf, utendogw, utendnogw, diabdrag[utenddiabdrag]', 'vmro3', 'tauu,tauv, tauu_pbl, tauv_pbl', 'tauu,tauv, tauu-pbl, tauv-pbl', ' tas, pr, psl', 'vstar, wstar, fy, fz, utenddivf', ' tas, pr, psl, uas', 'zmtnt, tntlw, tntsw', 'pr,prc' } 
     401      s0 = {' ta, ua, va, zg, hus', 'zg', 'utendogw, utendnogw, vtendogw,vtendnogw', 'tntogw,tntnogw', 'tasmax,tasmin,pr,prc,uas,vas', 'utendogw,utendnogw, and psistar, utendvstarad, utendwstarad', ' ta, ua, va, wap, zg, hus', 'vstar, wstar, fy, fz, utenddivf, utendogw, utendnogw, diabdrag[utenddiabdrag]', 'vmro3', 'tauu,tauv, tauu_pbl, tauv_pbl', 'tauu,tauv, tauu-pbl, tauv-pbl', ' tas, pr, psl', 'vstar, wstar, fy, fz, utenddivf', ' tas, pr, psl, uas', 'zmtnt, tntlw, tntsw', 'pr,prc', 
     402      'concdust,concaerh2o,reffclwc,emiso4,loadso4,concso2,emidust,emiss,conccmcn,emiso2,concnmcn,concss,reffclws,loadss,conccn', 
     403      'rsdsdiff,dryso4,wetso2,cldnci,od550lt1aer,reffclwtop,dryss,wetso4,sconcso4,cldncl,abs550aer,wetss,rsdscsdiff,wetdust,ec550aer,cldnvi,dryso2,drydust,od550aer,sconcss,sconcdust', 
     404      'thkcello,wmo,uo,hfnorth,tos,sos,soga,masscello,hfy,msftmrhoz,masso,pso,mlotst,zos,zostoga,rhopoto,hfydiff,hfbasin,ficeberg2d,thetao,so,zossga,dpco2,msftmyz,tauvo,sfdsi,msftyrhoz,spco2,fddtalk,hfxdiff,omlmax,htovovrt,sltovovrt,vmo,tauuo,volo,zsatarag,fgco2,zosga,wfo,vo,msftyyz,mfo,ficeberg,friver,msftbarot,umo,intpcalcite,intparag,fddtdic,hfx,agessc,hfbasindiff', 
     405      'difvmo,difvho,difvso' } 
    402406      s1 = {'vstar, wstar, fy, fz, acceldivf[utenddivf], accelogw[utendogw], accelnogw[utendnogw], diabdrag[utenddiabdrag]'} 
    403407      self.varGroupSs2 = collections.defaultdict( cls_s1 ) 
     
    442446            self.varGroupSs2[str(rr[-1])].a[(m,tuple(vl))].append(rr[0]) 
    443447            print 'INFO.077.07080: ',m,vl, rr[-1] 
     448 
     449## 
     450## not finding new variables .... may be better to redefine the groups ... 
     451## 
    444452### 
    445453### get full list of variables for each variable group 
     
    452460          ll = thissh[k][:] 
    453461          vgid = self.prqv.rqv_vg['%s.%s.%s' % (ll[2],ll[1],ll[0])] 
    454           if ll[1][:5] == 'CFMIP': 
    455              print 'INFO.802.00001: ',ll, vgid in self.varGroupSubset.keys() 
     462          ##if ll[1][:4] == 'DYVR': 
     463          print 'INFO.802.00001: ',ll, vgid in self.varGroupSubset.keys() 
    456464          if vgid in self.varGroupSubset.keys(): 
    457465             varGroupFull[vgid][ll[0]] = k 
     
    468476       if not (k in varGroupFull): 
    469477         nf.append(k) 
     478 
    470479      if len(nf) != 0: 
    471480        for k in nf: 
     
    719728            il = kk.index( 'levels' ) 
    720729            iu = kk.index( 'uid' ) 
     730            idx = kk.index( 'descriptionEx' ) 
    721731            ixvid = kk.index( 'vid' ) 
    722732            ixvar = kk.index( 'var' ) 
     
    771781                  rr[il] = lev0 
    772782                  tt = thisnt._make( rr + [rr[1] + str(lev0),] ) 
    773                 elif rr[il] == u'Model levels or 27Plevs': 
     783                elif rr[il] in [u'Model levels or plev_27', u'Model levels or 27Plevs',u'27',27.]: 
    774784                  rr0 = rr + [rr[1] + '27',] 
     785                  print 'INFO.0088.07007: ',rr0 
    775786                  rr0[il] = 27 
    776787                  rr0[iu] = str( uuid.uuid1() ) 
     
    782793                  if str(tt.vid) == '__var_not_found_012__': 
    783794                    print 'ERROR.099.00105: bad vid string: %s [%s]' % (tt.vid,tt.var) 
    784                   gi.append( tt ) 
    785                   rr[il] = 'all' 
    786                   tt = thisnt._make( rr + [rr[1],] ) 
     795## 
     796## no longer requesting all option of "all or ..." 
     797## 
     798                  ##gi.append( tt ) 
     799                  ##rr[il] = 'all' 
     800                  ##tt = thisnt._make( rr + [rr[1],] ) 
    787801                  varsets.append( (rr0[iu], 0, rr[iu], 0, 'Variables on model levels or 27 pressure levels' ) ) 
     802                elif string.find( rr[idx], '850 hPa' ) != -1: 
     803                  print 'INFO.0099.0016: ', rr 
     804                  if rr[1][-3:] != '850': 
     805                    rr = rr + [rr[1] + '850',] 
     806                  else: 
     807                    rr = rr + [rr[1],] 
     808                  tt = thisnt._make( rr ) 
    788809                else: 
    789810## 
     
    10121033        t1 = (dims,cmet,cmea,flgv,flgm) 
    10131034        u = lls.add( [u,label,spid,tmid, odim, crd, cmet, cmea, flgv, flgm, desc, proc, prov] ) 
    1014         self.structInfo[u] = (label,cmet) 
     1035        self.structInfo[u] = (label,cmet,spid) 
    10151036        strdd[t0] = u 
    10161037        strdd[t1] = u 
     
    10751096          ee1[(tmid, spid, odim, cmet, cmea, crd)] = u 
    10761097        strdd[(shp,lvls,sty,gr,tmsk,flgv,flgm)] = u 
    1077         self.structInfo[u] = (label,cmet) 
     1098        self.structInfo[u] = (label,cmet,spid) 
    10781099 
    10791100    ##nt_dims = collections.namedtuple( 'dims', ['uid','label','spid','tmid','odims','coords','cell_methods','cell_measures','flag_values','flag_meanings','description','procNote','prov'] ) 
     
    11101131      et[self.dimsTime[l][1]] = l 
    11111132    nt_acv = collections.namedtuple( 'acv', ['sn','title','label', 'units', 'description', 'subsect', 'freq', 'splab', 'tm' ] ) 
     1133    freq_map = {'hourly':'1hr', 'annual':'yr', 'daily':'day', 'fixed':'fx'}  
    11121134    for t in lc.cc2.keys(): 
    11131135      nn = 0 
     
    11231145        tt = nt_acv._make( lc.cc2[t].a[v][0] ) 
    11241146        thisrealm = 'unset' 
    1125         thiscmv = (uuid.uuid1(), (tt.splab,tt.tm), tt.label, 'AerChemMIP', tt.description, self.vars1[v1][0], '','','','','float','','','','',"aero",'','','','AerChemMIP','',tt.freq, 0, '', 1) 
     1147        freq = freq_map.get( tt.freq, tt.freq ) 
     1148        ntab = 'aer%s' % freq 
     1149        thiscmv = (uuid.uuid1(), (tt.splab,tt.tm), tt.label, 'AerChemMIP', tt.description, self.vars1[v1][0], '','','','','float','','','','',"aero",'','',ntab,'AerChemMIP','',freq, 0, '', 1) 
    11261150        self.cmv.append( thiscmv ) 
    11271151      print 'INFO.kkkkk: AerChem Vars found: %s: %s' % (t,nn) 
     
    12751299              if ii > 35: 
    12761300                ii = 39 
     1301## 
     1302## merge 14 and 17 level specifications to a 19 level coordinate 
     1303## 
     1304              if ii in [14,17]: 
     1305                ii = 19 
    12771306              this = 'plev%s' % ii 
    12781307            else: 
     
    16881717          kfreq = self.cmvinfo.index('frequency') 
    16891718          kstr = self.cmvinfo.index('stid') 
     1719            ##self.spatialDims[rr[0]] = rr[3] 
    16901720          s1 = set() 
    16911721          for r in self.cmv: 
     
    17401770### reset table name for OImon ... correcting for frequency as well 
    17411771### 
     1772              mtable = r[ktable] 
    17421773              if r[ktable] == 'OImon': 
    17431774                if r[kfreq] == 'mon': 
    1744                     item.setAttribute( 'mipTable', 'SImon' ) 
     1775                    mtable = 'SImon' 
     1776                    #item.setAttribute( 'mipTable', 'SImon' ) 
    17451777                else: 
    1746                     item.setAttribute( 'mipTable', 'SIday' ) 
     1778                    mtable = 'SIday' 
     1779                    #item.setAttribute( 'mipTable', 'SIday' ) 
    17471780              elif r[ktable] in ['em6hr','em3hr','emDay']: 
    17481781                if stid in self.structInfo: 
    17491782                  if string.find( self.structInfo[stid][1], 'time: point' ) != -1: 
    1750                     item.setAttribute( 'mipTable', r[ktable] + 'pt' ) 
     1783                    mtable += 'pt' 
     1784                  if string.find( self.spatialDims[ self.structInfo[stid][2] ], 'longitude' ) == -1: 
     1785                    mtable += 'Z' 
    17511786                else: 
    17521787                    print 'WARN.090.09999: structure uid not found',stid, r 
     1788              if mtable != r[ktable]: 
     1789                item.setAttribute( 'mipTable', mtable ) 
    17531790              if str(vid) not in self.importWbMods.vars.d1: 
    17541791  
     
    18011838 
    18021839     ##    self.dimsSpaceInfo = ['uid','label','title','dimensions','levelFlag','levels'] 
     1840          self.spatialDims = {} 
    18031841          for k in self.dimsSpace.keys(): 
    18041842            rr = self.dimsSpace[k] 
     
    18121850              rr = list(rr) 
    18131851              rr[3] = kk 
     1852            self.spatialDims[rr[0]] = rr[3] 
    18141853            if kk not in spsResets: 
    18151854              item = self.doc.createElement( 'item' ) 
Note: See TracChangeset for help on using the changeset viewer.