Changeset 408


Ignore:
Timestamp:
13/10/15 11:53:22 (4 years ago)
Author:
mjuckes
Message:

modules converted to run with python 3

Location:
CMIP6dreqbuild/trunk/src/framework
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/src/framework/Makefile

    r393 r408  
    6464        cp vocabDemo.py /data/tmp/svn3/exarch/CMIP6dreq/trunk/src        
    6565        cp annotated_20150731.xml /data/tmp/svn3/exarch/CMIP6dreq/trunk/docs/dreq.xml 
     66        cp tables/test.xlsx /data/tmp/svn3/exarch/CMIP6dreq/trunk/docs/CMIP6_MIP_tables.xlsx 
     67        cp out/dc1.xsd out/xlink.xsd out/xml.xsd /data/tmp/svn3/exarch/CMIP6dreq/trunk/docs/ 
    6668        echo "source copied to /data/tmp/svn3/exarch/CMIP6dreq/trunk/src" 
    6769 
  • CMIP6dreqbuild/trunk/src/framework/dreq.py

    r397 r408  
    88import xml.dom.minidom 
    99import re, shelve 
    10 import sets 
    1110 
    1211class rechecks(object): 
     
    5554         """Print a summary of the data held in the object as a list of key/value pairs""" 
    5655         if self._contentInitialised: 
    57            print 'Item <%s>: [%s] %s' % (self._h.title,self.label,self.title) 
     56           print ( 'Item <%s>: [%s] %s' % (self._h.title,self.label,self.title) ) 
    5857           for a in self.__dict__.keys(): 
    5958             if a[0] != '_' or full: 
    6059               if self._a[a].rClass == 'internalLink' and self._base._indexInitialised: 
    61                  targ = self._base._inx.uid[ self.__dict__[a] ] 
    62                  print '   %s: [%s]%s [%s]' % ( a, targ._h.label, targ.label, self.__dict__[a] ) 
     60                 if self.__dict__[a] in self._base._inx.uid: 
     61                   targ = self._base._inx.uid[ self.__dict__[a] ] 
     62                   print ( '   %s: [%s]%s [%s]' % ( a, targ._h.label, targ.label, self.__dict__[a] ) ) 
     63                 else: 
     64                   print ( '   %s: [ERROR: key not found] [%s]' % ( a, self.__dict__[a] ) ) 
    6365               else: 
    64                  print '    %s: %s' % ( a, self.__dict__[a] ) 
     66                 print ( '    %s: %s' % ( a, self.__dict__[a] ) ) 
    6567         else: 
    66            print 'Item <%s>: uninitialised' % self.sectionLabel 
     68           print ( 'Item <%s>: uninitialised' % self.sectionLabel ) 
    6769 
    6870       def __href__(self,odir=""): 
    6971         igns =  {'','__unset__'} 
    70          if self.__dict__.has_key( 'description' ) and string.strip( self.description ) not in igns: 
     72         if 'description' in self.__dict__ and string.strip( self.description ) not in igns: 
    7173           ttl = self.description 
    72          elif self.__dict__.has_key( 'title' ) and string.strip( self.title ) not in igns: 
     74         elif 'title' in self.__dict__ and string.strip( self.title ) not in igns: 
    7375           ttl = self.title 
    7476         else: 
     
    110112               am = [] 
    111113               for t in tl: 
    112                  if self._inx.iref_by_sect[self.uid].a.has_key(t): 
     114                 if t in self._inx.iref_by_sect[self.uid].a: 
    113115                   am.append( '<h3>%s</h3>' % t ) 
    114116                   am.append( '<ul>' ) 
     
    132134         __doc__ = """Initialise from a dictionary.""" 
    133135         for a in self._a.keys(): 
    134            if dict.has_key(a): 
     136           if a in dict: 
    135137             self.__dict__[a] = dict[a] 
    136138           else: 
     
    144146         tvtl = [] 
    145147         if etree: 
    146            ks = sets.Set( el.keys() ) 
     148           ks = set( el.keys() ) 
    147149           for a in self._a.keys(): 
    148150             if a in ks: 
     
    164166                 v = float(v) 
    165167               except: 
    166                  print 'Failed to convert real number: %s' % v 
     168                 print ( 'Failed to convert real number: %s' % v ) 
    167169                 raise 
    168170             elif self._a[a].type == u'xs:integer': 
     
    174176                 if v in { '',u'',' ', u' '}: 
    175177                   if nw1 < 20: 
    176                      print 'WARN.050.0001: input integer non-compliant: %s: %s: "%s" -- set to zero' % (thissect,a,v) 
     178                     print ( 'WARN.050.0001: input integer non-compliant: %s: %s: "%s" -- set to zero' % (thissect,a,v) ) 
    177179                     nw1 += 1 
    178180                   v = 0 
     
    180182                   try: 
    181183                     v = int(float(v)) 
    182                      print 'WARN: input integer non-compliant: %s: %s: %s' % (thissect,a,v) 
     184                     print ( 'WARN: input integer non-compliant: %s: %s: %s' % (thissect,a,v) ) 
    183185                   except: 
    184186                     msg = 'ERROR: failed to convert integer: %s: %s: %s' % (thissect,a,v) 
     
    190192             if a in {'uid'}: 
    191193               thissect = '%s [%s]' % (self._h.title,self._h.tag) 
    192                print 'ERROR.020.0001: missing uid: %s' % thissect 
     194               print ( 'ERROR.020.0001: missing uid: %s' % thissect ) 
    193195               if etree: 
    194                  print ks 
     196                 print ( ks ) 
    195197                 import sys 
    196198                 sys.exit(0) 
     
    201203             ##raise 
    202204           if deferredHandling: 
    203              print msg 
     205             print ( msg ) 
    204206 
    205207         self._contentInitialised = True 
     
    232234      self.contentDoc = cel.parse( self.vsamp ) 
    233235      root = self.contentDoc.getroot() 
    234       bs = string.split( root.tag, '}' ) 
     236      ##bs = string.split( root.tag, '}' ) 
     237      bs = root.tag.split( '}' ) 
    235238      if len( bs ) > 1: 
    236239        self.ns = bs[0] + '}' 
     
    304307  def info(self,ss): 
    305308    if not self.silent: 
    306       print ss 
     309      print ( ss ) 
    307310 
    308311  def get(self): 
     
    384387    self.uid2 = collections.defaultdict( list ) 
    385388    nativeAtts = ['uid','iref_by_uid','iref_by_sect','missingIds'] 
    386     naok = map( lambda x: not dreq.has_key(x), nativeAtts ) 
     389    naok = map( lambda x: not x in dreq, nativeAtts ) 
    387390    assert all(naok), 'This version cannot index collections containing sections with names: %s' % str( nativeAtts ) 
    388391    self.var_uid = {} 
     
    392395    irefdict = collections.defaultdict( list ) 
    393396    for k in dreq.keys(): 
    394       if dreq[k].attDefn.has_key('sn'): 
     397      if 'sn' in dreq[k].attDefn: 
    395398         self.__dict__[k] =  container( ['label','sn'] ) 
    396399      else: 
     
    405408    for k in dreq.keys(): 
    406409        for i in dreq[k].items: 
    407           assert i.__dict__.has_key('uid'), 'uid not found::\n%s\n%s' % (str(i._h),str(i.__dict__) ) 
    408           if self.uid.has_key(i.uid): 
    409             print 'ERROR.100.0001: Duplicate uid: %s [%s]' % (i.uid,i._h.title) 
     410          assert 'uid' in i.__dict__, 'uid not found::\n%s\n%s' % (str(i._h),str(i.__dict__) ) 
     411          if 'uid' in self.uid: 
     412            print ( 'ERROR.100.0001: Duplicate uid: %s [%s]' % (i.uid,i._h.title) ) 
    410413            self.uid2[i.uid].append( (k,i) ) 
    411414          else: 
     
    426429              self.iref_by_uid[ id2 ].append( (k2,i.uid) ) 
    427430              self.iref_by_sect[ id2 ].a[sect].append( i.uid ) 
    428               if self.uid.has_key( id2 ): 
     431              if id2 in self.uid: 
    429432                n1 += 1 
    430433              else: 
     
    437440        self.__dict__[k].uid[i.uid] = i 
    438441        self.__dict__[k].label[i.label].append( i.uid ) 
    439         if dreq[k].attDefn.has_key('sn'): 
     442        if 'sn' in dreq[k].attDefn: 
    440443          self.__dict__[k].sn[i.sn].append( i.uid ) 
    441444 
    442445  def info(self,ss): 
    443446    if not self.silent: 
    444       print ss 
     447      print ( ss ) 
    445448 
    446449class ds(object): 
  • CMIP6dreqbuild/trunk/src/framework/example.py

    r389 r408  
    77 
    88priorityMax = 3 
    9 ll = ['C4MIP','CFMIP','LUMIP'] 
    10 ee = {} 
    11 ss = 0. 
    12 for l in ll: 
    13   x = sc.volByMip( l, pmax=priorityMax )*1.e-12*bytesPerFloat 
    14   print '%9s  %5.1fTb'  % ( l,x ) 
    15   ss += x 
    16 z = sc.volByMip( set(ll), pmax=priorityMax )*1.e-12*bytesPerFloat 
     9def runExample( priorityMax ): 
     10    ll = ['C4MIP','CFMIP','LUMIP'] 
     11    ee = {} 
     12    ss = 0. 
     13    for l in ll: 
     14      x = sc.volByMip( l, pmax=priorityMax )*1.e-12*bytesPerFloat 
     15      print ( '%9s  %5.1fTb'  % ( l,x ) ) 
     16      ss += x 
     17    z = sc.volByMip( set(ll), pmax=priorityMax )*1.e-12*bytesPerFloat 
    1718 
     19    print ( 'Combined:  %5.1fTb'  % z ) 
     20    print ( 'Overlap:   %5.1fTb'  % (ss-z) ) 
    1821 
    19 print 'Combined:  %5.1fTb'  % z 
    20 print 'Overlap:   %5.1fTb'  % (ss-z) 
     22    sc.setTierMax( 1 ) 
     23    z1 = sc.volByMip( set(ll), pmax=priorityMax )*1.e-12*bytesPerFloat 
     24    sc.setTierMax( 2 ) 
     25    z2 = sc.volByMip( set(ll), pmax=priorityMax )*1.e-12*bytesPerFloat 
     26    print ( '' ) 
     27    print ( 'Combined, tier 1 only:  %5.1fTb'  % z1 ) 
     28    print ( 'Combined, tier 1+2 only:  %5.1fTb'  % z2 ) 
     29 
     30print ( '######### All variables ###########' ) 
     31priorityMax = 3 
     32runExample( priorityMax ) 
     33print ( '######### Top priority variables ###########' ) 
     34priorityMax = 1 
     35runExample( priorityMax ) 
  • CMIP6dreqbuild/trunk/src/framework/ptxt.py

    r397 r408  
    2323## 
    2424samplePrologue="""<prologue> 
    25 <dc:title>Draft CMIP6 Data Request</dc:title> 
     25<dc:title>Draft CMIP6 Data Request [01.beta.04]</dc:title> 
     26<dc:description>The CMIP6 Data Request will specify the variables requested for the CMIP6 archive, and the detail the experiments and time slices for which they are required.</dc:description> 
    2627<dc:creator>Martin Juckes</dc:creator> 
    2728<dc:date>%s</dc:date> 
  • CMIP6dreqbuild/trunk/src/framework/scope.py

    r397 r408  
    4747class dreqQuery(object): 
    4848  __doc__ = """Methods to analyse the data request, including data volume estimates""" 
    49   def __init__(self,dq=None): 
     49  def __init__(self,dq=None,tierMax=-1): 
    5050    if dq == None: 
    5151      self.dq = dreq.loadDreq() 
     
    5555    for i in self.dq.coll['objective'].items: 
    5656      k = '%s.%s' % (i.mip,i.label) 
    57       assert not self.rlu.has_key(k), 'Duplicate label in objectives: %s' % k 
     57      assert not k in self.rlu, 'Duplicate label in objectives: %s' % k 
    5858      self.rlu[k] = i.uid 
    5959 
     60    self.tierMax = tierMax 
    6061    self.mips = { i.mip for i in  self.dq.coll['requestItem'].items} 
    6162    self.mipls = sorted( list( self.mips ) ) 
     
    7475      type = 'a' 
    7576      if i.levelFlag == 'false': 
    76         ds =  string.split( i.dimensions, '|' ) 
     77        ds =  i.dimensions.split( '|' ) 
    7778        if ds[-1] in ['site', 'basin']: 
    7879          vd = ds[-2] 
     
    9091          nz = self.mcfg['nlas'] 
    9192        else: 
    92           print 'Failed to parse dimensions %s' % i.dimensions 
     93          print ( 'Failed to parse dimensions %s' % i.dimensions ) 
    9394          raise 
    9495      else: 
    9596        nz = i.levels 
    9697 
    97       dims = set( string.split( i.dimensions, '|' ) ) 
     98      dims = set( i.dimensions.split( '|' ) ) 
    9899      if 'latitude' in dims and 'longitude' in dims: 
    99100        if type == 'o': 
     
    153154    rqlInv = {u for u in rql0 if inx.uid[u]._h.label == 'remarks' } 
    154155    if len(rqlInv) != 0: 
    155       print 'WARNING.001.00002: %s invalid request links from request items ...' % len(rqlInv) 
     156      print ( 'WARNING.001.00002: %s invalid request links from request items ...' % len(rqlInv) ) 
    156157    rql = {u for u in rql0 if inx.uid[u]._h.label != 'remarks' } 
    157158 
     
    194195 
    195196  def esid_to_exptList(self,esid,deref=False): 
    196     if not self.dq.inx.uid.has_key(esid): 
    197       print 'Attempt to dereferece invalid uid: %s' % esid 
     197    if not esid in self.dq.inx.uid: 
     198      print ( 'Attempt to dereferece invalid uid: %s' % esid ) 
    198199      raise 
    199200 
     
    201202      expts = [esid,] 
    202203    elif self.dq.inx.uid[esid]._h.label != 'remarks': 
    203       if self.dq.inx.iref_by_sect.has_key(esid) and self.dq.inx.iref_by_sect[esid].a.has_key( 'experiment' ): 
     204      if esid in self.dq.inx.iref_by_sect and 'experiment' in self.dq.inx.iref_by_sect[esid].a: 
    204205        expts = self.dq.inx.iref_by_sect[esid].a['experiment'] 
    205206      else: 
    206207        expts = [] 
    207208    else: 
    208       print 'WARNING: request link not associated with valid experiment group' 
     209      print ( 'WARNING: request link not associated with valid experiment group' ) 
    209210      raise 
     211 
     212    if self.tierMax > 0: 
     213      expts = [i for i in expts if self.dq.inx.uid[i].tier <= self.tierMax] 
    210214 
    211215    if deref: 
     
    230234      expts = [u,] 
    231235    elif self.dq.inx.uid[u]._h.label != 'remarks': 
    232       if self.dq.inx.iref_by_sect.has_key(u) and self.dq.inx.iref_by_sect[u].a.has_key( 'experiment' ): 
     236      if u in self.dq.inx.iref_by_sect and 'experiment' in self.dq.inx.iref_by_sect[u].a: 
    233237        expts = self.dq.inx.iref_by_sect[u].a['experiment'] 
    234238      else: 
    235239        expts = [] 
    236240    else: 
    237       print 'WARNING: request link not associated with valid experiment group'  
     241      print ( 'WARNING: request link not associated with valid experiment group'  ) 
    238242      i.__info__() 
    239243      raise 
     244 
     245    if self.tierMax > 0: 
     246      expts = [i for i in expts if self.dq.inx.uid[i].tier <= self.tierMax] 
    240247 
    241248    if len(expts) > 0: 
    242249      e = [self.dq.inx.uid[i] for i in expts] 
    243250      dat = [ (i.ntot, i.yps, i.ensz, i.nstart, filter1(i.yps,rqi.nymax), filter1(i.ensz,rqi.nenmax) ) for i in e] 
     251      nytot = sum( [x[-2]*x[-1] for x in dat ] ) 
     252    else: 
     253      dat = [ (0,0,0,0,0) ] 
     254      nytot = 0 
    244255     
    245     nytot = sum( [x[-2]*x[-1] for x in dat ] ) 
    246256    return (expts, dat, nytot ) 
    247257     
     258 
     259  def setTierMax( self, tierMax ): 
     260    """Set the maxium tier and recompute request sizes""" 
     261    if tierMax != self.tierMax: 
     262      self.tierMax = tierMax 
     263      self.requestItemExpAll(  ) 
    248264 
    249265  def summaryByMip( self, pmax=1 ): 
     
    251267    for m in self.mipls: 
    252268      v = self.volByMip( m, pmax=pmax ) 
    253       print '%12.12s: %6.2fTb' % (m,v*bytesPerFloat*1.e-12) 
     269      print ( '%12.12s: %6.2fTb' % (m,v*bytesPerFloat*1.e-12) ) 
    254270 
    255271  def volByMip( self, mip, pmax=2): 
     
    257273    if type(mip) in {type( '' ),type( u'') }: 
    258274      if mip not in self.mips: 
    259         print self.mips 
     275        print ( self.mips ) 
    260276        raise baseException( 'volByMip: Name of mip not recognised: %s' % mip ) 
    261277      l1 = [i for i in  self.dq.coll['requestItem'].items if i.mip == mip] 
Note: See TracChangeset for help on using the changeset viewer.