Ignore:
Timestamp:
17/06/16 13:48:44 (4 years ago)
Author:
mjuckes
Message:

near release

File:
1 edited

Legend:

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

    r678 r680  
    5555    return cmp( self.d[x], self.d[y] ) 
    5656 
    57     self.default_mcfg = nt_mcfg._make( [259200,60,64800,40,20,5,100] ) 
    5857 
    5958def filter1( a, b ): 
     
    125124    self.default_mcfg = nt_mcfg._make( [259200,60,64800,40,20,5,100] ) 
    126125    self.mcfg = self.default_mcfg._asdict() 
    127     ##for k in self.default_mcfg.__dict__.keys(): 
    128       ##self.mcfg[k] = self.default_mcfg.__dict__[k] 
     126    self.mcfgNote = None 
    129127    self.szcfg() 
    130128    self.requestItemExpAll(  ) 
     129 
     130  def setMcfg(self, ll, msg=None ): 
     131    assert len(ll) == 7, 'Model config must be of length 7: %s' % str(ll) 
     132    assert all( [type(x) == type(1) for x in ll] ) 
     133    self.mcfg = nt_mcfg._make( ll )._asdict() 
     134    if msg == None: 
     135      self.mcfgNote = 'User supplied model configuration: %s' % str(ll) 
     136    else: 
     137      self.mcfgNote = msg 
     138    self.szcfg() 
    131139 
    132140  def szcfg(self): 
     
    282290    return rql, l1p, exset 
    283291 
    284   def varsByRql( self, rql, pmax=2, intersection=False):  
    285       """The complete set of variables associated with a set of rquest links.""" 
     292  def varsByRql( self, rql, pmax=2, intersection=False, asDict=False):  
     293      """The complete set of variables associated with a set of request links.""" 
    286294      inx = self.dq.inx 
    287295      cc1 = collections.defaultdict( set ) 
     
    331339###To obtain a set of variables associated with this collection of variable groups: 
    332340 
    333         vars = set() 
     341        if asDict: 
     342          vars = collections.defaultdict( list ) 
     343        else: 
     344          vars = set() 
    334345        for vg in rqvgs: 
    335346          for l in inx.iref_by_sect[vg].a['requestVar']: 
    336347            if inx.uid[l].priority <= min(pmax,max(rqvgs[vg])): 
    337                vars.add(inx.uid[l].vid) 
     348               if asDict: 
     349                 vars[inx.uid[l].vid].append( vg ) 
     350               else: 
     351                 vars.add(inx.uid[l].vid) 
    338352 
    339353        ##col1 = reduce( operator.or_, [set( inx.iref_by_sect[vg].a['requestVar'] ) for vg in rqvg ] ) 
     
    341355    ##vars = {vid for vid in vars if inx.uid[vid][0] == u'CMORvar'} 
    342356 
    343       thisvars = set() 
    344       for vid in vars: 
    345          if inx.uid[vid]._h.label == u'CMORvar': 
     357      if asDict: 
     358        thisvars = {} 
     359        for vid in vars: 
     360           if inx.uid[vid]._h.label == u'CMORvar': 
     361             thisvars[vid] = vars[vid] 
     362      else: 
     363        thisvars = set() 
     364        for vid in vars: 
     365           if inx.uid[vid]._h.label == u'CMORvar': 
    346366             thisvars.add(vid) 
    347367 
     
    380400 
    381401## The complete set of variables associated with these requests: 
    382     vars = self.varsByRql( rql, pmax=pmax, intersection=intersection)  
     402    vars = self.varsByRql( rql, pmax=pmax, intersection=intersection, asDict=True)  
    383403    tm = 3 
    384404    if tm == 0: 
     
    390410## 
    391411    if not retainRedundantRank: 
    392       len1 = len(vars) 
    393       cmv = self.cmvFilter.filterByChoiceRank(cmv=vars) 
     412      len1 = len(vars.keys()) 
     413      cmv = self.cmvFilter.filterByChoiceRank(cmv=vars.keys()) 
    394414 
    395415      vars = cmv 
     
    489509    ov = [] 
    490510    for v in vars: 
     511      if 'requestVar' not in inx.iref_by_sect[v].a: 
     512         print 'Variable with no request ....: %s, %s' % (inx.uid[v].label, inx.uid[v].mipTable) 
    491513      szv[v] = self.sz[inx.uid[v].stid]*npy[inx.uid[v].frequency] 
    492514      ov.append( self.dq.inx.uid[v] ) 
     
    687709  def xlsByMipExpt(self,m,ex,pmax,odir='xls',xls=True,txt=False,txtOpts=None): 
    688710    import scope_utils 
    689     mxls = scope_utils.xlsTabs(self,tiermax=self.tierMax,pmax=pmax,xls=xls, txt=txt, txtOpts=txtOpts) 
    690  
    691     ##tabs = makeTables.tables( self, mips, odir=odir ) 
     711    mxls = scope_utils.xlsTabs(self,tiermax=self.tierMax,pmax=pmax,xls=xls, txt=txt, txtOpts=txtOpts,odir=odir) 
     712 
    692713    mlab = makeTables.setMlab( m ) 
    693     ##mm = list( m )[0] 
    694     ##r = overviewTabs.r1( self, tiermax=1, pmax=pmax, only=mm ) 
    695714 
    696715    mxls.run( m, mlab=mlab ) 
     
    784803      --xls : Create Excel file with requested variables; 
    785804      --txt : Create text file with requested variables; 
     805      --mcfg : Model configuration: 7 integers, comma separated, 'nho','nlo','nha','nla','nlas','nls','nh1' 
     806                 default: 259200,60,64800,40,20,5,100 
    786807      --txtOpts : options for content of text file: (v|c)[(+|-)att1[,att2[...]]] 
    787808      --xlsDir <directory> : Directory in which to place variable listing [xls]; 
     
    806827                      '--count':('count',False), \ 
    807828                      '--txt':('txt',False), \ 
     829                      '--mcfg':('mcfg',True), \ 
    808830                      '--txtOpts':('txtOpts',True), \ 
    809831                      '--xlsDir':('xlsdir',True), '--xls':('xls',False) \ 
     
    883905      return 
    884906 
     907    if 'mcfg' in self.adict: 
     908      ll = string.split( self.adict['mcfg'], ',' ) 
     909      assert len(ll) == 7, 'Length of model configuration argument must be 7 comma separated integers: %s' %  self.adict['mcfg'] 
     910      lli = [ int(x) for x in ll] 
     911      print lli 
     912 
    885913    self.sc = dreqQuery( dq=self.dq ) 
     914    if 'mcfg' in self.adict: 
     915      self.sc.setMcfg( lli ) 
    886916 
    887917    ok = True 
Note: See TracChangeset for help on using the changeset viewer.