Example #1
0
 def __init__(self, solver, n, incrset1, incrset2):
     """Creates an incremental set of all pairs frozetset([c1, c2]) from incrset1 and incrset2 respectively, 
         that are connected with N variables, according to solver"""
     # defining variables
     self._solver = solver
     self._incrset1 = incrset1
     self._incrset2 = incrset2
     self._n = n
     # map from objects to sets of pairs
     self._map = {}
     # super init
     IncrementalSet.__init__(self, [incrset1, incrset2])
Example #2
0
 def __init__(self, solver, n, incrset1, incrset2):
     """Creates an incremental set of all pairs frozetset([c1, c2]) from incrset1 and incrset2 respectively, 
         that are connected with N variables, according to solver"""
     # defining variables
     self._solver = solver
     self._incrset1 = incrset1
     self._incrset2 = incrset2
     self._n = n
     # map from objects to sets of pairs
     self._map = {}
     # super init
     IncrementalSet.__init__(self, [incrset1, incrset2])
Example #3
0
    def __init__(self, pattern, solver):
        self._solver = solver
        # convert pattern to a set of tuples
        listoftuples = []
        for clusterpattern in pattern:
            (kind, clustername, pointnames) = clusterpattern
            listoftuples.append(tuple([kind, clustername, tuple(pointnames)]))
        setoftuples = frozenset(listoftuples)
        self._pattern = setoftuples
        # create sub-sets for correct type of input clusters
        self._subs = []
        # NOTE: we cannot use source like this to link it to a pattern, because sources may be equal!
        self._source2pattern = {}
        for clusterpattern in self._pattern:
            (kind, clustername, pointnames) = clusterpattern
            sub = KindFilter(kind, len(pointnames), self._solver.top_level())
            self._subs.append(sub)
            # NOTE: we cannot use source like this to link it to a pattern, because sources may be equal!
            self._source2pattern[sub] = [clusterpattern]
            print "creating", sub, "for", self._source2pattern[sub]
        #rof
        # create sub-sets for all pairs of clusters
        listoftuples = list(setoftuples)
        l = len(listoftuples)
        for i in range(l):
            for j in range(i + 1, l):
                cp1 = listoftuples[i]
                cp2 = listoftuples[j]
                (kind1, clustername1, pointnames1) = cp1
                (kind2, clustername2, pointnames2) = cp2
                shared = set(pointnames1).intersection(set(pointnames2))
                n = len(shared)
                if n > 0:
                    kindfilter1 = KindFilter(kind1, len(pointnames1),
                                             self._solver.top_level())
                    kindfilter2 = KindFilter(kind2, len(pointnames2),
                                             self._solver.top_level())
                    sub = NConnectedPairs(solver, n, kindfilter1, kindfilter2)
                    self._subs.append(sub)
                    # NOTE: we cannot use source like this to link it to a pattern, because sources may be equal!
                    self._source2pattern[sub] = [cp1, cp2]
                    print "creating", sub, "for", self._source2pattern[sub]

        IncrementalSet.__init__(self, self._subs)
Example #4
0
 def __init__(self, kind, minpoints, incrset):
     kind2class = {}
     kind2class["rigid"]=Rigid
     kind2class["hog"]=Hedgehog
     kind2class["balloon"]=Balloon
     kind2class["distance"]=Rigid
     kind2class["point"]=Rigid
     kind2maxpoints = {}
     kind2maxpoints["rigid"]=0
     kind2maxpoints["hog"]=0
     kind2maxpoints["balloon"]=0
     kind2maxpoints["distance"]=2
     kind2maxpoints["point"]=1
     self._kind = kind
     self._classobj = kind2class[kind]
     self._maxpoints = kind2maxpoints[kind]
     self._input = incrset
     self._minpoints = minpoints
     IncrementalSet.__init__(self,[incrset])
Example #5
0
 def __init__(self, kind, minpoints, incrset):
     kind2class = {}
     kind2class["rigid"] = Rigid
     kind2class["hog"] = Hedgehog
     kind2class["balloon"] = Balloon
     kind2class["distance"] = Rigid
     kind2class["point"] = Rigid
     kind2maxpoints = {}
     kind2maxpoints["rigid"] = 0
     kind2maxpoints["hog"] = 0
     kind2maxpoints["balloon"] = 0
     kind2maxpoints["distance"] = 2
     kind2maxpoints["point"] = 1
     self._kind = kind
     self._classobj = kind2class[kind]
     self._maxpoints = kind2maxpoints[kind]
     self._input = incrset
     self._minpoints = minpoints
     IncrementalSet.__init__(self, [incrset])
Example #6
0
    def __init__(self, pattern, solver):
        self._solver = solver
        # convert pattern to a set of tuples
        listoftuples = []
        for clusterpattern in pattern:
            (kind, clustername, pointnames) = clusterpattern
            listoftuples.append(tuple([kind, clustername, tuple(pointnames)]))
        setoftuples = frozenset(listoftuples)
        self._pattern = setoftuples
        # create sub-sets for correct type of input clusters
        self._subs = []
        # NOTE: we cannot use source like this to link it to a pattern, because sources may be equal!
        self._source2pattern = {}
        for clusterpattern in self._pattern:
            (kind, clustername, pointnames) = clusterpattern
            sub = KindFilter(kind, len(pointnames),self._solver.top_level())
            self._subs.append(sub)
            # NOTE: we cannot use source like this to link it to a pattern, because sources may be equal!
            self._source2pattern[sub]=[clusterpattern]
            print "creating",sub,"for",self._source2pattern[sub]
        #rof
        # create sub-sets for all pairs of clusters
        listoftuples = list(setoftuples)
        l = len(listoftuples) 
        for i in range(l):
            for j in range(i+1,l):
                cp1 = listoftuples[i]
                cp2 = listoftuples[j]
                (kind1, clustername1, pointnames1) = cp1
                (kind2, clustername2, pointnames2) = cp2
                shared = set(pointnames1).intersection(set(pointnames2))
                n = len(shared)
                if n > 0:
                    kindfilter1 = KindFilter(kind1, len(pointnames1),self._solver.top_level())
                    kindfilter2 = KindFilter(kind2, len(pointnames2),self._solver.top_level())
                    sub = NConnectedPairs(solver, n, kindfilter1,kindfilter2)
                    self._subs.append(sub)
                    # NOTE: we cannot use source like this to link it to a pattern, because sources may be equal!
                    self._source2pattern[sub]=[cp1,cp2]
                    print "creating",sub,"for",self._source2pattern[sub]

        IncrementalSet.__init__(self, self._subs)