Skip to content

Instantly share code, notes, and snippets.

@jamesmcm
Created July 7, 2014 11:45
Show Gist options
  • Save jamesmcm/e13ee77a4407a68cf810 to your computer and use it in GitHub Desktop.
Save jamesmcm/e13ee77a4407a68cf810 to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": "",
"signature": "sha256:b74bcc137bed51c00b7639c98ccca179ff060633fe57de810a221e4d81490959"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Write linear model to generate gene expression data from SNPs\n",
"%pylab inline\n",
"\n",
"import numpy as np\n",
"import GPy\n",
"import pylab as pb\n",
"#Columns are samples\n",
"X = np.genfromtxt('ALLsnpspanama.csv', delimiter=',')[1:,1:]\n",
"#Y = WX + N , W is sparse\n",
"print X.shape\n",
"#Use one SNP, MKT1\n",
"\n",
"\n",
"#parse SNPs\n",
"#(8000,13000)\n",
"ng=50\n",
"W=np.zeros((ng,13314))\n",
"W[:,[2000]]=8\n",
"#W[:,[9000]]=4\n",
"#W[:,[7000]]=3\n",
"#W[:,[13000]]=2\n",
"#W[:,[5]]=1\n",
"\n",
"Y=np.dot(W,X) + np.random.normal(size=(ng,182))\n",
"\n",
"print W[0, 1000]\n",
"print W[0, 999]\n",
"print np.dot(W,X).shape\n",
"print np.random.normal(size=(1,182)).shape\n",
"pb.matshow(Y)\n",
"pb.colorbar()\n",
"print Y.shape\n",
"pb.matshow(X[1000,:].reshape((1,182)))\n",
"pb.colorbar()\n",
"pb.matshow(X[453,:].reshape((1,182)))\n",
"pb.colorbar()\n",
"#fe=open(\"ALLexprpanama.csv\",\"r\")\n",
"\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n",
"(13314, 182)"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"0.0"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"0.0\n",
"(50, 182)"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"(1, 182)\n",
"(50, 182)"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/is/ei/jmcmurr/virtualenv/local/lib/python2.7/site-packages/GPy-0.4.9-py2.7.egg/GPy/util/linalg.py:31: UserWarning: warning: caught this exception:'module' object has no attribute '_dotblas'\n",
" warnings.warn(\"warning: caught this exception:\" + str(e))\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<matplotlib.colorbar.Colorbar instance at 0x47a0f80>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x2371710>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x4ff9550>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAyYAAACICAYAAAASyf8xAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFo9JREFUeJzt3X1sW9X9x/HPLXZL+vDrM6GxvbnFJnbVNhiSFtR1FMRI\nWwmvHRNKN41SsmJ1y4+hTWKMTRplCAhiE1vDpoDKQ7eRBmmsLlPionRLgaLWUFrgt3aQIgKOgYjQ\nhj6ENsTk90eLHdvXDyFJ3YX3SzpS7/XX59wmvkm++t5zjtHf398vAAAAACigMYW+AAAAAAAgMQEA\nAABQcCQmAAAAAAqOxAQAAABAwZGYAAAAACg4EhMAAAAABUdiAgAAAGBQbr75ZhUXF2v+/PkZY269\n9Va53W6VlZVp3759OfskMQEAAAAwKGvXrlUoFMr4elNTkw4dOqS2tjY98sgjWr9+fc4+SUwAAAAA\nDMqSJUs0derUjK9v27ZNa9askSQtWrRI3d3d6uzszNoniQkAAACAYRWNRuVwOOLHdrtdHR0dWd9D\nYgIAAABg2PX39ycdG4aRNZ7EBAAAAIAkqcgwZJi0SZMmDaofm82mSCQSP+7o6JDNZsv6HsuXumIA\nAAAAo85JSfeYnP/V8eOD6sfv96uurk5VVVXavXu3pkyZouLi4qzvITEBAAAAEPc/ecSsXr1aO3fu\nVFdXlxwOhzZs2KDPPvtMkhQIBLRixQo1NTXJ5XJpwoQJevzxx3P2afSnPvwFAAAA4CvJMAw9anJ+\nndLnjAw3KiYAAAAA4ooKNC6JCQAAAIC4fB7lGgmsygUAAAAgrsikmQmFQvJ4PHK73aqtrU17/ciR\nI1q1apXKysq0aNEi/fvf/846LokJAAAAgLh8EpNYLKaamhqFQiEdOHBADQ0NOnjwYFLMvffeq0sv\nvVSvvfaaNm/erJ/85CdZxyUxAQAAABCXT2ISDoflcrnkdDpltVpVVVWlYDCYFHPw4EFdddVVkqTS\n0lK1t7fro48+yjguiQkAAACAuEkmLVU0GpXD4Ygf2+12RaPRpJiysjI988wzkk4nMu+++646Ojoy\njktiAgAAACBuvElLZRhGzn7uuOMOdXd3y+fzqa6uTj6fT+edd17GeFblAgAAABBXZJFe/FzaNXDb\nkpQtTGw2myKRSPw4EonIbrcnxUyaNEmPPfZY/Hj27NmaM2dOxnHZYBEAAACApNOVkN7J6efHfpK8\nwWJfX59KS0u1Y8cOlZSUaOHChWpoaJDX643HfPLJJyoqKtLYsWP16KOPateuXXriiScyjk3FBAAA\nAECcdVzuGIvForq6OlVWVioWi6m6ulper1f19fWSpEAgoAMHDuimm26SYRiaN2+eNm3alLVPKiYA\nAAAAJJ2umPR/zeT8e8kVk5FAxQQAAABAQh4Vk5FAYgIAAAAgYUJhhiUxAQAAAJBwfmGGZR8TAAAA\nAAnjTJqJUCgkj8cjt9ut2tratNe7urq0bNkyXXLJJZo3b17WFbkkJr8DAAAAOMMwDPWvMDnflDz5\nPRaLqbS0VC0tLbLZbKqoqEhbLviuu+7SqVOndN9996mrq0ulpaXq7OyUxWL+0BYVEwAAAAAJ55u0\nFOFwWC6XS06nU1arVVVVVQoGg0kxs2bN0tGjRyVJR48e1fTp0zMmJRJzTAAAAAAMlMeqXNFoVA6H\nI35st9u1Z8+epJh169bp6quvVklJiY4dO6ann346a59UTAAAAAAkTDBpKQzDyNnNvffeq0suuUTv\nv/++9u/frx//+Mc6duxYxngqJgAAAAASzpdaO6TWaOYQm82mSCQSP45EIrLb7UkxL730kn75y19K\nki666CLNnj1bb775psrLy037JDEBAAAAkDBOWnrR6faFDS8nh5SXl6utrU3t7e0qKSlRY2OjGhoa\nkmI8Ho9aWlq0ePFidXZ26s0339ScOXMyDktiAgAAACAhjzkmFotFdXV1qqysVCwWU3V1tbxer+rr\n6yVJgUBAd955p9auXauysjJ9/vnneuCBBzRt2rSMfbJcMAAAAABJZ5YLvtfk/J3JywWPBComAAAA\nABLyqJiMBBITAAAAAAkFSkxYLhgAAABAQh7LBUtSKBSSx+OR2+1WbW1t2usPPvigfD6ffD6f5s+f\nL4vFou7u7ozDMscEAAAAgKQzc0waTM6vTp5jEovFVFpaqpaWFtlsNlVUVKihoUFer9e033/84x96\n6KGH1NLSknFsKiYAAAAAEsaZtBThcFgul0tOp1NWq1VVVVUKBoMZu3zqqae0evXqrMOSmAAAAABI\nON+kpYhGo3I4HPFju92uaNR8R8aenh5t375d119/fdZhmfwOAAAAICHDnJKBDMPIu7tnn31W3/jG\nNzRlypSscSQmAAAAABLGSa17pdZXM4fYbDZFIpH4cSQSkd1uN43dsmVLzse4JCa/AwAAADjDMAz1\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x4fff650>"
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Do GPy ML based regression\n",
"#Start with no SNPs, add SNPs by greedy forward selection - add best SNP at each step, is there a maxima?\n",
"#Y ~ N(0, s^2 XX^T + e^2 I )\n",
"\n",
"X=X.transpose()\n",
"Y=Y.transpose()\n",
"print X.shape\n",
"#Y=Y.reshape((182,1))\n",
"print Y.shape\n",
"chosenSNPS=[]\n",
"X2=np.zeros((182,0))\n",
"print X2.shape\n",
"print X2.dtype\n",
"k = GPy.kern.linear(input_dim=0)\n",
"m = GPy.models.GPRegression(X2,Y,k)\n",
"m.optimize(messages=False)\n",
"#m['.*variance']=1\n",
"#m['linear_variance']=10000\n",
"bestll=m.log_likelihood()\n",
"print m\n",
"print bestll\n",
"#provides initial parameters for 0 SNPS\n",
"oldparams=m['.*variance']\n",
"for step in range(100):\n",
" hasbeenadded=False\n",
" #bestll=np.inf\n",
" bestSNP=np.nan\n",
" X2=np.hstack([X2, np.zeros((182, 1))])\n",
" tempbestll=bestll\n",
" for SNP in np.array(list(set(range(X.shape[1])).difference(set(chosenSNPS)))):\n",
" X2[:,-1]=X[:,SNP]\n",
" m.X=X2\n",
" m.kern.X=X2\n",
" m.input_dim=step+1\n",
" m.kern.input_dim=step+1\n",
" #m['.*variance']=1\n",
" #m['linear_variance']=10000\n",
" #m.optimize(messages=False)\n",
" #print m\n",
" m.update_likelihood_approximation()\n",
" #print m.log_likelihood()\n",
" if m.log_likelihood() > tempbestll:\n",
" hasbeenadded=True\n",
" tempbestll=m.log_likelihood()\n",
" bestSNP=SNP\n",
" #print SNP\n",
" if hasbeenadded==False:\n",
" print \"converged: \" + str(len(chosenSNPS)) + \"SNPs\" \n",
" X2=X2[:,:-1]\n",
" break\n",
" X2[:,-1]=X[:,bestSNP]\n",
"\n",
" #print \"X2\" + str(X2.shape)\n",
" k = GPy.kern.linear(input_dim=step+1)\n",
" tempm = GPy.models.GPRegression(X2,Y,k)\n",
" tempm.optimize(messages=False)\n",
" print tempm.log_likelihood()\n",
" if tempm.log_likelihood()>bestll:\n",
" bestll=tempm.log_likelihood()\n",
" m=tempm\n",
" oldparams=m['.*variance']\n",
" chosenSNPS.append(bestSNP)\n",
" else:\n",
" print \"converged: \" + str(len(chosenSNPS)) + \"SNPs\" \n",
" X2=X2[:,:-1]\n",
" break\n",
" #print X2.shape\n",
" \n",
"pb.matshow(X2[:,:].transpose())\n",
"pb.colorbar()\n",
"pb.show()\n",
"\n",
"#m.plot()\n",
"#print m\n",
"\n",
"#print m.predict(np.array([1]))\n",
"#print m.predict(np.array([2]))\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(182, 13314)\n",
"(182, 50)\n",
"(182, 0)\n",
"float64\n",
"\n",
"Log-likelihood: -2.895e+04\n",
"\n",
" Name | Value | Constraints | Ties | prior \n",
"------------------------------------------------------------------\n",
" linear_variance | 1.0000 | (+ve) | | \n",
" noise_variance | 33.9334 | (+ve) | | \n"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"-28948.3701694\n",
"-13128.8329345"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"converged: 1SNPs"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x2360390>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print chosenSNPS\n",
"print m\n",
"pb.matshow(X[:,chosenSNPS].transpose())\n",
"pb.colorbar()\n",
"pb.show()\n",
"pb.matshow(X[:,1000].reshape(1,182))\n",
"pb.colorbar()\n",
"pb.show()\n",
"#print m.plot()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[2000]\n",
"\n",
"Log-likelihood: -1.331e+04\n",
"\n",
" Name | Value | Constraints | Ties | prior \n",
"------------------------------------------------------------------\n",
" linear_variance | 63.7540 | (+ve) | | \n",
" noise_variance | 0.9998 | (+ve) | | \n",
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x5731fd0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x47ccb50>"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def BiasedHSIC(x, y, kernelx, kernely):\n",
" nx=float(x.shape[0])\n",
" ny=float(y.shape[0])\n",
" \n",
" assert nx == ny, \\\n",
" \"Argument 1 and 2 have different number of data points\"\n",
"\n",
" kMat=kernelx.K(x)\n",
" hlhMat = ComputeHLH(y, kernely)\n",
" return numpy.sum(numpy.sum(kMat * hlhMat)) / ((nx-1)*(nx-1))\n",
" \n",
"\n",
"def ComputeHLH(y, kernely):\n",
" ny=float(y.shape[0])\n",
" lMat=kernely.K(y)\n",
" sL = numpy.sum(lMat, axis=1)\n",
" ssL = numpy.sum(sL)\n",
" return lMat - numpy.add.outer(sL, sL)/ny + ssL/(ny*ny)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def calcHSIC(x,y,kernx,kerny):\n",
" kernx=kernelx2.K(x)\n",
" kerny=kernely2.K(y)\n",
" m=x.shape[0]\n",
" H=np.eye(m)-(m**(-1))\n",
" print H.shape\n",
" HSIC=((m-1)**(-2))*np.trace(np.dot(kernx,np.dot(H, np.dot(kerny, H))))\n",
" return HSIC"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 42
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Do HSIC regression\n",
"#Start with no SNPs, add SNPs by greedy forward selection - add best SNP at each step, is there a maxima?\n",
"#Y ~ N(0, s^2 XX^T + e^2 I )\n",
"\n",
"#X=X.transpose()\n",
"#Y=Y.transpose()\n",
"#print X.shape\n",
"#print Y.shape\n",
"chosenSNPS2=[]\n",
"X2=np.zeros((182,0))\n",
"#print X2.shape\n",
"#print X2.dtype\n",
"\n",
"Y=Y.transpose()\n",
"#X=X.transpose()\n",
"print X2.shape\n",
"print Y.shape\n",
"k2 = GPy.kern.linear(input_dim=0)\n",
"m2 = GPy.models.GPRegression(X2,Y,k2)\n",
"m2.optimize(messages=False)\n",
"#m['.*variance']=1\n",
"#m['linear_variance']=10000\n",
"bestll=m2.log_likelihood()\n",
"X=X.transpose()\n",
"oldHSIC=0\n",
"print m2\n",
"print bestll\n",
"#provides initial parameters for 0 SNPS\n",
"oldparams=m['.*variance']\n",
"kernelx2 = GPy.kern.linear(input_dim=ng)\n",
"kernely2 = GPy.kern.linear(input_dim=X.shape[1])\n",
"\n",
"#print X.shape\n",
"for step in range(500):\n",
" hasbeenadded=False\n",
" #bestll=np.inf\n",
" bestSNP=np.nan\n",
" X2=np.hstack([X2, np.zeros((182, 1))])\n",
" tempbestHSIC=oldHSIC\n",
"\n",
" for SNP in np.array(list(set(range(X.shape[1])).difference(set(chosenSNPS2)))):\n",
" X2[:,-1]=X[:,SNP]\n",
" m2.X=X2\n",
" m2.kern.X=X2\n",
" m2.input_dim=step+1\n",
" m2.kern.input_dim=step+1\n",
"\n",
" m2.update_likelihood_approximation()\n",
" \n",
" m2._Xoffset = np.zeros((1, m2.input_dim))\n",
" m2._Xscale = np.ones((1, m2.input_dim))\n",
"\n",
" residuals=m2.predict(X2)[0]\n",
"\n",
" newHSIC=BiasedHSIC(residuals, X, kernelx2, kernely2)\n",
" if newHSIC > tempbestHSIC:\n",
" hasbeenadded=True\n",
" #oldHSIC=newHSIC\n",
" tempbestHSIC=newHSIC\n",
" bestSNP=SNP\n",
" if hasbeenadded==False:\n",
" print \"converged: \" + str(len(chosenSNPS2)) + \"SNPs\" \n",
" X2=X2[:,:-1]\n",
" break\n",
" X2[:,-1]=X[:,bestSNP]\n",
"\n",
" #print \"X2\" + str(X2.shape)\n",
"\n",
" k2 = GPy.kern.linear(input_dim=step+1)\n",
"\n",
" tempm2 = GPy.models.GPRegression(X2,Y,k2)\n",
" tempm2.optimize(messages=False)\n",
" residuals=tempm2.predict(X2)[0]\n",
"\n",
" newHSIC=BiasedHSIC(residuals, X, kernelx2, kernely2)\n",
" if newHSIC > oldHSIC:\n",
" #hasbeenadded=True\n",
" oldHSIC=newHSIC\n",
" m2=tempm2\n",
" print newHSIC\n",
" print m2.log_likelihood()\n",
" oldparams=m2['.*variance']\n",
" chosenSNPS2.append(bestSNP)\n",
" else:\n",
" print \"converged: \" + str(len(chosenSNPS2)) + \"SNPs\" \n",
" X2=X2[:,:-1]\n",
" break\n",
" #print X2.shape\n",
" \n",
"pb.matshow(X2[:,:].transpose())\n",
"pb.colorbar()\n",
"pb.show()\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(182, 0)\n",
"(182, 50)\n",
"70946.6543522"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"-13128.8329345\n",
"71578.4048438"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"-13307.7618622\n",
"71847.592071"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"-13463.5405063\n",
"71968.0926562"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"-13551.0084463\n",
"72049.3482865"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"-13688.9741254\n",
"72113.7976689"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"-13822.7207666\n",
"72161.9190457"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"-13957.1425278\n",
"converged: 7SNPs"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAyYAAACICAYAAAASyf8xAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHONJREFUeJzt3X1wVPW9x/HPkV2euaCIKdnd64qJeSgYoxuRq9aohQgd\nU1CrYTpKMdAMEpVp6WDb61ScDhLb/mFNHyKDVKqEaB8IdmClsQ0oVFMritekEltXNqukRg0EIoSs\nuX8Am+xmH90nEt6vmTOTs/vd3+9scs4m3/zO7/c1+vr6+gQAAAAAaXROug8AAAAAAEhMAAAAAKQd\niQkAAACAtCMxAQAAAJB2JCYAAAAA0o7EBAAAAEDakZgAAAAAiMndd9+tjIwMzZgxI2TMfffdp+zs\nbBUUFGjv3r0R2yQxAQAAABCTxYsXy+l0hnx+27Ztevfdd9Xa2qonnnhCy5Yti9gmiQkAAACAmFx7\n7bU699xzQz6/detWLVq0SJI0c+ZMdXZ2qr29PWybJCYAAAAAEsrj8chms/n2rVar2trawr6GxAQA\nAABAwvX19fntG4YRNp7EBAAAAIAkaYxhyAiyTZgwIaZ2LBaL3G63b7+trU0WiyXsa0xf6IgBAAAA\nDDvHJP04yOP/e+RITO2UlpaqurpaZWVleuWVVzRp0iRlZGSEfQ2JCQAAAACf/4oiZuHChdq5c6c6\nOjpks9m0evVqnThxQpJUUVGhefPmadu2bcrKytK4ceO0YcOGiG0afYE3fwEAAAA4KxmGoXVBHl+q\nwXNGEo0REwAAAAA+Y9LUL4kJAAAAAJ9obuVKBlblAgAAAOAzJsgWjNPpVG5urrKzs1VVVTXo+U8/\n/VQLFixQQUGBZs6cqbfffjtsvyQmAAAAAHyiSUy8Xq8qKyvldDrV3Nys2tpatbS0+MWsWbNGl19+\nud58801t3LhR999/f9h+SUwAAAAA+ESTmDQ1NSkrK0t2u11ms1llZWWqr6/3i2lpadH1118vScrJ\nyZHL5dJHH30Usl8SEwAAAAA+E4JsgTwej2w2m2/farXK4/H4xRQUFOgPf/iDpJOJzPvvv6+2traQ\n/ZKYAAAAAPAZG2QLZBhGxHYeeOABdXZ2qrCwUNXV1SosLNSIESNCxrMqFwAAAACfMSbp5c+l3QPL\nlgSUMLFYLHK73b59t9stq9XqFzNhwgQ9+eSTvv2LLrpI06ZNC9kvBRYBAAAASDo5EtIzcfDjIw/5\nF1js7e1VTk6OXnzxRWVmZurKK69UbW2t8vLyfDGHDh3SmDFjNHLkSK1bt067d+/Wb37zm5B9M2IC\nAAAAwMc8KnKMyWRSdXW1SkpK5PV6VV5erry8PNXU1EiSKioq1NzcrG9961syDEPTp0/X+vXrw7bJ\niAkAAAAASSdHTPr+O8jjB/xHTJKBERMAAAAA/aIYMUkGEhMAAAAA/calp1sSEwAAAAD9RqenW+qY\nAAAAAOg3KsgWhNPpVG5urrKzs1VVVTXo+Y6ODt1000267LLLNH369LArcklMfgcAAABwimEY6psX\n5PFt/pPfvV6vcnJy1NDQIIvFoqKiokHLBT/00EM6fvy4HnnkEXV0dCgnJ0ft7e0ymYLftMWICQAA\nAIB+o4NsAZqampSVlSW73S6z2ayysjLV19f7xUydOlWHDx+WJB0+fFiTJ08OmZRIzDEBAAAAMFAU\nq3J5PB7ZbDbfvtVq1auvvuoXs3TpUt1www3KzMxUV1eXnn322bBtMmICAAAAoN+4IFsAwzAiNrNm\nzRpddtll+uCDD/TGG29o+fLl6urqChnPiAkAAACAfqOlxjap0RM6xGKxyO12+/bdbresVqtfzJ49\ne/TDH/5QknTxxRfroosu0jvvvCOHwxG0TRITAAAAAP1GScUXn9xOW/13/xCHw6HW1la5XC5lZmaq\nrq5OtbW1fjG5ublqaGjQ1Vdfrfb2dr3zzjuaNm1ayG5JTAAAAAD0i2KOiclkUnV1tUpKSuT1elVe\nXq68vDzV1NRIkioqKvSDH/xAixcvVkFBgT7//HM9+uijOu+880K2yXLBAAAAACSdWi54TZDHf+C/\nXHAyMGICAAAAoF8UIybJkJBVuSJVfQSGO7vdrksvvVSFhYW68sorJUmffPKJZs+erUsuuURz5sxR\nZ2dnmo8SSI67775bGRkZmjFjhu+xcOf/I488ouzsbOXm5mrHjh3pOGQgaYJdDw899JCsVqsKCwtV\nWFio7du3+57jesAZKcrK74kWd2Li9XpVWVkpp9Op5uZm1dbWqqWlJRHHBgwZhmGosbFRe/fuVVNT\nkyRp7dq1mj17tvbv368bb7xRa9euTfNRAsmxePFiOZ1Ov8dCnf/Nzc2qq6tTc3OznE6n7rnnHn3+\n+efpOGwgKYJdD4Zh6Dvf+Y727t2rvXv3au7cuZK4HnAGi2K5YCny4MRPf/pTX0I+Y8YMmUymsP+o\njTsxiabqI3A2CLzvcuvWrVq0aJEkadGiRdqyZUs6DgtIumuvvVbnnnuu32Ohzv/6+notXLhQZrNZ\ndrtdWVlZvmQeGA6CXQ9S8HvzuR5wxoqi8ns0gxMrV670JeSPPPKIiouLNWnSpJDdxp2YBKv66PGE\nWfQYGIYMw9BXv/pVORwOrVu3TpLU3t6ujIwMSVJGRoba29vTeYhASoU6/z/44AO/de75nYGzxeOP\nP66CggKVl5f7/mPM9YAzVhS3csU6OLFp0yYtXLgwbLdxJybRVH0Ehrvdu3dr79692r59u37xi1/o\npZde8nveMAyuFZy1Ip3/XBsY7pYtW6b33ntPb7zxhqZOnarvfve7IWO5HnBGiGLEJJbBie7ubr3w\nwgu69dZbw3Ybd2ISTdVHYLibOnWqJGnKlClasGCBmpqalJGRoYMHD0qSPvzwQ11wwQXpPEQgpUKd\n/4G/M9ra2mSxWNJyjECqXHDBBb4EfcmSJb7btbgecMaKYo5JLEn0888/r2uuuSbsbVxSAhKTgVUf\ne3p6VFdXp9LS0nibBYaM7u5udXV1SZKOHj2qHTt2aMaMGSotLdVTTz0lSXrqqac0f/78dB4mkFKh\nzv/S0lJt3rxZPT09eu+999Ta2upbyQ4Yrj788EPf13/84x99K3ZxPeCMNUpq/D/poY39W6BYBic2\nb94c8TYuKQF1TEJVfQTOFu3t7VqwYIEkqbe3V9/85jc1Z84cORwO3X777Vq/fr3sdrueffbZNB8p\nkBwLFy7Uzp071dHRIZvNpocfflgPPPBA0PM/Pz9ft99+u/Lz82UymfTLX/6SW1cwrAReD6tXr1Zj\nY6PeeOMNGYahiy66yFcZm+sBZ6zRUvHVJ7fTVq/3Dxk4OJGZmam6ujrV1tYOaurQoUPatWuXNm3a\nFLFbKr8DAAAAkHSq8ntrkMezB68ut337dq1YscI3OPH973/fl3hXVFRIOjlq/sILL5CYAAAAAIie\nYRjqOxDk8f8Ovux1IsV9KxcAAACAYSTIKlypEHHye6SKjgAAAACGj+PjBm+pEDYxiaaiIwAAAIDh\n4/iokYO2YKIZwGhsbFRhYaGmT5+u4uLisP2GvZVrYEVHSb6Kjqy6BQAAAAxPPSOCJSI9fnunBzAa\nGhpksVhUVFSk0tJSvzyhs7NTy5cv1wsvvCCr1aqOjo6w/YZNTIJVdHz11Vf9YgzDLun9sJ0AAAAA\nZ6cL1dfnSvdBxOS4RgV59IjfXjQDGJs2bdKtt97qq29y/vnnh+03bGJiGIZ27dqljIwMXXDBBVq1\nalWQqPcl/UhSo6Ri/Uirw3a4Wj8K+3zg6wPjBz4f7rlkiHTskcT6vYnn/cTaVrw/l0iS+V7ifT7e\n4wl0uv1GScVJavuLxsfbX6TXx3OeJPocS9fPPZrXpvvnGG9/sfQfeD0k+rMpVH+hXp/M70W6P0fj\n/d6GO754z4lUn/PJbC8RnzWN6v/9kOjfcbFK5mdXpL7i/ZxO5u//xF7Pyf37NBk+05iIMdEMYLS2\nturEiRO6/vrr1dXVpfvvv1933nlnyDbDJiYWi0WTJk3S5s2bddddd4Wp6NgoySWpUS5J9ohvBQAA\nABiOXKe2oSv4iIm/aIqBnjhxQq+//rpefPFFdXd3a9asWbrqqquUnZ0dND5sYuJwONTR0aGjR4+q\nr68vZEXHH2nnqew/9lu64smOE/lfvWjaizcTj/e/GolsO5n/WYumvXDtB7421v/QxPt8rMce+vga\ntTPCmEms7zXen3Oskj1KGMtrY/25JnuEMpb2Ez1aE+m8iSSZ35t4P0djbS9QKq//RI/KJfu9Jvo8\nieW18f7nPdH/mY8UH8uxxPv7MNF3e6Ty92+iz/lU/q0R6Vjifd6/r50Rj+1M06OReq3xqF5r7A4Z\nY7FY5Ha7ffvBBjBsNpvOP/98jRkzRmPGjNFXvvIVvfnmmyETk7CrcplMJlVXV+uuu+5Sa2ur7rjj\njpAT3+3hGgLOSvZ0HwBwxrCn+wCAM4g93QcARNCtscovnqK7HrrQtwVyOBxqbW2Vy+VST0+P6urq\nVFpa6hfz9a9/XS+//LK8Xq+6u7v16quvKj8/P2S/EQssTp8+XRkZGfrggw/0zDPPaNy4cbrvvvsG\nxdmjeJPA2cWe7gMAzhj2dB8AcAaxp/sAgAh6FHx54IFOD2CUlJTI6/WqvLxceXl5qqmpkSRVVFQo\nNzdXN910ky699FKdc845Wrp0aXyJidls1oMPPqhVq1bpb3/7m6644grNnj3bb+SkcUC8XVxwAAAA\nODu5JPn/dTz0RDPHRJLmzp2ruXPn+j1WUVHht79y5UqtXLkyqvaMvr6+vkhBLpdLN998s9566y3N\nnz9f9957r2688caTDRhGTHd+JvKe9VSvkhXp9alcHWqorcaU7BXTwkn2fJpA6XyvgVK9Mk4qV+VK\n9+ps8Uj1OZTsn3M8fUeS6lV6YvlepfocTXR/gWK5/z7VKz+mek5pIvuKVarns8ZzTsfad7KviVTO\n/YvFaklR/Ll9xjAMQ/V9cwY9/nVjR9LfR8QRk4ULF2rnzp36+OOPNXXqVJ04cUJPP/10Ug8KAAAA\nQHp0a2xa+g07+V2SNmzYIJvNppycHHV2duq6667T+PHjU3FsAAAAAFLsuEYO2oJxOp3Kzc1Vdna2\nqqqqBj3f2NioiRMnqrCwUIWFhfrxj38ctt+IIyajR4/Wjh07dPvtt2vRokV67rnn9PLLL+uaa67p\n73RAvF3MMQEAAMDZyaWhXsVE6olijonX61VlZaUaGhpksVhUVFSk0tLSQSv4Xnfdddq6dWtU/UZM\nTPr6+nTvvfcqPz9fy5Yt0+bNm3Xeeef5xewccM9ecZLXtA4Xm2iJrimRyPu4420r1vd2JtVoSfW6\n6omODyfdFbwjHc9Qnj+T6O9FoERWT071/fvJvK88nffLR9NfPO893p9jumvzxHN8iW471edFPO0l\nui5JuutNhZt3keq6YIl+fTrnxwW2NtR0R1H5vampSVlZWbLb7ZKksrIy1dfXD0pMYpmXEvFWrt27\nd+u3v/2tfv3rX2vChAk6cOCADhw4EHUHAAAAAIaOHo0atAXyeDyy2Wy+favVKo/H4xdjGIb27Nmj\ngoICzZs3T83NzWH7jThics0116i3t1cOh0MZGRnq7OzU6NGjo31fAAAAAIaQUHNKBjIMI2LM5Zdf\nLrfbrbFjx2r79u2aP3++9u/fHzI+YmIiSY899pjy8/PV1dWlr33ta3rttddUXFw8IKLR95VLzDEB\nAADA2cqloT7L5DON1fuNLr3f+H7IGIvFIrfb7dt3u92yWq1+MRMmTPB9PXfuXN1zzz365JNPBk0L\nOS3irVz79u3T1q1btWTJEvX29urPf/6zCgsLA6KKfZs9UoMAAADAsGXXwL+Nh6LjGqkvFV+imQ/N\n9m2BHA6HWltb5XK51NPTo7q6OpWWlvrFtLe3++aYNDU1qa+vL2RSIkUxYrJy5UodPHhQS5cu1X/+\n8x89+OCDvuKK0UhkAbbA+HQXIYt3Ulik9sO1leyJvJEksxhWsov6JXuSZTwF2uKdeB/rhNJ4r8dU\nFlSMJNWvT+Zk2nh/jomWzInBiZ54n8yFOALbj/d6ivccivezLpbP8WQXhwyU7M+iRP5OTfTnaLz9\nx2rg8ab62JMt3M8m0d/3ZH/2pFo0q3KZTCZVV1erpKREXq9X5eXlysvLU01NjaSTFeB/97vf6Ve/\n+pVMJpPGjh2rzZs3h28z3JN/+tOflJ2drf3792vEiBEyDEPPPfecvve978Xw1gAAAAAMFdHMMZFO\n3p41d+5cv8cqKip8Xy9fvlzLly+Put+wicmePXu0detWHTx4UOedd556e3uVm5sbJLLR95VLzDEB\nAADA2cql4TDHJB3CzjFZs2aNbyLLunXrdMMNN2jjxo1BIovFHBMAAADAruEwxySayu+JZvRFUfVk\n2rRpGjFihD766CP95Cc/0dKlS/sbMAwphiJMqb5PNZxU3w8c6/HEItH3NsZbICqZP9cz/Z7WQMks\nUhZLX8l4fSKLDsYq2UXM0vnZFEmq55TEct6k+3M12T+XcPMuUi2V52i6r4dkF+pM5WdVur83yfx9\ne6YXUE3kXN7Y5pPGVmQw3QzD0Py+2kGPbzEWDnofTqdTK1askNfr1ZIlS7Rq1aqgbf7973/XrFmz\n9Oyzz+qWW24J2XfEVbk6OzuVn58vk8mkjIwMPfroo3rppZcivQwAAADAENStsYO2QF6vV5WVlXI6\nnWpublZtba1aWlqCxq1atUo33XRTxAQtYmJy//3365ZbblFLS4vefvtt3XbbbWpqagqIahywuSI1\nCQAAAAxTLr+/jIeiHo0ctAVqampSVlaW7Ha7zGazysrKVF9fPyju8ccf12233aYpU6ZE7DdsYnLo\n0CHt2rVL3/jGNyRJx48f165duzRjxoyAyOIBmz1ipwAAAMDwZB/iM0yk4xo1aAvk8Xhks9l8+1ar\nVR6PZ1BMfX29li1bJilytfiwq3K99957mjhxoi688EIdO3ZMo0aN0ooVKzRnzpwg0S5J9pTPTYin\n7UDprgkRz1yEeCW7pkQy14hPdE2VePX371Ks10Sy75tO9Dkc7zUT7XNfRLzfy2TOgUn2vIl0fi9D\nH5tL0fzjKtHznOI1lOpbnMl1GZI9RzOVc5kS81ni0unrId7fcYn8PIl33mOya2Olsj5NvPWj/F8/\ntObGSgo6QhIoUpIhSStWrNDatWtlGIb6+voi3soVNjHp7e3V22+/rT179qioqMg3uSU4lxgtAQZy\niWsCOM0lrgfgNJe4HnAm69ZYHW18Td2Nr4WMsVgscrvdvv3TK/kO9I9//ENlZWWSpI6ODm3fvl1m\ns3lQhfjTwiYmVqtVVqtVRUVFkqTbbrtNa9euDRLZqJMXWSOXGgAAAM5aLklDd3bJST0aKXPx/2hi\n8f/4HutY/YRfjMPhUGtrq1wulzIzM1VXV6faWv/VvP7973/7vl68eLFuvvnmkEmJFGGOyZe+9CXZ\nbDbt379fktTQ0KAvf/nLQSKLdXrNZnu4BgEAAIBhzC5p6NcxiTzHxGQyqbq6WiUlJcrPz9cdd9yh\nvLw81dTUqKam5gv1G7GOyZtvvqklS5aop6dHF198sTZs2KCJEyf6ni8uLtbOnTu/UOcAAADAcHbd\nddepsbEx3YcRNcMwNNnbNujxj0dYk16PJaoCiwAAAACGP8MwNP7oR4MePzJuStITk7BzTAAAAACc\nXXqORV6VKxkiFlgEAAAAcPboOTJ20BaM0+lUbm6usrOzVVVVNej5+vp6FRQUqLCwUFdccYX+8pe/\nhO2XW7kAAAAASDpVn+SdIOlBjuF3K5fX61VOTo4aGhpksVhUVFSk2tpa5eXl+WKOHj2qcePGSZLe\neustLViwQO+++27IvhkxAQAAANDvWJAtQFNTk7KysmS322U2m1VWVqb6+nq/mNNJiSQdOXJE559/\nfthuSUwAAAAA9PssyBbA4/HIZrP59q1Wqzwez6C4LVu2KC8vT3PnztXPf/7zsN2SmAAAAADodzTI\nFsAwjKiamj9/vlpaWvT888/rzjvvDBvLqlwAAAAA+h2TtK9ReqsxZIjFYpHb7fbtu91uWa3WkPHX\nXnutent79fHHH2vy5MlBY0hMAAAAAPQ7JumS4pPbaZtW+4U4HA61trbK5XIpMzNTdXV1qq2t9Yv5\n17/+pWnTpskwDL3++uuSFDIpkUhMAAAAAAx0JHKIyWRSdXW1SkpK5PV6VV5erry8PNXU1EiSKioq\n9Pvf/14bN26U2WzW+PHjtXnz5rBtslwwAAAAAEmn5o7UBEkPKgwqvwMAAABIoSDLA6cCiQkAAACA\nfkGWB04FlgsGAAAA0C+K5YIlyel0Kjc3V9nZ2aqqqhr0/DPPPKOCggJdeumluvrqq7Vv376w3TJi\nAgAAAKBfFCMmXq9XlZWVamhokMViUVFRkUpLS5WXl+eLmTZtmnbt2qWJEyfK6XTq29/+tl555ZWQ\nbTJiAgAAAKDf8SBbgKamJmVlZclut8tsNqusrEz19fV+MbNmzdLEiRMlSTNnzlRbW1vYbklMAAAA\nAPQ7EmQL4PF4ZLPZfPtWq1Uejydkk+vXr9e8efPCdsutXAAAAAD6RbEql2EYUTf317/+VU8++aR2\n794dNo7EBAAAAEC/Y5I+apQ6GkOGWCwWud1u377b7ZbVah0Ut2/fPi1dulROp1Pnnntu2G4psAgA\nAABA0qmRkLlB0oPt/gUWe3t7lZOToxdffFGZmZm68sorVVtb6zf5/cCBA7rhhhv09NNP66qrrorY\nNyMmAAAAAPoFmVMSyGQyqbq6WiUlJfJ6vSovL1deXp5qamokSRUVFXr44Yf16aefatmyZZIks9ms\npqamkG0yYgIAAABA0qkRE0eQ9OA1/xGTZGDEBAAAAEC/IMsDpwKJCQAAAIB+UdzKlQwkJgAAAAD6\nRbFccDJQYBEAAABAv2NBtiCcTqdyc3OVnZ2tqqqqQc//85//1KxZszR69Gj97Gc/i9gtIyYAAAAA\n+nVFDvF6vaqsrFRDQ4MsFouKiopUWlrqt1zw5MmT9fjjj2vLli1RdcuICQAAAIB+vUG2AE1NTcrK\nypLdbpfZbFZZWZnq6+v9YqZMmSKHwyGz2RxVtyQmAAAAAGLi8Xhks9l8+1arVR6PJ642uZULAAAA\nwAAnIkYYhpHwXklMAAAAAAzQJellSbtDRlgsFrndbt++2+2W1WqNq1cSEwAAAAADdEu6/NR22qN+\nEQ6HQ62trXK5XMrMzFRdXZ1qa2uDthZtxXgSEwAAAAADfBYxwmQyqbq6WiUlJfJ6vSovL1deXp5q\namokSRUVFTp48KCKiop0+PBhnXPOOXrsscfU3Nys8ePHB23T6Is2hQEAAAAwrJ2cO/KPIM9cEfXI\nxxfFiAkAAACAASKPmCQDiQkAAACAAdKTmFDHBAAAAMAAnwXZBnM6ncrNzVV2draqqqqCxtx3333K\nzs5WQUGB9u7dG7ZXEhMAAAAAAxwOsvnzer2qrKyU0+lUc3Ozamtr1dLS4hezbds2vfvuu2ptbdUT\nTzyhZcuWhe2VxAQAAADAAJFHTJqampSVlSW73S6z2ayysjLV19f7xWzdulWLFi2SJM2cOVOdnZ1q\nb28P2SuJCQAAAIABIicmHo9HNpvNt2+1WuXxeCLGtLW1heyVye8AAAAABhh861agk8sKRxa4xHC4\n15GYAAAAABjgfwc9ElgU0WKxyO12+/bdbresVmvYmLa2NlkslpC9cisXAAAAAEknRziCbV1dXX5x\nDodDra2tcrlc6unpUV1dnUpLS/1iSktLtXHjRknSK6+8okmTJikjIyNk34yYAAAAAIiJyWRSdXW1\nSkpK5PV6VV5erry8PNXU1EiSKioqNG/ePG3btk1ZWVkaN26cNmzYELZNoy/ZteUBAAAAIAJu5QIA\nAACQdiQmAAAAANKOxAQAAABA2pGYAAAAAEg7EhMAAAAAaUdiAgAAACDtSEwAAAAApB2JCQAAAIC0\n+38WlTGl65sjQgAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x407d2d0>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print chosenSNPS2\n",
"print m2\n",
"pb.matshow(X[:,chosenSNPS2].transpose())\n",
"pb.colorbar()\n",
"pb.show()\n",
"pb.matshow(X[:,1000].reshape(1,182))\n",
"pb.colorbar()\n",
"pb.show()\n",
"#print m.plot()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[2000, 9672, 3922, 1916, 4560, 3334, 2378]\n",
"\n",
"Log-likelihood: -1.408e+04\n",
"\n",
" Name | Value | Constraints | Ties | prior \n",
"-----------------------------------------------------------------\n",
" linear_variance | 8.8851 | (+ve) | | \n",
" noise_variance | 0.9986 | (+ve) | | \n",
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n+38WlTGl65sjQgAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x4ff3b90>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0xa3fcd90>"
]
}
],
"prompt_number": 9
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment