Changeset 374


Ignore:
Timestamp:
31/08/15 09:31:49 (4 years ago)
Author:
mjuckes
Message:

update

Location:
CMIP6dreqbuild/trunk/srcMisc
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/srcMisc/dreqSX.py

    r355 r374  
    33from utils_wb import workbook, uniCleanFunc 
    44 
    5 vdate = "20150714" 
     5vdate = "20150827" 
    66 
    77sh = shelve.open( 'dreq_consol_tables_shelve_v%s' % vdate, 'r' ) 
    88shnv = shelve.open( 'dreq_consol_tables_nv_shelve_v%s' % vdate, 'r' ) 
    99## from vlsc5b --- includes new names from OMIP 
    10 shold = shelve.open( 'dreq_consol_tables_old_shelve_v%s' % vdate, 'r' ) 
     10shold = shelve.open( 'dreq_consol_tables_old_shelve_v20150713', 'r' ) 
    1111shlist = [sh,shnv,shold] 
    1212 
  • CMIP6dreqbuild/trunk/srcMisc/dreq_consol_dreq.py

    r353 r374  
    687687oo.close() 
    688688 
    689 sh = shelve.open( 'dreq_consol_tables_reviewed_b_v20150708', 'r' ) 
     689sh = shelve.open( 'dreq_consol_tables_reviewed_b_v20150827', 'r' ) 
    690690revTabIds = sh.keys()[:] 
    691691sh.close() 
    692692odir = 'sh20150708' 
     693odir = 'sh20150827' 
    693694### need to split this, so that a collection of variables can be used in more than one request row. 
    694695## check for duplicates 
  • CMIP6dreqbuild/trunk/srcMisc/dreq_consol_tables.py

    r352 r374  
    33import string, shelve, uuid 
    44from fcc_utils2 import snlist 
    5 import xlrd, string, shelve, os, re, sys 
    6 import collections 
     5import xlrd, string, shelve, os, re, sys, stat 
     6import collections, hashlib 
    77import xlutils, xlwt 
    88import xlutils.copy 
     
    1111from utils_wb import wbcp, workbook, uniCleanFunc 
    1212 
     13vdate = '20150827' 
     14 
    1315nt__deckrq = collections.namedtuple( 'dckrq', ['control','AMIP','abrupt4xCO2','rq_1pctCO2','historical'] ) 
    1416nt__grptbl = collections.namedtuple( 'grptbl', ['grp','var','srcTable','freq','description','shape','levels','timeProc','mask','priority','mip','id'] ) 
     
    1618dd_rq = collections.defaultdict( dict ) 
    1719dd_tbl = collections.defaultdict( int ) 
     20 
     21def md5sum(filename, blocksize=65536): 
     22    hash = hashlib.md5() 
     23    with open(filename, "r+b") as f: 
     24        for block in iter(lambda: f.read(blocksize), ""): 
     25            hash.update(block) 
     26    return hash.hexdigest() 
     27 
     28#### shelve to record file access times and checksums 
     29shr1 = shelve.open( 'shref01/shr1_md5' ) 
    1830 
    1931class tupsort: 
     
    127139     self.vars = collections.defaultdict( list ) 
    128140 
     141class s0(object): 
     142  def __init__(self): 
     143    self.a = collections.defaultdict( list ) 
     144class s1(object): 
     145  def __init__(self): 
     146    self.a = collections.defaultdict( s0 ) 
     147 
    129148class rqsummary(object): 
    130149  __doc__ = """Create a request summary table, by MIP and variable table. 
     
    139158    self.t = {} 
    140159    self.records = [] 
     160    self.recordProv = {} 
    141161    self.exptInfo = exptInfo 
     162    self.ref1 = collections.defaultdict( s1 ) 
     163    for k in shr1.keys(): 
     164      r = shr1[k] 
     165## index on mip/file name/md5 
     166      self.ref1[r[-1]].a[r[0]].a[k] = r 
     167    for k in self.ref1.keys(): 
     168      for k1 in self.ref1[k].a.keys(): 
     169        if len( self.ref1[k].a[k1].a.keys() ) > 1: 
     170          ll = {} 
     171          for k2 in self.ref1[k].a[k1].a.keys(): 
     172            ee[  self.ref1[k].a[k1].a[k2][2] ] = k2 
     173          ks = ee.keys() 
     174          ks.sort() 
     175          self.ref1[k].a[k1].latest = self.ref1[k].a[k1].a[ ks[-1] ] 
     176        else: 
     177          self.ref1[k].a[k1].latest  =  self.ref1[k].a[k1].a[ self.ref1[k].a[k1].a.keys()[0] ] 
    142178 
    143179  def addTab(self,tab): 
    144180    self.t[tab] = mipTable( tab ) 
    145181 
    146   def add(self,mip,path,tab): 
     182  def add(self,mip,path,tab,tabmode='uid'): 
    147183    self.tab = tab 
    148184## rq will add a reference to parent 
    149     print '######',mip, path, tab 
    150     return rq(mip,path,parent=self,tab=tab) 
     185    ##print '######',mip, path, tab 
     186    return rq(mip,path,parent=self,tab=tab,tabmode=tabmode) 
    151187 
    152188  def addItem( self, mip, tab, nn ): 
     
    190226          k0 = joinRec( self.records[t[2]], tab=',', omit=[7,16,23] ) 
    191227          ee1[k0].append( t ) 
    192         if len(ee1.keys()) > 1: 
     228### 
     229### differences in records found as multiple entries in collection here ... 
     230### 
     231        if len(ee1.keys()) <= 1: 
     232          pass 
     233          ##print 'INFO.003: NO CHANGE AT %s (%s)' % (k,len(self.t[self.tab].vars[k]) ) 
     234        else: 
     235          print 'INFO.003: DUPLICATES AT %s (%s)' % (k,len(ee1.keys()) ) 
    193236          for k1 in ee1.keys(): 
    194237              for t in ee1[k1]: 
     
    205248            rec = [k, string.join(ee3[ik],';'),]   + list(self.records[ix]) 
    206249            self.oorecs.append(rec) 
     250           
    207251             
    208252  def showXls(self,wb,r0=3,offset=0): 
     
    265309        oo.write( rec + '\n' ) 
    266310 
    267  
    268311#dd_rq = collections.defaultdict( dict ) 
    269312#dd_tbl = collections.defaultdict( int ) 
    270313class rq(object): 
    271314 
    272   def __init__(self, mip,path, parent=None,tab=u'Omon' ): 
     315  def __init__(self, mip,path, parent=None,tab=u'Omon',tabmode='uid' ): 
    273316 
    274317    self.mip = mip 
     318    self.parent = parent 
    275319    self.nn = 0 
     320    self.fn = string.split( path, '/' )[-1] 
     321    stt = os.stat( path ) 
     322    self.ctime = stt[stat.ST_CTIME] 
     323    self.fsize = stt[stat.ST_SIZE] 
     324    print '>>>> %s: %s' % (self.fn,self.ctime) 
     325    if self.parent.ref1[mip].a.has_key(self.fn): 
     326       tt = self.parent.ref1[mip].a[self.fn].latest 
     327       if self.ctime == tt[2] and self.fsize == tt[3]: 
     328         print '%s unchanged' % self.fn 
     329         md5 = tt[4] 
     330       else: 
     331         md5 = md5sum( path ) 
     332         if md5 == tt[4]: 
     333           print 'md5 unchanged: %s' % self.fn 
     334         else: 
     335           shr1[md5] = (self.fn,path,self.ctime, self.fsize, md5,mip ) 
     336    else: 
     337       md5 = md5sum( path ) 
     338       shr1[md5] = (self.fn,path,self.ctime, self.fsize, md5,mip ) 
     339    self.md5 = md5 
    276340    self.wk1 = wbcp( inbook=path ) 
    277341    if tab in  self.wk1.sns: 
    278342      self.tab = tab 
    279       if mip == 'CMIP5': 
     343      if tabmode == 'tab' or mip == 'CMIP5': 
    280344            self.tabid = tab 
    281345      else: 
    282346            self.tabid = '%s.%s' %  (mip,tab) 
    283347      self.wk1.focus( tab) 
    284       self.parent = parent 
    285348      if not self.parent.t.has_key(self.tabid): 
    286349        self.parent.addTab(self.tabid) 
     
    308371             v += '__%s' % ['a','b'][ee1[v].index(j)] 
    309372          ixr = len(self.parent.records ) 
     373## add record 
    310374          self.parent.records.append( tuple(rv[1:]) ) 
     375          kr = len( self.parent.records ) 
     376          self.parent.recordProv[kr] = self.md5 
    311377          p = int( rv[0] + 0.001 ) 
    312378          if lr0 > 24: 
     
    331397    kk=3 
    332398    self.idx = 0 
    333     self.sh = shelve.open( 'dreq_consol_tables_shelve_v20150714', 'n' ) 
    334     self.shnv = shelve.open( 'dreq_consol_tables_nv_shelve_v20150714', 'n' ) 
    335     self.shold = shelve.open( 'dreq_consol_tables_old_shelve_v20150714', 'n' ) 
     399    self.sh = shelve.open( 'dreq_consol_tables_shelve_v%s' % vdate, 'n' ) 
     400    self.shnv = shelve.open( 'dreq_consol_tables_nv_shelve_v%s' % vdate, 'n' ) 
     401    self.shold = shelve.open( 'dreq_consol_tables_old_shelve_v%s' % vdate, 'n' ) 
    336402 
    337403    base = '/home/martin/2014/wip/dreq/' 
     
    552618           self.glist.append( (k, s, ll, e1) ) 
    553619 
    554   def run1(self,nmip=0,kmip=0,clear=False): 
     620  def run1(self,nmip=0,kmip=0,clear=False,tabmode='uid'): 
    555621    if clear: 
    556622      self.rqs.t = {} 
     
    580646          else: 
    581647            path = '%s%s/%s' % (self.dir0,k,fn) 
    582           thisrq = self.rqs.add( k, path,s ) 
     648          thisrq = self.rqs.add( k, path,s,tabmode=tabmode ) 
    583649          if thisrq.ok: 
    584             print k,path,s,thisrq.ok, thisrq.nn 
     650            print 'INFO.002:',k,path,s,thisrq.ok, thisrq.nn 
    585651          else: 
    586             print k,path,s,thisrq.ok 
     652            print 'WARN.002:',k,path,s,thisrq.ok 
    587653 
    588654  def run2(self): 
     
    601667         ##print k, self.rqs.t[s].vars[k] 
    602668      self.rqs.prep( tab=s ) 
    603       print s, len(self.rqs.oorecs) 
     669      print 'INFO.001:', s, len(self.rqs.oorecs) 
    604670      if len(self.rqs.oorecs) > 0: 
    605671         if init: 
     
    620686 
    621687vl3 = {} 
    622 wb3 = workbook( 'vlsc5b_v20150714.xls' ) 
     688##wb3 = workbook( 'vlsc5b_v20150714.xls' ) 
     689wb3 = workbook( 'vlsc5b_v20150826.xls' ) 
    623690sh = wb3.book.sheet_by_name( 'Sheet1' ) 
    624691m = main() 
    625692 
    626 opt = 1 
     693opt = 2 
    627694if opt == 1: 
    628695  for i in range(sh.nrows): 
     
    646713  m.run1( clear=True) 
    647714  keys = sorted( m.rqs.t ) 
    648   sh = shelve.open( 'dreq_consol_tables_reviewed_a_v20150708', 'n' ) 
     715  sh = shelve.open( 'dreq_consol_tables_reviewed_a_v%s' % vdate, 'n' ) 
    649716  sh['records'] = m.rqs.records[:]  
     717  sh['recordProv'] = m.rqs.recordProv.copy() 
    650718  sh.close() 
    651   sh = shelve.open( 'dreq_consol_tables_reviewed_b_v20150708', 'n' ) 
     719  sh = shelve.open( 'dreq_consol_tables_reviewed_b_v%s' % vdate, 'n' ) 
    652720  sh['__keys__'] = map( str, keys[:] ) 
    653721  for k in keys: 
     
    673741    sh[k2] = ee.copy() 
    674742  sh.close() 
     743  shr1.close() 
    675744     
    676745  print m.idx 
    677746elif opt == 2: 
    678   m.run1( clear=True) 
     747  m.run1(tabmode='tab') 
    679748  m.run2() 
     749  shr1.close() 
  • CMIP6dreqbuild/trunk/srcMisc/sx2.py

    r361 r374  
    77import collections, string, hashlib, uuid, os, sys 
    88import dreqSX as sx 
    9 odir = 'sh20150708' 
     9odir = 'sh20150827' 
    1010if not os.path.isdir( odir ): 
    1111  os.mkdir( odir ) 
     
    257257   h = hashlib.md5(string.join(t) ).hexdigest() 
    258258   if not sx.ee_xref_bck.has_key(k): 
    259      print '*******',sx.ee_mip[k] 
     259     print 'ERROR.002.0010: missing back reference',sx.ee_mip[k] 
    260260     nnf += 1 
    261261   elif len(sx.ee_xref_bck[k]) > 1: 
     
    583583    ##sh[k] = list( shrvg[k] ) + list( kmapk2[id0] ) 
    584584    ##print '>>>>>',k,sh[k] 
     585 
    585586for k in lookup1.keys(): 
    586587  for k2 in lookup1[k].d.keys(): 
     
    593594    assert  cls == k, 'Mismatch in lookup1' 
    594595    refNote = k2 
     596    ##print k2, cls  
    595597    if cls == 'new': 
    596598      if kkk in revisedTabKeys: 
    597599        lab = kkk 
    598600        cls = 'rev' 
     601        lab = string.replace( kkk, '.', '-' ) 
    599602      else: 
    600         lab = sx2e.ngmap[kkk] 
     603        if not sx2e.ngmap.has_key(kkk): 
     604          print 'ERROR.002.0001: key %s not found' % kkk 
     605        else: 
     606          lab = sx2e.ngmap[kkk] 
    601607    elif cls == 'CMIP5': 
    602608      lab = string.replace( k2, '_', '-' ) 
    603     elif cls == 'CMIP5Rev': 
     609    elif cls in ['CMIP5Rev','rev']: 
    604610      lab = string.replace( k2, '.', '-' ) 
    605611    elif cls == 'nomap': 
     
    609615      lab = '%s-%s' % (mip,k2) 
    610616    if sx2e.r1.match( lab ) == None: 
    611       print 'NON_COMPLIANT label', lab 
     617      print 'NON_COMPLIANT label', lab,k2, cls 
    612618      ## print k,k2,shrvg[id] 
    613619      ## assert False 
Note: See TracChangeset for help on using the changeset viewer.