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")
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")
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"
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")
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))
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']