def generate(seq, vqs, mv): if not vqs: yield 0, seq; return vqs = vqs[:] # avoid side effects v,q = vqs.pop(); mv -= v q = And(LiteralResultSet(seq), q) qr = _eval(q, cat) if qr: feed1 = generate(qr, vqs, mv) seq = difference(seq, qr) else: feed1 = None feed2 = seq and generate(seq, vqs, mv) or None def fetch1(): if feed1 is None: return None try: val, subseq = feed1.next(); return val + v, subseq except StopIteration: return None def fetch2(): if feed2 is None: return None try: return feed2.next() except StopIteration: return None g1 = fetch1() # largest value from "feed1" only while g1 is not None and g1[0] > mv: yield g1; g1 = fetch1() # merge largest values from "feed1" and "feed2" g2 = fetch2() while g1 is not None and g2 is not None: v1 = g1[0]; v2 = g2[0] if v1 > v2: yield g1; g1 = fetch1() elif v2 > v1: yield g2; g2 = fetch2() # Note: g1[1] was copied (by the "intersection" above); therfore, # we can destructively change it else: g1[1].update(g2[1]); yield g1; g1 = fetch1(); g2 = fetch2() # handle feed1 while g1 is not None: yield g1; g1 = fetch1() # handle feed2 while g2 is not None: yield g2; g2 = fetch2()
def _group(self, seq): spec = self._spec; cat = self._cat vqs = spec._getValueQuerySequence() for i in xrange(len(vqs)-1,-1,-1): v,q = vqs[i] q = And(LiteralResultSet(seq), q) qr = _eval(q, cat) if qr: yield v, qr; seq = difference(seq, qr) if not seq: return yield 0, seq
def _group(self, seq): spec = self._spec cat = self._cat vqs = spec._getValueQuerySequence() for i in xrange(len(vqs) - 1, -1, -1): v, q = vqs[i] q = And(LiteralResultSet(seq), q) qr = _eval(q, cat) if qr: yield v, qr seq = difference(seq, qr) if not seq: return yield 0, seq
def main(config): # CUDNN cudnn.benchmark = True if not os.path.exists('results/'): os.makedirs(config.model_save_dir) if not os.path.exists('results/' + config.model_name + '/'): os.makedirs('results/' + config.model_name + '/') if not os.path.exists(config.model_save_dir): os.makedirs(config.model_save_dir) if not os.path.exists(config.result_dir): os.makedirs(config.result_dir) model = build_net() print(model) if torch.cuda.is_available(): model.cuda() if config.mode == 'train': _train(model, config) elif config.mode == 'test': _eval(model, config)
def _evalAdvancedQuery(self, query, sortSpecs=()): """evaluate *query* for 'CatalogTool' and sort results according to *sortSpec*.""" query = query._clone() # taken from 'CatalogTool.searchResults' user = _getAuthenticatedUser(self) query &= In("allowedRolesAndUsers", self._listAllowedRolesAndUsers(user)) if not _checkPermission(AccessInactivePortalContent, self): now = self.ZopeTime() if "ValidityRange" in self.Indexes.objectIds(): query &= Eq("ValidityRange", now) else: query &= Le("effective", now) query &= Ge("expires", now) return _eval(self, query, sortSpecs)
def _evalAdvancedQuery(self,query,sortSpecs=()): '''evaluate *query* for 'CatalogTool' and sort results according to *sortSpec*.''' query = query._clone() # taken from 'CatalogTool.searchResults' user = _getAuthenticatedUser(self) query &= In('allowedRolesAndUsers',self._listAllowedRolesAndUsers(user)) if not _checkPermission(AccessInactivePortalContent,self): now= self.ZopeTime() indexes = self.Indexes.objectIds() if 'ValidityRange' in indexes: query &= Eq('ValidityRange', now) else: # make a check that the indexes exist (suggested by Chris Abraham # and Robert Marianski) # Note: we use inoffical API. if 'effective' in indexes: query &= Le('effective', now) if 'expires' in indexes: query &= Ge('expires', now) return _eval(self,query,sortSpecs)
def _evalAdvancedQuery(self, query, sortSpecs=()): '''evaluate *query* for 'CatalogTool' and sort results according to *sortSpec*.''' query = query._clone() # taken from 'CatalogTool.searchResults' user = _getAuthenticatedUser(self) query &= In('allowedRolesAndUsers', self._listAllowedRolesAndUsers(user)) if not _checkPermission(AccessInactivePortalContent, self): now = self.ZopeTime() indexes = self.Indexes.objectIds() if 'ValidityRange' in indexes: query &= Eq('ValidityRange', now) else: # make a check that the indexes exist (suggested by Chris Abraham # and Robert Marianski) # Note: we use inoffical API. if 'effective' in indexes: query &= Le('effective', now) if 'expires' in indexes: query &= Ge('expires', now) return _eval(self, query, sortSpecs)
def generate(seq, vqs, mv): if not vqs: yield 0, seq return vqs = vqs[:] # avoid side effects v, q = vqs.pop() mv -= v q = And(LiteralResultSet(seq), q) qr = _eval(q, cat) if qr: feed1 = generate(qr, vqs, mv) seq = difference(seq, qr) else: feed1 = None feed2 = seq and generate(seq, vqs, mv) or None def fetch1(): if feed1 is None: return None try: val, subseq = feed1.next() return val + v, subseq except StopIteration: return None def fetch2(): if feed2 is None: return None try: return feed2.next() except StopIteration: return None g1 = fetch1() # largest value from "feed1" only while g1 is not None and g1[0] > mv: yield g1 g1 = fetch1() # merge largest values from "feed1" and "feed2" g2 = fetch2() while g1 is not None and g2 is not None: v1 = g1[0] v2 = g2[0] if v1 > v2: yield g1 g1 = fetch1() elif v2 > v1: yield g2 g2 = fetch2() # Note: g1[1] was copied (by the "intersection" above); therfore, # we can destructively change it else: g1[1].update(g2[1]) yield g1 g1 = fetch1() g2 = fetch2() # handle feed1 while g1 is not None: yield g1 g1 = fetch1() # handle feed2 while g2 is not None: yield g2 g2 = fetch2()