Changeset 1062


Ignore:
Timestamp:
18/09/17 19:41:11 (2 years ago)
Author:
mjuckes
Message:

TOTAL bug: partial solution

Location:
CMIP6dreqbuild/trunk/src/framework
Files:
5 edited

Legend:

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

    r1031 r1062  
    223223      self.dq = dreq.loadDreq() 
    224224    else: 
    225       self.dq=dq 
     225      self.dq = dq 
    226226    self.rlu = {} 
    227227    for i in self.dq.coll['objective'].items: 
     
    255255    self.experiments = set( [x.uid for x in self.dq.coll['experiment'].items ] ) 
    256256    self.exptByLabel = {} 
     257    self.rqLinkByExpt = self._setRqLinkByExpt() 
    257258    for x in self.dq.coll['experiment'].items: 
    258259      if x.label in self.exptByLabel: 
     
    266267    self.szcfg() 
    267268    self.requestItemExpAll(  ) 
     269 
     270  def _setRqLinkByExpt(self): 
     271    dq = self.dq 
     272    ee = {} 
     273# 
     274# loop over experiment records 
     275## 
     276    for e in dq.coll['experiment'].items: 
     277      eu = e.uid 
     278      ss = set() 
     279 
     280## loop over request link records 
     281      for l in dq.coll['requestLink'].items: 
     282        lu = l.uid 
     283 
     284## check to see if any request items associated with the record link to current experiment. 
     285        for u in dq.inx.iref_by_sect[lu].a['requestItem']: 
     286            esid = dq.inx.uid[u].esid 
     287            if esid == eu or 'experiment' in dq.inx.iref_by_sect[esid].a and eu in dq.inx.iref_by_sect[esid].a['experiment']: 
     288              ss.add( lu ) 
     289      ee[eu] = ss 
     290    return ee 
    268291 
    269292  def showOpts(self): 
  • CMIP6dreqbuild/trunk/src/framework/dreqPy/table_utils.py

    r1060 r1062  
    248248### 
    249249class makeTab(object): 
    250   def __init__(self, dq, subset=None, mcfgNote=None, dest='tables/test', skipped=set(), collected=None,xls=True,txt=False,txtOpts=None,byFreqRealm=False, tslice=None): 
     250  def __init__(self, sc, subset=None, mcfgNote=None, dest='tables/test', skipped=set(), collected=None,xls=True,txt=False,txtOpts=None,byFreqRealm=False, tslice=None, exptUid=None): 
    251251    """txtOpts: gives option to list MIP variables instead of CMOR variables""" 
     252    self.sc = sc 
     253    dq = sc.dq 
    252254    if subset != None: 
    253255      cmv = [x for x in dq.coll['CMORvar'].items if x.uid in subset] 
     
    272274    if addMips: 
    273275      chkv = vrev.checkVar(dq) 
     276      chkv.sc = self.sc 
    274277    mode = 'c' 
    275278    tableNotes = [ 
     
    370373## change "c" to something searchable 
    371374            if addMips: 
     375## 
     376## union of all mips interested in this variable 
     377## 
    372378              thismips = chkv.chkCmv( v.uid ) 
    373               thismips2 = chkv.chkCmv( v.uid, byExpt=True ) 
     379## 
     380## all mips requesting this variable for this experiment 
     381## 
     382              thismips2 = chkv.chkCmv( v.uid, byExpt=True, expt=exptUid ) 
    374383              orec.append( ','.join( sorted( list( thismips) ) ) ) 
    375384              orec.append( ','.join( sorted( list( thismips2) ) ) ) 
     
    560569###         need the variable list itself ..... 
    561570### 
    562           makeTab( self.sc.dq, subset=lll, dest='%s/%s-%s_%s_%s' % (self.odir,mlab,mlab2,self.sc.tierMax,pmax), collected=collector[kkc].a, 
     571          makeTab( self.sc, subset=lll, dest='%s/%s-%s_%s_%s' % (self.odir,mlab,mlab2,self.sc.tierMax,pmax), collected=collector[kkc].a, 
    563572              mcfgNote=self.sc.mcfgNote, 
    564               txt=self.doTxt, xls=self.doXls, txtOpts=self.txtOpts ) 
     573              txt=self.doTxt, xls=self.doXls, txtOpts=self.txtOpts, exptUid=self.sc.exptByLabel.get(mlab2,mlab2) ) 
  • CMIP6dreqbuild/trunk/src/framework/dreqPy/volsum.py

    r1031 r1062  
    232232        ss = ss.union( lm[m] ) 
    233233        if makeTabs: 
    234           table_utils.makeTab(self.sc.dq, subset=lm[m], dest=self.xlsDest('m',olab,m), collected=cc[m]) 
     234          ##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) ) 
     235          table_utils.makeTab(self.sc, subset=lm[m], dest=self.xlsDest('m',olab,m), collected=cc[m] ) 
    235236 
    236237    if olab != None and makeTabs: 
    237         table_utils.makeTab(self.sc.dq, subset=ss, dest=self.xlsDest('m',olab,'TOTAL'), collected=cct) 
     238        table_utils.makeTab(self.sc, subset=ss, dest=self.xlsDest('m',olab,'TOTAL'), collected=cct) 
    238239        if olab != 'TOTAL' and doUnique: 
    239           table_utils.makeTab(self.sc.dq, subset=s_lm, dest=self.xlsDest('m',olab,'Unique'), collected=s_cc) 
     240          table_utils.makeTab(self.sc, subset=s_lm, dest=self.xlsDest('m',olab,'Unique'), collected=s_cc) 
    240241 
    241242    cc = collections.defaultdict( dict ) 
     
    252253            tslice[v] = self.sc.cmvts[v][e] 
    253254        dest = self.xlsDest('e',olab,el) 
    254         table_utils.makeTab(self.sc.dq, subset=lex[e], dest=self.xlsDest('e',olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm, tslice=tslice) 
     255        table_utils.makeTab(self.sc, subset=lex[e], dest=self.xlsDest('e',olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm, tslice=tslice, exptUid=e) 
    255256        ##self.makeTab(self.sc.dq, subset=lex[e], dest=self.xlsDest('e',olab,el), collected=cc[e],byFreqRealm=self.tabByFreqRealm) 
    256257 
     
    261262        if olab != None and makeTabs: 
    262263          el = self.sc.dq.inx.uid[e].label 
    263           table_utils.makeTab(self.sc.dq, subset=s_lex[e], dest=self.xlsDest('u',olab,el), collected=ucc[e]) 
     264          table_utils.makeTab(self.sc, subset=s_lex[e], dest=self.xlsDest('u',olab,el), collected=ucc[e]) 
    264265 
    265266    self.res = { 'vmt':vmt, 'vet':vet, 'vm':vm, 'uve':uve, 've':ve, 'lm':lm, 'lex':lex, 'vu':vu, 'cc':cc, 'cct':cct, 'vf':vf} 
  • CMIP6dreqbuild/trunk/src/framework/dreqPy/vrev.py

    r1061 r1062  
    109109      mips0 = set( [dq.inx.uid[i].mip for i in s2] ) 
    110110    if byExpt or byBoth: 
     111      s3 = set() 
    111112 
     113      if expt != None: 
     114        for i in s2: 
     115          if i in self.sc.rqLinkByExpt[expt]: 
     116            s3.add(i) 
     117      else: 
     118        s3 = s2 
    112119##  set of esid values 
    113       esids = set() 
    114       for i in s2: 
    115         for u in dq.inx.iref_by_sect[i].a['requestItem']: 
    116           if expt != None: 
    117             esid = dq.inx.uid[u].esid 
    118             if esid == expt or 'experiment' in dq.inx.iref_by_sect[expt].a and esid in dq.inx.iref_by_sect[expt].a['experiment']: 
    119               esids.add( esid ) 
     120      ##esids = set() 
     121      ##for i in s2: 
     122        ##for u in dq.inx.iref_by_sect[i].a['requestItem']: 
     123          ##if expt != None: 
     124            ##esid = dq.inx.uid[u].esid 
     125            ##if esid == expt or 'experiment' in dq.inx.iref_by_sect[expt].a and esid in dq.inx.iref_by_sect[expt].a['experiment']: 
     126              ##esids.add( esid ) 
     127              ##s3.add( i ) 
     128              ##print 'TMP001: filteron:',expt 
     129            ##else: 
     130              ##print 'TMP001: filteroff:',expt 
     131          ##else: 
     132            ##esids.add( dq.inx.uid[u].esid ) 
     133 
     134      mips = set( [dq.inx.uid[i].mip for i in s3] ) 
     135 
     136### 
     137### CHECK: not clear what this was for .....  
     138###    appears to give meaningless output  
     139### 
     140      doThisObsolete = False 
     141      if doThisObsolete: 
     142        mips = set() 
     143        for e in esids: 
     144          if e == '': 
     145            ##print 'WARNING: empty esid encountered' 
     146            pass 
    120147          else: 
    121             esids.add( dq.inx.uid[u].esid ) 
    122       mips = set() 
    123       for e in esids: 
    124         if e == '': 
    125           ##print 'WARNING: empty esid encountered' 
    126           pass 
    127         else: 
    128           r = dq.inx.uid[e] 
    129           if r._h.label == 'mip': 
    130             mips.add(e) 
    131           else: 
    132             if r._h.label == 'exptgroup': 
    133               if 'experiment' in dq.inx.iref_by_sect[e].a: 
    134                 r = dq.inx.uid[  dq.inx.iref_by_sect[e].a['experiment'][0] ] 
     148            r = dq.inx.uid[e] 
     149            if r._h.label == 'mip': 
     150              mips.add(e) 
     151            else: 
     152              if r._h.label == 'exptgroup': 
     153                if 'experiment' in dq.inx.iref_by_sect[e].a: 
     154                  r = dq.inx.uid[  dq.inx.iref_by_sect[e].a['experiment'][0] ] 
     155                else: 
     156                  ei = dq.inx.uid[e] 
     157                  if self.errorMode != 'aggregate': 
     158                    print ( 'ERROR.exptgroup.00001: empty experiment group: %s: %s' % (ei.label, ei.title) ) 
     159                  self.errorLog['ERROR.exptgroup.00001'].add( 'empty experiment group: %s: %s' % (ei.label, ei.title) ) 
     160              if r._h.label in [ 'remarks','exptgroup']: 
     161                ##print 'WARNING: link to remarks encountered' 
     162                pass 
    135163              else: 
    136                 ei = dq.inx.uid[e] 
    137                 if self.errorMode != 'aggregate': 
    138                   print ( 'ERROR.exptgroup.00001: empty experiment group: %s: %s' % (ei.label, ei.title) ) 
    139                 self.errorLog['ERROR.exptgroup.00001'].add( 'empty experiment group: %s: %s' % (ei.label, ei.title) ) 
    140             if r._h.label in [ 'remarks','exptgroup']: 
    141               ##print 'WARNING: link to remarks encountered' 
    142               pass 
    143             else: 
    144               assert r._h.label == 'experiment', 'LOGIC ERROR ... should have an experiment record here: %s' % r._h.label 
    145               mips.add(r.mip) 
     164                assert r._h.label == 'experiment', 'LOGIC ERROR ... should have an experiment record here: %s' % r._h.label 
     165                mips.add(r.mip) 
    146166      if byBoth: 
    147167        return (mips0,mips) 
  • CMIP6dreqbuild/trunk/src/framework/ingest/dreq_cfg.py

    r1061 r1062  
    3939  print 'ff:',rq.ff 
    4040  print 'fff:', rq.fff 
     41  idir = rq.dir0 
     42  odir = '/data/tmp/svn3/exarch/CMIP6dreqbuild/trunk/inputs/' 
    4143   
Note: See TracChangeset for help on using the changeset viewer.