Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
22 changes: 16 additions & 6 deletions orangecontrib/spectroscopy/io/wire.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,17 @@ def read_spectra(self):
from renishawWiRE import WDFReader # pylint: disable=import-outside-toplevel
wdf_file = WDFReader(self.filename)

errors = []
try:
if wdf_file.measurement_type == 1: # single point spectra
table = self.single_reader(wdf_file)
elif wdf_file.measurement_type == 2: # series scan
table = self.series_reader(wdf_file)
elif wdf_file.measurement_type == 3: # line scan
table = self.map_reader(wdf_file)
for reader in [self.single_reader, self.series_reader, self.map_reader]:
try:
table = reader(wdf_file)
break
except Exception as e:
errors.append(f"{reader.__name__}: {e}")
continue
else:
raise IOError("Can not parse this file with the renishawWiRE readers.\n" + "\n".join(errors))
finally:
wdf_file.close()

Expand All @@ -30,6 +34,12 @@ def single_reader(self, wdf_file):
domvals = wdf_file.xdata # energies
y_data = wdf_file.spectra # spectra

if y_data.ndim != 1:
raise ValueError(f"WiREReaders.single_reader expects 1D spectra, got shape {y_data.shape}")

if len(domvals) != len(y_data):
raise ValueError(f"# of energy and # of intensity values don't match: {len(domvals)} vs {len(y_data)}")

return domvals, y_data, None

def series_reader(self, wdf_file):
Expand Down
6 changes: 6 additions & 0 deletions orangecontrib/spectroscopy/tests/test_readers.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,12 @@ def test_undefined_map_positions(self):

class TestRenishawReader(unittest.TestCase):

def test_unspecified_type(self):
d = Orange.data.Table("renishaw_test_files/single-spectrum_undefined-type.wdf")
self.assertEqual(d.X[0][4], -2.4491686820983887)
self.assertEqual(min(getx(d)), 78.728516)
self.assertEqual(max(getx(d)), 1338.296875)

def test_single_sp_reader(self):
d = Orange.data.Table("renishaw_test_files/sp.wdf")
self.assertEqual(d.X[0][4], 52.4945182800293)
Expand Down
Loading