source: CMIP6dreqbuild/trunk/src/framework/scripts/slist.py @ 1303

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CMIP6dreqbuild/trunk/src/framework/scripts/slist.py@1303
Revision 1303, 3.3 KB checked in by mjuckes, 13 months ago (diff)

adding miplist.py

Line 
1
2import collections
3from utils import dreq, collect
4dq = dreq.loadDreq()
5collect.add( dq )
6
7class Stabs(object):
8  def __init__(self,dq):
9    self.dq = dq
10    self.es = dict()
11
12## load in description ... which doesn't ake it into the main structure ... yet
13    self.es2 = dict()
14    for t in dq.c.ttl2:
15      self.es2[t.uid] = dq.c._desc.get( t.label, '' )
16
17    self.cc = collections.defaultdict(dict)
18    for i in dq.coll['__sect__'].items:
19      self.es[i.label] = i
20    for i in dq.coll['__main__'].items:
21      a,b = i.uid.split( '::' )
22      x,y = b.split('.')
23      self.cc[x][y] = i
24
25    ee = dict()
26    oo = open( 'inputs.texlet', 'w' )
27    for s in dq.coll.keys():
28      if s[0] != '_':
29        if s in self.cc:
30          ee[ self.es[s].title ] = s
31        else:
32          print ('SECTION NOT FOUND: %s' % s )
33
34    for t in sorted( ee.keys() ):
35          s = ee[t]
36          oo.write( '\\input{slist_%s.texlet}\n' % s )
37          self.psect(s)
38    oo.close()
39
40  def _latex(self,x):
41    return x.replace( '_', '\\_' )
42
43  def psect(self,sect):
44    assert sect in self.es, 'Section not found in __sect__: %s' % sect
45    assert sect in self.cc, 'Section not found in __main__: %s' % sect
46    print (self.es[sect].title)
47    print (self.cc[sect].keys())
48    oo = open( 'slist_%s.texlet' % sect, 'w' )
49    oo.write( '\\section{%s [%s]}\n' % (self.es[sect].title,self.es[sect].label) )
50   
51    oo.write( '%s\n\n' % self._latex(self.dq.c._desc[self.es[sect].label] ) )
52
53    f = lambda x: '%s: %s' % ({'label':'00','title':'01','description':'02','uid':'03'}.get(x,'99'),x)
54    oo.write( '\\sectionTable{\\hline\n' )
55    for k in sorted( self.cc[sect].keys(), key=f ):
56      this = self.cc[sect][k]
57      that = [this.label, this.title, this.description, '\\ttt{%s}' % this.type, '\\ttt{%s}' % this.uid ]
58      line = ' & '.join( [self._latex(x) for x in that[:4]] ) + ' \\\\ \n\\hline\n'
59      oo.write( line )
60    oo.write( '}% End of sectionTable argument\n' )
61    oo.close()
62
63   
64   
65
66for k in sorted( dq.coll.keys() ):
67  if len( dq.coll[k].items ) > 0:
68    i = dq.coll[k].items[0]
69    print ( '%s & %s & %s &  \\' % (k,len( dq.coll[k].items ), i._h.title ) )
70
71
72nn = 0
73for i in dq.coll['requestLink'].items:
74  n1 = len( dq.inx.iref_by_sect[i.refid].a['requestVar'] )
75  n2 = len( i._get__expt() )
76  n3 = len( dq.inx.iref_by_sect[i.uid].a['objectiveLink'] )
77  nn += n1*n2*n3
78
79nnn = 1
80for y in [len(dq.coll[x].items) for x in ['CMORvar','experiment','objective']]:
81  nnn = nnn*y
82
83print ( 'Virtual requests (var-expt-objective): %s [%s, %4.2f%%]' % (nn, nnn, float(100*nn)/nnn) )
84
85nn = 0
86ee = dict()
87for i in dq.coll['experiment'].items:
88  n1 = len( i._get__CMORvar() )
89  ee[i.label] = n1
90  nn += n1
91
92
93ks =  sorted( ee.keys(), key=lambda x: ee[x], reverse=True)
94
95
96nnn = 1
97for y in [len(dq.coll[x].items) for x in ['CMORvar','experiment']]:
98  nnn = nnn*y
99
100print ( 'Virtual requests (var-expt): %s [%s, %4.2f%%]' % (nn, nnn, float(100*nn)/nnn) )
101
102c1 = [x for x in dq.coll['CMORvar'].items  if 'requestVar' not in dq.inx.iref_by_sect[x].a]
103nnn = len( dq.coll['CMORvar'].items )
104print ( 'CMORVvars: %s [%s]' % (nnn,len(c1)) )
105for k in ks[:5]:
106  print ( 'Var count (top): %s [%s, %4.2f%%]' % (k,ee[k], float(100*ee[k])/nnn) )
107for k in ks[-5:]:
108  print ( 'Var count (bottom): %s [%s, %4.2f%%]' % (k,ee[k], float(100*ee[k])/nnn) )
109 
Note: See TracBrowser for help on using the repository browser.