Beispiel #1
0
 def test_subvector(self):
     a = IntervalVector(range(0, 10))
     self.assertEqual(len(a), 10)
     b = a.subvector(3, 6)
     self.assertEqual(len(b), 4)
     b[0] = Interval(-2, 3)
     self.assertEqual(b[0], Interval(-2, 3))
Beispiel #2
0
	def test_diff(self):
		c = Interval()
		d  = Interval()
		y = Interval(2,4)
		self.a.diff(y,c,d)
		self.assertEqual( Interval(-2, 2), c)
		self.assertTrue(d.is_empty())
Beispiel #3
0
 def test_put(self):
     a = IntervalVector(range(0, 10))
     self.assertEqual(len(a), 10)
     a.put(3, IntervalVector([1, 2, 3]))
     self.assertEqual(a[3], Interval(1))
     self.assertEqual(a[4], Interval(2))
     self.assertEqual(a[5], Interval(3))
     self.assertEqual(a[6], Interval(6))
Beispiel #4
0
 def test_is_bisectable(self):
     a = IntervalVector(2, Interval(-2, 4))
     self.assertTrue(a.is_bisectable())
     b = IntervalVector(2, Interval(1, 3))
     self.assertTrue(b.is_bisectable())
     b[0] = Interval(0)
     self.assertTrue(b.is_bisectable())
     b[1] = Interval(0)
     self.assertFalse(b.is_bisectable())
    def test_gettiem2(self):
        """
		check if gettiem returns a non constant reference on an Interval
		"""
        c = IntervalVector((1, 2, 3))
        b = c[1]
        self.assertEqual(b, Interval(2))
        c[1] = Interval(-1, 2)
        self.assertEqual(c[1], Interval(-1, 2))
        self.assertEqual(b, Interval(-1, 2))
Beispiel #6
0
 def test_constructor(self):
     a = IntervalVector(3)
     a = IntervalVector(3, Interval(-2, 3))
     self.assertEqual(a[0], Interval(-2, 3))
     a = IntervalVector([1, 2, 3])
     self.assertEqual(a[0], Interval(1))
     a = IntervalVector((1, 2, 3))
     self.assertEqual(a[1], Interval(2))
     b = IntervalVector(a)
     self.assertEqual(a[1], b[1])
     c = IntervalVector([[1, 2], [5, 6]])
     self.assertEqual(c[0], Interval(1, 2))
Beispiel #7
0
 def test_ops_2(self):
     a = IntervalVector(2, Interval(-1, 1))
     b = IntervalVector(2, Interval(-3, 1))
     a += b
     self.assertEqual(a, IntervalVector(2, Interval(-4, 2)))
     a = IntervalVector(2, Interval(-1, 1))
     a -= b
     self.assertEqual(a, IntervalVector(2, Interval(-2, 4)))
     a = IntervalVector(2, Interval(-1, 1))
     a &= b
     self.assertEqual(a, IntervalVector(2, Interval(-1, 1)))
     a = IntervalVector(2, Interval(-1, 1))
     a |= b
     self.assertEqual(a, IntervalVector(2, Interval(-3, 1)))
Beispiel #8
0
 def test_ops_4(self):
     a = IntervalVector(2, Interval(-1, 1))
     b = IntervalVector(2, Interval(-3, 1))
     self.assertEqual(a * b, Interval(-6, 6))
     self.assertEqual(3 * a, IntervalVector(2, Interval(-3, 3)))
     self.assertEqual(a * [2, 2], Interval(-4, 4))
     self.assertEqual(
         Interval(2, 3) * a, IntervalVector(2, Interval(-3, 3)))
Beispiel #9
0
    def test_ops_3(self):
        a = IntervalVector(2, Interval(-1, 1))
        a += [2, 2]
        self.assertEqual(a, IntervalVector(2, Interval(1, 3)))

        a = IntervalVector(2, Interval(-1, 1))
        a -= [2, 2]
        self.assertEqual(a, IntervalVector(2, Interval(-3, -1)))

        a = IntervalVector(2, Interval(-1, 1))
        a *= Interval(2, 3)
        self.assertEqual(a, IntervalVector(2, Interval(-3, 3)))

        a = IntervalVector(2, Interval(-1, 1))
        a *= 3.0
        self.assertEqual(a, IntervalVector(2, Interval(-3, 3)))
Beispiel #10
0
 def __init__(self, max, figureName=None):
     SetVisitor.__init__(self)
     self.frame = IntervalVector(2, max * Interval(-1, 1))
     self.figureName = figureName
     if figureName != None:
         vibes.newFigure(figureName)
         vibes.setFigureProperties({
             'x': 0,
             'y': 0,
             'width': 500,
             'height': 500
         })
Beispiel #11
0
 def test_diff(self):
     c = Interval()
     d = Interval()
     y = Interval(2, 4)
     self.a.diff(y, c, d)
     self.assertEqual(Interval(-2, 2), c)
     self.assertTrue(d.is_empty())
Beispiel #12
0
 def test_ops_plus(self):
     a = IntervalVector(2, Interval(-1, 1))
     b = IntervalVector(2, Interval(-3, 1))
     self.assertEqual(a + b, IntervalVector(2, Interval(-4, 2)))
     self.assertEqual(a - b, IntervalVector(2, Interval(-2, 4)))
     self.assertEqual(a & b, IntervalVector(2, Interval(-1, 1)))
     self.assertEqual(a | b, IntervalVector(2, Interval(-3, 1)))
     self.assertTrue(a != b)
Beispiel #13
0
    def grid_to_world(self, box, box_int):
        """
		convert grid coordinate (integer values) into world coordinate
		params:
			box     : box of coordinate in world frame
			box_int : box of coordinate in grid frame
		return:
			box
		"""
        for i in range(0, box.size() - 1):
            box[i] &= Interval(box[2 * i], box[2 * i + 1] +
                               1) * self._leaf_size[i] + self._origin[i]
            if (box[i].is_empty()):
                box.set_empty()
                return
Beispiel #14
0
    def world_to_grid(self, box):
        """
		convert world coordinate (double value) into integer value 
		corresponding to pixels of the grid
		params:
			box : box of coordinate in world frame
		return:
			x, y x and y coordinates in image frame (in pixel)
		"""
        box_int = np.zeros(2 * box.size(), np.int)

        for i in range(0, box.size()):
            box[i] = (box[i] - self._origin[i]) / self._leaf_size[i]
            # Limit range to image size on pixel_coord
            box[i] &= Interval(0, self._II.shape[i])
            box_int[2 * i] = np.floor(box[i].lb())
            box_int[2 * i + 1] = np.ceil(box[i].ub() - 1)
        return box_int
Beispiel #15
0
 def test_bwd_abs(self):
     c = Interval(-2, 4)
     pyIbex.bwd_abs(c, self.a)
Beispiel #16
0
 def test_bwd_atanh(self):
     c = Interval(-2, 4)
     pyIbex.bwd_atanh(c, self.a)
Beispiel #17
0
	def test_bisect(self):
		a = Interval(3,5)
		(c,d) = a.bisect()
Beispiel #18
0
 def test_overlaps(self):
     c1 = Interval(3)
     self.assertTrue(self.a.intersects(c1))
Beispiel #19
0
 def test_is_strict_superset(self):
     c = Interval(1)
     self.assertTrue(self.a.is_superset(c))
Beispiel #20
0
 def test_is_subset(self):
     c = Interval(-2, 1)
     self.assertFalse(self.a.is_subset(c))
     self.assertTrue(c.is_subset(self.a))
Beispiel #21
0
 def test_bwd_chi(self):
     c = Interval(-2, 4)
     b = Interval(4, 2)
     d = Interval(-2, 1)
     pyIbex.bwd_chi(c, self.a, b, d)
Beispiel #22
0
	def test_is_disjoint(self):
		c1 = Interval(-1, 2)
		c2 = Interval(2.01,4)
		self.assertTrue(c1.is_disjoint(c2))
Beispiel #23
0
	def test_is_bisectable(self):
		self.assertTrue(self.a.is_bisectable())
		c = Interval(0)
		self.assertFalse(c.is_bisectable())
Beispiel #24
0
	def test_is_strict_interior_subset(self):
		c = Interval(-2,1)
		self.assertFalse(c.is_strict_interior_subset(self.a))
		d = Interval(-1.9,1)
		self.assertTrue(d.is_strict_interior_subset(self.a))
Beispiel #25
0
	def test_is_subset(self):
		c = Interval(-2,1)
		self.assertFalse(self.a.is_subset(c))
		self.assertTrue(c.is_subset(self.a))
Beispiel #26
0
	def setUp(self):
		Interval.__str__ = interval_str
		self.a = Interval(-2,3)
Beispiel #27
0
 def test_bwd_min(self):
     c = Interval(-2, 4)
     b = Interval(2, 10)
     pyIbex.bwd_min(c, self.a, b)
Beispiel #28
0
 def test_bwd_pow(self):
     c = Interval(-2, 4)
     b = Interval(4, 2)
     pyIbex.bwd_pow(c, b, self.a)
Beispiel #29
0
 def test_bwd_sign(self):
     c = Interval(-2, 4)
     pyIbex.bwd_sign(c, self.a)
Beispiel #30
0
 def test_bwd_pow(self):
     c = Interval(-2, 4)
     pyIbex.bwd_pow(c, 3, self.a)
Beispiel #31
0
 def test_bwd_integer(self):
     c = Interval(-2, 4)
     pyIbex.bwd_integer(c)
Beispiel #32
0
 def test_bwd_root(self):
     c = Interval(-2, 4)
     pyIbex.bwd_root(c, 3, self.a)
Beispiel #33
0
 def test_is_strict_interior_subset(self):
     c = Interval(-2, 1)
     self.assertFalse(c.is_strict_interior_subset(self.a))
     d = Interval(-1.9, 1)
     self.assertTrue(d.is_strict_interior_subset(self.a))
Beispiel #34
0
 def test_bwd_exp(self):
     c = Interval(-2, 4)
     pyIbex.bwd_exp(c, self.a)
Beispiel #35
0
 def test_intersects(self):
     c1 = Interval(0, 10)
     self.assertTrue(self.a.intersects(c1))
Beispiel #36
0
 def test_bwd_log(self):
     c = Interval(-2, 4)
     pyIbex.bwd_log(c, self.a)
Beispiel #37
0
 def test_is_disjoint(self):
     c1 = Interval(-1, 2)
     c2 = Interval(2.01, 4)
     self.assertTrue(c1.is_disjoint(c2))
Beispiel #38
0
class TestInterval(unittest.TestCase):

	def setUp(self):
		Interval.__str__ = interval_str
		self.a = Interval(-2,3)

	def test_Interal2array(self):
		self.assertEqual(self.a[0], -2)
		self.assertEqual(self.a[1], 3)
		# self.assertEqual(self.a[4], np.nan)


	def test_constructor(self):
		c1 = Interval()
		c2 = Interval(-2)
		c3 = Interval(-2,4)

	def test_inflate(self):
		c1 = Interval(0).inflate(1)
		self.assertTrue(c1 == Interval(-1, 1))

	def test_set_empty(self):
		self.a.set_empty()
		self.assertTrue(self.a.is_empty())

	def test_mid(self):
		self.assertEqual(self.a.mid(),0.5)

	def test_rad(self):
		self.assertEqual(self.a.rad(),2.5)

	def test_diam(self):
		self.assertEqual(self.a.diam(),5)

	def test_mig(self):
		self.assertEqual(self.a.mig(),0)

	def test_mag(self):
		self.assertEqual(self.a.mag(),3)

	def test_is_subset(self):
		c = Interval(-2,1)
		self.assertFalse(self.a.is_subset(c))
		self.assertTrue(c.is_subset(self.a))

	def test_is_strict_subset(self):
		c = Interval(-2,1)
		self.assertTrue(c.is_strict_subset(self.a))
		d = Interval(-1.9,1)
		self.assertTrue(d.is_strict_subset(self.a))


	def test_is_interior_subset(self):
		c = Interval(-2,1)
		self.assertFalse(c.is_interior_subset(self.a))
		d = Interval(-1.9,1)
		self.assertTrue(d.is_interior_subset(self.a))

	def test_is_strict_interior_subset(self):
		c = Interval(-2,1)
		self.assertFalse(c.is_strict_interior_subset(self.a))
		d = Interval(-1.9,1)
		self.assertTrue(d.is_strict_interior_subset(self.a))

	def test_is_superset(self):
		c = Interval(1)
		self.assertTrue(self.a.is_superset(c))

	def test_is_strict_superset(self):
		c = Interval(1)
		self.assertTrue(self.a.is_superset(c))

	def test_contains(self):
		self.assertTrue(self.a.contains(0))

	def test_interior_contains(self):
		self.assertTrue(self.a.interior_contains(0))
		self.assertFalse(self.a.interior_contains(-2))


	def test_intersects(self):
		c1 = Interval(0,10)
		self.assertTrue(self.a.intersects(c1))

	def test_overlaps(self):
		c1 = Interval(3)
		self.assertTrue(self.a.intersects(c1))

	def test_is_disjoint(self):
		c1 = Interval(-1, 2)
		c2 = Interval(2.01,4)
		self.assertTrue(c1.is_disjoint(c2))


	def test_is_degenerated(self):
		c = Interval(-1)
		self.assertTrue(c.is_degenerated)

	def test_is_unbounded(self):
		c = Interval.POS_REALS
		self.assertTrue(c.is_unbounded())

	def test_is_bisectable(self):
		self.assertTrue(self.a.is_bisectable())
		c = Interval(0)
		self.assertFalse(c.is_bisectable())

	def test_rel_distance(self):
		c = Interval(-1, 2)

	def test_complementary(self):
		c = Interval()
		b = Interval()
		self.a.complementary(b,c)
		self.assertEqual(Interval(float('-inf'), -2),b )
		self.assertEqual(Interval(3, float('inf')), c)


	def test_diff(self):
		c = Interval()
		d  = Interval()
		y = Interval(2,4)
		self.a.diff(y,c,d)
		self.assertEqual( Interval(-2, 2), c)
		self.assertTrue(d.is_empty())


	def test_bisect(self):
		a = Interval(3,5)
		(c,d) = a.bisect()

	def test_ops(self):
		c = Interval(2,3)
		d = Interval(1,2)
		res = c + d
		self.assertEqual(res, Interval(3,5), " test + ops")
		res = c - d
		self.assertEqual(res, Interval(0,2)	, " test - ops")
		res = c * d
		self.assertEqual(res, Interval(2, 6)	, " test * ops")
		res = c / d
		self.assertEqual(res, Interval(1, 3)	, " test / ops")
		res = c & d
		self.assertEqual(res, Interval(2)	, " test & ops")
		res = c | d
		self.assertEqual(res, Interval(1, 3)	, " test | ops")
		
		res = c
		res += Interval(-2, 3)
		self.assertEqual(res, Interval(0, 6) , " test += ops")
		res = Interval(2,3)
		res -= Interval(-2, 3)
		self.assertEqual(res, Interval(-1, 5) , " test -= ops")
		res = Interval(2,3)
		res *= Interval(-2, 3)
		self.assertEqual(res, Interval(-6, 9) , " test *= ops")
		res = Interval(2,3)
		res /= Interval(-2, 3)
		self.assertEqual(res, Interval.ALL_REALS , " test /= ops")

	def test_ops_float(self):
		c = Interval(2,3)
		res = c + 1
		self.assertEqual(res, Interval(3, 4)	, " test + 1 ops")
		res = 1.0 + c
		self.assertEqual(res, Interval(3, 4)	, " test + 1 ops")
		res = c + 1.0
		self.assertEqual(res, Interval(3, 4)	, " test + 1 ops")

		res = c - 1
		self.assertEqual(res, Interval(1, 2)	)
		res = 1.0 - c
		self.assertEqual(res, Interval(-2, -1))
		res = c - 1.0
		self.assertEqual(res, Interval(1, 2))

		res = c * 3
		self.assertEqual(res, Interval(6, 9)	 )
		res = 3.0 * c
		self.assertEqual(res, Interval(6, 9)	 )
		res = c * 3.0
		self.assertEqual(res, Interval(6, 9)	 )

		res = c / 2
		self.assertEqual(res, Interval(1, 1.5)	)
		res = 2.0 / c
		self.assertEqual(res, Interval(2/3.0, 1)	)
		res = c / 2.0
		self.assertEqual(res, Interval(1, 1.5)	)


	def test_abs(self):
		c = Interval(-2,4)
		self.assertEqual(abs(c), Interval(0, 4))
	def test_sqr(self):
		c = Interval(-2,4)
		self.assertEqual(pyIbex.sqr(c), Interval(0,16))
	def test_root(self):
		c = Interval(-2,4)
		pyIbex.root(c,3)
	def test_exp(self):
		c = Interval(-2,4)
		pyIbex.exp(c)
	def test_log(self):
		c = Interval(-2,4)
		pyIbex.log(c)
	def test_cos(self):
		c = Interval(-2,4)
		pyIbex.cos(c)
	def test_sin(self):
		c = Interval(-2,4)
		pyIbex.sin(c)
	def test_tan(self):
		c = Interval(-2,4)
		pyIbex.tan(c)
	def test_acos(self):
		c = Interval(-2,4)
		pyIbex.acos(c)
	def test_asin(self):
		c = Interval(-2,4)
		pyIbex.asin(c)

	def test_atan(self):
		c = Interval(-2,4)
		pyIbex.atan(c)

	def test_atan2(self):
		c = Interval(-2,4)
		pyIbex.atan2(c,self.a)

	def test_cosh(self):
		c = Interval(-2,4)
		pyIbex.cosh(c)

	def test_sinh(self):
		c = Interval(-2,4)
		pyIbex.sinh(c)

	def test_tanh(self):
		c = Interval(-2,4)
		pyIbex.tanh(c)

	def test_acosh(self):
		c = Interval(-2,4)
		pyIbex.acosh(c)

	def test_asinh(self):
		c = Interval(-2,4)
		pyIbex.asinh(c)

	def test_atanh(self):
		c = Interval(-2,4)
		pyIbex.atanh(c)

	def test_max(self):
		c = Interval(-2,4)
		pyIbex.max(c,self.a)

	def test_min(self):
		c = Interval(-2,4)
		pyIbex.min(c,self.a)

	def test_sign(self):
		c = Interval(-2,4)
		pyIbex.sign(c)

	def test_chi(self):
		c = Interval(-2,4)
		b = Interval(-2,4)
		pyIbex.chi(c,self.a,b)

	def test_integer(self):
		c = Interval(-2,4)
		pyIbex.integer(c)


	def test_bwd_add(self):
		c = Interval(-2,4)
		b = Interval(4,2)
		pyIbex.bwd_add(c,self.a,b)

	def test_bwd_sub(self):
		c = Interval(-2,4)
		b = Interval(4,2)
		pyIbex.bwd_sub(c,self.a,b)

	def test_bwd_mul(self):
		c = Interval(-2,4)
		b = Interval(4,2)
		pyIbex.bwd_mul(c,self.a,b)

	def test_bwd_div(self):
		b = Interval(4,2)
		c = Interval(-2,4)
		pyIbex.bwd_div(c,self.a,b)

	def test_bwd_sqr(self):
		c = Interval(-2,4)
		pyIbex.bwd_sqr(c,self.a)

	def test_bwd_sqrt(self):
		c = Interval(-2,4)
		pyIbex.bwd_sqrt(c,self.a)

	def test_bwd_pow(self):
		c = Interval(-2,4)
		b = Interval(4,2)
		pyIbex.bwd_pow(c,b, self.a)

	def test_bwd_pow(self):
		c = Interval(-2,4)
		pyIbex.bwd_pow(c, 3, self.a)

	def test_bwd_root(self):
		c = Interval(-2,4)
		pyIbex.bwd_root(c,3, self.a)

	def test_bwd_exp(self):
		c = Interval(-2,4)
		pyIbex.bwd_exp(c,self.a)

	def test_bwd_log(self):
		c = Interval(-2,4)
		pyIbex.bwd_log(c,self.a)

	def test_bwd_cos(self):
		c = Interval(-2,4)
		pyIbex.bwd_cos(c,self.a)

	def test_bwd_sin(self):
		c = Interval(-2,4)
		pyIbex.bwd_sin(c,self.a)

	def test_bwd_tan(self):
		c = Interval(-2,4)
		pyIbex.bwd_tan(c,self.a)

	def test_bwd_acos(self):
		c = Interval(-2,4)
		pyIbex.bwd_acos(c,self.a)

	def test_bwd_asin(self):
		c = Interval(-2,4)
		pyIbex.bwd_asin(c,self.a)

	def test_bwd_atan(self):
		c = Interval(-2,4)
		pyIbex.bwd_atan(c,self.a)

	# def test_bwd_atan2(self):
	# 	c = Interval(-2,4)
	# 	b = Interval(-2,4)
	# 	pyIbex.bwd_atan2(c,self.a,b)

	def test_bwd_cosh(self):
		c = Interval(-2,4)
		pyIbex.bwd_cosh(c,self.a)

	def test_bwd_sinh(self):
		c = Interval(-2,4)
		pyIbex.bwd_sinh(c,self.a)

	def test_bwd_tanh(self):
		c = Interval(-2,4)
		pyIbex.bwd_tanh(c,self.a)

	def test_bwd_acosh(self):
		c = Interval(-2,4)
		pyIbex.bwd_acosh(c,self.a)

	def test_bwd_asinh(self):
		c = Interval(-2,4)
		pyIbex.bwd_asinh(c,self.a)

	def test_bwd_atanh(self):
		c = Interval(-2,4)
		pyIbex.bwd_atanh(c,self.a)

	def test_bwd_abs(self):
		c = Interval(-2,4)
		pyIbex.bwd_abs(c,self.a)

	def test_bwd_max(self):
		c = Interval(-2,4)
		b = Interval(2,10)
		pyIbex.bwd_max(c,self.a,b)

	def test_bwd_min(self):
		c = Interval(-2,4)
		b = Interval(2,10)
		pyIbex.bwd_min(c,self.a,b)

	def test_bwd_sign(self):
		c = Interval(-2,4)
		pyIbex.bwd_sign(c,self.a)

	def test_bwd_chi(self):
		c = Interval(-2,4)
		b = Interval(4,2)
		d = Interval(-2,1)
		pyIbex.bwd_chi(c,self.a,b,d)

	def test_bwd_integer(self):
		c = Interval(-2,4)
		pyIbex.bwd_integer(c)