Skip to content

Instantly share code, notes, and snippets.

@vals
Created November 29, 2012 18:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vals/4170928 to your computer and use it in GitHub Desktop.
Save vals/4170928 to your computer and use it in GitHub Desktop.
Omics data analysis task
{
"metadata": {
"name": "Omics Data Analysis Task"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"cd ~/Documents/Hu_Gene_1.O_ST_V1/"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"/Users/valentinesvensson/Documents/Hu_Gene_1.O_ST_V1\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ls -alh"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"total 253160\r\n",
"drwxrwxrwx 18 valentinesvensson staff 612B 26 Nov 16:13 \u001b[30m\u001b[43m.\u001b[m\u001b[m/\r\n",
"drwx------+ 117 valentinesvensson staff 3,9K 28 Nov 14:06 \u001b[34m..\u001b[m\u001b[m/\r\n",
"-rwxrwxrwx 1 valentinesvensson staff 32M 26 Nov 16:13 \u001b[31mBEA12P070_ANALYSIS_20120816.xlsx\u001b[m\u001b[m*\r\n",
"-rw-r--r-- 1 valentinesvensson staff 97B 26 Nov 15:38 Log.md\r\n",
"-rwxrwxrwx 1 valentinesvensson staff 11M 21 Aug 11:35 \u001b[31mSG01_400_1_(HuGene-1_0-st-v1).CEL\u001b[m\u001b[m*\r\n",
"-rw-r--r-- 1 valentinesvensson staff 4,1M 26 Nov 15:14 SG01_400_1_intensities.txt\r\n",
"-rwxrwxrwx 1 valentinesvensson staff 11M 21 Aug 11:35 \u001b[31mSG02_400_2_(HuGene-1_0-st-v1).CEL\u001b[m\u001b[m*\r\n",
"-rw-r--r-- 1 valentinesvensson staff 4,1M 26 Nov 15:15 SG02_400_2_intensities.txt\r\n",
"-rwxrwxrwx 1 valentinesvensson staff 11M 21 Aug 11:35 \u001b[31mSG03_400_3_(HuGene-1_0-st-v1).CEL\u001b[m\u001b[m*\r\n",
"-rw-r--r-- 1 valentinesvensson staff 4,1M 26 Nov 15:16 SG03_400_3_intensities.txt\r\n",
"-rw-r--r-- 1 valentinesvensson staff 4,0M 26 Nov 15:17 SG04_5000_1_intensities.txt\r\n",
"-rwxrwxrwx 1 valentinesvensson staff 11M 21 Aug 11:35 \u001b[31mSG04_500_1_(HuGene-1_0-st-v1).CEL\u001b[m\u001b[m*\r\n",
"-rw-r--r-- 1 valentinesvensson staff 4,1M 26 Nov 15:18 SG05_5000_2_intensities.txt\r\n",
"-rwxrwxrwx 1 valentinesvensson staff 11M 21 Aug 11:35 \u001b[31mSG05_500_2_(HuGene-1_0-st-v1).CEL\u001b[m\u001b[m*\r\n",
"-rw-r--r-- 1 valentinesvensson staff 4,1M 26 Nov 15:19 SG06_5000_3_intensities.txt\r\n",
"-rwxrwxrwx 1 valentinesvensson staff 11M 21 Aug 11:35 \u001b[31mSG06_500_3_(HuGene-1_0-st-v1).CEL\u001b[m\u001b[m*\r\n",
"-rw-r--r-- 1 valentinesvensson staff 4,1M 26 Nov 14:38 Test\r\n",
"-rwxrwxrwx 1 valentinesvensson staff 187K 26 Nov 16:00 \u001b[31mmicroarray category.xlsx\u001b[m\u001b[m*\r\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"import pandas as pd\n",
"from pandas import DataFrame"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"probe_data = pd.ExcelFile(\"BEA12P070_ANALYSIS_20120816.xlsx\")"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"probe_data.sheet_names"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 5,
"text": [
"['Sample information',\n",
" 'Examples formulas used',\n",
" 'BEA12P070_Plier_ANALYSIS',\n",
" 'QC_Plier']"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df = probe_data.parse(\"BEA12P070_Plier_ANALYSIS\")"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Filter out things not 'main'"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df_main = df[df[\"None.55\"] == u'main']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Filter out expressions less than background"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"intensities = df_main.ix[:,\"None.1\":\"None.6\"]\n",
"intensities.index = pd.Index(df_main[None].astype(int))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 241
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"background = 30\n",
"intensities = intensities[(intensities > background).any(1)]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 242
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Name the columns"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"intensities.columns = df.ix[12,1:7]\n",
"\n",
"ind = intensities.columns\n",
"ind = [i.split(\"_\") for i in ind]\n",
"\n",
"index = pd.MultiIndex.from_tuples(ind, names=[\"stiffness\", \"nr\"])\n",
"intensities.columns = index\n",
"\n",
"intensities.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th>stiffness</th>\n",
" <th colspan=\"3\" halign=\"left\">400</th>\n",
" <th colspan=\"3\" halign=\"left\">500</th>\n",
" </tr>\n",
" <tr>\n",
" <th>nr</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td><strong>7896736</strong></td>\n",
" <td> 60.35725</td>\n",
" <td> 67.67899</td>\n",
" <td> 65.3205</td>\n",
" <td> 68.09531</td>\n",
" <td> 82.25513</td>\n",
" <td> 92.92193</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7896738</strong></td>\n",
" <td> 49.51054</td>\n",
" <td> 63.4112</td>\n",
" <td> 41.52288</td>\n",
" <td> 81.24638</td>\n",
" <td> 56.35471</td>\n",
" <td> 91.88115</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7896742</strong></td>\n",
" <td> 441.9285</td>\n",
" <td> 432.472</td>\n",
" <td> 367.4817</td>\n",
" <td> 431.6364</td>\n",
" <td> 344.7501</td>\n",
" <td> 409.9278</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7896744</strong></td>\n",
" <td> 33.56507</td>\n",
" <td> 33.389</td>\n",
" <td> 32.16565</td>\n",
" <td> 31.93345</td>\n",
" <td> 34.88901</td>\n",
" <td> 40.55517</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7896746</strong></td>\n",
" <td> 964.0513</td>\n",
" <td> 1043.794</td>\n",
" <td> 884.6751</td>\n",
" <td> 975.644</td>\n",
" <td> 953.6691</td>\n",
" <td> 1019.912</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 243,
"text": [
"stiffness 400 500 \n",
"nr 1 2 3 1 2 3\n",
"7896736 60.35725 67.67899 65.3205 68.09531 82.25513 92.92193\n",
"7896738 49.51054 63.4112 41.52288 81.24638 56.35471 91.88115\n",
"7896742 441.9285 432.472 367.4817 431.6364 344.7501 409.9278\n",
"7896744 33.56507 33.389 32.16565 31.93345 34.88901 40.55517\n",
"7896746 964.0513 1043.794 884.6751 975.644 953.6691 1019.912"
]
}
],
"prompt_number": 243
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"intensities[\"400\"]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 244,
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 26440 entries, 7896736 to 8180179\n",
"Data columns:\n",
"1 26440 non-null values\n",
"2 26440 non-null values\n",
"3 26440 non-null values\n",
"dtypes: object(3)"
]
}
],
"prompt_number": 244
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Look at data distribution"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figsize(12,3)\n",
"plt.subplot(141);\n",
"plt.boxplot(np.array(intensities));\n",
"plt.title(\"Original\\n(outliers included)\")\n",
"plt.subplot(142);\n",
"plt.boxplot(np.array(intensities), sym='');\n",
"plt.title(\"Original\\n(outliers excluded)\")\n",
"plt.subplot(143);\n",
"plt.title(\"Log2 transformed\\n(outliers included)\")\n",
"plt.boxplot(np.array(intensities.applymap(np.log2)));\n",
"plt.subplot(144);\n",
"plt.title(\"Log2 transformed\\n(outliers excluded)\")\n",
"plt.boxplot(np.array(intensities.applymap(np.log2)), sym='');\n",
"plt.subplots_adjust\n",
"plt.savefig(\"boxplots.pdf\", bbox_inches='tight')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 255
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.subplots_adjust?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 254
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# So the data seem to look _much_ nicer after log2 normalizations.\n",
"intensities = intensities.applymap(np.log2)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 256
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"intensities.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"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>(400, 1)</th>\n",
" <th>(400, 2)</th>\n",
" <th>(400, 3)</th>\n",
" <th>(500, 1)</th>\n",
" <th>(500, 2)</th>\n",
" <th>(500, 3)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td><strong>7896736</strong></td>\n",
" <td> 5.915455</td>\n",
" <td> 6.080636</td>\n",
" <td> 6.029464</td>\n",
" <td> 6.089484</td>\n",
" <td> 6.362034</td>\n",
" <td> 6.537947</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7896738</strong></td>\n",
" <td> 5.629664</td>\n",
" <td> 5.986666</td>\n",
" <td> 5.375835</td>\n",
" <td> 6.344232</td>\n",
" <td> 5.816464</td>\n",
" <td> 6.521697</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7896742</strong></td>\n",
" <td> 8.787669</td>\n",
" <td> 8.756463</td>\n",
" <td> 8.521529</td>\n",
" <td> 8.753673</td>\n",
" <td> 8.429407</td>\n",
" <td> 8.679226</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7896744</strong></td>\n",
" <td> 5.068889</td>\n",
" <td> 5.061301</td>\n",
" <td> 5.007449</td>\n",
" <td> 4.996997</td>\n",
" <td> 5.124701</td>\n",
" <td> 5.341814</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7896746</strong></td>\n",
" <td> 9.912966</td>\n",
" <td> 10.027621</td>\n",
" <td> 9.789004</td>\n",
" <td> 9.930211</td>\n",
" <td> 9.897345</td>\n",
" <td> 9.994229</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 257,
"text": [
" (400, 1) (400, 2) (400, 3) (500, 1) (500, 2) (500, 3)\n",
"7896736 5.915455 6.080636 6.029464 6.089484 6.362034 6.537947\n",
"7896738 5.629664 5.986666 5.375835 6.344232 5.816464 6.521697\n",
"7896742 8.787669 8.756463 8.521529 8.753673 8.429407 8.679226\n",
"7896744 5.068889 5.061301 5.007449 4.996997 5.124701 5.341814\n",
"7896746 9.912966 10.027621 9.789004 9.930211 9.897345 9.994229"
]
}
],
"prompt_number": 257
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# For some reason the applymap() flattened the MultiIndex =/\n",
"intensities.columns = pd.MultiIndex.from_tuples(intensities.columns)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 258
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Look at the data with PCA"
]
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"from sklearn.decomposition.pca import PCA"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 259
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pca = PCA(n_components=2)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 260
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"U, S, V = pca._fit(intensities.T)\n",
"# U.dot(S) is the Scores Matrix\n",
"# V.T is the Loadings Matrix"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 261
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"U.shape, S.shape, V.shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 262,
"text": [
"((6, 6), (6,), (6, 26440))"
]
}
],
"prompt_number": 262
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"U[:, :pca.n_components]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 263,
"text": [
"array([[-0.42941555, 0.05087651],\n",
" [-0.0875899 , 0.2740291 ],\n",
" [-0.35317195, 0.48220012],\n",
" [-0.23379827, -0.8087304 ],\n",
" [ 0.45411774, -0.13289725],\n",
" [ 0.64985792, 0.13452192]])"
]
}
],
"prompt_number": 263
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V.T[:, :pca.n_components]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 264,
"text": [
"array([[ 0.00918497, -0.0004308 ],\n",
" [ 0.0099731 , -0.01356314],\n",
" [-0.00230545, -0.00204178],\n",
" ..., \n",
" [-0.00197097, -0.00537986],\n",
" [-0.00228457, -0.00487048],\n",
" [-0.00258826, 0.00300406]])"
]
}
],
"prompt_number": 264
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Yd = dict()\n",
"Yd[\"400\"] = pca.transform(intensities[\"400\"].T)\n",
"Yd[\"500\"] = pca.transform(intensities[\"500\"].T)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 265
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"loadings = V.T[:, :pca.n_components]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 266
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"distances = np.apply_along_axis(linalg.norm, 1, loadings)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 267
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ind = distances.argsort()\n",
"ind = ind[::-1]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 268
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"loadings[ind[:5]]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 269,
"text": [
"array([[ 0.08791272, -0.16885458],\n",
" [-0.1098317 , 0.05097668],\n",
" [-0.01099295, 0.1159756 ],\n",
" [ 0.08103709, -0.0109812 ],\n",
" [-0.04511403, 0.05442568]])"
]
}
],
"prompt_number": 269
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"top = intensities.index[ind[:6]]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 270
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figsize(4, 9)\n",
"\n",
"plt.subplot(211)\n",
"plt.scatter(*zip(*Yd[\"400\"]), c='b', s=100, label=\"400\");\n",
"plt.scatter(*zip(*Yd[\"500\"]), c='r', s=100, label=\"5000\");\n",
"plt.legend();\n",
"plt.title(\"Score plot\")\n",
"plt.xlabel(\"PC1\");\n",
"plt.ylabel(\"PC2\");\n",
"\n",
"plt.subplot(212)\n",
"plt.scatter(*zip(*loadings), alpha=0.3);\n",
"plt.scatter(*zip(*loadings[ind[:6]]), c='r', marker='o', s=80, linewidths=1, \n",
" facecolors=\"none\", edgecolors='r');\n",
"\n",
"for i, probe in enumerate(top): \n",
" plt.text(loadings[ind[i],0] - 0.005, loadings[ind[i],1] - 0.01, \n",
" s=probe, horizontalalignment='right', verticalalignment='top');\n",
"plt.title(\"Loading plot\");\n",
"plt.xlabel(\"Loadings on PC1\");\n",
"plt.ylabel(\"Loadings on PC2\");\n",
"\n",
"plt.savefig(\"pca.pdf\", bbox_inches='tight')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nSXHdk5mZySuvvEJ2djb5+fkYDAZWrFjRbL3jx4/zt7/9jaVLl7bq+ufOnePAgQOsXLmShx9+mDNn\nzjQ5v2rVKu68885WXeN6RImT4rpn//793HjjjXh5eaHT6Zg+fTo//PDDL9bJzc1l+vTpLF++nODg\nYEBaSrm5uU3KXLCkAgICOHfuHAAmk4nKyko8PT0B8PPzAyA4OJiEhAQOHTpkbaO0tJR9+/YxefLk\ntrvh6wQlTorrnvDwcFJTU6mrq0MIwbZt24iIiGhSRlw07V1RUcHkyZN58cUXGTFihPW4n58frq6u\n7NmzByEEy5cv57bbbgOabnf2ySefkJiYaG2roaEBkEK0a9cuIiMjrW1+8sknTJkyBTs7u/a5+e5M\nq13qXZjr/PYUV8GLL74oIiIiRFRUlJg9e7ZoaGgQn376qQgMDBQODg7Cx8dHTJw4UQghxDPPPCOc\nnZ1FXFyc9V9JSYkQQoj9+/eLqKgoERISIh544AFr+/X19SI5OVmEhoaK4cOHi6ysLCGEED/88IOI\njo4WsbGxIjo6WixbtqxJvxISEsTWrVs75iF0IG3x7qkgTIVC0eaoIEyFQnHd0inipNfrSUpKon//\n/owfP56KiopLyuTk5DB27FgiIyOJioriP//5z1XV76qkpKR0dhcuoSv2Cbpmv1SfOo5OEaclS5aQ\nlJREWloaiYmJLFmy5JIytra2vPzyyxw/fpzU1FRef/11Tp061eL6XZWu+EXqin2Crtkv1aeOo1PE\n6eJo2jlz5lijbC/G19eXuLg4AFxcXBg4cKA14K0l9RUKRfemU8SpqKgIHx8fAHx8fCgqKvrF8tnZ\n2Rw6dIjhw4dfU32FQtH9aLfZuqSkJAoLCy85/txzzzFnzhzKy8utxzw9Pa2h/j/HYDCQkJDAY489\nZl175OHh0aL6mm6U/0ahuN5orbS0WybMr7/++ornfHx8KCwsxNfXl4KCAnr16nXZckajkRkzZnD3\n3Xc3WRTZ0voqjECh6L50yrDu4mjaDz744LKrsYUQzJ8/n4iICB5++OGrrq9QKLo3nRKEqdfrmTlz\nJufOnSMoKIg1a9bg7u5Ofn4+9913H19++SU7d+5k9OjRxMTEWIdnL7zwAhMnTrxifYVCcR3R6hjz\nTqSsrEyMGzdOhIWFiaSkJFFeXn7ZcvPmzRO9evUSUVFRTY4/+eSTIiAgwLpE4ULisM7sU0vrt1e/\nNm/eLAYMGCBCQ0PFkiVLrMfb8lld6RoX88ADD4jQ0FARExMjDh48eFV1O7pPffv2FdGgjjEuAAAI\ncElEQVTR0SIuLk4MHTq0w/p08uRJccMNNwh7e3vx0ksvXfX9dHSfrvY5dWtx+stf/iJefPFFIYQQ\nS5YsEYsXL75sue+//14cPHjwEiF46qmnxD//+c8u1aeW1m+PfplMJhESEiKysrJEY2OjiI2NFSdO\nnBBCtN2z+qVrXODLL78Ut9xyixBCiNTUVDF8+PAW1+3oPgkhRFBQkCgrK2t1P662T8XFxWLfvn3i\n73//exMh6MzndKU+CXH1z6lbL19pabzTqFGj8PDwuOw50caj2tb2qb1iuFrS7t69ewkNDSUoKAhb\nW1tmzZrVJDlaWzyr5q7x874OHz6ciooKCgsLW1S3I/t0cQhLW3+PWtKnnj17Eh8fj62t7VXX7eg+\nXeBqnlO3Fqe2iHd69dVXiY2NZf78+W2yDKa1fWqvGK6WtHtxNkeAwMBAa+ArtM2zau4av1QmPz+/\n2bod3SeQISvjxo0jPj6et99+u9X9aWmf2qNue7Z7tc+py2+q+UvxUhej0WiuOq5pwYIFPPHEEwA8\n/vjjLFq0iHfffbdT+9Sa+q3t1y9d61qf1dVc42La2hL5JVrbp507d+Lv709JSQlJSUmEh4czatSo\nDulTW9dtz3Z37dqFn59fi59TlxentoiXuhIXl//d737HlClTOr1Pranf2n4FBASQk5Nj/ZyTk2PN\n9Hitz+pqrnGlMhcyThqNxmbrdmSfAgICAPD39wfkkOb2229n7969rRanlvSpPeq2Z7sXMoK29Dl1\n62Fda+OdCgoKrH9/9tlnREdHd3qf2iuGqyXtxsfHk56eTnZ2No2NjaxevZqpU6cCbfesfukaF/f1\nww8/BCA1NRV3d3d8fHxaVLej+1RbW0t1dTUANTU1fPXVV23yPbqae/25RdeZz+lKfbqm59Qq930n\nU1ZWJhITEy+ZHs/LyxOTJk2ylps1a5bw8/MTdnZ2IjAw0JqN8J577hHR0dEiJiZG3HbbbaKwsLDT\n+3Sl+h3Vr02bNon+/fuLkJAQ8fzzz1uPt+Wzutw13nrrLfHWW29Zy/zpT38SISEhIiYmpsmeclfq\nX2u51j5lZmaK2NhYERsbKyIjIzu0TwUFBSIwMFC4uroKd3d30bt3b1FdXX3Fup3Zp2t5Ttd1JkyF\nQtF96dbDOoVCcf2ixEmhUHRJlDgpFIouiRInhULRJVHi9CvFxcWl3drMz88nOTm5zdtvK+bOnUu/\nfv0YNGgQQ4YMITU11XrupZdeYuDAgQwaNIhhw4axfPlyAF577TVCQ0PRav9/e3cXEsUaBnD8PyfF\ni5RVQYm9SDPoC2ZcCWcVW1aoLiJCWvIikRRCKiIIyqKQKLop7CYjjFJMVMiPboIul3DxA5QwCOqi\nYvdCC+miVjYNXPY5F+Kc9qzWiWPHPfT8roZh3nfeGdiHZ2fe95k/Vi2MqNaWBqff1K+YRbzcp9vt\nZnBwcM37XyuGYXDr1i2mpqa4ceMGJ06cAODevXsEg0EmJyeZmpoiGAw683X27NlDMBikqKhoPYf+\nW9HgpBwvXrygoqKC0tJSAoGAs37uwYMH2LaNx+PhyJEjLCwsABAOh6msrMSyLFpaWpx+IpGIM8Hu\n4cOHBAIBDhw4wLZt27h48aJzXGdnJ9u3b8fr9dLU1MSZM2cAGBwcxDRNPB4Pfr9/xbE2NzdjmiaW\nZTEwMAAsfYWkurqa2tpadu7cSX19/arXuhx0fD4fb9++BZbqhbW3tzsZYE5ODseOHQPA4/FoYPqv\nrdnsLPW/kp2dnbLPNE0JhUIiInLlyhU5e/asiEhSmYuWlha5c+eOiIgcOnRIenp6RETk7t27Tp/h\ncNgpBdPV1SUlJSUyNzcnX79+laKiIpmenpaZmRkpLi6WT58+yeLiovh8Pufz3qZpyvv370VEJBqN\npoxzaGhI9u/fL4lEQmZnZ2Xz5s3y4cMHefbsmbhcLpmZmZFEIiGVlZUyMjKS0r6xsVGGhoZERGRg\nYEAqKipkbm5O8vLyfnjffkV5FLUyzZwUANFolGg06qx1amhoIBQKAfDy5Ut8Ph+WZdHX18erV68A\nGBsb4+jRowDfzVL27t1LTk4OWVlZ7Nq1i0gkwsTEBH6/n9zcXDIyMqitrXWymaqqKhoaGujo6CAe\nj6f0Nzo6Sl1dHYZhUFhYiN/vZ3JyEsMwsG0bt9uNYRh4PB4ikUhKexGhubmZsrIyOjo66Ozs1Hrz\naSjtF/6q9fHtj7WxsZEnT55gmibd3d0MDw//VF9ZWVnO9oYNG4jH4ynPvL49X3t7OxMTEzx9+pTd\nu3fz/Plz8vPzVz0e/nretdK5/m75mVMgEEjan52dTTgcZsuWLT91ferX0MxJAeByucjLy2NkZASA\nnp4eqqurgaXPc23atInFxUV6e3udNlVVVTx69AiAvr6+f3wuwzAoLy9neHiYz58/E4/Hefz4sRNg\n3r17h23bXLt2jYKCAqanp5Pa+3w++vv7SSQSfPz4kVAohG3bP5X9rHTspUuXOH36tLNANRaLOW/r\nftRWrT3NnH5T8/PzSYXDzp07R3d3NydPnmR+fp6tW7fS1dUFwPXr1/F6vRQUFOD1eonFYgDcvn2b\nuro6bt68SU1NTVI2tLy9Wu0ot9vN5cuXsW2b/Px8duzYgcvlAuDChQu8efMGEWHfvn1YlpXU9vDh\nw4yPj1NaWophGLS2tlJYWMjr169TzrXaW8mV9p86dYpYLEZ5eTmZmZlkZmZy/vx5ANra2mhtbWV2\ndhbLsjh48CD379///k1W/4ou/FXr5suXL2zcuJF4PE4gEOD48ePU1NSs97BUmtC/dWrdXL16lbKy\nMkzTpKSkRAOTSqKZk1IqLWnmpJRKSxqclFJpSYOTUiotaXBSSqUlDU5KqbSkwUkplZb+BAkZBNYr\ntLU9AAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 278
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So from the PCA we postulate that these are the most significant gene expressions"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"top"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 186,
"text": [
"Index([8120057, 7960355, 8070255, 8138483, 8129562, 8154668], dtype=int64)"
]
}
],
"prompt_number": 186
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"intensities.index[ind[:20]]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 187,
"text": [
"Index([8120057, 7960355, 8070255, 8138483, 8129562, 8154668, 8088337, 7997228, 8037298, 7910948, 8169699, 7915074, 7926366, 8170185, 8049237, 8084217, 7932676, 7965429, 8014033, 8103879], dtype=int64)"
]
}
],
"prompt_number": 187
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"intensities.ix[top,:]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"3\" halign=\"left\">400</th>\n",
" <th colspan=\"3\" halign=\"left\">500</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td><strong>8120057</strong></td>\n",
" <td> 4.238772</td>\n",
" <td> 4.951186</td>\n",
" <td> -6.532970</td>\n",
" <td> 6.017365</td>\n",
" <td> 5.137470</td>\n",
" <td> 6.032272</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7960355</strong></td>\n",
" <td> 5.165132</td>\n",
" <td> 4.212327</td>\n",
" <td> 4.740066</td>\n",
" <td> 3.576956</td>\n",
" <td>-5.767488</td>\n",
" <td> 2.454549</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8070255</strong></td>\n",
" <td> 4.241193</td>\n",
" <td> 3.922185</td>\n",
" <td> 4.932036</td>\n",
" <td>-0.741596</td>\n",
" <td> 2.542105</td>\n",
" <td> 3.025524</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8138483</strong></td>\n",
" <td> 2.544087</td>\n",
" <td> 4.182260</td>\n",
" <td> 2.979466</td>\n",
" <td> 3.950447</td>\n",
" <td> 6.936820</td>\n",
" <td> 7.387784</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8129562</strong></td>\n",
" <td> 10.001712</td>\n",
" <td> 9.844613</td>\n",
" <td> 10.186285</td>\n",
" <td> 7.443606</td>\n",
" <td> 7.557948</td>\n",
" <td> 6.999118</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8154668</strong></td>\n",
" <td> 0.534231</td>\n",
" <td> 2.907070</td>\n",
" <td> 2.080909</td>\n",
" <td> 3.746257</td>\n",
" <td> 5.070000</td>\n",
" <td> 4.881648</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 188,
"text": [
" 400 500 \n",
" 1 2 3 1 2 3\n",
"8120057 4.238772 4.951186 -6.532970 6.017365 5.137470 6.032272\n",
"7960355 5.165132 4.212327 4.740066 3.576956 -5.767488 2.454549\n",
"8070255 4.241193 3.922185 4.932036 -0.741596 2.542105 3.025524\n",
"8138483 2.544087 4.182260 2.979466 3.950447 6.936820 7.387784\n",
"8129562 10.001712 9.844613 10.186285 7.443606 7.557948 6.999118\n",
"8154668 0.534231 2.907070 2.080909 3.746257 5.070000 4.881648"
]
}
],
"prompt_number": 188
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"intensities.ix[top,:]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"3\" halign=\"left\">400</th>\n",
" <th colspan=\"3\" halign=\"left\">500</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td><strong>8120057</strong></td>\n",
" <td> 4.238772</td>\n",
" <td> 4.951186</td>\n",
" <td> -6.532970</td>\n",
" <td> 6.017365</td>\n",
" <td> 5.137470</td>\n",
" <td> 6.032272</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7960355</strong></td>\n",
" <td> 5.165132</td>\n",
" <td> 4.212327</td>\n",
" <td> 4.740066</td>\n",
" <td> 3.576956</td>\n",
" <td>-5.767488</td>\n",
" <td> 2.454549</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8070255</strong></td>\n",
" <td> 4.241193</td>\n",
" <td> 3.922185</td>\n",
" <td> 4.932036</td>\n",
" <td>-0.741596</td>\n",
" <td> 2.542105</td>\n",
" <td> 3.025524</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8138483</strong></td>\n",
" <td> 2.544087</td>\n",
" <td> 4.182260</td>\n",
" <td> 2.979466</td>\n",
" <td> 3.950447</td>\n",
" <td> 6.936820</td>\n",
" <td> 7.387784</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8129562</strong></td>\n",
" <td> 10.001712</td>\n",
" <td> 9.844613</td>\n",
" <td> 10.186285</td>\n",
" <td> 7.443606</td>\n",
" <td> 7.557948</td>\n",
" <td> 6.999118</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8154668</strong></td>\n",
" <td> 0.534231</td>\n",
" <td> 2.907070</td>\n",
" <td> 2.080909</td>\n",
" <td> 3.746257</td>\n",
" <td> 5.070000</td>\n",
" <td> 4.881648</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 189,
"text": [
" 400 500 \n",
" 1 2 3 1 2 3\n",
"8120057 4.238772 4.951186 -6.532970 6.017365 5.137470 6.032272\n",
"7960355 5.165132 4.212327 4.740066 3.576956 -5.767488 2.454549\n",
"8070255 4.241193 3.922185 4.932036 -0.741596 2.542105 3.025524\n",
"8138483 2.544087 4.182260 2.979466 3.950447 6.936820 7.387784\n",
"8129562 10.001712 9.844613 10.186285 7.443606 7.557948 6.999118\n",
"8154668 0.534231 2.907070 2.080909 3.746257 5.070000 4.881648"
]
}
],
"prompt_number": 189
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"PLS regression with univariate response"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sklearn.pls import PLSRegression"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 190
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pls = PLSRegression(n_components=2)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 229
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"X = intensities.T.copy()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 230
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"X.shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 231,
"text": [
"(6, 26440)"
]
}
],
"prompt_number": 231
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"X.index"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 232,
"text": [
"MultiIndex\n",
"[(400, 1), (400, 2), (400, 3), (500, 1), (500, 2), (500, 3)]"
]
}
],
"prompt_number": 232
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"y = np.array([[float(i[0] > '400') for i in X.index]]).T"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 233
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"y.shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 234,
"text": [
"(6, 1)"
]
}
],
"prompt_number": 234
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pls.fit(X, y)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 235,
"text": [
"PLSRegression(copy=True, max_iter=500, n_components=2, scale=True, tol=1e-06)"
]
}
],
"prompt_number": 235
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"X.ix[\"400\", :]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 236,
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 3 entries, 1 to 3\n",
"Columns: 26440 entries, 7896736 to 8180179\n",
"dtypes: float64(26440)"
]
}
],
"prompt_number": 236
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"X_t = dict()\n",
"X_t[\"400\"] = pls.transform(X.ix[\"400\", :])\n",
"X_t[\"500\"] = pls.transform(X.ix[\"500\", :])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 237
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.scatter(*zip(*X_t[\"400\"]));\n",
"plt.scatter(*zip(*X_t[\"500\"]), c='r');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAUsAAAE1CAYAAABun8IvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHwRJREFUeJzt3X1wVOXh9vHvLlkCVEJeiuhmjbwETTaEuCGiYltXDWPr\nI5RGSSTU2JaXaZnacYitY1sxzPxqnjqlpcNIpdTy+EJNaC3F/mEHgmaAHwaIKKJJTSBZSAKIEYXC\nhoSE+/lD3SEFl1vM7rJyfWZ2Jnte9r7OmeTi3Hs2wWGMMYiISFjOWAcQEYkHKksREQsqSxERCypL\nERELKksREQsqSxERC+cty8rKSnJycsjNzaW0tJTu7m5KSkrw+Xz4fD7GjBmDz+cDIBAIMHTo0NC6\nBQsWRPwARESiISHcykAgwMqVK2lsbCQxMZGSkhKqqqqorq4ObfPQQw+RnJwcep6Zmckbb7wRucQi\nIjEQtiyTkpJwuVwEg0EGDRpEMBgkPT09tN4Yw5o1a3j11VcjHlREJJbCTsNTU1MpLy8nIyMDt9tN\ncnIyhYWFofWbN29m1KhRjBs3LrSstbUVn8+H3+9ny5YtkUsuIhJNJow9e/aY7Oxs09nZaU6dOmVm\nzJhhnn/++dD6H/7wh+a3v/1t6Hl3d7c5cuSIMcaY119/3Vx11VXm2LFjZ70uoIceeugRkUekhL2y\nrK+vZ8qUKaSlpZGQkEBRURFbt24FoLe3l7Vr11JSUhLafvDgwaSkpACQn5/PuHHjaG5uPudrG2Pi\n7vHYY4/FPMOllj1ec8dz9njNbYwJV2dfWNiyzMrKoq6ujq6uLowx1NTU4PV6AaipqSE7Oxu32x3a\nvrOzk76+PgBaWlpobm5m7NixEYwvIhIdYW/w5OXlUVZWRkFBAU6nk/z8fObPnw9AdXU1s2bN6rf9\npk2bWLRoES6XC6fTyYoVK/rdKRcRiVcOE+lr13MN6nBE/JI5Empra/H7/bGOcUHiNXu85ob4zR6v\nuSGy3aKyFJEvjUh2i37dUUTEgspSRMSCylJExILKUkTEgspSRMSCylJExILKUkTEgspSRMSCylJE\nxILKUkTEgspS5BLS0dFBY2Mjp06dinWUuKOyFLkEGGN4YN48JmZmMm3yZPLGj2ffvn2xjhVXVJYi\nl4A1a9bwvy+8QOvJk+w5fpzvtrczv7Q01rHiispS5BKwe9cuvn3iBEmfPL+vr4/d77wT00zxRmUp\ncgkYf+21rP/KVzj5yfOXHA6uycyMaaZ4o79nKXIJ6Ovr47577uF/16/nioQEDg0ezPotW7j22mtj\nHW1A6Y//isgXZoxh9+7dHDt2jLy8PIYPHx7rSANOZSkiYkF/KV1EJMZUliIiFlSWIiIWVJYiIhZU\nliIiFlSWIiIWVJYiIhZUliIiFlSWIiIWVJYiIhZUliIiFlSWIiIWzluWlZWV5OTkkJubS2lpKd3d\n3ZSUlODz+fD5fIwZMwafz9dv+/Hjx5OVlcX69esjGl5EJFoSwq0MBAKsXLmSxsZGEhMTKSkpoaqq\niurq6tA2Dz30EMnJyQA0NDRQXV1NQ0MDHR0dFBYW0tTUhNOpC1gRiW9hWywpKQmXy0UwGKS3t5dg\nMEh6enpovTGGNWvWMGvWLADWrVvHrFmzcLlcjB49mszMTLZv3x7ZIxARiYKwZZmamkp5eTkZGRm4\n3W6Sk5MpLCwMrd+8eTOjRo1i3LhxABw4cACPxxNa7/F46OjoiFB0EZHoCTsN37t3L0uXLiUQCDBi\nxAhmzpzJ6tWrmT17NgAvvPACpef5H+IcDsc5l1dUVIS+9vv9+P3+z5dcRC55tbW11NbWRmWssGVZ\nX1/PlClTSEtLA6CoqIitW7cye/Zsent7Wbt2LTt37gxtn56eTltbW+h5e3t7v2n7mc4sSxGRC/Hf\nF1qLFy+O2Fhhp+FZWVnU1dXR1dWFMYaamhq8Xi8ANTU1ZGdn43a7Q9tPnz6dqqoqenp6aG1tpbm5\nmcmTJ0csvIhItIS9sszLy6OsrIyCggKcTif5+fnMnz8fgOrq6tCNnU95vV6Ki4vxer0kJCSwfPny\nz5yGi4jEE/2HZSLypaH/sExEJMZUliIiFlSWIiIWVJYiIhZUliIiFlSWIiIWVJYiIhZUliIiFlSW\nIiIWVJYiIhZUliIiFlSWIiIWVJYiIhZUliIiFlSWIiIWVJYiIhZUliIiFlSWIiIWVJYiIhZUliIi\nFlSWIiIWVJYiIhZUliIiFlSWIiIWVJYiIhZUliIiFlSWIiIWVJYiIhZUliIiFlSWIiIWzluWlZWV\n5OTkkJubS2lpKd3d3QAsW7aM7OxsJkyYwMMPPwxAIBBg6NCh+Hw+fD4fCxYsiGx6EZEoSQi3MhAI\nsHLlShobG0lMTKSkpISqqioyMjJ46aWXeOutt3C5XLz//vuhfTIzM3njjTciHlxEJJrClmVSUhIu\nl4tgMMigQYMIBoO43W6eeuopHnnkEVwuFwAjR46MSlgRkVgJOw1PTU2lvLycjIwM3G43ycnJTJ06\nlaamJjZt2sSNN96I3++nvr4+tE9rays+nw+/38+WLVsifgAiItEQ9spy7969LF26lEAgwIgRI5g5\ncyarV6+mt7eXDz/8kLq6Onbs2EFxcTEtLS243W7a2tpISUlh586dzJgxg3feeYfhw4dH63hERCIi\nbFnW19czZcoU0tLSACgqKmLr1q14PB6KiooAuP7663E6nXzwwQekpaUxePBgAPLz8xk3bhzNzc3k\n5+ef9doVFRWhr/1+P36/f4AOSUQuFbW1tdTW1kZlLIcxxnzWyl27djF79mx27NjBkCFD+N73vsfk\nyZNJSEjgwIEDLF68mKamJgoLC9m/fz+dnZ2kpKQwaNAgWlpa+MY3vsHbb79NcnJy/0EdDsIMKyJy\nQSLZLWGvLPPy8igrK6OgoACn00l+fj7z588H4Ac/+AG5ubkMHjyYZ599FoBNmzaxaNEiXC4XTqeT\nFStWnFWUIiLxKOyVZcQG1ZXlBTHGcPz4cS677DIcDkes40gcMcbw3nvv0dfXh9vt/tJ+/0SyW/Qb\nPHFi48aNpKRcSWrqKK68chw7d+6MdSSJEz09Pdx1VzGjR3vJzLyOW265kxMnTsQ6VtxRWcaBw4cP\n8+1v38vRoy/Q2xvkvff+L1OnTufkyZOxjiZx4Fe/eoJXX+2iu/sgJ08eZMeOZB5++LFYx4o7Kss4\n8Pbbb5OQ4AVu/WRJMT09Q9i3b18sY0mc2Lr1Dbq6yoBEIIGTJ7/Pa69pZvJ5qSzjgNvtpqenCTjy\nyZJ9nDr1PpdffnksY0mc8HrHkpi4HjCAweVaT3b2uFjHiju6wRMnHnroFzz11F9wOG7i9OlafvWr\nn/Pggz+OdSyJA0ePHuWmmwppb+8DXKSlHWfbtle/lP/YRrJbVJZx5LXXXmPPnj3k5uZy3XXXxTqO\nxJGenh5ee+01Tp8+zY033sjQoUNjHSkiVJYiIhb00SERkRhTWYqIWFBZiohYUFmKiFhQWYqIWFBZ\niohYUFmKiFhQWYqIWFBZiohYUFmKiFhQWYqIWFBZiohYUFmKiFhQWYqIWFBZiohYUFmKiFhQWYqI\nWFBZiohYUFmKiFhQWYqIWFBZiohYUFmKiFhQWYqIWFBZiohYOG9ZVlZWkpOTQ25uLqWlpXR3dwOw\nbNkysrOzmTBhAg8//HC/7cePH09WVhbr16+PXHIRkShKCLcyEAiwcuVKGhsbSUxMpKSkhKqqKjIy\nMnjppZd46623cLlcvP/++wA0NDRQXV1NQ0MDHR0dFBYW0tTUhNOpC1gRiW9hWywpKQmXy0UwGKS3\nt5dgMIjb7eapp57ikUceweVyATBy5EgA1q1bx6xZs3C5XIwePZrMzEy2b98e+aMQ+ZI4fvw43y8p\n4arUVK4bN44NGzbEOpJ8ImxZpqamUl5eTkZGBm63m+TkZKZOnUpTUxObNm3ixhtvxO/3U19fD8CB\nAwfweDyh/T0eDx0dHZE9ApEvkfnf/S7d69ax+cMPebylhdIZM2hoaIh1LOE80/C9e/eydOlSAoEA\nI0aMYObMmaxevZre3l4+/PBD6urq2LFjB8XFxbS0tJzzNRwOxzmXV1RUhL72+/34/f4LPgiRL4uX\nXn6Ztp4eUoDRQHFfHxs2bMDr9cY42cWptraW2traqIwVtizr6+uZMmUKaWlpABQVFbF161Y8Hg9F\nRUUAXH/99TidTjo7O0lPT6etrS20f3t7O+np6ed87TPLUkQ+ljRsGPs/KUsD7Bs0iEnDh8c61kXr\nvy+0Fi9eHLGxwk7Ds7KyqKuro6urC2MMNTU1eL1eZsyYwSuvvAJAU1MTPT09fPWrX2X69OlUVVXR\n09NDa2srzc3NTJ48OWLhRb5sfvWb3/B/hg2jwuGgeMgQ2tPTKSkpiXUs4TxXlnl5eZSVlVFQUIDT\n6SQ/P5/58+cD8IMf/IDc3FwGDx7Ms88+C4DX66W4uBiv10tCQgLLly//zGm4iJzt+3PmMGbcODZu\n2MDNI0eyau5cvvKVr8Q6lgAOY4yJ+qAOBzEYVkS+5CLZLfoApIiIBZWliIgFlaWIiAWVpYiIBZWl\niIgFlaWIiAWVpYiIBZWliIgFlaWIiAWVpYiIBZWliIgFlaWIiAWVpYiIBZWliIgFlaWIiAWVpYiI\nBZWliIgFlaWIiAWVpYiIBZWliIgFlaWIiAWVpYiIBZWliIgFlaWIiAWVpYiIBZWliIgFlaWIiAWV\npYiIBZWliIgFlaWIiAWVpYiIhfOWZWVlJTk5OeTm5lJaWkp3dzcVFRV4PB58Ph8+n49//etfAAQC\nAYYOHRpavmDBgogfgIhINDiMMeazVgYCAW677TYaGxtJTEykpKSEO++8k0AgwPDhw1m4cOFZ20+b\nNo3du3eHH9ThIMywIiIXJJLdEvbKMikpCZfLRTAYpLe3l2AwSHp6OoDKTkQuKWHLMjU1lfLycjIy\nMnC73SQnJ1NYWAjAsmXLyMvLY86cOXz00UehfVpbW/H5fPj9frZs2RLZ9CIiURJ2Gr53716mTZvG\n5s2bGTFiBDNnzuSee+5h6tSpjBw5EoBHH32UgwcP8vTTT9PT08OJEydISUlh586dzJgxg3feeYfh\nw4f3H9Th4LHHHgs99/v9+P3+yByhiHxp1dbWUltbG3q+ePHiiM16w5ZldXU1GzZs4E9/+hMAzz33\nHHV1dTz55JOhbcK9T3nrrbeyZMkS8vPz+w+q9yxFJAJi9p5lVlYWdXV1dHV1YYyhpqYGr9fLoUOH\nQtusXbuW3NxcADo7O+nr6wOgpaWF5uZmxo4dG5HgIiLRlBBuZV5eHmVlZRQUFOB0OsnPz2fevHnM\nnTuXN998E4fDwZgxY1ixYgUAmzZtYtGiRbhcLpxOJytWrCA5OTkqByIiEklhp+ERG1TTcBGJgJhN\nw0VE5GMqSxERCypLERELKksREQsqSxERCypLERELKksREQsqSxERCypLERELKksREQsqSxERCypL\nERELKksREQsqSxERCypLERELKksREQsqSxERCypLERELKksREQsqSxERCypLERELKksREQsqSxER\nCypLERELKksREQsqSxERCypLERELKksREQsqSxERCypLERELKksREQvnLcvKykpycnLIzc2ltLSU\n7u5uKioq8Hg8+Hw+fD4fL7/8cr/tx48fT1ZWFuvXr49oeBGRaHEYY8xnrQwEAtx22200NjaSmJhI\nSUkJd955J4FAgOHDh7Nw4cJ+2zc0NFBaWsqOHTvo6OigsLCQpqYmnM7+nexwOAgzrIjIBYlkt4S9\nskxKSsLlchEMBunt7SUYDJKeng5wzkDr1q1j1qxZuFwuRo8eTWZmJtu3b49IcBGRaApblqmpqZSX\nl5ORkYHb7SY5OZnCwkIAli1bRl5eHnPmzOGjjz4C4MCBA3g8ntD+Ho+Hjo6OCMYXEYmOhHAr9+7d\ny9KlSwkEAowYMYKZM2eyevVqfvSjH7Fo0SIAHn30UcrLy3n66afP+RoOh+OcyysqKkJf+/1+/H7/\nhR2BiFyyamtrqa2tjcpYYcuyvr6eKVOmkJaWBkBRURFbt25l9uzZoW3mzp3LtGnTAEhPT6etrS20\nrr29PTRt/29nlqWIyIX47wutxYsXR2yssNPwrKws6urq6OrqwhhDTU0NXq+XQ4cOhbZZu3Ytubm5\nAEyfPp2qqip6enpobW2lubmZyZMnRyy8iEi0hL2yzMvLo6ysjIKCApxOJ/n5+cybN4+5c+fy5ptv\n4nA4GDNmDCtWrADA6/VSXFyM1+slISGB5cuXf+Y0XEQknoT96FDEBtVHh0QkAmL20SEREfmYylJE\nxILKUkTEgspSRMSCylJExILKUkTEgspSRMSCylJExILKUkTEgspSRMSCylJExILKUkTEgspSRMSC\nylJExILKUkTEgspSRMSCylJExILKUkTEgspSRMSCylJExILKUkTEgspSRMSCylJExILKUkTEgspS\nRMSCylJExILKUkTEgspSRMSCylJExILKUkTEgspSRMTCecuysrKSnJwccnNzKS0tpbu7O7RuyZIl\nOJ1Ojhw5AkAgEGDo0KH4fD58Ph8LFiyIXHIRkShKCLcyEAiwcuVKGhsbSUxMpKSkhKqqKu6//37a\n2trYsGEDV199db99MjMzeeONNyIaWkQk2sJeWSYlJeFyuQgGg/T29hIMBklPTwdg4cKFPPHEE1EJ\nKSISa2HLMjU1lfLycjIyMnC73SQnJ1NYWMi6devweDxMnDjxrH1aW1vx+Xz4/X62bNkSseAiItEU\ndhq+d+9eli5dSiAQYMSIEcycOZNnn32W5cuXs379+tB2xhgA3G43bW1tpKSksHPnTmbMmME777zD\n8OHDz3rtioqK0Nd+vx+/3z8wRyQil4za2lpqa2ujMpbDfNp051BdXc2GDRv405/+BMBzzz3HqlWr\naGhoYOjQoQC0t7eTnp7O9u3bufzyy/vtf+utt7JkyRLy8/P7D+pwEGZYEZELEsluCTsNz8rKoq6u\njq6uLowx1NTUcPfdd3Po0CFaW1tpbW3F4/Gwc+dOLr/8cjo7O+nr6wOgpaWF5uZmxo4dG5HgIiLR\nFHYanpeXR1lZGQUFBTidTvLz85k/f36/bRwOR+jrTZs2sWjRIlwuF06nkxUrVpCcnByZ5CIiURR2\nGh6xQTUNF5EIiNk0XEREPqayFBGxoLIUEbGgshQRsRD2briIDLxgMMjatWv5z3/+Q2FhIZmZmbGO\nJBZ0N1wkio4fP05BwS20t6dhzFU4HC/x8st/5+tf/3qso30pRLJbdGUpEkV//OMfCQTG0t29BnAA\n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\n+cUvfnFR5z5TdXU1zz///IDlPJeBzN7b20t7ezs333wzS5Ys4Xe/+x0PPfQQzz777EWdG2D16tW4\n3W6OHz/O3XffzXPPPcd99913wfk+d1lu2LDhcw+ydetWvvOd7zBo0CBGjhzJzTffTH19fdiyTE9P\nZ//+/bjdbnp7ezl69Cipqamfe+wzDVT2119/na997WuhKzL4+DOln15pDnT2C8n9qaqqKkpLS/st\nu+uuu7jrrrsA+OMf/0hCQkJEcsPAZm9sbGTMmDGh75uZM2fy61//OiLZB/qcA+zatYve3l58Pl9o\n2cV+ztPS0hg2bBhFRUUA3HPPPTz99NMRyT7Q59ztdgNw2WWXUVpayvbt27nvvvsuOHfEpuFnvleQ\nlZXFK6+8AsCJEyeoq6sjOzs77P7Tp0/nmWeeAeBvf/tbVK/mzpc9KyuLK664gqSkJLZt24Yxhuee\ne45vf/vbMc3+3+/PnD59mr/+9a9nvY/z6TTqww8/5A9/+ANz584FLp5zDufOPnbsWP7973/T2dkJ\nfPzD9emVxMV+zgFeeOGFs36gL/Zz7nA4mDZtGq+++ioAGzduJCcnB7i4z3lfX1/o++TUqVP885//\nJDc394vltr4dZeHvf/+78Xg8ZsiQIWbUqFHmm9/8pjHm41v1s2fPNhMmTDBer9f85je/Ce3z05/+\n1Hg8HjNo0CDj8XjM4sWLQ/vMnDkzdHu/tbV1IKMOSPZPPzo0btw488ADD4SWRzP7Z+U2xphXX33V\n3HTTTWftM2vWLOP1eo3X6zXV1dUxyX2h2Z955pnQR4emT59ujhw5EvXsF5LbGGPGjh1r3n333X7L\n4uGc79u3z3zjG98wEydONIWFhaatrS3q2T9v7hMnTphJkyaFPiL34IMPmtOnT3+h3A5j9LuHIiLn\no7+ULiJiQWUpImJBZSkiYkFlKSJiQWUpImJBZSkiYuH/A5M96N0bIDy9AAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 238
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"X_t"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 239,
"text": [
"{'400': array([[-1762.02532592, 864.11423059],\n",
" [-1768.23145069, 843.45114565],\n",
" [-1792.9036313 , 864.10397863]]),\n",
" '500': array([[-1766.60398883, 859.94466407],\n",
" [-1802.0542783 , 842.67933627],\n",
" [-1761.77614298, 872.52397447]])}"
]
}
],
"prompt_number": 239
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"y"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 240,
"text": [
"array([[ 0.],\n",
" [ 0.],\n",
" [ 0.],\n",
" [ 1.],\n",
" [ 1.],\n",
" [ 1.]])"
]
}
],
"prompt_number": 240
},
{
"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