Skip to content

Instantly share code, notes, and snippets.

@thoo
Created March 17, 2014 07:22
Show Gist options
  • Save thoo/9595248 to your computer and use it in GitHub Desktop.
Save thoo/9595248 to your computer and use it in GitHub Desktop.
Python
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "Curve Fitting in Python Class"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": "Curve Fitting in Python Class"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is just my parctice for python class. I am follwing [this introduction about python class](http://en.wikibooks.org/wiki/A_Beginner's_Python_Tutorial/Classes#Creating_a_Class) and rewriting one of the examples from [here](http://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html). I will use [leastsq method](http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.leastsq.html#scipy.optimize.leastsq) and trying to fit lorentzian signal.\n\n"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "$$y = \\frac{A}{(x-B)^2+C}+D$$\n"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "I usually find the linewidth of the lorentzian which is "
},
{
"cell_type": "markdown",
"metadata": {},
"source": "$$\\text{linewidth} = \\sqrt{C}*2$$"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from numpy import *\nplt.rcParams['figure.figsize'] = 4, 6\nx = linspace(0,300,1000)\nparms=A,B,C,D = 5, 150, 100,10\ny_true = (A/((x-B)**2+C)) + D\ny_meas = y_true + .004*random.randn(len(x))\nplot(x,y_meas)\n",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 22,
"text": "[<matplotlib.lines.Line2D at 0x10f85c390>]"
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nYII=\n",
"text": "<matplotlib.figure.Figure at 0x10f82acd0>"
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": "First I am just going to do the traditional way by using function."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is my initial value. $p0 = [5, 150, 100,25]$"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def residuals(p, y, x):\n A,B,C,D = p\n err = y-((A/((x-B)**2+C)) + D)\n return err\n \nfrom scipy.optimize import leastsq\np0 = [5, 150, 100,25]\nplsq1= leastsq(residuals, p0, args=(y_meas, x))\nprint(plsq1[0]),'\\n'\nprint '\\n linewidth = {:.6}'.format(sqrt(plsq1[0][2])*2)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "[ 4.87016803 149.67580992 98.67231814 10.0002071 ] \n\n\n linewidth = 19.8668\n"
}
],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Now I am going to use the python class. The main motivation is I would like to organize all of my python modules. Right now I have multiple file like myfit.py, myparsedata.py and so on. "
},
{
"cell_type": "code",
"collapsed": false,
"input": "from scipy.optimize import leastsq\n\nclass Mycheck:\n def __init__(self,x,y):\n self.x=x\n self.y=y\n #self.p0=p0\n \n def mylotz(self,p0):\n A,B,C,D=p0\n # \"\"\"lorentz equation.\"\"\"\n return (A/((self.x-B)**2+C)) + D\n \n def residual(self,p,y,x):\n \n A,B,C,D = p\n err = y-(A/((x-B)**2+C)+ D)\n return err\n \n def mylozf(self):\n p0=[1,self.x[np.where(self.y==max(self.y))[0][0]],1,average(self.y)]\n \n R = raw_input(\"Please enter Half-Range of the Range of Interest: \")\n if R=='':\n R=500;\n else:\n R=int(R)\n \n C=argmax(self.y);\n if C+R >= len(self.x):\n U = len(self.x)\n else:\n U = C+R\n \n if C >= R:\n L=C-R;\n else:\n L=0;\n \n x=self.x[L:U];y=self.y[L:U];\n\n \n plsq=leastsq(self.residual,p0,args=(y,x))\n p0=plsq[0]\n fig = plt.figure()\n ax = fig.add_subplot(111)\n plt.plot(self.x,self.peval(p0),'r-',self.x,self.y,'b.')\n plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0),useOffset=False)\n ax.yaxis.major.formatter._useMathText = True\n ax.xaxis.major.formatter._useMathText = True\n print \"\\n linewidth = %f \\n\" % (sqrt(plsq[0][2])*2) \n return plsq[0]\n \n def peval(self,p0):\n # \"\"\"Evaluated value at x with current parameters.\"\"\"\n return self.mylotz(p0)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Here I try to guess some of the initial values: $p0=[1,self.x[np.where(self.y==max(self.y))[0][0]],1,average(self.y)]$. I also ask for raw input for the range of interest I would like to include. You can skip it by just hitting 'enter'. \n"
},
{
"cell_type": "code",
"collapsed": false,
"input": "test=Mycheck(x,y_meas)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
},
{
"cell_type": "code",
"collapsed": false,
"input": "print parms #This is the actual parameters before the noise integration.\ntest.mylozf()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "(5, 150, 100, 10)\n"
},
{
"name": "stdout",
"output_type": "stream",
"stream": "stdout",
"text": "Please enter Half-Range of the Range of Interest: \n"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\n linewidth = 19.866332 \n\n"
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": "array([ 4.86993489, 149.6758113 , 98.66778403, 10.00020746])"
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nW/j/AQKylHxxYqh1AAAAAElFTkSuQmCC\n",
"text": "<matplotlib.figure.Figure at 0x10d4cb5d0>"
}
],
"prompt_number": 34
},
{
"cell_type": "code",
"collapsed": false,
"input": "",
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment