def test_addPeak_SpecialCoordinateSystem(self): r"""Verify we can add peaks in different coordinate systems""" pws = WorkspaceCreationHelper.createPeaksWorkspace( numPeaks=0, createOrientedLattice=True) pws.addPeak([1, 2, 3], SpecialCoordinateSystem.QLab) pws.addPeak([1, 2, 3], SpecialCoordinateSystem.QSample) pws.addPeak([1, 2, 3], SpecialCoordinateSystem.HKL)
def test_createPeakHKL(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(0, True) lattice = pws.mutableSample().getOrientedLattice() # Simple test that the creational method is exposed p = pws.createPeakHKL([1,1,1]) self.assertTrue(IPeak != None)
def test_peak_setQSampleFrame(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(1, True) p = pws.getPeak(0) try: p.setQSampleFrame(V3D(1, 1, 1)) except Exception: self.fail("Tried setQSampleFrame with one V3D argument") self.assertAlmostEquals(p.getQSampleFrame().X(), -1.4976057446828845, places=10) self.assertAlmostEquals(p.getQSampleFrame().Y(), 0.059904229787315376, places=10) self.assertAlmostEquals(p.getQSampleFrame().Z(), 1.4400957702126842, places=10) try: p.setQSampleFrame(V3D(1, 1, 1), 1) except Exception: self.fail( "Tried setQSampleFrame with one V3D argument and a double distance" ) self.assertAlmostEquals(p.getQSampleFrame().X(), 1.0, places=10) self.assertAlmostEquals(p.getQSampleFrame().Y(), 1.0, places=10) self.assertAlmostEquals(p.getQSampleFrame().Z(), 1.0, places=10)
def test_createPeakHKL(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(0, True) lattice = pws.mutableSample().getOrientedLattice() # Simple test that the creational method is exposed p = pws.createPeakHKL([1,1,1]) self.assertTrue(IPeak != None)
def test_sort_by_value_not_string(self): npeaks = 5 peaks_ws = WorkspaceCreationHelper.createPeaksWorkspace(npeaks) view = PeaksViewerView(None, None) model = PeaksViewerModel(peaks_ws, fg_color='r', bg_color='w') presenter = PeaksViewerPresenter(model, view) table_view = view.table_view table_model = table_view.model() # Very difficult to simulate mouse click to sort - trust Qt to do that # We are more interested that the sort is based on value no a string comparison # check a few columns for column_index in (7, 16): # tof & qlab table_model.sort(column_index, Qt.DescendingOrder) self.assertEqual(npeaks, view.table_view.rowCount()) # assert sort has happened col_values = [ table_model.index(i, column_index).data( PeaksWorkspaceDataPresenter.DATA_SORT_ROLE) for i in range(npeaks) ] self.assertTrue( all(col_values[i + 1] < col_values[i] for i in range(npeaks - 1)), msg="TOF values have not been sorted into descending order") view.close() del presenter
def test_peak_setQSampleFrame(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(1, True) p = pws.getPeak(0) try: p.setQSampleFrame(V3D(1,1,1)) except Exception: self.fail("Tried setQSampleFrame with one V3D argument") try: p.setQSampleFrame(V3D(1,1,1), 1) except Exception: self.fail("Tried setQSampleFrame with one V3D argument and a double distance")
def test_setCell_with_column_name(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(1, True) pws.setCell("h", 0, 1) pws.setCell("k", 0, 2) pws.setCell("l", 0, 3) pws.setCell("QLab", 0, V3D(1,1,1)) pws.setCell("QSample", 0, V3D(1,1,1)) self.assertEquals(pws.cell("h", 0), 1) self.assertEquals(pws.cell("k", 0), 2) self.assertEquals(pws.cell("l", 0), 3) self.assertEquals(pws.cell("QLab", 0), V3D(1,1,1)) self.assertEquals(pws.cell("QSample", 0), V3D(1,1,1))
def test_iteration_support(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(0, True) hkls = ([1, 1, 1], [2, 1, 1], [1, 2, 1]) for hkl in hkls: pws.addPeak(pws.createPeakHKL(hkl)) count = 0 for index, peak in enumerate(pws): count += 1 self.assertTrue(isinstance(peak, IPeak)) self.assertAlmostEqual(V3D(*hkls[index]), peak.getHKL()) self.assertEquals(len(hkls), count)
def test_setCell_with_column_name(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(1, True) pws.setCell("h", 0, 1) pws.setCell("k", 0, 2) pws.setCell("l", 0, 3) pws.setCell("QLab", 0, V3D(1,1,1)) pws.setCell("QSample", 0, V3D(1,1,1)) self.assertEquals(pws.cell("h", 0), 1) self.assertEquals(pws.cell("k", 0), 2) self.assertEquals(pws.cell("l", 0), 3) self.assertEquals(pws.cell("QLab", 0), V3D(1,1,1)) self.assertEquals(pws.cell("QSample", 0), V3D(1,1,1))
def test_peak_setQSampleFrame(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(1, True) p = pws.getPeak(0) try: p.setQSampleFrame(V3D(1, 1, 1)) except Exception: self.fail("Tried setQSampleFrame with one V3D argument") try: p.setQSampleFrame(V3D(1, 1, 1), 1) except Exception: self.fail( "Tried setQSampleFrame with one V3D argument and a double distance" )
def test_peak_setQLabFrame(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(1, True) p = pws.getPeak(0) try: p.setQLabFrame(V3D(1,1,1)) except Exception: self.fail("Tried setQLabFrame with one V3D argument") self.assertAlmostEquals( p.getQLabFrame().X(), 1.0, places=10) self.assertAlmostEquals( p.getQLabFrame().Y(), 1.0, places=10) self.assertAlmostEquals( p.getQLabFrame().Z(), 1.0, places=10) try: p.setQLabFrame(V3D(1,1,1), 1) except Exception: self.fail("Tried setQLabFrame with one V3D argument and a double distance") self.assertAlmostEquals( p.getQLabFrame().X(), 1.0, places=10) self.assertAlmostEquals( p.getQLabFrame().Y(), 1.0, places=10) self.assertAlmostEquals( p.getQLabFrame().Z(), 1.0, places=10)
def test_interface(self): """ Rudimentary test to get peak and get/set some values """ pws = WorkspaceCreationHelper.createPeaksWorkspace(1) self.assertTrue(isinstance(pws, IPeaksWorkspace)) self.assertEqual(pws.getNumberPeaks(), 1) p = pws.getPeak(0) # Try a few IPeak get/setters. Not everything. p.setH(234) self.assertEqual(p.getH(), 234) p.setHKL(5,6,7) self.assertEqual(p.getH(), 5) self.assertEqual(p.getK(), 6) self.assertEqual(p.getL(), 7) hkl = p.getHKL() self.assertEquals(hkl, V3D(5,6,7)) p.setIntensity(456) p.setSigmaIntensity(789) self.assertEqual(p.getIntensity(), 456) self.assertEqual(p.getSigmaIntensity(), 789) # Finally try to remove a peak pws.removePeak(0) self.assertEqual(pws.getNumberPeaks(), 0) # Create a new peak at some Q in the lab frame qlab = V3D(1,2,3) p = pws.createPeak(qlab, 1.54) p.getQLabFrame() self.assertAlmostEquals( p.getQLabFrame().X(), 1.0, 3) # Now try to add the peak back pws.addPeak(p) self.assertEqual(pws.getNumberPeaks(), 1) # Check that it is what we added to it p = pws.getPeak(0) self.assertAlmostEquals( p.getQLabFrame().X(), 1.0, 3) # Peaks workspace will not be integrated by default. self.assertTrue(not pws.hasIntegratedPeaks())
def test_interface(self): """ Rudimentary test to get peak and get/set some values """ pws = WorkspaceCreationHelper.createPeaksWorkspace(1) self.assertTrue(isinstance(pws, IPeaksWorkspace)) self.assertEqual(pws.getNumberPeaks(), 1) p = pws.getPeak(0) # Try a few IPeak get/setters. Not everything. p.setH(234) self.assertEqual(p.getH(), 234) p.setHKL(5,6,7) self.assertEqual(p.getH(), 5) self.assertEqual(p.getK(), 6) self.assertEqual(p.getL(), 7) hkl = p.getHKL() self.assertEquals(hkl, V3D(5,6,7)) p.setIntensity(456) p.setSigmaIntensity(789) self.assertEqual(p.getIntensity(), 456) self.assertEqual(p.getSigmaIntensity(), 789) # Finally try to remove a peak pws.removePeak(0) self.assertEqual(pws.getNumberPeaks(), 0) # Create a new peak at some Q in the lab frame qlab = V3D(1,2,3) p = pws.createPeak(qlab, 1.54) p.getQLabFrame() self.assertAlmostEquals( p.getQLabFrame().X(), 1.0, 3) # Now try to add the peak back pws.addPeak(p) self.assertEqual(pws.getNumberPeaks(), 1) # Check that it is what we added to it p = pws.getPeak(0) self.assertAlmostEquals( p.getQLabFrame().X(), 1.0, 3) # Peaks workspace will not be integrated by default. self.assertTrue(not pws.hasIntegratedPeaks())
def test_peak_setQLabFrame(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(1, True) p = pws.getPeak(0) try: p.setQLabFrame(V3D(1,1,1)) except Exception: self.fail("Tried setQLabFrame with one V3D argument") self.assertAlmostEquals( p.getQLabFrame().X(), 1.0, places=10) self.assertAlmostEquals( p.getQLabFrame().Y(), 1.0, places=10) self.assertAlmostEquals( p.getQLabFrame().Z(), 1.0, places=10) try: p.setQLabFrame(V3D(1,1,1), 1) except Exception: self.fail("Tried setQLabFrame with one V3D argument and a double distance") self.assertAlmostEquals( p.getQLabFrame().X(), 1.0, places=10) self.assertAlmostEquals( p.getQLabFrame().Y(), 1.0, places=10) self.assertAlmostEquals( p.getQLabFrame().Z(), 1.0, places=10)
def test_col_rol(self): pws = WorkspaceCreationHelper.createPeaksWorkspace(0, True) # Incident wavevector wavelength = 2.0 # Angstroms k = 2 * math.pi / wavelength ki = pws.getInstrument().getReferenceFrame().vecPointingAlongBeam() * k # Final Wavevector detector_id = 42 # column_id = 4, row_id = 2 kf = pws.componentInfo().position(detector_id) kf = kf * (k / kf.norm()) # Peak q_lab = ki - kf # inelastic convention peak = pws.createPeak(q_lab) pws.addPeak(peak) col, row = pws.row(0)['Col'], pws.row(0)['Row'] self.assertAlmostEqual(col, 4) self.assertAlmostEquals(row, 2)
def test_createPeakHKL(self): r"""Simple test that the creational method is exposed""" pws = WorkspaceCreationHelper.createPeaksWorkspace(0, True) p = pws.createPeakHKL([1, 1, 1]) self.assertFalse(p is None)