Ignore:
Timestamp:
15/11/16 09:14:41 (3 years ago)
Author:
mjuckes
Message:

Updated setup for tag 01.beta.42

File:
1 edited

Legend:

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

    r856 r863  
    1515  import makeTables 
    1616  import fgrid 
     17  import volsum 
    1718else: 
     19  import dreqPy.volsum as volsum 
    1820  import dreqPy.fgrid as fgrid 
    1921  from dreqPy.utilities import cmvFilter  
     
    137139    self.gridPolicyTopOnly = True 
    138140    self.exptFilter = None 
     141    self.exptFilterBlack = None 
    139142    self.uniqueRequest = False 
    140143 
    141144    self.mips = set( [x.label for x in self.dq.coll['mip'].items ] ) 
    142     self.mips = ['AerChemMIP', 'C4MIP', 'CFMIP', 'DAMIP', 'DCPP', 'FAFMIP', 'GeoMIP', 'GMMIP', 'HighResMIP', 'ISMIP6', 'LS3MIP', 'LUMIP', 'OMIP', 'PMIP', 'RFMIP', 'ScenarioMIP', 'VolMIP', 'CORDEX', 'DynVar', 'SIMIP', 'VIACSAB'] 
    143     self.mipsp = ['DECK','CMIP6',] + self.mips[:-4] 
     145    self.mips = ['CMIP','AerChemMIP', 'C4MIP', 'CFMIP', 'DAMIP', 'DCPP', 'FAFMIP', 'GeoMIP', 'GMMIP', 'HighResMIP', 'ISMIP6', 'LS3MIP', 'LUMIP', 'OMIP', 'PMIP', 'RFMIP', 'ScenarioMIP', 'VolMIP', 'CORDEX', 'DynVar', 'SIMIP', 'VIACSAB'] 
     146    self.mipsp = self.mips[:-4] 
    144147    self.cmvGridId, i4 = fgrid.fgrid( self.dq ) 
    145148    assert len(i4) == 0 
     
    433436      return thisvars 
    434437 
    435   def exptYears( self, rqll, ex=None): 
     438  def exptYears( self, rqll, ex=None, exBlack=None): 
    436439    """Parse a set of request links, and get years requested for each (varGroup, expt, grid) tuple """ 
    437440       
     
    458461          if iu in self.rqiExp: 
    459462            for e in self.rqiExp[iu][1]: 
    460               if ex == None or e in ex: 
     463              if (ex == None or e in ex) and (exBlack == None or e not in exBlack): 
    461464                this = self.rqiExp[iu][1][e] 
    462465                if this != None: 
     
    901904    return self.cmvByMip( mips,pmax=pmax,includeYears=includeYears, exptFilter=exptFilter ) 
    902905 
    903   def cmvByMip( self, mip,pmax=1,includeYears=False, exptFilter=None ): 
     906  def cmvByMip( self, mip,pmax=1,includeYears=False, exptFilter=None, exptFilterBlack=None ): 
    904907    if exptFilter != None: 
    905908      assert type(exptFilter) == type( set() ), 'Argument exptFilter must be None or a set: %s' % str(exptFilter) 
     909    if exptFilterBlack != None: 
     910      assert type(exptFilterBlack) == type( set() ), 'Argument exptFilterBlack must be None or a set: %s' % str(exptFilterBlack) 
     911      if exptFilter != None: 
     912        assert len( exptFilter.difference( exptFilterBlack ) ) > 0, 'If exptFilter and exptFilterBlack are both set, exptFilter must have non-black listed elements'  
     913 
    906914    l1,ee = self.rvgByMip( mip, includePreset=True, returnLinks=True ) 
    907915    if includeYears: 
    908       expys = self.exptYears( l1, ex=exptFilter ) 
     916      expys = self.exptYears( l1, ex=exptFilter, exBlack=exptFilterBlack ) 
    909917      cc = collections.defaultdict( set ) 
    910918    ss = set() 
     
    918926          for x in self.dq.inx.iref_by_sect[i.uid].a['requestVar']: 
    919927            i1 = self.dq.inx.uid[x] 
     928            if i1.vid == 'baa586e6-e5dd-11e5-8482-ac72891c3257': 
     929               print 'INFO.cmv.00055: ',i1.vid, i1.priority, i1.mip, i1.title 
    920930            if (pr == -1 and i1.priority <= pmax) or (pr > 0 and pr <= pmax): 
    921931              if includeYears and i1.vid in self.cmvGridId: 
     
    926936                gflg = {'si':'','li':''}.get( self.cmvGridId[i1.vid], self.cmvGridId[i1.vid] ) 
    927937                rtl = True 
     938                if i1.vid == 'baa586e6-e5dd-11e5-8482-ac72891c3257': 
     939                  print 'INFO.cmv.00056: ',i1.vid, gflg, expys[i.uid] 
    928940                if i.uid in expys: 
    929941                  if rtl: 
     
    937949                          else: 
    938950                            grd1 = grd 
     951                          if i1.vid == 'baa586e6-e5dd-11e5-8482-ac72891c3257': 
     952                             print 'INFO.cmv.0002: ',e,grd1,grd 
    939953                          cc[(i1.vid,e,grd1)].add( expys[i.uid][e,grd] ) 
    940954                  else: 
     
    10081022## 
    10091023    if not self.uniqueRequest: 
    1010       cmv = self.cmvByMip(mip,pmax=pmax,includeYears=True,exptFilter=self.exptFilter) 
    1011     else: 
    1012       cmv1 = self.cmvByInvMip(mip,pmax=pmax,includeYears=True,exptFilter=self.exptFilter) 
    1013       cmv2 = self.cmvByMip('TOTAL',pmax=pmax,includeYears=True,exptFilter=self.exptFilter) 
     1024      cmv = self.cmvByMip(mip,pmax=pmax,includeYears=True,exptFilter=self.exptFilter,exptFilterBlack=self.exptFilterBlack) 
     1025    else: 
     1026      cmv1 = self.cmvByInvMip(mip,pmax=pmax,includeYears=True,exptFilter=self.exptFilter,exptFilterBlack=self.exptFilterBlack) 
     1027      cmv2 = self.cmvByMip('TOTAL',pmax=pmax,includeYears=True,exptFilter=self.exptFilter,exptFilterBlack=self.exptFilterBlack) 
    10141028      cmv = self.differenceSelectedCmvDict(  cmv1, cmv2 ) 
    10151029  
     
    10391053      return cmv 
    10401054 
    1041   def cmvByFreqStr(self,cmv,asDict=True,exptFilter=None): 
     1055  def cmvByFreqStr(self,cmv,asDict=True,exptFilter=None,exptFilterBlack=None): 
    10421056    if exptFilter != None: 
    10431057      assert type(exptFilter) == type( set() ), 'Argument exptFilter must be None or a set: %s' % str(exptFilter) 
     1058    if exptFilterBlack != None: 
     1059      assert type(exptFilterBlack) == type( set() ), 'Argument exptFilterBlack must be None or a set: %s' % str(exptFilterBlack) 
     1060      if exptFilter != None: 
     1061        assert len( exptFilter.difference( exptFilterBlack ) ) > 0, 'If exptFilter and exptFilterBlack are both set, exptFilter must have non-black listed elements'  
     1062 
    10441063    cc = collections.defaultdict( list ) 
    10451064    for i in cmv: 
     
    10511070          cc1 = collections.defaultdict( int ) 
    10521071          se = collections.defaultdict( set ) 
     1072          if i == 'baa586e6-e5dd-11e5-8482-ac72891c3257': 
     1073             print 'INFO.vo.00001: ',cmv[i] 
    10531074          for e,g in cmv[i]: 
    10541075            cc0[g] += cmv[i][(e,g)] 
     
    11231144              if exptFilter != None: 
    11241145                expts = exptFilter.intersection( expts ) 
     1146              if exptFilterBlack != None: 
     1147                expts = expts.difference( exptFilterBlack ) 
    11251148 
    11261149              if len(expts) > 0: 
     
    11921215    else: 
    11931216      return self.strSz[ (s,o,g) ] 
    1194  
    1195   def xxx__csvFreqStrSummary(self,mip,records=False,pmax=1): 
    1196     sf, c3 = self.getFreqStrSummary(mip,pmax=pmax) 
    1197     lf = sorted( list(sf) ) 
    1198     hdr = ['','',''] 
    1199     for f in lf: 
    1200       hdr += [f,'','',str( npy.get( f, '****') )] 
    1201     orecs = [hdr,] 
    1202     crecs = [None,] 
    1203     for tt in sorted( c3.keys() ): 
    1204       s,o,g = tt 
    1205       i = self.dq.inx.uid[ s ] 
    1206       if o != '': 
    1207         msg = '%48.48s [%s]' % (i.title,o) 
    1208       else: 
    1209         msg = '%48.48s' % i.title 
    1210       if g != 'native': 
    1211         msg += '{%s}' % g 
    1212       szg = self.getStrSz( g, s=s, o=o )[1] 
    1213  
    1214       rec = [msg,szg,2] 
    1215       crec = ['','',''] 
    1216       for f in lf: 
    1217         if f in c3[tt]: 
    1218             nn,ny,ne,labs = c3[tt][f] 
    1219             rec += [nn,ny,ne,''] 
    1220             crec += [labs,'','',''] 
    1221         else: 
    1222             rec += ['','','',''] 
    1223             crec += ['','','',''] 
    1224       orecs.append( rec ) 
    1225       crecs.append( crec ) 
    1226  
    1227     if records: 
    1228       return (orecs, crecs) 
    1229     oo = open( 'text.csv', 'w' ) 
    1230     for rec in orecs: 
    1231       oo.write( '\t'.join( [str(x) for x in rec] ) + '\n' ) 
    1232     oo.close() 
    12331217 
    12341218  def rvgByMip( self, mip, years=False, includePreset=False, returnLinks=False ): 
     
    15361520 
    15371521    if 'SF' in self.adict: 
    1538       import volsum 
    15391522      self.sc.gridPolicyDefaultNative = True 
    15401523      vs = volsum.vsum( self.sc, odsz, npy, makeTables.makeTab, makeTables.tables, odir=xlsOdir ) 
     
    15761559        self.sc.exptFilter = set( [eid,] ) 
    15771560 
     1561    ss = set() 
     1562    for e in ['esm-hist','esm-hist-ext','esm-piControl','piControl-spinup','esm-piControl-spinup']: 
     1563      ss.add( self.sc.exptByLabel[ e ] ) 
     1564    self.sc.exptFilterBlack = ss 
     1565 
    15781566    if 'sf' in self.adict: 
    1579       import volsum 
    1580       vs = volsum.vsum( self.sc, odsz, npy, makeTables.makeTab, odir=xlsOdir ) 
     1567      vs = volsum.vsum( self.sc, odsz, npy, makeTables.makeTab, makeTables.tables, odir=xlsOdir ) 
    15811568      vs.run( self.adict['m'], 'requestVol_%s_%s_%s' % (mlab,tierMax,pmax), pmax=pmax )  
    15821569      vs.anal(olab=mlab,doUnique=False) 
     1570      vs.analAll(pmax,mips=self.adict['m']) 
    15831571      ttl = sum( [x for k,x in vs.res['vu'].items()] )*2.*1.e-12 
    15841572      ttl2 = sum( [x for k,x in vs.res['vu'].items()] )*2.*1.e-12 
Note: See TracChangeset for help on using the changeset viewer.