Changeset 383


Ignore:
Timestamp:
15/09/15 11:55:28 (5 years ago)
Author:
mjuckes
Message:

update

Location:
CMIP6dreqbuild/trunk/src/workbook
Files:
3 edited

Legend:

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

    r382 r383  
    1313from utils_wb import uniCleanFunc 
    1414 
     15class s1(object): 
     16  def __init__(self): 
     17    self.a = collections.defaultdict( list ) 
     18 
    1519empty=re.compile('^$') 
    1620 
     
    3943    self.upda = {} 
    4044    self.insert = {} 
     45 
     46    self.objectives = collections.defaultdict( dict ) 
     47    self.objectiveLinks = collections.defaultdict( dict ) 
     48 
    4149    if repl: 
    4250      self.importRepl() 
     
    5058    assert all( fok), 'Required input file(s) missing' 
    5159 
    52     for sh in [rq.refti, rq.revti, rq.vars, rq.grps, rq.rqvg, rq.rqli, rq.rqit, rq.rqsect]: 
     60    for sh in [rq.objec,rq.refti, rq.revti, rq.vars, rq.grps, rq.rqvg, rq.rqli, rq.rqit, rq.rqsect]: 
    5361       print sh['__info__'] 
    5462 
     
    103111    assert len( dups ) == 0, 'Duplicate refs: %s, %s' % (str(dups),str(map( lambda x: rq.rqvg[x[1]], dups )) ) 
    104112         
    105     for k in [ 'var','ovar','groupitem', 'revisedtabitem', 'requestlink', 'requestitem','requestvargroup','tablesection' ]: 
     113    for k in [ 'objective','var','ovar','groupitem', 'revisedtabitem', 'requestlink', 'requestitem','requestvargroup','tablesection' ]: 
     114## set labmod False for section in which label coercion is not wanted 
     115      labmod = True 
    106116    ##for k in [ 'var']: 
    107       thissh = {'var':rq.vars,'ovar':rq.refti, 'groupitem':rq.grps, \ 
     117## keys here match section element names in schema 
     118      thissh = {'objective':rq.objec, 'var':rq.vars,'ovar':rq.refti, 'groupitem':rq.grps, \ 
    108119         'revisedtabitem':rq.revti, 'requestlink':rq.rqli, 'requestitem':rq.rqit, \ 
    109120         'requestvargroup':rq.rqvg, 'tablesection':rq.rqsect}[k] 
     
    126137######### NEED TO CLEAN THIS IF ITEMS FROM OTHER SECTIONS ARE FILTERED 
    127138####################################################################### 
     139          dothis = True 
    128140          if k != 'var': 
    129141            item = doc.createElement( 'item' ) 
    130             item.setAttribute( 'id', 'tmpid.%4.4i' % idk ) 
    131           dothis = True 
    132           if k == 'var': 
     142          if k == 'objective': 
     143 ## - mip; tab; expt; rlid; ny 
     144            labmod = False 
     145            kk = ['mip', 'label', 'title', 'description'] 
     146            thisl = string.replace(string.strip(str( ll[1] ) ), '-', ' ') 
     147## camelcase this label. 
     148            thisl = string.replace( string.capwords( thisl ), ' ', '' ) 
     149            mip = str( ll[0] ) 
     150            self.objectives[mip][thisl] = i 
     151            for j in range(len(kk)): 
     152                thisv = str( ll[j] ) 
     153                item.setAttribute( kk[j], thisv ) 
     154            item.setAttribute( 'uuid', str(i) ) 
     155          elif k == 'var': 
    133156##- sn; units; description; procnote; procComment; prov 
    134157##['label', 'title', 'sn', 'units', 'description', 'procnote', 'procComment', 'prov'] 
     
    169192       u'PMIP3_Oclim':'monClim', u'SPECS_Amon':'mon', u'SPECS_Lmon':'mon', u'CMIP5_cf3hr':'3hr', u'CORDEX_3h':'3hr', \ 
    170193       u'CCMI1_annual':'yr', u'CMIP5_Oyr':'yr'} 
    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'] 
     194            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','priority'] 
    172195## 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 
     196            ix_gpid = kk.index( 'gpid' ) 
    173197 
    174198            thisl = string.strip( str( ll[21] ) ) 
    175199            for j in range( min(len(kk),len(ll)) ): 
     200              if kk[j] == 'priority': 
     201                ll[j] = int(ll[j]) 
     202                 
    176203              if j != 21: 
    177204                item.setAttribute( kk[j], str( ll[j] ) ) 
     205 
    178206            if len(ll) < len(kk): 
    179207              print 'ERROR.015.0001: record length short %s (%s):: %s' % (len(ll),len(kk),ll) 
     
    197225            assert len(kk) == len(ll), 'length mismatch, %s  %s' % (len(kk),len(ll)) 
    198226# - group;  table; freq; descriptionEx; shape; levels; tstyle; mask; mip; mip2; uuid; new; vid 
     227            ix_gpid = kk.index( 'gpid' ) 
    199228            thisl = string.strip(str( ll[1] ) ) 
    200229            for j in range(len(kk)): 
     
    209238              thisl = string.split(thisl)[0] 
    210239            thisuuid = ll[11] 
    211             gpid = str(ll[-3]) 
     240 
     241            gpid = str(ll[ix_gpid]) 
    212242            if not rq.rqvg.has_key(gpid): 
    213243              print 'ERROR.015.0010: gpid not found %s' % str(ll) 
     
    262292            kk = ['uid', 'mip', 'tab', 'objective', 'grid', 'gridreq', 'comment', 'opt','opar','ref', 'refNote', 'refid'] 
    263293            emap = {'uid':'uuid'} 
     294            mip = string.strip(str( ll[1] ) ) 
     295            obj = string.strip(str( ll[3] ) ) 
     296            if mip == "GMMIP": 
     297              bits = string.split( obj, ' ' ) 
     298            else: 
     299              bits = [ string.replace( string.capwords( string.strip(x) ), ' ', '' ) for x in string.split( obj, ',' ) ] 
     300            for b in bits: 
     301              self.objectiveLinks[mip][b] = str( ll[0] ) 
     302         
    264303            thisl = string.strip(str( ll[2] ) ) 
    265304            for j in range(len(kk)): 
     
    279318            for j in range(len(kk)): 
    280319                if kk[j] == 'ny': 
    281                   thisv = str( int(ll[j]) ) 
     320                  if ll[j] == '': 
     321                    thisv = 0 
     322                  else: 
     323                    try: 
     324                      thisv = str( int(ll[j]) ) 
     325                    except: 
     326                      print 'SEVERE: failed to set "ny": %s' % str(ll) 
     327                      thisv = 999 
    282328                else: 
    283329                  thisv = str( ll[j] ) 
     
    296342#### 
    297343          if dothis: 
    298             if string.find( thisl, '_' ) != -1: 
     344            if labmod: 
     345              if string.find( thisl, '_' ) != -1: 
    299346              #print 'WARNING: underscore in label', ll 
    300               thisl = string.replace( thisl, '_', '-' ) 
    301             if string.find( thisl, '*' ) != -1: 
    302               #print 'WARNING: star in label', ll 
    303               thisl = string.replace( thisl, '*', '-' ) 
    304             if string.find( thisl, '!' ) != -1: 
     347                thisl = string.replace( thisl, '_', '-' ) 
     348              if string.find( thisl, '*' ) != -1: 
     349                #print 'WARNING: star in label', ll 
     350                thisl = string.replace( thisl, '*', '-' ) 
     351              if string.find( thisl, '!' ) != -1: 
    305352              #print 'WARNING: exclamation in label', ll 
    306               thisl = string.replace( thisl, '!', '-' ) 
    307             if string.find( thisl, ' ' ) != -1: 
     353                thisl = string.replace( thisl, '!', '-' ) 
     354              if string.find( thisl, ' ' ) != -1: 
    308355              #print 'WARNING: space in label', ll 
    309               thisl = string.replace( thisl, ' ', '-' ) 
    310             if string.find( thisl, ':' ) != -1: 
     356                thisl = string.replace( thisl, ' ', '-' ) 
     357              if string.find( thisl, ':' ) != -1: 
    311358              #print 'WARNING: colon in label', ll 
    312               thisl = string.replace( thisl, ':', '-' ) 
     359                thisl = string.replace( thisl, ':', '-' ) 
    313360            item.setAttribute( 'label', thisl ) 
    314361            if k == 'var': 
     
    321368            print '******************************************' 
    322369             
    323     ##for k in rqvg_extra.keys(): 
    324             ##item = doc.createElement( 'item' ) 
    325             ##ff['...' ][0].appendChild( item ) 
    326  
     370 
     371 
     372 
     373  def finish(self): 
    327374    this = doc.getElementsByTagName('remarks')[0] 
    328375    dil = this.getElementsByTagName('item') 
  • CMIP6dreqbuild/trunk/src/workbook/scansh.py

    r382 r383  
    2424    self.rqvg = sopen( 'requestVarGroup' ) 
    2525    self.rqsect = sopen( 'requestVarSections' ) 
     26    self.objec = sopen( 'objectives' ) 
    2627 
    2728    self.cmip5Grps = shelve.open( '%s/cmip5Groups' % odir, 'r' ) 
  • CMIP6dreqbuild/trunk/src/workbook/utils_wb.py

    r336 r383  
    1414      if type(ss) in [type('x'),type(u'x')]: 
    1515          ss = string.replace( ss, u'\u2013', '-' ) 
     16          ss = string.replace( ss, u'\u2014', '-u2014-' ) 
    1617          ss = string.replace( ss, u'\u2010', '-' ) 
    1718          ss = string.replace( ss, u'\u2018', "'" ) 
Note: See TracChangeset for help on using the changeset viewer.