Exemple #1
0
 def test_copyto(self):
     v = self.ones
     v2 = BlockVector(len(self.list_sizes_ones))
     v.copyto(v2)
     self.assertListEqual(v.tolist(), v2.tolist())
     v3 = np.zeros(v.size)
     v.copyto(v3)
     self.assertListEqual(v.tolist(), v3.tolist())
     v *= 5
     v.copyto(v2)
     self.assertListEqual(v.tolist(), v2.tolist())
Exemple #2
0
 def test_tolist(self):
     v = BlockVector(2)
     a = np.arange(5)
     b = np.arange(9)
     c = np.concatenate([a, b])
     v[0] = a
     v[1] = b
     self.assertListEqual(v.tolist(), c.tolist())
Exemple #3
0
 def test_fill(self):
     v = BlockVector(2)
     a = np.arange(5)
     b = np.arange(9)
     v[0] = a
     v[1] = b
     v.fill(1.0)
     c = np.ones(v.size)
     self.assertListEqual(v.tolist(), c.tolist())
Exemple #4
0
    def test_copyfrom(self):
        v = self.ones
        v1 = np.zeros(v.size)
        v.copyfrom(v1)
        self.assertListEqual(v.tolist(), v1.tolist())

        v2 = BlockVector(len(self.list_sizes_ones))
        for i, s in enumerate(self.list_sizes_ones):
            v2[i] = np.ones(s)*i
        v.copyfrom(v2)
        for idx, blk in enumerate(v2):
            self.assertListEqual(blk.tolist(), v2[idx].tolist())

        v3 = BlockVector(2)
        v4 = v.clone(2)
        v3[0] = v4
        v3[1] = np.zeros(3)
        self.assertListEqual(v3.tolist(), v4.tolist() + [0]*3)
Exemple #5
0
class TestSparseIntrinsics(unittest.TestCase):
    def setUp(self):
        self.v1 = np.array([1.1, 2.2, 3.3])
        self.v2 = np.array([4.4, 5.5, 6.6, 7.7])
        self.v3 = np.array([1.1, 2.2, 3.3]) * 2
        self.v4 = np.array([4.4, 5.5, 6.6, 7.7]) * 2
        self.bv = BlockVector([self.v1, self.v2])
        self.bv2 = BlockVector([self.v3, self.v4])

    def test_ceil(self):

        np_ceil = np.ceil(self.v1)
        pn_ceil = pn.ceil(self.v1)
        self.assertTrue(np.allclose(np_ceil, pn_ceil))

        np_ceil1 = np.ceil(self.v1)
        np_ceil2 = np.ceil(self.v2)
        pn_block_ceil = pn.ceil(self.bv)
        self.assertTrue(np.allclose(np_ceil1, pn_block_ceil[0]))
        self.assertTrue(np.allclose(np_ceil2, pn_block_ceil[1]))

    def test_floor(self):
        np_v1 = np.floor(self.v1)
        pn_v1 = pn.floor(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = np.floor(self.v1)
        np_v2 = np.floor(self.v2)
        pn_block = pn.floor(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_exp(self):
        np_v1 = np.exp(self.v1)
        pn_v1 = pn.exp(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = np.exp(self.v1)
        np_v2 = np.exp(self.v2)
        pn_block = pn.exp(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_conjugate(self):
        fname = 'conjugate'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_sin(self):
        fname = 'sin'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_cos(self):
        fname = 'cos'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_tan(self):
        fname = 'tan'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_arctan(self):
        fname = 'arctan'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_arcsinh(self):
        fname = 'arcsinh'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_sinh(self):
        fname = 'sinh'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_cosh(self):
        fname = 'cosh'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_abs(self):
        fname = 'abs'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_absolute(self):
        fname = 'absolute'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_fabs(self):
        fname = 'fabs'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_around(self):
        fname = 'around'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_sqrt(self):
        fname = 'sqrt'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_log(self):
        fname = 'log'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_log2(self):
        fname = 'log2'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_log10(self):
        fname = 'log10'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_arcsin(self):
        self.v1 = np.array([1.1, 2.2, 3.3]) / 10.0
        self.v2 = np.array([4.4, 5.5, 6.6, 7.7]) / 10.0
        self.bv = BlockVector([self.v1, self.v2])
        fname = 'arcsin'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_arccos(self):
        self.v1 = np.array([1.1, 2.2, 3.3]) / 10.0
        self.v2 = np.array([4.4, 5.5, 6.6, 7.7]) / 10.0
        self.bv = BlockVector([self.v1, self.v2])
        fname = 'arccos'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_arccosh(self):
        fname = 'arccosh'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertTrue(np.allclose(np_v1, pn_v1))

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertTrue(np.allclose(np_v1, pn_block[0]))
        self.assertTrue(np.allclose(np_v2, pn_block[1]))

    def test_sum(self):
        fname = 'sum'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertEqual(np_v1, pn_v1)

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertAlmostEqual(np_v1 + np_v2, pn_block)

    def test_min(self):
        fname = 'min'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertEqual(np_v1, pn_v1)

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertAlmostEqual(min(np_v1, np_v2), pn_block)

    def test_max(self):
        fname = 'max'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertEqual(np_v1, pn_v1)

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertAlmostEqual(max(np_v1, np_v2), pn_block)

    def test_mean(self):
        fname = 'mean'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertEqual(np_v1, pn_v1)

        np_v1 = fnp(np.concatenate([self.v1, self.v2]))
        pn_block = fpn(self.bv)
        self.assertAlmostEqual(np_v1, pn_block)

    def test_prod(self):
        fname = 'prod'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v1 = fnp(self.v1)
        pn_v1 = fpn(self.v1)
        self.assertEqual(np_v1, pn_v1)

        np_v1 = fnp(self.v1)
        np_v2 = fnp(self.v2)
        pn_block = fpn(self.bv)
        self.assertAlmostEqual(np_v1 * np_v2, pn_block)

    def test_add(self):
        fname = 'add'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v = fnp(self.v1, self.v3)
        pn_v = fpn(self.v1, self.v3)
        self.assertTrue(np.allclose(np_v, pn_v))

        v = np.concatenate([self.v1, self.v2])
        bv = self.bv
        pn_v = fpn(v, bv)
        self.assertTrue(np.allclose(v * 2, pn_v))
        pn_v = fpn(bv, v)
        self.assertTrue(np.allclose(v * 2, pn_v))

        v = np.concatenate([self.v1, self.v2])
        v2 = np.concatenate([self.v3, self.v4])
        pn_v = fpn(self.bv, self.bv2)
        self.assertTrue(np.allclose(fnp(v, v2), pn_v))

        with self.assertRaises(Exception) as context:
            fpn(self.bv.tolist(), self.bv2)

    def test_subtract(self):
        fname = 'subtract'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v = fnp(self.v1, self.v3)
        pn_v = fpn(self.v1, self.v3)
        self.assertTrue(np.allclose(np_v, pn_v))

        v = np.concatenate([self.v1, self.v2])
        bv = self.bv
        pn_v = fpn(v, bv)
        self.assertTrue(np.allclose(np.zeros(len(v)), pn_v))
        pn_v = fpn(bv, v)
        self.assertTrue(np.allclose(np.zeros(len(v)), pn_v))

        v = np.concatenate([self.v1, self.v2])
        v2 = np.concatenate([self.v3, self.v4])
        pn_v = fpn(self.bv, self.bv2)
        self.assertTrue(np.allclose(fnp(v, v2), pn_v))

        with self.assertRaises(Exception) as context:
            fpn(self.bv.tolist(), self.bv2)

    def test_multiply(self):
        fname = 'multiply'
        fnp = getattr(np, fname)
        fpn = getattr(pn, fname)
        np_v = fnp(self.v1, self.v3)
        pn_v = fpn(self.v1, self.v3)
        self.assertTrue(np.allclose(np_v, pn_v))

        v = np.concatenate([self.v1, self.v2])
        bv = self.bv
        pn_v = fpn(v, bv)
        self.assertTrue(np.allclose(fnp(v, v), pn_v))
        pn_v = fpn(bv, v)
        self.assertTrue(np.allclose(fnp(v, v), pn_v))

        v = np.concatenate([self.v1, self.v2])
        v2 = np.concatenate([self.v3, self.v4])
        pn_v = fpn(self.bv, self.bv2)
        self.assertTrue(np.allclose(fnp(v, v2), pn_v))

        with self.assertRaises(Exception) as context:
            fpn(self.bv.tolist(), self.bv2)