Esempio n. 1
0
 def test_warning_raised_when_convert_run_log_with_unrecognised_units(self):
     import mantid.simpleapi as mantid
     target = mantid.CloneWorkspace(self.base_event_ws)
     with warnings.catch_warnings(record=True) as caught_warnings:
         mantidcompat.convert_EventWorkspace_to_data_array(target, False)
         assert len(
             caught_warnings
         ) > 0, "Expected warnings due to some run logs " \
                "having unrecognised units strings"
         assert any("unrecognised units" in str(caught_warning.message)
                    for caught_warning in caught_warnings)
Esempio n. 2
0
 def test_EventWorkspace_no_y_unit(self):
     import mantid.simpleapi as mantid
     tiny_event_ws = mantid.CreateSampleWorkspace(WorkspaceType='Event',
                                                  NumBanks=1,
                                                  NumEvents=1)
     d = mantidcompat.convert_EventWorkspace_to_data_array(
         tiny_event_ws, load_pulse_times=False)
     self.assertEqual(d.data.unit, sc.units.counts)
     tiny_event_ws.setYUnit('')
     d = mantidcompat.convert_EventWorkspace_to_data_array(
         tiny_event_ws, load_pulse_times=False)
     self.assertEqual(d.data.unit, sc.units.dimensionless)
Esempio n. 3
0
    def test_unit_conversion(self):
        import mantid.simpleapi as mantid
        eventWS = mantid.CloneWorkspace(self.base_event_ws)
        ws = mantid.Rebin(eventWS, 10000, PreserveEvents=False)
        tmp = mantidcompat.convert_Workspace2D_to_data_array(ws)
        target_tof = tmp.coords['tof']
        ws = mantid.ConvertUnits(InputWorkspace=ws,
                                 Target="Wavelength",
                                 EMode="Elastic")
        converted_mantid = mantidcompat.convert_Workspace2D_to_data_array(ws)

        da = mantidcompat.convert_EventWorkspace_to_data_array(
            eventWS, load_pulse_times=False)
        da.realign({'tof': target_tof})
        da = sc.histogram(da)
        d = sc.Dataset(da)
        converted = sc.neutron.convert(d, 'tof', 'wavelength')

        self.assertTrue(
            np.all(np.isclose(converted_mantid.values, converted[""].values)))
        self.assertTrue(
            np.all(
                np.isclose(
                    converted_mantid.coords['wavelength'].values,
                    converted.coords['wavelength'].values,
                )))
Esempio n. 4
0
    def test_EventWorkspace_realign_events(self):
        import mantid.simpleapi as mantid
        eventWS = mantid.CloneWorkspace(self.base_event_ws)

        realigned = mantidcompat.convert_EventWorkspace_to_data_array(
            eventWS, realign_events=True, load_pulse_times=False)

        d = mantidcompat.convert_EventWorkspace_to_data_array(
            eventWS, realign_events=False, load_pulse_times=False)
        d.realign({'tof': realigned.coords['tof']})

        # Removing run and sample due to missing comparison operators
        del d.attrs['run']
        del d.attrs['sample']
        del realigned.attrs['run']
        del realigned.attrs['sample']
        assert realigned == d
Esempio n. 5
0
 def test_set_sample(self):
     import mantid.simpleapi as mantid
     target = mantid.CloneWorkspace(self.base_event_ws)
     d = mantidcompat.convert_EventWorkspace_to_data_array(target, False)
     d.attrs["sample"].value.setThickness(3)
     # before
     self.assertNotEqual(3, target.sample().getThickness())
     target.setSample(d.attrs["sample"].value)
     # after
     self.assertEqual(3, target.sample().getThickness())
Esempio n. 6
0
 def test_set_run(self):
     import mantid.simpleapi as mantid
     target = mantid.CloneWorkspace(self.base_event_ws)
     d = mantidcompat.convert_EventWorkspace_to_data_array(target, False)
     d.attrs["run"].value.addProperty("test_property", 1, True)
     # before
     self.assertFalse(target.run().hasProperty("test_property"))
     target.setRun(d.attrs["run"].value)
     # after
     self.assertTrue(target.run().hasProperty("test_property"))
Esempio n. 7
0
    def test_no_warning_raised_explicitly_dimensionless_run_log(self):
        import mantid.simpleapi as mantid
        target = mantid.CloneWorkspace(self.base_event_ws)
        with warnings.catch_warnings(record=True) as caught_warnings:
            mantidcompat.convert_EventWorkspace_to_data_array(target, False)
            original_number_of_warnings = len(caught_warnings)

        # Add an explicitly dimensionless log
        mantid.AddSampleLog(Workspace=target,
                            LogName='dimensionless_log',
                            LogText='1',
                            LogType='Number',
                            LogUnit='dimensionless')

        with warnings.catch_warnings(record=True) as caught_warnings:
            mantidcompat.convert_EventWorkspace_to_data_array(target, False)
            assert len(caught_warnings) == original_number_of_warnings,\
                "Expected no extra warning about unrecognised units " \
                "from explicitly dimensionless log"
Esempio n. 8
0
    def test_EventWorkspace(self):
        import mantid.simpleapi as mantid
        eventWS = mantid.CloneWorkspace(self.base_event_ws)
        ws = mantid.Rebin(eventWS, 10000)

        binned_mantid = mantidcompat.convert_Workspace2D_to_data_array(ws)

        target_tof = binned_mantid.coords[sc.Dim.Tof]
        d = mantidcompat.convert_EventWorkspace_to_data_array(eventWS, False)
        binned = sc.histogram(d, target_tof)

        delta = sc.sum(binned_mantid - binned, sc.Dim.Spectrum)
        delta = sc.sum(delta, sc.Dim.Tof)
        self.assertLess(np.abs(delta.value), 1e-5)
Esempio n. 9
0
    def test_EventWorkspace(self):
        import mantid.simpleapi as mantid
        eventWS = mantid.CloneWorkspace(self.base_event_ws)
        ws = mantid.Rebin(eventWS, 10000)

        binned_mantid = mantidcompat.convert_Workspace2D_to_data_array(ws)

        target_tof = binned_mantid.coords['tof']
        d = mantidcompat.convert_EventWorkspace_to_data_array(
            eventWS, load_pulse_times=False)
        binned = sc.histogram(d.bins, target_tof)

        delta = sc.sum(binned_mantid - binned, 'spectrum')
        delta = sc.sum(delta, 'tof')
        self.assertLess(np.abs(delta.value), 1e-5)
Esempio n. 10
0
    def test_convert_scalar_run_log_to_attrs(self):
        # Given a Mantid workspace with a run log
        import mantid.simpleapi as mantid
        target = mantid.CloneWorkspace(self.base_event_ws)
        log_name = "start_time"
        self.assertTrue(
            target.run().hasProperty(log_name),
            f"Expected input workspace to have a {log_name} run log")

        # When the workspace is converted to a scipp data array
        d = mantidcompat.convert_EventWorkspace_to_data_array(target, False)

        # Then the data array contains the run log as an unaligned coord
        self.assertEqual(
            target.run()[log_name].value, d.attrs[log_name].value,
            "Expected value of the unaligned coord to match "
            "the original run log from the Mantid workspace")
Esempio n. 11
0
    def test_convert_array_run_log_to_attrs(self):
        # Given a Mantid workspace with a run log
        import mantid.simpleapi as mantid
        target = mantid.CloneWorkspace(self.base_event_ws)
        log_name = "SampleTemp"
        self.assertTrue(
            target.run().hasProperty(log_name),
            f"Expected input workspace to have a {log_name} run log")

        # When the workspace is converted to a scipp data array
        d = mantidcompat.convert_EventWorkspace_to_data_array(target, False)

        # Then the data array contains the run log as an unaligned coord
        self.assertTrue(
            np.allclose(target.run()[log_name].value,
                        d.attrs[log_name].values.data.values),
            "Expected values in the unaligned coord to match "
            "the original run log from the Mantid workspace")
        self.assertEqual(d.attrs[log_name].values.unit, sc.units.K)
        self.assertTrue(
            np.array_equal(target.run()[log_name].times.astype(np.int64),
                           d.attrs[log_name].values.coords["time"].values),
            "Expected times in the unaligned coord to match "
            "the original run log from the Mantid workspace")
Esempio n. 12
0
 def test_comparison(self):
     a = mantidcompat.convert_EventWorkspace_to_data_array(
         self.base_event_ws, load_pulse_times=False)
     b = a.copy()
     assert a == b