Changeset 216
- Timestamp:
- 08/09/14 21:53:32 (6 years ago)
- Location:
- CCCC/trunk/ceda_cc
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
CCCC/trunk/ceda_cc/comp_mip.py
r215 r216 302 302 validate('all',c) 303 303 print """Number of tables=%s\nNumber of variables=%s\nNumber of standard names=%s\n""" % (ms.nn_tab,c.nn_var,c.nn_sn) 304 print ms.al 304 305 else: 305 306 for tab in tlist: -
CCCC/trunk/ceda_cc/extractMipInfo.py
r215 r216 103 103 cmip5_ignore = ['pfull','phalf','depth','depth_c','eta','nsigma','vertices_latitude','vertices_longitude','ztop','ptop','p0','z1','z2','href','k_c','a','a_bnds','ap','ap_bnds','b','b_bnds','sigma','sigma_bnds','zlev','zlev_bnds','zfull','zhalf'] 104 104 105 vl0 = [] 106 tl = [] 107 td = {} 108 109 for mip in mips: 105 class mipCo: 106 107 def __init__(self,mips): 108 self.vl0 = [] 109 self.tl = [] 110 self.td = {} 111 for mip in mips: 112 self._scan(mip) 113 114 def _scan(self,mip): 115 110 116 ## dl = glob.glob( '%s%s' % (mip.dir,mip.pattern) ) 111 dl = glob.glob( '%s/%s%s' % (CC_CONFIG_DIR, mip.dir,mip.pattern) ) 112 dl.sort() 113 for d in dl: 114 tab = string.split( d, '/')[-1] 115 isoceanic = tab[:7] == "CMIP5_O" 116 l2 = ms.scan_table( open( d ).readlines(), None, asDict=True, lax=True, tag="x", warn=True) 117 l2k = [] 118 for k in l2.keys(): 119 if k not in cmip5_ignore: 120 l2k.append(k) 121 l2k.sort() 122 vl0 += l2k 123 tl.append( [tab,l2, l2k,isoceanic] ) 124 td[tab] = l2 125 126 vl0.sort() 127 vl = [] 128 vl.append( vl0[0] ) 129 vdict = { vl[0]:[] } 130 for v in vl0[1:]: 131 if v != vl[-1]: 132 vl.append(v) 133 vdict[v] = [] 134 135 for t in tl: 136 print t[0],t[2] 137 for k in t[2]: 138 vdict[k].append(t[0]) 139 140 vars = vdict.keys() 141 vars.sort() 142 for v in vars: 143 l = vdict[v] 144 l.sort() 117 dl = glob.glob( '%s/%s%s' % (CC_CONFIG_DIR, mip.dir,mip.pattern) ) 118 dl.sort() 119 for d in dl: 120 tab = string.split( d, '/')[-1] 121 isoceanic = tab[:7] == "CMIP5_O" 122 l2 = ms.scan_table( open( d ).readlines(), None, asDict=True, lax=True, tag="x", warn=True) 123 l2k = [] 124 for k in l2.keys(): 125 if k not in cmip5_ignore: 126 l2k.append(k) 127 l2k.sort() 128 self.vl0 += l2k 129 self.tl.append( [tab,l2, l2k,isoceanic] ) 130 self.td[tab] = l2 131 132 self.vl0.sort() 133 self.vl = [] 134 self.vl.append( self.vl0[0] ) 135 self.vdict = { self.vl[0]:[] } 136 for v in self.vl0[1:]: 137 if v != self.vl[-1]: 138 self.vl.append(v) 139 self.vdict[v] = [] 140 141 for t in self.tl: 142 for k in t[2]: 143 self.vdict[k].append(t[0]) 144 145 self.vars = self.vdict.keys() 146 self.vars.sort() 147 ##for v in self.vars: 148 ##l = self.vdict[v] 149 ##l.sort() 145 150 ## print v, l, td[l[0]][v][1].get('standard_name','__NO_STANDARD_NAME__') 151 m = mipCo( mips ) 152 vars = m.vars 153 vdict = m.vdict 154 td = m.td 155 156 allatts = ms.al 157 thisatts = ['standard_name','units','long_name'] 158 ## need to have standard name first. 159 for a in allatts: 160 if a not in thisatts: 161 thisatts.append(a) 146 162 147 163 vd2 = {} … … 150 166 l.sort() 151 167 if len(l) > 1: 152 for att in ['standard_name','units','long_name']:168 for att in thisatts: 153 169 ##for att in ['standard_name','units']: 154 170 atl = map( lambda x: td[x][v][1].get(att,'__ABSENT__'), l ) … … 171 187 for x in l: 172 188 a = td[x][v][1].get(att,'__ABSENT__') 173 if att == 'standard_name' or ( att == 'long_name' and vd2[v][0] == 2): 189 try: 190 if att == 'standard_name' or ( att == 'long_name' and vd2[v][0] == 2): 174 191 iso = x[:7] == 'CMIP5_O' 175 192 tt = snsubber.isFalseSn( v, a ) 176 elif att == 'long_name':193 elif att == 'long_name': 177 194 tt = snsubber.isFalseLn( v, a ) 178 195 dims = td[x][v][0] 179 196 iso = 'depth0m' in dims 180 else:197 else: 181 198 iso = False 182 199 tt = (False,) 183 200 ## iso = False 201 except: 202 print att,v 203 raise 184 204 isol.append((iso,x)) 185 205 if tt[0]: … … 197 217 198 218 if not ok: 199 print ' Multiple values : ',att,v219 print 'E001: Multiple values : ',att,v 200 220 for t in isol: 201 221 if t[0] == a: 202 222 tab = t[1] 203 print tab,td[tab][v][1].get('standard_name','__ABSENT__'),td[tab][v][1].get('long_name','__ABSENT__') 223 if att in ['standard_name','long_name']: 224 print tab,td[tab][v][1].get('standard_name','__ABSENT__'),td[tab][v][1].get('long_name','__ABSENT__') 225 else: 226 print tab,td[tab][v][1].get(att,'__ABSENT__') 204 227 205 228 if att == "standard_name": -
CCCC/trunk/ceda_cc/fcc_utils2.py
r212 r216 11 11 12 12 def __init__(self, vats = ['standard_name','long_name','units','cell_methods'] ): 13 self.al = [] 13 14 self.vats = vats 14 15 self.re_cmor_mip2 = re.compile( 'dimensions:(?P<dims>.*?):::' ) … … 36 37 37 38 eee = [] 39 nal = [] 38 40 for s in sll: 39 41 if s[0] == 'variable_entry': … … 51 53 else: 52 54 aa[k] = v 55 nal.append(k) 53 56 if self.project == 'CMIP5': 54 57 if var == 'tos': … … 62 65 eee.append( (var,ds,aa,tag) ) 63 66 67 68 nal.sort() 69 nalu = [nal[0],] 70 for a in nal[1:]: 71 if a != nalu[-1]: 72 nalu.append(a) 73 if a not in self.al: 74 self.al.append( a ) 64 75 65 76 checkOldMethod = False
Note: See TracChangeset
for help on using the changeset viewer.