Example #1
0
 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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
 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)
Example #5
0
    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
Example #6
0
 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")
Example #7
0
    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))
Example #8
0
    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))
Example #10
0
    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"
            )
Example #11
0
    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)
Example #12
0
    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())
Example #13
0
    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)
Example #15
0
    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)
Example #16
0
 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)