Skip to content
This repository has been archived by the owner on Apr 3, 2019. It is now read-only.

Commit

Permalink
Merge remote-tracking branch 'origin/feature/8284_fury_convfit_data_s…
Browse files Browse the repository at this point in the history
…elector'
  • Loading branch information
jawrainey committed Apr 30, 2014
2 parents cbc2281 + 4d6f923 commit 28a76f8
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 4 deletions.
102 changes: 98 additions & 4 deletions SystemTests/AnalysisTests/ISISIndirectInelastic.py
Expand Up @@ -12,7 +12,7 @@
from inelastic_indirect_reducer import IndirectReducer
from inelastic_indirect_reduction_steps import CreateCalibrationWorkspace
from IndirectEnergyConversion import resolution, slice
from IndirectDataAnalysis import elwin, msdfit, fury, furyfitSeq, confitSeq
from IndirectDataAnalysis import elwin, msdfit, fury, furyfitSeq, furyfitMult, confitSeq

'''
- TOSCA only supported by "Reduction" (the Energy Transfer tab of C2E).
Expand Down Expand Up @@ -621,9 +621,10 @@ def get_reference_files(self):

#==============================================================================
class ISISIndirectInelasticFuryAndFuryFit(ISISIndirectInelasticBase):
'''A base class for the ISIS indirect inelastic Fury/FuryFit tests
'''
A base class for the ISIS indirect inelastic Fury/FuryFit tests
The output of Elwin is usually used with MSDFit and so we plug one into
The output of Fury is usually used with FuryFit and so we plug one into
the other in this test.
'''
__metaclass__ = ABCMeta # Mark as an abstract class
Expand All @@ -636,6 +637,7 @@ def _run(self):
#load files into mantid
for sample in self.samples:
LoadNexus(sample, OutputWorkspace=sample)
LoadNexus(self.resolution, OutputWorkspace=self.resolution)

fury_ws = fury(self.samples,
self.resolution,
Expand All @@ -657,11 +659,13 @@ def _run(self):
Verbose=False)

self.result_names = [fury_ws[0],
furyfitSeq_ws.getName()]
furyfitSeq_ws]

#remove workspaces from mantid
for sample in self.samples:
DeleteWorkspace(sample)

DeleteWorkspace(self.resolution)

def _validate_properties(self):
"""Check the object properties are in an expected state to continue"""
Expand Down Expand Up @@ -708,6 +712,96 @@ def get_reference_files(self):
return ['II.IRISFury.nxs',
'II.IRISFuryFitSeq.nxs']

#==============================================================================
class ISISIndirectInelasticFuryAndFuryFitMulti(ISISIndirectInelasticBase):
'''A base class for the ISIS indirect inelastic Fury/FuryFit tests
The output of Elwin is usually used with MSDFit and so we plug one into
the other in this test.
'''
__metaclass__ = ABCMeta # Mark as an abstract class

def _run(self):
'''Defines the workflow for the test'''
self.tolerance = 1e-6
self.samples = [sample[:-4] for sample in self.samples]

#load files into mantid
for sample in self.samples:
LoadNexus(sample, OutputWorkspace=sample)
LoadNexus(self.resolution, OutputWorkspace=self.resolution)

fury_ws = fury(self.samples,
self.resolution,
self.rebin,
Save=False,
Verbose=False,
Plot=False)

"""TODO: Move Fury code to Python so that we can call it here."""

# Test FuryFit Sequential
furyfitSeq_ws = furyfitMult(fury_ws[0],
self.func,
self.ftype,
self.startx,
self.endx,
Save=False,
Plot='None',
Verbose=False)

self.result_names = [fury_ws[0],
furyfitSeq_ws]

#remove workspaces from mantid
for sample in self.samples:
DeleteWorkspace(sample)
DeleteWorkspace(self.resolution)

def _validate_properties(self):
"""Check the object properties are in an expected state to continue"""
# TODO!
pass

#------------------------- OSIRIS tests ---------------------------------------

class OSIRISFuryAndFuryFitMulti(ISISIndirectInelasticFuryAndFuryFitMulti):

def __init__(self):
ISISIndirectInelasticFuryAndFuryFitMulti.__init__(self)
# Fury
self.samples = ['osi97935_graphite002_red.nxs']
self.resolution = 'osi97935_graphite002_res.nxs'
self.rebin = '-0.400000,0.002000,0.400000'
# Fury Seq Fit
self.func = r'name=LinearBackground,A0=0.510595,A1=0,ties=(A1=0);name=UserFunction,Formula=Intensity*exp( -(x/Tau)^Beta),Intensity=0.489405,Tau=0.105559,Beta=1.61112e-14;ties=(f1.Intensity=1-f0.A0)'
self.ftype = '1E_s'
self.startx = 0.0
self.endx = 0.119681

def get_reference_files(self):
return ['II.OSIRISFury.nxs',
'II.OSIRISFuryFitMulti.nxs']

#------------------------- IRIS tests -----------------------------------------

class IRISFuryAndFuryFitMulti(ISISIndirectInelasticFuryAndFuryFitMulti):

def __init__(self):
ISISIndirectInelasticFuryAndFuryFitMulti.__init__(self)
# Fury
self.samples = ['irs53664_graphite002_red.nxs']
self.resolution = 'irs53664_graphite002_res.nxs'
self.rebin = '-0.400000,0.002000,0.400000'
# Fury Seq Fit
self.func = r'name=LinearBackground,A0=0.584488,A1=0,ties=(A1=0);name=UserFunction,Formula=Intensity*exp( -(x/Tau)^Beta),Intensity=0.415512,Tau=4.848013e-14,Beta=0.022653;ties=(f1.Intensity=1-f0.A0)'
self.ftype = '1S_s'
self.startx = 0.0
self.endx = 0.156250

def get_reference_files(self):
return ['II.IRISFury.nxs',
'II.IRISFuryFitMulti.nxs']

#==============================================================================
class ISISConvFit(ISISIndirectInelasticBase):
Expand Down
Binary file modified SystemTests/AnalysisTests/ReferenceResults/II.IRISFury.nxs
Binary file not shown.
Binary file not shown.
Binary file modified SystemTests/AnalysisTests/ReferenceResults/II.IRISFuryFitSeq.nxs
Binary file not shown.
Binary file modified SystemTests/AnalysisTests/ReferenceResults/II.OSIRISFury.nxs
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit 28a76f8

Please sign in to comment.