Source code for pySAXS.models.PearsonVII

from pySAXS.models.model import Model
import numpy

[docs]class PearsonVII(Model): ''' PearsonVII model by OT : 5/7/2012 '''
[docs] def PearsonVIIFunction(self,q,par): """ PearsonVII model par[0] : Amplitute of peak par[1] : q at maximum of peak par[2] : width of peak par[3] : shape of peak par[4] : background """ return par[0]/(1+((q-par[1])/par[2])**2)**par[3]+par[4]
''' parameters definition ''' IntensityFunc=PearsonVIIFunction #function N=0 q=numpy.arange(0,100,1.0) #q range(x scale) Arg=[100.,0.1,0.5,2,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="PearsonVII" #name of the model Doc=["Amplitute of peak"\ ,"q at maximum of peak"\ ,"width of peak"\ ,"shape of peak"\ ,"background"] #list of description for parameters Description="PearsonVII" # description of model Author="Olivier Tache'" #name of Author
if __name__=="__main__": ''' test code ''' g=PearsonVII() g.Arg=[100,10,50,0] import Gnuplot gp=Gnuplot.Gnuplot() c=Gnuplot.Data(g.q,g.getIntensity(),with_='points') gp.plot(c) yn=g.getNoisy() cn=Gnuplot.Data(g.q,yn,with_='points') gp.plot(c,cn) res=g.fit(yn) cf=Gnuplot.Data(g.q,g.IntensityFunc(g.q,res),with_='lines') gp.plot(c,cn,cf) raw_input("enter") bounds=[(0,200),(2,12),(30.0,55.0),(-1,2)] res2=g.fitBounds(yn,bounds) print res2 raw_input("enter")