Skip to content

Commit bc5608d

Browse files
Fix bug in NikonReader when ROI is not set (#1457)
* fix bug when ROI is None Signed-off-by: Laura Murgatroyd <60604372+lauramurgatroyd@users.noreply.github.com> * update change log * basic unit tests * Exception types --------- Signed-off-by: Laura Murgatroyd <60604372+lauramurgatroyd@users.noreply.github.com> Co-authored-by: gfardell <gemma.fardell@stfc.ac.uk>
1 parent 01f0fee commit bc5608d

File tree

3 files changed

+44
-7
lines changed

3 files changed

+44
-7
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
* 23.0.1
2+
- Fix bug with NikonReader requiring ROI to be set in constructor.
3+
14
* 23.0.0
25
- Partitioner is now able to create batches even if angle is not the outer dimension
36
- Renamed `max_iteration_stop_cryterion` method in the Algorithm class to `max_iteration_stop_criterion`

Wrappers/Python/cil/io/NikonDataReader.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,22 +102,22 @@ def set_up(self,
102102
self.fliplr = fliplr
103103

104104
if self.file_name is None:
105-
raise Exception('Path to xtekct file is required.')
105+
raise ValueError('Path to xtekct file is required.')
106106

107107
# check if xtekct file exists
108108
if not(os.path.isfile(self.file_name)):
109-
raise Exception('File\n {}\n does not exist.'.format(self.file_name))
109+
raise FileNotFoundError('File\n {}\n does not exist.'.format(self.file_name))
110110

111111
if os.path.basename(self.file_name).split('.')[-1].lower() != 'xtekct':
112112
raise TypeError('This reader can only process xtekct files. Got {}'.format(os.path.basename(self.file_name)))
113+
114+
if self.roi is None:
115+
self.roi= {'angle': -1, 'horizontal': -1, 'vertical': -1}
113116

114117
# check labels
115118
for key in self.roi.keys():
116119
if key not in ['angle', 'horizontal', 'vertical']:
117-
raise Exception("Wrong label. One of the following is expected: angle, horizontal, vertical")
118-
119-
if self.roi is None:
120-
self.roi= {'angle': -1, 'horizontal': -1, 'vertical': -1}
120+
raise ValueError("Wrong label. One of the following is expected: angle, horizontal, vertical")
121121

122122
roi = self.roi.copy()
123123

Wrappers/Python/test/test_io.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import numpy as np
2525
import os
2626
from cil.framework import ImageGeometry
27-
from cil.io import TXRMDataReader, NEXUSDataReader
27+
from cil.io import TXRMDataReader, NEXUSDataReader, NikonDataReader, ZEISSDataReader
2828
from cil.io import TIFFWriter, TIFFStackReader
2929
from cil.io.utilities import HDF5_utilities
3030
from cil.processors import Slicer
@@ -522,3 +522,37 @@ def test_read_to(self):
522522

523523
HDF5_utilities.read_to(self.path, self.dset_path, data_partial, source_sel=subset, dest_sel=subset)
524524
np.testing.assert_allclose(data_partial_by_hand,data_partial)
525+
526+
527+
class TestNikonReader(unittest.TestCase):
528+
529+
def test_setup(self):
530+
531+
reader = NikonDataReader()
532+
self.assertEqual(reader.file_name, None)
533+
self.assertEqual(reader.roi, None)
534+
self.assertTrue(reader.normalise)
535+
self.assertEqual(reader.mode, 'bin')
536+
self.assertFalse(reader.fliplr)
537+
538+
roi = {'vertical':(1,-1),'horizontal':(1,-1),'angle':(1,-1)}
539+
reader = NikonDataReader(file_name=None, roi=roi, normalise=False, mode='slice', fliplr=True)
540+
self.assertEqual(reader.file_name, None)
541+
self.assertEqual(reader.roi, roi)
542+
self.assertFalse(reader.normalise)
543+
self.assertEqual(reader.mode, 'slice')
544+
self.assertTrue(reader.fliplr)
545+
546+
with self.assertRaises(FileNotFoundError):
547+
reader = NikonDataReader(file_name='no-file')
548+
549+
550+
class TestZeissReader(unittest.TestCase):
551+
552+
def test_setup(self):
553+
554+
reader = ZEISSDataReader()
555+
self.assertEqual(reader.file_name, None)
556+
557+
with self.assertRaises(FileNotFoundError):
558+
reader = ZEISSDataReader(file_name='no-file')

0 commit comments

Comments
 (0)