Source code for pySAXS.models.Trapez

from pySAXS.models.model import Model
import numpy
import scipy


[docs]class Trapez(Model): ''' Trapez model by OT : 09/12/2011 '''
[docs] def trapez(self,x,center=0,fwmh=1,slope=1,height=1,zero=0): y=numpy.zeros(numpy.shape(x)) #print y for i in range(len(x)): if x[i]<center: y[i]=scipy.special.erf((x[i]-center+fwmh*0.5)/slope) else: y[i]=-scipy.special.erf((x[i]-center-fwmh*0.5)/slope) y= ((y+1)*0.5*height+zero) #print y return y
[docs] def TrapezFunction(self,q,par): """ Trapez model to fit the peak to get exact zero position, based on erf function par[0] : center par[1] : FWHM par[2] : slope par[3] : height par[4] : zero """ y=self.trapez(q, par[0], par[1], par[2], par[3], par[4]) #print y return y
''' parameters definition ''' IntensityFunc=TrapezFunction #function N=0 q=numpy.arange(-10,10,0.2) #q range(x scale) Arg=[0.,2.5,0.5,2.0,0.0] #list of parameters Format=["%f","%f","%f","%f","%f"] #list of c format istofit=[True,True,True,True,True] #list of boolean for fitting name="Trapez" #name of the model Doc=["center"\ ,"FWHM"\ ,"slope"\ ,"height"\ ,"zero"] #list of description for parameters Description="Trapez model based on erf for x-ray beam" # description of model Author="Olivier Tache'" #name of Author
if __name__=="__main__": ''' test code ''' m=Trapez() m.Arg=[-3.2,5.3,1,6,0.5] import Gnuplot gp=Gnuplot.Gnuplot() c=Gnuplot.Data(m.q,m.getIntensity(),with_='points') gp.plot(c) yn=m.getNoisy() cn=Gnuplot.Data(m.q,yn,with_='points') gp.plot(c,cn) res=m.fit(yn) cf=Gnuplot.Data(m.q,m.IntensityFunc(m.q,res),with_='lines') gp.plot(c,cn,cf) raw_input("enter") bounds=[(-10,10),(2,12),(0.1,2.0),(0,20),(-1,2)] res2=m.fitBounds(yn,bounds) print res2 raw_input("enter")