Changeset 1254 for CMIP6dreqbuild/trunk/src/framework/dreqPy/volsum.py
- Timestamp:
- 20/08/18 14:01:12 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
CMIP6dreqbuild/trunk/src/framework/dreqPy/volsum.py
r1241 r1254 59 59 60 60 class vsum(object): 61 def __init__(self,sc,odsz,npy,exptFilter=None, odir='xls', tabByFreqRealm=False ):61 def __init__(self,sc,odsz,npy,exptFilter=None, odir='xls', tabByFreqRealm=False,txt=False,txtOpts=None): 62 62 self.tabByFreqRealm = tabByFreqRealm 63 self.doTxt = txt 64 self.txtOpts = txtOpts 63 65 idir = dreq.DOC_DIR 64 66 if 'collect' not in sc.dq._extensions_: … … 110 112 theseMips = ['TOTAL',] + self.sc.mips 111 113 else: 112 theseMips = mips 114 theseMips = list(mips) 115 116 ## move *TOTAL to end of list. 117 if '*TOTAL' in theseMips: 118 theseMips.remove( '*TOTAL' ) 119 theseMips.append( '*TOTAL' ) 113 120 114 121 self.rres = {} 115 122 self.rresu = {} 123 self.accPdict = collections.defaultdict( set ) 116 124 117 125 for m in theseMips: 118 126 olab = m 127 useAccPdict = False 119 128 if m == '*TOTAL': 120 thism = theseMips .copy()129 thism = theseMips[:] 121 130 if type( thism ) == type( set() ): 122 131 thism.remove( '*TOTAL' ) 123 132 else: 124 thism. pop( '*TOTAL' )133 thism.remove( '*TOTAL' ) 125 134 olab = misc_utils.setMlab( thism ) 135 useAccPdict = True 126 136 elif type( theseMips ) == type( dict() ): 127 137 thism = {m:theseMips[m]} … … 135 145 self.run( thism, '%s/requestVol_%s_%s_%s' % (self.odir,olab,self.sc.tierMax,pmax), pmax=pmax,doxlsx=makeTabs ) 136 146 137 self.anal(olab=olab,doUnique='TOTAL' in theseMips, makeTabs=makeTabs )147 self.anal(olab=olab,doUnique='TOTAL' in theseMips, makeTabs=makeTabs, useAccPdict=useAccPdict) 138 148 ttl = sum( [x for k,x in self.res['vu'].items()] )*2.*1.e-12 139 149 volsmm[m] = self.res['vm'] … … 190 200 return '%s/%s_%s_%s_%s_%s%s' % (self.odir,self.xlsPrefixM,olab,lab2,self.sc.tierMax,self.pmax,self.efnsfx) 191 201 192 def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full' ):202 def anal(self,olab=None,doUnique=False,makeTabs=False,mode='full',useAccPdict=False): 193 203 vmt = collections.defaultdict( int ) 194 204 vm = collections.defaultdict( int ) … … 250 260 if makeTabs: 251 261 ##table_utils.makeTab(self.sc.dq, subset=lm[m], dest=self.xlsDest('m',olab,m), collected=cc[m],exptUid=self.sc.exptByLabel.get(m,m) ) 252 table_utils.makeTab(self.sc, subset=lm[m], dest=self.xlsDest('m',olab,m), collected=cc[m] )262 table_utils.makeTab(self.sc, subset=lm[m], dest=self.xlsDest('m',olab,m), collected=cc[m], txt=self.doTxt, txtOpts=self.txtOpts ) 253 263 254 264 if olab != None and makeTabs: 255 table_utils.makeTab(self.sc, subset=ss, dest=self.xlsDest('m',olab,'TOTAL'), collected=cct )265 table_utils.makeTab(self.sc, subset=ss, dest=self.xlsDest('m',olab,'TOTAL'), collected=cct, txt=self.doTxt, txtOpts=self.txtOpts ) 256 266 if olab != 'TOTAL' and doUnique: 257 table_utils.makeTab(self.sc, subset=s_lm, dest=self.xlsDest('m',olab,'Unique'), collected=s_cc )267 table_utils.makeTab(self.sc, subset=s_lm, dest=self.xlsDest('m',olab,'Unique'), collected=s_cc, txt=self.doTxt, txtOpts=self.txtOpts ) 258 268 259 269 cc = collections.defaultdict( dict ) … … 266 276 el = self.sc.dq.inx.uid[e].label 267 277 268 if olab in ['Total','TOTAL']: 278 if useAccPdict: 279 pdict = collections.defaultdict( set ) 280 for vid, p in self.accPdict[e]: 281 pdict[vid].add( p ) 282 283 elif olab in ['Total','TOTAL']: 269 284 pdict = None 270 285 elif (olab,el) in self.exptMipRql: … … 275 290 rqv = self.sc.dq.inx.uid[rqvid] 276 291 pdict[rqv.vid].add( rqv.priority ) 292 self.accPdict[e].add( (rqv.vid,rqv.priority) ) 277 293 else: 278 print 'INFO.00201: olab,e not found:',olab,el294 print ( 'INFO.00201: olab,e not found:',olab,el ) 279 295 pdict = None 280 296 … … 285 301 dest = self.xlsDest('e',olab,el) 286 302 mode ='e' 287 table_utils.makeTab(self.sc, subset=lex[e], dest=self.xlsDest(mode,olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm, tslice=tslice, exptUid=e, tabMode=mode, pdict=pdict )303 table_utils.makeTab(self.sc, subset=lex[e], dest=self.xlsDest(mode,olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm, tslice=tslice, exptUid=e, tabMode=mode, pdict=pdict, txt=self.doTxt, txtOpts=self.txtOpts ) 288 304 289 305 if olab != 'TOTAL' and doUnique: … … 293 309 if olab != None and makeTabs: 294 310 el = self.sc.dq.inx.uid[e].label 295 table_utils.makeTab(self.sc, subset=s_lex[e], dest=self.xlsDest('u',olab,el), collected=ucc[e] )311 table_utils.makeTab(self.sc, subset=s_lex[e], dest=self.xlsDest('u',olab,el), collected=ucc[e], txt=self.doTxt, txtOpts=self.txtOpts) 296 312 297 313 self.res = { 'vmt':vmt, 'vet':vet, 'vm':vm, 'uve':uve, 've':ve, 'lm':lm, 'lex':lex, 'vu':vu, 'cc':cc, 'cct':cct, 'vf':vf}
Note: See TracChangeset
for help on using the changeset viewer.