{ "metadata": { "name": "", "signature": "sha256:599a23414a1640b38e26473bc5a86206fe3b305f459d56c2b121111527f721d5" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Lifetime decay fit\n", "\n", "**Author:** Antonino Ingargiola - **Date:** 07/20/2014" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Abstract\n", "In this notebook we fit a [TCSPC](http://en.wikipedia.org/wiki/Ultrafast_laser_spectroscopy#Time-correlated_single_photon_counting) histogram with a model functions that includes an exponential decay, an instrument response function (IRF) and uncorrelated background. The IRF is considered fixed (i.e. measured) and is used to deconvolve the data. This kind of fit is commonly performed on fluorescence lifetime experimental curves.\n", "\n", "For illustrative purposes, the TCSPC data is contextually simulated by simply extracting random exponential waiting time, adding a random number from the IRF distribution and adding a fraction of uncorrelated events (background). These events are binned in order to obtain a realistic TCSPC histogram. This procedure assures a proper simulation of the Poisson statistics in each bin.\n", "\n", "The fitting procedure can use both a non-linear least square and a Maximum Likelihood minimization. In the latter case the log-likelihood function obtained from Poisson statistics is maximized.\n", "\n", "> **Note:** This notebook uses the fitting packages [lmfit](http://lmfit.github.io/lmfit-py/) that allows to easily set constrains on the parameters (i.e. fixed, bounded, etc ...). It also performs rigorous error analysis and allows to easily compare different minimization algorithms (other than least squares).\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Library imports" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import scipy\n", "import scipy.stats\n", "from scipy.optimize import minimize\n", "import matplotlib.pyplot as plt\n", "from matplotlib.pyplot import hist, plot\n", "\n", "import lmfit\n", "from lmfit import Parameters, report_fit" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data simulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##TCSPC Parameters" ] }, { "cell_type": "code", "collapsed": false, "input": [ "time_step_s = (60e-9/4096) # time step in seconds (S.I.)\n", "time_step_ns = time_step_s*1e9 # time step in nano-seconds\n", "time_nbins = 2048 # number of time bins\n", "\n", "time_idx = np.arange(time_nbins) # time axis in index units\n", "time_ns = time_idx*time_step_ns # time axis in nano-seconds" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Model IRF" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let define the [Exponentially modified Gaussian distribution](http://en.wikipedia.org/wiki/Exponentially_modified_Gaussian_distribution)\n", "representing the convolution of a gaussian and an exponential. This function is used to model the IRF.\n", "\n", "$$f(x;\\mu,\\sigma,\\lambda) = \\frac{\\lambda}{2} e^{\\frac{\\lambda}{2} (2 \\mu + \\lambda \\sigma^2 - 2 x)} \\operatorname{erfc} (\\frac{\\mu + \\lambda \\sigma^2 - x}{ \\sqrt{2} \\sigma})$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def exgauss(x, mu, sig, tau):\n", " lam = 1./tau\n", " return 0.5*lam * np.exp(0.5*lam * (2*mu + lam*(sig**2) - 2*x)) *\\\n", " scipy.special.erfc((mu + lam*(sig**2) - x)/(np.sqrt(2)*sig))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are going to compute the IRF, using `exgauss` as a PDF. The following parameters have been fitted from an experimental IRF:\n", "\n", "$$\\sigma = 33\\,\\textrm{ps} \\qquad \\lambda = 100\\,\\textrm{ps}$$\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "irf_sig = 0.033\n", "irf_mu = 5*irf_sig\n", "irf_lam = 0.1\n", "x_irf = np.arange(0, (irf_lam*15 + irf_mu)/time_step_ns)\n", "p_irf = exgauss(x_irf, irf_mu/time_step_ns, irf_sig/time_step_ns,\n", " irf_lam/time_step_ns)\n", "irf = scipy.stats.rv_discrete(name='irf', values=(x_irf, p_irf))\n", "x_irf.size" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "114" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(x_irf, p_irf)\n", "plt.yscale('log')\n", "irf_mu/time_step_ns" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "11.264000000000001" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "assert np.allclose(p_irf.sum(), 1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we need to draw random numbers from the IRF's PDF. To do so, we create a discrete random distribution with **scipy**:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "irf = scipy.stats.rv_discrete(name='irf', values=(x_irf, p_irf))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "fig, ax = plt.subplots(1, 2, figsize=(12, 4))\n", "ax[0].plot(x_irf, irf.pmf(x_irf));\n", "ax[0].set_title('IRF PDF')\n", "ax[1].hist(irf.rvs(size=200), bins=x_irf, histtype='step')\n", "ax[1].set_title('Random samples from the IRF distribution');\n", "ax[0].set_yscale('log')\n", "#ax[1].set_yscale('log')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nfVkhXOz1PO1XtieivlBd8uNuKSKfI9S65CfNLYQaqFZCIfhThFGKicAldGxZ4kizJMVXK+HiuNUJ\nI83zCJNoTKH4zHaSpCJa6Zg07wLckXf/FFbsbNCP0PfQkWhJiqfVCZ0kclM2D6T9Kviz6DiDmiQ1\nrd7dr1LU+nS8wnMB4WrVfG8D3+hqI5tssknbiy++WEEYkhSpFwktuZKoD+Hq9t8SZn2DjpNJ/Jow\nfXQHnrclJViPz9mVtJyrSq3Uiy++SFtbW6S3Tz5pY9asNn7+8zZ+8pM2HnqojaVLy9/OD3/4w8iP\npVo3jyV+t0Y5jkY7FnrWGzUOehFGkWfRsUXVennfj2XFa1kiP29vuWUbzzzTxq23trH33j4PPZb4\n3hrlWBrlONraKjtnV5I0v0LHmWSG0HE6xkS46y4YMgT23hsefhieegqOPx4GD4ZjjwUHUyQ1qF0J\nPVl3p7293N6EGfeeIdQ0jwJOiCpASYqTSsozZhCanrcSGlePI8yGU7Z0Ok0qlSKVSlUQTnna2uCS\nS+CCC2DqVCjc9VtvwaWXwsiRcPDBcN55sMYanW5KUhPKZDJkMpmow6jEg3Q+cHJ7vQORpCQodaR5\nKmEmoKGEOuajCTMjfQu4k/Dx3jRCy6Ky5ZLmejr5ZLjmGnjkkRUTZoD+/eFHP4K5c+Hjj2GrreDO\nO7veZr2PoZY8lvhplOOAxjiWVCpFOp2OOgxVoBGehzkeSzw1yrE0ynFUKg69ONuyNSZ1k8nA4YfD\ns8/C2muX9ph77oGvfhXGjoXzz4e+fWsaoqSE6NWrF8TjXFpPdT9v59tqK7juOpg/Hy6/HG67LbJQ\nJCVMJefsSmqaE+lf/wrJ7y9+UXrCDLDHHvDkk/DSS7DrrvCPf9QuRkmSJMVLLJLmdDpdt9rAU06B\nz30O9t23/Mf26wc33wwTJsAuuzi6ITWzTCZjeYYkNZE4fKRYt4/5nnoK9tkHnnuuvFHmzjz4IIwb\nFzpsnHEGrBSLtx+S6s3yjPqzPENST1meUaJLLgnt5CpNmAF22w1mzIB774UxY2DJksq3KUmSpHhq\nmqT5tddg+vQwMlwt660XkubWVhgxAmbNqt62JUmSFB9NkzT/9KcwfnyoS66mvn3hssvgtNNg1Ci4\n6abqbl+SJEnRq2Ryk6qp9eQm778fumXcf39NNg/AUUfBllvCV74CTzwBkyZBS0vt9icpWg0wuYkk\n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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "assert (p_irf == irf.pmf(x_irf)).all()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Generate the nanotimes" ] }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.seed(2)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "num_samples = 5e5\n", "tau = 2e-9\n", "baseline_fraction = 0.03\n", "offset = 2e-9\n", "\n", "sample_decay = np.random.exponential(scale=tau/time_step_s,\n", " size=num_samples) + offset/time_step_s\n", "sample_decay += irf.rvs(size=num_samples)\n", "sample_baseline = np.random.randint(low=0, high=time_nbins,\n", " size=baseline_fraction*num_samples)\n", "sample_tot = np.hstack((sample_decay, sample_baseline))\n", "decay_hist, bins = np.histogram(sample_tot, bins=np.arange(time_nbins + 1))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "baseline_true = baseline_fraction*num_samples / time_nbins\n", "baseline_true" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "7.32421875" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "hist_sim_decay, _, _ = hist(sample_tot, bins=np.arange(time_nbins+1), histtype='step');\n", "plt.yscale('log')\n", "(hist_sim_decay > 0).all()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "False" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRERERILv/wE1Ul/NDqMbCQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Model function\n", "\n", "We use a single exponential model convoluted with the model-IRF and with the addition of a **baseline**:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def model(x, tau, ampl, baseline, offset, irf_pdf=irf.pmf(x_irf)):\n", " \"\"\"\n", " Model function used to fit the data.\n", " \"\"\"\n", " y = np.zeros(x.size)\n", " pos_range = (x - offset) >= 0\n", " y[pos_range] = ampl*np.exp(-(x[pos_range] - offset)/tau)\n", " z = np.convolve(y, irf_pdf, mode='same')\n", " z += baseline\n", " return z\n", "\n", "def residuals(params, x, y, weights):\n", " \"\"\"\n", " Returns the array of residuals for the current parameters.\n", " \"\"\"\n", " tau = params['tau'].value\n", " baseline = params['baseline'].value\n", " offset = params['offset'].value\n", " ampl = params['ampl'].value\n", " return (y - model(x, tau, ampl, baseline, offset))*weights\n", "\n", "def plot_fit(time, ydata, params, yscale='log', zoom_origin=False):\n", " \"\"\"\n", " Function to plot data and model function.\n", " \"\"\"\n", " plot(time, ydata, marker='.')\n", " plot(time, model(time, **{k: v.value for k, v in params.items()}),\n", " color='r', lw=2.5, alpha=0.7)\n", " if yscale == 'log':\n", " plt.yscale('log')\n", " plt.ylim(1)\n", " if zoom_origin:\n", " dt = time[1] - time[0]\n", " t0 = params['offset'] - 50*dt\n", " plt.xlim(t0 - 50*dt, t0 + 50*dt)\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# MLE approach" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Log-likelihood function:\n", "\n", "$$p(k) = \\frac{\\lambda^k}{\\Gamma(k+1)}\\exp(-\\lambda)$$\n", "\n", "$$\\log p(k) = k \\log \\lambda - \\log\\Gamma(k+1) -\\lambda$$\n", "\n", "In this context, for each TCSPC bin $i$, we have a Poisson rate $\\lambda_i$ function of the model parameters:\n", "\n", "$$\\lambda_i = \\lambda(t_i, \\tau, A, t_0, b)$$\n", "\n", "and a number of counts $y_i$ that are actual the TCSPC bin counts. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def loglike(params, x, ydata):\n", " tau, baseline, offset, ampl = params\n", " ymodel = model(x, tau, ampl, baseline, offset)\n", " return (ymodel - ydata*np.log(ymodel)).sum()\n", "\n", "def from_params(params):\n", " return [params[k].value for k in ('tau', 'baseline', 'offset', 'ampl')]\n", "\n", "def to_params(p, params):\n", " for v, k in zip(p, ('tau', 'baseline', 'offset', 'ampl')):\n", " params[k].value = v\n", " return params" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Poisson weights" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Weights** for proper scaling of the residuals according to the Poisson std.dev." ] }, { "cell_type": "code", "collapsed": false, "input": [ "weights = 1./np.sqrt(decay_hist)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "weights[decay_hist == 0] = 1./np.sqrt(baseline_true)\n", "(decay_hist == 0).any()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "True" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Lifetime fit" ] }, { "cell_type": "code", "collapsed": false, "input": [ "params = Parameters()\n", "params.add('tau', value=2.8)\n", "params.add('baseline', value=5)\n", "params.add('offset', value=2.814, vary=False)\n", "params.add('ampl', value=700)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check the model with the intial parameters:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_fit(time_ns, decay_hist, params)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Least squares" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we fit the parameters. To more easily converge to the global minimum we first perform a minimization with the Nelder-Mead method (a.k.a. downhill simplex). After that, we perform a second minimization with non-linear least-squares in order to obtain error estimates." ] }, { "cell_type": "code", "collapsed": false, "input": [ "fit_res = lmfit.minimize(residuals, params, args=(time_ns, decay_hist, weights), method='nelder')\n", "report_fit(fit_res.params)\n", "print 'Reduced Chi-square: %.3f' % fit_res.redchi" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[Variables]]\n", " ampl: 3691.373 initial = 700\n", " baseline: 6.317692 initial = 5\n", " offset: 2.814 (fixed)\n", " tau: 1.988625 initial = 2.8\n", "[[Correlations]] (unreported correlations are < 0.100)\n", "Reduced Chi-square: 1.177\n" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "fit_res = lmfit.minimize(residuals, params, args=(time_ns, decay_hist, weights), method='leastsq')\n", "report_fit(fit_res.params)\n", "print 'Reduced Chi-square: %.3f' % fit_res.redchi" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[Variables]]\n", " ampl: 3691.374 +/- 8.272421 (0.22%) initial = 3691.373\n", " baseline: 6.317692 +/- 0.08213102 (1.30%) initial = 6.317692\n", " offset: 2.814 (fixed)\n", " tau: 1.988625 +/- 0.003367729 (0.17%) initial = 1.988625\n", "[[Correlations]] (unreported correlations are < 0.100)\n", " C(ampl, tau) = -0.722 \n", " C(baseline, tau) = -0.236 \n", " C(ampl, baseline) = 0.109 \n", "Reduced Chi-square: 1.177\n" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "plot_fit(time_ns, decay_hist, params, zoom_origin=False)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Error estimates" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we compute the confidence interval by samplig the reduced $\\chi^2$:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ci = lmfit.conf_interval(fit_res)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "lmfit.printfuncs.report_ci(ci)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " 99.70% 95.00% 67.40% 0.00% 67.40% 95.00% 99.70%\n", " tau 1.97862 1.98195 1.98535 1.98863 1.99191 1.99532 1.99873\n", "baseline 6.07364 6.15659 6.23696 6.33703 6.39842 6.47878 6.56170\n", " ampl3666.739613675.195673683.351253697.352253699.408873707.588043716.00500\n" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Maximum likelihood\n", "\n", "To find the ML estimate we maximize the log-likelihood function:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "res = minimize(loglike, x0=from_params(params), args=(time_ns, decay_hist),\n", " method='Nelder-Mead')\n", "\n", "params = to_params(res.x, params)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "report_fit(params)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[Variables]]\n", " ampl: 3650.818 +/- 8.272421 (0.23%) initial = 3691.373\n", " baseline: 7.279041 +/- 0.08213102 (1.13%) initial = 6.317692\n", " offset: 2.80642 (fixed)\n", " tau: 2.005321 +/- 0.003367729 (0.17%) initial = 1.988625\n", "[[Correlations]] (unreported correlations are < 0.100)\n", " C(ampl, tau) = -0.722 \n", " C(baseline, tau) = -0.236 \n", " C(ampl, baseline) = 0.109 \n" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "plot_fit(time_ns, decay_hist, params, zoom_origin=False)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "> Note that the ML method gives a better estimation of the true baseline value (`baseline_true`) but the fitted lifetime is not significantly different (in this case)." ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Apply the style to the notebook" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.core.display import HTML\n", "HTML(open(\"./styles/custom2.css\", \"r\").read())" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 29, "text": [ "" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 29 } ], "metadata": {} } ] }