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

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CMIP6dreq/trunk/dreqPy/scope_utils.py@747
Revision 747, 2.3 KB checked in by mjuckes, 4 years ago (diff)

distribution cand

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