summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xWrappers/Python/ccpi/processors/CenterOfRotationFinder.py24
-rwxr-xr-xWrappers/Python/test/test_DataProcessor.py5
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())