Beispiel #1
0
    def _dispersion(self, fitter):
        # Load data
        # This data is for a cylinder with
        #   length=400, radius=20, radius disp=5, scale=1e-10
        out = Loader().load("cyl_400_20_disp5r.txt")
        out.dy = numpy.zeros(len(out.y))
        for i in range(len(out.y)):
            out.dy[i] = math.sqrt(out.y[i])

        # Receives the type of model for the fitting
        model1 = CylinderModel()
        model1.setParam("scale", 10.0)
        model1.setParam("radius", 18)
        model1.setParam("length", 397)
        model1.setParam("sldCyl", 3e-006)
        model1.setParam("sldSolv", 0.0)
        model1.setParam("background", 0.0)

        # Dispersion parameters
        model1.dispersion['radius']['width'] = 0.25
        model1.dispersion['radius']['npts'] = 50

        model = Model(model1)

        pars1 = ['length', 'radius', 'scale', 'radius.width']
        fitter.set_data(out, 1)
        fitter.set_model(model, 1, pars1)
        fitter.select_problem_for_fit(id=1, value=1)
        #import time; T0 = time.time()
        result1, = fitter.fit()
        #print "time",time.time()-T0,fitter._engine.__class__.__name__

        self.assert_(result1)
        self.assertTrue(len(result1.pvec) > 0)
        self.assertTrue(len(result1.stderr) > 0)

        #print [z for z in zip(result1.param_list,result1.pvec,result1.stderr)]
        self.assertTrue(
            math.fabs(result1.pvec[0] - 399.8) / 3.0 < result1.stderr[0])
        self.assertTrue(
            math.fabs(result1.pvec[1] - 17.5) / 3.0 < result1.stderr[1])
        self.assertTrue(
            math.fabs(result1.pvec[2] - 11.1) / 3.0 < result1.stderr[2])
        self.assertTrue(
            math.fabs(result1.pvec[3] - 0.276) / 3.0 < result1.stderr[3])
        self.assertTrue(result1.fitness < 1.0)
Beispiel #2
0
    def _dispersion(self, fitter):
        # Load data
        # This data is for a cylinder with 
        #   length=400, radius=20, radius disp=5, scale=1e-10
        out=Loader().load("cyl_400_20_disp5r.txt")
        out.dy = numpy.zeros(len(out.y))
        for i in range(len(out.y)):
            out.dy[i] = math.sqrt(out.y[i])
        
        # Receives the type of model for the fitting
        model1  = CylinderModel()
        model1.setParam("scale", 10.0)
        model1.setParam("radius",18)
        model1.setParam("length", 397)
        model1.setParam("sldCyl",3e-006 )
        model1.setParam("sldSolv",0.0 )
        model1.setParam("background", 0.0)

        # Dispersion parameters
        model1.dispersion['radius']['width'] = 0.25
        model1.dispersion['radius']['npts'] = 50

        model = Model(model1)

        pars1 =['length','radius','scale','radius.width']
        fitter.set_data(out,1)
        fitter.set_model(model,1,pars1)
        fitter.select_problem_for_fit(id=1,value=1)
        #import time; T0 = time.time()
        result1, = fitter.fit()

        self.assert_(result1)
        self.assertTrue(len(result1.pvec)>0)
        self.assertTrue(len(result1.stderr)>0)

        #print [z for z in zip(result1.param_list,result1.pvec,result1.stderr)]
        self.assertTrue( math.fabs(result1.pvec[0]-399.8)/3.0 < result1.stderr[0] )
        self.assertTrue( math.fabs(result1.pvec[1]-17.5)/3.0  < result1.stderr[1] )
        self.assertTrue( math.fabs(result1.pvec[2]-11.1)/3.0   < result1.stderr[2] )
        self.assertTrue( math.fabs(result1.pvec[3]-0.276)/3.0   < result1.stderr[3] )
        self.assertTrue( result1.fitness < 1.0 )