示例#1
0
    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])
示例#2
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))
示例#3
0
    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)
示例#4
0
    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])
示例#5
0
 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)