source: CMIP6dreqbuild/trunk/src/framework/ing02/appendChoice.py @ 1173

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CMIP6dreqbuild/trunk/src/framework/ing02/appendChoice.py@1206
Revision 1173, 3.8 KB checked in by mjuckes, 20 months ago (diff)

check

Line 
1
2from utils_wb import workbook
3import shelve
4
5
6from utils_wb import uniCleanFunc
7
8def findWholeWord(w):
9    return re.compile(r'\b({0})\b'.format(w)).search
10
11class editChoice(object):
12  def __init__(self):
13    self._loadCmv()
14    self.shvarc = shelve.open( 'exports/l1sh/varChoice' )
15    print self.shvarc['__cols__']
16    self.shvarcl = shelve.open( 'exports/l1sh/varChoiceLinkC' )
17    print self.shvarcl['__cols__']
18    self.shvarcf = shelve.open( 'exports/l1sh/modelConfig' )
19    print self.shvarcf['__cols__']
20##[u'label', u'title', u'uid', u'choiceClass', u'description', u'optionList', u'varList']
21##[u'label', u'title', u'uid', u'cfg', u'cfgid', u'cid', u'vid']
22##[u'label', u'title', u'uid', u'MIPs', u'range', u'type', u'usage']
23
24  def addRec( self, t ):
25    assert len(t) == 9, 'Bad row length: %s' % str( t )
26    ##label, titlec, usage, titlecf, desccf, vart, varf, mips, uidt, uidf, uidcf, uidc = t
27    label, titlec, usage, titlecf, desccf, mips, vars, uidcf, uidc = t
28    s = set( [str(x[0].split('.')[0]) for x in vars ] )
29    varlist = ' '.join( sorted( list( s ) ) )
30    rcf = [label, titlecf, uidcf, mips, 'xs:boolean', 'capability', usage ]
31    rc = [label, titlec, uidc, 'ConfigurationOptionSet', desccf, '', varlist]
32    ##vlt, mtt = vart.split( '.' )
33    ##vlf, mtf = varf.split( '.' )
34    ##clt = ['%s-%s' % (vlt, mtt), vart, uidt, "True", uidcf, uidc, self.cmv[vart] ]
35    ##clf = ['%s-%s' % (vlf, mtf), varf, uidf, "False", uidcf, uidc, self.cmv[varf] ]
36    ##self.shvarcl[uidt] = clt
37    ##self.shvarcl[uidf] = clf
38    for var,uid,val in vars:
39      vl, mt = var.split( '.' )
40      cl = ['%s-%s' % (vl, mt), var, uid, str(val), uidcf, uidc, self.cmv[var] ]
41      self.shvarcl[uid] = cl
42    self.shvarcf[uidcf] = rcf
43    self.shvarc[uidc] = rc
44    print rc
45
46  def _loadCmv(self):
47    shcmv = shelve.open( 'exports/l1sh/CMORvar' )
48    ##sh = shelve.open( 'exports/l1sh/CMORvar' )
49    ##shcmv = shelve.open( 'exports/l1sh/CMORvar' )
50    cols = shcmv['__cols__']
51    ##print cols
52    il = cols.index( 'label' )
53    iu = cols.index( 'uid' )
54    it = cols.index( 'mipTable' )
55    self.cmv = dict()
56    for k in shcmv.keys():
57      if k[0] != '_':
58        self.cmv[ '%s.%s' % (shcmv[k][il],shcmv[k][it]) ] = shcmv[k][iu]
59    shcmv.close()
60
61  def checkCmv(self,k):
62    return k in  self.cmv
63
64ec = editChoice()
65
66wb = workbook( 'inputs/dreq_choice_elements_extra.xls' )
67sht = wb.book.sheet_by_name( 'ConfigurationOptionSet' )
68## ModelCfg     Title (choice)  Usage (choice)  Title (cfg)     Description (cfg)       TRUE    FALSE   uidt    uidf    uidcfg  uidch
69for i in range( 4,sht.nrows):
70  t = tuple( [str(x.value) for x in sht.row(i)] )
71  assert len(t) == 12, 'Bad row length: %s' % str( t )
72  label, titlec, usage, titlecf, desccf, vart, varf, mips, uidt, uidf, uidcf, uidc = t
73  tt =(label, titlec, usage, titlecf, desccf, mips, [(vart, uidt, True), (varf, uidf, False)], uidcf, uidc)
74  print t
75  for v in [vart,varf]:
76    if not ec.checkCmv( v ):
77      print 'FAIL: %s not found' % v
78    else:
79      print 'OK: %s found' % v
80  ec.addRec( tt )
81
82wb = workbook( 'inputs/choices.xlsx' )
83sht = wb.book.sheet_by_name( 'binary' )
84## ModelCfg     Title (choice)  Usage (choice)  Title (cfg)     Description (cfg)       TRUE    FALSE   uidt    uidf    uidcfg  uidch
85for i in range( 4,sht.nrows):
86  t = tuple( [str(x.value) for x in sht.row(i)] )
87  assert len(t)-1 in [11,14,17,20,23], 'Bad row length: %s' % str( t )
88  label, uidc, titlec, desccf, lab2, uidcf, titlecf, usage, mips = t[:9]
89  nv = (len(t)-9)/3
90  vars = []
91  print t,nv
92  for k in range(nv):
93     l,tab,v = t[(9+k*3):(12+k*3)]
94     if l != '':
95       vars.append( ('%s.%s' % (l,tab), 'Choice:%s-%s' % (l,tab), {'TRUE':True,'FALSE':False, '1.0':True, '0.0':False}[v]) )
96  tt =(label, titlec, usage, titlecf, desccf, mips, vars, uidcf, uidc)
97  print t
98  for v in vars:
99    if not ec.checkCmv( v[0] ):
100      print 'FAIL: %s not found' % str(v)
101    else:
102      print 'OK: %s found' % str(v)
103  ec.addRec( tt )
104
105
Note: See TracBrowser for help on using the repository browser.