Ignore:
Timestamp:
10/09/15 11:10:54 (5 years ago)
Author:
mjuckes
Message:

misc

File:
1 edited

Legend:

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

    r375 r382  
    3131class main(object): 
    3232 
    33   def __init__(self,src,rq): 
     33  def __init__(self,src,rq,repl=False): 
    3434    self.src=src 
    3535    self.repl = collections.defaultdict( list ) 
    3636    self.err0010 = collections.defaultdict( int ) 
    3737    self.replItems = {} 
    38     self.importRepl() 
    39     self.importRemove() 
    40     self.importUpdate() 
    41     self.importInsert() 
     38    self.remo = {} 
     39    self.upda = {} 
     40    self.insert = {} 
     41    if repl: 
     42      self.importRepl() 
     43      self.importRemove() 
     44      self.importUpdate() 
     45      self.importInsert() 
     46    self.e15_10 = 0 
    4247    
    4348    fok = [test(os.path.isfile(src),'%s not found' % src), ] 
     
    4550    assert all( fok), 'Required input file(s) missing' 
    4651 
    47     for sh in [rq.refti, rq.revti, rq.vars, rq.grps, rq.rqvg, rq.rqli, rq.rqit]: 
     52    for sh in [rq.refti, rq.revti, rq.vars, rq.grps, rq.rqvg, rq.rqli, rq.rqit, rq.rqsect]: 
    4853       print sh['__info__'] 
    4954 
     
    6570    print xsn 
    6671    print ff.keys() 
     72 
     73    addex = False 
     74    exrqvg = {} 
     75    if addex: 
     76      ###  
     77      extravg = [['OMIP', u'OMIP-Oyr', u'OMIP: OMIP-Oyr', 'CMIP5Rev', u'OMIP.Oyr'], 
     78               ['OMIP', u'OMIP-Omon', u'OMIP: OMIP-Omon', 'CMIP5Rev', u'OMIP.Omon'], 
     79               ['OMIP', u'OMIP-day', u'OMIP: OMIP-day', 'CMIP5Rev', u'OMIP.day'], 
     80               ['OMIP', u'OMIP-fx', u'OMIP: OMIP-fx', 'CMIP5Rev', u'OMIP.fx'] ] 
     81      for r in extravg: 
     82        thisuuid = str( uuid.uuid1() ) 
     83        exrqvg[thisuuid] = [thisuuid ,] + r[:] 
    6784     
    6885    self.eern = collections.defaultdict( list ) 
     
    7087    ixrn = 5 
    7188    dups = [] 
    72     for k in rq.rqvg.keys(): 
    73       if k[0] != '_': 
     89    ##for k in rq.rqvg.keys(): 
     90      ##if k[0] != '_': 
     91    for i,k in [ (rq.rqvg[k],k) for k in  rq.rqvg.keys() if k[0] != '_'] + [(exrqvg[k],k) for k in exrqvg.keys()]: 
    7492        kk = ['uid', 'mip', 'tab', 'objective', 'grid', 'gridreq', 'comment', 'ref', 'refNote', 'refid'] 
    7593        kk = ['uuid', 'mip', 'label', 'title', 'ref', 'refNote'] 
    76         i = rq.rqvg[k] 
     94        ##i = rq.rqvg[k] 
    7795         
    7896        self.eern[i[ixrn]].append( i[0] ) 
    7997        k2 = '%s__%s' % (i[ixrn-1],i[ixrn]) 
    8098        if self.eern2.has_key( k2 ): 
    81            dups.append( k2 ) 
     99           dups.append( (k2,k,self.eern2[k2]) ) 
    82100        self.eern2[k2] = i[0] 
    83101        assert i[0] == k, 'Bad key/uuid' 
    84102 
    85     assert len( dups ) == 0, 'Duplicate refs: %s' % str(dups) 
     103    assert len( dups ) == 0, 'Duplicate refs: %s, %s' % (str(dups),str(map( lambda x: rq.rqvg[x[1]], dups )) ) 
    86104         
    87     for k in [ 'var','ovar','groupitem', 'revisedtabitem', 'requestlink', 'requestitem','requestvargroup' ]: 
     105    for k in [ 'var','ovar','groupitem', 'revisedtabitem', 'requestlink', 'requestitem','requestvargroup','tablesection' ]: 
    88106    ##for k in [ 'var']: 
    89107      thissh = {'var':rq.vars,'ovar':rq.refti, 'groupitem':rq.grps, \ 
    90108         'revisedtabitem':rq.revti, 'requestlink':rq.rqli, 'requestitem':rq.rqit, \ 
    91          'requestvargroup':rq.rqvg}[k] 
     109         'requestvargroup':rq.rqvg, 'tablesection':rq.rqsect}[k] 
    92110      lll = [] 
    93111      for i in thissh.keys(): 
     
    151169       u'PMIP3_Oclim':'monClim', u'SPECS_Amon':'mon', u'SPECS_Lmon':'mon', u'CMIP5_cf3hr':'3hr', u'CORDEX_3h':'3hr', \ 
    152170       u'CCMI1_annual':'yr', u'CMIP5_Oyr':'yr'} 
    153             kk = ['uuid', 'comment', 'deflate_level', 'shuffle', 'ok_max_mean_abs', 'flag_meanings', 'type', 'ok_min_mean_abs', 'sn', 'deflate', 'title', 'valid_min', 'cell_methods', 'flag_values', 'cell_measures', 'out_name', 'modeling_realm', 'units', 'cell_methods_xx', 'valid_max', 'positive', 'var', 'mipTable', 'dimensions', 'vid'] 
     171            kk = ['uuid', 'comment', 'deflate_level', 'shuffle', 'ok_max_mean_abs', 'flag_meanings', 'type', 'ok_min_mean_abs', 'sn', 'deflate', 'title', 'valid_min', 'cell_methods', 'flag_values', 'cell_measures', 'out_name', 'modeling_realm', 'units', 'cell_methods_xx', 'valid_max', 'positive', 'var', 'mipTable', 'dimensions', 'vid', 'gpid','rowIndex'] 
    154172## uuid; comment; deflate_level; shuffle; ok_max_mean_abs; flag_meanings; type; ok_min_mean_abs; sn; deflate; valid_min; cell_methods; flag_values; cell_measures; out_name; modeling_realm; units; cell_methods_xx; valid_max; positive; var; mipTable; dimensions; vid 
    155             thisl = string.strip(str( ll[21] ) ) 
    156             for j in range(len(kk)): 
     173 
     174            thisl = string.strip( str( ll[21] ) ) 
     175            for j in range( min(len(kk),len(ll)) ): 
    157176              if j != 21: 
    158177                item.setAttribute( kk[j], str( ll[j] ) ) 
    159             item.setAttribute( 'frequency', tab2freq[ll[22]] ) 
     178            if len(ll) < len(kk): 
     179              print 'ERROR.015.0001: record length short %s (%s):: %s' % (len(ll),len(kk),ll) 
     180 
     181            if ll[22][-3:] in ['mon','day','3hr']: 
     182              fr = ll[22][-3:] 
     183            elif ll[22][-2:] in [ 'yr','fx']: 
     184              fr = ll[22][-2:] 
     185            else: 
     186              fr = tab2freq[ll[22]] 
     187    
     188            item.setAttribute( 'frequency', fr ) 
    160189            thisuuid = ll[0] 
    161190            if self.repl.has_key( thisuuid ): 
     
    171200            for j in range(len(kk)): 
    172201              if j != 1: 
    173                 item.setAttribute( kk[j], str( ll[j] ) ) 
     202                ##item.setAttribute( kk[j], str( ll[j] ) ) 
     203                if kk[j] == 'misc': 
     204                  item.setAttribute( 'priority', str( ll[j] ) ) 
     205                else: 
     206                  item.setAttribute( kk[j], str( ll[j] ) ) 
    174207            item.setAttribute( 'title', thisl ) 
    175208            if string.find(thisl, ' ') != -1: 
    176209              thisl = string.split(thisl)[0] 
    177210            thisuuid = ll[11] 
     211            gpid = str(ll[-3]) 
     212            if not rq.rqvg.has_key(gpid): 
     213              print 'ERROR.015.0010: gpid not found %s' % str(ll) 
     214              self.e15_10 += 1 
    178215            if self.repl.has_key( thisuuid ): 
    179216              for tag,old,new in self.repl[thisuuid]: 
     
    183220################################## 
    184221          elif k == 'revisedtabitem': 
     222#### need to fill gaps in variable groups --- or do better job upstream ##########  !!!!!!!!!!!!!!!! 
    185223## - table; mip; uuid; priority 
     224## 
     225## variable group ids pulled through via mapping above .. very messy  
     226## still missing some OMIP matches .... OMIP revised tables are not explicitly requested anywhere. 
     227## 
    186228            kk = ['var', 'table', 'mip', 'vid', 'priority'] 
    187             kvg = 'rev__%s.%s' % ( ll[2],ll[1] ) 
     229            kvg = 'CMIP5Rev__%s.%s' % ( ll[2],ll[1] ) 
     230            kvg3 = 'rev__%s.%s' % ( ll[2],ll[1] ) 
    188231            if self.eern2.has_key(kvg): 
    189232              vgid = self.eern2[kvg] 
     233            elif self.eern2.has_key(kvg3): 
     234              vgid = self.eern2[kvg3] 
     235            elif cmip5GrpLk[ll[1]].has_key(ll[0]): 
     236              g2 = cmip5GrpLk[ll[1]][ll[0]] 
     237              kvg2 = 'CMIP5Rev__%s.%s' % ( ll[2],g2 ) 
     238              if self.eern2.has_key(kvg2): 
     239                vgid = self.eern2[kvg2] 
     240              else: 
     241                vgid = '__vg_not_found_1__' 
     242                self.err0010[kvg] += 1 
    190243            else: 
    191               vgid = '__none__' 
     244              vgid = '__vg_not_found_2__' 
    192245              self.err0010[kvg] += 1 
    193246            thisuuid = str( uuid.uuid1() ) 
     
    207260          elif k == 'requestlink': 
    208261 ## - uuid; mip; tab; objective; grid; gridreq; comment 
    209             kk = ['uid', 'mip', 'tab', 'objective', 'grid', 'gridreq', 'comment', 'ref', 'refNote', 'refid'] 
     262            kk = ['uid', 'mip', 'tab', 'objective', 'grid', 'gridreq', 'comment', 'opt','opar','ref', 'refNote', 'refid'] 
    210263            emap = {'uid':'uuid'} 
    211264            thisl = string.strip(str( ll[2] ) ) 
    212265            for j in range(len(kk)): 
    213266                thiskk = emap.get(  kk[j],  kk[j] ) 
    214                 item.setAttribute( thiskk, str( ll[j] ) ) 
     267                try: 
     268                  item.setAttribute( thiskk, str( ll[j] ) ) 
     269                except: 
     270                  print 'ERROR.099.0001: Failed to set attribute: %s [%s]' % (str(ll),j) 
     271                  item.setAttribute( thiskk, '__error_99_1__' ) 
     272 
    215273            item.setAttribute( 'title', thisl ) 
    216274################################## 
     
    228286            item.setAttribute( 'uuid', str(i) ) 
    229287################################## 
    230           elif k == 'requestvargroup': 
    231             kk = ['uuid', 'mip', 'label', 'title', 'ref', 'refNote'] 
     288          elif k in ['requestvargroup','tablesection']: 
     289            if k == 'requestvargroup': 
     290              kk = ['uuid', 'mip', 'label', 'title', 'ref', 'refNote'] 
     291            else: 
     292              kk = ['uuid', 'gpid', 'mip', 'label', 'title', 'ref', 'refNote'] 
    232293            thisl = string.replace( str( ll[2] ), '.', '-' ) 
    233294            for j in range(len(kk)): 
     
    260321            print '******************************************' 
    261322             
     323    ##for k in rqvg_extra.keys(): 
     324            ##item = doc.createElement( 'item' ) 
     325            ##ff['...' ][0].appendChild( item ) 
     326 
    262327    this = doc.getElementsByTagName('remarks')[0] 
    263328    dil = this.getElementsByTagName('item') 
     
    284349 
    285350  def importRemove(self,rfile='uuidremove.csv'): 
    286     self.remo = {} 
    287351    for l in open(rfile).readlines(): 
    288352      self.remo[ string.strip(l) ] = 1 
    289353 
    290354  def importUpdate(self,rfile='uuidupdate.csv'): 
    291     self.upda = {} 
    292355    for l in open(rfile).readlines(): 
    293356      bits = string.split( string.strip(l), '\t' ) 
     
    300363 
    301364  def importInsert(self,rfile='uuidinsert.csv'): 
    302     self.insert = {} 
    303365    for l in open(rfile).readlines(): 
    304366      bits = string.split( string.strip(l), '\t' ) 
     
    307369 
    308370sampleXml = '../framework/out/dreqSample.xml' 
     371cmip5GrpLk = collections.defaultdict( dict ) 
    309372from scansh import rq 
     373 
     374for k in rq.cmip5Grps.keys(): 
     375  bits = string.split(k,'_') 
     376  tab = bits[0] 
     377  for v in rq.cmip5Grps[k]: 
     378    cmip5GrpLk[tab][v] = k 
    310379m = main(sampleXml, rq) 
    311380if len(m.err0010.keys()) > 0: 
Note: See TracChangeset for help on using the changeset viewer.