Ignore:
Timestamp:
17/06/16 13:48:44 (4 years ago)
Author:
mjuckes
Message:

near release

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/src/framework/scanDreq.py

    r677 r680  
    5353 
    5454varRefs = makeVarRefs( inx.uid, inx.var, inx.iref_by_uid) 
     55 
     56class addUnits(object): 
     57  def __init__(self,dq,wbi='units/units.xlsx'): 
     58    eqs = [('N m-1', 'kg s-2', 'J m-2'), ('Pa', 'N m-2', 'kg m-1 s-2'), ('cm-1','km-1','m-1')     ] 
     59    eqss = ['N m-1','Pa','m-1','m','s','1','m s-2','m2','m3' ] 
     60 
     61    wb = workbook( wbi ) 
     62    sh = wb.book.sheet_by_name('units') 
     63    self.repl = {} 
     64    self.uu = {} 
     65    for j in range(1,sh.nrows): 
     66      r = sh.row(j) 
     67      if len(r) > 5 and r[5].value != u'': 
     68        self.repl[ r[0].value ] = r[5].value 
     69      else: 
     70        self.uu[r[0].value] = [x.value for x in r] 
     71 
     72    for k in self.repl: 
     73      if self.repl[k] not in self.uu: 
     74        print 'Bad replacement found: %s --> %s' % (k,self.repl[k]) 
     75 
     76    for i in dq.coll['var'].items: 
     77      if i.units in self.repl: 
     78        u = self.repl[i.units] 
     79      else: 
     80        u = i.units 
     81      u = string.strip(u) 
     82      if str(u) == '1.0': 
     83        u = '1' 
     84      if u not in self.uu: 
     85        print 'UNITS NOT FOUND: %s (%s)' % (u,i.label) 
     86 
     87  def uid(self,u0): 
     88    if u0 in self.repl: 
     89      u = self.repl[u0] 
     90    else: 
     91      u = u0 
     92    if u in self.uu: 
     93      return self.uu[u][7] 
     94    else: 
     95      return None 
     96 
    5597 
    5698class updates(object): 
     
    600642       dumpxlsx( 'csv2/var.xlsx', k, atl1 ) 
    601643   
    602 oo = open( 'var1.csv', 'w' ) 
    603 ks = ['label','title','sn','units','description','prov','procnote','procComment','uid'] 
    604 ks2 = [ 'ovar','groupItem','revisedTabItem'] 
    605 oo.write( string.join(ks + ks2, '\t' ) + '\n' ) 
    606 for i in dq.coll['var'].items: 
    607    if i.label[-2:] != '--': 
    608      ee1 = varRefs.get( i.uid, {} ) 
    609      r2 = map( lambda x: string.join( atRepr( ee1.get(x, [] ), None ) ), ks2 ) 
    610      oo.write( string.join(map( lambda x: atRepr(i,x), ks) + r2, '\t' ) + '\n' ) 
    611 oo.close() 
    612  
    613644class annotate(object): 
    614645  def __init__(self,src,dreq): 
     
    617648    self.dreq = dreq 
    618649    self.removedUids = {} 
     650 
     651  def iniVar(self,dq): 
     652    a = addUnits(dq) 
    619653    this = self.doc.getElementsByTagName('var')[0] 
    620654    dil = this.getElementsByTagName('item') 
     
    625659      label = item.getAttribute( 'label' )   
    626660      self.vid[uid] = (label,title) 
     661      units = item.getAttribute( 'units' )   
     662      u2 = a.uid( units ) 
     663      if u2 != None: 
     664        item.setAttribute( 'unid', u2 ) 
     665      else: 
     666        print 'Units not recognised: %s (%s)' % (units,label) 
    627667      
    628668  def strTtl(self,dq): 
     
    822862          new2.setAttribute( 'mip', 'OMIP' ) 
    823863          new2.setAttribute( 'table', 'OMIP-Omon' ) 
    824           ##if vid not in dq.inx.uid: 
    825             ##print 'ERROR.005.0001: vid %s not found' % vid 
     864 
    826865          if omipOmonUid not in dq.inx.uid: 
    827866            print 'ERROR.005.0001: vgid %s not found' % omipOmonUid 
    828867           
    829868          thisRqv.appendChild(new2) 
    830  
    831869 
    832870  def missingRefs(self,mrefs,dq,clear=True): 
     
    878916    oo.close() 
    879917 
    880 doAnno = True 
    881 if doAnno: 
     918def anno(): 
     919  oo = open( 'var1.csv', 'w' ) 
     920  ks = ['label','title','sn','units','description','prov','procnote','procComment','uid'] 
     921  ks2 = [ 'ovar','groupItem','revisedTabItem'] 
     922  oo.write( string.join(ks + ks2, '\t' ) + '\n' ) 
     923  for i in dq.coll['var'].items: 
     924     if i.label[-2:] != '--': 
     925       ee1 = varRefs.get( i.uid, {} ) 
     926       r2 = map( lambda x: string.join( atRepr( ee1.get(x, [] ), None ) ), ks2 ) 
     927       oo.write( string.join(map( lambda x: atRepr(i,x), ks) + r2, '\t' ) + '\n' ) 
     928  oo.close() 
     929 
    882930  an = annotate( dq.c.vsamp, dq ) 
    883931  ###an.sectionCopy(dq) 
     932  an.iniVar( dq ) 
    884933  an.fixCellMethods(dq) 
    885934  an.mipProv(dq) 
     
    890939    print 'WARN.REMOVED: %s: %s' % (k,an.removedUids[k]) 
    891940  an.missingRefs( dq.inx.missingIds, dq ) 
     941 
     942if __name__ == '__main__': 
     943  anno() 
Note: See TracChangeset for help on using the changeset viewer.