def _ens_pipeline(self): ens_pl = Pipeline(ensemble=self) ens_pl.planner_result = self.train_result ens_pl.finished = True return ens_pl
def _create_subpipelines(self, primitive, prim_requirements): mainlst = [] requirement_permutations = list( itertools.permutations(prim_requirements)) for requirements in requirement_permutations: #print("%s requirement: %s" % (primitive.name, requirements)) xpipe = Pipeline() lst = [xpipe] # Fulfill all requirements of the primitive for requirement in requirements: reqvalue = prim_requirements[requirement] glues = self.glues.getPrimitivesByEffect(requirement, reqvalue) if len(glues) == 1: prim = glues[0] #print("-> Adding one %s" % prim.name) xpipe.insertPrimitiveAt(0, prim) elif len(glues) > 1: newlst = [] for pipe in lst: # lst.remove(pipe) for prim in glues: cpipe = pipe.clone() #print("-> Adding %s" % prim.name) cpipe.insertPrimitiveAt(0, prim) newlst.append(cpipe) lst = newlst mainlst += lst return mainlst
def l1_to_proxy_pipeline(self, l1_pipeline): pipeline = Pipeline() ok = True for prim in l1_pipeline.get_primitives(): l2prim = self.primitive_hash.get(prim.name, None) if not l2prim: ok = False break pipeline.addPrimitive(l2prim) if ok: return pipeline return None
def generate_pipelines_with_hierarchy(self, level=2) -> typing.List[Pipeline]: # ignore level for now, since only have one level hierarchy results = [] families = self.primitive_family_mappings.get_families_by_task_type(self.task_type.value) if self.task_type == TaskType.GRAPH_MATCHING: # if GRAPH_MATCHING then add LINK_PREDICTION families = families + self.primitive_family_mappings.get_families_by_task_type(TaskType.LINK_PREDICTION) # moved to get_child_nodes #families = sebt(families)-set(self.exclude_families family_nodes = [self.ontology.get_family(f) for f in families] # include / exclude family and type checks child_nodes = self._get_child_nodes(family_nodes) for node in child_nodes: primitives = self.ontology.hierarchy.get_primitives_as_list(node) if not primitives: continue # Inclusion checks primitives = [p for p in primitives if self._check_primitive_include(p)] if not primitives: continue weights = [p.weight for p in primitives] # Set task type for execute_pipeline for p in primitives: p.task = 'Modeling' primitive = random_choices(primitives, weights) pipe = Pipeline(primitives=[primitive]) results.append(pipe) return results