def test_DataContainerFilter(self): """ """ data = pg.DataContainer() data.resize(5) data.markValid([0, 4]) self.assertEqual(data('valid'), [1.0, 0.0, 0.0, 0.0, 1.0]) data.markInvalid(pg.IndexArray(np.arange(5, dtype="long"))) self.assertEqual(data('valid'), [0.0, 0.0, 0.0, 0.0, 0.0]) data.markValid(np.arange(5, dtype="long")) self.assertEqual(data('valid'), [1.0, 1.0, 1.0, 1.0, 1.0]) data.markInvalid(range(5)) self.assertEqual(data('valid'), [0.0, 0.0, 0.0, 0.0, 0.0]) x = np.arange(5, dtype='float') data.markValid(pg.Vector(x) > 2.0) self.assertEqual(data('valid'), [0.0, 0.0, 0.0, 1.0, 1.0]) data.markValid(pg.BVector(x < 2.0)) self.assertEqual(data('valid'), [1.0, 1.0, 0.0, 1.0, 1.0]) data.markInvalid(pg.find(x > 3.0)) self.assertEqual(data('valid'), [1.0, 1.0, 0.0, 1.0, 0.0]) data.markInvalid(x < 1.0) self.assertEqual(data('valid'), [0.0, 1.0, 0.0, 1.0, 0.0])
def test_XVectorBasics(self): def testVector(v): for t in v: self.assertEqual(t, 1.0) self.assertEqual(sum(v), 5.0) self.assertFalse(pg.haveInfNaN(v)) v[1] = 0 self.assertEqual(v[1], 0) v[1] = 1 self.assertEqual(v[1], 1) #print(v/v) testVector(pg.RVector(5, 1.0)) testVector(pg.CVector(5, 1.0)) testVector(pg.BVector(5, True)) testVector(pg.IVector(5, 1))
def test_IndexAccess(self): # (double) array/vector an = np.arange(10.) ag = pg.Vector(an) # bn = nd.array(bool) bn = (an > 4.) self.assertEqual(type(bn), np.ndarray) self.assertEqual(bn.dtype, 'bool') self.assertEqual(sum(bn), 5) # bg = BVector bg = (ag > 4.) self.assertEqual(type(bg), pg.BVector) self.assertEqual(sum(bg), 5) # BVector(nd.array(bool)) self.assertEqual(len(bg), len(pg.BVector(bn))) self.assertEqual(sum(bg), sum(pg.BVector(bn))) self.assertEqual(bg[0], pg.BVector(bn)[0]) np.testing.assert_array_equal(bg, pg.BVector(bn)) # In = nd.array(int) In = np.nonzero(bn)[0] self.assertEqual(type(In), np.ndarray) self.assertEqual(In.dtype, 'int64') self.assertEqual(len(In), 5) self.assertEqual(In[0], 5) # np.nonzero(bg) np.testing.assert_array_equal(In, np.nonzero(bg)[0]) # Ig = IndexArray Ig = pg.find(bg) self.assertEqual(type(Ig), pg.core.IndexArray) self.assertEqual(len(Ig), 5) self.assertEqual(Ig[0], 5) # pg.find(nd.array(bool)) np.testing.assert_array_equal(Ig, pg.find(bn)) ## Indexoperators ## # ndarray [nd.array(bool)] == ndarray [nd.array(int)] np.testing.assert_equal(an[bn], an[In]) self.assertEqual(len(an[bn]), 5) self.assertEqual(an[bn][0], 5) # ndarray[IndexArray] == ndarray [nd.array(int)] np.testing.assert_equal(an[Ig], an[In]) # ndarray[BVector] == ndarray [nd.array(bool)] np.testing.assert_array_equal(an[np.array(bg, dtype='bool')], an[bn]) np.testing.assert_array_equal(an[np.array(bg)], an[bn]) np.testing.assert_array_equal(an[bg.array()], an[bn]) np.testing.assert_array_equal(an[an>5], [6, 7, 8, 9]) np.testing.assert_array_equal(ag[bg], ag[Ig]) self.assertEqual(len(ag[bg]), 5) self.assertEqual(ag[bg][0], 5) # RVector [BVector] == RVector [nd.array(bool)] np.testing.assert_array_equal(ag[bg], ag[bn]) np.testing.assert_equal(sum(ag[bg]), sum(ag[bn])) # RVector [IndexArray] == RVector [nd.array(int)] np.testing.assert_array_equal(ag[Ig], ag[In]) # RVector(BVector) == RVector(nd.array(bool)) # RVector(IndexArray) == RVector(nd.array(int)) I = pg.core.IndexArray([0,1,1,0]) np.testing.assert_array_equal(pg.sum(I), 2) np.testing.assert_array_equal(sum(I), 2) np.testing.assert_array_equal(np.sum(I), 2)
def test_IndexAccess(self): # (double) array/vector an = np.arange(10.) ag = pg.RVector(an) # bn = nd.array(bool) bn = (an > 4.) self.assertEqual(type(bn), np.ndarray) self.assertEqual(bn.dtype, 'bool') self.assertEqual(sum(bn), 5) # bg = BVector bg = (ag > 4.) self.assertEqual(type(bg), pg.BVector) self.assertEqual(sum(bg), 5) # BVector(nd.array(bool)) self.assertEqual(len(bg), len(pg.BVector(bn))) self.assertEqual(sum(bg), sum(pg.BVector(bn))) self.assertEqual(bg[0], pg.BVector(bn)[0]) np.testing.assert_array_equal(bg, pg.BVector(bn)) # In = nd.array(int) In = np.nonzero(bn)[0] self.assertEqual(type(In), np.ndarray) self.assertEqual(In.dtype, 'int') self.assertEqual(len(In), 5) self.assertEqual(In[0], 5) # np.nonzero(bg) np.testing.assert_array_equal(In, np.nonzero(bg)[0]) # Ig = IndexArray Ig = pg.find(bg) self.assertEqual(type(Ig), pg.IndexArray) self.assertEqual(len(Ig), 5) self.assertEqual(Ig[0], 5) # pg.find(nd.array(bool)) np.testing.assert_array_equal(Ig, pg.find(bn)) ## Indexoperators ## # ndarray [nd.array(bool)] == ndarray [nd.array(int)] np.testing.assert_equal(an[bn], an[In]) self.assertEqual(len(an[bn]), 5) self.assertEqual(an[bn][0], 5) # ndarray[IndexArray] == ndarray [nd.array(int)] np.testing.assert_equal(an[Ig], an[In]) # ndarray[BVector] == ndarray [nd.array(bool)] np.testing.assert_array_equal(an[np.array(bg, dtype='bool')], an[bn]) np.testing.assert_array_equal(an[np.array(bg)], an[bn]) np.testing.assert_array_equal(an[bg.array()], an[bn]) ## this fails because it is interpreted as an[[0,0,0,1,1,1]] .. #np.testing.assert_equal(an[bg], an[bn]) # RVector [BVector] == RVector [IndexArray] np.testing.assert_array_equal(ag[bg], ag[Ig]) self.assertEqual(len(ag[bg]), 5) self.assertEqual(ag[bg][0], 5) # RVector [BVector] == RVector [nd.array(bool)] np.testing.assert_array_equal(ag[bg], ag[bn]) np.testing.assert_equal(sum(ag[bg]), sum(ag[bn])) # RVector [IndexArray] == RVector [nd.array(int)] np.testing.assert_array_equal(ag[Ig], ag[In])
def test_NumpyToBVector(self): """Implemented in custom_rvalue.cpp.""" x = np.array(range(-10, 10), dtype=float) b = pg.BVector(x > 0.) self.assertEqual(b[10], False) self.assertEqual(b[11], True)