Skip to content

Instantly share code, notes, and snippets.

@grst
Created November 17, 2015 08:39
Show Gist options
  • Save grst/7f86def08ad93b572747 to your computer and use it in GitHub Desktop.
Save grst/7f86def08ad93b572747 to your computer and use it in GitHub Desktop.
algo2015-11-18
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"## bio tools\n",
"from skbio import SequenceCollection\n",
"from skbio import Protein\n",
"from Bio.SubsMat import MatrixInfo\n",
"\n",
"## maths and statistics\n",
"import numpy as np\n",
"import scipy\n",
"\n",
"## plotting tools \n",
"%matplotlib inline\n",
"from pylab import * \n",
"import seaborn as sns\n",
"\n",
"## other tools\n",
"from itertools import chain\n",
"import random\n",
"from collections import OrderedDict\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"# 0. helper functions "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"def draw_from_swissprot(n_seq):\n",
" sq = SequenceCollection.read(\"uniprot_sprot.fasta\")\n",
" seq_count = sq.sequence_count()\n",
" seq_ids = [random.randrange(seq_count) for _ in range(n_seq)]\n",
" database = [str(sq[i]) for i in seq_ids]\n",
" return database"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"def mk_cumulative_freqs(freqs):\n",
" freqs_cum = OrderedDict()\n",
" cum_sum = 0\n",
" for x, freq in freqs.items():\n",
" cum_sum += freq\n",
" freqs_cum[x] = round(cum_sum, 4)\n",
" return freqs_cum"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"fc = None\n",
"def get_random_aa():\n",
" global fc\n",
" if fc is None:\n",
" fc = mk_cumulative_freqs(freqs)\n",
" r = random.random()\n",
" for x, cum_sum in fc.items():\n",
" if(cum_sum >= r): \n",
" return x"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"def find_mss(seq):\n",
" \"\"\"linear time maximum scoring subsequence adapted from http://rosettacode.org/\"\"\"\n",
" maxsofar, maxendinghere = 0, 0\n",
" for x in seq:\n",
" s = get_score(x)\n",
" # invariant: ``maxendinghere`` and ``maxsofar`` are accurate for ``x[0..i-1]`` \n",
" maxendinghere = max(maxendinghere + s, 0)\n",
" maxsofar = max(maxsofar, maxendinghere)\n",
" return maxsofar"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"rsscores = None\n",
"def get_n_lower_scores(score, scores):\n",
" global rsscores\n",
" ## index refers to the position in the sorted reversed array, thus the number of \n",
" ## scores > than x\n",
" ## We look for scores <= x, therefore we take len(scores) - index\n",
" if rsscores is None: \n",
" rsscores = [x for x in reversed(sorted(scores))]\n",
" return len(scores) - rsscores.index(x)"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"# 1. Proteindatenbank erstellen\n",
"\n",
" 1. Swissprot herunterladen\n",
" 2. 2000 zufällige Sequenzen auswählen\n",
" 3. Aminosäure-Häufigkeiten zählen\n",
" 4. Random-Datenbank erstellen"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"DB_LEN = 2000"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"['MDLKDYIRTVPDFPEPGILFRDITTLLHEPKALRYTIDSLAEQTGSLGADYVVGIESRGFMFGTPLAIKLDCGFVPVRKPGKLPAAVFKEEYTLEYGKNALEIHQDAFAAPSRVLVVDDLLATGGTAVAAAQLVERAGGTVVGFGFIIELTFLNGRAKLPEGPSAVALVSY',\n",
" 'MVFTKEEVDYSLYLVTDSTMLPPGTTLCSQVEAGLKNGVTLVQIREKDIETKNFVAEALEVQKICKKYNVPLIINDRIDVAMAIDADGVHVGQDDMPIPMVRKLLGPSKILGWSVGKPSEVETLAKWGPDMVDYIGVGTLFPTSTKKNPKKSPMGPQGAIAILDALEEFKATWCRTVGIGGLHPDNIQRVLCQCVASNGKRSLDGISLVSDIMAAPDACAATKRLRGLLDATRYQFVECELNNTFPTTTSIQNVISQVSNNRPLVQHITNKVHQNFGANVTLALGSSPIMSEIESEVSELARIPNASLLLNTGSVAPIEMLKAAINAYNEVNRPITFDPVGYSATETRLCLNNTLLTYGQFACIKGNCSEILSLAKLNNHKMKGVDSSSGKTNIDTLVRATQIVAFQYRTVAVCTGEFDCVADGTFGGEYKLSSGTEGITAEDLPCVIIEDGPIPIMGDITASGCSLGSTIASFIGGLDSTGKLFDAVVGAVLLYKSAGKLASTRCQGSGSFHVELIDALYQLFHENKPEKWSASLKKFK',\n",
" 'MAEKRNIFLVGPMGAGKSTIGRHIADQLHLEFVDSDQEIERRTGADIAWVFDLEGEEGFRLREESVIGDLTEMQGIVLATGGGSVMSKEVRNKLSARGIVVYLETPIEKQVARTQRDKRRPLLQTEEAPRDVLERLAEEREPLYKEVADFVVRTDEQSAKVVANQIIEKLDF']"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"database = draw_from_swissprot(DB_LEN)\n",
"database[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"### 1.2 Häufigkeiten zählen"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"({'A',\n",
" 'C',\n",
" 'D',\n",
" 'E',\n",
" 'F',\n",
" 'G',\n",
" 'H',\n",
" 'I',\n",
" 'K',\n",
" 'L',\n",
" 'M',\n",
" 'N',\n",
" 'P',\n",
" 'Q',\n",
" 'R',\n",
" 'S',\n",
" 'T',\n",
" 'V',\n",
" 'W',\n",
" 'Y'},\n",
" 730744)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alphabet = Protein.nondegenerate_chars\n",
"dblen = sum(len(x) for x in database)\n",
"alphabet, dblen"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'A': 0.08029077214455405,\n",
" 'C': 0.014716508106806215,\n",
" 'D': 0.054649781592459194,\n",
" 'E': 0.06745317101474661,\n",
" 'F': 0.03935167445781286,\n",
" 'G': 0.07057601567717285,\n",
" 'H': 0.02276036477891026,\n",
" 'I': 0.05990333139923147,\n",
" 'K': 0.05922730805863613,\n",
" 'L': 0.09689439803816384,\n",
" 'M': 0.02362523674501604,\n",
" 'N': 0.04135921745508687,\n",
" 'P': 0.047524167150192136,\n",
" 'Q': 0.03910261322706721,\n",
" 'R': 0.05404902400840787,\n",
" 'S': 0.06617365315349835,\n",
" 'T': 0.05357690244463177,\n",
" 'V': 0.06779118268504429,\n",
" 'W': 0.011306285101211915,\n",
" 'Y': 0.02962733871232607}"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"freqs = {x: sum(seq.count(x) for seq in database) / dblen for x in alphabet}\n",
"freqs"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"#### Plot der Häufigkeiten"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"image/png": "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\nuFilpaXy+XzKy8tTdna2vvjii7DLAACAwwtbzFVVVQoEApKklJQUtbe3q7OzU3Fxcaqvr1dCQoL8\nfr8kady4caqsrFRLS8thlwEAAOGFPcfc3NysxMTE0GOPx6Pm5mZJUjAYlMfj6TUvGAwecplgMGj3\nuAEAGJD6PMd8IMuyjnqeZVlyuVxhc3e1Nx3NMI44w6lcJ7OjLdfJ7GjLdTI72nKdzI62XCezoy3X\njuyBso3DcVlh2nblypXyer3KycmRJAUCAb3yyityu91qaGjQnDlzQuePV65cqcTERLW2th52GQAA\nEF7YQ9mZmZlav369JKm6ulp+vz9UsElJSero6FBDQ4O6u7tVUVGhrKyssMsAAIDwwu4xS9KyZcu0\nadMmxcTEqKioSJ988oni4+MVCAT0z3/+U/fff78kKTs7WzfddNMhl0lNTXV+TQAAGAD6LGYAAHDs\ncOUvAAAMQjEDAGAQihkAAIMc12L+/PPPlZ6ervz8/NC/kpIS23NzcnL0+uuv9ztv0qRJqq+vDz2+\n5ppr9NZbb4Uez5o1S++8805EY37uueeUk5Oj/Px8TZ8+XZWVlRHl9fj88881bdo0W7IOVF9fr5kz\nZ+qHP/yhpk6dqnvuuUddXV0R5x78s8vNzVVRUZH2798fce6oUaP04Ycf9po+bdo0LViwIKLs7du3\na+bMmbr++ut1/fXX67bbblNra2tEmT22bdumn//855o+fbqmTp2qu+++25bt3MPu58d9992n/Px8\nXX311br88suVn5+vX/7yl7blr127Vuedd55t21c69N+h/Px8tbe3R5x77rnn6l//+ldo2po1a1Re\nXh5R7qOPPqrly5eHHu/fv19TpkxRTU1NRLm5ubmqrq7uNW3ZsmV68sknI8qVvrmNb7zxRlv+xh38\n/H399deVl5envXv32porSStWrNBzzz0XUe4Rs46j+vp6a+rUqY7ntrW1WePHj7f27NnTr7y77rrL\nWr16tWVZlvXFF19Y48ePt+6///7Q/KysLOurr76KaLxTpkyxuru7LcuyrG3btll5eXn9zjs42+5t\nvG/fPmvKlClWZWVlaFppaak1b968iLMPNd758+dbL730UsS5gUDAuvvuu0PTtm3bZk2YMMGaP39+\nv3O7u7utyZMnW++9915o2uOPP27dcccdEY23J3vSpEnWpk2bQtPuuusu64EHHog4u4dTv4Nr1qyx\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3e7ac9aa20>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = subplots(figsize=(8, 4))\n",
"ax.bar(range(len(freqs)), freqs.values())\n",
"ax.set_xticks(range(len(freqs)))\n",
"ax.set_xticklabels([x for x in freqs.keys()])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"### 1.4 random Datensatz\n",
"* Sequenzen gleicher Länge "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"SEQ_LEN = 300"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"database_rnd = [\"\".join(get_random_aa() for _ in range(SEQ_LEN)) for _ in range(DB_LEN)]"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"# 2. maximal segment score"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"MATRIX = MatrixInfo.blosum62"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"5.1839659306131844"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"expected_score = sum(freqs[x] * MATRIX[(x, x)] for x in freqs)\n",
"expected_score"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"def get_score(seq):\n",
" return sum(MATRIX[(x, x)] - expected_score for x in seq)"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"### distribution"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3e6a23dd68>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFXCAYAAABUXrzKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl0XOWdN/jvvbXvUklVpcW2bMvYBtmAwQFsE8s4IqTj\naeeluxmLthlOT3ImM+4XErATaHziNj2Re+I04xzw0AmhfSYnEOT3hdfp9DJASGIHsGQBhtjIu7xo\nl6q01L5XzR9lFZYtlUpSqW4t3885Akv3qapfXS/fep77PM8V4vF4HERERJTXRKkLICIiotljoBMR\nERUABjoREVEBYKATEREVAAY6ERFRAWCgExERFYApA33v3r1obGxEY2MjTp06Ne7YsWPH8Mgjj6Cx\nsREvv/zyuGOBQAANDQ04fPgwAKCvrw+PPfYYtm7diu9+97sIhUIZfBtERETFLWWgt7W1obOzE83N\nzWhqakJTU9O4401NTThw4ADeeOMNfPjhh+jo6Ege++d//meUlJRAEAQAwIsvvoht27bh9ddfR01N\nDd566605eDtERETFKWWgt7a2oqGhAQBQW1sLp9MJr9cLAOjq6oLJZILNZoMgCKivr0dLSwsAoKOj\nAx0dHdiwYQPG9q1pa2vDxo0bAQAPPPBAsi0RERHNXspAdzgcKC0tTX5vNpvhcDgAAHa7HWazedwx\nu90OANi3bx/+7u/+DgCSPXS/3w+FQpFsOzg4mMG3QUREVNymNSku1S6xY8d+/etf484770R1dTXi\n8fiEj+Fus0RERJklT3XQarUme+QAMDg4CIvFAgCw2Wzjjg0MDMBqteLo0aPo6urCkSNH0N/fD5VK\nhYqKCmi1WgSDQahUqmTbqcTj8WQPn4iIiCaXMtDXrVuHl156CVu2bEF7eztsNhu0Wi0AoLq6Gh6P\nBz09PbDZbDhy5AheeOEFbN26Nfn4AwcOYN68eVizZg3Wrl2Ld955B5s3b8a7776L9evXT1mcIAiw\n292zfIuFz2Ix8DylgecpfTxX6eF5Sh/PVXosFsOMH5sy0FetWoW6ujo0NjZCJpNh9+7dOHz4MAwG\nAxoaGrBnzx7s2LEDALBp0ybU1NRM+lxPPPEEnnnmGRw6dAjV1dV4+OGHZ1w0ERERjSfk+u1T+Ylu\navzkmx6ep/TxXKWH5yl9PFfpmU0PnTvFERERFQAGOhERUQFgoBMRERWAlJPiaG7FYjF4POldU9Lr\nDRBFfv4iIqKJMdAl5PG48dvjF6HR6lK28/u8ePDeJTAaTVmqjIiI8g0DXWIarQ5a3cxnNRIREQG8\nhk5ERFQQGOhEREQFgIFORERUABjoREREBYCBTkREVAA4y71ApLumnevZiYgKEwO9QKSzpp3r2YmI\nChcDPY+NeoKIx7+4Ow/XtBMRFS8Gep6JxeP4/NIwjnzagz91OBCPA4urTFhSpYWIKKbYdI6IiAoU\nAz2PhCMx/N+HPsO5rlEAwKJKI7RqOc51juJSrxMKmYCNd6tgM2slrpSIiLKNgZ5HfvXeeZzrGsWK\nRWb8Rf1iLKwwAgB0BjX++zuf4633O/Hbj7vx5dsrUVPBoXciomLC6c55ouW0HUc/68UCqx5/+xcr\nk2EOAFq1AvevsGBdnRmiABz9rBcXu50SVktERNnGQM8DQ64Q3vxjF3RqOf72L1ZCpZBN2K6iVI2H\n7lkAlUKG1tMDGHEHs1wpERFJhYGe4+LxOD65MIpYPI7//RsrYCnRpGxfZlJj7coKxGJxvP+nXkSj\nsSxVSkREUmKg57gehxcuXwR332JG3SJzWo+Zb9Vj6fwSjHpCOHHeMccVEhFRLmCg57jTV0YAABvu\ntE3rcauXW2DSKXHm6gh67N65KI2IiHIIZ7nnsGFXAP1DPlhMSswrn95SNLlMxJfvqMR/tFxF25kB\nbC5bhFgsBrfbNeVjuT0sEVH+YaDnsLHe+dJ5+hk93mxUY+n8EpzrHMWFrlGUawI4emIEJeaySR/D\n7WGJiPITAz1H+QJhXO5zwaRToqJUNePnub22DJd6XPjTxSGsv00LtUbL7WGJiAoQx1Vz1NnOUcTj\nwG0LSyEIwoyfR6OSo26xGcFwFJf6uYyNiKhQMdBzUDwex5U+NxRyEYurjFM/YAq3LSyFRiXH5cEQ\n/CEuYyMiKkQM9Bw06gnB4w+julwHmWz2v0VymYg7bylHLA5c7PNnoEIiIso1DPQc1D3oAQDMs85s\nMtxEaquM0CoFdDlC8AcjGXteIiLKDZwUl4O6Bj0QBKC6PHEv1KmWmymViePxWHzSNqIoYJFNhfau\nAM5eHcGqpZaM101ERNKZMtD37t2LkydPAgB27dqFlStXJo8dO3YM+/fvh0wmw/r167F9+3b4/X48\n++yzGB4eRjAYxPbt27FhwwY8++yzaG9vR0lJCQDgW9/6Furr6+fobeUvfzAChzMAW6kGKmViz/aA\n35dyuZleN4zOq53Q6ozQGSa/5j6vTIELfUGc6xzFisVlUMg5QENEVChSBnpbWxs6OzvR3NyMjo4O\n7Nq1C83NzcnjTU1NOHjwIKxWK7Zt24aHHnoI586dw+23345vfvOb6O3txd/8zd9gw4YNEAQBO3fu\nZIhPofvarm43DrenWm6m06uh1uimfG6ZKGCRVYVzvQFc6BrFbWluJUtERLkvZaC3traioaEBAFBb\nWwun0wmv1wudToeuri6YTCbYbIktSevr69HS0oJt27YlH9/b24vKysrk9/H45EPClDB2/Xx+Bq+f\nX6/GqkLHQBCnr4xgWU0pZOLMl8QREVHuSDnm6nA4UFpamvzebDbD4Ujc7MNut8NsNo87Zrfbk983\nNjbie9/7Hp577rnkz1577TU8/vjjePrppzEyMpKxN1EootEY+oa8MOqUMOqUc/IaSrmIW+aVwBeM\n4Erf1NvAEhFRfpjWpLhUPewbjzU3N+Ps2bPYuXMnfvOb32Dz5s0oLS3F8uXL8corr+DAgQP4wQ9+\nMOVrWiyFu6uZUhmDXjcMnV4NALjS50IkGkdttQmGaz8DAL9XCVFUjPvZjXS6qduMPc9qSwnOXh3B\n+W4n7lhqHbdxjYgQyssNMJkK87wX8p+nTOO5Sg/PU/p4ruZWykC3Wq3JHjkADA4OwmJJzI622Wzj\njg0MDMBqtaK9vR1lZWWoqKjA8uXLEY1GMTw8jDVr1iTbbty4Ec8//3xaBdrt7mm9oXzicrnh8QYR\nQwAAcLErMWphLVHD7Qkk23m9IYhiFCpNYMLnMejVU7YZ/zwxzLPq0TXoweWe0XH3WPd5g3A43AiF\nCm/CnMViKOg/T5nEc5Uenqf08VylZzYfelL+q71u3Tq88847AID29nbYbDZotYm7flVXV8Pj8aCn\npweRSARHjhzB/fffj48++ggHDx4EkBiy9/v9KC0txZNPPomuri4AwPHjx7F06dIZF12oBoZ9kInC\nuICdK8sWJFYbnOscnfPXIiKiuZeyh75q1SrU1dWhsbERMpkMu3fvxuHDh2EwGNDQ0IA9e/Zgx44d\nAIBNmzahpqYGjz76KJ577jls3boVgUAAu3fvhiAI2Lp1K5566iloNBrodDrs3bs3K28wX4TCUYx6\nQrCVaiBmYaJaZZkWRp0SV/rcuHuZBRoVtyQgIspnU/4rPhbYY5YtW5b89erVq8ctYwMAlUqFF154\n4abnuffee/Hmm2/OtM6C53AmhsotpXPfOwcAQRCwbEEJPjoziIvdTqysnfyWqkRElPsK70JpnrKP\nJvZYt2ZhuH1MbZURcpmAc12jiKXYZY6IiHIfAz1HDI4kAr28ZPJZ6pmmVMiwuMoEXyCCbrsna69L\nRESZx0DPAbF4HA5nAEadEmpldq9lj02Ou9DlzOrrEhFRZjHQc4DTE0I4EoMli73zMaUGFcpNavQ4\nvPD4w1l/fSIiygwGeg6wj2T/+vn1ls5P9NIvdrOXTkSUrxjoOWDw2oS4bM1wv1FNhQEKuYiL3U7E\nuN8+EVFeYqDnAPuoH0q5CNMc7d8+FYVcxKJKI3zBCPqHg5LUQEREs8NAl1ggFIXbF4alRDNuT/Vs\nu2W+CQBwud8rWQ1ERDRzDHSJDbtDAKQbbh9TZlSjzKhG33AQo56QpLUQEdH0MdAlNuRKzCyXYob7\njcZ66cfPDklcCRERTRcDXWKj3kSgm43SB/qiSiNkooDWMw7uHEdElGcY6BJzesPQqeVQKWRSlwKF\nXMQCqwYj7hDarwxLXQ4REU0DA11CHn8YgVAMpQaV1KUkLapI3B73j5/1SlwJERFNBwNdQr1DifXn\nuRTopXoFqso0+OyiA04Pl7AREeULBrqEehy5F+iCIGBtXTmisTg+ONUndTlERJQmBrqEcrGHDgB3\n31IGpVzEH//Uy53jiIjyBANdQr1DPogiYJBoh7jJaFQyfOlWK+yjAZy9OiJ1OURElAYGukQi0Rj6\nhwMwaRUQJdwhbjL1d1QDAI5ychwRUV5goEukf9iHaCwOk04hdSkTqq02oqpchxPn7XD5uHMcEVGu\nY6BLpHvQAwAw6eQSVzIxQRBQf0cVorE4jp3ql7ocIiKaAgN9jsRiMbhczkm/LnYntlc1aXMz0AFg\nzYoKyGWJyXFxTo4jIsppuZsmec7jceO3xy9Co9VNeLz9yigAQC2PZrOsadFrFFi93ILW9gGc7xrF\nsgWlUpdERESTYA99Dmm0Omh1hgm/XL4I1AoBSnlu/xbU31EFADj6J06OIyLKZbmdJgUqEIrAH4zC\noJF+//apLJ1fAptZi4/P2uHxh6Uuh4iIJsFAl8CIO7GlqlGT+6d/bHJcJBpDazsnxxER5arcT5QC\nNBbo+dBDB4C1KyogEwVOjiMiymEMdAk4PYl13YY86KEDgFGnxJ23lKPb7sWVfrfU5RAR0QTyI1EK\njMubCHStKn9O/5dvT0yOe5+T44iIchKXrUnA6Q1Br1FAJubelq+TWbHIjFKDCq2nB/DIhlqEQ74p\nH6PXGyCK+fOhhYgon00Z6Hv37sXJkycBALt27cLKlSuTx44dO4b9+/dDJpNh/fr12L59O/x+P559\n9lkMDw8jGAxi+/bt2LBhA/r6+vD9738fsVgMFosF+/btg1KZWzclyYZQOIpAKIrqcrXUpUyLKAr4\n8u2V+M2HV/DByU64nKOTrrEHAL/PiwfvXQKj0ZTFKomIilfK7lNbWxs6OzvR3NyMpqYmNDU1jTve\n1NSEAwcO4I033sCHH36Ijo4O/OEPf8Dtt9+OX/7yl/jJT36Cf/zHfwQAvPjii9i2bRtef/111NTU\n4K233pq7d5XDnNeG2405doe1dNy/shICgONnhlKusdfqDCnDnoiIMi9loLe2tqKhoQEAUFtbC6fT\nCa/XCwDo6uqCyWSCzWZLLG2qr0dLSwu+/vWv45vf/CYAoLe3F5WVlQASHw42btwIAHjggQfQ0tIy\nZ28ql41dPzflYaCXl2hw28JSXOrzwOXjmnQiolyScsjd4XCgrq4u+b3ZbIbD4YBOp4PdbofZbB53\nrKurK/l9Y2MjBgYG8LOf/QwA4Pf7oVAokm0HBwcz+kbyRbKHrlcCEb/E1dwsFovB7XZNenz10hK0\nXxnB5T4fKizmSdsREVF2TWtSXKo1yDcea25uxtmzZ7Fz50785je/Sft5Ct31PXSvU+JiJhDw+3D0\nxAhKzGUTHo/G4lDIgKuDPtwTi+fVxD4iokKWMtCtViscDkfy+8HBQVgsFgCAzWYbd2xgYABWqxXt\n7e0oKytDRUUFli9fjmg0iuHhYWi1WoRCISiVymTbdFgshpm8L8kplTHodcPQ6cdPfnP7w1DKRVjM\nOiDihCgqYNCnniDn9yqnbKfTTd0mnefxe5UwGHQov/b7PJGFthFc6A1gyB1EbXXJhG1EhFBeboDJ\nlFu/f/n650kKPFfp4XlKH8/V3EoZ6OvWrcNLL72ELVu2oL29HTabDVqtFgBQXV0Nj8eDnp4e2Gw2\nHDlyBC+88AL+8Ic/oLe3F8899xwcDgd8Ph9KS0uxdu1avP3229i8eTPeffddrF+/Pq0C7fb83MjE\n5XLD4w0ihkDyZ7FYHE53EGajGh5vEF5vCKIYhUoTSPFMmLKdQa9O67ky1abCJMOFXuDUBQespok/\nHPi8QTgcboRCubNszWIx5O2fp2zjuUoPz1P6eK7SM5sPPSkDfdWqVairq0NjYyNkMhl2796Nw4cP\nw2AwoKGhAXv27MGOHTsAAJs2bUJNTQ0effRRPPfcc9i6dSsCgQD+/u//HoIg4IknnsAzzzyDQ4cO\nobq6Gg8//PCMi85XHn8YsXh+znC/nkEjQ4lOhh6HF15/GDqNQuqSiIiK3pTX0McCe8yyZcuSv169\nejWam5vHHVepVHjhhRdueh6LxYKDBw/OtM6CkM8z3G+0oFyFUa8PHT1O3L6kXOpyiIiKXu6MhxaB\nfF6DfqMqsxJymYAL3c6inuRIRJQrGOhZVEg9dLlMQE2FAd5ABAPDubf8joio2DDQs8jpDUEAYNAV\nxjXn2urEtq4dvTm4/o6IqMgw0LPI5Q1Br1VAViA3LLGVaqDXKHC1341wJCZ1OURERa0wkiUPBK/d\nlKUQrp+PEQQBi6uMiETj6BrkchQiIikx0LOkkK6fX29xlREA0NEz+XaxREQ09xjoWeIqoBnu1zPq\nlLCUqNE35IM3wBu2EBFJhYGeJWN3JzNqCyvQAaC2KjE57nIve+lERFJhoGeJ+1oPXa8tjBnu16up\nNEAUBXT0uLgmnYhIIgz0LHH7wxAFAVr1tG5wlxdUChnmW/VwekMYcgWlLoeIqCgx0LPE7UssWROF\nwrzdaO21yXGXergmnYhICgz0LAiFowiFYzAU4HD7mKpyHdRKGS73uRGNcdidiCjbGOhZ4L42Ic5Q\nwHclE0UBiyqNCIaj6LF7pC6HiKjoMNCzwO1LTIgzFOAM9+vVVl8bdudsdyKirGOgZ0Gyh17AQ+4A\nUGpQoUSvRPegB8Ewt4IlIsomBnoWuP2JQC/EJWvXEwQBtdUmxOJAt513YCMiyiYGehYkh9wL+Br6\nmEWVRggArgz6pC6FiKioMNCzwO0LQ6uWQyYr/NOtVctRWa7FiDsM+2hA6nKIiIpG4SeMxKKxGHyB\nSFH0zseM3bDl4/PDEldCRFQ8GOhzzJOcEFfYM9yvN99qgEwU8MmFYW4FS0SUJQz0OVYsM9yvp5CL\nqCpTw+EM4lIfl7AREWUDA32OjQV6oc9wv9ECqwYA0No+IHElRETFgYE+x4plU5kb2UpU0KnlaDsz\ngEiUa9KJiOYaA32Oja1BL6YhdyCxFexdt5TC7Qvj9JURqcshIip4DPQ55vaFoVSIUClkUpeSdXff\nYgYAtJ7ul7gSIqLCx0CfQ/F4HB5fGAZNcQ23j6mx6WAt0eDEeTsCoYjU5RARFTQG+hzyB6OIxeNF\nN9w+RhAE3FdnQygcw6cXHFKXQ0RU0Bjoc8gTiAIovuvn17uvrgIAZ7sTEc01Bvoc8gYSw8zFtmTt\nehVmLRZWGNB+eRgub0jqcoiICpZ8qgZ79+7FyZMnAQC7du3CypUrk8eOHTuG/fv3QyaTYf369di+\nfTsAYN++fThx4gQikQi+/e1v48EHH8Szzz6L9vZ2lJSUAAC+9a1vob6+fi7eU87wXuuh64to29eJ\nrKmrwJX+C2g7M4CG1fOlLoeIqCClDPS2tjZ0dnaiubkZHR0d2LVrF5qbm5PHm5qacPDgQVitVmzb\ntg0PPfQQ7HY7Ojo60NzcjNHRUTz88MN48MEHIQgCdu7cWfAhfj1fkIEOAPfcakXz7y+g9TQDnYho\nrqQccm9tbUVDQwMAoLa2Fk6nE16vFwDQ1dUFk8kEm80GQRBQX1+PlpYW3HPPPfjJT34CADAYDPD5\nfIjFEhuLFNu+3t5AFAIAnbq4A92kV+G2hWZc6nVhYJi3VSUimgspA93hcKC0tDT5vdlshsORmK1s\nt9thNpvHHbPb7RBFERpNYtvPN998Exs2bIAoJl7mtddew+OPP46nn34aIyOFv9mILxCBVi2HKApS\nlyK5NXU2AEDraU6OIyKaC9OaFJeqh33jsffeew9vvfUWfvCDHwAANm/ejJ07d+IXv/gFli9fjgMH\nDsyg3PwRicbgD8WKfrh9zKpbLFDKRbS29xfdSA0RUTakvIZutVqTPXIAGBwchMViAQDYbLZxxwYG\nBmC1WgEA77//Pl555RW8+uqr0Ov1AIA1a9Yk227cuBHPP/98WgVaLIY030puGXZ7AAClRjUMevWE\nbfxeJURRMenx6bTT6aZuk87zZKqNiBDKyw0wmb74/btvRSX++FkPRgNRLF1QOulj51K+/nmSAs9V\nenie0sdzNbdSBvq6devw0ksvYcuWLWhvb4fNZoNWqwUAVFdXw+PxoKenBzabDUeOHMELL7wAt9uN\nffv24Re/+AWMRmPyuZ588kl873vfw/z583H8+HEsXbo0rQLtdvcs3p50OjoTlxRUChFuT2DCNl5v\nCKIYhUoz8fF02xn06rSeK5ttfN4gHA43QqEvBoFWLSnDHz/rwf/3wSWUPpje738mWSyGvP3zlG08\nV+nheUofz1V6ZvOhJ2Wgr1q1CnV1dWhsbIRMJsPu3btx+PBhGAwGNDQ0YM+ePdixYwcAYNOmTaip\nqcGhQ4cwOjqK73znO8nn2bdvH7Zu3YqnnnoKGo0GOp0Oe/funXHR+WDYHQTAGe7Xq1tkhl6jQNuZ\nAWz5yhLIRG6DQESUKVOuQx8L7DHLli1L/nr16tXjlrEBwJYtW7Bly5abnqeyshJvvvnmTOvMO0Ou\nxCYqDPQvyGUi7rnVit+f6MHpKyNYubhM6pKIiAoGu0hzZKyHrmOgj/PFVrC8AxsRUSYx0OfIsCsE\nQQC06ikHQYpKbZURlhI1Tpx3IBiKSl0OEVHBYKDPkWF3EFqVDKLANejXEwQB991WgWA4ik8v2KUu\nh4ioYDDQ50AoHIXLF4FWJZO6lJx0HzeZISLKOAb6HBhyJZZz6TjcPqHKMh1qKgz4/BLvwEZElCkM\n9DngcI4FOnvok1lTV4FYPI6Pzg5KXQoRUUFgoM+BsUDXMtAnde+tVggCZ7sTEWUKA30OOJx+AICO\n19AnZdKrcFtNKTp6XRgY4R3YiIhmixd554BjlNfQY7EY3G5XyjZ3LDah/coIWj/vxze+vDhLlRER\nFabiTZw55HAGIBMFqJXFOwAS8Ptw9MQISsyT7wYXjsQgCsAHJ3uw4XYzhBRL/PR6Q/I2vEREdDMG\n+hwYcvphNihTBlQxUGu00OpS32jAVuJA30gY/9bSCbNBOWEbv8+LB+9dAqPRNBdlEhEVBAZ6hgVD\nUbh8YSybx9sEpqPKrEDfSAR9I1HMq+A5IyKaKY5hZpjj2hp0s1ElcSX5wWKUQyETcKXfhVg8LnU5\nRER5i4GeYUPXZrhPNnxM44mCgMpSBfzBKAaH/VKXQ0SUtxjoGTZ0bQ262cAeerqqzIkPP1f6U8+K\nJyKiyTHQM2xsyL2UPfS0lRnkUCtluNrvQSzGYXcioplgoGfYFz10Bnq6BEHAwgoDguEo+oa4yQwR\n0Uww0DNsyJVYg27UKqQuJa8srDQC4LA7EdFMMdAzbMgZQKlBBVEs7jXo02UpUUOnlqNzwINoLCZ1\nOUREeYeBnkHhSAyjnhDKTWqpS8k7giBgYaUB4UgMPXav1OUQEeUdBnoGDbsT18/LjAz0mVhYcW3Y\nvc8tcSVERPmHgZ5BYxPiythDnxGzUQWDVoFuuwfhCIfdiYimg4GeQclAZw99RhLD7kZEonF02z1S\nl0NElFcY6Bk05GIPfbYWXdvPncPuRETTw0DPIA65z16JQYUSvRI9di9C4ajU5RAR5Q0GegaN9dDN\nBgb6bCysNCIWj6NrkMPuRETpYqBnkMMZgEmvhELO0zobC68Nu1/msDsRUdqYPBkSi8Ux4g6inBPi\nZs2oU6LMqEbfkBeBUETqcoiI8gIDPUNGPUFEY3FeP8+QhZUGxONAZz+H3YmI0sFAz5DkDHf20DOi\nZmy2+wCH3YmI0iGfqsHevXtx8uRJAMCuXbuwcuXK5LFjx45h//79kMlkWL9+PbZv3w4A2LdvH06c\nOIFIJIJvf/vbePDBB9HX14fvf//7iMVisFgs2LdvH5TKwrkjGWe4Z5Zeo0C5SY2BIR+CIYPU5RAR\n5byUPfS2tjZ0dnaiubkZTU1NaGpqGne8qakJBw4cwBtvvIEPP/wQHR0daG1tRUdHB5qbm/Hqq69i\n7969AIAXX3wR27Ztw+uvv46amhq89dZbc/eu5lgsFoPL5Rz31TM4CgDQyBPH3G4X4ry396wsrDAg\nDqBnKCB1KUREOS9loLe2tqKhoQEAUFtbC6fTCa83ceOMrq4umEwm2Gw2CIKA+vp6tLS04J577sFP\nfvITAIDBYIDP50MsFkNbWxs2btwIAHjggQfQ0tIyl+9rTnk8bvz2+EV8cKov+XXmaiLQr/Q78cGp\nPvzh40sIBhlEs7Hg2rB7t8MvcSVERLkvZaA7HA6UlpYmvzebzXA4HAAAu90Os9k87pjdbocoitBo\nNACAN998Exs2bIAoivD7/VAoFMm2g4ODGX8z2aTR6qDVGZJfgUjidqnl5hJodQaoNTqJK8x/Y8Pu\ng6MhePxhqcshIsppU15Dv148PvkQ8o3H3nvvPbz11ls4ePDgtJ7nRhZL7l0/VSpj0OuGodN/cb3c\nH4xApZDBXKJNfO9VQhQVMOgnv6aeTpt02+l0mXm9bLZJp93SmlI4Tvbh0mAAd6yY/Z+FXPzzlKt4\nrtLD85Q+nqu5lTLQrVZrskcOAIODg7BYLAAAm8027tjAwACsVisA4P3338crr7yCV199FXq9HgCg\n1WoRCoWgVCrHtZ2K3Z57s5xdLjc83iBiSAypx+NxuH0hGLRKuD2Jn3m9IYhiFCrN5MPu6bRJp51B\nr87Y62WzTTrtKkoToz0f/KkP96+cl/K5pmKxGHLyz1Mu4rlKD89T+niu0jObDz0ph9zXrVuHd955\nBwDQ3t4Om80GrTbRA62urobH40FPTw8ikQiOHDmC+++/H263G/v27cNPf/pTGI3G5HOtXbsWb7/9\nNgDg3Xe2SD1JAAAgAElEQVTfxfr162dcdK4JhqOIROPQaxRSl1Jw9BoFSg0KXOxxw+0LSV0OEVHO\nStlDX7VqFerq6tDY2AiZTIbdu3fj8OHDMBgMaGhowJ49e7Bjxw4AwKZNm1BTU4NDhw5hdHQU3/nO\nd5LP8+Mf/xhPPPEEnnnmGRw6dAjV1dV4+OGH5/adZZHXn9jNTKeZ1hUMStO8cg1G3GGcOG9H/Z3V\nUpdDRJSTpkygscAes2zZsuSvV69ejebm5nHHt2zZgi1btkz4XBNdTy8EYxO22EOfG/PK1Th12YWP\nzg4y0ImIJsGd4jLAG0gEuk7NQJ8LOrUcC6xanL06ymF3IqJJMNAzgD30uXdnbSli8ThOnLdLXQoR\nUU5ioGcAr6HPvTtqE/shfHw2v/cvICKaK0ygDPD4w5DLBKgUMqlLKUixWAxKIYgFVi3OXB1B78AQ\n9BN8eNLrDRBFfkYlouLEQM8AbyAMnUYBQRCkLqUgBfw+HD0xApNOhc5B4PAHV7CoYvxOfH6fFw/e\nuwRGo0miKomIpMXuzCyFIlGEwjHoOSFuTqk1WtwyvxwA0DscHrftrlZngEbLrXaJqLgx0GeJ18+z\nR69VoMykRv+wD4FQROpyiIhyCgN9lrzXZrjrOMM9K2oqDIjHga4Bj9SlEBHlFAb6LHHJWnbV2BL3\nBrjSzz2hiYiux0CfpWSg8xp6Vhi0SpQZx4bdo1KXQ0SUMxjos+QNjF1DZ6BnS02FPjHsPsheOhHR\nGAb6LHn9YYiCAI2Ka9CzpaYicXvBK30MdCKiMQz0WfL4w9Bp5FyDnkUcdiciuhkDfRYi0RgCoSiH\n2yXAYXciovEY6LMwtgadE+Kyb2zY/SpnuxMRAWCgz0rytqncVCbrEsPuKvQNcdidiAhgoM8K16BL\na2yTmc4B9tKJiBjos8Bd4qS1sNIIALjc65K4EiIi6THQZ4GbykhLr1HAWqrBwIgfviCH3YmouDHQ\nZ8EbiEAAoFXzGrpUFl/rpXfZ/RJXQkQkLQb6LHj8YWjUcogi16BLpabCAFEAOgd9UpdCRCQpBvoM\nxWJx+AMRToiTmEopQ5VFD6c3gr5h9tKJqHgx0GfIH4oiDs5wzwWLKxNr0j85PyxxJURE0mGgz5A3\nkJiEpeP1c8nNs+ohlwn45MIw4vG41OUQEUmCgT5DY7OquWRNenKZiOoyNUbcIZzvGpW6HCIiSTDQ\nZ8h3rYfOIffcUGPTAgA+ONUncSVERNJgoM+QL3htH3cGek6wmJQoMyrx8Vk7/Nd+b4iIigkDfYZ4\nDT23CIKAe5aXIxiO4uOzg1KXQ0SUdQz0GfIFo1ArZZDJeApzxT3LyiAAeJ/D7kRUhKZMo71796Kx\nsRGNjY04derUuGPHjh3DI488gsbGRrz88svJn58/fx4NDQ14/fXXkz979tln8ed//ud47LHH8Nhj\nj+Ho0aMZfBvZFYvH4QtGOdyeY0oNSty2sBQXu53oG/JKXQ4RUValHC9ua2tDZ2cnmpub0dHRgV27\ndqG5uTl5vKmpCQcPHoTVasW2bdvw0EMPoaqqCj/84Q+xdu3acc8lCAJ27tyJ+vr6uXknWeTyhhGP\nc4Z7Lrr/9iq0XxnBB6f68MiGJVKXQ0SUNSl76K2trWhoaAAA1NbWwul0wutN9Hy6urpgMplgs9kg\nCALq6+vR0tICpVKJn//857BarTc9X6GsER5xhwAAet4HPefctbQcWpUcx071IxqLSV0OEVHWpAx0\nh8OB0tLS5PdmsxkOhwMAYLfbYTabxx2z2+2QyWRQqVQTPt9rr72Gxx9/HE8//TRGRkYyUb8khj2J\nQNfxLms5RyGXYU1dBZzeED674JC6HCKirJnWjK5UPeypet+bN2/Gzp078Ytf/ALLly/HgQMHpvPS\nOeWLHjoDPRdtuKsaAPD7Ez0SV0JElD0px4ytVmuyRw4Ag4ODsFgsAACbzTbu2MDAwITD7GPWrFmT\n/PXGjRvx/PPPp1WgxWJIq102+cKJoVxrmQ4GvXrCNn6vEqKomPR4um3SbafTZeb1stkmk88lIoTy\ncgNMJgMsFgNuX1KOkxcdCMSA+bYv/gzl4p+nXMVzlR6ep/TxXM2tlIG+bt06vPTSS9iyZQva29th\ns9mg1SZ25KqurobH40FPTw9sNhuOHDmCF154IfnYG3vsTz75JL73ve9h/vz5OH78OJYuXZpWgXa7\ne7rvac712q/NoI7H4PYEJmzj9YYgilGoNBMfT7dNOu0MenXGXi+bbTL5XD5vEA6HG6FQYtDp/hUV\nOHnRgTffO4dtX10GIPGPSS7+ecpFPFfp4XlKH89VembzoSdloK9atQp1dXVobGyETCbD7t27cfjw\nYRgMBjQ0NGDPnj3YsWMHAGDTpk2oqanB559/jh/96Efo6emBQqHAO++8g5deeglbt27FU089BY1G\nA51Oh7179864aKmNuENQyAUo5TKpS6FJrFpajlKDCsc+78df1tdCo+IERiIqbFP+KzcW2GOWLVuW\n/PXq1avHLWMDgBUrVuCXv/zlTc9z77334s0335xpnTkjHo9jxB2CTsUwz2UyUUT9nVX49fuX0dLe\nj413zZO6JCKiOcVtzqbJ7Q8jFIlByy1fc179HVWQiQJ+f6KnYJZMEhFNhoE+TUPOxHVcLXvoOc+k\nV+FLy63odXjRfmVY6nKIiOYUA32akoGuZqDng6/eMx8A8M7xTokrISKaWwz0aRpyJQKd19Dzw8IK\nI5YvKEH7lRFc6nFKXQ4R0ZxhoE+Tg0Pueedr99YAAA4fvShxJUREc4eBPk0ccs8/KxebUVWuw/uf\n9mDYlXpdPBFRvmKgT9OQKwClXIRSzlOXLwRBwEP3zEc0FsdvP+6SuhwiojnBtVfTNOQMwGxQQhAE\nqUuhabjvtgr8+oPLOPJpD+pXmFMuO9TrDRBFfmAjovzCQJ8GXyACXzCCGptW6lJomhRyEV+7pxpv\nvHcJv3yvA3U1xgnb+X1ePHjvEhiNpixXSEQ0O+yGTIPD6QcAlBknvj0s5bavrK6CUi6io9cHuUoL\nrc5w05dGq5O6TCKiGWGgT4N9lIGez9RKOZbO0yEUieHc1VGpyyEiyigG+jTYRxMzpBno+au2Ugel\nQsTpKyMIR2JSl0NElDEM9GkY66GXG5USV0IzpZCLuLWmFMFwFOe62EsnosLBQJ+GsUA3s4ee15bX\nlEIhF3H68jAiUfbSiagwMNCnwT7qh0GrgFrJTWXymUohw/IFJQiEorjQxe1giagwMNDTFIvF4XAG\nYCnRSF0KZcCtC0shlwn4/PIwouylE1EBYKCnacQdRDQWZ6AXCLVSjmULSuEPRnCBN20hogLAQE/T\n2PVzS4la4kooU25bWAqZKODzS8OIxuJSl0NENCsM9DQlA93EHnqh0KjkWDq/BL5AhLdWJaK8x0BP\nk9051kNnoBeSukVmiKKAU5eGEWMvnYjyGAM9TWObypRzyL2gaNVyLJ1ngscfRgd76USUxxjoabKP\n+iETBZgNDPRCs2JxGXvpRJT3GOhpso/6UWZSQxR529RCo1XLsXR+opd+ZcAndTlERDPC26emwR+M\nwO0LY4HNIHUpNIlYLAa325WyjUIRQ3ySHviKRWW40OXE2S4Pd48jorzEQE+Dw5m4fs4Jcbkr4Pfh\n6IkRlJjLJm/jGwUEFXSGm++Fnuill+DM1REcPzuEP1tTOpflEhFlHIfc08A16PlBrZn4Hudf3Otc\nm/LxKxabIRMF/PaTPt6JjYjyDgM9DVyDXhw0KjkWV2ox6gnjg5O9UpdDRDQtHHJPwxc9dAZ6obul\nSosr/T7824eXccciHeSyiT/z6vUGiCI/DxNR7mCgp2FsDToDvQhEg6gqEXF1KIzX37uE2irdTU38\nPi8evHcJjEaTBAUSEU1syi7G3r170djYiMbGRpw6dWrcsWPHjuGRRx5BY2MjXn755eTPz58/j4aG\nBrz++uvJn/X19eGxxx7D1q1b8d3vfhehUCiDb2Nu2Uf90Knl0Kr5+acYLJ2nh1wm4Fy3Fyq1boJr\n8TeHPBGR1FIGeltbGzo7O9Hc3IympiY0NTWNO97U1IQDBw7gjTfewIcffoiOjg74/X788Ic/xNq1\na8e1ffHFF7Ft2za8/vrrqKmpwVtvvZX5dzMHxm6bWs7eedFQKUQsW1AKXzCCC93cPY6I8kPKQG9t\nbUVDQwMAoLa2Fk6nE16vFwDQ1dUFk8kEm80GQRBQX1+PlpYWKJVK/PznP4fVah33XG1tbdi4cSMA\n4IEHHkBLS8tcvJ+MG3YFEInGUGFOPUOaCkvdosT90k9dGuKMdyLKCykD3eFwoLT0i/W4ZrMZDocD\nAGC322E2m8cds9vtkMlkUKlUNz2X3++HQqFIth0cHMzIG5hr/SOJncNspeyhFxO1Uo5bF5rhD0Zx\nrnNE6nKIiKY0rWm68fjk+1ynOjabtlIbGE7McGcPvfjULSyFUiHi88vDCIWjUpdDRJRSylleVqs1\n2SMHgMHBQVgsFgCAzWYbd2xgYOCmYfbrabVahEIhKJXKKdtez2KRdrtVpz8MAFheW56sRamMQa8b\nhk4/+UYzfq8SoqiAYZZt0m2n02Xm9bLZJvs1ATqdelrPc/dyG1pO9eFCjwv3ragEAIgIobzcAJOp\nsLcClvrvXr7geUofz9XcShno69atw0svvYQtW7agvb0dNpsN2mu7bVVXV8Pj8aCnpwc2mw1HjhzB\nCy+8kHzsjb3wtWvX4u2338bmzZvx7rvvYv369WkVaLe7p/ueMurKtVtqqoQvanG53PB4g4ghMOnj\nvN4QRDEKlWZ2bdJpZ9CrM/Z62WwjzesFpvU8iyr0+Oy8DH+6YMfiSgM0Kjl83iAcDjdCocJdh26x\nGCT/u5cPeJ7Sx3OVntl86EkZ6KtWrUJdXR0aGxshk8mwe/duHD58GAaDAQ0NDdizZw927NgBANi0\naRNqamrw+eef40c/+hF6enqgUCjwzjvv4KWXXsITTzyBZ555BocOHUJ1dTUefvjhGRedTf3DPph0\nSmhUXLJWjOQyEbfXluH46UGc7BjCvbfZpC6JiGhCU6bUWGCPWbZsWfLXq1evRnNz87jjK1aswC9/\n+csJn+vgwYMzqVEy4UgMQ84AbplfInUpJKEl80pw+soIzneNYvmCEih4B10iykGFO2aYAYOjfsQB\nVJg5w72YyUQBdy+zIB4HPj5nl7ocIqIJMdBTGBi+tmSNM9yL3nyrHhVmLXrsXgyMpL5OT0QkBQZ6\nCmOBXlHKQC92giBg9fLECo8/XXIhGsufpZdEVBwY6Cn0s4dO1zEb1VhSbYLLF0HLacfUDyAiyiIG\negoDwz4IAu+yRl9YtbQccpmAf2/twagnKHU5RERJDPQU+kf8KDepoZDzNFGCRiXHykVGBEJR/Oq9\nC1KXQ0SUxKSahC8Qgcsb4nA73WRxhRaLKnT4+OwgPrvAoXciyg0M9EkMjHBCHE1MEARs2VADmSjg\nl++egz8YkbokIiIG+mS4ZI1SqTBrsGlNDUbcQRz6PYfeiUh6DPRJjM1w513WaDKb1izEAqsef/xT\nH9rODEhdDhEVOQb6JAZGErdNtXGXOJqEQi7i29+og0ohwy/ePgv7qF/qkoioiDHQJ9E/7INCLsJs\nTH37TypulWU6bH1wKfzBKH72m3ZEojGpSyKiIsVAn0AsHkf/sA+2Ug1EgXfioNTWrazAfbfZcKnX\nhUO/uyh1OURUpHhP0Bs4XU58eroLwVAUWkUMn546d1Mbt9uFYEAJrW7m962lwiEIAh57aBm67R78\n7kQ3bGYNGlbPl7osIioy7KHfYHTUjasjidOi0+ngjOpv+hoOKBAKhSWulHKJRiXHd/7qDhh1Srzx\nuws42cH16USUXQz0CYx6QgCAEoNK4koon5SZ1HjyL2+HXCbin/+1HVf73VKXRERFhIE+gbFAL9Uz\n0OlmsVgMbrcLLpfzpq9yfRxbv7IQoVAUP37jBK72u6Qul4iKBK+hT2DUE4RCJkKn4emhmwX8Phw9\nMYISc9mkbe5eWoKPz4/in5o/w7Nb70K1RZ/FComoGLGHfoNoNA6XL4wSgxICZ7jTJNQaLbQ6w6Rf\nty224a4lJngDEfy4+TN02z1Sl0xEBY6BfgOHO4R4HCjhcDvN0uJKHf5q/Xy4vCH86PUTuNjjlLok\nIipgDPQbDI4m7nHNCXGUCfevsOKbm26FPxjFPzV/ilOXhqQuiYgKFAP9BgPXAp0T4ihT1q2sxH/9\ni5WIx4EX3zyJD072SV0SERUgBvoN7KNjS9aUEldCheTOW8qxY8udUCtlOPifZ3D4j5cQj8elLouI\nCggD/QYDziDUShnUSs5wp8xaOr8Ezz12NywlavzbsSt49d9PIxzh3u9ElBkM9Ov4gxE4vRGU6Nk7\np9mbaL26ThHBk/9lKWpsOrS0D2Dfrz6G2xeUulQiKgDshl6nx+EFAAY6ZUSq9ep31RoRiUTR0evB\n//n/tuH/2LwMZcbJ523o9QaIIj9/E9HkGOjXGVsrzECnTBlbrz6RjasN+ODTK7g8GMK+Q6exrs4M\n8wRzN/w+Lx68dwmMRtNcl0tEeYwf+a/TM8geOmWPIAi4dZ4aKxZoEArHcPTkEBwe3LRJjUark7pU\nIsoDDPTr9DgSPXQTA52yaKFVjQfuqoYgAEc+7cXpK8OcAU9E08ZAvyYWj+PqgBtlRgXkMp4Wyq55\nVj0eumcBNCoZPj5rR9uZQcQY6kQ0DVNeQ9+7dy9OnjwJANi1axdWrlyZPHbs2DHs378fMpkM69ev\nx/bt2yd9zLPPPov29naUlJQAAL71rW+hvr4+429opvqHfPAHo1haxeFNkkaZSY0/u68Gv/+kG+c6\nR+H1h/HlO6qkLouI8kTKQG9ra0NnZyeam5vR0dGBXbt2obm5OXm8qakJBw8ehNVqxbZt2/DQQw9h\naGhowscIgoCdO3fmVIhfr6M3sc92dZla4kqomOk1Cnzt3gU4+lkvuu1evNvWhbW3lUhdFhHlgZRj\ny62trWhoaAAA1NbWwul0wutNTBzr6uqCyWSCzWaDIAior69HS0vLhI/xeBLXpnP5uuDl3sR9q+eV\nM9BJWkqFDF+5ex5qq40YcgVw9KQDLl9Y6rKIKMelDHSHw4HS0tLk92azGQ6HAwBgt9thNpvHHbPb\n7Skf89prr+Hxxx/H008/jZGRkYy+kdm61OuCQi7CWsI93El6oihg7YoKLK8pgcsXwYuHz2HIGZC6\nLCLKYdNah56qhz3ZsbGfb968GaWlpVi+fDleeeUVHDhwAD/4wQ+mfE2LZeI1vJkUCEbQbfdgWY0Z\nlnI9HIEQZPLJT004qIZMHoJBP3lv3u9VQhQVs26TbjudLjOvl8022a8J0OnUefXeNq5eAKUsjpOX\nnPhx86f4x+33w2rWpnzdTMnG371CwPOUPp6ruZUy0K1Wa7J3DQCDg4OwWCwAAJvNNu7YwMAArFYr\nFArFTY+xWq1YuHBh8mcbN27E888/n1aBdrs7rXazca5zBLE4MN+iw/CwF25vFDLZ5KfG6w0gGIzA\n7Zm8x+T1hiCKUag0s2uTTjuDXp2x18tmG2leL5B3721ptQ7zynX4z7ZePPv/vI9nt96N0jm+va/F\nYsjK3718x/OUPp6r9MzmQ0/KIfd169bhnXfeAQC0t7fDZrNBq030Dqqrq+HxeNDT04NIJIIjR47g\n/vvvn/QxTz75JLq6ugAAx48fx9KlS2dcdKZd6ktcP6+t5k5clJu+uroSm9cthH00gH2/OoFRD/d/\nJ6LxUvbQV61ahbq6OjQ2NkImk2H37t04fPgwDAYDGhoasGfPHuzYsQMAsGnTJtTU1KCmpuamxwDA\n1q1b8dRTT0Gj0UCn02Hv3r1z/+7SdKknEeiLK43wOB1TtCaSxjfuX4RINI7/bL2KH7/xKb7/13fB\npOMmSESUMOU19LHAHrNs2bLkr1evXj1uGdtkjwGAe++9F2+++eZMapxzl/pcMOmUMBtV8DilroZo\nYoIg4C/rFyMSjeHdj7rwT82f4vuProJBy1AnIu4Uh2FXACPuIBZXGSEIgtTlEN3k+tuwut0u/Nlq\nC7680oIeuxf7fvUJ+gaH4HI5EYvx3upExazo77Z26dr688VVRokrIZrYRLdhtZrkWFyhxaV+H/7p\nv53Gl5Zo8PW1t/CObERFjIHeNxbo/IeQctdEt2Fdd4cBgqwfHT0ufHJJwFe+FJWoOiLKBUU/5H6x\nxwlBABZWcH0k5RdBELBmRQUWVhgw5Arh1f/sQCjMUCcqVkUd6L5AGJd6XFhcaYRGVfSDFZSHREHA\n/bdXoqpMjQs9brz8688RifJaOlExKupAP31lBLF4HCsWl03dmChHiaKAe5eXYvkCI052DOFn/9qO\nKCfIERWdog70zy8PAQBWLDZP0ZIot8lEAf/r12qxfEEJPjlvx7/8+xnEYrl7MyQiyryiDfR4PI5T\nl4ah1yiwqIIz3Cn/KeUinvyr27Gk2oTW0wP4l/84w546UREp2kDvdXgx4g6ibpEZosj151QY1Eo5\nvvvIHVhcZURLez9++q/tvKZOVCSKNtBPXRoGAKxYxOF2yn/Xbz4TCXnxv319MZZU6fHJOTv2HzoB\nx/AIN58hKnBFO7X71KVr188Z6FQAJtp8ZuVCAzz+MM50uvB/vfE5Vi1S48/vX8rNZ4gKVFH20AOh\nCC50j2KBTQ+Tfm5vQ0mULWObz4x9GYxGfOVLNVhcZcSwO4xj53zodvikLpOI5khRBvrZzlFEonGs\n5HI1KnAyUcC6lRW4a2k5/MEoXvwf5/DhqT7E45wBT1RoijLQx4bbGehUDARBwIrFZVhzaykEAfiX\n/ziDA//jFFzekNSlEVEGFd019HAkho/ODMKgVfCGLFRUqss1eHB1Nf7b0W58esGBC93H8V++vAjr\n76iCXFaUn+2JCkrR/S3+9IIdHn8Y61ZU8h8xKjpmgwo7H12FR79yC0KRKF579zyee6UVH57qQzjC\nfeCJ8lnR9dD/+KdeAMCX76iUuBIiaYiCgAe/NB/33GbDf7RcwZFPe/Av/3EGzb+7gNXLrbhzkQF3\nyyvgcnkmfY6x5W+imPpDsV5vmLINEWVGUQW6fdSP01dGsHSeCZVlOqnLIZKUSafEXzcsxUNfWoDf\nnehGS3s/jn7Wi6OfAYp/u4ByoxKWEiXMegVK9IpxI1rDjgGIonzcMrkb+X1ePHjvEi6TI8qSogr0\n90+O9c6rJK6EKHeUmdT4nx9Ygr+sX4yPT3fj3Y97MeSOoG84gL7hAABAAGDSK1FmUqPMpIYirkaJ\nWnHTPdqJSDpFE+jRWAwfnOyDRiXH6uVWqcshyjkyUcStC0wYcvpgs1nQZ3djcMSPIWcAQ64Ahl0B\njHpC6OhxAQDkMgEV5jCqynVYYDNAqy6af06IclLR/A08dWkYo54QHrirGiqFTOpyiHKeXqOAXvPF\napBYPA6XJwSHM4CuviEMeaLotnvRbfei7cwgLCVqLKo0YnGVEUr+HSPKuqII9Hg8jrdbrwIA1t/O\n4XaimRAFASUGVeJL6YMoyqDUlaJ70IOrA24MDvthHw3gk3N2LKwwoMaqlLpkoqJSFIH+0dlBnO92\nYtUt5aip4DU/Kk5jN3BJxe12IT6N+6jrNQosrynF8ppS+IMRdPQ4caHbiY5eFzp6gcv9fvzZfYtw\n11IL72pINMcKPtCD4Sj++x8uQi4TsGXjEqnLIZLMRDdwudGwYwBa3cw2XNKo5FixuAx1i8zoG/Lh\n80t2XO734uVff45ykxoNq+fjy7dXQqMq+H92iCRR8H+z3jneiSFXEF+/rwbWUq3U5RBJauwGLpPx\neSdfe54uQRBQVa5DiSaGW+aVouXMCD78vB/Nv7uAf/3gEtbfUYWv3D0P5SbNrF+LiL5Q0IE+7Arg\nP1uvwqRTYtOaGqnLISo6tlI1/pevLcfD6xfjyGe9+P0n3XinrQu//agbdy+z4Kv3zEdtFdepE2VC\nwQZ6KBzFT3/TjlAkhm1freUwH5GEDFol/nztQnztngVoOzOAdz/qwkdnB/HR2UHUVhvx0JcW4M5b\nyrkdM9EsFGTKRWMx/PRf23Gx24l7brVi7coKqUsiKjqTTcJbWaPFigVLcbHXgyOfDaD9qhMv93wO\nvUaBe2614r66CiyuMkIUOImOaDoKLtDj8Th+8fY5fHbRgdsWluJb/9Nt/IeBSALpTMJbYI7hK3fU\n4LPLfpy4OIzfn+jB70/0wKRT4LYaE1YsNKG2yoByc8ms94SPxWLweNxpteUe9JSPpgz0vXv34uTJ\nkwCAXbt2YeXKlcljx44dw/79+yGTybB+/Xps37590sf09fXh+9//PmKxGCwWC/bt2welMrPrVJ3e\nEF5791xyHezfPrySQ3hEEkpnEt7pjn5YzWX46l0WDIwG0W33o284iJbTDrScdkAAMN+qxW2LyrGw\nwoCFFQZYSjQQpvlB3eNx47fHL0KjTX0fB+5BT/kqZaC3tbWhs7MTzc3N6OjowK5du9Dc3Jw83tTU\nhIMHD8JqtWLbtm146KGHMDQ0NOFjXnzxxWSb/fv346233sKjjz6akTcRj8fR2j6AX713Ht5ABEvm\nmfBfH17J6+ZEeeD60NcbgNr5iV3p7KN+9Ni96HO40e3woXOw84vHKGWwlWphM2tgKdHAqFXCoFNA\nr1ZAIRehVMggCgIisRii0Tii0RhcHg9G/DJ4ool/M2LxxP/j8cTriYIAuVxENCzDlQEvquJKmHRK\nKOTc9Y7yQ8rEa21tRUNDAwCgtrYWTqcTXq8XOp0OXV1dMJlMsNlsAID6+nq0tLRgeHj4psd4PB60\ntbXhH/7hHwAADzzwAA4ePDirQI/H4xgY8aO1vR/HPu+HwxmAUiHirxtuwca753GYnSiPiYKQCOxS\nLTyVStTN12HYL0O33Ycuuxe9Q370OhI71M2FD9uHk7/WqGQwahXJrxK9AiadErZyI5b4I4iHI9Cq\n5cKJAzoAAAhRSURBVFApZONGDdId4s/E8D4vJxAwRaA7HA7U1dUlvzebzXA4HNDpdLDb7TCbzeOO\ndXV1YWRkZMLH+P1+KBSK5M8GBwenLK6jexQDdjeC4SjcvjBc3hBGPcFrW0164PGHAQAqhQxrV1Tg\nG/cvgqWEa1uJCknA70PLqcS1eIUMWFyhweIKDeLxOPyhGLyBCNwePxbPK0MUCoQjMYQjUcRiiRvI\nyGQC5KKIcDiIzkEP1Co1BCHxoUEQr/1fAGIxIBKNwel0IhCMIC5TIhCKIhCKYcQdwsBIIGWdoiBA\no5JBo5JDo5JDLsbh9AQgkyV6+IKQWKMvAICQuINdLBqFxayDQq5IfhgQkv8Z+7Uw9i3GPi/c2DYc\nCqN/yA2ZXI5xXRlh3P8QiURQbTFCoVRCuPZ8MpkImShAPun/hWSbsXMpk03eXnatvVwUIAgC4vE4\nZDIRFstMfvdpOqY1Jh2PT74l5GTHJvp5que53nf3H530WLlJjWXzS7BqaTnuWmqBWpmZ4XVRFBBw\nOSCk+AQb8IwgGJXD5538E3HA74Uozr5NOu1EhDL2etlsk/WafD4EAtHCfG8ZbuP1uODzBnOqphsJ\nggCtSgatSga9IoI7atQwGCbf5c7tdgERLzTaVP9WiBhG5Nq93kvHHYnF4vCHovAHo3C6fbCZdRAU\navQ7vNeCP/HlD0VhHw0jFI4isYtuNMXrAQNOZ8rj0xOeskX30FAGXy992//qDqxeMvkESZq9lClo\ntVrhcDiS3w8ODsJy7WOWzWYbd2xgYABWqxUKhWLCx2i1WoRCISiVymTbqfzbC9+Y9huaLYtlOe5a\ntfz/b+9+Qpru4ziAv9vSMacPuCwPK/pHf3gwcwSxnDSI2CDWzeogO3hJmkKdWpM06JLMtA52kNil\npBgMqRGk0cHosMJYWBgReYpB/klXa3PGxuc57Hls6rRW5H7PfL9u2xh+fCPfz/z92Oez6j/391Xn\nuwAixaup+TvfJRD9MSveSDGbzRgcHAQAjI6OorKyEiUl6fGpBoMBX79+RTgcRjKZxNDQEOrq6rK+\nR6fToba2FgMDAwCAR48e4fDhw3/y9yIiIlpT1skPrn93dXVheHgYarUa7e3tePPmDcrKynD06FG8\nePECV69eBQDYbDY0NjZmfc+ePXswOTkJl8uFubk5GAwGXLlyZf7eEhEREf2eHzZ0IiIiUj5+d4GI\niKgAsKETEREVADZ0IiKiAqDI2agrzY8nwOPxIBQKIZlMoqmpCVVVVX98Tv7/VSKRgN1uR3NzM0wm\nE3NaRiAQgNfrhVqtxtmzZ7F7925mtUgsFoPL5cKXL1/w7ds3tLS0YOfOncwpw7t37+B0OtHY2IiG\nhoZld3gEAgHcunULKpUKJ0+eRH19fb5LX1XZcnK73UilUli/fj06OztRUVGRe06iMM+fP5empiYR\nEXn//r2cOnUqzxUpSzAYlNOnT4uIyMzMjFgsFrlw4YIMDAyIiEh3d7fcuXMnnyUqSnd3t9TX10t/\nfz9zWsb09LRYrVaJxWIyMTEhbW1tzCqL27dvS1dXl4iIjI+Pi81mY04ZYrGYOBwOaWtrk76+PhGR\nrPnEYjGx2WwSjUYlkUiI3W6XSCSSz9JXVbacXC6XPHz4UERE+vr6xOPxSDwezzknxV1yX25+PKUd\nPHgQ169fBwCUlZVhdnYWw8PDOHLkCID0nPxgMJjPEhVjbGwMY2NjsFgsANLLhpjTUsFgELW1tSgp\nKcHGjRtx+fJlZpWFXq9HJBIBAHz+/Bl6vZ45ZdBoNLh58+aCoWHZ8nn16hX27duH0tJSaDQaGI1G\nhEKhfJW96rLldOnSJVitVgBAeXk5IpEIRkZGcs5JcQ19amoK5eXfRy7q9XpMTk7msSJlUalU0GrT\n8+r9fj8sFgvi8XjOc/LXAo/HA7fbPf/4V/YJrAXhcBiJRAJnzpxBQ0MDgsEgs8ri2LFjCIfDsFqt\ncDgccLlczCmDWq2GRqNZ8Fy2fKamphbsAdmwYcOaOuOz5aTVaqFSqZBKpXD37l0cP378l3JS5D30\nTCKS897jteDx48fo7++H1+ud/2QH/Pyc/EJ379491NTUwGAwAFiaC3P6TkQQiURw48YNhMNhOByO\nJa8TcP/+fRgMBni9Xrx9+xatra0LzibmtLLl8mFuaalUCufPn4fJZILJZMKDBw8WvP4zOSmuoa80\nP57Snj59it7eXni9XpSWlv7SnPxC9+TJE3z48AFDQ0P4+PEjiouLodPpMDc3B41Gw5wyVFRUwGg0\nQqVSYcuWLdDpdCgqKmJWi7x8+RJ1dXUAgL1792JiYgJarZY5rSDb2bT4jB8fH4fRaMxjlcrgdrux\nfft2NDc3A1jaC38mJ8Vdcl9pfjwB0WgUHo8Hvb29+Ouv9GYpzslf6tq1a/D7/fD5fDhx4gScTicO\nHTo0/7fFnL4zm8149uwZRAQzMzOYnZ1lVlls3boVIyMjANK3Kf7bUcGcFsr8TzLb2bR//368fv0a\n0WgUsVgMoVAIBw4cyFe5eZOZUyAQQHFxMVpaWuafq66uzjknRY5+zTYLntJ8Ph96enqwbds2AOkV\nkh0dHbh48SLn5C+jp6cHmzdvhtls5j6BZfh8Pvj9fgCA0+lEVVUVs1okHo+jtbUVnz59QjKZxLlz\n57Bjxw7m9K/R0VF0dHQgHA6jqKgIlZWV6OzshNvtXpLP4OAgvF4v1q1bB4fDAbvdnu/yV83inDZt\n2oTp6WloNBrodDoAwK5du9De3p5zTops6ERERJQbxV1yJyIiotyxoRMRERUANnQiIqICwIZORERU\nANjQiYiICgAbOhERUQFgQyciIioAbOhEREQF4B/9ybBDfcxKngAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3e690c1828>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scores = [find_mss(seq) for seq in database_rnd]\n",
"sns.distplot(scores)"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"# 3. Regression"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"### 3.1 Berechnung der *Pseudowahrscheinlichkeiten* $P\\{M(n) \\leq x\\}$"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"points = []\n",
"for x in sorted(scores): \n",
" fraction = get_n_lower_scores(x, scores) / len(scores)\n",
" points.append((x, np.log(-np.log(fraction))))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"points = points[:-1] # last value is undefined (log(0)) -> remove"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x7f3e7570f1d0>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/sturm/bin/anaconda3/lib/python3.4/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" if self._edgecolors == str('face'):\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfgAAAFmCAYAAACBRIhMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt8zvX/x/HHtRmXU82yTcmxnHKKL4UV8tXSkr45ZPEV\nqSiEijmEJof6TSWhnA8lkRVfvklCDjGHnAlztq/D5jTnGXb9/nhvc8i6jO06fDzvt5tbuz7Xte31\n6hqvfd6H19vmcDgciIiIiKX4uDsAERERyXoq8CIiIhakAi8iImJBKvAiIiIWpAIvIiJiQSrwIiIi\nFuRRBT4pKYn69eszc+ZMd4ciIiLi1TyqwH/11Vf4+/tjs9ncHYqIiIhX85gCv3v3bnbv3k3dunVR\n7x0REZE74zEFPioqil69erk7DBEREUvwiAI/a9YsHn30UQoXLqy7dxERkSyQw90BACxZsoS4uDgW\nL17MkSNHyJkzJ4UKFaJmzZo3fb3D4dA8vYiIyN+wedphMyNGjODBBx/kX//619++7ujRMy6KKPsE\nBuZXHh7CCjmANfKwQg6gPDyJFXIAk0dmeMQQvYiIiGQtjxiiv1anTp3cHYKIiIjX0x28iIiIBanA\ni4iIWJAKvIiIiAWpwIuIiFiQCryIiIgFqcCLiIhYkAq8iIiIBanAi4iIWJAKvIiIiAWpwIuIiFiQ\nCryIiIgFqcCLiIhYkAq8iIiIBanAi4iIWJAKvIiIiAWpwIuIiFiQCryIiIgFqcCLiIhYkAq8iIiI\nBanAi4iIWJAKvIiIiAWpwIuIiFiQCryIiIgFqcCLiIhYkAq8iIiIBanAi4iIWJAKvIiIiAWpwIuI\niFiQCryIiIgFqcCLiIhYkAq8iIiIBanAi4iIWJAKvIiIiAWpwIuIiFiQCryIiIgF5XB3ANeKiopi\n3bp1XL58mfbt2/P000+7OyQRERGv5DEFfuXKlezevZtp06aRmJjIiy++6JUFPikpiWnTlgIQHl4b\nu93u5ohERORu5DEF/rHHHqNy5coA5M+fn/Pnz+NwOLDZbG6O7NYlJSXRvPlMYmJeBWDmzIlMn/6i\niryIiLicx8zB+/j4kDt3bgCio6OpW7euVxV3gGnTlqYWdz/Aj5iYNul38yIiIq7kMXfwaRYsWMAP\nP/zAhAkT3B2KiIiI17I5HA6Hu4NIs2zZMoYPH864ceO455573B1OpiUlJVG//jiWLz8FQEjIvSxY\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3e6bbd6198>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter(*zip(*points))\n",
"xlabel(\"score\")\n",
"ylabel(\"log-transformed pseudo-probability\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"run_control": {
"breakpoint": false
}
},
"source": [
"### 3.2 Anwendung der Linearen Regression (Bestimmung von $K$ und $\\lambda$)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"model = scipy.stats.linregress(*zip(*points))"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"lambd = -model.slope"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": [
"K = np.exp(model.intercept)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"10.264286873893964"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"K"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.10633805391640891"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lambd"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"run_control": {
"breakpoint": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f3e6a313f60>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3e7570fb00>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"figure()\n",
"plot(*zip(*points), label=\"data\")\n",
"plot([p[0] for p in points], [model.slope * p[0] + model.intercept for p in points], label=\"regression\")\n",
"xlabel(\"score\")\n",
"ylabel(\"log-transformed pseudo-probability\")\n",
"legend()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"run_control": {
"breakpoint": false
}
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment