diff --git a/candlegp/models/gpmc.py b/candlegp/models/gpmc.py
new file mode 100644
index 0000000..6e6c1b3
--- /dev/null
+++ b/candlegp/models/gpmc.py
@@ -0,0 +1,86 @@
+# Copyright 2016 James Hensman, alexggmatthews
+# Copyright 2017 Thomas Viehmann
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+import torch
+from torch.autograd import Variable
+
+from .. import likelihoods
+from .. import densities
+from .. import parameter
+from .. import priors
+from .. import conditionals
+
+from .model import GPModel
+
+
+class GPMC(GPModel):
+ def __init__(self, X, Y, kern, likelihood,
+ mean_function=None,
+ num_latent=None,
+ **kwargs):
+ """
+ X is a data matrix, size N x D
+ Y is a data matrix, size N x R
+ kern, likelihood, mean_function are appropriate GPflow objects
+
+ This is a vanilla implementation of a GP with a non-Gaussian
+ likelihood. The latent function values are represented by centered
+ (whitened) variables, so
+
+ v ~ N(0, I)
+ f = Lv + m(x)
+
+ with
+
+ L L^T = K
+
+ """
+ GPModel.__init__(self, X, Y, kern, likelihood, mean_function, **kwargs)
+ self.num_data = X.size(0)
+ self.num_latent = num_latent or Y.size(1)
+ self.V = parameter.Param(self.X.data.new(self.num_data, self.num_latent).zero_())
+ self.V.prior = priors.Gaussian(0., 1.)
+
+ def compute_log_likelihood(self):
+ """
+ Construct a tf function to compute the likelihood of a general GP
+ model.
+
+ \log p(Y, V | theta).
+
+ """
+ K = self.kern.K(self.X)
+ L = torch.potrf(
+ K + Variable(torch.eye(self.X.size(0), out=K.data.new()) * self.jitter_level), upper=False)
+ F = torch.matmul(L, self.V.get()) + self.mean_function(self.X)
+
+ return self.likelihood.logp(F, self.Y).sum()
+
+ def predict_f(self, Xnew, full_cov=False):
+ """
+ Xnew is a data matrix, point at which we want to predict
+
+ This method computes
+
+ p(F* | (F=LV) )
+
+ where F* are points on the GP at Xnew, F=LV are points on the GP at X.
+
+ """
+ mu, var = conditionals.conditional(Xnew, self.X, self.kern, self.V,
+ full_cov=full_cov,
+ q_sqrt=None, whiten=True)
+ return mu + self.mean_function(Xnew), var
diff --git a/notebooks/mcmc.ipynb b/notebooks/mcmc.ipynb
new file mode 100644
index 0000000..28d7196
--- /dev/null
+++ b/notebooks/mcmc.ipynb
@@ -0,0 +1,580 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "cell_id": "60999B877FB04A348964DC63A3B89460"
+ },
+ "source": [
+ "# Fully Bayesian inference for generalized GP models with HMC\n",
+ "\n",
+ "*James Hensman, 2015-16*\n",
+ "\n",
+ "Converted to candlegp *Thomas Viehmann*\n",
+ "\n",
+ "It's possible to construct a very flexible models with Gaussian processes by combining them with different likelihoods (sometimes called 'families' in the GLM literature). This makes inference of the GP intractable since the likelihoods is not generally conjugate to the Gaussian process. The general form of the model is \n",
+ "$$\\theta \\sim p(\\theta)\\\\f \\sim \\mathcal {GP}(m(x; \\theta),\\, k(x, x'; \\theta))\\\\y_i \\sim p(y | g(f(x_i))\\,.$$\n",
+ "\n",
+ "\n",
+ "To perform inference in this model, we'll run MCMC using Hamiltonian Monte Carlo (HMC) over the function-values and the parameters $\\theta$ jointly. Key to an effective scheme is rotation of the field using the Cholesky decomposition. We write\n",
+ "\n",
+ "$$\\theta \\sim p(\\theta)\\\\v \\sim \\mathcal {N}(0,\\, I)\\\\LL^\\top = K\\\\f = m + Lv\\\\y_i \\sim p(y | g(f(x_i))\\,.$$\n",
+ "\n",
+ "Joint HMC over v and the function values is not widely adopted in the literature becate of the difficulty in differentiating $LL^\\top=K$. We've made this derivative available in tensorflow, and so application of HMC is relatively straightforward. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "cell_id": "CD79F257C3AB4A1694B310D895F75A17"
+ },
+ "source": [
+ "### Exponential Regression example\n",
+ "The first illustration in this notebook is 'Exponential Regression'. The model is \n",
+ "$$\\theta \\sim p(\\theta)\\\\f \\sim \\mathcal {GP}(0, k(x, x'; \\theta))\\\\f_i = f(x_i)\\\\y_i \\sim \\mathcal {Exp} (e^{f_i})$$\n",
+ "\n",
+ "We'll use MCMC to deal with both the kernel parameters $\\theta$ and the latent function values $f$. first, generate a data set."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "cell_id": "B0EFB17161DC4E7E84087F2B99D12E7D"
+ },
+ "outputs": [],
+ "source": [
+ "import sys, os\n",
+ "sys.path.append(os.path.join(os.getcwd(),'..'))\n",
+ "\n",
+ "import candlegp\n",
+ "import candlegp.training.hmc\n",
+ "import numpy\n",
+ "import torch\n",
+ "from torch.autograd import Variable\n",
+ "from matplotlib import pyplot\n",
+ "pyplot.style.use('ggplot')\n",
+ "%matplotlib inline\n",
+ "\n",
+ "\n",
+ "X = Variable(torch.linspace(-3,3,20,out=torch.DoubleTensor()))\n",
+ "Y = Variable(torch.from_numpy(numpy.random.exponential(((X.data.sin())**2).numpy())))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "cell_id": "0D7ADCE6053048AA9B0FF69D4A9C70D9"
+ },
+ "source": [
+ "GPflow's model for fully-Bayesian MCMC is called GPMC. It's constructed like any other model, but contains a parameter `V` which represents the centered values of the function. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "cell_id": "6442FD69F2E8481D8F4DE557744228D7",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "Model GPMC
- mean_function: Zero
- kern: Add
- likelihood: Exponential
Parameter | Value | Prior | ParamType |
---|
V | [[ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]] | N([ 0.],[ 1.]) | Param |
kern.kern_list.0.variance | [ 0.99999996] | None | PositiveParam |
kern.kern_list.0.lengthscales | [ 0.99999996] | None | PositiveParam |
kern.kern_list.1.variance | [ 0.99999996] | None | PositiveParam |
"
+ ],
+ "text/plain": [
+ "GPMC(\n",
+ " (mean_function): Zero(\n",
+ " )\n",
+ " (kern): Add(\n",
+ " (kern_list): ModuleList(\n",
+ " (0): Matern32(\n",
+ " )\n",
+ " (1): Bias(\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (likelihood): Exponential(\n",
+ " )\n",
+ ")"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "#build the model\n",
+ "k = candlegp.kernels.Matern32(1,ARD=False).double() + candlegp.kernels.Bias(1).double()\n",
+ "l = candlegp.likelihoods.Exponential()\n",
+ "m = candlegp.models.GPMC(X[:,None], Y[:,None], k, l)\n",
+ "m"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "cell_id": "13A872266B474EF49C839B8D3AFDE730"
+ },
+ "source": [
+ "The `V` parameter already has a prior applied. We'll add priors to the parameters also (these are rather arbitrary, for illustration). "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "cell_id": "8E41B7B549F045E989F0EA0FA25CC690"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "Model GPMC- mean_function: Zero
- kern: Add
- likelihood: Exponential
Parameter | Value | Prior | ParamType |
---|
V | [[ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]\n",
+ " [ 0.]] | N([ 0.],[ 1.]) | Param |
kern.kern_list.0.variance | [ 0.99999996] | Ga([ 1.],[ 1.]) | PositiveParam |
kern.kern_list.0.lengthscales | [ 0.99999996] | Ga([ 1.],[ 1.]) | PositiveParam |
kern.kern_list.1.variance | [ 0.99999996] | Ga([ 1.],[ 1.]) | PositiveParam |
"
+ ],
+ "text/plain": [
+ "GPMC(\n",
+ " (mean_function): Zero(\n",
+ " )\n",
+ " (kern): Add(\n",
+ " (kern_list): ModuleList(\n",
+ " (0): Matern32(\n",
+ " )\n",
+ " (1): Bias(\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (likelihood): Exponential(\n",
+ " )\n",
+ ")"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "m.kern.kern_list[0].lengthscales.prior = candlegp.priors.Gamma(1., 1., ttype=torch.DoubleTensor)\n",
+ "m.kern.kern_list[0].variance.prior = candlegp.priors.Gamma(1.,1., ttype=torch.DoubleTensor)\n",
+ "m.kern.kern_list[1].variance.prior = candlegp.priors.Gamma(1.,1., ttype=torch.DoubleTensor)\n",
+ "m.V.prior = candlegp.priors.Gaussian(0.,1., ttype=torch.DoubleTensor)\n",
+ "m"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "cell_id": "751FB374D852409D89C7F9C9A7103C70"
+ },
+ "source": [
+ "Running HMC is as easy as hitting m.sample(). GPflow only has HMC sampling for the moment, and it's a relatively vanilla implementation (no NUTS, for example). There are two setting to tune, the step size (epsilon) and the maximum noumber of steps Lmax. Each proposal will take a random number of steps between 1 and Lmax, each of length epsilon. \n",
+ "\n",
+ "We'll use the `verbose` setting so that we can see the acceptance rate."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "cell_id": "A656A10091E04FD08641ED16E8E64A28"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0 : 33.20290796311981\n",
+ "5 : 18.804564032305457\n",
+ "10 : 18.529321293602706\n",
+ "15 : 18.524561421348164\n",
+ "20 : 18.524500359469663\n",
+ "25 : 18.524499677457708\n",
+ "30 : 18.524499672925263\n",
+ "35 : 18.52449966883608\n",
+ "40 : 18.524499665145953\n",
+ "45 : 18.52449966181525\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "Model GPMC- mean_function: Zero
- kern: Add
- likelihood: Exponential
Parameter | Value | Prior | ParamType |
---|
V | [[-1.61749809]\n",
+ " [ 0.34986766]\n",
+ " [-0.02498693]\n",
+ " [ 0.1165383 ]\n",
+ " [ 0.02207061]\n",
+ " [-0.37660916]\n",
+ " [ 0.30911287]\n",
+ " [ 0.00880969]\n",
+ " [ 0.06671744]\n",
+ " [-1.76505569]\n",
+ " [-1.09461399]\n",
+ " [-0.53732903]\n",
+ " [-0.15809413]\n",
+ " [ 0.76206626]\n",
+ " [ 0.20539926]\n",
+ " [ 0.2577983 ]\n",
+ " [ 0.39141682]\n",
+ " [ 0.15790499]\n",
+ " [-1.53400723]\n",
+ " [-0.67216243]] | N([ 0.],[ 1.]) | Param |
kern.kern_list.0.variance | [ 5.02886942] | Ga([ 1.],[ 1.]) | PositiveParam |
kern.kern_list.0.lengthscales | [ 0.26762887] | Ga([ 1.],[ 1.]) | PositiveParam |
kern.kern_list.1.variance | [ 1.17601739] | Ga([ 1.],[ 1.]) | PositiveParam |
"
+ ],
+ "text/plain": [
+ "GPMC(\n",
+ " (mean_function): Zero(\n",
+ " )\n",
+ " (kern): Add(\n",
+ " (kern_list): ModuleList(\n",
+ " (0): Matern32(\n",
+ " )\n",
+ " (1): Bias(\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (likelihood): Exponential(\n",
+ " )\n",
+ ")"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# start near MAP\n",
+ "opt = torch.optim.LBFGS(m.parameters(), lr=1e-2, max_iter=40)\n",
+ "def eval_model():\n",
+ " obj = m()\n",
+ " opt.zero_grad()\n",
+ " obj.backward()\n",
+ " return obj\n",
+ "\n",
+ "for i in range(50):\n",
+ " obj = m()\n",
+ " opt.zero_grad()\n",
+ " obj.backward()\n",
+ " opt.step(eval_model)\n",
+ " if i%5==0:\n",
+ " print(i,':',obj.data[0])\n",
+ "m\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "cell_id": "7160966566F94A1180E67A1E4BC58063",
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "res = candlegp.training.hmc.hmc_sample(m,500,0.2,burn=50, thin=10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "cell_id": "B85E4F657D7D4CECB75280DB195127C8"
+ },
+ "outputs": [],
+ "source": [
+ "xtest = torch.linspace(-4,4,100).double().unsqueeze(1)\n",
+ "\n",
+ "f_samples = []\n",
+ "for i in range(len(res[0])):\n",
+ " for j,mp in enumerate(m.parameters()):\n",
+ " mp.set(res[j+1][i])\n",
+ " f_samples.append(m.predict_f_samples(Variable(xtest), 5).squeeze(0).t())\n",
+ "f_samples = torch.cat(f_samples, dim=0)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "cell_id": "F3F0B3A5BBAA4EBB8C11DB0DC9B0CD3D"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(-0.1, 3.3576400854995505)"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\ndBNGAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "rate_samples = torch.exp(f_samples)\n",
+ "pyplot.figure(figsize=(12, 6))\n",
+ "line, = pyplot.plot(xtest.numpy(), rate_samples.data.mean(0).numpy(), lw=2)\n",
+ "pyplot.fill_between(xtest[:,0], numpy.percentile(rate_samples.data.numpy(), 5, axis=0), numpy.percentile(rate_samples.data.numpy(), 95, axis=0), color=line.get_color(), alpha = 0.2)\n",
+ "pyplot.plot(X.data.numpy(), Y.data.numpy(), 'kx', mew=2)\n",
+ "pyplot.ylim(-0.1, numpy.max(numpy.percentile(rate_samples.data.numpy(), 95, axis=0)))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "cell_id": "3E50312630C74397AFD21C0672D58368"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " V | \n",
+ " kern.kern_list.0.variance | \n",
+ " kern.kern_list.0.lengthscales | \n",
+ " kern.kern_list.1.variance | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " [[-2.040155871891981], [0.9388838196088715], [... | \n",
+ " [1.4656632505723997] | \n",
+ " [0.5331493725973833] | \n",
+ " [1.2720246353326516] | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " [[-1.0105412162684417], [0.8922529168790496], ... | \n",
+ " [1.5030910411906926] | \n",
+ " [0.4190117485184786] | \n",
+ " [1.2395359477008205] | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " [[-0.7659962943215035], [1.1215123272342724], ... | \n",
+ " [2.0087159386859397] | \n",
+ " [0.27011072860821894] | \n",
+ " [0.8621121645070724] | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " [[-1.1814209596914074], [0.9161368443606671], ... | \n",
+ " [2.2793792765118304] | \n",
+ " [0.4178933556883257] | \n",
+ " [1.2438263168137242] | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " [[-0.34081414734626486], [-0.18600869595089276... | \n",
+ " [2.2571109603914907] | \n",
+ " [0.31695334735188196] | \n",
+ " [2.68133348675961] | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " [[-1.2073783357318857], [1.0428120464456387], ... | \n",
+ " [0.74519066940624] | \n",
+ " [0.5921438188336057] | \n",
+ " [1.6638535187996304] | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " [[-1.6524716993333135], [0.8764631812364198], ... | \n",
+ " [1.3404237928157525] | \n",
+ " [0.4241448934651531] | \n",
+ " [1.024398703348455] | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " [[-2.143367120525573], [1.1482953781923688], [... | \n",
+ " [0.9825708450923527] | \n",
+ " [0.9594493236660923] | \n",
+ " [0.619018694545985] | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " [[-1.4953113561783533], [1.5729702888894197], ... | \n",
+ " [0.3555684618930405] | \n",
+ " [0.7719114194548434] | \n",
+ " [0.7551095943341086] | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " [[-1.268132328731606], [1.2909669423055232], [... | \n",
+ " [0.23275385813306335] | \n",
+ " [1.464791372243463] | \n",
+ " [1.1758487570645073] | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " V \\\n",
+ "0 [[-2.040155871891981], [0.9388838196088715], [... \n",
+ "1 [[-1.0105412162684417], [0.8922529168790496], ... \n",
+ "2 [[-0.7659962943215035], [1.1215123272342724], ... \n",
+ "3 [[-1.1814209596914074], [0.9161368443606671], ... \n",
+ "4 [[-0.34081414734626486], [-0.18600869595089276... \n",
+ "5 [[-1.2073783357318857], [1.0428120464456387], ... \n",
+ "6 [[-1.6524716993333135], [0.8764631812364198], ... \n",
+ "7 [[-2.143367120525573], [1.1482953781923688], [... \n",
+ "8 [[-1.4953113561783533], [1.5729702888894197], ... \n",
+ "9 [[-1.268132328731606], [1.2909669423055232], [... \n",
+ "\n",
+ " kern.kern_list.0.variance kern.kern_list.0.lengthscales \\\n",
+ "0 [1.4656632505723997] [0.5331493725973833] \n",
+ "1 [1.5030910411906926] [0.4190117485184786] \n",
+ "2 [2.0087159386859397] [0.27011072860821894] \n",
+ "3 [2.2793792765118304] [0.4178933556883257] \n",
+ "4 [2.2571109603914907] [0.31695334735188196] \n",
+ "5 [0.74519066940624] [0.5921438188336057] \n",
+ "6 [1.3404237928157525] [0.4241448934651531] \n",
+ "7 [0.9825708450923527] [0.9594493236660923] \n",
+ "8 [0.3555684618930405] [0.7719114194548434] \n",
+ "9 [0.23275385813306335] [1.464791372243463] \n",
+ "\n",
+ " kern.kern_list.1.variance \n",
+ "0 [1.2720246353326516] \n",
+ "1 [1.2395359477008205] \n",
+ "2 [0.8621121645070724] \n",
+ "3 [1.2438263168137242] \n",
+ "4 [2.68133348675961] \n",
+ "5 [1.6638535187996304] \n",
+ "6 [1.024398703348455] \n",
+ "7 [0.619018694545985] \n",
+ "8 [0.7551095943341086] \n",
+ "9 [1.1758487570645073] "
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import pandas\n",
+ "df = pandas.DataFrame(res[1:],index=[n for n,p in m.named_parameters()]).transpose()\n",
+ "df[:10]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "cell_id": "4E57DE6B13CF4EEFAF6FC03F222C89BD"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEqBJREFUeJzt3X+s3XV9x/Fn6QV/zG0VvlJ7gK0YG6cho07CmCSGUVnA\nkRYzfA9dWHGMmyzO38tE/xjGvyBbZGQzmgs4L4sR3kNYOzVurkKYMWPSxh9RdCJ2WNsVLxbFaGxa\n7/4432J3vbfn+733nHvO98Pzkdxwvt/7+fa8+J6e1/n2e74/1szPzyNJ6r6Txh1AkjQcFrokFcJC\nl6RCWOiSVAgLXZIKYaFLUiEsdEkqhIUuSYWw0CWpEFOr/HyelipJy7Nm0IDVLnT279/fanxVVczN\nzY0ozfB0IWcXMkI3cppxeLqQc9wZe71eo3HucpGkQljoklQIC12SCmGhS1IhLHRJKoSFLkmFsNAl\nqRAWuiQVwkKXpEKs+pmi43D0uq3LXnbtrTuHmESSRsctdEkqhIUuSYWw0CWpEBa6JBXCQpekQjQ6\nyiUi3g78Kf0bVHwFeCOwAbgTOBXYA1ydmYdHlFOSNMDALfSIOAN4C3BeZp4DrAWuAm4Cbs7MTcAh\n4NpRBpUknVjTXS5TwHMiYgp4LnAAuBi4u/79LHDF8ONJkpoaWOiZ+V3gb4DH6Bf5D4DdwJOZeaQe\ntg84Y1QhJUmDDdyHHhHPB7YBZwNPAv8EXLbI0EVvAB0R08A0QGZSVVW7gFNTrZdZ6OAKlm363MPI\nOWpdyAjdyGnG4elCzi5khGZfir4a+HZmfg8gIu4BXgmsi4ipeiv9TGDRuz9n5gwwU0/Ot73R6rhv\nztr0uceds4kuZIRu5DTj8HQh57gzNr1JdJNCfwy4ICKeC/wE2AI8BNwHXEn/SJftwI5lJZUkDUWT\nfegP0v/ycw/9QxZPor/F/S7gHRHxCHAacPsIc0qSBmh0HHpm3gDcsGD2o8D5Q08kSVoWzxSVpEJY\n6JJUCAtdkgphoUtSISx0SSqEhS5JhbDQJakQFrokFcJCl6RCWOiSVAgLXZIKYaFLUiEsdEkqhIUu\nSYWw0CWpEBa6JBWiyU2iXwLcddysFwF/BdxRz98I7AUiMw8NP6IkqYkmt6D7RmZuzszNwCuAHwP3\nAtcDuzJzE7CrnpYkjUnbXS5bgG9l5v8A24DZev4scMUwg0mS2ml0T9HjXAV8rH68PjMPAGTmgYg4\nfbEFImIamK7HUVVVu4BTU62XWejgCpZt+tzDyDlqXcgI3chpxuHpQs4uZIQWhR4RpwBbgXe3eYLM\nnAFm6sn5ubm5NotTVRVtlxmmps897pxNdCEjdCOnGYenCznHnbHX6zUa12aXy2XAnsw8tsF7MCI2\nANT/fbxVQknSULUp9Nfz890tADuB7fXj7cCOYYWSJLXXqNAj4rnAJcA9x82+EbgkIr5Z/+7G4ceT\nJDXVaB96Zv4YOG3BvCfoH/UiSZoAnikqSYWw0CWpEBa6JBXCQpekQljoklQIC12SCmGhS1IhLHRJ\nKoSFLkmFsNAlqRAWuiQVou0NLp5xjl63tdG4pW6isfbWncMLI0kn4Ba6JBXCQpekQljoklSIRvvQ\nI2IdcBtwDjAP/AnwDeAuYCOwF4jMPDSSlJKkgZpuod8CfDozfwM4F3gYuB7YlZmbgF31tCRpTAYW\nekT8CvAq4HaAzDycmU8C24DZetgscMWoQkqSBmuyy+VFwPeAf4iIc4HdwFuB9Zl5ACAzD0TE6aOL\nKUkapEmhTwG/Bbw5Mx+MiFtosXslIqaBaYDMpKqqdgGnplovs9BSx4ivhpVmH6ZhrMvV0IWcZhye\nLuTsQkZoVuj7gH2Z+WA9fTf9Qj8YERvqrfMNwOOLLZyZM8BMPTk/NzfXKmBVVbRdZpJMUvaurMsu\n5DTj8HQh57gz9nq9RuMG7kPPzP8FvhMRL6lnbQG+BuwEttfztgM72seUJA1L01P/3wx8NCJOAR4F\n3kj/wyAj4lrgMeB1o4koSWqiUaFn5heB8xb51ZbhxpEkLZcX5xqxphf3WowX9pLUhqf+S1IhLHRJ\nKoSFLkmFsNAlqRAWuiQVwkKXpEJY6JJUCAtdkgphoUtSISx0SSqEhS5JhbDQJakQFrokFcJCl6RC\nWOiSVIhG10OPiL3AU8BR4EhmnhcRpwJ3ARuBvUBk5qHRxJQkDdJmC/13M3NzZh67c9H1wK7M3ATs\nqqclSWOykl0u24DZ+vEscMXK40iSlqtpoc8D/xYRuyNiup63PjMPANT/PX0UASVJzTS9p+iFmbk/\nIk4HPhMRX2/6BPUHwDRAZlJVVbuAU1NUVcXB176y1XIlaLuuBjm2LiddF3KacXi6kLMLGQHWzM/P\nt1ogIt4L/Ai4DrgoMw9ExAbg/sx8yYDF5/fv39/q+aqqYm5ubkU3W+6qYd8k+ti6nHRdyGnG4elC\nznFn7PV6AGsGjRu4hR4RvwSclJlP1Y9/D3gfsBPYDtxY/3fHSgLrF63kQ2zYHwaSJl+Tfejrgc9F\nxJeA/wI+mZmfpl/kl0TEN4FL6mlJ0pgM3ELPzEeBcxeZ/wSwZRShJEnteaaoJBXCQpekQjQ9bFHP\nICs9osgvZKXxcAtdkgphoUtSISx0SSqEhS5JhbDQJakQFrokFcJCl6RCWOiSVAgLXZIKYaFLUiEs\ndEkqhIUuSYWw0CWpEI2vthgRa4GHgO9m5uURcTZwJ3AqsAe4OjMPjyamJGmQNpfPfSvwMPAr9fRN\nwM2ZeWdEfAi4FvjgkPNpmRa7BO7BMeSQtHoa7XKJiDOB3wduq6fXABcDd9dDZoErRhFQktRM0y30\nvwX+Evjlevo04MnMPFJP7wPOWGzBiJgGpgEyk6qq2gWcmqKqKrcuO6Tta7zQsdd8kplxeLqQswsZ\noUGhR8TlwOOZuTsiLqpnr1lk6Pxiy2fmDDBzbMzc3FyrgFVV0XYZjddKX68uvOZmHJ4u5Bx3xl6v\n12hck10uFwJbI2Iv/S9BL6a/xb4uIo59IJwJ7G8fU5I0LAMLPTPfnZlnZuZG4Crgs5n5R8B9wJX1\nsO3AjpGllCQNtJLj0N8FvCMiHqG/T/324USSJC1Hm8MWycz7gfvrx48C5w8/kiRpOTxTVJIKYaFL\nUiEsdEkqhIUuSYWw0CWpEBa6JBXCQpekQljoklQIC12SCmGhS1IhLHRJKoSFLkmFsNAlqRAWuiQV\nwkKXpEI0uafos4EHgGfV4+/OzBsi4mz6t6Q7FdgDXJ2Zh0cZVpK0tCZb6D8FLs7Mc4HNwKURcQFw\nE3BzZm4CDgHXji6mJGmQgVvomTkP/KiePLn+mad/s+g31PNngfcCHxx+RElSE41uQRcRa4HdwIuB\nDwDfAp7MzCP1kH3AGSNJKElqpFGhZ+ZRYHNErAPuBV66yLD5xZaNiGlguv5zqKqqXcCpKaqq4mCr\npTRObV/jhY695pPMjMPThZxdyAjtbxL9ZETcD1wArIuIqXor/Uxg/xLLzAAz9eT83Nxcq4BVVdF2\nGY3XSl+vLrzmZhyeLuQcd8Zer9do3MAvRSPiBfWWORHxHODVwMPAfcCV9bDtwI5lJZUkDUWTo1w2\nAPdFxJeBLwCfycxPAO8C3hERjwCnAbePLqYkaZAmR7l8GXj5IvMfBc4fRShJUnut9qFLTRy9buuy\nl117684hJpGeWTz1X5IKYaFLUiEsdEkqhIUuSYWw0CWpEBa6JBXCQpekQljoklQIC12SCmGhS1Ih\nLHRJKoSFLkmFsNAlqRAWuiQVwkKXpEIMvB56RJwF3AG8EPgZMJOZt0TEqcBdwEZgLxCZeWh0USVJ\nJ9JkC/0I8M7MfCn9m0O/KSJeBlwP7MrMTcCuelqSNCYDCz0zD2TmnvrxU/RvEH0GsA2YrYfNAleM\nKqQkabA18/PzjQdHxEbgAeAc4LHMXHfc7w5l5vMXWWYamAbIzFccPny4VcCpqSmOHDnCwde+stVy\n6qb1937+6dd8kplxeLqQc9wZTznlFIA1g8Y1vqdoRDwP+Djwtsz8YUQ0Wi4zZ4CZenJ+bm6u6VMC\nUFUVbZdRd83NzXXiNTfj8HQh57gz9nq9RuMaHeUSESfTL/OPZuY99eyDEbGh/v0G4PFl5JQkDcnA\nQo+INcDtwMOZ+f7jfrUT2F4/3g7sGH48SVJTTXa5XAhcDXwlIr5Yz3sPcCOQEXEt8BjwutFElCQ1\nMbDQM/NzLL0zfstw40iSlsszRSWpEBa6JBWi8WGL0mo4et1WDi5z2bW37hxqFqlr3EKXpEJY6JJU\nCAtdkgphoUtSIfxSVMU4et3WZS/rF6oqgVvoklQIC12SCmGhS1IhLHRJKoSFLkmFsNAlqRAetijR\n/pDH46834yGPmhQDCz0iPgxcDjyemefU804F7gI2AnuByMxDo4spSRqkyS6XjwCXLph3PbArMzcB\nu+ppSdIYDSz0zHwA+P6C2duA2frxLHDFkHNJklpa7pei6zPzAED939OHF0mStBwj/1I0IqaBaYDM\npKqqVstPTU1RVdWyb3ogjdpKriEDsP7ezw8pyf937L0z6bqQswsZYfmFfjAiNmTmgYjYADy+1MDM\nnAFm6sn5ubm5Vk9UVRVtl5G6ZFR/v7vy3ulCznFn7PV6jcYtd5fLTmB7/Xg7sGOZf44kaUiaHLb4\nMeAioIqIfcANwI1ARsS1wGPA60YZUpI02MBCz8zXL/GrLUPOIklaAU/9l6RCWOiSVAgLXZIK4cW5\npA470THwozx3wwuSTSa30CWpEG6hS2O20jNNpWPcQpekQljoklQIC12SCmGhS1IhLHRJKoSFLkmF\n8LBFSavu+EM1254A5UlNS3MLXZIKYaFLUiHc5SKpU1ZyZm3pu2tWVOgRcSlwC7AWuC0zbxxKKklS\na8su9IhYC3wAuATYB3whInZm5teGFU6SJkUX/mWwkn3o5wOPZOajmXkYuBPYNpxYkqS2VlLoZwDf\nOW56Xz1PkjQGK9mHvmaRefMLZ0TENDANkJn0er3WT9Tr9eCTD7VeTtKE6uD7+awOZF7JFvo+4Kzj\nps8E9i8clJkzmXleZp5H/0Og1U9E7F7Ocqv904WcXcjYlZxmfGblnJCMA61kC/0LwKaIOBv4LnAV\n8IYV/HmSpBVY9hZ6Zh4B/hz4V+Dh/qz86rCCSZLaWdFx6Jn5KeBTQ8qylJkR//nD0oWcXcgI3chp\nxuHpQs4uZGTN/PwvfI8pSeogr+UiSYWYmGu5DLqMQEQ8C7gDeAXwBPCHmbl3wjJeA/w1/S+JAf4+\nM29b5YwfBi4HHs/Mcxb5/Rr6/w+vAX4MXJOZe1YzY51jUM6LgB3At+tZ92Tm+1YvIUTEWfT/zr0Q\n+Bkwk5m3LBgz1vXZMONFjH9dPht4AHgW/d65OzNvWDBmrO/xhhmvYczv8ROZiC304y4jcBnwMuD1\nEfGyBcOuBQ5l5ouBm4GbJjAjwF2Zubn+GccL/RHg0hP8/jJgU/0zDXxwFTIt5iOcOCfAfxy3Lle1\ngGpHgHdm5kuBC4A3LfKaj3t9NskI41+XPwUuzsxzgc3ApRFxwYIxY32PN8wI43+PL2kiCp1mlxHY\nBszWj+8GttRbR5OUcewy8wHg+ycYsg24IzPnM/M/gXURsWF10v1cg5xjl5kHjm1tZ+ZT9I/mWng2\n9FjXZ8OMY1evnx/VkyfXPwu/wBvre7xhxok2KbtcFruMwG8vNSYzj0TED4DTgLlVSdgsI8AfRMSr\ngP8G3p6Z31lkzDgtdcmGA+OJc0K/ExFfon/C2l+M87DYiNgIvBx4cMGvJmZ9niAjTMC6rP+Vuxt4\nMfCBzFxyXY7pPd4kI0zwe3xSttAX+xRe+MnYZMwoNXn+fwE2ZuZvAv/Oz7c2Jsm412NTe4Bfr//5\n+3fAP48rSEQ8D/g48LbM/OGCX0/E+hyQcSLWZWYezczN9M8qPz8iFn53MvZ12SDjRL/HJ6XQm1xG\n4OkxETEF/Cqr+0/2gRkz84nM/Gk9eSv9L3cmTaNLNoxbZv7w2D9/6/MdTo6IarVzRMTJ9Ivyo5l5\nzyJDxr4+B2WclHV5XJ4ngfv5xe9Qxv0ef9pSGSf9PT4phf70ZQQi4hT6lxFYeAHhncD2+vGVwGcz\nczU/vQdmXLDvdCv9/ZmTZifwxxGxpv7C5weZOXG7WyLihcf2n0bE+fT/rj6xyhnWALcDD2fm+5cY\nNtb12STjhKzLF0TEuvrxc4BXA19fMGys7/EmGSf9PT4R+9Dr/WXHLiOwFvhwZn41It4HPJSZO+n/\npf3HiHiE/qf2VROY8S0RsZX+kQffB65ZzYwAEfEx4CKgioh9wA30v9whMz9E/8ze1wCP0D/M7o2r\nnbFhziuBP4uII8BPgKtW+QMc4ELgauArEfHFet57gF87Lue412eTjJOwLjcAs/U+6pP60fITk/Qe\nb5hx7O/xE/FMUUkqxKTscpEkrZCFLkmFsNAlqRAWuiQVwkKXpEJY6JJUCAtdkgphoUtSIf4Pa8xU\nqSMuZ24AAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "df[\"kern.kern_list.1.variance\"].apply(lambda x: x[0]).hist(bins=20)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "cell_id": "3B2793145C1C40849832BC817DE0A1BD"
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "anaconda-cloud": {},
+ "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.5.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}