Exemplo n.º 1
0
    def validate(self):
        self.tolerance_is_rel_err = True
        self.tolerance = 5e-2

        # this is neccesary due to appendspectra creating spectrum numbers of 0
        self.disableChecking.append('SpectraMap')
        if systemtesting.using_gsl_v1():
            return ("engg_calibration_bank_1",
                    "engggui_calibration_bank_1_gsl1.nxs",
                    "engg_calibration_bank_2",
                    "engggui_calibration_bank_2_gsl1.nxs",
                    "engg_calibration_banks_parameters",
                    "engggui_calibration_banks_parameters_gsl1.nxs",
                    "Engg difc Zero Peaks Bank 1",
                    "engggui_difc_zero_peaks_bank_1.nxs",
                    "Engg difc Zero Peaks Bank 2",
                    "engggui_difc_zero_peaks_bank_2.nxs")
        else:
            return ("engg_calibration_bank_1",
                    "engggui_calibration_bank_1.nxs",
                    "engg_calibration_bank_2",
                    "engggui_calibration_bank_2.nxs",
                    "engg_calibration_banks_parameters",
                    "engggui_calibration_banks_parameters.nxs",
                    "Engg difc Zero Peaks Bank 1",
                    "engggui_difc_zero_peaks_bank_1.nxs",
                    "Engg difc Zero Peaks Bank 2",
                    "engggui_difc_zero_peaks_bank_2.nxs")
Exemplo n.º 2
0
    def validate(self):
        self.tolerance_is_rel_err = True
        self.tolerance = 1e-2

        # this is neccesary due to appendspectra creating spectrum numbers of 0
        self.disableChecking.append('SpectraMap')
        # fitted peaks table workspace is v sensitive to changes in input data so just validate X0 col
        if systemtesting.using_gsl_v1():
            reffile = simple.LoadNexus(
                Filename="engggui_calibration_bank_cropped_gsl1.nxs")
            self.validateSingleColumn(mtd["cropped"].column("X0"),
                                      reffile.column("X0"), self.tolerance)
            return ("engg_calibration_banks_parameters",
                    "engggui_calibration_cropped_parameters_gsl1.nxs",
                    "Engg difc Zero Peaks Bank cropped",
                    "engggui_difc_zero_peaks_bank_cropped_gsl1.nxs")
        else:
            reffile = simple.LoadNexus(
                Filename="engggui_calibration_bank_cropped.nxs")
            self.validateSingleColumn(mtd["cropped"].column("X0"),
                                      reffile.column("X0"), self.tolerance)
            return ("engg_calibration_banks_parameters",
                    "engggui_calibration_bank_cropped_parameters.nxs",
                    "Engg difc Zero Peaks Bank cropped",
                    "engggui_difc_zero_peaks_bank_cropped.nxs")
Exemplo n.º 3
0
 def validate(self):
     self.tolerance = 1e-5
     if systemtesting.using_gsl_v1():
         return self.focus_results.name(
         ), "ISIS_Powder-GEM87618_groupedGSAS1.nxs"
     else:
         return self.focus_results.name(
         ), "ISIS_Powder-GEM87618_grouped.nxs"
Exemplo n.º 4
0
 def validate(self):
     self.tolerance = 3
     self.checkInstrument = False
     if systemtesting.using_gsl_v1():
         return ("engg_focus_output_bank_1",
                 "engg_focusing_output_ws_bank_1_gsl1.nxs",
                 "engg_focus_output_bank_2",
                 "engg_focusing_output_ws_bank_2_gsl1.nxs")
     else:
         return ("engg_focus_output_bank_1",
                 "engg_focusing_output_ws_bank_1.nxs",
                 "engg_focus_output_bank_2",
                 "engg_focusing_output_ws_bank_2.nxs")
Exemplo n.º 5
0
    def validate(self):
        # === check detector positions table produced by EnggCalibrateFull
        self.assertTrue(self.pos_table)
        self.assertEqual(self.pos_table.columnCount(), 10)
        self.assertEqual(self.pos_table.rowCount(), 1200)
        self.assertEqual(self.pos_table.cell(88, 0), 100089)  # det ID
        self.assertEqual(self.pos_table.cell(200, 0), 101081)  # det ID
        self.assertEqual(self.pos_table.cell(88, 0), 100089)  # det ID

        # The output table of peak parameters has the expected structure
        self.assertEqual(self.peaks_info.rowCount(), 1200)
        self.assertEqual(self.peaks_info.columnCount(), 2)
        self.assertEqual(self.peaks_info.keys(), ['Detector ID', 'Parameters'])
        self.assertEqual(self.peaks_info.cell(10, 0), 100011)
        self.assertEqual(self.peaks_info.cell(100, 0), 100101)
        self.assertEqual(self.peaks_info.cell(123, 0), 101004)
        self.assertEqual(self.peaks_info.cell(517, 0), 104038)
        self.assertEqual(self.peaks_info.cell(987, 0), 108028)
        self.assertEqual(self.peaks_info.cell(1000, 0), 108041)
        for idx in [0, 12, 516, 789, 891, 1112]:
            cell_val = self.peaks_info.cell(idx, 1)
            self.assertTrue(isinstance(cell_val, str))
            self.assertEqual(cell_val[-2:], '}}')

        # this will be used as a comparison delta in relative terms (percentage)
        exdelta_special = 5e-3
        # Mac fitting tests produce large differences for some reason.
        # Windows results are different but within reasonable bounds
        import sys
        if "darwin" == sys.platform:
            # Some tests need a bigger delta
            exdelta_special = 1e-1

        # Note that the reference values are given with 12 digits more for reference than
        # for assert-comparison purposes (comparisons are not that picky, by far)
        single_spectrum_delta = 5e-3
        self.assertTrue(rel_err_less_delta(self.pos_table.cell(400, 4), 1.65264105797, single_spectrum_delta))
        self.assertTrue(rel_err_less_delta(self.pos_table.cell(200, 5), -0.296705961227, single_spectrum_delta))
        if systemtesting.using_gsl_v1():  # Different fitting for gsl_v1 (RHEL 7)
            self.assertTrue(rel_err_less_delta(self.pos_table.cell(100, 3), 1.73157775402, single_spectrum_delta))
            # DIFA column
            self.assertTrue(rel_err_less_delta(self.pos_table.cell(133, 7), -27.229156494, single_spectrum_delta))
            # DIFC column
            self.assertTrue(rel_err_less_delta(self.pos_table.cell(610, 8), 18684.5429688, single_spectrum_delta))
            # TZERO column
            self.assertTrue(abs(self.pos_table.cell(1199, 9)) < 20)

            # === check difc, zero parameters for GSAS produced by EnggCalibrate
            # Bank 1
            self.assertTrue(rel_err_less_delta(self.difa, 19.527099828, exdelta_special),
                            "difa parameter for bank 1 is not what was expected, got: %f" % self.difa)
            self.assertTrue(rel_err_less_delta(self.difc, 18383.536587, exdelta_special),
                            "difc parameter for bank 1 is not what was expected, got: %f" % self.difc)
            if "darwin" != sys.platform:
                self.assertTrue(abs(self.zero) < 40,
                                "zero parameter for bank 1 is not what was expected, got: %f" % self.zero)

            # Bank 2
            self.assertTrue(rel_err_less_delta(self.difa_b2, -2.9592743210, exdelta_special),
                            "difa parameter for bank 2 is not what was expected, got: %f" % self.difa_b2)
            self.assertTrue(rel_err_less_delta(self.difc_b2, 18401.514556, exdelta_special),
                            "difc parameter for bank 2 is not what was expected, got: %f" % self.difc_b2)
            if "darwin" != sys.platform:
                self.assertTrue(abs(self.zero_b2) < 20,
                                "zero parameter for bank 2 is not what was expected, got: %f" % self.zero_b2)
        else:
            self.assertTrue(rel_err_less_delta(self.pos_table.cell(100, 3), 1.68769443035, single_spectrum_delta))
            # DIFA column
            self.assertTrue(rel_err_less_delta(self.pos_table.cell(133, 7), -18.6453819275, single_spectrum_delta))
            # DIFC column
            self.assertTrue(rel_err_less_delta(self.pos_table.cell(610, 8), 18684.5429688, single_spectrum_delta))
            # TZERO column
            self.assertTrue(abs(self.pos_table.cell(1199, 9)) < 15)

            # === check difc, zero parameters for GSAS produced by EnggCalibrate
            if sys.platform == "win32":  # Windows performs the fit differently enough to cause problems.
                # Bank 1
                self.assertTrue(rel_err_less_delta(self.difa, 2.31176809660, exdelta_special),
                                "difa parameter for bank 1 is not what was expected, got: %f" % self.difa)
                self.assertTrue(rel_err_less_delta(self.difc, 18440.6101707, exdelta_special),
                                "difc parameter for bank 1 is not what was expected, got: %f" % self.difc)
                self.assertTrue(abs(self.zero) < 40,
                                "zero parameter for bank 1 is not what was expected, got: %f" % self.zero)

                # Bank 2
                self.assertTrue(rel_err_less_delta(self.difa_b2, 3.92202365197, exdelta_special),
                                "difa parameter for bank 2 is not what was expected, got: %f" % self.difa_b2)
                self.assertTrue(rel_err_less_delta(self.difc_b2, 18382.7105214, exdelta_special),
                                "difc parameter for bank 2 is not what was expected, got: %f" % self.difc_b2)
                self.assertTrue(abs(self.zero_b2) < 10,
                                "zero parameter for bank 2 is not what was expected, got: %f" % self.zero_b2)
            else:
                # Bank 1
                self.assertTrue(rel_err_less_delta(self.difa, 2.3265842459, exdelta_special),
                                "difa parameter for bank 1 is not what was expected, got: %f" % self.difa)
                self.assertTrue(rel_err_less_delta(self.difc, 18440.5718578, exdelta_special),
                                "difc parameter for bank 1 is not what was expected, got: %f" % self.difc)
                if "darwin" != sys.platform:
                    self.assertTrue(abs(self.zero) < 40,
                                    "zero parameter for bank 1 is not what was expected, got: %f" % self.zero)

                # Bank 2
                self.assertTrue(rel_err_less_delta(self.difa_b2, 3.9220236519, exdelta_special),
                                "difa parameter for bank 2 is not what was expected, got: %f" % self.difa_b2)
                self.assertTrue(rel_err_less_delta(self.difc_b2, 18382.7105215, exdelta_special),
                                "difc parameter for bank 2 is not what was expected, got: %f" % self.difc_b2)
                if "darwin" != sys.platform:
                    self.assertTrue(abs(self.zero_b2) < 10,
                                    "zero parameter for bank 2 is not what was expected, got: %f" % self.zero_b2)

        # === peaks used to fit the difc and zero parameters ===
        expected_peaks = [1.1046, 1.3528, 1.5621, 1.6316, 2.7057]
        # Note that CalibrateFull is not applied on bank 2. These peaks are not too difficult and
        # fitted successfully though (but note the increased DIFC).
        self.assertEqual(len(self.peaks), len(expected_peaks))
        self.assertEqual(len(self.peaks_b2), len(expected_peaks))
        self.assertEqual(self.peaks, expected_peaks)
        self.assertEqual(self.peaks_b2, expected_peaks)
        self.assertEqual(len(self.peaks_fitted), len(expected_peaks))
        self.assertEqual(len(self.peaks_fitted_b2), len(expected_peaks))

        # Check that the individual peaks do not deviate too much from the fitted
        # straight line
        for fit1, expected in zip(self.peaks_fitted, self.peaks):
            REF_COEFF_B1 = 18405
            self.assertTrue(rel_err_less_delta(fit1 / expected, REF_COEFF_B1, 5e-2))

        for fit2, expected_b2 in zip(self.peaks_fitted_b2, self.peaks_b2):
            REF_COEFF_B2 = 18385
            self.assertTrue(rel_err_less_delta(fit2 / expected_b2, REF_COEFF_B2, 5e-2))
Exemplo n.º 6
0
 def get_reference_files(self):
     self.tolerance = 0.2
     # gsl v2 gives a slightly different result than v1
     return ['II.IRISConvFitSeq.nxs'
             ] if using_gsl_v1() else ['II.IRISConvFitSeq_gslv2.nxs']