#pylint: disable=no-init,invalid-name,attribute-defined-outside-init import stresstesting from mantid.simpleapi import * from mantid.api import FileFinder import os def _skip_test(): """Helper function to determine if we run the test""" import platform # Only runs on RHEL6 at the moment return "Linux" not in platform.platform() def getSaveDir(): """determine where to save - the current working directory""" return os.path.abspath(os.path.curdir) def do_cleanup(): Files = ["PG3_9829.getn", "PG3_9829.gsa", "PG3_9829.py", "PG3_9830.gsa", "PG3_9830.py", "PG3_4844-1.dat", "PG3_4844.getn", "PG3_4844.gsa", "PG3_4844.py", "PG3_4866.gsa"] for filename in Files: absfile = FileFinder.getFullPath(filename) if os.path.exists(absfile): os.remove(absfile) return True class PG3Analysis(stresstesting.MantidStressTest): ref_file = 'PG3_4844_reference.gsa' cal_file = "PG3_FERNS_d4832_2011_08_24.cal" char_file = "PG3_characterization_2011_08_31-HR.txt" def skipTests(self): return _skip_test() def cleanup(self): do_cleanup() return True def requiredFiles(self): files = [self.ref_file, self.cal_file, self.char_file] files.append("PG3_4844_event.nxs") # /SNS/PG3/IPTS-2767/0/ files.append("PG3_4866_event.nxs") # /SNS/PG3/IPTS-2767/0/ files.append("PG3_5226_event.nxs") # /SNS/PG3/IPTS-2767/0/ return files def runTest(self): savedir = getSaveDir() # run the actual code SNSPowderReduction(Instrument="PG3", RunNumber=4844, Extension="_event.nxs", PreserveEvents=True, CalibrationFile=self.cal_file, CharacterizationRunsFile=self.char_file, LowResRef=15000, RemovePromptPulseWidth=50, Binning=-0.0004, BinInDspace=True, FilterBadPulses=95, SaveAs="gsas and fullprof and pdfgetn", OutputDirectory=savedir, FinalDataUnits="dSpacing") # load output gsas file and the golden one LoadGSS(Filename="PG3_4844.gsa", OutputWorkspace="PG3_4844") LoadGSS(Filename=self.ref_file, OutputWorkspace="PG3_4844_golden") def validateMethod(self): self.tolerance = 1.0e-2 return "ValidateWorkspaceToWorkspace" def validate(self): self.tolerance = 1.0e-2 return ('PG3_4844','PG3_4844_golden') class PG3StripPeaks(stresstesting.MantidStressTest): ref_file = 'PG3_4866_reference.gsa' cal_file = "PG3_FERNS_d4832_2011_08_24.cal" def skipTests(self): return _skip_test() def cleanup(self): do_cleanup() return True def requiredFiles(self): files = [self.ref_file, self.cal_file] files.append("PG3_4866_event.nxs") # vanadium return files def runTest(self): # determine where to save savedir = os.path.abspath(os.path.curdir) LoadEventNexus(Filename="PG3_4866_event.nxs", OutputWorkspace="PG3_4866", Precount=True) FilterBadPulses(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866") RemovePromptPulse(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Width=50) CompressEvents(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Tolerance=0.01) SortEvents(InputWorkspace="PG3_4866") CropWorkspace(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", XMax=16666.669999999998) LoadCalFile(InputWorkspace="PG3_4866", CalFilename=self.cal_file, WorkspaceName="PG3") MaskDetectors(Workspace="PG3_4866", MaskedWorkspace="PG3_mask") AlignDetectors(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", OffsetsWorkspace="PG3_offsets") ConvertUnits(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Target="TOF") UnwrapSNS(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", LRef=62) RemoveLowResTOF(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", ReferenceDIFC=1500) ConvertUnits(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Target="dSpacing") Rebin(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Params=(0.1,-0.0004,2.2)) SortEvents(InputWorkspace="PG3_4866") DiffractionFocussing(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", GroupingWorkspace="PG3_group") EditInstrumentGeometry(Workspace="PG3_4866", PrimaryFlightPath=60, SpectrumIDs=[1], L2=[3.2208], Polar=[90.8074], Azimuthal=[0]) ConvertUnits(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Target="TOF") Rebin(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Params=[-0.0004]) ConvertUnits(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Target="dSpacing") StripVanadiumPeaks(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", PeakPositionTolerance=0.05, FWHM=8, BackgroundType="Quadratic") ConvertUnits(InputWorkspace="PG3_4866", OutputWorkspace="PG3_4866", Target="TOF") SaveGSS(InputWorkspace="PG3_4866", Filename=os.path.join(savedir, "PG3_4866.gsa"), SplitFiles=False, Append=False, Format="SLOG", MultiplyByBinWidth=False, ExtendedHeader=True) # load output gsas file and the golden one LoadGSS(Filename="PG3_4866.gsa", OutputWorkspace="PG3_4866") LoadGSS(Filename=self.ref_file, OutputWorkspace="PG3_4866_golden") def validateMethod(self): self.tolerance = 1.0e-2 return "ValidateWorkspaceToWorkspace" def validate(self): self.tolerance = 1.0e-2 return ('PG3_4866','PG3_4866_golden') class SeriesAndConjoinFilesTest(stresstesting.MantidStressTest): cal_file = "PG3_FERNS_d4832_2011_08_24.cal" char_file = "PG3_characterization_2012_02_23-HR-ILL.txt" ref_files = ['PG3_9829_reference.gsa', 'PG3_9830_reference.gsa'] data_files = ['PG3_9829_event.nxs', 'PG3_9830_event.nxs'] def cleanup(self): do_cleanup() return True def requiredMemoryMB(self): """Requires 3Gb""" return 3000 def requiredFiles(self): files = [self.cal_file, self.char_file] files.extend(self.ref_files) files.extend(self.data_files) return files def runTest(self): savedir = getSaveDir() # reduce a sum of runs - and drop it SNSPowderReduction(Instrument="PG3", RunNumber=[9829,9830], Extension="_event.nxs", Sum=True, # This is the difference with the next call PreserveEvents=True, VanadiumNumber=-1, CalibrationFile=self.cal_file, CharacterizationRunsFile=self.char_file, LowResRef=15000, RemovePromptPulseWidth=50, Binning=-0.0004, BinInDspace=True, FilterBadPulses=True, SaveAs="gsas", OutputDirectory=savedir, FinalDataUnits="dSpacing") # reduce a series of runs SNSPowderReduction(Instrument="PG3", RunNumber=[9829,9830], Extension="_event.nxs", PreserveEvents=True, VanadiumNumber=-1, CalibrationFile=self.cal_file, CharacterizationRunsFile=self.char_file, LowResRef=15000, RemovePromptPulseWidth=50, Binning=-0.0004, BinInDspace=True, FilterBadPulses=True, SaveAs="gsas", OutputDirectory=savedir, FinalDataUnits="dSpacing") # needs to be set for ConjoinFiles to work config['default.facility'] = 'SNS' config['default.instrument'] = 'POWGEN' # load back in the resulting gsas files ConjoinFiles(RunNumbers=[9829,9830], OutputWorkspace='ConjoinFilesTest', Directory=savedir) # convert units makes sure the geometry was picked up ConvertUnits(InputWorkspace='ConjoinFilesTest', OutputWorkspace='ConjoinFilesTest', Target="dSpacing") # prepare for validation LoadGSS(Filename="PG3_9829.gsa", OutputWorkspace="PG3_9829") LoadGSS(Filename=self.ref_files[0], OutputWorkspace="PG3_4844_golden") #LoadGSS("PG3_9830.gsa", "PG3_9830") # can only validate one workspace #LoadGSS(self.ref_file[1], "PG3_9830_golden") def validateMethod(self): return None # it running is all that we need def validate(self): self.tolerance = 1.0e-2 return ('PG3_9829','PG3_9829_golden') #return ('PG3_9830','PG3_9830_golden') # can only validate one workspace class ToPDFgetNTest(stresstesting.MantidStressTest): cal_file = "PG3_FERNS_d4832_2011_08_24.cal" char_file = "PG3_characterization_2012_02_23-HR-ILL.txt" data_file = "PG3_9829_event.nxs" getn_file = "PG3_9829.getn" def cleanup(self): do_cleanup() return True def requiredMemoryMB(self): """Requires 3Gb""" return 3000 def requiredFiles(self): files = [self.cal_file, self.char_file, self.data_file] return files def runTest(self): savedir = getSaveDir() PDToPDFgetN(Filename=self.data_file, FilterBadPulses=25, OutputWorkspace=self.data_file, PDFgetNFile=os.path.join(savedir, self.getn_file), CalibrationFile=self.cal_file, CharacterizationRunsFile=self.char_file, RemovePromptPulseWidth=50, Binning=-.0004) def validateMethod(self): return None # it running is all that we need def validate(self): pass