diff options
-rwxr-xr-x | Wrappers/Python/ccpi/processors/CenterOfRotationFinder.py | 24 | ||||
-rwxr-xr-x | Wrappers/Python/test/test_DataProcessor.py | 5 |
2 files changed, 16 insertions, 13 deletions
diff --git a/Wrappers/Python/ccpi/processors/CenterOfRotationFinder.py b/Wrappers/Python/ccpi/processors/CenterOfRotationFinder.py index 11b640f..f9ed19d 100755 --- a/Wrappers/Python/ccpi/processors/CenterOfRotationFinder.py +++ b/Wrappers/Python/ccpi/processors/CenterOfRotationFinder.py @@ -43,9 +43,9 @@ class CenterOfRotationFinder(DataProcessor): #DataProcessor.__init__(self, **kwargs) super(CenterOfRotationFinder, self).__init__(**kwargs) - def set_slice(self, slice): + def set_slice(self, slice_index='centre'): """ - Set the slice to run over in a 3D data set. + Set the slice to run over in a 3D data set. The default will use the centre slice. Input is any valid slice index or 'centre' """ @@ -53,21 +53,21 @@ class CenterOfRotationFinder(DataProcessor): if dataset is None: raise ValueError('Please set input data before slice selection') + + if dataset.number_of_dimensions == 2: + print('Slice number not a valid parameter of a 2D data set') #check slice number is valid - if dataset.number_of_dimensions == 3: - if slice == 'centre': - slice = dataset.get_dimension_size('vertical')//2 - - elif slice >= dataset.get_dimension_size('vertical'): + elif dataset.number_of_dimensions == 3: + if slice_index == 'centre': + slice_index = dataset.get_dimension_size('vertical')//2 + elif not isinstance(slice_index, (int)): + raise TypeError("Invalid input. Expect integer slice index.") + elif slice_index >= dataset.get_dimension_size('vertical'): raise ValueError("Slice out of range must be less than {0}"\ .format(dataset.get_dimension_size('vertical'))) - elif dataset.number_of_dimensions == 2: - if slice is not None: - raise ValueError('Slice number not a valid parameter of a 2D data set') - - self.slice_number = slice + self.slice_number = slice_index def check_input(self, dataset): #check dataset diff --git a/Wrappers/Python/test/test_DataProcessor.py b/Wrappers/Python/test/test_DataProcessor.py index 55f38d3..1666ea8 100755 --- a/Wrappers/Python/test/test_DataProcessor.py +++ b/Wrappers/Python/test/test_DataProcessor.py @@ -64,7 +64,7 @@ class TestDataProcessor(unittest.TestCase): print ("Center of rotation", cf.get_output())
self.assertAlmostEqual(86.25, cf.get_output())
- #def test_CenterOfRotation_slice(self):
+ #def test_CenterOfRotation_singleslice(self):
#reader = NexusReader(self.filename)
#data = reader.get_acquisition_data_whole()
@@ -87,6 +87,9 @@ class TestDataProcessor(unittest.TestCase): cf.set_slice(80)
print ("Center of rotation", cf.get_output())
self.assertAlmostEqual(86.25, cf.get_output())
+ cf.set_slice()
+ print ("Center of rotation", cf.get_output())
+ self.assertAlmostEqual(86.25, cf.get_output())
cf.set_slice('centre')
print ("Center of rotation", cf.get_output())
self.assertAlmostEqual(86.25, cf.get_output())
|