Ignore:
Timestamp:
20/08/18 14:01:12 (3 years ago)
Author:
mjuckes
Message:

fixed --txt option

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/src/framework/dreqPy/volsum.py

    r1241 r1254  
    5959 
    6060class 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): 
    6262    self.tabByFreqRealm = tabByFreqRealm 
     63    self.doTxt = txt 
     64    self.txtOpts = txtOpts 
    6365    idir = dreq.DOC_DIR 
    6466    if 'collect' not in sc.dq._extensions_: 
     
    110112        theseMips =  ['TOTAL',] + self.sc.mips 
    111113      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' ) 
    113120 
    114121      self.rres = {} 
    115122      self.rresu = {} 
     123      self.accPdict = collections.defaultdict( set ) 
    116124     
    117125      for m in theseMips: 
    118126        olab = m 
     127        useAccPdict = False 
    119128        if m == '*TOTAL': 
    120             thism = theseMips.copy() 
     129            thism = theseMips[:] 
    121130            if type( thism ) == type( set() ): 
    122131              thism.remove( '*TOTAL' ) 
    123132            else: 
    124               thism.pop( '*TOTAL' ) 
     133              thism.remove( '*TOTAL' ) 
    125134            olab = misc_utils.setMlab( thism ) 
     135            useAccPdict = True 
    126136        elif type( theseMips ) == type( dict() ): 
    127137            thism = {m:theseMips[m]} 
     
    135145        self.run( thism, '%s/requestVol_%s_%s_%s' % (self.odir,olab,self.sc.tierMax,pmax), pmax=pmax,doxlsx=makeTabs ) 
    136146 
    137         self.anal(olab=olab,doUnique='TOTAL' in theseMips, makeTabs=makeTabs) 
     147        self.anal(olab=olab,doUnique='TOTAL' in theseMips, makeTabs=makeTabs, useAccPdict=useAccPdict) 
    138148        ttl = sum( [x for k,x in self.res['vu'].items()] )*2.*1.e-12 
    139149        volsmm[m] = self.res['vm'] 
     
    190200      return '%s/%s_%s_%s_%s_%s%s' % (self.odir,self.xlsPrefixM,olab,lab2,self.sc.tierMax,self.pmax,self.efnsfx) 
    191201 
    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): 
    193203    vmt = collections.defaultdict( int ) 
    194204    vm = collections.defaultdict( int ) 
     
    250260        if makeTabs: 
    251261          ##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 ) 
    253263 
    254264    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 ) 
    256266        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 ) 
    258268 
    259269    cc = collections.defaultdict( dict ) 
     
    266276        el = self.sc.dq.inx.uid[e].label 
    267277 
    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']: 
    269284          pdict = None 
    270285        elif (olab,el) in self.exptMipRql: 
     
    275290               rqv = self.sc.dq.inx.uid[rqvid] 
    276291               pdict[rqv.vid].add( rqv.priority ) 
     292               self.accPdict[e].add( (rqv.vid,rqv.priority) ) 
    277293        else: 
    278           print 'INFO.00201: olab,e not found:',olab,el 
     294          print ( 'INFO.00201: olab,e not found:',olab,el ) 
    279295          pdict = None 
    280296 
     
    285301        dest = self.xlsDest('e',olab,el) 
    286302        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 ) 
    288304 
    289305    if olab != 'TOTAL' and doUnique: 
     
    293309        if olab != None and makeTabs: 
    294310          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) 
    296312 
    297313    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.