source: CMIP6dreqbuild/trunk/src/framework/exportVars.py @ 989

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CMIP6dreqbuild/trunk/src/framework/exportVars.py@1291
Revision 989, 5.9 KB checked in by mjuckes, 3 years ago (diff)

new ingest stream

Line 
1
2from dreqPy import dreq
3import xlsxwriter
4
5def extend(a,x):
6  if len( a.intersection( set( x) ) ) > 0:
7    print 'ERROR: intersection in class lists: ',a.intersection( set( x) ) 
8  return a.union( set( x ) )
9
10
11dq = dreq.loadDreq()
12
13##cell_format = wb.add_format({'text_wrap': True, 'font_size': 14, 'font_color':'#0000ff', 'bold':1, 'fg_color':'#aaaacc'})
14def dumpSect(key,tags,fn, flagwith=None):
15    wb = xlsxwriter.Workbook('exports/%s.xlsx' % fn)
16    s = wb.add_worksheet(name='data')
17    s.write( 0,0, key )
18    ir = 3
19    for k in range( len(tags) ):
20      s.write( ir, k+1, tags[k] )
21    ir += 1
22    print 'Starting %s: %s' % (key,str(tags))
23    for i in dq.coll[key].items:
24      if flagwith != None:
25        for k in flagwith.keys():
26           if i.label in flagwith[k]:
27             s.write( ir, 0, k )
28      for k in range( len(tags) ):
29        ttype =  i.__class__.__dict__[ tags[k] ].type
30        v0 = i.__dict__.get(tags[k],'')
31        if ttype == 'aa:st__stringList':
32          val = ' '.join( v0 )
33        elif ttype in [u'aa:st__floatList', u'aa:st__floatListMonInc', u'aa:st__integerList', u'aa:st__integerListMonInc']:
34          val = ' '.join( [str(x) for x in v0] )
35        elif ttype == 'aa:st__stringList':
36          val = ' '.join( v0 )
37        else:
38          val = str( v0 )
39        s.write( ir, k+1, val )
40      ir += 1
41    wb.close()
42
43def expAll(dq,exports):
44  for k in dq.coll:
45    if k not in exports:
46      c0 = sorted( dq.coll[k].attDefn.keys() )
47      c1 = ['label','title','uid']
48      assert all( [x in c0 for x in c1] ), 'Missing keys: %s' % k
49      for c in c0:
50        if c not in c1:
51          c1.append(c)
52      exports[k] = c1[:]
53  return exports
54
55def expDef():
56  exports = {}
57
58  exports['requestVar'] = [u'label', u'mip', u'priority', u'title', u'uid', u'vgid', u'vid']
59  exports['temporalShape'] = [u'label', u'title', u'dimensions', u'uid', u'dimid']
60  exports['units'] = [u'label', u'text', u'title', u'group', u'uid']
61  exports['cellMethods'] = [u'label', u'title', u'cell_methods', u'uid', u'description']
62  exports['standardname'] = [u'label', u'title', u'uid', u'description', u'units']
63  exports['mip'] = [u'label', u'title', u'uid', u'url']
64  exports['grids'] = [u'label', u'title',u'altLabel',u'standardName', u'axis', u'bounds', u'boundsRequested', u'boundsValues', u'coords', u'description', u'direction', u'isGrid', u'isIndex', u'positive', u'requested', u'tables', u'tolRequested', u'type', u'uid', u'units', u'valid_max', u'valid_min', u'value']
65
66  exports['var'] = [u'description', u'label', u'procComment', u'procnote', u'prov', u'provmip', u'sn', u'title', u'uid', u'unid', u'units']
67  exports['miptable'] = [u'label', u'title', u'altLabel', u'comment', u'description', u'frequency', u'uid']
68
69  exports['CMORvar'] = [u'label', u'mipTable',u'description', u'frequency',u'defaultPriority', u'deflate', u'deflate_level', u'mipTableSection', u'modeling_realm', u'mtid', u'positive', u'processing', u'prov', u'provNote', u'rowIndex', u'shuffle', u'stid', u'subGroup', u'title', u'type', u'uid', u'vid']
70
71  exports['structure'] = [u'label', u'title', u'description', u'cids', u'procNote', u'uid', u'odims', u'flag_meanings', u'prov', u'tmid', u'cmid', u'flag_values', u'cell_methods', u'dids', u'coords', u'spid', u'cell_measures']
72  all = set()
73  oneleva = ['str-h053', 'str-345', 'str-d32', 'str-209', 'str-063', 'str-116', 'str-295', 'str-043', 'str-d30', 'str-d78', 'str-122', 'str-181', 'str-d29']
74  all = all.union( set( oneleva ) )
75  onelevb = ['str-b114', 'str-376', 'str-d65', 'str-b121', 'str-013', 'str-d54', 'str-d53', 'str-d50']
76  all = all.union( set( onelevb ) )
77  atype = ['str-h031', 'str-h061', 'str-h025', 'str-h036', 'str-h038', 'str-h068', 'str-h039', 'str-h037', 'str-h033', 'str-h071', 'str-h034', 'str-h027', 'str-h032', 'str-h035', 'str-h043', 'str-h022', 'str-h020', 'str-h028', 'str-h060', 'str-h065', 'str-h066']
78  all = all.union( set( atype ) )
79
80  tmglsl = ['str-a014', 'str-b107', 'str-387', 'str-b222', 'str-h023', 'str-041', 'str-x212', 'str-h042', 'str-h044', 'str-h046', 'str-d64', 'str-013', 'str-h064', 'str-447', 'str-d67', 'str-a049', 'str-a423', 'str-b220']
81
82  glsl = ['str-348', 'str-a014', 'str-b107', 'str-387', 'str-b222', 'str-h023', 'str-041', 'str-d11', 'str-d44', 'str-x212', 'str-h042', 'str-h044', 'str-h046', 'str-a062', 'str-d64', 'str-013', 'str-h064', 'str-447', 'str-d67', 'str-a049', 'str-a423', 'str-b220', 'str-h041', 'str-340', 'str-054']
83  all = extend( all, glsl )
84
85  h2mcm = ['str-189', 'str-130', 'str-082', 'str-083', 'str-d54']
86  all = extend( all, h2mcm )
87
88  tmglslo = ['str-d02', 'str-d04', 'str-h049', 'str-a043', 'str-147', 'str-037']
89  glslo = ['str-d39', 'str-d02', 'str-d04', 'str-h049', 'str-a043', 'str-147', 'str-a019', 'str-037']
90  all = extend( all, glslo )
91
92  tmgm = ['str-032', 'str-x188', 'str-x185', 'str-b193', 'str-x184', 'str-135', 'str-106']
93  gm = ['str-032', 'str-x188', 'str-x185', 'str-b193', 'str-x184', 'str-135', 'str-a449', 'str-106']
94  all = extend( all, gm )
95
96  xyza = ['str-a023', 'str-245', 'str-210', 'str-b192', 'str-287', 'str-055', 'str-078']
97  xyzb = ['str-318', 'str-311', 'str-018', 'str-296', 'str-268', 'str-010']
98  xyzc = ['str-a090', 'str-a063', 'str-a468']
99  xyzd = ['str-b120', 'str-d49']
100  xyz = xyza + xyzb + xyzc + xyzd
101  all = extend( all, xyz )
102
103  print 'LEN ALL: ',len(all)
104
105  flagdict = {'structure':{'class::oneLevel':set( oneleva + onelevb ),
106                           'class::areaType': set( atype ),
107                           'class::tmglsl': set(glsl),
108                           'class::h2mcm': set(h2mcm),
109                           'class::gm': set(gm),
110                           'class::xyz': set(xyz),
111                           'class::tmglslo': set( glslo) }
112                }
113  return exports, flagdict
114
115exports, flagdict = expDef()
116exports = expAll(dq,exports)
117
118for key in exports.keys():
119  fn = key
120  if key in flagdict:
121    dumpSect( key, exports[key], fn, flagwith=flagdict[key] )
122  else:
123    dumpSect( key, exports[key], fn )
Note: See TracBrowser for help on using the repository browser.