def setUpClass(cls): delta = 0.33 x = np.linspace(0., 15., 100) x_offset = np.linspace(delta / 2, 15. + delta / 2, 100) x_offset_neg = np.linspace(-delta / 2, 15. - delta / 2, 100) testFunction = GausOsc(Frequency=1.5, A=0.22) y1 = testFunction(x_offset_neg) y2 = testFunction(x_offset) y = y1 / 2 + y2 / 2 ws = CreateWorkspace(x, y) convolution = FunctionFactory.createCompositeFunction('Convolution') innerFunction = FunctionFactory.createInitialized('name=GausOsc,A=0.2,Sigma=0.2,Frequency=1,Phi=0') deltaFunctions = FunctionFactory.createInitialized( '(name=DeltaFunction,Height=0.5,Centre={},ties=(Height=0.5,Centre={});name=DeltaFunction,Height=0.5,' 'Centre={},ties=(Height=0.5,Centre={}))'.format( -delta / 2, -delta / 2, delta / 2, delta / 2)) convolution.setAttributeValue('FixResolution', False) convolution.add(innerFunction) convolution.add(deltaFunctions) MultiDomainSingleFunction = FunctionFactory.createInitializedMultiDomainFunction( 'name=GausOsc,A=0.2,Sigma=0.2,Frequency=1,Phi=0', 2) MultiDomainConvolutionFunction = FunctionFactory.createInitializedMultiDomainFunction(str(convolution), 2) DoublePulseFit(Function=MultiDomainSingleFunction, InputWorkspace=ws, InputWorkspace_1=ws, CreateOutput=True, PulseOffset=delta, StartX=0.0, EndX=15.0, Output='DoublePulseFit', MaxIterations=1) Fit(Function=MultiDomainConvolutionFunction, InputWorkspace=ws, InputWorkspace_1=ws, CreateOutput=True, StartX=0.0, EndX=15.0, Output='Fit', MaxIterations=1)
def setUp(self): context = setup_context() self.model = GeneralFittingModel(context, context.fitting_context) self.dataset_names = ["Name1", "Name2"] self.fit_function = FunctionFactory.createFunction("FlatBackground") self.single_fit_functions = [self.fit_function.clone(), self.fit_function.clone()] self.simultaneous_fit_function = FunctionFactory.createInitializedMultiDomainFunction(str(self.fit_function), len(self.dataset_names))
def setUp(self): context = setup_context() self.model = TFAsymmetryFittingModel(context, context.fitting_context) self.dataset_names = [ "EMU20884; Group; fwd; Asymmetry", "EMU20884; Group; top; Asymmetry" ] self.tf_non_compliant_dataset_names = [ "EMU20884; Group; fwd; Asymmetry", "EMU20884; Pair Asym; long; Asymmetry" ] self.fit_function = FunctionFactory.createFunction("FlatBackground") self.single_fit_functions = [ self.fit_function.clone(), self.fit_function.clone() ] self.simultaneous_fit_function = FunctionFactory.createInitializedMultiDomainFunction( str(self.fit_function), len(self.dataset_names)) self.tf_single_function = create_tf_asymmetry_function( self.fit_function.clone()) self.tf_single_fit_functions = [ self.tf_single_function.clone(), self.tf_single_function.clone() ] self.tf_simultaneous_fit_function = FunctionFactory.createInitializedMultiDomainFunction( str(self.tf_single_function), len(self.dataset_names)) CreateSampleWorkspace(Function="One Peak", XMin=0.0, XMax=15.0, BinWidth=0.1, OutputWorkspace=self.dataset_names[0]) CreateSampleWorkspace(Function="One Peak", XMin=0.0, XMax=15.0, BinWidth=0.1, OutputWorkspace=self.dataset_names[1])
def test_that_update_attribute_value_will_update_the_value_of_a_parameter_in_simultaneous_fit_mode(self): self.model.dataset_names = self.dataset_names self.fit_function = FunctionFactory.createFunction("Chebyshev") self.model.simultaneous_fit_function = FunctionFactory.createInitializedMultiDomainFunction( str(self.fit_function), len(self.dataset_names)) self.model.simultaneous_fitting_mode = True self.model.current_dataset_index = 1 self.model.update_attribute_value("StartX", 0.0) self.model.update_attribute_value("EndX", 15.0) self.assertEqual(str(self.model.simultaneous_fit_function), "composite=MultiDomainFunction,NumDeriv=true;" "name=Chebyshev,EndX=1,StartX=-1,n=0,A0=0,$domains=i;" "name=Chebyshev,EndX=15,StartX=0,n=0,A0=0,$domains=i")