{
"metadata": {
"name": "",
"signature": "sha256:8939ec49f9e50cb20736c135dcf0a3b49a9c18994d30cbd1fcc6b6eabbfbe3ef"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Profile hidden Markov models using PyPore and YAHMM"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Author: Jacob Schreiber (jmschreiber91@gmail.com)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hidden Markov models (HMMs) are powerful tools for performing sequence analysis. In contrast to other techniques, like a Support Vector Machine or a Random Forest, which take in data where each thing to be classified always has the same number of features, a great strength of HMMs is that the data of many different lengths can be interpreted by the same model. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For example, detecting the transmembrane helicies in a 7 transmembrane helix protein was done by Bystroff and Krogh in their 2008 tutorial Hidden Markov Models for Prediction of Protein Features. The goal is to take in a 7 transmembrane domain (7TMD) protein sequence, and predict where the transmembrane helicies may be. This is done by a two-state HMM, with the states being either \"transmembrane helix\" or \"not.\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can try to recreate this model using YAHMM. First, lets import the usual suspects."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from yahmm import *\n",
"import numpy as np\n",
"import seaborn as sns\n",
"from matplotlib.pyplot import *\n",
"from IPython.display import *\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, lets create the model. It is a two state model, with emissions across the amino acids. The transition and emission probabilities are taken from the paper. This code is adapted from Tamas Nagy'snotebook where he tries to do the same thing."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Define your model object and name it\n",
"model = Model( name=\"7TMD\" )\n",
"\n",
"# Take the distributions from Table 1 of the paper across all amino acids\n",
"aa = list( 'IFLVMWAYGCTSPHNQDEKR' )\n",
"transmembrane = np.array([ 1826, 1370, 2562, 1751, 616, 414, 1657, 615, 1243,\n",
" 289, 755, 806, 423, 121, 250, 141, 104, 110, 78, 83 ]) / 15214.\n",
"background = np.array([2187, 1854, 4156, 2935, 1201, 819, 3382, 1616,\n",
" 3352, 960, 2852, 3410, 2640, 1085, 2279, 2054,\n",
" 2551, 2983, 2651, 2933]) / 47900.\n",
"\n",
"# Define the two states\n",
"tm = State( DiscreteDistribution( dict( zip( aa, transmembrane ) ) ), name=\"tm\" )\n",
"null = State( DiscreteDistribution( dict( zip( aa, background ) ) ), name=\"null\" )\n",
"\n",
"# Take transitions determined in the paper\n",
"model.add_transition( model.start, null, 1.00 )\n",
"model.add_transition( tm, null, 0.046)\n",
"model.add_transition( tm, tm, 0.954)\n",
"model.add_transition( null, null, 0.984)\n",
"model.add_transition( null, tm, 0.016)\n",
"\n",
"# Finalize the model\n",
"model.bake( verbose=True )\n",
"model.draw( node_size=4000, labels={tm: 'tm', null:'null', model.start:'start', model.end:'end'}, font_size=20 )"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
""
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now lets try out the model on the ADA1D protein used in the tutorial. We can run Viterbi decoding and posterior decoding on the sequence in order to try to identify where the transmembrane helicies are. The Viterbi path can do this by finding the most likely states for each of the amino acids, and classify them as either part of a transmembrane helix or not. The posterior looks at the posterior, as calculated by the forward-backward algorithm, and looks at the probability of each sequence member being emitted by the transmembrane helix state."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Get the sequence of protein ADA1D\n",
"ada1d = list('MTFRDLLSVSFEGPRPDSSAGGSSAGGGGGSAGGAAPSEGPAVGGVPGGAGGGGGVVGAG\\\n",
"SGEDNRSSAGEPGSAGAGGDVNGTAAVGGLVVSAQGVGVGVFLAAFILMAVAGNLLVILS\\\n",
"VACNRHLQTVTNYFIVNLAVADLLLSATVLPFSATMEVLGFWAFGRAFCDVWAAVDVLCC\\\n",
"TASILSLCTISVDRYVGVRHSLKYPAIMTERKAAAILALLWVVALVVSVGPLLGWKEPVP\\\n",
"PDERFCGITEEAGYAVFSSVCSFYLPMAVIVVMYCRVYVVARSTTRSLEAGVKRERGKAS\\\n",
"EVVLRIHCRGAATGADGAHGMRSAKGHTFRSSLSVRLLKFSREKKAAKTLAIVVGVFVLC\\\n",
"WFPFFFVLPLGSLFPQLKPSEGVFKVIFWLGYFNSCVNPLIYPCSSREFKRAFLRLLRCQ\\\n",
"CRRRRRRRPLWRVYGHHWRASTSGLRQDCAPSSGDAPPGAPLALTALPDPDPEPPGTPEM\\\n",
"QAPVASRRKPPSAFREWRLLGPFRRPTTQLRAKVSSLSHKIRAGGAQRAEAACAQRSEVE\\\n",
"AVSLGVPHEVAEGATCQAYELADYSNLRETDI')\n",
"\n",
"# Calculate the Viterbi prediction to transmembrane domains\n",
"logp, path = model.viterbi( ada1d )\n",
"viterbi_tmds = np.array( map( lambda x: x[1].name == 'tm', path[1:-1] ) )\n",
"\n",
"starts = np.nonzero( viterbi_tmds & ~np.roll(viterbi_tmds, 1) )[0]\n",
"ends = np.nonzero( viterbi_tmds & ~np.roll(viterbi_tmds, -1) )[0]\n",
"transmems = zip(starts, ends)\n",
"\n",
"# Set up plotting\n",
"colors = sns.color_palette('deep', n_colors=6, desat=0.5)\n",
"\n",
"figure( figsize=(20,6) )\n",
"\n",
"axhline(y=1.1, c=colors[0], alpha=0.7, label=\"Viterbi Path\")\n",
"axhline(y=0.5, c=colors[1], alpha=0.7, label=\"Actual Helix Locations\")\n",
"xlim([1, len(ada1d)+1])\n",
"ylim([0,1.2])\n",
"ylabel('probability')\n",
"axis = gca()\n",
"\n",
"# Plot viterbi predicted TMDs\n",
"for start, end in transmems:\n",
" axis.add_patch( Rectangle((start+1, 1.075), end-start+1, 0.05, facecolor=colors[0], alpha=0.7) )\n",
"\n",
"# Actual transmembranes from http://beta.uniprot.org/uniprot/P25100\n",
"for start, end in [(96,121),(134,159),(170,192),(214,238),\n",
" (252,275),(349,373),(381,405)]:\n",
" axis.add_patch( Rectangle((start+1, .475), end-start+1, 0.05, facecolor=colors[1], alpha=0.7) )\n",
"\n",
"# Get indices\n",
"indices = { state.name: i for i, state in enumerate( model.states ) }\n",
"\n",
"# Use posterior decoding to attempt to calculate the transmembrane domains\n",
"trans, ems = model.forward_backward( ada1d )\n",
"ems = np.exp( ems )\n",
"\n",
"plot( xrange(1, len(ada1d)+1), ems[:, indices['tm']] / ems.sum( axis=1 ), c=colors[2], alpha=0.7, label=\"Posterior Probability\" )\n",
"legend( fontsize=18 )"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
""
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAABI0AAAFxCAYAAAD+oFjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VNXWx/Hv1EzqJKRSQu8KIkVAEBVRQUBFEAsqgsqL\nvZdbRK+Cgr1cUa6KehUEC4h0EBBFkKuISLHREyA9mfRMprx/BEZCaAkzKeT3eR4fmTPn7L1myD5k\n1uy9NoiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI\niIiIiIiIiIiIiJy2egKrjnL8OuB7YA3wJmCozqBERERERERERKTmPAL8Aqw94ngwsB2wHXw8Exha\njXGJiIiIiIiIiMhxGAPc/nbgKirOIioGeh/8P4AZKApwLCIiIiIiIiIiUos0B9Yd5/m7gYXVE4qI\niIiIiIiIiJwMcw32bQSeA1oDw090clparjfgEYnUYnZ7MAAOhyblSf2msSBSRmNBpIzGgkgZjQWp\nqri4iGPWmK7JpNE0ypanDQOUEBIRERERERERqUWqK2l0KCl0HRAG/AiMBb4BVh587lXgi2qKR0RE\nREREREREjqM6kka7gXMP/vnjw46bqqFvERERERERERGpgkDvniYiIiIiIiIiInWQkkYiIiIiIiIi\nIlKBkkYiIiIiIiIiIlKBkkYiIiIiIiIiIlKBkkYiIiIiIiIiIlKBkkYiIiIiIiIiIlKBkkYiIiIi\nIiIiIlKBkkYiIiIiIiIiIlKBkkYiIiIiIiIiIlKBkkYiIiIiIiIiIlKBkkYiIiIiIiIiIlKBkkYi\nIiIiIiIiIlKBkkYiIiIiIiIiIlKBkkYiIiIiIiJSb1111RAaNowiLS3tmOfk5GTTuHE0Y8feSFLS\nXuLj7bzwwuRy5+zevcuvccXH27nnnttPeF63bmcybNjg455z993jiY+3l/uvYcMoWrVqwqBB/Zk9\ne2aV40xPT6ewsND3+MorL6N7905Vbk9qF3NNByAiIiIiIiJSU0aMuIbvvvuWhQu/ZMyYW496zoIF\nX+JyuRgx4hqio2OYOvVtOnY80/f8Sy89x+zZM1m//me/xmYwGE54zsSJUwgNDT2p9iZOnEyDBtEA\neL1eHA4Hn302m3vuuZ2srCxuv/2uSsW3YsUybr/9Vlau/I6QkJDDI69UO1J7KWkkIiIiIiIi9dbQ\n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\n",
"text": [
""
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It looks like the posterior decoding was significantly better than the Viterbi path. An improvement to the Viterbi path would be to build a 15 state model with interlaced transmembrane helix and null states, to ensure that the Viterbi path found the 7 most likely regions to be transmembrane helicies, as opposed to trying to guess an undetermined number. The posterior decoding seems to do alright, but seems to predict around 8 helicies instead of the 7. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, this is not a profile HMM. A Profile HMM models a reference sequence, and allows certain deviations from the reference based on what features you expect to see in the observed sequences. A typical biosequence alignment allows for mismatches by having pseudocounts on each match state, allows for insertions into the observed sequence with another symbol-emitting state, and deletions from the reference by a silent state which jumps over that match state. The previous HMM was not close to this, as a profile HMM will grow with respect to length of the reference, while the previous HMM would always be two states."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](http://www.cs.tau.ac.il/~rshamir/algmb/00/scribe00/html/lec06/img106.gif)\n",
"
Picture from Biological Sequence Analysis: Probabilistic Methods of Proteins and Nucleic Acids by Durbin, Eddy, Krogh, and Mitchison
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"See http://nbviewer.ipython.org/github/jmschrei/yahmm/blob/master/examples/Global%20Sequence%20Alignment.ipynb for a more detailed analysis of using this model to perform sequence alignment."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, not all tasks are alignment to a reference! Sometimes you want to perform classification based on adding forks to the profile, and classifying based on which fork was taken at that point in the model. This can be excessively complicated to code, especially if you begin to add more features than just INDELs. This brings us to the module structure, which is the idea that you model the repeating subunit, which takes in a single symbol to be modelled and has silent state 'ports' on either side."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"SVG(filename=\"C:\\\\Users\\\\jmschrei\\\\Desktop\\\\IPython\\\\BINF ProfileHMM GSAHMM Boards.svg\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"svg": [
"