source: CMIP6dreqbuild/trunk/src/workbook/scansh02.py @ 924

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CMIP6dreqbuild/trunk/src/workbook/scansh02.py
Revision 924, 4.3 KB checked in by mjuckes, 4 years ago (diff)

intermediate -- with dup cmv problem

Line 
1
2import shelve
3
4odir = 'sh20150708'
5odir = '/data/tmp/svn3/exarch/CMIP6dreqbuild/trunk/srcMisc/sh20150827'
6import scansh_cfg
7reload( scansh_cfg )
8from scansh_cfg import odir
9
10def sopen( id, dir1=odir ):
11  sh = shelve.open( '%s/%s' % (dir1,id ) )
12  print 'Openned %s: %s' % ('%s/%s' % (dir1,id ),str( sh['__info__'] ) )
13  print sh['__cols__'], len(sh.keys())
14  return sh
15
16class rqc(object):
17
18  def __init__(self):
19    self.omip = sopen( 'omip' )
20    ##self.refti = sopen( 'refTableItems' )
21    ##self.revti = sopen( 'revTabItems' )
22    ##self.vars = sopen( 'cmipVars' )
23    ##self.grpsLeg = sopen( 'groupItems' )
24    self.grps = sopen( 'sh__consol01_groupItems', dir1='../framework/inSh/' )
25    self.refti = sopen( 'sh__consol01_refTabs', dir1='../framework/inSh/' )
26    self.revti = sopen( 'sh__consol01_revTabs', dir1='../framework/inSh/' )
27    self.rqvarx = sopen( 'sh__consol01_dynVarGroup_requestVars', dir1='../framework/inSh/' )
28    self.rqit = sopen( 'requestItems02', dir1='../framework/inSh/' )
29    self.rqli = sopen( 'requestLinks02', dir1='../framework/inSh/' )
30    self.rqvg = None
31## OBSOLETE .....
32    self.rqsect = sopen( 'requestVarSections' )
33####
34    self.objec = sopen( 'objectives' )
35    self.expt = sopen( 'experiments' )
36    self.exgp = sopen( 'exptGroups' )
37
38    ##self.cmip5Grps = shelve.open( '%s/cmip5Groups' % odir, 'r' )
39
40  def dumpCmv(self):
41    kk = ['uid', 'comment', 'deflate_level', 'shuffle', 'ok_max_mean_abs', 'flag_meanings', 'type', 'ok_min_mean_abs', 'sn', 'deflate', 'title', 'valid_min', 'cell_methods', 'flag_values', 'cell_measures', 'out_name', 'modeling_realm', 'units', 'cell_methods_xx', 'valid_max', 'positive', 'var', 'mipTable', 'dimensions', 'vid', 'processing', 'gpid','rowIndex','ssect', 'priority']
42    or1 = ['uid', 'var', 'mipTable']
43    ik = [kk.index(x) for x in or1]
44    ee = {}
45    cc = collections.defaultdict( list )
46    for k in self.refti.keys():
47      if k[0] != '_':
48        r = [sh[k][x] for x in ik]
49        assert r[0] not in ee, 'duplicate uid'
50        ee[r[0]] = ( r1[1], rr[2] )
51        cc[(r[1],r[2])].append( r[0] )
52    kk = ['group', 'var', 'table', 'freq', 'descriptionEx', 'shape', 'levels', 'tstyle', 'mask', 'priority', 'mip', 'uid', 'oldv', 'rowIndex', 'cmorv', 'new', 'gpid', 'vkey', 'vid']
53    or1 = ['uid', 'var', 'group']
54    ik = [kk.index(x) for x in or1]
55       
56
57rq = rqc()
58
59def sampl(sh, ns=10):
60  k = 0
61  ks = sh.keys()[:100]
62  while k < ns:
63    if ks[k][0] != '_':
64      print sh[ ks[k] ]
65      k += 1
66
67ki=0
68km=0
69nok = 0
70kn = 0
71for k in rq.revti.keys():
72  if k[0] != '_':
73    u = rq.revti[k][3]
74    if u == None:
75      km += 1
76    elif u == '__inc__':
77      ki += 1
78## new OMIP variables are mixed up with revised old variables .......
79    elif u == '__new__':
80      kn += 1
81    elif not rq.refti.has_key(u):
82      print 'WARN.010.0001: look up key not found: ', rq.revti[k]
83    else:
84      nok += 1
85
86print 'CHECK.001.0002: on revTabItems: %s OK, %s missing reference, %s includes [Not managed yet]' % (nok,km, ki)
87 
88nok = 0
89km = 0
90knf = 0
91
92nok1 = 0
93nok2 = 0
94nok = 0
95km = 0
96kmm = 0
97knf = 0
98for k in rq.grps.keys():
99  if k[0] != '_':
100    r = rq.grps[k]
101    if r[-3][0] != '_':
102      if r[-4] == 0:
103        if rq.vars.has_key(r[-3]):
104          nok1 += 1
105        else:
106          print 'ERROR.010.0020: NOT FOUND:',r
107          knf += 1
108      elif r[-4] == 1:
109        pass
110        ##if rq.rqvg.has_key(r[-3]):
111          ##nok2 += 1
112        ##else:
113          ##print 'ERROR.010.0030: NOT FOUND:',r
114          ##knf += 1
115      else:
116        kmm += 1
117    else:
118      ##print '!GROUP: ',r
119      km += 1
120print 'CHECK.001.0004: on groupItems: %s,%s OK, %s missing reference, not found %s, bad "new" key %s ' % (nok1,nok2,km,knf,kmm)
121
122nok1 = 0
123nok2 = 0
124nok = 0
125km = 0
126kmm = 0
127knf = 0
128
129nok = 0
130nm = 0
131for k in rq.rqit.keys():
132  if k[0] != '_':
133    r = rq.rqit[k]
134    rid = r[3]
135    if rq.rqli.has_key(rid):
136      nok += 1
137    else:
138      nm += 1
139print 'CHECK.001.0006: on request links: %s OK, %s missing' % (nok,nm)
140chk7 = False
141if chk7:
142  nok = 0
143  nm = 0
144  nb = 0
145  for k in rq.rqli.keys():
146    if k[0] != '_':
147      r = rq.rqli[k]
148      rid = r[-1]
149      if rid[0] != '_':
150        if rq.rqvg.has_key(rid):
151          nok += 1
152        else:
153          nm += 1
154      else:
155        nb += 1
156  print 'CHECK.001.0007: on request links referencing to variable group: %s OK, %s missing, %s unset' % (nok,nm,nb)
157
Note: See TracBrowser for help on using the repository browser.