{ "metadata": { "name": "", "signature": "sha256:e25046a8aea278917449ada45cf381edc3db689004a82bb6f9bbe52977302ab1" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Partial Differential Equations and Gaussian Process with GPy" ] }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "presented at the EBI BioPreDyn Course 'The Systems Biology Modelling Cycle'" ] }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Mu Niu, Neil Lawrence, 12th May 20014, University of Sheffield" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "The Spatio-Temporal Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this notebook we consider the latent force model paradigm (Alvarez et al, 2013, Alvarez et al, 2011, Alvarez et al, 2009) to drive spatio-temporal differential equation with a Gaussian process. Latent force models are differential equations whose initial conditions or driving forces are given by a stochastic process. Linear latent force models are linear (partial or ordinary) differential equations. If a linear latent force model is driven by a Gaussian process latent force, this describes a joint Gaussian process distribution across all the variables of interest. The Gaussian process covariance function encodes the relationships between the variables, as proscribed by the differential equation, through the covariance function. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This direction of research is part of our ideas as to how to merge mechanistic and statistical models of data. It also maps onto our ideas about 'Gaussian processes over everything'. The covariance function interelates the protein and mRNA concentrations in the same model." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Differential Equation Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A model of post-transcriptional processing is formulated to describe the spatio-temporal Drosophila\n", "protein expression data (Becker et al, 2013, Alvarez et al, 2011). Protein production is considered to be linearly dependent on the concentration of mRNA at an earlier time point. The model also allows for diffusion of protein between nuclei and linear protein decay. These processes are dependent on the diffusion parameter and the degradation rate of protein respectively." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", " a \\frac{\\partial ^2 y_{x,t}}{\\partial x^2} + b \\frac{\\partial y_{x,t}}{\\partial t} + c y_{x,t}= f_{x,t} \n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The coefficients $a$, $b$ and $c$ are unknown. In this study, we use Gaussian process with an exponentiated quadratic kernel as a prior over $y_{x,t}$ (protein). The kernel of $f_{x,t}$ (mRNA) is derived by applying the partial differential operator on the spatial-temporal kernel of protein. The multi-output Gaussian process are developed by combining the covariance matrix of mRNA and protein and their cross covariance." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "%config InlineBackend.figure_format = 'svg'\n", "import numpy as np\n", "import pylab as pb\n", "import GPy\n", "import pandas\n", "from pandas import read_csv" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The spatio-temporal multi-output partial differential equation covariance functions have been developed with the kernel name `GPy.kern.ODE_st` in GPy. The inputs are one dimension spatial data, one dimension temporal data and one dimension index which is used to indicate $f$ and $y$." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [ "data = GPy.util.datasets.drosophila_knirps()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next thing to do is to compose the data ready for presentation to GPy. Here we need to use the time field as the input and a concatanation of the expression levels as the output. We need to provide a corresponding index for to each input to describe what output is being represented." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we set up the covariance function with the relevant parameters." ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern = GPy.kern.ODE_st(input_dim=3,\n", " a=1., b=1., c=1.,\n", " variance_Yx=1., variance_Yt=1.,\n", " lengthscale_Yx=15.,\n", " lengthscale_Yt=15.) " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the data correctly presented and the covariance function defined, we are ready to proceed with the Gaussian process regression." ] }, { "cell_type": "code", "collapsed": false, "input": [ "data['X']\n", "data['Y']" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "array([[ 5.90000000e-01],\n", " [ 5.00000000e-01],\n", " [ 9.00000000e-02],\n", " [ 2.50000000e-01],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 8.00000000e-02],\n", " [ 2.30000000e-01],\n", " [ 0.00000000e+00],\n", " [ 1.90000000e-01],\n", " [ 0.00000000e+00],\n", " [ 2.70000000e-01],\n", " [ 1.40000000e-01],\n", " [ 1.00000000e-01],\n", " [ 2.70000000e-01],\n", " [ 8.20000000e-01],\n", " [ 2.04000000e+00],\n", " [ 2.01000000e+00],\n", " [ 3.19000000e+00],\n", " [ 4.74000000e+00],\n", " [ 8.47000000e+00],\n", " [ 9.74000000e+00],\n", " [ 1.44700000e+01],\n", " [ 2.02400000e+01],\n", " [ 2.74100000e+01],\n", " [ 3.54200000e+01],\n", " [ 4.33400000e+01],\n", " [ 5.29000000e+01],\n", " [ 6.03400000e+01],\n", " [ 6.57900000e+01],\n", " [ 7.28200000e+01],\n", " [ 7.45700000e+01],\n", " [ 7.55900000e+01],\n", " [ 7.54700000e+01],\n", " [ 7.48900000e+01],\n", " [ 7.24400000e+01],\n", " [ 6.73000000e+01],\n", " [ 6.15700000e+01],\n", " [ 5.56400000e+01],\n", " [ 4.92700000e+01],\n", " [ 4.11100000e+01],\n", " [ 3.35900000e+01],\n", " [ 2.76600000e+01],\n", " [ 2.22200000e+01],\n", " [ 1.69400000e+01],\n", " [ 1.26200000e+01],\n", " [ 1.03800000e+01],\n", " [ 7.10000000e+00],\n", " [ 5.81000000e+00],\n", " [ 4.27000000e+00],\n", " [ 3.05000000e+00],\n", " [ 2.55000000e+00],\n", " [ 1.76000000e+00],\n", " [ 1.35000000e+00],\n", " [ 1.44000000e+00],\n", " [ 1.22000000e+00],\n", " [ 4.00000000e-02],\n", " [ 1.00000000e-02],\n", " [ 0.00000000e+00],\n", " [ 7.00000000e-02],\n", " [ 0.00000000e+00],\n", " [ 8.00000000e-02],\n", " [ 0.00000000e+00],\n", " [ 1.60000000e-01],\n", " [ 8.00000000e-01],\n", " [ 4.90000000e-01],\n", " [ 9.70000000e-01],\n", " [ 1.10000000e+00],\n", " [ 1.28000000e+00],\n", " [ 1.50000000e+00],\n", " [ 1.15000000e+00],\n", " [ 1.74000000e+00],\n", " [ 2.31000000e+00],\n", " [ 2.45000000e+00],\n", " [ 3.40000000e+00],\n", " [ 4.53000000e+00],\n", " [ 5.91000000e+00],\n", " [ 9.42000000e+00],\n", " [ 1.37000000e+01],\n", " [ 2.05500000e+01],\n", " [ 2.95600000e+01],\n", " [ 4.14100000e+01],\n", " [ 5.40700000e+01],\n", " [ 6.88200000e+01],\n", " [ 8.37000000e+01],\n", " [ 9.77600000e+01],\n", " [ 1.09540000e+02],\n", " [ 1.16130000e+02],\n", " [ 1.20800000e+02],\n", " [ 1.21370000e+02],\n", " [ 1.19050000e+02],\n", " [ 1.14270000e+02],\n", " [ 1.06430000e+02],\n", " [ 9.58400000e+01],\n", " [ 8.20200000e+01],\n", " [ 7.07700000e+01],\n", " [ 5.85700000e+01],\n", " [ 4.64300000e+01],\n", " [ 3.57600000e+01],\n", " [ 2.91800000e+01],\n", " [ 2.30300000e+01],\n", " [ 1.71900000e+01],\n", " [ 1.42700000e+01],\n", " [ 1.05000000e+01],\n", " [ 8.81000000e+00],\n", " [ 7.22000000e+00],\n", " [ 6.12000000e+00],\n", " [ 5.20000000e+00],\n", " [ 4.17000000e+00],\n", " [ 3.32000000e+00],\n", " [ 3.02000000e+00],\n", " [ 2.76000000e+00],\n", " [ 1.97000000e+00],\n", " [ 4.00000000e-01],\n", " [ 2.60000000e-01],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 4.10000000e-01],\n", " [ 1.57000000e+00],\n", " [ 3.16000000e+00],\n", " [ 5.27000000e+00],\n", " [ 8.68000000e+00],\n", " [ 1.48000000e+01],\n", " [ 2.42800000e+01],\n", " [ 3.78200000e+01],\n", " [ 5.36300000e+01],\n", " [ 7.41300000e+01],\n", " [ 9.58900000e+01],\n", " [ 1.17020000e+02],\n", " [ 1.36130000e+02],\n", " [ 1.49680000e+02],\n", " [ 1.57060000e+02],\n", " [ 1.59200000e+02],\n", " [ 1.56380000e+02],\n", " [ 1.49960000e+02],\n", " [ 1.36460000e+02],\n", " [ 1.18340000e+02],\n", " [ 9.93600000e+01],\n", " [ 8.16100000e+01],\n", " [ 6.28500000e+01],\n", " [ 4.85500000e+01],\n", " [ 3.77600000e+01],\n", " [ 2.90100000e+01],\n", " [ 2.17400000e+01],\n", " [ 1.62400000e+01],\n", " [ 1.18200000e+01],\n", " [ 9.01000000e+00],\n", " [ 6.69000000e+00],\n", " [ 5.40000000e+00],\n", " [ 4.44000000e+00],\n", " [ 3.80000000e+00],\n", " [ 3.08000000e+00],\n", " [ 2.46000000e+00],\n", " [ 2.06000000e+00],\n", " [ 1.63000000e+00],\n", " [ 1.60000000e+00],\n", " [ 1.44000000e+00],\n", " [ 3.80000000e-01],\n", " [ 1.60000000e-01],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 2.60000000e-01],\n", " [ 4.40000000e-01],\n", " [ 1.55000000e+00],\n", " [ 1.38000000e+00],\n", " [ 1.16000000e+00],\n", " [ 1.54000000e+00],\n", " [ 1.06000000e+00],\n", " [ 9.30000000e-01],\n", " [ 1.47000000e+00],\n", " [ 2.04000000e+00],\n", " [ 3.61000000e+00],\n", " [ 4.61000000e+00],\n", " [ 6.02000000e+00],\n", " [ 8.15000000e+00],\n", " [ 1.25200000e+01],\n", " [ 1.92400000e+01],\n", " [ 3.05000000e+01],\n", " [ 4.59700000e+01],\n", " [ 6.48700000e+01],\n", " [ 9.24300000e+01],\n", " [ 1.23410000e+02],\n", " [ 1.49660000e+02],\n", " [ 1.71480000e+02],\n", " [ 1.85620000e+02],\n", " [ 1.92350000e+02],\n", " [ 1.93720000e+02],\n", " [ 1.86770000e+02],\n", " [ 1.75700000e+02],\n", " [ 1.58920000e+02],\n", " [ 1.37310000e+02],\n", " [ 1.12660000e+02],\n", " [ 8.71900000e+01],\n", " [ 6.75500000e+01],\n", " [ 5.13100000e+01],\n", " [ 3.89600000e+01],\n", " [ 2.91500000e+01],\n", " [ 2.24100000e+01],\n", " [ 1.70300000e+01],\n", " [ 1.31100000e+01],\n", " [ 9.82000000e+00],\n", " [ 8.22000000e+00],\n", " [ 7.00000000e+00],\n", " [ 6.37000000e+00],\n", " [ 5.53000000e+00],\n", " [ 5.27000000e+00],\n", " [ 4.75000000e+00],\n", " [ 4.11000000e+00],\n", " [ 3.31000000e+00],\n", " [ 2.78000000e+00],\n", " [ 2.11000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 1.40000000e-01],\n", " [ 3.00000000e-01],\n", " [ 3.20000000e-01],\n", " [ 7.00000000e-02],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 4.90000000e-01],\n", " [ 1.63000000e+00],\n", " [ 2.71000000e+00],\n", " [ 3.17000000e+00],\n", " [ 4.86000000e+00],\n", " [ 8.34000000e+00],\n", " [ 1.60300000e+01],\n", " [ 2.77100000e+01],\n", " [ 4.26200000e+01],\n", " [ 6.24900000e+01],\n", " [ 8.68800000e+01],\n", " [ 1.22690000e+02],\n", " [ 1.57310000e+02],\n", " [ 1.81910000e+02],\n", " [ 1.98100000e+02],\n", " [ 2.04160000e+02],\n", " [ 2.07460000e+02],\n", " [ 2.04180000e+02],\n", " [ 1.96550000e+02],\n", " [ 1.80970000e+02],\n", " [ 1.56840000e+02],\n", " [ 1.24870000e+02],\n", " [ 9.50400000e+01],\n", " [ 6.91700000e+01],\n", " [ 5.02900000e+01],\n", " [ 3.68100000e+01],\n", " [ 2.77600000e+01],\n", " [ 2.00500000e+01],\n", " [ 1.53700000e+01],\n", " [ 1.21600000e+01],\n", " [ 9.60000000e+00],\n", " [ 7.65000000e+00],\n", " [ 6.37000000e+00],\n", " [ 5.76000000e+00],\n", " [ 5.11000000e+00],\n", " [ 4.38000000e+00],\n", " [ 3.70000000e+00],\n", " [ 2.94000000e+00],\n", " [ 2.46000000e+00],\n", " [ 1.85000000e+00],\n", " [ 1.33000000e+00],\n", " [ 6.50000000e-01],\n", " [ 1.70000000e-01],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 1.60000000e-01],\n", " [ 2.70000000e-01],\n", " [ 2.10000000e-01],\n", " [ 1.00000000e-01],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 3.00000000e-01],\n", " [ 1.56000000e+00],\n", " [ 2.69000000e+00],\n", " [ 3.37000000e+00],\n", " [ 4.87000000e+00],\n", " [ 9.06000000e+00],\n", " [ 1.78500000e+01],\n", " [ 2.90600000e+01],\n", " [ 4.27800000e+01],\n", " [ 6.01100000e+01],\n", " [ 8.42900000e+01],\n", " [ 1.16780000e+02],\n", " [ 1.48300000e+02],\n", " [ 1.71600000e+02],\n", " [ 1.88430000e+02],\n", " [ 1.97980000e+02],\n", " [ 1.99570000e+02],\n", " [ 1.95680000e+02],\n", " [ 1.86220000e+02],\n", " [ 1.68300000e+02],\n", " [ 1.42590000e+02],\n", " [ 1.16470000e+02],\n", " [ 8.96500000e+01],\n", " [ 6.17400000e+01],\n", " [ 4.44800000e+01],\n", " [ 3.31100000e+01],\n", " [ 2.39100000e+01],\n", " [ 1.75700000e+01],\n", " [ 1.30500000e+01],\n", " [ 9.73000000e+00],\n", " [ 7.60000000e+00],\n", " [ 6.15000000e+00],\n", " [ 5.53000000e+00],\n", " [ 5.03000000e+00],\n", " [ 4.36000000e+00],\n", " [ 3.90000000e+00],\n", " [ 3.06000000e+00],\n", " [ 2.52000000e+00],\n", " [ 1.74000000e+00],\n", " [ 1.58000000e+00],\n", " [ 1.05000000e+00],\n", " [ 7.50000000e-01],\n", " [ 1.26000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 5.30000000e-01],\n", " [ 6.20000000e-01],\n", " [ 2.40000000e-01],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 1.39000000e+00],\n", " [ 2.45000000e+00],\n", " [ 3.01000000e+00],\n", " [ 3.79000000e+00],\n", " [ 6.01000000e+00],\n", " [ 1.32400000e+01],\n", " [ 2.62000000e+01],\n", " [ 4.06700000e+01],\n", " [ 5.35400000e+01],\n", " [ 7.02200000e+01],\n", " [ 9.75800000e+01],\n", " [ 1.32250000e+02],\n", " [ 1.61920000e+02],\n", " [ 1.84690000e+02],\n", " [ 1.96490000e+02],\n", " [ 1.93580000e+02],\n", " [ 1.87730000e+02],\n", " [ 1.80960000e+02],\n", " [ 1.65470000e+02],\n", " [ 1.42400000e+02],\n", " [ 1.14660000e+02],\n", " [ 8.52300000e+01],\n", " [ 5.92000000e+01],\n", " [ 4.41300000e+01],\n", " [ 3.23600000e+01],\n", " [ 2.28700000e+01],\n", " [ 1.60200000e+01],\n", " [ 1.15200000e+01],\n", " [ 8.47000000e+00],\n", " [ 6.32000000e+00],\n", " [ 5.36000000e+00],\n", " [ 4.78000000e+00],\n", " [ 4.19000000e+00],\n", " [ 3.67000000e+00],\n", " [ 3.09000000e+00],\n", " [ 1.98000000e+00],\n", " [ 1.10000000e+00],\n", " [ 5.40000000e-01],\n", " [ 7.00000000e-02],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 4.80000000e+00],\n", " [ 9.30000000e-01],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 1.30000000e-01],\n", " [ 2.11000000e+00],\n", " [ 2.49000000e+00],\n", " [ 1.71000000e+00],\n", " [ 3.30000000e-01],\n", " [ 2.40000000e-01],\n", " [ 1.80000000e-01],\n", " [ 1.00000000e-01],\n", " [ 4.40000000e-01],\n", " [ 3.31000000e+00],\n", " [ 4.53000000e+00],\n", " [ 4.35000000e+00],\n", " [ 4.78000000e+00],\n", " [ 8.90000000e+00],\n", " [ 2.19300000e+01],\n", " [ 3.68400000e+01],\n", " [ 4.94300000e+01],\n", " [ 6.58800000e+01],\n", " [ 8.36400000e+01],\n", " [ 1.08710000e+02],\n", " [ 1.35760000e+02],\n", " [ 1.61310000e+02],\n", " [ 1.78790000e+02],\n", " [ 1.75260000e+02],\n", " [ 1.65930000e+02],\n", " [ 1.64850000e+02],\n", " [ 1.53460000e+02],\n", " [ 1.34780000e+02],\n", " [ 1.10040000e+02],\n", " [ 8.71300000e+01],\n", " [ 6.10500000e+01],\n", " [ 4.57600000e+01],\n", " [ 3.38100000e+01],\n", " [ 2.53000000e+01],\n", " [ 1.76600000e+01],\n", " [ 1.24000000e+01],\n", " [ 8.71000000e+00],\n", " [ 6.55000000e+00],\n", " [ 5.65000000e+00],\n", " [ 5.49000000e+00],\n", " [ 4.93000000e+00],\n", " [ 3.95000000e+00],\n", " [ 3.25000000e+00],\n", " [ 2.31000000e+00],\n", " [ 1.63000000e+00],\n", " [ 1.10000000e+00],\n", " [ 1.70000000e-01],\n", " [ 5.60000000e-01],\n", " [ 1.50000000e-01],\n", " [ 2.40000000e-01],\n", " [ 0.00000000e+00],\n", " [ 7.49000000e+00],\n", " [ 6.96000000e+00],\n", " [ 4.73000000e+00],\n", " [ 4.20000000e+00],\n", " [ 6.12000000e+00],\n", " [ 7.15000000e+00],\n", " [ 6.70000000e+00],\n", " [ 6.91000000e+00],\n", " [ 5.57000000e+00],\n", " [ 6.08000000e+00],\n", " [ 7.77000000e+00],\n", " [ 5.54000000e+00],\n", " [ 4.36000000e+00],\n", " [ 4.27000000e+00],\n", " [ 5.92000000e+00],\n", " [ 2.99000000e+00],\n", " [ 3.46000000e+00],\n", " [ 4.01000000e+00],\n", " [ 3.55000000e+00],\n", " [ 5.34000000e+00],\n", " [ 4.55000000e+00],\n", " [ 8.77000000e+00],\n", " [ 1.36900000e+01],\n", " [ 1.92600000e+01],\n", " [ 2.82600000e+01],\n", " [ 4.04600000e+01],\n", " [ 5.21300000e+01],\n", " [ 6.87400000e+01],\n", " [ 8.51200000e+01],\n", " [ 1.01550000e+02],\n", " [ 1.09970000e+02],\n", " [ 1.21430000e+02],\n", " [ 1.25950000e+02],\n", " [ 1.36690000e+02],\n", " [ 1.21220000e+02],\n", " [ 1.17650000e+02],\n", " [ 1.06490000e+02],\n", " [ 9.43300000e+01],\n", " [ 7.57700000e+01],\n", " [ 6.22000000e+01],\n", " [ 5.63100000e+01],\n", " [ 3.78600000e+01],\n", " [ 2.97000000e+01],\n", " [ 2.27400000e+01],\n", " [ 2.01100000e+01],\n", " [ 1.45500000e+01],\n", " [ 1.08300000e+01],\n", " [ 9.30000000e+00],\n", " [ 7.59000000e+00],\n", " [ 5.80000000e+00],\n", " [ 2.81000000e+00],\n", " [ 3.60000000e+00],\n", " [ 3.06000000e+00],\n", " [ 1.35000000e+00],\n", " [ 2.64000000e+00],\n", " [ 2.58000000e+00],\n", " [ 4.29000000e+00],\n", " [ 2.27000000e+00],\n", " [ 4.11000000e+00],\n", " [ 8.40000000e-01],\n", " [ 2.92000000e+00],\n", " [ 2.92000000e+00],\n", " [ 1.76000000e+00],\n", " [ 1.23000000e+00],\n", " [ 4.90000000e-01],\n", " [ 1.72000000e+00],\n", " [ 1.46000000e+00],\n", " [ 1.88000000e+00],\n", " [ 5.10000000e-01],\n", " [ 0.00000000e+00],\n", " [ 2.30000000e-01],\n", " [ 1.67000000e+00],\n", " [ 0.00000000e+00],\n", " [ 9.50000000e-01],\n", " [ 7.00000000e-01],\n", " [ 2.71000000e+00],\n", " [ 2.41000000e+00],\n", " [ 5.45000000e+00],\n", " [ 1.19900000e+01],\n", " [ 1.65900000e+01],\n", " [ 3.23400000e+01],\n", " [ 4.86000000e+01],\n", " [ 7.45900000e+01],\n", " [ 9.83700000e+01],\n", " [ 1.31450000e+02],\n", " [ 1.57250000e+02],\n", " [ 1.86570000e+02],\n", " [ 1.85670000e+02],\n", " [ 1.88920000e+02],\n", " [ 1.93460000e+02],\n", " [ 1.89980000e+02],\n", " [ 1.66270000e+02],\n", " [ 1.42150000e+02],\n", " [ 1.15260000e+02],\n", " [ 8.94400000e+01],\n", " [ 6.21500000e+01],\n", " [ 4.91100000e+01],\n", " [ 3.18100000e+01],\n", " [ 2.20200000e+01],\n", " [ 1.30800000e+01],\n", " [ 9.26000000e+00],\n", " [ 5.29000000e+00],\n", " [ 3.32000000e+00],\n", " [ 2.41000000e+00],\n", " [ 1.30000000e+00],\n", " [ 1.55000000e+00],\n", " [ 1.69000000e+00],\n", " [ 0.00000000e+00],\n", " [ 1.90000000e+00],\n", " [ 3.90000000e-01],\n", " [ 1.37000000e+00],\n", " [ 1.65000000e+00],\n", " [ 4.27000000e+00],\n", " [ 4.36000000e+00],\n", " [ 7.17000000e+00],\n", " [ 7.45000000e+00],\n", " [ 5.27000000e+00],\n", " [ 7.56000000e+00],\n", " [ 4.34000000e+00],\n", " [ 6.87000000e+00],\n", " [ 9.60000000e+00],\n", " [ 8.12000000e+00],\n", " [ 8.26000000e+00],\n", " [ 6.87000000e+00],\n", " [ 6.70000000e+00],\n", " [ 7.15000000e+00],\n", " [ 7.15000000e+00],\n", " [ 6.01000000e+00],\n", " [ 5.38000000e+00],\n", " [ 6.57000000e+00],\n", " [ 4.76000000e+00],\n", " [ 5.34000000e+00],\n", " [ 5.75000000e+00],\n", " [ 7.10000000e+00],\n", " [ 4.57000000e+00],\n", " [ 1.01600000e+01],\n", " [ 1.69600000e+01],\n", " [ 3.11300000e+01],\n", " [ 4.74200000e+01],\n", " [ 6.79300000e+01],\n", " [ 9.62600000e+01],\n", " [ 1.28880000e+02],\n", " [ 1.64790000e+02],\n", " [ 1.93420000e+02],\n", " [ 1.91820000e+02],\n", " [ 2.02190000e+02],\n", " [ 2.07870000e+02],\n", " [ 1.91080000e+02],\n", " [ 1.66440000e+02],\n", " [ 1.34880000e+02],\n", " [ 1.07760000e+02],\n", " [ 8.03400000e+01],\n", " [ 5.57500000e+01],\n", " [ 3.55900000e+01],\n", " [ 2.61900000e+01],\n", " [ 1.94900000e+01],\n", " [ 1.12300000e+01],\n", " [ 9.05000000e+00],\n", " [ 6.43000000e+00],\n", " [ 7.01000000e+00],\n", " [ 6.64000000e+00],\n", " [ 4.57000000e+00],\n", " [ 4.20000000e+00],\n", " [ 4.92000000e+00],\n", " [ 4.94000000e+00],\n", " [ 6.52000000e+00],\n", " [ 4.62000000e+00],\n", " [ 4.59000000e+00],\n", " [ 5.24000000e+00],\n", " [ 6.80000000e+00],\n", " [ 5.31000000e+00],\n", " [ 6.29000000e+00],\n", " [ 4.41000000e+00],\n", " [ 6.12000000e+00],\n", " [ 7.15000000e+00],\n", " [ 6.84000000e+00],\n", " [ 1.02800000e+01],\n", " [ 8.70000000e+00],\n", " [ 1.10400000e+01],\n", " [ 1.11400000e+01],\n", " [ 1.04600000e+01],\n", " [ 6.45000000e+00],\n", " [ 5.24000000e+00],\n", " [ 7.40000000e+00],\n", " [ 6.87000000e+00],\n", " [ 9.35000000e+00],\n", " [ 6.17000000e+00],\n", " [ 6.24000000e+00],\n", " [ 5.59000000e+00],\n", " [ 3.71000000e+00],\n", " [ 4.52000000e+00],\n", " [ 4.27000000e+00],\n", " [ 1.00000000e+01],\n", " [ 2.00000000e+01],\n", " [ 3.27400000e+01],\n", " [ 4.02800000e+01],\n", " [ 5.48900000e+01],\n", " [ 7.31300000e+01],\n", " [ 1.01500000e+02],\n", " [ 1.30410000e+02],\n", " [ 1.66530000e+02],\n", " [ 1.85670000e+02],\n", " [ 1.83470000e+02],\n", " [ 1.89470000e+02],\n", " [ 1.75320000e+02],\n", " [ 1.53000000e+02],\n", " [ 1.24000000e+02],\n", " [ 9.26600000e+01],\n", " [ 6.00200000e+01],\n", " [ 3.71700000e+01],\n", " [ 2.88400000e+01],\n", " [ 2.07400000e+01],\n", " [ 1.61500000e+01],\n", " [ 1.23700000e+01],\n", " [ 8.96000000e+00],\n", " [ 9.91000000e+00],\n", " [ 9.19000000e+00],\n", " [ 8.54000000e+00],\n", " [ 1.03500000e+01],\n", " [ 9.65000000e+00],\n", " [ 8.31000000e+00],\n", " [ 8.86000000e+00],\n", " [ 5.73000000e+00],\n", " [ 7.38000000e+00],\n", " [ 4.41000000e+00],\n", " [ 5.92000000e+00],\n", " [ 5.36000000e+00],\n", " [ 3.80000000e+00],\n", " [ 4.92000000e+00],\n", " [ 2.51000000e+00],\n", " [ 3.69000000e+00],\n", " [ 3.76000000e+00],\n", " [ 2.60000000e+00],\n", " [ 3.94000000e+00],\n", " [ 4.80000000e+00],\n", " [ 7.40000000e+00],\n", " [ 7.10000000e+00],\n", " [ 8.33000000e+00],\n", " [ 3.57000000e+00],\n", " [ 5.78000000e+00],\n", " [ 6.17000000e+00],\n", " [ 6.66000000e+00],\n", " [ 6.40000000e+00],\n", " [ 4.59000000e+00],\n", " [ 5.57000000e+00],\n", " [ 5.89000000e+00],\n", " [ 4.96000000e+00],\n", " [ 7.08000000e+00],\n", " [ 9.58000000e+00],\n", " [ 1.60300000e+01],\n", " [ 2.89800000e+01],\n", " [ 3.74700000e+01],\n", " [ 4.70500000e+01],\n", " [ 6.58000000e+01],\n", " [ 7.91400000e+01],\n", " [ 9.78600000e+01],\n", " [ 1.32150000e+02],\n", " [ 1.43070000e+02],\n", " [ 1.44420000e+02],\n", " [ 1.33890000e+02],\n", " [ 1.23240000e+02],\n", " [ 1.12130000e+02],\n", " [ 9.55400000e+01],\n", " [ 6.61700000e+01],\n", " [ 4.82600000e+01],\n", " [ 3.18300000e+01],\n", " [ 2.68900000e+01],\n", " [ 1.82600000e+01],\n", " [ 1.42000000e+01],\n", " [ 1.04900000e+01],\n", " [ 1.10900000e+01],\n", " [ 9.28000000e+00],\n", " [ 7.17000000e+00],\n", " [ 9.47000000e+00],\n", " [ 8.84000000e+00],\n", " [ 9.12000000e+00],\n", " [ 9.07000000e+00],\n", " [ 7.28000000e+00],\n", " [ 1.03000000e+01],\n", " [ 9.74000000e+00],\n", " [ 8.51000000e+00],\n", " [ 9.02000000e+00],\n", " [ 5.71000000e+00],\n", " [ 8.65000000e+00],\n", " [ 9.05000000e+00],\n", " [ 4.08000000e+00],\n", " [ 7.10000000e+00],\n", " [ 4.50000000e+00],\n", " [ 4.45000000e+00],\n", " [ 3.62000000e+00],\n", " [ 5.17000000e+00],\n", " [ 6.17000000e+00],\n", " [ 4.20000000e+00],\n", " [ 5.57000000e+00],\n", " [ 9.50000000e-01],\n", " [ 5.15000000e+00],\n", " [ 3.02000000e+00],\n", " [ 2.58000000e+00],\n", " [ 2.76000000e+00],\n", " [ 2.81000000e+00],\n", " [ 4.59000000e+00],\n", " [ 3.22000000e+00],\n", " [ 4.57000000e+00],\n", " [ 4.06000000e+00],\n", " [ 1.67000000e+01],\n", " [ 2.84200000e+01],\n", " [ 4.03200000e+01],\n", " [ 5.13400000e+01],\n", " [ 6.14600000e+01],\n", " [ 7.26400000e+01],\n", " [ 8.06700000e+01],\n", " [ 1.00970000e+02],\n", " [ 1.16020000e+02],\n", " [ 1.10130000e+02],\n", " [ 1.04790000e+02],\n", " [ 9.14100000e+01],\n", " [ 7.64400000e+01],\n", " [ 6.24100000e+01],\n", " [ 5.10900000e+01],\n", " [ 3.87000000e+01],\n", " [ 3.18500000e+01],\n", " [ 2.00200000e+01],\n", " [ 1.72100000e+01],\n", " [ 1.35700000e+01],\n", " [ 1.02500000e+01],\n", " [ 8.51000000e+00],\n", " [ 1.02500000e+01],\n", " [ 7.93000000e+00],\n", " [ 7.54000000e+00],\n", " [ 8.75000000e+00],\n", " [ 9.19000000e+00],\n", " [ 7.70000000e+00],\n", " [ 6.68000000e+00],\n", " [ 7.66000000e+00],\n", " [ 8.44000000e+00],\n", " [ 5.38000000e+00],\n", " [ 8.00000000e+00],\n", " [ 1.53000000e+00],\n", " [ 1.44000000e+00],\n", " [ 2.48000000e+00],\n", " [ 2.32000000e+00],\n", " [ 1.90000000e-01],\n", " [ 4.59000000e+00],\n", " [ 6.01000000e+00],\n", " [ 6.22000000e+00],\n", " [ 1.06000000e+01],\n", " [ 9.60000000e+00],\n", " [ 9.21000000e+00],\n", " [ 8.89000000e+00],\n", " [ 1.14400000e+01],\n", " [ 8.05000000e+00],\n", " [ 1.32900000e+01],\n", " [ 8.54000000e+00],\n", " [ 8.75000000e+00],\n", " [ 4.11000000e+00],\n", " [ 7.40000000e+00],\n", " [ 4.50000000e+00],\n", " [ 8.98000000e+00],\n", " [ 4.64000000e+00],\n", " [ 5.80000000e+00],\n", " [ 4.22000000e+00],\n", " [ 8.82000000e+00],\n", " [ 1.36900000e+01],\n", " [ 2.51300000e+01],\n", " [ 2.87200000e+01],\n", " [ 3.26200000e+01],\n", " [ 3.50600000e+01],\n", " [ 4.06000000e+01],\n", " [ 5.13400000e+01],\n", " [ 5.24600000e+01],\n", " [ 7.27600000e+01],\n", " [ 5.97600000e+01],\n", " [ 4.51500000e+01],\n", " [ 3.50600000e+01],\n", " [ 3.06500000e+01],\n", " [ 3.00700000e+01],\n", " [ 2.65600000e+01],\n", " [ 2.31800000e+01],\n", " [ 1.65200000e+01],\n", " [ 1.51700000e+01],\n", " [ 1.00000000e+01],\n", " [ 1.05300000e+01],\n", " [ 1.04900000e+01],\n", " [ 7.54000000e+00],\n", " [ 7.35000000e+00],\n", " [ 8.84000000e+00],\n", " [ 7.52000000e+00],\n", " [ 9.65000000e+00],\n", " [ 9.47000000e+00],\n", " [ 9.67000000e+00],\n", " [ 7.47000000e+00],\n", " [ 1.08100000e+01],\n", " [ 6.80000000e+00],\n", " [ 5.71000000e+00],\n", " [ 5.87000000e+00],\n", " [ 4.92000000e+00],\n", " [ 9.84000000e+00],\n", " [ 6.59000000e+00],\n", " [ 7.12000000e+00],\n", " [ 1.46000000e+00],\n", " [ 2.80000000e-01],\n", " [ 4.62000000e+00],\n", " [ 4.27000000e+00],\n", " [ 2.13000000e+00],\n", " [ 3.06000000e+00],\n", " [ 1.74000000e+00],\n", " [ 1.02000000e+00],\n", " [ 0.00000000e+00],\n", " [ 3.04000000e+00],\n", " [ 1.48000000e+00],\n", " [ 2.13000000e+00],\n", " [ 1.21000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 0.00000000e+00],\n", " [ 9.30000000e-01],\n", " [ 1.00000000e+00],\n", " [ 1.62000000e+00],\n", " [ 1.16000000e+00],\n", " [ 2.00000000e+00],\n", " [ 3.18000000e+00],\n", " [ 9.51000000e+00],\n", " [ 1.60500000e+01],\n", " [ 1.50800000e+01],\n", " [ 1.84700000e+01],\n", " [ 1.93700000e+01],\n", " [ 1.98400000e+01],\n", " [ 2.76500000e+01],\n", " [ 1.97200000e+01],\n", " [ 1.86100000e+01],\n", " [ 1.26000000e+01],\n", " [ 1.07400000e+01],\n", " [ 1.37600000e+01],\n", " [ 1.01600000e+01],\n", " [ 2.18000000e+00],\n", " [ 4.66000000e+00],\n", " [ 3.55000000e+00],\n", " [ 5.13000000e+00],\n", " [ 1.88000000e+00],\n", " [ 4.41000000e+00],\n", " [ 4.08000000e+00],\n", " [ 3.00000000e-01],\n", " [ 5.36000000e+00],\n", " [ 5.45000000e+00],\n", " [ 0.00000000e+00],\n", " [ 4.48000000e+00],\n", " [ 2.51000000e+00],\n", " [ 4.71000000e+00],\n", " [ 3.36000000e+00],\n", " [ 4.13000000e+00],\n", " [ 3.99000000e+00],\n", " [ 4.50000000e+00],\n", " [ 4.41000000e+00],\n", " [ 7.68000000e+00],\n", " [ 6.73000000e+00],\n", " [ 7.08000000e+00]])" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "m = GPy.models.GPRegression(data['X'],data['Y'],kern) " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Initial Fit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The initial value of $a$, $b$ and $c$ are 1. For these choices of covariance function parameters, we can plot the random field of $f$ and $y$ separately.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "leng = data['X'].shape[0]\n", "m.plot(fixed_inputs=[(2,0)], which_data_rows = slice(0,leng*2/2))\n", "m.plot(fixed_inputs=[(2,1)], which_data_rows = slice(leng*2/2,leng*2))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "{'contour': ,\n", " 'dataplot': }" ] }, { "metadata": {}, "output_type": "display_data", "svg": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "svg": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we optimize the model, this will take a few minutes." ] }, { "cell_type": "code", "collapsed": false, "input": [ "m.optimize(messages=True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " I F Scale |g| \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0001 1.508800e+05 1.000000e+00 2.119841e+10" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0002 9.813199e+04 5.000000e-01 6.034864e+09" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0003 7.614997e+04 2.500000e-01 2.504914e+09" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0004 5.037751e+04 1.250000e-01 1.320696e+09" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0005 3.928527e+04 6.250000e-02 4.677236e+08" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0006 2.425369e+04 3.125000e-02 3.780239e+08" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0007 1.761290e+04 1.562500e-02 1.368046e+08" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0008 1.133084e+04 7.812500e-03 8.476310e+07" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0009 1.063614e+04 3.906250e-03 2.707359e+07" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0010 6.533772e+03 1.953125e-03 9.752924e+06" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0011 6.190162e+03 9.765625e-04 3.448752e+06" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0012 4.974032e+03 4.882812e-04 1.656388e+06" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0013 4.639241e+03 2.441406e-04 1.236778e+06" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0014 4.143963e+03 1.220703e-04 3.320771e+05" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0015 3.853949e+03 6.103516e-05 4.966592e+05" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0016 3.600478e+03 3.051758e-05 6.694209e+04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0017 3.532544e+03 1.525879e-05 2.008992e+05" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0018 3.126705e+03 7.629395e-06 2.127597e+04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0019 3.116978e+03 3.814697e-06 3.900008e+03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0020 2.969537e+03 1.907349e-06 1.653894e+04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0021 2.885920e+03 9.536743e-07 9.828896e+04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0022 2.830839e+03 4.768372e-07 5.181429e+02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0023 2.795220e+03 2.384186e-07 2.124636e+04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0024 2.781185e+03 1.192093e-07 5.418410e+02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0025 2.775977e+03 5.960464e-08 6.888938e+03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0026 2.772528e+03 2.980232e-08 9.927759e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0027 2.770638e+03 1.490116e-08 2.948786e+03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0028 2.769652e+03 7.450581e-09 7.806604e+02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0029 2.769004e+03 3.725290e-09 2.047646e+02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0030 2.768776e+03 1.862645e-09 1.466321e+02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0031 2.768527e+03 9.313226e-10 7.879161e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0032 2.768416e+03 4.656613e-10 5.662185e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0033 2.768351e+03 2.328306e-10 5.632031e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0034 2.760278e+03 1.164153e-10 4.639182e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0035 2.760273e+03 1.164153e-10 4.493982e+03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0036 2.755024e+03 5.820766e-11 4.056045e+03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0037 2.754977e+03 2.910383e-11 1.703786e+02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0038 2.753001e+03 1.455192e-11 6.827857e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0039 2.752976e+03 7.275958e-12 7.177508e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0040 2.752412e+03 3.637979e-12 1.957306e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0041 2.752400e+03 1.818989e-12 1.454694e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0042 2.751949e+03 9.094947e-13 1.090158e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0043 2.751819e+03 4.547474e-13 1.569351e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0044 2.750401e+03 2.273737e-13 2.087467e+02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0045 2.750321e+03 1.136868e-13 4.106026e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0046 2.750023e+03 5.684342e-14 4.241348e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0047 2.749970e+03 2.842171e-14 2.915397e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0048 2.749751e+03 1.421085e-14 2.801821e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0049 2.749707e+03 7.105427e-15 3.437386e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0050 2.748722e+03 3.552714e-15 2.738856e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0051 2.748611e+03 1.776357e-15 1.569691e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0052 2.748310e+03 1.000000e-15 1.428950e+02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0053 2.747934e+03 1.000000e-15 7.722679e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0054 2.747892e+03 1.000000e-15 6.005421e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0055 2.747556e+03 1.000000e-15 8.170658e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0056 2.747551e+03 1.000000e-15 5.957234e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0057 2.747545e+03 1.000000e-15 3.077598e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0058 2.747439e+03 1.000000e-15 6.389714e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0059 2.747365e+03 1.000000e-15 1.647621e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0060 2.747354e+03 1.000000e-15 1.666509e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0061 2.747013e+03 1.000000e-15 1.211665e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0062 2.746985e+03 1.000000e-15 2.181049e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0063 2.746195e+03 1.000000e-15 2.265612e+01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0064 2.746194e+03 1.000000e-15 3.584803e-01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0065 2.746193e+03 1.000000e-15 9.878814e-01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0066 2.746181e+03 1.000000e-15 2.869209e-01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0067 2.746169e+03 1.000000e-15 2.215734e-01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0068 2.746167e+03 1.000000e-15 1.893275e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0069 2.746164e+03 1.000000e-15 5.889059e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0070 2.746163e+03 1.000000e-15 1.027696e-01" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0071 2.746163e+03 1.000000e-15 3.165116e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0072 2.746163e+03 1.000000e-15 7.244856e-03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0073 2.746163e+03 1.000000e-15 2.787751e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0074 2.746162e+03 1.000000e-15 7.216974e-03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0075 2.746160e+03 1.000000e-15 2.741045e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0076 2.746160e+03 1.000000e-15 3.548956e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0077 2.746158e+03 1.000000e-15 8.648582e-03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0078 2.746156e+03 1.000000e-15 1.761094e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0079 2.746154e+03 1.000000e-15 1.402015e+00" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0080 2.746154e+03 1.000000e-15 8.446986e-03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0081 2.746154e+03 1.000000e-15 8.740913e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0082 2.746153e+03 1.000000e-15 7.165007e-03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0083 2.746153e+03 1.000000e-15 4.793997e-04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0084 2.746153e+03 1.000000e-15 4.702921e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0085 2.746153e+03 1.000000e-15 1.397304e-03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0086 2.746153e+03 1.000000e-15 3.493164e-03" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0087 2.746153e+03 1.000000e-15 2.782956e-02" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0088 2.746153e+03 1.000000e-15 2.844188e-04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \r", "0089 2.746153e+03 1.000000e-15 1.479437e-04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "\r", "0089 2.746153e+03 1.000000e-15 1.479437e-04" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " \n", "converged - relative reduction in objective\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "After optimization, the estimated value of $a$, $b$ and $c$ can be printed.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print m" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " GP_regression. | Value | Constraint | Prior | Tied to\n", " \u001b[1mode_st.a \u001b[0;0m | 0.438768542606 | +ve | | \n", " \u001b[1mode_st.b \u001b[0;0m | 10.0747613738 | +ve | | \n", " \u001b[1mode_st.c \u001b[0;0m | 0.620385966622 | +ve | | \n", " \u001b[1mode_st.variance_Yt \u001b[0;0m | 32.8716774332 | +ve | | \n", " \u001b[1mode_st.variance_Yx \u001b[0;0m | 32.8716774332 | +ve | | \n", " \u001b[1mode_st.lengthscale_Yt \u001b[0;0m | 18.3997301624 | +ve | | \n", " \u001b[1mode_st.lengthscale_Yx \u001b[0;0m | 14.3560437898 | +ve | | \n", " \u001b[1mGaussian_noise.variance\u001b[0;0m | 3.26998881271 | +ve | | \n" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The plot of the random fields are plotted below. \n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "m.plot(fixed_inputs=[(2,0)], which_data_rows = slice(0,leng*2/2))\n", "pb.savefig(\"gene.pdf\")\n", "m.plot(fixed_inputs=[(2,1)], which_data_rows = slice(leng*2/2,leng*2))\n", "pb.savefig(\"protein.pdf\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "svg": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "svg": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In his diploma thesis Kolja Becker estimated the parameters of the partial differential equation where $a = 0.159$, $b =12.77$ and $c =0.983$. The results from the GP approach is $a =0.439$, $b= 10.06$ and $c=0.62$. The GP results are different but they are still within the range of the confidence interval defined in Becker's paper. Two further issues may lead to the difference. One reason could be that the original partial differential equation had a delay parameter $\\tau$ for the mRNA ($f$). In our GP model, we did not include this parameter. However, since the Protein-mRNA partial differential equation is linear and Becker's estimate of $\\tau$ is small comparing with the time step of the data. The delay impact should not be too big. The estimation algorithm used in Becker's thesis is based on least squares optimization. The GP approach considers protein and mRNA as a nonlinear function of space and time. And treat the PDE as a linear function to link them. The different modelling methods could also lead to different estimation of the parameters.\n", "\n", "Finally, we didn't perform a sensitivity analysis in the above notebook. One thing we can do next is to run a Hamiltonian Monte-Carlo sampler on the model to form error bars for our own analysis. It may be that they are not very well determined given the data." ] }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "work funded by the BioPreDyn project, it is a collaboration with Nicolas Durrande, Johannes Jaeger." ] } ], "metadata": {} } ] }