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)
Beispiel #2
0
 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))
Beispiel #3
0
    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])
Beispiel #4
0
    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")