def test_model_MD(self): ws1 = Load("ILL/D22/192068.nxs") ws2 = Load("ENGINX00228061") md = CreateMDWorkspace(Dimensions=1, Extents='-1,1', Names='A', Units='U') md.addExperimentInfo(ws1) md.addExperimentInfo(ws2) model = SampleLogsModel(md) self.assertEqual(model.get_exp(), 0) self.assertEqual(model.get_name(), 'md') self.assertEqual(model.getNumExperimentInfo(), 2) values = model.get_log_display_values("duration") self.assertEqual(values[0], "duration") self.assertEqual(values[1], "number") self.assertEqual(values[2], "120.0") self.assertEqual(values[3], "Sec") # Change exp model.set_exp(1) self.assertEqual(model.get_exp(), 1) values = model.get_log_display_values("rb_proposal") self.assertEqual(values[0], "rb_proposal") self.assertEqual(values[1], "number") self.assertEqual(values[2], "1455001") self.assertEqual(values[3], "")
def runTest(self): HelperTestingClass.__init__(self) limits = (-10.0, 10.0, -9.0, 9.0) ws_nonrotho = CreateMDWorkspace( Dimensions=3, Extents=','.join([str(lim) for lim in limits]) + ',-8,8', Names='A,B,C', Units='r.l.u.,r.l.u.,r.l.u.', Frames='HKL,HKL,HKL') expt_info_nonortho = CreateSampleWorkspace() ws_nonrotho.addExperimentInfo(expt_info_nonortho) SetUB(ws_nonrotho, 1, 1, 2, 90, 90, 120) pres = SliceViewer(ws_nonrotho) # assert limits of orthog limits_orthog = pres.view.data_view.get_axes_limits() self.assertEqual(limits_orthog[0], limits[0:2]) self.assertEqual(limits_orthog[1], limits[2:]) # set nonorthog view and retrieve new limits pres.nonorthogonal_axes(True) limits_nonorthog = pres.view.data_view.get_axes_limits() self.assertAlmostEqual(limits_nonorthog[0][0], -19, delta=1e-5) self.assertAlmostEqual(limits_nonorthog[0][1], 19, delta=1e-5) self.assertEqual(limits_nonorthog[1], limits[2:]) pres.view.close()
def test_model_MD(self): ws1 = LoadEventNexus("CNCS_7860", MetaDataOnly=True) ws2 = LoadEventNexus("VIS_19351", MetaDataOnly=True) md = CreateMDWorkspace(Dimensions=1, Extents='-1,1', Names='A', Units='U') md.addExperimentInfo(ws1) md.addExperimentInfo(ws2) model = SampleLogsModel(md) self.assertEqual(model.get_exp(), 0) self.assertEqual(model.get_name(), 'md') self.assertEqual(model.getNumExperimentInfo(), 2) values = model.get_log_display_values("duration") self.assertEqual(values[0], "duration") self.assertEqual(values[1], "number") self.assertEqual(values[2], 148.0) self.assertEqual(values[3], "second") # Change exp model.set_exp(1) self.assertEqual(model.get_exp(), 1) values = model.get_log_display_values("duration") self.assertEqual(values[0], "duration") self.assertEqual(values[1], "number") self.assertEqual(values[2], 4.616606712341309) self.assertEqual(values[3], "second")
def create_hkl_ws(): hkl_ws = CreateMDWorkspace(Dimensions=3, Extents='-10,10,-9,9,-8,8', Names='A,B,C', Units='r.l.u.,r.l.u.,r.l.u.', Frames='HKL,HKL,HKL', OutputWorkspace='hkl_ws') expt_info = CreateSampleWorkspace() hkl_ws.addExperimentInfo(expt_info) SetUB(hkl_ws, 1, 1, 1, 90, 90, 90) return hkl_ws
def runTest(self): HelperTestingClass.__init__(self) ws_4D = CreateMDWorkspace(Dimensions=4, Extents=[-1, 1, -1, 1, -1, 1, -1, 1], Names="E,H,K,L", Frames='General Frame,HKL,HKL,HKL', Units='meV,r.l.u.,r.l.u.,r.l.u.') expt_info_4D = CreateSampleWorkspace() ws_4D.addExperimentInfo(expt_info_4D) SetUB(ws_4D, 1, 1, 2, 90, 90, 120) pres = SliceViewer(ws_4D) self._qapp.sendPostedEvents() non_ortho_action = toolbar_actions(pres, [ToolItemText.NONORTHOGONAL_AXES])[0] self.assertFalse(non_ortho_action.isEnabled()) pres.view.close()
def setUpClass(cls): cls.histo_ws = CreateMDHistoWorkspace( Dimensionality=3, Extents='-3,3,-10,10,-1,1', SignalInput=range(100), ErrorInput=range(100), NumberOfBins='5,5,4', Names='Dim1,Dim2,Dim3', Units='MomentumTransfer,EnergyTransfer,Angstrom', OutputWorkspace='ws_MD_2d') cls.histo_ws_positive = CreateMDHistoWorkspace( Dimensionality=3, Extents='-3,3,-10,10,-1,1', SignalInput=range(1, 101), ErrorInput=range(100), NumberOfBins='5,5,4', Names='Dim1,Dim2,Dim3', Units='MomentumTransfer,EnergyTransfer,Angstrom', OutputWorkspace='ws_MD_2d_pos') cls.hkl_ws = CreateMDWorkspace(Dimensions=3, Extents='-10,10,-9,9,-8,8', Names='A,B,C', Units='r.l.u.,r.l.u.,r.l.u.', Frames='HKL,HKL,HKL', OutputWorkspace='hkl_ws') expt_info = CreateSampleWorkspace() cls.hkl_ws.addExperimentInfo(expt_info) SetUB('hkl_ws', 1, 1, 1, 90, 90, 90)
def setUpClass(self): self.ws_MD_3D = CreateMDHistoWorkspace( Dimensionality=3, Extents='-3,3,-10,10,-1,1', SignalInput=range(100), ErrorInput=range(100), NumberOfBins='5,5,4', Names='Dim1,Dim2,Dim3', Units='MomentumTransfer,EnergyTransfer,Angstrom', OutputWorkspace='ws_MD_3D') self.ws_MDE_3D = CreateMDWorkspace(Dimensions='3', Extents='-3,3,-4,4,-5,5', Names='h,k,l', Units='rlu,rlu,rlu', SplitInto='4', OutputWorkspace='ws_MDE_3D') FakeMDEventData('ws_MDE_3D', PeakParams='100000,0,0,0,0.1', RandomSeed='63759', RandomizeSignal='1') FakeMDEventData('ws_MDE_3D', PeakParams='40000,1,0,0,0.1', RandomSeed='63759', RandomizeSignal='1') self.ws2d_histo = CreateWorkspace(DataX=[10, 20, 30, 10, 20, 30], DataY=[2, 3, 4, 5], DataE=[1, 2, 3, 4], NSpec=2, Distribution=True, UnitX='Wavelength', VerticalAxisUnit='DeltaE', VerticalAxisValues=[4, 6, 8], OutputWorkspace='ws2d_histo')
def runTest(self): HelperTestingClass.__init__(self) ws_non_ortho = CreateMDWorkspace(Dimensions='3', Extents='-6,6,-4,4,-0.5,0.5', Names='H,K,L', Units='r.l.u.,r.l.u.,r.l.u.', Frames='HKL,HKL,HKL', SplitInto='2', SplitThreshold='50') expt_info_nonortho = CreateSampleWorkspace() ws_non_ortho.addExperimentInfo(expt_info_nonortho) SetUB(ws_non_ortho, 1, 1, 2, 90, 90, 120) pres = SliceViewer(ws_non_ortho) ClearUB(ws_non_ortho) self._qapp.sendPostedEvents() self.assert_no_toplevel_widgets() self.assertEqual(pres.ads_observer, None)
def setUpClass(cls): """ Create fake workspaces, 3D and 2D """ # 3D DeltaPDF3DTest_MDE = CreateMDWorkspace(Dimensions='3', Extents='-3.1,3.1,-3.1,3.1,-3.1,3.1', Names='[H,0,0],[0,K,0],[0,0,L]', Units='rlu,rlu,rlu', SplitInto='4',Frames='HKL,HKL,HKL') # Add Bragg peaks for h in range(-3,4): for k in range(-3,4): for l in range(-3,4): FakeMDEventData(DeltaPDF3DTest_MDE, PeakParams='100,'+str(h)+','+str(k)+','+str(l)+',0.1', RandomSeed='1337') # Add addiontal peaks on [0.5,0.5,0.5] type positions # This would correspond to negative substitutional correlations for h in np.arange(-2.5,3): for k in np.arange(-2.5,3): for l in np.arange(-2.5,3): FakeMDEventData(DeltaPDF3DTest_MDE, PeakParams='20,'+str(h)+','+str(k)+','+str(l)+',0.1', RandomSeed='13337') BinMD(InputWorkspace='DeltaPDF3DTest_MDE', AlignedDim0='[H,0,0],-3.05,3.05,61', AlignedDim1='[0,K,0],-3.05,3.05,61', AlignedDim2='[0,0,L],-3.05,3.05,61', OutputWorkspace='DeltaPDF3DTest_MDH') # 2D DeltaPDF3DTest_MDE_2 = CreateMDWorkspace(Dimensions='3', Extents='-3.1,3.1,-3.1,3.1,-0.1,0.1', Names='[H,0,0],[0,K,0],[0,0,L]', Units='rlu,rlu,rlu', SplitInto='4',Frames='HKL,HKL,HKL') # Add Bragg peaks for h in range(-3,4): for k in range(-3,4): FakeMDEventData(DeltaPDF3DTest_MDE_2, PeakParams='100,'+str(h)+','+str(k)+',0,0.01', RandomSeed='1337') # Add addiontal peaks on [0.5,0.5,0.5] type positions # This would correspond to negative substitutional correlations for h in np.arange(-2.5,3): for k in np.arange(-2.5,3): FakeMDEventData(DeltaPDF3DTest_MDE_2, PeakParams='20,'+str(h)+','+str(k)+',0,0.1', RandomSeed='13337') BinMD(InputWorkspace='DeltaPDF3DTest_MDE_2', AlignedDim0='[H,0,0],-3.05,3.05,61', AlignedDim1='[0,K,0],-3.05,3.05,61', AlignedDim2='[0,0,L],-0.1,0.1,1', OutputWorkspace='DeltaPDF3DTest_MDH_2')
def test_mdhisto_workspace_q(self): from mantid.simpleapi import (CreateMDWorkspace, FakeMDEventData, BinMD) md_event = CreateMDWorkspace(Dimensions=3, Extents=[-10, 10, -10, 10, -10, 10], Names='Q_x,Q_y,Q_z', Units='U,U,U', Frames='QLab,QLab,QLab', StoreInADS=False) FakeMDEventData(InputWorkspace=md_event, PeakParams=[100000, 0, 0, 0, 1], StoreInADS=False) # Add Peak md_histo = BinMD(InputWorkspace=md_event, AlignedDim0='Q_y,-10,10,3', AlignedDim1='Q_x,-10,10,4', AlignedDim2='Q_z,-10,10,5', StoreInADS=False) histo_data_array = mantidcompat.convert_MDHistoWorkspace_to_data_array( md_histo) self.assertEqual(histo_data_array.coords[sc.Dim.Qx].values.shape, (4, )) self.assertEqual(histo_data_array.coords[sc.Dim.Qy].values.shape, (3, )) self.assertEqual(histo_data_array.coords[sc.Dim.Qz].values.shape, (5, )) self.assertEqual(histo_data_array.coords[sc.Dim.Qx].unit, sc.units.dimensionless / sc.units.angstrom) self.assertEqual(histo_data_array.coords[sc.Dim.Qy].unit, sc.units.dimensionless / sc.units.angstrom) self.assertEqual(histo_data_array.coords[sc.Dim.Qz].unit, sc.units.dimensionless / sc.units.angstrom) self.assertEquals(histo_data_array.values.shape, (3, 4, 5)) # Sum over 2 dimensions to simplify finding max. max_1d = sc.sum(sc.sum(histo_data_array, dim=sc.Dim.Qy), dim=sc.Dim.Qx).values max_index = np.argmax(max_1d) # Check position of max 'peak' self.assertEqual(np.floor(len(max_1d) / 2), max_index) # All events in central 'peak' self.assertEqual(100000, max_1d[max_index]) self.assertTrue('nevents' in histo_data_array.attrs)
def runTest(self): HelperTestingClass.__init__(self) def scale_ws(ws): ws = ws * 100 ws = CreateMDWorkspace(Dimensions='3', EventType='MDEvent', Extents='-10,10,-5,5,-1,1', Names='Q_lab_x,Q_lab_y,Q_lab_z', Units='1\\A,1\\A,1\\A') FakeMDEventData(ws, UniformParams="1000000") pres = SliceViewer(ws) self._assertNoErrorInADSHandlerFromSeparateThread(partial(scale_ws, ws)) self._qapp.sendPostedEvents() self.assertTrue(pres.view in self.find_widgets_of_type(str(type(pres.view)))) self.assertNotEqual(pres.ads_observer, None) pres.view.close()
def test_view_updates_on_replace_when_model_properties_dont_change_mdeventws( self): def scale_ws(ws): ws = ws * 100 ws = CreateMDWorkspace(Dimensions='3', EventType='MDEvent', Extents='-10,10,-5,5,-1,1', Names='Q_lab_x,Q_lab_y,Q_lab_z', Units='1\\A,1\\A,1\\A') FakeMDEventData(ws, UniformParams="1000000") pres = SliceViewer(ws) self._assertNoErrorInADSHandlerFromSeparateThread(partial( scale_ws, ws)) QApplication.sendPostedEvents() self.assertTrue( pres.view in self.find_widgets_of_type(str(type(pres.view)))) self.assertNotEqual(pres.ads_observer, None) pres.view.close()
def test_mdhisto_workspace_many_dims(self): from mantid.simpleapi import (CreateMDWorkspace, FakeMDEventData, BinMD) md_event = CreateMDWorkspace( Dimensions=4, Extents=[-10, 10, -10, 10, -10, 10, -10, 10], Names='deltae,y,z,T', Units='U,U,U,U', StoreInADS=False) FakeMDEventData(InputWorkspace=md_event, PeakParams=[100000, 0, 0, 0, 0, 1], StoreInADS=False) # Add Peak md_histo = BinMD(InputWorkspace=md_event, AlignedDim0='deltae,-10,10,3', AlignedDim1='y,-10,10,4', AlignedDim2='z,-10,10,5', AlignedDim3='T,-10,10,7', StoreInADS=False) histo_data_array = scn.mantid.convert_MDHistoWorkspace_to_data_array( md_histo) self.assertEqual(4, len(histo_data_array.dims))
def _setup_test(self) -> None: self._workspace_type = "MDWorkspace" CreateMDWorkspace(Dimensions="3", EventType="MDEvent", Extents='-10,10,-5,5,-1,1', Names="Q_lab_x,Q_lab_y,Q_lab_z", Units="1\\A,1\\A,1\\A", OutputWorkspace="ws")
def test_Q_Sample(self): md = CreateMDWorkspace(Dimensions=3, Extents='0,10,0,10,0,10', Names='x,y,z', Units='r.l.u.,r.l.u.,r.l.u.', Frames='QSample,QSample,QSample') pw_name = 'peaks_add_delete_test' CreatePeaksWorkspace(OutputType='LeanElasticPeak', NUmberOfPeaks=0, OutputWorkspace=pw_name) self.assertEqual(mtd[pw_name].getNumberPeaks(), 0) sliceViewer = SliceViewer(md) # select z=3.0 slice sliceViewer.view.dimensions.set_slicepoint((None, None, 3.0)) event = Mock(inaxes=True, xdata=1.0, ydata=2.0) sliceViewer.canvas_clicked(event) # nothing should happen since peaksviewer isn't active self.assertEqual(mtd[pw_name].getNumberPeaks(), 0) # overlay_peaks_workspaces sliceViewer._create_peaks_presenter_if_necessary( ).overlay_peaksworkspaces([pw_name]) sliceViewer.canvas_clicked(event) # nothing should happen since add/remove peak action not selected self.assertEqual(mtd[pw_name].getNumberPeaks(), 0) # click the "Add Peaks" button sliceViewer.view.peaks_view.peak_actions_view.ui.add_peaks_button.click( ) sliceViewer.canvas_clicked(event) # should add a peak at (1, 2, 3) # peak should now be added self.assertEqual(mtd[pw_name].getNumberPeaks(), 1) peak = mtd[pw_name].getPeak(0) q_sample = peak.getQSampleFrame() self.assertAlmostEqual(q_sample[0], 1.0, delta=1e-10) self.assertAlmostEqual(q_sample[1], 2.0, delta=1e-10) self.assertAlmostEqual(q_sample[2], 3.0, delta=1e-10) self.assertEqual(peak.getH(), 0) self.assertEqual(peak.getK(), 0) self.assertEqual(peak.getL(), 0) # change to x-z slice, y=4, check that the transform is working sliceViewer.view.dimensions.dims[2].y_clicked() sliceViewer.view.dimensions.set_slicepoint((None, 4.0, None)) sliceViewer.canvas_clicked(event) # should add a peak at (1, 4, 2) self.assertEqual(mtd[pw_name].getNumberPeaks(), 2) peak = mtd[pw_name].getPeak(1) q_sample = peak.getQSampleFrame() self.assertAlmostEqual(q_sample[0], 1.0, delta=1e-10) self.assertAlmostEqual(q_sample[1], 4.0, delta=1e-10) self.assertAlmostEqual(q_sample[2], 2.0, delta=1e-10) self.assertEqual(peak.getH(), 0) self.assertEqual(peak.getK(), 0) self.assertEqual(peak.getL(), 0) # click the "Remove Peaks" button sliceViewer.view.peaks_view.peak_actions_view.ui.remove_peaks_button.click( ) sliceViewer.view.dimensions.set_slicepoint((None, 0.0, None)) event = Mock(inaxes=True, xdata=1.0, ydata=1.0) sliceViewer.canvas_clicked( event) # should remove the peak closest to (1, 0, 1) self.assertEqual(mtd[pw_name].getNumberPeaks(), 1) # should be left with the seconds peak that was added peak = mtd[pw_name].getPeak(0) q_sample = peak.getQSampleFrame() self.assertAlmostEqual(q_sample[0], 1.0, delta=1e-10) self.assertAlmostEqual(q_sample[1], 4.0, delta=1e-10) self.assertAlmostEqual(q_sample[2], 2.0, delta=1e-10) self.assertEqual(peak.getH(), 0) self.assertEqual(peak.getK(), 0) self.assertEqual(peak.getL(), 0) # remove another peaks, should be none remaining sliceViewer.canvas_clicked( event) # should remove the peak closest to (1, 0, 1) self.assertEqual(mtd[pw_name].getNumberPeaks(), 0)
def runTest(self): # Na Mn Cl3 # R -3 H (148) # 6.592 6.592 18.585177 90 90 120 # UB/wavelength from /HFIR/HB3A/IPTS-25470/shared/autoreduce/HB3A_exp0769_scan0040.nxs ub = np.array([[1.20297e-01, 1.70416e-01, 1.43000e-04], [8.16000e-04, -8.16000e-04, 5.38040e-02], [1.27324e-01, -4.05110e-02, -4.81000e-04]]) wavelength = 1.553 # create fake MDEventWorkspace, similar to what is expected from exp769 after loading with HB3AAdjustSampleNorm MD_Q_sample = CreateMDWorkspace( Dimensions='3', Extents='-5,5,-5,5,-5,5', Names='Q_sample_x,Q_sample_y,Q_sample_z', Units='rlu,rlu,rlu', Frames='QSample,QSample,QSample') inst = LoadEmptyInstrument(InstrumentName='HB3A') AddTimeSeriesLog(inst, 'omega', '2010-01-01T00:00:00', 0.) AddTimeSeriesLog(inst, 'phi', '2010-01-01T00:00:00', 0.) AddTimeSeriesLog(inst, 'chi', '2010-01-01T00:00:00', 0.) MD_Q_sample.addExperimentInfo(inst) SetUB(MD_Q_sample, UB=ub) ol = OrientedLattice() ol.setUB(ub) sg = SpaceGroupFactory.createSpaceGroup("R -3") hkl = [] sat_hkl = [] for h in range(0, 6): for k in range(0, 6): for l in range(0, 11): if sg.isAllowedReflection([h, k, l]): if h == k == l == 0: continue q = V3D(h, k, l) q_sample = ol.qFromHKL(q) if not np.any(np.array(q_sample) > 5): hkl.append(q) FakeMDEventData( MD_Q_sample, PeakParams='1000,{},{},{},0.05'.format( *q_sample)) # satellite peaks at 0,0,+1.5 q = V3D(h, k, l + 1.5) q_sample = ol.qFromHKL(q) if not np.any(np.array(q_sample) > 5): sat_hkl.append(q) FakeMDEventData( MD_Q_sample, PeakParams='100,{},{},{},0.02'.format( *q_sample)) # satellite peaks at 0,0,-1.5 q = V3D(h, k, l - 1.5) q_sample = ol.qFromHKL(q) if not np.any(np.array(q_sample) > 5): sat_hkl.append(q) FakeMDEventData( MD_Q_sample, PeakParams='100,{},{},{},0.02'.format( *q_sample)) # Check that this fake workpsace gives us the expected UB peaks = FindPeaksMD(MD_Q_sample, PeakDistanceThreshold=1, OutputType='LeanElasticPeak') FindUBUsingFFT(peaks, MinD=5, MaxD=20) ShowPossibleCells(peaks) SelectCellOfType(peaks, CellType='Rhombohedral', Centering='R', Apply=True) OptimizeLatticeForCellType(peaks, CellType='Hexagonal', Apply=True) found_ol = peaks.sample().getOrientedLattice() self.assertAlmostEqual(found_ol.a(), 6.592, places=2) self.assertAlmostEqual(found_ol.b(), 6.592, places=2) self.assertAlmostEqual(found_ol.c(), 18.585177, places=2) self.assertAlmostEqual(found_ol.alpha(), 90) self.assertAlmostEqual(found_ol.beta(), 90) self.assertAlmostEqual(found_ol.gamma(), 120) # nuclear peaks predict = HB3APredictPeaks( MD_Q_sample, Wavelength=wavelength, ReflectionCondition='Rhombohedrally centred, obverse', SatellitePeaks=True, IncludeIntegerHKL=True) predict = HB3AIntegratePeaks(MD_Q_sample, predict, 0.25) self.assertEqual(predict.getNumberPeaks(), 66) # check that the found peaks are expected for n in range(predict.getNumberPeaks()): HKL = predict.getPeak(n).getHKL() self.assertTrue(HKL in hkl, msg=f"Peak {n} with HKL={HKL}") # magnetic peaks satellites = HB3APredictPeaks( MD_Q_sample, Wavelength=wavelength, ReflectionCondition='Rhombohedrally centred, obverse', SatellitePeaks=True, ModVector1='0,0,1.5', MaxOrder=1, IncludeIntegerHKL=False) satellites = HB3AIntegratePeaks(MD_Q_sample, satellites, 0.1) self.assertEqual(satellites.getNumberPeaks(), 80) # check that the found peaks are expected for n in range(satellites.getNumberPeaks()): HKL = satellites.getPeak(n).getHKL() self.assertTrue(HKL in sat_hkl, msg=f"Peak {n} with HKL={HKL}")
def runTest(self): # Load Empty Instrument ws = LoadEmptyInstrument(InstrumentName='WISH', OutputWorkspace='WISH') axis = ws.getAxis(0) axis.setUnit("TOF") # need this to add peak to table # CreatePeaksWorkspace with peaks in specific detectors peaks = CreatePeaksWorkspace(InstrumentWorkspace=ws, NumberOfPeaks=0, OutputWorkspace='peaks') AddPeak(PeaksWorkspace=peaks, RunWorkspace=ws, TOF=20000, DetectorID=1707204, Height=521, BinCount=0) # pixel in first tube in panel 1 AddPeak(PeaksWorkspace=peaks, RunWorkspace=ws, TOF=20000, DetectorID=1400510, Height=1, BinCount=0) # pixel at top of a central tube in panel 1 AddPeak(PeaksWorkspace=peaks, RunWorkspace=ws, TOF=20000, DetectorID=1408202, Height=598, BinCount=0) # pixel in middle of bank 1 (not near edge) AddPeak(PeaksWorkspace=peaks, RunWorkspace=ws, TOF=20000, DetectorID=1100173, Height=640, BinCount=0) # pixel in last tube of panel 1 (next to panel 2) # create dummy MD workspace for integration (don't need data as checking peak shape) MD = CreateMDWorkspace(Dimensions='3', Extents='-1,1,-1,1,-1,1', Names='Q_lab_x,Q_lab_y,Q_lab_z', Units='U,U,U', Frames='QLab,QLab,QLab', SplitInto='2', SplitThreshold='50') # Integrate peaks masking all pixels at tube end (built into IntegratePeaksMD) self._peaks_pixels = IntegratePeaksMD(InputWorkspace=MD, PeakRadius='0.02', PeaksWorkspace=peaks, IntegrateIfOnEdge=False, OutputWorkspace='peaks_pixels', MaskEdgeTubes=False) # Apply masking to specific tubes next to beam in/out (subset of all edge tubes) and integrate again MaskBTP(Workspace='peaks', Bank='5-6', Tube='152') MaskBTP(Workspace='peaks', Bank='1,10', Tube='1') self._peaks_pixels_beamTubes = IntegratePeaksMD( InputWorkspace='MD', PeakRadius='0.02', PeaksWorkspace=peaks, IntegrateIfOnEdge=False, OutputWorkspace='peaks_pixels_beamTubes', MaskEdgeTubes=False) # Integrate masking all edge tubes self._peaks_pixels_edgeTubes = IntegratePeaksMD( InputWorkspace='MD', PeakRadius='0.02', PeaksWorkspace='peaks', IntegrateIfOnEdge=False, OutputWorkspace='peaks_pixels_edgeTubes', MaskEdgeTubes=True)
def test_add_experiment_info(self): ws1 = CreateSampleWorkspace() md = CreateMDWorkspace(Dimensions=1, Extents='-1,1', Names='A', Units='U') md.addExperimentInfo(ws1)
with h5py.File(filename, 'r') as f_in: bc = np.zeros((pixels), dtype=np.int64) for b in range(8): bc += np.bincount(f_in['/entry/bank' + str(b + 1) + '_events/event_id'].value, minlength=pixels) bc = bc.reshape((-1, 512)).T data_array[n] = bc phi_array[n] = f_in[ 'entry/DASlogs/HB2C:Mot:s1.RBV/average_value'].value[0] t1 = time.time() print(t1 - t0) print(data_array.shape) mdws = CreateMDWorkspace(Dimensions=3, Extents='-10,10,-10,10,-10,10', Names='A,B,C', Units='U,U,U') t2 = time.time() binned_ws = BinMD(InputWorkspace=mdws, AlignedDim0='A,0,10,1801', AlignedDim1='B,-10,10,512', AlignedDim2='C,-10,10,3840') t3 = time.time() binned_ws.setSignalArray(data_array) t4 = time.time() print(t2 - t1) print(t3 - t2) print(t4 - t3)
def test_HKL(self): md = CreateMDWorkspace(Dimensions=3, Extents='0,10,0,10,0,10', Names='H,K,L', Units='r.l.u.,r.l.u.,r.l.u.', Frames='HKL,HKL,HKL') pw_name = 'peaks_add_delete_test' CreatePeaksWorkspace(OutputType='LeanElasticPeak', NUmberOfPeaks=0, OutputWorkspace=pw_name) SetUB(pw_name, 2 * np.pi, 2 * np.pi, 4 * np.pi, u='0,0,1', v='1,0,0') self.assertEqual(mtd[pw_name].getNumberPeaks(), 0) sliceViewer = SliceViewer(md) # select z=3.0 slice sliceViewer.view.dimensions.set_slicepoint((None, None, 3.0)) # overlay_peaks_workspaces sliceViewer._create_peaks_presenter_if_necessary( ).overlay_peaksworkspaces([pw_name]) # click the "Add Peaks" button sliceViewer.view.peaks_view.peak_actions_view.ui.add_peaks_button.click( ) # click on 3 different points on the canvas sliceViewer.canvas_clicked( Mock(inaxes=True, xdata=1.0, ydata=2.0)) # should add a peak at HKL=(1, 2, 3) sliceViewer.canvas_clicked( Mock(inaxes=True, xdata=2.0, ydata=2.0)) # should add a peak at HKL=(2, 2, 3) sliceViewer.canvas_clicked( Mock(inaxes=True, xdata=1.5, ydata=1.5)) # should add a peak at HKL=(1.5, 1.5, 3) # peaks should be added self.assertEqual(mtd[pw_name].getNumberPeaks(), 3) # (1, 2, 3) peak = mtd[pw_name].getPeak(0) q_sample = peak.getQSampleFrame() self.assertAlmostEqual(q_sample[0], 1.0, delta=1e-10) self.assertAlmostEqual(q_sample[1], 2.0, delta=1e-10) self.assertAlmostEqual(q_sample[2], 1.5, delta=1e-10) self.assertAlmostEqual(peak.getH(), 1, delta=1e-10) self.assertAlmostEqual(peak.getK(), 2, delta=1e-10) self.assertAlmostEqual(peak.getL(), 3, delta=1e-10) # (2, 2, 3) peak = mtd[pw_name].getPeak(1) q_sample = peak.getQSampleFrame() self.assertAlmostEqual(q_sample[0], 2.0, delta=1e-10) self.assertAlmostEqual(q_sample[1], 2.0, delta=1e-10) self.assertAlmostEqual(q_sample[2], 1.5, delta=1e-10) self.assertAlmostEqual(peak.getH(), 2, delta=1e-10) self.assertAlmostEqual(peak.getK(), 2, delta=1e-10) self.assertAlmostEqual(peak.getL(), 3, delta=1e-10) # (1.5, 1.5, 3) peak = mtd[pw_name].getPeak(2) q_sample = peak.getQSampleFrame() self.assertAlmostEqual(q_sample[0], 1.5, delta=1e-10) self.assertAlmostEqual(q_sample[1], 1.5, delta=1e-10) self.assertAlmostEqual(q_sample[2], 1.5, delta=1e-10) self.assertAlmostEqual(peak.getH(), 1.5, delta=1e-10) self.assertAlmostEqual(peak.getK(), 1.5, delta=1e-10) self.assertAlmostEqual(peak.getL(), 3, delta=1e-10) # click the "Remove Peaks" button sliceViewer.view.peaks_view.peak_actions_view.ui.remove_peaks_button.click( ) sliceViewer.canvas_clicked(Mock( inaxes=True, xdata=2.0, ydata=1.9)) # should remove the peak closest to HKL=(2, 1.9, 3) self.assertEqual(mtd[pw_name].getNumberPeaks(), 2) # should have deleted the (2, 2, 3) peak, leaving (1, 2, 3) and (1.5, 1.5, 3) # (1, 2, 3) peak = mtd[pw_name].getPeak(0) q_sample = peak.getQSampleFrame() self.assertAlmostEqual(q_sample[0], 1.0, delta=1e-10) self.assertAlmostEqual(q_sample[1], 2.0, delta=1e-10) self.assertAlmostEqual(q_sample[2], 1.5, delta=1e-10) self.assertAlmostEqual(peak.getH(), 1, delta=1e-10) self.assertAlmostEqual(peak.getK(), 2, delta=1e-10) self.assertAlmostEqual(peak.getL(), 3, delta=1e-10) # (1.5, 1.5, 3) peak = mtd[pw_name].getPeak(1) q_sample = peak.getQSampleFrame() self.assertAlmostEqual(q_sample[0], 1.5, delta=1e-10) self.assertAlmostEqual(q_sample[1], 1.5, delta=1e-10) self.assertAlmostEqual(q_sample[2], 1.5, delta=1e-10) self.assertAlmostEqual(peak.getH(), 1.5, delta=1e-10) self.assertAlmostEqual(peak.getK(), 1.5, delta=1e-10) self.assertAlmostEqual(peak.getL(), 3, delta=1e-10)