Skip to content

Instantly share code, notes, and snippets.

@glebkuznetsov
Last active September 23, 2015 21:21
Show Gist options
  • Select an option

  • Save glebkuznetsov/645a0fc6bbbe23a77268 to your computer and use it in GitHub Desktop.

Select an option

Save glebkuznetsov/645a0fc6bbbe23a77268 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Analyze NRB238 Single Channel Nanodrop\n",
"\n",
"Apply serial 2x dilutions to sample at ~3500 ng/uL"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import matplotlib\n",
"import numpy as np\n",
"import pandas as pd\n",
"import statsmodels.api as sm\n",
"\n",
"%matplotlib inline\n",
"matplotlib.style.use('ggplot')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Import data."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"nrb238_single_channel_df = pd.read_csv('nrb238_single_channel.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some basic stats."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>dilution</th>\n",
" <th>m1</th>\n",
" <th>m2</th>\n",
" <th>m3</th>\n",
" <th>avg</th>\n",
" <th>stdev</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 0</td>\n",
" <td> 3289.0</td>\n",
" <td> 3277.0</td>\n",
" <td> 3261.0</td>\n",
" <td> 3275.666667</td>\n",
" <td> 14.047538</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 1</td>\n",
" <td> 1715.0</td>\n",
" <td> 1809.0</td>\n",
" <td> 1865.0</td>\n",
" <td> 1796.333333</td>\n",
" <td> 75.797977</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 2</td>\n",
" <td> 1024.0</td>\n",
" <td> 910.0</td>\n",
" <td> 941.0</td>\n",
" <td> 958.333333</td>\n",
" <td> 58.943476</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> 3</td>\n",
" <td> 546.0</td>\n",
" <td> 500.0</td>\n",
" <td> 510.0</td>\n",
" <td> 518.666667</td>\n",
" <td> 24.193663</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> 4</td>\n",
" <td> 291.0</td>\n",
" <td> 273.0</td>\n",
" <td> 272.0</td>\n",
" <td> 278.666667</td>\n",
" <td> 10.692677</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td> 5</td>\n",
" <td> 156.0</td>\n",
" <td> 138.0</td>\n",
" <td> 151.0</td>\n",
" <td> 148.333333</td>\n",
" <td> 9.291573</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td> 6</td>\n",
" <td> 79.9</td>\n",
" <td> 73.0</td>\n",
" <td> 70.9</td>\n",
" <td> 74.600000</td>\n",
" <td> 4.708503</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td> 7</td>\n",
" <td> 39.9</td>\n",
" <td> 35.4</td>\n",
" <td> 38.2</td>\n",
" <td> 37.833333</td>\n",
" <td> 2.272297</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td> 8</td>\n",
" <td> 22.2</td>\n",
" <td> 17.3</td>\n",
" <td> 19.7</td>\n",
" <td> 19.733333</td>\n",
" <td> 2.450170</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" dilution m1 m2 m3 avg stdev\n",
"0 0 3289.0 3277.0 3261.0 3275.666667 14.047538\n",
"1 1 1715.0 1809.0 1865.0 1796.333333 75.797977\n",
"2 2 1024.0 910.0 941.0 958.333333 58.943476\n",
"3 3 546.0 500.0 510.0 518.666667 24.193663\n",
"4 4 291.0 273.0 272.0 278.666667 10.692677\n",
"5 5 156.0 138.0 151.0 148.333333 9.291573\n",
"6 6 79.9 73.0 70.9 74.600000 4.708503\n",
"7 7 39.9 35.4 38.2 37.833333 2.272297\n",
"8 8 22.2 17.3 19.7 19.733333 2.450170"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nrb238_single_channel_df['avg'] = nrb238_single_channel_df[['m1', 'm2', 'm3']].mean(axis=1)\n",
"nrb238_single_channel_df['stdev'] = nrb238_single_channel_df[['m1', 'm2', 'm3']].std(axis=1)\n",
"nrb238_single_channel_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x1127838d0>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nI8yZM4fXXnst120fFtuDbo3dWbZgwQKefvppBg4caHqPtGvX7r7tlVL069ePs2fPsmXLFg4cOECV\nKlXo1q0b8fHxZtu++eabvPvuu/z666+0bduWgQMHmn0ZfWSqHIuMjFR16tRRNjY2qkWLFmrs2LEq\nPDzcbJvp06crHx8fs9e2trYqLi7OtGzdunVK13WVkZGhlFJqyJAhKjAw0Ow4S5YsUZqmqcjISKWU\nUhcvXjR7vXz5clWzZk2VnZ1ttl/nzp3VxIkTH3gNtWrVUq+++uoD13fo0EH5+fmZLQsJCVHt2rV7\n4D5KKdWyZUv14Ycfml7XqVNH9e3b12ybHj16qMGDB+frXHXq1FGfffaZ2TZ79uxRmqappKQkpZRS\nI0eOVF27dn1gbDt27FCapqlDhw7lun7p0qXK0dFRxcfHm5ZdvXpVOTg4qJUrVyqljOWtaZo6cuSI\naZtffvlFaZqmzp49q5RS6t1331XVqlVTaWlpuZ5n5MiRatCgQWbL0tPTlaOjo+l9ZMn7ZdWqVUrT\ntPuO36FDB9W4ceMHlsMd8fHxStM0tX//fqWUUr///rvSNE3t2bPHbLvly5crW1tb0+thw4aptm3b\nmm2zceNGpeu6unz5sukaq1SpojIzM03bfPzxx6patWoPjalOnTr3/Q4tKa/c9O3bV/3tb39TSimV\nmpqq7O3t1dKlS822CQgIUA0bNnzgMW7fvq1q1KihZs+ebVo2e/ZsVatWLdPrli1bqhkzZjz0uu72\nzjvvqLp166rbt2+blm3evFlpmqZWr15tWnbv67p165r9bd37WimlRo8erTp27Gh63bVrVxUcHHxf\nDHcf+87fxalTp0zrMzIyVLVq1dQ///lPpZRSERERStM0tWHDBtM2V69eVZqmqf/+978WX3teynWN\n5cknn+T8+fPs27ePkSNHcvXqVQYMGECfPn0eul/16tXx9PQ0va5WrRpKKdPtgVOnTvHEE0+Y7XPv\n63tFRUURGxuLm5ub6faNs7Mz+/btu+822x3Xrl3jypUrdO/e/YHH1TSNli1bmi2rVq0aV69eNb2+\nfv0648aNo2nTpri7u+Ps7Ex0dLTZLQpN0/Dz83vocfI61/Xr17l8+TKTJk0yu8aePXuiadoDr/Ne\nhw4dwt3dnccffzzX9dHR0fj6+uLh4WFa5u3tTePGjTl58uQD461WrRqAKd5Dhw7x5JNP4uDgkOt5\n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\naQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11249c050>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"d = nrb238_single_channel_df.dilution.apply(lambda c: 2**-c)\n",
"plt.errorbar(d, nrb238_single_channel_df.avg, nrb238_single_channel_df.stdev)\n",
"plt.title('Single channel concentration read vs dilution')\n",
"plt.xlabel('dilution')\n",
"plt.ylabel('measured concentration (ng / uL)')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Linear regression"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: dilution R-squared: 0.997\n",
"Model: OLS Adj. R-squared: 0.996\n",
"Method: Least Squares F-statistic: 2371.\n",
"Date: Wed, 23 Sep 2015 Prob (F-statistic): 3.50e-11\n",
"Time: 17:16:01 Log-Likelihood: 21.450\n",
"No. Observations: 9 AIC: -40.90\n",
"Df Residuals: 8 BIC: -40.70\n",
"Df Model: 1 \n",
"Covariance Type: nonrobust \n",
"==============================================================================\n",
" coef std err t P>|t| [95.0% Conf. Int.]\n",
"------------------------------------------------------------------------------\n",
"avg 0.0003 6.06e-06 48.694 0.000 0.000 0.000\n",
"==============================================================================\n",
"Omnibus: 5.245 Durbin-Watson: 0.939\n",
"Prob(Omnibus): 0.073 Jarque-Bera (JB): 1.762\n",
"Skew: 1.051 Prob(JB): 0.414\n",
"Kurtosis: 3.530 Cond. No. 1.00\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/gleb/python_virtualenvs/numerical/lib/python2.7/site-packages/scipy/stats/stats.py:1205: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=9\n",
" int(n))\n"
]
}
],
"source": [
"model = sm.OLS(d, nrb238_single_channel_df.avg)\n",
"model_fit = model.fit()\n",
"print model_fit.summary()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.8"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment