Ignore:
Timestamp:
24/11/16 16:09:19 (3 years ago)
Author:
mjuckes
Message:

Updated setup for tag 01.beta.43

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreq/trunk/dreqPy/volsum.py

    r872 r880  
    1  
    21import xlsxwriter 
    32from xlsxwriter.utility import xl_rowcol_to_cell 
     
    65try: 
    76  import dreq 
     7  import misc_utils 
    88  import overviewTabs 
    99except: 
    1010  import dreqPy.dreq as dreq 
     11  import dreqPy.misc_utils as misc_utils 
    1112  import dreqPy.overviewTabs as overviewTabs 
    1213 
    1314###cell = xl_rowcol_to_cell(1, 2)  # C2 
    14   
    1515 
    1616class xlsx(object): 
     
    6565    self.xlsPrefixM = 'cmvmm' 
    6666    self.xlsPrefixE = 'cmvme' 
     67    self.xlsPrefixU = 'cmvume' 
    6768    if tabByFreqRealm: 
    6869      self.xlsPrefixM += 'fr' 
    6970      self.xlsPrefixE += 'fr' 
     71      self.xlsPrefixU += 'fr' 
    7072    ii = open( '%s/sfheadings.csv' % idir, 'r' ) 
    7173    self.infoRows = [] 
     
    7678    ii.close() 
    7779 
    78   def analAll(self,pmax,mips=None): 
     80  def analAll(self,pmax,mips=None,html=True): 
    7981      volsmm={} 
    8082      volsmmt={} 
     
    8688        theseMips = mips 
    8789      for m in theseMips: 
     90        olab = m 
     91        if m == '*TOTAL': 
     92            thism = theseMips.copy() 
     93            if type( thism ) == type( set() ): 
     94              thism.remove( '*TOTAL' ) 
     95            else: 
     96              thism.pop( '*TOTAL' ) 
     97            olab = misc_utils.setMlab( thism ) 
     98        elif type( theseMips ) == type( dict() ): 
     99            thism = {m:theseMips[m]} 
     100        else: 
     101            thism = m 
     102 
    88103        if m != 'TOTAL' and 'TOTAL' in theseMips: 
    89           cmv1 = self.sc.cmvByInvMip(m,pmax=pmax,includeYears=True) 
     104          cmv1, cmvts = self.sc.cmvByInvMip(thism,pmax=pmax,includeYears=True) 
    90105          self.uniqueCmv = self.sc.differenceSelectedCmvDict(  cmv1, cmvTotal ) 
    91         self.run( m, '%s/requestVol_%s_%s_%s' % (self.odir,m,self.sc.tierMax,pmax), pmax=pmax ) 
    92  
    93         self.anal(olab=m,doUnique='TOTAL' in theseMips, makeTabs=True) 
     106 
     107        self.run( thism, '%s/requestVol_%s_%s_%s' % (self.odir,olab,self.sc.tierMax,pmax), pmax=pmax ) 
     108 
     109        self.anal(olab=olab,doUnique='TOTAL' in theseMips, makeTabs=True) 
    94110        ttl = sum( [x for k,x in self.res['vu'].items()] )*2.*1.e-12 
    95111        print ( '%s volume: %8.2fTb' % (m,ttl) ) 
     
    101117          cmvTotal = self.sc.selectedCmv.copy() 
    102118          self.uniqueCmv =  {} 
    103       r1 = overviewTabs.r1( self.sc, self.mt_tables, pmax=pmax, vols=( volsmm, volsme, volsmmt,volsue ) ) 
     119      if html: 
     120        r1 = overviewTabs.r1( self.sc, self.mt_tables, pmax=pmax, vols=( volsmm, volsme, volsmmt,volsue ) ) 
    104121 
    105122  def _analSelectedCmv(self,cmv): 
     
    134151            mvol[tt][u] = c1 
    135152 
    136     return lex, vet, vf, vu, mvol 
     153    return dict(lex), dict(vet), dict(vf), dict(vu), dict(mvol) 
    137154 
    138155  def xlsDest(self,mode,olab,lab2): 
    139156    if mode == 'e': 
    140157      return '%s/%s_%s_%s_%s_%s%s' % (self.odir,self.xlsPrefixE,olab,lab2,self.sc.tierMax,self.pmax,self.efnsfx) 
     158    elif mode == 'u': 
     159      return '%s/%s_%s_%s_%s_%s%s' % (self.odir,self.xlsPrefixU,olab,lab2,self.sc.tierMax,self.pmax,self.efnsfx) 
    141160    else: 
    142161      return '%s/%s_%s_%s_%s_%s%s' % (self.odir,self.xlsPrefixM,olab,lab2,self.sc.tierMax,self.pmax,self.efnsfx) 
     
    179198    for e,t in vet: 
    180199      ee = self.sc.dq.inx.uid[e] 
    181       if ee.mip == 'SolarMIP': 
    182         print ('ERROR.solarmip: %s,%s,%s' % (ee.label, ee.title, ee.uid) ) 
    183200      vmt[(ee.mip,t)] += vet[(e,t)] 
    184201      vm[ee.mip] += vet[(e,t)] 
     
    214231      if olab != None and makeTabs: 
    215232        el = self.sc.dq.inx.uid[e].label 
    216         self.makeTab(self.sc.dq, subset=lex[e], dest=self.xlsDest('e',olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm) 
     233        tslice = {} 
     234        for v in self.sc.cmvts: 
     235          if e in self.sc.cmvts[v]: 
     236            tslice[v] = self.sc.cmvts[v][e] 
     237        dest = self.xlsDest('e',olab,el) 
     238        self.makeTab(self.sc.dq, subset=lex[e], dest=self.xlsDest('e',olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm, tslice=tslice) 
     239        ##self.makeTab(self.sc.dq, subset=lex[e], dest=self.xlsDest('e',olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm) 
    217240 
    218241    if olab != 'TOTAL' and doUnique: 
     
    222245        if olab != None and makeTabs: 
    223246          el = self.sc.dq.inx.uid[e].label 
    224           self.makeTab(self.sc.dq, subset=s_lex[e], dest=self.xlsDest('e',olab,el), collected=ucc[e]) 
     247          self.makeTab(self.sc.dq, subset=s_lex[e], dest=self.xlsDest('u',olab,el), collected=ucc[e]) 
    225248 
    226249    self.res = { 'vmt':vmt, 'vet':vet, 'vm':vm, 'uve':uve, 've':ve, 'lm':lm, 'lex':lex, 'vu':vu, 'cc':cc, 'cct':cct} 
     
    245268    self.mvol = collections.defaultdict( dict ) 
    246269    self.rvol = dict() 
    247  
    248270    ix = 3 
    249271    for tt in sorted( c3.keys() ): 
     
    293315      mip = set(self.sc.mips ) 
    294316    self.mip = mip 
    295     print 'Writing %s' % fn 
     317    print ('Writing %s' % fn ) 
    296318    self.x = xlsx( fn ) 
    297319    self.sht = self.x.newSheet( 'Volume' ) 
Note: See TracChangeset for help on using the changeset viewer.