def validateWorkspaces(self, valNames=None, mismatchName=None): """ Performs a check that two workspaces are equal using the CheckWorkspacesMatch algorithm. Loads one workspace from a nexus file if appropriate. Returns true if: the workspaces match OR the validate method has not been overridden. Returns false if the workspace do not match. The reason will be in the log. """ if valNames is None: valNames = self.validate() from mantid.simpleapi import SaveNexus, AlgorithmManager checker = AlgorithmManager.create("CheckWorkspacesMatch") checker.setLogging(True) checker.setPropertyValue("Workspace1", valNames[0]) checker.setPropertyValue("Workspace2", valNames[1]) checker.setPropertyValue("Tolerance", str(self.tolerance)) if hasattr(self, "tolerance_is_reller") and self.tolerance_is_reller: checker.setPropertyValue("ToleranceRelerr", "1") for d in self.disableChecking: checker.setPropertyValue("Check" + d, "0") checker.execute() if checker.getPropertyValue("Result") != "Success!": print self.__class__.__name__ if mismatchName: SaveNexus(InputWorkspace=valNames[0], Filename=self.__class__.__name__ + mismatchName + "-mismatch.nxs") else: SaveNexus(InputWorkspace=valNames[0], Filename=self.__class__.__name__ + "-mismatch.nxs") return False return True
def validateWorkspaces(self, valNames=None, mismatchName=None): ''' Performs a check that two workspaces are equal using the CompareWorkspaces algorithm. Loads one workspace from a nexus file if appropriate. Returns true if: the workspaces match OR the validate method has not been overridden. Returns false if the workspace do not match. The reason will be in the log. ''' if valNames is None: valNames = self.validate() checker = AlgorithmManager.create("CompareWorkspaces") checker.setLogging(True) checker.setPropertyValue("Workspace1", valNames[0]) checker.setPropertyValue("Workspace2", valNames[1]) checker.setProperty("Tolerance", float(self.tolerance)) if hasattr(self, 'tolerance_is_reller') and self.tolerance_is_reller: checker.setProperty("ToleranceRelerr", True) for d in self.disableChecking: checker.setProperty("Check"+d, False) checker.execute() if not checker.getProperty("Result").value: print(self.__class__.__name__) if mismatchName: SaveNexus(InputWorkspace=valNames[0], Filename=self.__class__.__name__+mismatchName+'-mismatch.nxs') else: SaveNexus(InputWorkspace=valNames[0], Filename=self.__class__.__name__+'-mismatch.nxs') return False return True
def test_incorrect_run_number(self): alg = AlgorithmManager.create('LoadElementalAnalysisData') alg.setChild(True) alg.initialize() alg.setProperty('Run', 1) alg.setProperty('GroupWorkspace', '1') errors = alg.validateInputs() self.assertTrue("Run" in errors) self.assertEquals(len(errors), 1) self.assertFalse(AnalysisDataService.doesExist("1"))
def run_reduction(input_workspace: EventWorkspace, workspace_name: str, settings_file: str, output_dir: str): # Run reduction # Get the angle angle = get_angle(input_workspace) params = find_angle_parameters_from_settings_json(settings_file, angle) alg = AlgorithmManager.create("ReflectometryISISLoadAndProcess") properties = { "InputRunList": workspace_name, "FirstTransmissionRunList": params.first_transmission_run_list, "SecondTransmissionRunList": params.second_transmission_run_list, "ThetaIn": angle, "DetectorCorrectionType": params.detector_correction_type, "MonitorBackgroundWavelengthMin": params.monitor_background_wavelength_min, "MonitorBackgroundWavelengthMax": params.monitor_background_wavelength_max, "MonitorIntegrationWavelengthMin": params.monitor_integration_wavelength_min, "MonitorIntegrationWavelengthMax": params.monitor_integration_wavelength_max, "WavelengthMin": params.wavelength_min, "WavelengthMax": params.wavelength_max, "I0MonitorIndex": params.i_zero_monitor_index, "AnalysisMode": params.analysis_mode, "StartOverlap": params.start_overlap, "EndOverlap": params.end_overlap, "ScaleRHSWorkspace": params.scale_rhs_workspace, "TransmissionProcessingInstructions": params.transmission_processing_instructions, "ProcessingInstructions": params.processing_instructions } alg.setProperties(properties) alg.execute() # Save reduced data as Nexus files OutputWorkspace = alg.getPropertyValue("OutputWorkspace") OutputWorkspaceBinned = alg.getPropertyValue("OutputWorkspaceBinned") SaveNexus(OutputWorkspace, os.path.join(output_dir, OutputWorkspace + ".nxs")) SaveNexus(OutputWorkspaceBinned, os.path.join(output_dir, OutputWorkspaceBinned + ".nxs")) # Save a copy of the .json settings file copy(settings_file, output_dir) return OutputWorkspaceBinned
def checkWorkspacesMatch(self, ws1, ws2): from mantid.simpleapi import SaveNexus, AlgorithmManager checker = AlgorithmManager.create("CheckWorkspacesMatch") checker.setLogging(True) checker.setPropertyValue("Workspace1", ws1) checker.setPropertyValue("Workspace2", ws2) checker.setPropertyValue("Tolerance", str(self.tolerance)) checker.setPropertyValue("CheckInstrument","0") checker.execute() if checker.getPropertyValue("Result") != 'Success!': print self.__class__.__name__ SaveNexus(InputWorkspace=ws2,Filename=self.__class__.__name__+'-mismatch.nxs') return False return True
def validate(self): results = 'SCDR_output' reference = 'SingleCrystalDiffuseReduction.nxs' Load(Filename=reference,OutputWorkspace=reference) checker = AlgorithmManager.create("CompareMDWorkspaces") checker.setLogging(True) checker.setPropertyValue("Workspace1",results) checker.setPropertyValue("Workspace2",reference) checker.setPropertyValue("Tolerance", "1e-7") checker.execute() if checker.getPropertyValue("Equals") != "1": print(" Workspaces do not match, result: ",checker.getPropertyValue("Result")) print(self.__class__.__name__) SaveMD(InputWorkspace=results,Filename=self.__class__.__name__+'-mismatch.nxs') return False return True
def validate(self): results = 'CMRSCMD_output_HKL' reference = 'ConvertMultipleRunsToSingleCrystalMD_HKL.nxs' Load(Filename=reference,OutputWorkspace=reference) checker = AlgorithmManager.create("CompareMDWorkspaces") checker.setLogging(True) checker.setPropertyValue("Workspace1",results) checker.setPropertyValue("Workspace2",reference) checker.setPropertyValue("Tolerance", "1e-5") checker.setPropertyValue("IgnoreBoxID", "1") checker.execute() if checker.getPropertyValue("Equals") != "1": print(" Workspaces do not match, result: ",checker.getPropertyValue("Result")) print(self.__class__.__name__) SaveMD(InputWorkspace=results,Filename=self.__class__.__name__+'-mismatch.nxs') return False return True