diff options
| author | Edoardo Pasca <edo.paskino@gmail.com> | 2019-03-19 13:31:12 +0000 | 
|---|---|---|
| committer | Edoardo Pasca <edo.paskino@gmail.com> | 2019-03-19 13:33:26 +0000 | 
| commit | 174d0ace64decac39340c7b160ffdaf37676a6d2 (patch) | |
| tree | 2e71c3d0bd65c9514fb3d4f60009405d5b092818 /Wrappers/Python | |
| parent | aa628c3f02f2246f4e1b2982b9497802d615f2e7 (diff) | |
| download | framework-174d0ace64decac39340c7b160ffdaf37676a6d2.tar.gz framework-174d0ace64decac39340c7b160ffdaf37676a6d2.tar.bz2 framework-174d0ace64decac39340c7b160ffdaf37676a6d2.tar.xz framework-174d0ace64decac39340c7b160ffdaf37676a6d2.zip | |
added and updated unittests
Diffstat (limited to 'Wrappers/Python')
| -rwxr-xr-x | Wrappers/Python/test/test_BlockDataContainer.py | 39 | ||||
| -rw-r--r-- | Wrappers/Python/test/test_BlockOperator.py | 23 | ||||
| -rwxr-xr-x | Wrappers/Python/test/test_DataContainer.py | 11 | ||||
| -rw-r--r-- | Wrappers/Python/test/test_functions.py | 13 | 
4 files changed, 75 insertions, 11 deletions
| diff --git a/Wrappers/Python/test/test_BlockDataContainer.py b/Wrappers/Python/test/test_BlockDataContainer.py index ec69225..6c0bede 100755 --- a/Wrappers/Python/test/test_BlockDataContainer.py +++ b/Wrappers/Python/test/test_BlockDataContainer.py @@ -18,6 +18,8 @@ from ccpi.framework import BlockDataContainer  #from ccpi.optimisation.Algorithms import CGLS
  import functools
 +from ccpi.optimisation.operators import Gradient, Identity, BlockOperator
 +
  class TestBlockDataContainer(unittest.TestCase):
      def skiptest_BlockDataContainerShape(self):
          print ("test block data container")
 @@ -327,6 +329,39 @@ class TestBlockDataContainer(unittest.TestCase):          numpy.testing.assert_almost_equal(nbdc2.get_item(1).get_item(0).as_array()[0][0][0] , 1. , decimal=5)
          numpy.testing.assert_almost_equal(nbdc2.get_item(1).get_item(1).as_array()[0][0][0] , 3./2 , decimal=5)
 -        
 +        c5 = nbdc.get_item(0).power(2).sum()
 +        c5a = nbdc.power(2).sum()
 +        print ("sum", c5a, c5)
 +
          print ("test_Nested_BlockDataContainer OK")
 -        
 +    def stest_NestedBlockDataContainer2(self):
 +        M, N = 2, 3
 +        ig = ImageGeometry(voxel_num_x = M, voxel_num_y = N) 
 +        ag = ig
 +        u = ig.allocate(1)
 +        op1 = Gradient(ig)
 +        op2 = Identity(ig, ag)
 +
 +        operator = BlockOperator(op1, op2, shape=(2,1)) 
 +
 +        d1 = op1.direct(u)
 +        d2 = op2.direct(u)
 +
 +        d = operator.direct(u)
 +
 +        dd = operator.domain_geometry()
 +        ww = operator.range_geometry()
 +
 +        print(d.get_item(0).get_item(0).as_array())
 +        print(d.get_item(0).get_item(1).as_array())
 +        print(d.get_item(1).as_array())
 +
 +        c1 = d + d
 +
 +        c2 = 2*d
 +
 +        c3 = d / (d+0.0001)
 +
 +
 +        c5 = d.get_item(0).power(2).sum()
 +
 diff --git a/Wrappers/Python/test/test_BlockOperator.py b/Wrappers/Python/test/test_BlockOperator.py index 8bd673b..951aa0a 100644 --- a/Wrappers/Python/test/test_BlockOperator.py +++ b/Wrappers/Python/test/test_BlockOperator.py @@ -4,6 +4,7 @@ from ccpi.framework import BlockDataContainer  from ccpi.optimisation.ops import TomoIdentity  from ccpi.framework import ImageGeometry, ImageData  import numpy +from ccpi.optimisation.operators import FiniteDiff  class TestBlockOperator(unittest.TestCase): @@ -102,6 +103,7 @@ class TestBlockOperator(unittest.TestCase):      def test_TomoIdentity(self):          ig = ImageGeometry(10,20,30)          img = ig.allocate() +        print (img.shape, ig.shape)          self.assertTrue(img.shape == (30,20,10))          self.assertEqual(img.sum(), 0)          Id = TomoIdentity(ig) @@ -288,3 +290,24 @@ class TestBlockOperator(unittest.TestCase):          plt.imshow(cgsmall.get_output().get_item(0,0).subset(vertical=0).as_array())          plt.title('Composite CGLS\nsmall lambda')          plt.show() + +    def test_FiniteDiffOperator(self): +        N, M = 200, 300 + +         +        ig = ImageGeometry(voxel_num_x = M, voxel_num_y = N)     +        u = ig.allocate('random_int') +        G = FiniteDiff(ig, direction=0, bnd_cond = 'Neumann') +        print(type(u), u.as_array())     +        print(G.direct(u).as_array()) + +        # Gradient Operator norm, for one direction should be close to 2 +        numpy.testing.assert_allclose(G.norm(), numpy.sqrt(4), atol=0.1) + +        M1, N1, K1 = 200, 300, 2 +        ig1 = ImageGeometry(voxel_num_x = M1, voxel_num_y = N1, channels = K1) +        u1 = ig1.allocate('random_int') +        G1 = FiniteDiff(ig1, direction=2, bnd_cond = 'Periodic') +        print(ig1.shape==u1.shape) +        print (G1.norm()) +        numpy.testing.assert_allclose(G1.norm(), numpy.sqrt(4), atol=0.1)
\ No newline at end of file diff --git a/Wrappers/Python/test/test_DataContainer.py b/Wrappers/Python/test/test_DataContainer.py index 47feb95..7a7e6a0 100755 --- a/Wrappers/Python/test/test_DataContainer.py +++ b/Wrappers/Python/test/test_DataContainer.py @@ -495,9 +495,10 @@ class TestDataContainer(unittest.TestCase):          self.assertEqual(order[1], image.dimension_labels[1])          self.assertEqual(order[2], image.dimension_labels[2])      def test_AcquisitionGeometry_allocate(self): -        ageometry = AcquisitionGeometry(dimension=2, angles=numpy.linspace(0, 180, num=10), -                                        geom_type='parallel', pixel_num_v=3, -                                        pixel_num_h=5, channels=2) +        ageometry = AcquisitionGeometry(dimension=2,  +                            angles=numpy.linspace(0, 180, num=10), +                            geom_type='parallel', pixel_num_v=3, +                            pixel_num_h=5, channels=2)          sino = ageometry.allocate()          shape = sino.shape          print ("shape", shape) @@ -509,8 +510,8 @@ class TestDataContainer(unittest.TestCase):          self.assertEqual(1,sino.as_array()[shape[0]-1][shape[1]-1][shape[2]-1][shape[3]-1])          print (sino.dimension_labels, sino.shape, ageometry) -        default_order = ['channel' , ' angle' , -                                          'vertical' , 'horizontal'] +        default_order = ['channel' , 'angle' , +                         'vertical' , 'horizontal']          self.assertEqual(default_order[0], sino.dimension_labels[0])          self.assertEqual(default_order[1], sino.dimension_labels[1])          self.assertEqual(default_order[2], sino.dimension_labels[2]) diff --git a/Wrappers/Python/test/test_functions.py b/Wrappers/Python/test/test_functions.py index 554d400..6a44641 100644 --- a/Wrappers/Python/test/test_functions.py +++ b/Wrappers/Python/test/test_functions.py @@ -49,11 +49,12 @@ class TestFunction(unittest.TestCase):          noisy_data = ImageData(np.random.randint(10, size=ag))          d = ImageData(np.random.randint(10, size=ag)) -         -        g = L2NormSq(alpha=0.5, b=noisy_data) +        alpha = 0.5 +        # scaled function +        g = alpha * L2NormSq(b=noisy_data)          # Compare call of g -        a2 = g.alpha*(d - noisy_data).power(2).sum() +        a2 = alpha*(d - noisy_data).power(2).sum()          #print(a2, g(d))           self.assertEqual(a2, g(d)) @@ -63,7 +64,11 @@ class TestFunction(unittest.TestCase):          #print( a3, g.convex_conjugate(d)) -     +    def stest_ScaledFunctin(self): +        ig = (N,N) +        ag = ig        +        op1 = Gradient(ig) +        op2 = Identity(ig, ag)  #     | 
