Exemple #1
0
def perform_promotion(w1_in,w2_in,w1_out,w2_out):
    """
    Takes 2 isax sequences and promotes each symbol to the higher cardinality
    :return:
    """
    for x in xrange(len(w1_in.symbols)):
        a = sy.Symbol()
        b = sy.Symbol()

        sy.perform_promotion(w1_in.symbols[x],w2_in.symbols[x],a,b)
        w1_out.symbols.append(a)
        w2_out.symbols.append(b)
Exemple #2
0
    def sax_distance(self,other):
        """
        Calculates SAX euclidean distance between two iSAX sequences.
        :param other:
        :return:
        """
        alphabet = alpha.NormalAlphabet()
        sqd_dist = 0

        # Compare symbol by symbol
        for x in xrange(len(self.symbols)):
            a = sy.Symbol()
            b = sy.Symbol()
            sy.perform_promotion(self.symbols[x],other.symbols[x],a,b)
            distance_matrix = np.array([[0],[0]])
            distance_matrix = alphabet.get_distance_matrix(a.cardinality)
            local_dist = distance_matrix[a.sax_character][b.sax_character]
            sqd_dist += local_dist
        return sqd_dist
Exemple #3
0
    def mind_dist(self,other):
        alphabet = alpha.NormalAlphabet()
        sqd_dist = 0
        for x in xrange(len(self.symbols)):
            a = sy.Symbol()
            b = sy.Symbol()
            sy.perform_promotion(self.symbols[x],other.symbols[x],a,b)
            distance_matrix = alphabet.get_distance_matrix(a.cardinality)
            local_dist = distance_matrix[a.sax_character][b.sax_character]
            sqd_dist += local_dist * local_dist

        # get the sq root of the sum of the squares
        dist_sqrt = math.sqrt(sqd_dist)

        # Calculate the coefficient
        original_ts_length = self.orig_length * 1.0
        derived_sax_length = len(self.symbols)

        coef = math.sqrt(original_ts_length/derived_sax_length)

        return dist_sqrt * coef
Exemple #4
0
    def test_promote_symbol(self):

        A_in = sy.Symbol(0, 2)
        B_in = sy.Symbol(1, 2)
        A_out = sy.Symbol(0, 0)
        B_out = sy.Symbol(0, 0)

        sy.perform_promotion(A_in, B_in, A_out, B_out)


        self.assertEquals(A_out.cardinality, 2)
        self.assertEquals(B_out.cardinality, 2)
        self.assertEquals(A_out.sax_character,0)
        self.assertEquals(B_out.sax_character,1)

        A_in = sy.Symbol(6, 8)
        B_in = sy.Symbol(0, 2)
        A_out = sy.Symbol(0, 0)
        B_out = sy.Symbol(0, 0)

        sy.perform_promotion(A_in, B_in, A_out, B_out)


        self.assertEquals(B_out.cardinality, 8)
        self.assertEquals(A_out.sax_character, 6)
        self.assertEquals(B_out.sax_character, 3)

        A_in = sy.Symbol(1, 2)
        B_in = sy.Symbol(3, 8)
        A_out = sy.Symbol(0, 0)
        B_out = sy.Symbol(0, 0)
        sy.perform_promotion(A_in, B_in, A_out, B_out)

        self.assertEquals(A_out.cardinality, 8)
        self.assertEquals(B_out.cardinality, 8)
        self.assertEquals(A_out.sax_character, 4)
        self.assertEquals(B_out.sax_character, 3)

        A_in = sy.Symbol(1, 2)
        B_in = sy.Symbol(0, 8)
        A_out = sy.Symbol(0, 0)
        B_out = sy.Symbol(0, 0)
        sy.perform_promotion(A_in, B_in, A_out, B_out)
        self.assertEquals(A_out.cardinality, 8)
        self.assertEquals(B_out.cardinality, 8)
        self.assertEquals(A_out.sax_character, 4)
        self.assertEquals(B_out.sax_character, 0)