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

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

adding scansh02.py

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' )
29    self.rqli = sopen( 'requestLinks02' )
30    self.rqvg = None
31    self.rqsect = sopen( 'requestVarSections' )
32    self.objec = sopen( 'objectives' )
33    self.expt = sopen( 'experiments' )
34    self.exgp = sopen( 'exptGroups' )
35
36    self.cmip5Grps = shelve.open( '%s/cmip5Groups' % odir, 'r' )
37
38  def dumpCmv(self):
39    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']
40    or1 = ['uid', 'var', 'mipTable']
41    ik = [kk.index(x) for x in or1]
42    ee = {}
43    cc = collections.defaultdict( list )
44    for k in self.refti.keys():
45      if k[0] != '_':
46        r = [sh[k][x] for x in ik]
47        assert r[0] not in ee, 'duplicate uid'
48        ee[r[0]] = ( r1[1], rr[2] )
49        cc[(r[1],r[2])].append( r[0] )
50    kk = ['group', 'var', 'table', 'freq', 'descriptionEx', 'shape', 'levels', 'tstyle', 'mask', 'priority', 'mip', 'uid', 'oldv', 'rowIndex', 'cmorv', 'new', 'gpid', 'vkey', 'vid']
51    or1 = ['uid', 'var', 'group']
52    ik = [kk.index(x) for x in or1]
53       
54
55rq = rqc()
56
57def sampl(sh, ns=10):
58  k = 0
59  ks = sh.keys()[:100]
60  while k < ns:
61    if ks[k][0] != '_':
62      print sh[ ks[k] ]
63      k += 1
64
65ki=0
66km=0
67nok = 0
68kn = 0
69for k in rq.revti.keys():
70  if k[0] != '_':
71    u = rq.revti[k][3]
72    if u == None:
73      km += 1
74    elif u == '__inc__':
75      ki += 1
76## new OMIP variables are mixed up with revised old variables .......
77    elif u == '__new__':
78      kn += 1
79    elif not rq.refti.has_key(u):
80      print 'ERROR.010.0001: look up key not found: ', rq.revti[k]
81    else:
82      nok += 1
83
84print 'CHECK.001.0002: on revTabItems: %s OK, %s missing reference, %s includes [Not managed yet]' % (nok,km, ki)
85 
86nok = 0
87km = 0
88knf = 0
89
90nok1 = 0
91nok2 = 0
92nok = 0
93km = 0
94kmm = 0
95knf = 0
96for k in rq.grps.keys():
97  if k[0] != '_':
98    r = rq.grps[k]
99    if r[-3][0] != '_':
100      if r[-4] == 0:
101        if rq.vars.has_key(r[-3]):
102          nok1 += 1
103        else:
104          print 'ERROR.010.0020: NOT FOUND:',r
105          knf += 1
106      elif r[-4] == 1:
107        pass
108        ##if rq.rqvg.has_key(r[-3]):
109          ##nok2 += 1
110        ##else:
111          ##print 'ERROR.010.0030: NOT FOUND:',r
112          ##knf += 1
113      else:
114        kmm += 1
115    else:
116      ##print '!GROUP: ',r
117      km += 1
118print 'CHECK.001.0004: on groupItems: %s,%s OK, %s missing reference, not found %s, bad "new" key %s ' % (nok1,nok2,km,knf,kmm)
119
120nok1 = 0
121nok2 = 0
122nok = 0
123km = 0
124kmm = 0
125knf = 0
126for k in rq.grps.keys():
127  if k[0] != '_':
128    r = rq.grps[k]
129## new variables
130    kk = str( r[-1] )
131    if r[-2] == 0:
132        if rq.vars.has_key(kk):
133          nok1 += 1
134        else:
135          print 'ERROR.010.0040: NOT FOUND:',r
136          knf += 1
137## old vars
138    elif r[-2] == 1:
139        if rq.refti.has_key(kk):
140          nok2 += 1
141        else:
142          print 'ERROR.010.0050: NOT FOUND:',r
143          knf += 1
144    else:
145        kmm += 1
146print 'CHECK.001.0005: on groupItems -- for variable defs: %s,%s OK, %s missing reference, not found %s, bad "new" key %s ' % (nok1,nok2,km,knf,kmm)
147
148nok = 0
149nm = 0
150for k in rq.rqit.keys():
151  if k[0] != '_':
152    r = rq.rqit[k]
153    rid = r[3]
154    if rq.rqli.has_key(rid):
155      nok += 1
156    else:
157      nm += 1
158print 'CHECK.001.0006: on request links: %s OK, %s missing' % (nok,nm)
159chk7 = False
160if chk7:
161  nok = 0
162  nm = 0
163  nb = 0
164  for k in rq.rqli.keys():
165    if k[0] != '_':
166      r = rq.rqli[k]
167      rid = r[-1]
168      if rid[0] != '_':
169        if rq.rqvg.has_key(rid):
170          nok += 1
171        else:
172          nm += 1
173      else:
174        nb += 1
175  print 'CHECK.001.0007: on request links referencing to variable group: %s OK, %s missing, %s unset' % (nok,nm,nb)
176
Note: See TracBrowser for help on using the repository browser.