{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using statistics to historically compare notebooks and cells\n", "\n", "This notebooks demonstrates a usage of [2018-08-25-Notebook-git-histories-as-dataframes.ipynb](2018-08-25-Notebook-git-histories-as-dataframes.ipynb) to quantify changes in notebook source code over time.\n", "\n", "> We should include \"git distances\"." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ " from .__Notebook_git_histories_as_dataframes import get_history\n", " from pandas import DataFrame, concat, Series, np\n", " from matplotlib.pyplot import gca, figure, spy, gcf\n", " from toolz import excepts\n", " import sys\n", " from Levenshtein import distance, hamming, jaro, ratio" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://rawgit.com/ztane/python-Levenshtein/master/docs/Levenshtein.html\n", "\n", " !conda install -yc conda-forge python-levenshtein" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "history = get_history('..', 'deathbeds/2018-06-19-String-Node-Transformer.ipynb')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "sources = history.source.apply(''.join).dropna()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each of the python levenshtein distances we sample compose the distance matrix using a vectorized numpy array. The distance matrix compare the source text in each cell within each revision to quantify a nearness metric." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
distance...ratio
committed_datetime2018-08-19 17:50:19+00:00...2018-07-02 22:09:37+00:00
id0123456789...21222324252627282930
committed_datetimeid
2018-07-07 17:02:56+00:0022354167562484012366113484955...0000000000
2018-07-02 22:09:37+00:0022353168562474012345913494956...0100000000
2018-08-14 03:45:00+00:00263341671212283602251261294124126...0000000000
2018-07-02 22:09:37+00:0017386190512744332615913974451...0000000000
2018-08-18 00:23:08+00:00835916647244403234501356043...0000000000
2018-08-19 17:50:19+00:0019378182492674252515713853946...0000000000
2018-07-03 20:04:16+00:0028386190492734252606213894254...0000000100
2018-07-07 12:54:17+00:00130101632043482071571261166163...0000000000
2018-07-03 20:04:16+00:0012354167512484062345513614752...0000000000
2018-07-07 17:02:56+00:0013379183502654232525713874248...0000000000
\n", "

10 rows × 1408 columns

\n", "
" ], "text/plain": [ " distance \\\n", "committed_datetime 2018-08-19 17:50:19+00:00 \n", "id 0 1 2 3 4 \n", "committed_datetime id \n", "2018-07-07 17:02:56+00:00 22 354 167 56 248 401 \n", "2018-07-02 22:09:37+00:00 22 353 168 56 247 401 \n", "2018-08-14 03:45:00+00:00 26 334 167 121 228 360 \n", "2018-07-02 22:09:37+00:00 17 386 190 51 274 433 \n", "2018-08-18 00:23:08+00:00 8 359 166 47 244 403 \n", "2018-08-19 17:50:19+00:00 19 378 182 49 267 425 \n", "2018-07-03 20:04:16+00:00 28 386 190 49 273 425 \n", "2018-07-07 12:54:17+00:00 1 301 0 163 204 348 \n", "2018-07-03 20:04:16+00:00 12 354 167 51 248 406 \n", "2018-07-07 17:02:56+00:00 13 379 183 50 265 423 \n", "\n", " ... \\\n", "committed_datetime ... \n", "id 5 6 7 8 9 ... \n", "committed_datetime id ... \n", "2018-07-07 17:02:56+00:00 22 236 61 1348 49 55 ... \n", "2018-07-02 22:09:37+00:00 22 234 59 1349 49 56 ... \n", "2018-08-14 03:45:00+00:00 26 225 126 1294 124 126 ... \n", "2018-07-02 22:09:37+00:00 17 261 59 1397 44 51 ... \n", "2018-08-18 00:23:08+00:00 8 234 50 1356 0 43 ... \n", "2018-08-19 17:50:19+00:00 19 251 57 1385 39 46 ... \n", "2018-07-03 20:04:16+00:00 28 260 62 1389 42 54 ... \n", "2018-07-07 12:54:17+00:00 1 207 157 1261 166 163 ... \n", "2018-07-03 20:04:16+00:00 12 234 55 1361 47 52 ... \n", "2018-07-07 17:02:56+00:00 13 252 57 1387 42 48 ... \n", "\n", " ratio \\\n", "committed_datetime 2018-07-02 22:09:37+00:00 \n", "id 21 22 23 24 25 26 27 28 \n", "committed_datetime id \n", "2018-07-07 17:02:56+00:00 22 0 0 0 0 0 0 0 0 \n", "2018-07-02 22:09:37+00:00 22 0 1 0 0 0 0 0 0 \n", "2018-08-14 03:45:00+00:00 26 0 0 0 0 0 0 0 0 \n", "2018-07-02 22:09:37+00:00 17 0 0 0 0 0 0 0 0 \n", "2018-08-18 00:23:08+00:00 8 0 0 0 0 0 0 0 0 \n", "2018-08-19 17:50:19+00:00 19 0 0 0 0 0 0 0 0 \n", "2018-07-03 20:04:16+00:00 28 0 0 0 0 0 0 0 1 \n", "2018-07-07 12:54:17+00:00 1 0 0 0 0 0 0 0 0 \n", "2018-07-03 20:04:16+00:00 12 0 0 0 0 0 0 0 0 \n", "2018-07-07 17:02:56+00:00 13 0 0 0 0 0 0 0 0 \n", "\n", " \n", "committed_datetime \n", "id 29 30 \n", "committed_datetime id \n", "2018-07-07 17:02:56+00:00 22 0 0 \n", "2018-07-02 22:09:37+00:00 22 0 0 \n", "2018-08-14 03:45:00+00:00 26 0 0 \n", "2018-07-02 22:09:37+00:00 17 0 0 \n", "2018-08-18 00:23:08+00:00 8 0 0 \n", "2018-08-19 17:50:19+00:00 19 0 0 \n", "2018-07-03 20:04:16+00:00 28 0 0 \n", "2018-07-07 12:54:17+00:00 1 0 0 \n", "2018-07-03 20:04:16+00:00 12 0 0 \n", "2018-07-07 17:02:56+00:00 13 0 0 \n", "\n", "[10 rows x 1408 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = concat({\n", " callable.__name__: DataFrame(\n", " np.vectorize(\n", " excepts(ValueError, callable, lambda e: 1000)\n", " )(*np.meshgrid(*[sources.values]*2)).astype(int),\n", " sources.index, sources.index)\n", " for callable in (distance, hamming, jaro, ratio)\n", "}, axis=1); df.sample(10)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "from pandas import Series" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "connections = Series(\n", " df['distance'].values.ravel(),\n", " list(map(np.ravel, np.meshgrid(*[df.index]*2))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# A distribution of distances." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABJQAAAEyCAYAAACs14oRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X+wZnWdH/j3Z+igo0TBkOkYoLZJptdEYbLRXmQzVamLZKCVKfEP3cJiR5gh1bWzaEwWK0Jms0z5Yxc3kyGajG6xwoozri0hZqEEh6EYb1mpEkTUEdAYepDVBkZmqhkyPTqaNp/9456eXJvb3HvuuZfnud2vV9Wt+5zv+Z7zfE/z4dz7vO/3nFPdHQAAAABYq5+Y9QAAAAAA2FoESgAAAACMIlACAAAAYBSBEgAAAACjCJQAAAAAGEWgBAAAAMAoAiUAAAAARhEoAQAAADCKQAkAAACAUbbNegDrdeqpp/aOHTtmPYzJ/vRP/zQvfvGLZz0MtjA1xBTqh6nUEFOoH6ZSQ0yhfpjiWK6fBx544I+6+y+v1m/LBko7duzIl770pVkPY7LFxcUsLCzMehhsYWqIKdQPU6khplA/TKWGmEL9MMWxXD9V9f+tpZ9L3gAAAAAYRaAEAAAAwCgCJQAAAABGESgBAAAAMIpACQAAAIBRBEoAAAAAjCJQAgAAAGAUgRIAAAAAowiUAAAAABhFoAQAAADAKAIlAAAAAEbZNusBMDs7rr5jTf0eu+6iTR4JAAAAsJWYoQQAAADAKAIlAAAAAEYRKAEAAAAwikAJAAAAgFEESgAAAACMIlACAAAAYBSBEgAAAACjCJQAAAAAGGXVQKmqbqqqp6rqoSPa31FV36yqh6vq/1jWfk1V7RvWXbisfffQtq+qrl7WfmZV3VdVj1TVp6rqxI06OAAAAAA23lpmKH0sye7lDVV1XpKLk/xMd78qya8N7a9MckmSVw3bfLiqTqiqE5L8RpLXJ3llkrcOfZPkA0mu7+6dSZ5OcsXUgwIAAABg86waKHX355McOKL5l5Nc190/GPo8NbRfnGRvd/+gu7+VZF+Sc4avfd39aHf/MMneJBdXVSV5XZJbh+1vTvKmiccEAAAAwCaq7l69U9WOJJ/p7rOG5a8muS1Ls5D+LMm7uvv+qvpXSe7t7t8a+t2Y5LPDbnZ3998f2n8hyWuT/OrQ/6eH9jOSfPbw+6wwjj1J9iTJ9u3bX7N37951HPJ8OXjwYE466aSZvPeDjz+zpn5nn/bSTR4JU8yyhtj61A9TqSGmUD9MpYaYQv0wxbFcP+edd94D3b1rtX7b1rn/bUlOSXJukv82yS1V9deS1Ap9OyvPhOrn6L+i7r4hyQ1JsmvXrl5YWBg36jm0uLiYWR3H5VffsaZ+j126sLkDYZJZ1hBbn/phKjXEFOqHqdQQU6gfplA/6w+U9if5dC9Nb/piVf3nJKcO7Wcs63d6kieG1yu1/1GSk6tqW3cfOqI/AAAAAHNoLTflXsn/m6V7H6Wq/uskJ2YpHLo9ySVV9YKqOjPJziRfTHJ/kp3DE91OzNKNu28fAqnPJXnzsN/LsnQpHQAAAABzatUZSlX1ySQLSU6tqv1Jrk1yU5KbquqhJD9MctkQDj1cVbck+XqSQ0mu7O4fDft5e5K7kpyQ5Kbufnh4i3cn2VtV70vylSQ3buDxAQAAALDBVg2UuvutR1n1Pxyl//uTvH+F9juT3LlC+6NZegocAAAAAFvAei95AwAAAOA4JVACAAAAYBSBEgAAAACjCJQAAAAAGEWgBAAAAMAoAiUAAAAARhEoAQAAADCKQAkAAACAUQRKAAAAAIwiUAIAAABgFIESAAAAAKMIlAAAAAAYRaAEAAAAwCgCJQAAAABGESgBAAAAMIpACQAAAIBRBEoAAAAAjCJQAgAAAGAUgRIAAAAAowiUAAAAABhFoAQAAADAKAIlAAAAAEZZNVCqqpuq6qmqemiFde+qqq6qU4flqqoPVdW+qvpaVb16Wd/LquqR4euyZe2vqaoHh20+VFW1UQcHAAAAwMZbywyljyXZfWRjVZ2R5OeSfHtZ8+uT7By+9iT5yND3ZUmuTfLaJOckubaqThm2+cjQ9/B2z3ovAAAAAObHqoFSd38+yYEVVl2f5B8n6WVtFyf5eC+5N8nJVfXyJBcmubu7D3T300nuTrJ7WPeS7v5Cd3eSjyd507RDAgAAAGAzbVvPRlX1xiSPd/fvHXGF2mlJvrNsef/Q9lzt+1doP9r77snSbKZs3749i4uL6xn+XDl48ODMjuOqsw+tqd+x8O98LJtlDbH1qR+mUkNMoX6YSg0xhfphCvWzjkCpql6U5FeSXLDS6hXaeh3tK+ruG5LckCS7du3qhYWF1YY79xYXFzOr47j86jvW1O+xSxc2dyBMMssaYutTP0ylhphC/TCVGmIK9cMU6md9T3n760nOTPJ7VfVYktOTfLmq/kqWZhidsazv6UmeWKX99BXaAQAAAJhTowOl7n6wu3+qu3d0944shUKv7u4/SHJ7krcNT3s7N8kz3f1kkruSXFBVpww3474gyV3Duj+pqnOHp7u9LcltG3RsAAAAAGyCVQOlqvpkki8keUVV7a+qK56j+51JHk2yL8n/leR/SpLuPpDkvUnuH77eM7QlyS8n+eiwze8n+ez6DgUAAACA58Oq91Dq7reusn7Hsted5Mqj9LspyU0rtH8pyVmrjQMAAACA+bCeeygBAAAAcBwTKAEAAAAwikAJAAAAgFEESgAAAACMIlACAAAAYBSBEgAAAACjCJQAAAAAGEWgBAAAAMAoAiUAAAAARhEoAQAAADCKQAkAAACAUQRKAAAAAIwiUAIAAABgFIESAAAAAKMIlAAAAAAYRaAEAAAAwCgCJQAAAABGESgBAAAAMIpACQAAAIBRBEoAAAAAjCJQAgAAAGCUVQOlqrqpqp6qqoeWtf2zqvr3VfW1qvq3VXXysnXXVNW+qvpmVV24rH330Lavqq5e1n5mVd1XVY9U1aeq6sSNPEAAAAAANtZaZih9LMnuI9ruTnJWd/9Mkv+Q5JokqapXJrkkyauGbT5cVSdU1QlJfiPJ65O8Mslbh75J8oEk13f3ziRPJ7li0hEBAAAAsKlWDZS6+/NJDhzR9jvdfWhYvDfJ6cPri5Ps7e4fdPe3kuxLcs7wta+7H+3uHybZm+Tiqqokr0ty67D9zUneNPGYAAAAANhEG3EPpV9K8tnh9WlJvrNs3f6h7WjtfynJHy8Lpw63AwAAADCntk3ZuKp+JcmhJJ843LRCt87KwVU/R/+jvd+eJHuSZPv27VlcXBwz3Ll08ODBmR3HVWcfWr1Tckz8Ox/LZllDbH3qh6nUEFOoH6ZSQ0yhfphC/UwIlKrqsiQ/n+T87j4cAu1PcsaybqcneWJ4vVL7HyU5uaq2DbOUlvd/lu6+IckNSbJr165eWFhY7/DnxuLiYmZ1HJdffcea+j126cLmDoRJZllDbH3qh6nUEFOoH6ZSQ0yhfphC/azzkreq2p3k3Une2N3fW7bq9iSXVNULqurMJDuTfDHJ/Ul2Dk90OzFLN+6+fQiiPpfkzcP2lyW5bX2HAgAAAMDzYdVAqao+meQLSV5RVfur6ook/yrJX0xyd1V9tar+zyTp7oeT3JLk60l+O8mV3f2jYfbR25PcleQbSW4Z+iZLwdT/XFX7snRPpRs39AgBAAAA2FCrXvLW3W9dofmooU93vz/J+1dovzPJnSu0P5qlp8ABAAAAsAVsxFPeAAAAADiOCJQAAAAAGEWgBAAAAMAoAiUAAAAARhEoAQAAADCKQAkAAACAUQRKAAAAAIwiUAIAAABgFIESAAAAAKMIlAAAAAAYRaAEAAAAwCgCJQAAAABGESgBAAAAMIpACQAAAIBRBEoAAAAAjCJQAgAAAGAUgRIAAAAAowiUAAAAABhFoAQAAADAKAIlAAAAAEYRKAEAAAAwikAJAAAAgFFWDZSq6qaqeqqqHlrW9rKquruqHhm+nzK0V1V9qKr2VdXXqurVy7a5bOj/SFVdtqz9NVX14LDNh6qqNvogAQAAANg4a5mh9LEku49ouzrJPd29M8k9w3KSvD7JzuFrT5KPJEsBVJJrk7w2yTlJrj0cQg199izb7sj3AgAAAGCOrBoodffnkxw4ovniJDcPr29O8qZl7R/vJfcmObmqXp7kwiR3d/eB7n46yd1Jdg/rXtLdX+juTvLxZfsCAAAAYA6t9x5K27v7ySQZvv/U0H5aku8s67d/aHuu9v0rtAMAAAAwp7Zt8P5Wuv9Rr6N95Z1X7cnS5XHZvn17FhcX1zHE+XLw4MGZHcdVZx9aU79j4d/5WDbLGmLrUz9MpYaYQv0wlRpiCvXDFOpn/YHSd6vq5d395HDZ2lND+/4kZyzrd3qSJ4b2hSPaF4f201fov6LuviHJDUmya9euXlhYOFrXLWNxcTGzOo7Lr75jTf0eu3RhcwfCJLOsIbY+9cNUaogp1A9TqSGmUD9MoX7Wf8nb7UkOP6ntsiS3LWt/2/C0t3OTPDNcEndXkguq6pThZtwXJLlrWPcnVXXu8HS3ty3bFwAAAABzaNUZSlX1ySzNLjq1qvZn6Wlt1yW5paquSPLtJG8Zut+Z5A1J9iX5XpJfTJLuPlBV701y/9DvPd19+Ebfv5ylJ8n9ZJLPDl8AAAAAzKlVA6XufutRVp2/Qt9OcuVR9nNTkptWaP9SkrNWGwcAAAAA82G9l7wBAAAAcJwSKAEAAAAwikAJAAAAgFEESgAAAACMIlACAAAAYBSBEgAAAACjCJQAAAAAGEWgBAAAAMAoAiUAAAAARhEoAQAAADCKQAkAAACAUQRKAAAAAIwiUAIAAABgFIESAAAAAKMIlAAAAAAYRaAEAAAAwCgCJQAAAABGESgBAAAAMIpACQAAAIBRBEoAAAAAjCJQAgAAAGAUgRIAAAAAo0wKlKrqH1XVw1X1UFV9sqpeWFVnVtV9VfVIVX2qqk4c+r5gWN43rN+xbD/XDO3frKoLpx0SAAAAAJtp3YFSVZ2W5B8k2dXdZyU5IcklST6Q5Pru3pnk6SRXDJtckeTp7v7pJNcP/VJVrxy2e1WS3Uk+XFUnrHdcAAAAAGyuqZe8bUvyk1W1LcmLkjyZ5HVJbh3W35zkTcPri4flDOvPr6oa2vd29w+6+1tJ9iU5Z+K4AAAAANgk1d3r37jqnUnen+T7SX4nyTuT3DvMQkpVnZHks919VlU9lGR3d+8f1v1+ktcm+dVhm98a2m8ctrl1hffbk2RPkmzfvv01e/fuXffY58XBgwdz0kknzeS9H3z8mTX1O/u0l27ySJhiljXE1qd+mEoNMYX6YSo1xBTqhymO5fo577zzHujuXav127beN6iqU7I0u+jMJH+c5F8nef0KXQ8nVnWUdUdrf3Zj9w1JbkiSXbt29cLCwrhBz6HFxcXM6jguv/qONfV77NKFzR0Ik8yyhtj61A9TqSGmUD9MpYaYQv0whfqZdsnb30vyre7+w+7+T0k+neTvJDl5uAQuSU5P8sTwen+SM5JkWP/SJAeWt6+wDQAAAABzZkqg9O0k51bVi4Z7IZ2f5OtJPpfkzUOfy5LcNry+fVjOsP53e+l6u9uTXDI8Be7MJDuTfHHCuAAAAADYROu+5K2776uqW5N8OcmhJF/J0uVodyTZW1XvG9puHDa5MclvVtW+LM1MumTYz8NVdUuWwqhDSa7s7h+td1wAAAAAbK51B0pJ0t3XJrn2iOZHs8JT2rr7z5K85Sj7eX+Wbu7NHNqx1nstXXfRJo8EAAAAmAdTLnkDAAAA4DgkUAIAAABgFIESAAAAAKMIlAAAAAAYRaAEAAAAwCgCJQAAAABGESgBAAAAMIpACQAAAIBRBEoAAAAAjCJQAgAAAGAUgRIAAAAAowiUAAAAABhFoAQAAADAKAIlAAAAAEYRKAEAAAAwikAJAAAAgFEESgAAAACMIlACAAAAYBSBEgAAAACjCJQAAAAAGEWgBAAAAMAoAiUAAAAARtk2ZeOqOjnJR5OclaST/FKSbyb5VJIdSR5L8t9399NVVUk+mOQNSb6X5PLu/vKwn8uS/C/Dbt/X3TdPGRcwezuuvmNN/R677qJNHgkAAAAbbeoMpQ8m+e3u/htJ/laSbyS5Osk93b0zyT3DcpK8PsnO4WtPko8kSVW9LMm1SV6b5Jwk11bVKRPHBQAAAMAmWfcMpap6SZK/m+TyJOnuHyb5YVVdnGRh6HZzksUk705ycZKPd3cnubeqTq6qlw997+7uA8N+706yO8kn1zu2Y5UZHwAAAMA8qKV8Zx0bVv03SW5I8vUszU56IMk7kzze3Scv6/d0d59SVZ9Jcl13/7uh/Z4sBU0LSV7Y3e8b2v9pku9396+t8J57sjS7Kdu3b3/N3r171zX2eXLw4MGcdNJJa+r74OPPrKnf2ae9dEP3t1ZrfV821pgaej5tdL2yOea1ftg61BBTqB+mUkNMoX6Y4liun/POO++B7t61Wr8p91DaluTVSd7R3fdV1QfzXy5vW0mt0NbP0f7sxu4bshRiZdeuXb2wsDBqwPNocXExaz2Oy9c6Q+nSjd3fWq31fdlYY2ro+bTR9crmmNf6YetQQ0yhfphKDTGF+mEK9TPtHkr7k+zv7vuG5VuzFDB9d7iULcP3p5b1P2PZ9qcneeI52gEAAACYQ+ueodTdf1BV36mqV3T3N5Ocn6XL376e5LIk1w3fbxs2uT3J26tqb5ZuwP1Mdz9ZVXcl+d+W3Yj7giTXrHdcW82Djz+z4TOFAAAAADbTlEvekuQdST5RVScmeTTJL2Zp1tMtVXVFkm8necvQ984kb0iyL8n3hr7p7gNV9d4k9w/93nP4Bt0AAAAAzJ9JgVJ3fzXJSjdqOn+Fvp3kyqPs56YkN00ZCwAAAADPjyn3UAIAAADgODT1kjfgGLFjrU9lu+6iTR4JAAAA884MJQAAAABGESgBAAAAMIpACQAAAIBRBEoAAAAAjCJQAgAAAGAUT3kDRlnr0+AAAAA4dpmhBAAAAMAoAiUAAAAARnHJGzBTa72E7rHrLtrkkQAAALBWZigBAAAAMIpACQAAAIBRBEoAAAAAjCJQAgAAAGAUgRIAAAAAowiUAAAAABhl26wHwMZb62PYAQAAANZDoAQTrDW8e+y6izZ5JAAAAPD8cckbAAAAAKMIlAAAAAAYRaAEAAAAwCiTA6WqOqGqvlJVnxmWz6yq+6rqkar6VFWdOLS/YFjeN6zfsWwf1wzt36yqC6eOCQAAAIDNsxEzlN6Z5BvLlj+Q5Pru3pnk6SRXDO1XJHm6u386yfVDv1TVK5NckuRVSXYn+XBVnbAB4wIAAABgE0wKlKrq9CQXJfnosFxJXpfk1qHLzUneNLy+eFjOsP78of/FSfZ29w+6+1tJ9iU5Z8q4AAAAANg81d3r37jq1iT/e5K/mORdSS5Pcu8wCylVdUaSz3b3WVX1UJLd3b1/WPf7SV6b5FeHbX5raL9x2ObWI94uVbUnyZ4k2b59+2v27t277rHPi6cOPJPvfn/Wo9gYZ5/20lkP4Xn34OPPrKnfZv7bHDx4MCeddNJR1691jPPueKyv58Nq9QOrUUNMoX6YSg0xhfphimO5fs4777wHunvXav22rfcNqurnkzzV3Q9U1cLh5hW69irrnmubH2/sviHJDUmya9euXlhYWKnblvIvP3Fb/vmD6/7PMFceu3Rh1kN43l1+9R1r6reZ/zaLi4t5rv8X1jrGeXc81tfzYbX6gdWoIaZQP0ylhphC/TCF+pkQKCX52SRvrKo3JHlhkpck+RdJTq6qbd19KMnpSZ4Y+u9PckaS/VW1LclLkxxY1n7Y8m0AkiQ71hreXXfRJo8EAACAdQdK3X1NkmuSZJih9K7uvrSq/nWSNyfZm+SyJLcNm9w+LH9hWP+73d1VdXuS/6eqfj3JX02yM8kX1zsu5p9gAAAAALa2zbjW6t1J9lbV+5J8JcmNQ/uNSX6zqvZlaWbSJUnS3Q9X1S1Jvp7kUJIru/tHmzAuAAAAADbAhgRK3b2YZHF4/WhWeEpbd/9ZkrccZfv3J3n/RowFAAAAgM11bNwNGuacy/wAAAA4lgiUYI4IngAAANgKfmLWAwAAAABgazFDCThumREGAACwPmYoAQAAADCKQAkAAACAUQRKAAAAAIwiUAIAAABgFIESAAAAAKMIlAAAAAAYRaAEAAAAwCgCJQAAAABG2TbrAQBspB1X3zHrIQAAABzzzFACAAAAYBSBEgAAAACjCJQAAAAAGMU9lDiurPX+Oo9dd9EmjwQAAAC2LjOUAAAAABhFoAQAAADAKC55gy1o+aV7V519KJev8VI+5oNLLwEAgK1OoMQxYa0f0AEAAIDpXPIGAAAAwCjrDpSq6oyq+lxVfaOqHq6qdw7tL6uqu6vqkeH7KUN7VdWHqmpfVX2tql69bF+XDf0fqarLph8WAAAAAJtlygylQ0mu6u6/meTcJFdW1SuTXJ3knu7emeSeYTlJXp9k5/C1J8lHkqUAKsm1SV6b5Jwk1x4OoQAAAACYP+sOlLr7ye7+8vD6T5J8I8lpSS5OcvPQ7eYkbxpeX5zk473k3iQnV9XLk1yY5O7uPtDdTye5O8nu9Y4LAAAAgM1V3T19J1U7knw+yVlJvt3dJy9b93R3n1JVn0lyXXf/u6H9niTvTrKQ5IXd/b6h/Z8m+X53/9oK77MnS7Obsn379tfs3bt38thn7akDz+S735/1KDbG2ae9dE39Hnz8mQ3d35h9rtVGH8tm2v6TOWZqaF6NqcW12Iz/B9br4MGDOemkkzb9fTh2qSGmUD9MpYaYQv0wxbFcP+edd94D3b1rtX6Tn/JWVScl+TdJ/mF3/8eqOmrXFdr6Odqf3dh9Q5IbkmTXrl29sLAwerzz5l9+4rb88wePjYftPXbpwpr6rfUR92vd35h9rtVGH8tmuursQ8dMDc2rMbW4Fpvx/8B6LS4u5lg4lzI7aogp1A9TqSGmUD9MoX4mBkpV9ReyFCZ9ors/PTR/t6pe3t1PDpe0PTW0709yxrLNT0/yxNC+cET74pRxcWzYMQdhDQAAAPBsU57yVkluTPKN7v71ZatuT3L4SW2XJbltWfvbhqe9nZvkme5+MsldSS6oqlOGm3FfMLQBAAAAMIemzFD62SS/kOTBqvrq0PZPklyX5JaquiLJt5O8ZVh3Z5I3JNmX5HtJfjFJuvtAVb03yf1Dv/d094EJ44LJzI4CAACAo1t3oDTcXPtoN0w6f4X+neTKo+zrpiQ3rXcsAAAAADx/1n3JGwAAAADHJ4ESAAAAAKN41jjAFjfmnl+PXXfRTN57o98XAACYLTOUAAAAABjFDCWAOeVpgwAAwLwyQwkAAACAUQRKAAAAAIzikjeAVbjxNAAAwI8TKAFsEPc8AgAAjhcCJYDjyJGh11VnH8rlKwRhZlsBAADPxT2UAAAAABjFDCU2jMt9AAAA4PggUALgWQTEAADAcxEoAQDAccBTSwHYSAIlADadDzEAxx7ndoDjm5tyAwAAADCKGUoAzA1/7QY49oy5L5/zO8DWYYYSAAAAAKMIlAAAAAAYxSVvAADMjEtdpxtzSdks9gcwlUtn55NACQCAuSd4AoD5MjeBUlXtTvLBJCck+Wh3XzfjIQEAcIwSUAFsnlmeYzf6vY+2v6vOPpTLl607Hn9ezEWgVFUnJPmNJD+XZH+S+6vq9u7++mxHBsA88kEQOJqtcLmWcxjAklmes7fCz4t5NxeBUpJzkuzr7keTpKr2Jrk4iUAJAGBObPQv31edfSjz8+so80DYxnKb/YH/yBkms7YV6loIw3Lz8hP8tCTfWba8P8lrZzQWAOA4NstflrfCh4njjb+esx6b8d9u6uU5693fRpv38c2S/+fZaqq7Zz2GVNVbklzY3X9/WP6FJOd09zuO6LcnyZ5h8RVJvvm8DnRznJrkj2Y9CLY0NcQU6oep1BBTqB+mUkNMoX6Y4liun/+qu//yap3mZYbS/iRnLFs+PckTR3bq7huS3PB8Der5UFVf6u5dsx4HW5caYgr1w1RqiCnUD1OpIaZQP0yhfpKfmPUABvcn2VlVZ1bViUkuSXL7jMcEAAAAwArmYoZSdx+qqrcnuSvJCUlu6u6HZzwsAAAAAFYwF4FSknT3nUnunPU4ZuCYuoSPmVBDTKF+mEoNMYX6YSo1xBTqhymO+/qZi5tyAwAAALB1zMs9lAAAAADYIgRKAAAAAIwiUJqhqtpdVd+sqn1VdfWsx8P8qaozqupzVfWNqnq4qt45tL+squ6uqkeG76cM7VVVHxpq6mtV9erZHgHzoKpOqKqvVNVnhuUzq+q+oX4+NTxdM1X1gmF537B+xyzHzXyoqpOr6taq+vfDuei/cw5irarqHw0/vx6qqk9W1Qudg3guVXVTVT1VVQ8taxt9zqmqy4b+j1TVZbM4Fp5/R6mffzb8DPtaVf3bqjp52bprhvr5ZlVduKzd57Tj1Eo1tGzdu6qqq+rUYfm4PwcJlGakqk5I8htJXp/klUneWlWvnO2omEOHklzV3X8zyblJrhzq5Ook93T3ziT3DMvJUj3tHL72JPnI8z9k5tA7k3xj2fIHklw/1M/TSa4Y2q9I8nR3/3SS64d+8MEkv93dfyPJ38pSLTkHsaqqOi3JP0iyq7vPytKTfC+JcxDP7WNJdh/RNuqcU1UvS3JtktcmOSfJtYdDKI55H8uz6+fuJGd1988k+Q9JrkmS4XfqS5K8atjmw8Mf4XxOO759LM+uoVTVGUl+Lsm3lzUf9+cggdLsnJNkX3c/2t0/TLI3ycUzHhNzpruf7O4vD6//JEsf5E7LUq3cPHS7OcmbhtcXJ/l4L7k3yclV9fLnedjMkao6PclFST46LFeS1yW5dehyZP0crqtbk5w/9Oc4VVUvSfJ3k9yYJN39w+7+4zgHsXbbkvxkVW1L8qIkT8Y5iOfQ3Z9PcuCI5rHnnAuT3N3dB7r76SwFCs/6gMixZ6X66e7f6e5Dw+K9SU4fXl+cZG93/6C7v5VkX5Y+o/mcdhw7yjkoWfpDxz9OsvypZsf9OUigNDunJfnOsuX9Qxu66mQVAAADd0lEQVSsaJj6/7eT3Jdke3c/mSyFTkl+auimrjjSv8jSD7//PCz/pSR/vOwXq+U18uf1M6x/ZujP8euvJfnDJP/3cNnkR6vqxXEOYg26+/Ekv5alv+Y+maVzygNxDmK8secc5yKO5peSfHZ4rX5Yk6p6Y5LHu/v3jlh13NeQQGl2VvqLW6/QBqmqk5L8myT/sLv/43N1XaFNXR2nqurnkzzV3Q8sb16ha69hHcenbUleneQj3f23k/xp/sulJitRQ/y5YXr/xUnOTPJXk7w4S5cHHMk5iPU6Ws2oJZ6lqn4lS7eT+MThphW6qR9+TFW9KMmvJPlfV1q9QttxVUMCpdnZn+SMZcunJ3liRmNhjlXVX8hSmPSJ7v700Pzdw5eRDN+fGtrVFcv9bJI3VtVjWZqu/boszVg6ebj8JPnxGvnz+hnWvzQrT/nl+LE/yf7uvm9YvjVLAZNzEGvx95J8q7v/sLv/U5JPJ/k7cQ5ivLHnHOcifsxwU+SfT3Jpdx/+YK9+WIu/nqU/jPze8Dv16Um+XFV/JWpIoDRD9yfZOTzp5MQs3RDu9hmPiTkz3DvixiTf6O5fX7bq9iSHnxZwWZLblrW/bXjiwLlJnjk8RZzjT3df092nd/eOLJ1jfre7L03yuSRvHrodWT+H6+rNQ/9j8q8prE13/0GS71TVK4am85N8Pc5BrM23k5xbVS8afp4drh/nIMYae865K8kFVXXKMFPugqGN41BV7U7y7iRv7O7vLVt1e5JLaukJk2dm6cbKX4zPaSzT3Q929091947hd+r9SV49/I503J+Dtq3ehc3Q3Yeq6u1ZKqwTktzU3Q/PeFjMn59N8gtJHqyqrw5t/yTJdUluqaorsvQL+1uGdXcmeUOWbir4vSS/+PwOly3i3Un2VtX7knwlww2Xh++/WVX7sjQr4JIZjY/58o4knxh+qX40S+eVn4hzEKvo7vuq6tYkX87SZSZfSXJDkjviHMRRVNUnkywkObWq9mfpSUmjfu/p7gNV9d4sBQNJ8p7uNtvtOHCU+rkmyQuS3D3c5//e7v4fu/vhqrolS0H3oSRXdvePhv34nHacWqmGuvvGo3Q/7s9B5Q8/AAAAAIzhkjcAAAAARhEoAQAAADCKQAkAAACAUQRKAAAAAIwiUAIAAABgFIESAAAAAKMIlAAAAAAY5f8HWiEpZZ62Th4AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "connections.hist(bins=100, figsize=(20, 5))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "78650ea8d7bf48f0995954a40bddc653", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(IntSlider(value=500, description='cutoff', max=1000, step=5), Output()), _dom_classes=('…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "if __name__ == \"__main__\":\n", " from ipywidgets import interact\n", " @interact\n", " def _(cutoff=(0, 1000, 5)): spy(df['distance'] < cutoff); gcf().set_size_inches(15, 15)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## view the sparsity of the matrix." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for alias in (distance, hamming, jaro, ratio):\n", " figure();spy(df[alias.__name__])\n", " gca().set_title(alias.__name__)" ] } ], "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }