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))
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_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))
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))
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))
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)))
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)))
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)))
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 })
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_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)
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
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
def test_bwd_abs(self): c = Interval(-2, 4) pyIbex.bwd_abs(c, self.a)
def test_bwd_atanh(self): c = Interval(-2, 4) pyIbex.bwd_atanh(c, self.a)
def test_bisect(self): a = Interval(3,5) (c,d) = a.bisect()
def test_overlaps(self): c1 = Interval(3) self.assertTrue(self.a.intersects(c1))
def test_is_strict_superset(self): c = Interval(1) self.assertTrue(self.a.is_superset(c))
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_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_is_disjoint(self): c1 = Interval(-1, 2) c2 = Interval(2.01,4) self.assertTrue(c1.is_disjoint(c2))
def test_is_bisectable(self): self.assertTrue(self.a.is_bisectable()) c = Interval(0) self.assertFalse(c.is_bisectable())
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_subset(self): c = Interval(-2,1) self.assertFalse(self.a.is_subset(c)) self.assertTrue(c.is_subset(self.a))
def setUp(self): Interval.__str__ = interval_str self.a = Interval(-2,3)
def test_bwd_min(self): c = Interval(-2, 4) b = Interval(2, 10) pyIbex.bwd_min(c, self.a, b)
def test_bwd_pow(self): c = Interval(-2, 4) b = Interval(4, 2) pyIbex.bwd_pow(c, b, self.a)
def test_bwd_sign(self): c = Interval(-2, 4) pyIbex.bwd_sign(c, self.a)
def test_bwd_pow(self): c = Interval(-2, 4) pyIbex.bwd_pow(c, 3, self.a)
def test_bwd_integer(self): c = Interval(-2, 4) pyIbex.bwd_integer(c)
def test_bwd_root(self): c = Interval(-2, 4) pyIbex.bwd_root(c, 3, 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_bwd_exp(self): c = Interval(-2, 4) pyIbex.bwd_exp(c, self.a)
def test_intersects(self): c1 = Interval(0, 10) self.assertTrue(self.a.intersects(c1))
def test_bwd_log(self): c = Interval(-2, 4) pyIbex.bwd_log(c, self.a)
def test_is_disjoint(self): c1 = Interval(-1, 2) c2 = Interval(2.01, 4) self.assertTrue(c1.is_disjoint(c2))
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)