Changeset 655


Ignore:
Timestamp:
12/05/16 13:23:47 (4 years ago)
Author:
mjuckes
Message:

bugs in volume estimates in tables

Location:
CMIP6dreqbuild/trunk/src/framework/dreqPy
Files:
2 edited

Legend:

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

    r650 r655  
    446446        x = self.acc 
    447447      else: 
    448         x = self.sc.volByExpt( l1, m2, expFullEx=(m2 in self.mips), pmax=pmax ) 
     448        x = self.sc.volByExpt( l1, m2, pmax=pmax ) 
     449 
     450##self.volByExpt( l1, e, pmax=pmax, cc=cc, retainRedundantRank=retainRedundantRank, intersection=intersection, adsCount=adsCount ) 
     451        v0 = self.sc.volByMip( m, pmax=pmax,  exptid=m2 ) 
     452#### 
     453        cc = collections.defaultdict( int ) 
     454        for e in self.sc.volByE: 
     455          for v in self.sc.volByE[e][2]: 
     456             cc[v] += self.sc.volByE[e][2][v] 
     457        xxx = 0 
     458        for v in cc: 
     459          xxx += cc[v] 
     460        print m,m2,'%12.5e' % x[0],'%12.5e' % xxx, '%12.5e' % v0 
     461#### 
    449462        if acc: 
    450           self.accAdd(x) 
    451  
    452       if x[0] > 0: 
    453         if m2 not in [ None, 'TOTAL']: 
     463          for e in self.sc.volByE: 
     464            self.accAdd(self.sc.volByE[e]) 
     465      if m2 not in [ None, 'TOTAL']: 
    454466          im2 = self.dq.inx.uid[m2] 
    455467          mlab2 = im2.label 
     468      else: 
     469          mlab2 = 'TOTAL' 
     470 
     471      for e in self.sc.volByE: 
     472       x = self.sc.volByE[e] 
     473       if x[0] > 0: 
    456474          collector[mlab].a[mlab2] += x[0] 
    457         else: 
    458           mlab2 = 'TOTAL' 
     475 
     476      if collector[mlab].a[mlab2] > 0: 
    459477# 
    460478# create sum for each table 
    461479# 
     480        x0 = collector[mlab].a[mlab2] 
    462481        xs = 0 
    463482        kkc = '_%s_%s' % (mlab,mlab2) 
    464         for k in x[2].keys(): 
    465           i = self.dq.inx.uid[k] 
    466           xxx =  x[2][k] 
    467           xs += xxx 
    468           if xxx > 0: 
     483        if m2 in [None, 'TOTAL']: 
     484          x = self.acc 
     485          for k in x[2].keys(): 
     486           i = self.dq.inx.uid[k] 
     487           xxx =  x[2][k] 
     488           xs += xxx 
     489           if xxx > 0: 
    469490            collector[kkc].a[i.mipTable] += xxx 
    470         assert x[0] == xs, 'ERROR.0088: consistency problem %s  %s %s %s' % (m,m2,x[0],xs) 
    471         if x[0] == 0: 
     491        for e in self.sc.volByE: 
     492          x = self.sc.volByE[e] 
     493          for k in x[2].keys(): 
     494           i = self.dq.inx.uid[k] 
     495           xxx =  x[2][k] 
     496           xs += xxx 
     497           if xxx > 0: 
     498            collector[kkc].a[i.mipTable] += xxx 
     499        ##if m2 != None: 
     500        assert x0 == xs, 'ERROR.0088: consistency problem %s  %s %s %s' % (m,m2,x0,xs) 
     501        if x0 == 0: 
    472502          print ( 'Zero size: %s, %s' % (m,m2) ) 
    473503          if len( x[2].keys() ) > 0: 
     
    475505 
    476506        if acc and m2 not in [ None, 'TOTAL']: 
    477           collector[mlab].a['TOTAL'] += x[0] 
     507          collector[mlab].a['TOTAL'] += x0 
    478508 
    479509        dd = collections.defaultdict( list ) 
  • CMIP6dreqbuild/trunk/src/framework/dreqPy/scope.py

    r643 r655  
    349349    for i in l1: 
    350350      imips.add(i.mip) 
    351     ##imips = {i.mip for i in l1} 
    352351     
    353352    rql, l1p, exset = self.rqlByExpt( l1, ex, pmax=pmax, expFullEx=expFullEx ) 
     
    367366      if exi._h.label == 'experiment': 
    368367        exset = set( [ex,exi.egid,exi.mip] ) 
    369  
    370368##### 
    371369    if len( rql ) == 0: 
     
    411409## 
    412410    nymg = collections.defaultdict( dict ) 
    413  
    414411## 
    415412## if dataset count rather than volume is wanted, use item 3 from rqiExp tuple. 
     
    633630  def rqiByMip( self, mip): 
    634631 
     632    if mip == 'TOTAL': 
     633        mip = self.mips 
    635634    if type(mip) in [type( '' ),type( u'') ]: 
    636635      if mip not in self.mips: 
     
    641640      nf = [ m for m in mip if m not in self.mips] 
    642641      if len(nf) > 0: 
    643         raise baseException( 'rqiByMip: Name of mip(s) not recognised: %s' % str(nf) ) 
     642          raise baseException( 'rqiByMip: Name of mip(s) not recognised: %s' % str(nf) ) 
    644643      l1 = [i for i in  self.dq.coll['requestItem'].items if i.mip in mip] 
    645644    elif type(mip) == type( dict()): 
     
    718717    for e in exps: 
    719718      expts = self.esid_to_exptList(e,deref=True,full=False) 
     719      print 'EXPTS: ',e,len(expts) 
    720720      if expts not in  [None,[]]: 
    721         self.volByE[e] = self.volByExpt( l1, e, pmax=pmax, cc=cc, retainRedundantRank=retainRedundantRank, intersection=intersection, adsCount=adsCount ) 
    722         vtot += self.volByE[e][0] 
     721        for ei in expts: 
     722          self.volByE[ei.label] = self.volByExpt( l1, ei.uid, pmax=pmax, cc=cc, retainRedundantRank=retainRedundantRank, intersection=intersection, adsCount=adsCount ) 
     723          vtot += self.volByE[ei.label][0] 
    723724        self.allVars = self.allVars.union( self.vars ) 
    724725      ##else: 
     
    900901      mips = self.adict['m'] 
    901902      odir = self.adict.get( 'xlsdir', 'xls' ) 
    902       ##print 'odir:::::::::: ',odir 
    903       ##m = list( mips )[0] 
    904903      self.sc.checkDir( odir, 'xls files' ) 
    905904 
Note: See TracChangeset for help on using the changeset viewer.