Example #1
0
    def _ens_pipeline(self):
        ens_pl = Pipeline(ensemble=self)

        ens_pl.planner_result = self.train_result
        ens_pl.finished = True

        return ens_pl
Example #2
0
    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
Example #3
0
    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
Example #4
0
    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