source: CMIP6dreq/trunk/dreqPy/scope_utils.py @ 1271

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CMIP6dreq/trunk/dreqPy/scope_utils.py@1271
Revision 1271, 2.4 KB checked in by mjuckes, 13 months ago (diff)

fixed python 3 compatibility issue regarding obsolete use of string module

RevLine 
[1271]1import collections
[717]2try:
[943]3  import table_utils
[717]4except:
[943]5  import dreqPy.table_utils as table_utils
[663]6
[683]7##NT_txtopts = collections.namedtuple( 'txtopts', ['mode'] )
8
[1259]9mips = ['AerChemMIP', 'CDRMIP', 'C4MIP', 'CFMIP', 'DAMIP', 'DCPP', 'FAFMIP', 'GeoMIP', 'GMMIP', 'HighResMIP', 'ISMIP6', 'LS3MIP', 'LUMIP', 'OMIP', 'PAMIP', 'PMIP', 'RFMIP', 'ScenarioMIP', 'VolMIP', 'CORDEX', 'DynVar', 'SIMIP', 'VIACSAB']
10
[747]11class c1(object):
12  def __init__(self):
13    self.a = collections.defaultdict( int )
14
[663]15class xlsTabs(object):
[943]16  """used in scope.py; uses table_utils.py"""
[683]17  def __init__(self,sc,tiermax=1,pmax=1,xls=True, txt=False, txtOpts=None, odir='xls'):
[663]18    self.pmax=pmax
19    self.tiermax=tiermax
20    self.sc = sc
21    sc.setTierMax( tiermax )
22    self.cc = collections.defaultdict( c1 )
23    self.dq = sc.dq
[683]24    self.doXls = xls
25    self.doTxt = txt
[663]26
[1259]27    self.mips = mips
[663]28    self.mipsp = ['DECK','CMIP6',] + self.mips[:-4]
29
[943]30    self.tabs = table_utils.tables( sc, xls=xls, txt=txt, txtOpts=txtOpts, odir=odir )
[663]31
[683]32  def run(self,m,colCallback=None,verb=False,mlab=None,exid=None):
[663]33      if m == 'TOTAL':
34        l1 = self.sc.rqiByMip( set( self.mips ) )
35      else:
36        l1 = self.sc.rqiByMip( m )
37
38      if mlab == None:
39        mlab = m
40
[673]41      verb = False
[663]42      if verb:
[673]43        print ( 'r1: m=%s, len(l1)=%s' % (mlab,len(l1)) )
[663]44
45      self.cc[mlab].dd = {}
46      self.cc[mlab].ee = {}
47      self.tabs.accReset()
48      vcc = collections.defaultdict( int )
49      for m2 in self.mipsp + ['TOTAL',]:
50        if m2 == 'TOTAL':
51          xx = self.dq.coll['experiment'].items
52        else:
53          xx = [i for i in self.dq.coll['experiment'].items if i.mip == m2]
[683]54        if exid != None:
55          xxx = [i for i in xx if i.uid == exid]
56          if len(xxx) == 0:
57            break
58          xx = xxx
[663]59        self.cc[mlab].ee[m2] = xx
60        xxi = set( [i.label for i in xx] )
61##
62## need to check this option, and add a template for a view summarising the experiments for each mip-mip combinations
63##
64        if m2 != 'TOTAL':
65          for i in xx:
[673]66            self.tabs.doTable(m,l1,i.uid,self.pmax,self.cc,acc=False,cc=vcc,exptids=xxi,mlab=None)
[663]67
68        self.tabs.doTable(m,l1,m2,self.pmax,self.cc,cc=vcc,exptids=xxi,mlab=None)
69
70        if verb:
[673]71          print ( 'r1: mlab=%s,m2=%s, len(l1)=%s, len(xxi)=%s' % (mlab,m2,len(l1),len(xxi)) )
[663]72
73        if colCallback != None:
74          colCallback( m,m2,mlab=mlab )
75
76
Note: See TracBrowser for help on using the repository browser.