Ejemplo n.º 1
0
    def test_get_readable_repr(self):
        """Tests the get_readable_repr method.
        """
        assert_equals(Sign.POSITIVE.get_readable_repr(1, 1), Sign.POSITIVE_KEY)
        assert_equals(Sign.POSITIVE.get_readable_repr(5, 4), Sign.POSITIVE_KEY)

        assert_equals(Sign.NEGATIVE.get_readable_repr(1, 1), Sign.NEGATIVE_KEY)
        assert_equals(Sign.NEGATIVE.get_readable_repr(5, 4), Sign.NEGATIVE_KEY)

        assert_equals(Sign.ZERO.get_readable_repr(1, 1), Sign.ZERO_KEY)
        assert_equals(Sign.ZERO.get_readable_repr(5, 4), Sign.ZERO_KEY)

        assert_equals(Sign.UNKNOWN.get_readable_repr(1, 1), Sign.UNKNOWN_KEY)
        assert_equals(Sign.UNKNOWN.get_readable_repr(5, 4), Sign.UNKNOWN_KEY)

        # Mixed signs.
        mix_vec = np.vstack([self.arr, ~self.arr])
        cv = Sign(mix_vec, mix_vec)
        unknown_str_arr = np.atleast_2d(self.n * [[Sign.UNKNOWN_KEY]])
        zero_str_arr = np.atleast_2d(self.n * [[Sign.ZERO_KEY]])
        str_arr = np.vstack([unknown_str_arr, zero_str_arr])
        assert (cv.get_readable_repr(2 * self.n, 1) == str_arr).all()

        cv = Sign(mix_vec, ~mix_vec)
        neg_str_arr = np.atleast_2d(self.n * [[Sign.NEGATIVE_KEY]])
        pos_str_arr = np.atleast_2d(self.n * [[Sign.POSITIVE_KEY]])
        str_arr = np.vstack([neg_str_arr, pos_str_arr])
        assert (cv.get_readable_repr(2 * self.n, 1) == str_arr).all()
Ejemplo n.º 2
0
 def test_dmat_add(self):
     assert_equals(self.pos_vec + self.neg_vec, self.unknown_vec)
     result = Sign(np.bool_(True), self.arr)
     assert_equals(self.pos_vec + Sign.NEGATIVE, result)
     assert_equals(self.neg_vec + self.zero_vec, self.neg_vec)
     result = Sign(np.bool_(True), ~self.true_mat)
     assert_equals(self.neg_mat + Sign.NEGATIVE, result)
     assert_equals(self.pos_vec + self.pos_vec, self.pos_vec)
     assert_equals(self.unknown_mat + self.zero_mat, self.unknown_mat)
     assert_equals(Sign.UNKNOWN + self.pos_mat, Sign.UNKNOWN)
Ejemplo n.º 3
0
 def test_dmat_sub(self):
     assert_equals(self.pos_vec - self.neg_vec, self.pos_vec)
     result = Sign(~self.true_mat, np.bool_(True))
     assert_equals(Sign.POSITIVE - self.neg_vec, result)
     assert_equals(self.neg_vec - self.zero_vec, self.neg_vec)
     assert_equals(self.pos_mat - self.pos_mat, self.unknown_mat)
     assert_equals(self.zero_vec - Sign.UNKNOWN, Sign.UNKNOWN)
Ejemplo n.º 4
0
    def test_sparse_mult(self):
        size = (self.n, self.n)
        assert_equals(
            Sign.ZERO.promote(*size) * self.pos_spmat.promote(*size),
            Sign.ZERO.promote(*size))
        assert_equals(self.unknown_spmat * Sign.POSITIVE, self.unknown_spmat)
        assert_equals(
            self.pos_spmat.promote(*size) * Sign.NEGATIVE, self.neg_spmat)
        assert_equals(self.neg_mat * self.neg_spmat.promote(*size),
                      self.pos_mat)
        assert_equals(
            self.zero_mat.promote(*size) * self.unknown_spmat, self.zero_mat)
        assert_equals(
            self.neg_spmat.promote(*size) * self.pos_spmat.promote(*size),
            self.neg_spmat)
        assert_equals(self.unknown_spmat * self.pos_spmat.promote(*size),
                      self.unknown_spmat)

        # Asymmetric multiplication.
        m = 2
        fat = np.hstack(m * [self.arr]).T
        fat_pos = Sign(np.bool_(False), fat)
        fat_size = (m, self.n)
        assert_equals(
            fat_pos.promote(*fat_size) * self.pos_spmat.promote(*size),
            fat_pos.promote(*fat_size))
Ejemplo n.º 5
0
 def test_mult(self):
     assert_equals(Sign.ZERO * Sign.POSITIVE, Sign.ZERO)
     assert_equals(Sign.UNKNOWN * Sign.POSITIVE, Sign.UNKNOWN)
     assert_equals(Sign.POSITIVE * Sign.NEGATIVE, Sign.NEGATIVE)
     assert_equals(Sign.POSITIVE * Sign.POSITIVE, Sign.POSITIVE)
     assert_equals(Sign.POSITIVE * Sign("positive"), Sign.POSITIVE)
     assert_equals(Sign.NEGATIVE * Sign.NEGATIVE, Sign.POSITIVE)
     assert_equals(Sign.ZERO * Sign.UNKNOWN, Sign.ZERO)
Ejemplo n.º 6
0
 def test_sparse_add(self):
     assert_equals(self.pos_spmat + self.neg_spmat, self.unknown_spmat)
     assert_equals(self.neg_spmat + Sign.ZERO, self.neg_spmat)
     assert_equals(self.pos_spmat + self.pos_spmat, self.pos_spmat)
     assert_equals(self.unknown_mat + self.neg_mat, self.unknown_mat)
     result = Sign(self.true_mat, SparseBoolMat(self.spmat))
     assert_equals(self.pos_spmat + Sign.NEGATIVE, result)
     assert_equals(self.neg_spmat + self.unknown_mat, self.unknown_mat)
     assert_equals(self.pos_spmat + self.pos_mat, self.pos_mat)
Ejemplo n.º 7
0
    def setup_class(self):
        self.n = 5
        self.arr = np.atleast_2d(self.n * [np.bool_(True)]).T
        # Vectors
        self.neg_vec = Sign(self.arr, ~self.arr)
        self.pos_vec = Sign(~self.arr, self.arr)
        self.unknown_vec = Sign(self.arr, self.arr)
        self.zero_vec = Sign(~self.arr, ~self.arr)

        # Dense Matrices
        self.true_mat = np.hstack(self.n * [self.arr])
        self.neg_mat = Sign(self.true_mat, ~self.true_mat)
        self.pos_mat = Sign(~self.true_mat, self.true_mat)
        self.unknown_mat = Sign(self.true_mat, self.true_mat)
        self.zero_mat = Sign(~self.true_mat, ~self.true_mat)

        # Sparse Matrices
        self.spmat = sparse.eye(self.n, self.n).astype('bool_')
        self.neg_spmat = Sign(SparseBoolMat(self.spmat), np.bool_(False))
        self.pos_spmat = Sign(np.bool_(False), SparseBoolMat(self.spmat))
        self.unknown_spmat = Sign(SparseBoolMat(self.spmat),
                                  SparseBoolMat(self.spmat))