├── bayesianchangepoint ├── __init__.py └── bcp.py ├── README.md ├── .gitignore ├── setup.py ├── LICENSE └── notebooks ├── simulate_appliance_data.ipynb └── test_tracebase.ipynb /bayesianchangepoint/__init__.py: -------------------------------------------------------------------------------- 1 | from bayesianchangepoint import * 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | bayesianchangepoint 2 | =================== 3 | 4 | An implementation of 5 | [Adams & MacKay 2007 "Bayesian Online Changepoint Detection"](http://arxiv.org/abs/0710.3742) 6 | in Python. This code is based on the beautifully commented 7 | [MATLAB implementation](http://www.inference.phy.cam.ac.uk/rpa23/changepoint.php) 8 | provided by Ryan Adams. 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.py[cod] 2 | *.pyc 3 | 4 | # C extensions 5 | *.so 6 | 7 | # Packages 8 | *.egg 9 | *.egg-info 10 | dist 11 | build 12 | eggs 13 | parts 14 | bin 15 | var 16 | sdist 17 | develop-eggs 18 | .installed.cfg 19 | lib 20 | lib64 21 | __pycache__ 22 | 23 | # Installer logs 24 | pip-log.txt 25 | 26 | # Unit test / coverage reports 27 | .coverage 28 | .tox 29 | nosetests.xml 30 | 31 | # Translations 32 | *.mo 33 | 34 | # Mr Developer 35 | .mr.developer.cfg 36 | .project 37 | .pydevproject 38 | .ropeproject 39 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2013 Jack Kelly (aka Daniel) 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | from setuptools import setup, find_packages, Extension 18 | from os.path import join 19 | 20 | setup( 21 | name='bayesianchangepoint', 22 | version='0.1', 23 | packages = find_packages(), 24 | install_requires = ['numpy', 'matplotlib'], 25 | description='An implementation of Adams and MacKay 2007' 26 | ' "Bayesian Online Changepoint Detection"' 27 | ' in Python. This code is based on the beautifully commented' 28 | ' MATLAB implementation provided by Ryan Adams.', 29 | author='Jack Kelly', 30 | author_email='jack@jack-kelly.com', 31 | url='https://github.com/JackKelly/bayesianchangepoint', 32 | download_url = 'https://github.com/JackKelly/bayesianchangepoint/tarball' 33 | '/master#egg=bayesianchangepoint-dev', 34 | long_description=open('README.md').read(), 35 | license='Apache 2.0', 36 | classifiers=[ 37 | 'Development Status :: 3 - Alpha', 38 | 'Intended Audience :: Developers', 39 | 'License :: OSI Approved :: Apache 2.0', 40 | 'Programming Language :: Python', 41 | 'Topic :: Scientific/Engineering :: Mathematics', 42 | ], 43 | keywords='bayesian bayes changepoint' 44 | ) 45 | -------------------------------------------------------------------------------- /bayesianchangepoint/bcp.py: -------------------------------------------------------------------------------- 1 | """ 2 | An implementation of: 3 | @TECHREPORT{ adams-mackay-2007, 4 | AUTHOR = {Ryan Prescott Adams and David J.C. MacKay}, 5 | TITLE = "{B}ayesian Online Changepoint Detection", 6 | INSTITUTION = "University of Cambridge", 7 | ADDRESS = "Cambridge, UK", 8 | YEAR = "2007", 9 | NOTE = "arXiv:0710.3742v1 [stat.ML]" 10 | } 11 | """ 12 | from __future__ import print_function, division 13 | import numpy as np 14 | from numpy.random import gamma, randn, rand 15 | from scipy.special import gammaln 16 | import matplotlib.pyplot as plt 17 | 18 | 19 | def constant_hazard(r, _lambda): 20 | """ 21 | A simple constant-rate hazard function that gives geomtrically-drawn 22 | intervals between changepoints. We'll specify the rate via a mean. 23 | 24 | To quote the paper (section 2.1: "THE CHANGEPOINT PRIOR"): 25 | 26 | "In the special case where P_{gap}(g) is a discrete exponential 27 | (geometric) distribution with timescale lambda, the process is 28 | memoryless and the hazard function is constant at H(tau) = 1/lambda" 29 | 30 | Args: 31 | * r (np.ndarray or scalar) 32 | * _lambda (float) 33 | 34 | Returns: 35 | * p (np.ndarray with shape = r.shape): probability of a changepoint 36 | """ 37 | if isinstance(r, np.ndarray): 38 | shape = r.shape 39 | else: 40 | shape = 1 41 | 42 | probability = np.ones(shape) / _lambda 43 | return probability 44 | 45 | 46 | def studentpdf(x, mu, var, nu): 47 | """ 48 | Returns the pdf(x) for Student T distribution. 49 | 50 | scipy.stats.distributions.t.pdf(x=x-mu, df=nu) comes close 51 | to replicating studentpdf but Kevin Murphy's studentpdf 52 | function includes a 'var' variable which scipy's version does not. 53 | """ 54 | # Using a mixture of code from studentpdf.m and 55 | # scipy.stats.distributions.t_gen._pdf() 56 | r = np.asarray(nu*1.0) 57 | c = np.exp(gammaln((r+1)/2) - gammaln(r/2)) 58 | c /= np.sqrt(r * np.pi * var) * (1+((x-mu)**2)/(r*var))**((r+1)/2) 59 | return c 60 | 61 | 62 | def row_to_column_vector(row_vector): 63 | return np.matrix(row_vector).transpose() 64 | 65 | 66 | def inference(x, hazard_func, mu0=0, kappa0=1, alpha0=1, beta0=1): 67 | """ 68 | Args: 69 | * x (np.ndarray): data 70 | * hazard_func (function): 71 | This is a handle to a function that takes one argument, the number of 72 | time increments since the last changepoint, and returns a value in the 73 | interval [0,1] that is the probability of a changepoint. 74 | e.g. hazard_func=lambda beliefs: constant_hazard(beliefs, 200) 75 | 76 | * mu0, kappa0, alpha0, beta0 (float): specify normal-inverse-gamma prior. 77 | This data is Gaussian with unknown mean and variance. We are going to 78 | use the standard conjugate prior of a normal-inverse-gamma. Note that 79 | one cannot use non-informative priors for changepoint detection in 80 | this construction. The normal-inverse-gamma yields a closed-form 81 | predictive distribution, which makes it easy to use in this context. 82 | There are lots of references out there for doing this kind of inference: 83 | - Chris Bishop's "Pattern Recognition and Machine Learning" Chapter 2 84 | - Also, Kevin Murphy's lecture notes. 85 | """ 86 | 87 | # First, setup the matrix that will hold our beliefs about the current 88 | # run lengths. We'll initialize it all to zero at first. Obviously 89 | # we're assuming here that we know how long we're going to do the 90 | # inference. You can imagine other data structures that don't make that 91 | # assumption (e.g. linked lists). We're doing this because it's easy. 92 | beliefs = np.zeros([x.size+1, x.size+1]) 93 | 94 | # At time t=0, we actually have complete knowledge about the run 95 | # length. It is definitely zero. See the paper for other possible 96 | # boundary conditions. 'beliefs' is called 'R' in gaussdemo.m. 97 | beliefs[0,0] = 1.0 98 | 99 | # Convert floats to arrays 100 | mu0 = np.array([mu0]) 101 | kappa0 = np.array([kappa0]) 102 | alpha0 = np.array([alpha0]) 103 | beta0 = np.array([beta0]) 104 | 105 | # Track the current set of parameters. These start out at the prior and 106 | # accumulate data as we proceed. 107 | muT = mu0 108 | kappaT = kappa0 109 | alphaT = alpha0 110 | betaT = beta0 111 | 112 | # Keep track of the maximums. 113 | maxes = np.zeros([x.size+1, x.size+1]) 114 | 115 | # Loop over the data like we're seeing it all for the first time. 116 | for t in range(x.size): 117 | 118 | # Evaluate the predictive distribution for the new datum under each of 119 | # the parameters. This is the standard thing from Bayesian inference. 120 | predprobs = studentpdf(x[t], muT, 121 | betaT*(kappaT+1)/(alphaT*kappaT), 122 | 2 * alphaT) 123 | 124 | # Evaluate the hazard function for this interval. 125 | haz = hazard_func(np.arange(t+1)) 126 | 127 | # Evaluate the growth probabilities - shift the probabilities down and to 128 | # the right, scaled by the hazard function and the predictive 129 | # probabilities. 130 | beliefs[1:t+2,t+1] = beliefs[0:t+1,t] * predprobs * (1-haz) 131 | 132 | # Evaluate the probability that there *was* a changepoint and we're 133 | # accumulating the mass back down at beliefs = 0. 134 | beliefs[0,t+1] = (beliefs[0:t+1,t] * predprobs * haz).sum() 135 | 136 | # Renormalize the run length probabilities for improved numerical 137 | # stability. 138 | beliefs[:,t+1] = beliefs[:,t+1] / beliefs[:,t+1].sum() 139 | 140 | # Update the parameter sets for each possible run length. 141 | # TODO: continue porting from here... 142 | 143 | muT0 = np.concatenate([mu0 , (kappaT*muT + x[t]) / (kappaT+1) ]) 144 | kappaT0 = np.concatenate([kappa0, kappaT + 1 ]) 145 | alphaT0 = np.concatenate([alpha0, alphaT + 0.5 ]) 146 | betaT0 = np.concatenate([beta0 , kappaT + 147 | (kappaT*(x[t]-muT)**2)/(2*(kappaT+1))]) 148 | muT = muT0 149 | kappaT = kappaT0 150 | alphaT = alphaT0 151 | betaT = betaT0 152 | 153 | # Store the maximum, to plot later. 154 | maxes[t] = np.where(beliefs[:,t]==beliefs[:,t].max())[0] 155 | 156 | return beliefs, maxes 157 | 158 | def generate_test_data(n, hazard_func, mu0=0, kappa0=1, alpha0=1, beta0=1): 159 | """ 160 | Args: 161 | * n (int): number of data elements to return 162 | * hazard_func, mu0, kappa0, alpha0, beta0: see doc for inference() 163 | 164 | Returns: x, changepoints 165 | * x (np.ndarray of length n): data 166 | * changepoints (list of ints): indices of changepoints 167 | """ 168 | x = np.zeros(n) # this will hold the data 169 | changepoints = [0] # Store the times of changepoints. It's useful to see them. 170 | 171 | def generate_params(): 172 | # Generate the parameters of the Gaussian from the prior. 173 | curr_ivar = gamma(alpha0) * beta0 174 | curr_mean = (((kappa0 * curr_ivar) ** -0.5) * randn()) + mu0 175 | return curr_ivar, curr_mean 176 | 177 | curr_ivar, curr_mean = generate_params() 178 | curr_run = 0 # Initial run length is zero 179 | 180 | # Now, loop forward in time and generate data. 181 | for t in range(n): 182 | 183 | # Get the probability of a new changepoint. 184 | p = hazard_func(curr_run) 185 | 186 | # Randomly generate a changepoint, perhaps. 187 | if rand() < p: 188 | # Generate new Gaussian parameters from the prior. 189 | curr_ivar, curr_mean = generate_params() 190 | 191 | # The run length drops back to zero. 192 | curr_run = 0 193 | 194 | # Add this changepoint to the end of the list. 195 | changepoints.append(t) 196 | else: 197 | # Increment the run length if there was no changepoint. 198 | curr_run += 1 199 | 200 | # Draw data from the current parameters. 201 | x[t] = (curr_ivar ** -0.5) * randn() + curr_mean 202 | 203 | return x, changepoints 204 | 205 | def test(data_input='random'): 206 | # First, we will specify the prior. We will then generate some fake data 207 | # from the prior specification. We will then perform inference. Then 208 | # we'll plot some things. 209 | 210 | hazard_func = lambda r: constant_hazard(r, _lambda=200) 211 | 212 | if data_input == 'random': 213 | # generate test data 214 | N = 100 # how many data points to generate? 215 | x, changepoints = generate_test_data(N, hazard_func) 216 | elif data_input == 'ones': 217 | x = np.ones(N) 218 | changepoints = [] 219 | elif data_input == 'signature': 220 | from pda.channel import Channel 221 | from os import path 222 | DATA_DIR = '/data/mine/domesticPowerData/BellendenRd/wattsUp' 223 | #SIG_DATA_FILENAME = 'breadmaker1.csv' 224 | SIG_DATA_FILENAME = 'washingmachine1.csv' 225 | chan = Channel() 226 | chan.load_wattsup(path.join(DATA_DIR, SIG_DATA_FILENAME)) 227 | x = chan.series.values[142:1647] 228 | N = x.size 229 | 230 | # plot 231 | fig = plt.figure() 232 | ax = fig.add_subplot(2,1,1) 233 | ax.plot(x) 234 | ylim = ax.get_ylim() 235 | for cp in changepoints: 236 | ax.plot([cp, cp], ylim, color='k') 237 | 238 | # do inference 239 | beliefs, maxes = inference(x, hazard_func) 240 | 241 | # plot beliefs 242 | beliefs = beliefs.astype(np.float32) 243 | #print(beliefs) 244 | ax2 = fig.add_subplot(2,1,2, sharex=ax) 245 | ax2.imshow(-np.log(beliefs), interpolation='none', aspect='auto', 246 | origin='lower', cmap=plt.cm.Blues) 247 | ax2.plot(maxes, color='r') 248 | ax2.set_xlim([0, N]) 249 | ax2.set_ylim([0, ax2.get_ylim()[1]]) 250 | plt.draw() 251 | return beliefs, maxes 252 | 253 | #test() 254 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, and 10 | distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by the copyright 13 | owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all other entities 16 | that control, are controlled by, or are under common control with that entity. 17 | For the purposes of this definition, "control" means (i) the power, direct or 18 | indirect, to cause the direction or management of such entity, whether by 19 | contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the 20 | outstanding shares, or (iii) beneficial ownership of such entity. 21 | 22 | "You" (or "Your") shall mean an individual or Legal Entity exercising 23 | permissions granted by this License. 24 | 25 | "Source" form shall mean the preferred form for making modifications, including 26 | but not limited to software source code, documentation source, and configuration 27 | files. 28 | 29 | "Object" form shall mean any form resulting from mechanical transformation or 30 | translation of a Source form, including but not limited to compiled object code, 31 | generated documentation, and conversions to other media types. 32 | 33 | "Work" shall mean the work of authorship, whether in Source or Object form, made 34 | available under the License, as indicated by a copyright notice that is included 35 | in or attached to the work (an example is provided in the Appendix below). 36 | 37 | "Derivative Works" shall mean any work, whether in Source or Object form, that 38 | is based on (or derived from) the Work and for which the editorial revisions, 39 | annotations, elaborations, or other modifications represent, as a whole, an 40 | original work of authorship. For the purposes of this License, Derivative Works 41 | shall not include works that remain separable from, or merely link (or bind by 42 | name) to the interfaces of, the Work and Derivative Works thereof. 43 | 44 | "Contribution" shall mean any work of authorship, including the original version 45 | of the Work and any modifications or additions to that Work or Derivative Works 46 | thereof, that is intentionally submitted to Licensor for inclusion in the Work 47 | by the copyright owner or by an individual or Legal Entity authorized to submit 48 | on behalf of the copyright owner. For the purposes of this definition, 49 | "submitted" means any form of electronic, verbal, or written communication sent 50 | to the Licensor or its representatives, including but not limited to 51 | communication on electronic mailing lists, source code control systems, and 52 | issue tracking systems that are managed by, or on behalf of, the Licensor for 53 | the purpose of discussing and improving the Work, but excluding communication 54 | that is conspicuously marked or otherwise designated in writing by the copyright 55 | owner as "Not a Contribution." 56 | 57 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf 58 | of whom a Contribution has been received by Licensor and subsequently 59 | incorporated within the Work. 60 | 61 | 2. Grant of Copyright License. 62 | 63 | Subject to the terms and conditions of this License, each Contributor hereby 64 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 65 | irrevocable copyright license to reproduce, prepare Derivative Works of, 66 | publicly display, publicly perform, sublicense, and distribute the Work and such 67 | Derivative Works in Source or Object form. 68 | 69 | 3. Grant of Patent License. 70 | 71 | Subject to the terms and conditions of this License, each Contributor hereby 72 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 73 | irrevocable (except as stated in this section) patent license to make, have 74 | made, use, offer to sell, sell, import, and otherwise transfer the Work, where 75 | such license applies only to those patent claims licensable by such Contributor 76 | that are necessarily infringed by their Contribution(s) alone or by combination 77 | of their Contribution(s) with the Work to which such Contribution(s) was 78 | submitted. If You institute patent litigation against any entity (including a 79 | cross-claim or counterclaim in a lawsuit) alleging that the Work or a 80 | Contribution incorporated within the Work constitutes direct or contributory 81 | patent infringement, then any patent licenses granted to You under this License 82 | for that Work shall terminate as of the date such litigation is filed. 83 | 84 | 4. Redistribution. 85 | 86 | You may reproduce and distribute copies of the Work or Derivative Works thereof 87 | in any medium, with or without modifications, and in Source or Object form, 88 | provided that You meet the following conditions: 89 | 90 | You must give any other recipients of the Work or Derivative Works a copy of 91 | this License; and 92 | You must cause any modified files to carry prominent notices stating that You 93 | changed the files; and 94 | You must retain, in the Source form of any Derivative Works that You distribute, 95 | all copyright, patent, trademark, and attribution notices from the Source form 96 | of the Work, excluding those notices that do not pertain to any part of the 97 | Derivative Works; and 98 | If the Work includes a "NOTICE" text file as part of its distribution, then any 99 | Derivative Works that You distribute must include a readable copy of the 100 | attribution notices contained within such NOTICE file, excluding those notices 101 | that do not pertain to any part of the Derivative Works, in at least one of the 102 | following places: within a NOTICE text file distributed as part of the 103 | Derivative Works; within the Source form or documentation, if provided along 104 | with the Derivative Works; or, within a display generated by the Derivative 105 | Works, if and wherever such third-party notices normally appear. The contents of 106 | the NOTICE file are for informational purposes only and do not modify the 107 | License. You may add Your own attribution notices within Derivative Works that 108 | You distribute, alongside or as an addendum to the NOTICE text from the Work, 109 | provided that such additional attribution notices cannot be construed as 110 | modifying the License. 111 | You may add Your own copyright statement to Your modifications and may provide 112 | additional or different license terms and conditions for use, reproduction, or 113 | distribution of Your modifications, or for any such Derivative Works as a whole, 114 | provided Your use, reproduction, and distribution of the Work otherwise complies 115 | with the conditions stated in this License. 116 | 117 | 5. Submission of Contributions. 118 | 119 | Unless You explicitly state otherwise, any Contribution intentionally submitted 120 | for inclusion in the Work by You to the Licensor shall be under the terms and 121 | conditions of this License, without any additional terms or conditions. 122 | Notwithstanding the above, nothing herein shall supersede or modify the terms of 123 | any separate license agreement you may have executed with Licensor regarding 124 | such Contributions. 125 | 126 | 6. Trademarks. 127 | 128 | This License does not grant permission to use the trade names, trademarks, 129 | service marks, or product names of the Licensor, except as required for 130 | reasonable and customary use in describing the origin of the Work and 131 | reproducing the content of the NOTICE file. 132 | 133 | 7. Disclaimer of Warranty. 134 | 135 | Unless required by applicable law or agreed to in writing, Licensor provides the 136 | Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, 137 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, 138 | including, without limitation, any warranties or conditions of TITLE, 139 | NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are 140 | solely responsible for determining the appropriateness of using or 141 | redistributing the Work and assume any risks associated with Your exercise of 142 | permissions under this License. 143 | 144 | 8. Limitation of Liability. 145 | 146 | In no event and under no legal theory, whether in tort (including negligence), 147 | contract, or otherwise, unless required by applicable law (such as deliberate 148 | and grossly negligent acts) or agreed to in writing, shall any Contributor be 149 | liable to You for damages, including any direct, indirect, special, incidental, 150 | or consequential damages of any character arising as a result of this License or 151 | out of the use or inability to use the Work (including but not limited to 152 | damages for loss of goodwill, work stoppage, computer failure or malfunction, or 153 | any and all other commercial damages or losses), even if such Contributor has 154 | been advised of the possibility of such damages. 155 | 156 | 9. Accepting Warranty or Additional Liability. 157 | 158 | While redistributing the Work or Derivative Works thereof, You may choose to 159 | offer, and charge a fee for, acceptance of support, warranty, indemnity, or 160 | other liability obligations and/or rights consistent with this License. However, 161 | in accepting such obligations, You may act only on Your own behalf and on Your 162 | sole responsibility, not on behalf of any other Contributor, and only if You 163 | agree to indemnify, defend, and hold each Contributor harmless for any liability 164 | incurred by, or claims asserted against, such Contributor by reason of your 165 | accepting any such warranty or additional liability. 166 | 167 | END OF TERMS AND CONDITIONS 168 | 169 | APPENDIX: How to apply the Apache License to your work 170 | 171 | To apply the Apache License to your work, attach the following boilerplate 172 | notice, with the fields enclosed by brackets "[]" replaced with your own 173 | identifying information. (Don't include the brackets!) The text should be 174 | enclosed in the appropriate comment syntax for the file format. We also 175 | recommend that a file or class name and description of purpose be included on 176 | the same "printed page" as the copyright notice for easier identification within 177 | third-party archives. 178 | 179 | Copyright [yyyy] [name of copyright owner] 180 | 181 | Licensed under the Apache License, Version 2.0 (the "License"); 182 | you may not use this file except in compliance with the License. 183 | You may obtain a copy of the License at 184 | 185 | http://www.apache.org/licenses/LICENSE-2.0 186 | 187 | Unless required by applicable law or agreed to in writing, software 188 | distributed under the License is distributed on an "AS IS" BASIS, 189 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 190 | See the License for the specific language governing permissions and 191 | limitations under the License. 192 | -------------------------------------------------------------------------------- /notebooks/simulate_appliance_data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "", 4 | "signature": "sha256:04e0ab9012020acc6bac6aa92d6aeedb9db5ee928d403db410ecd7fec2d780d0" 5 | }, 6 | "nbformat": 3, 7 | "nbformat_minor": 0, 8 | "worksheets": [ 9 | { 10 | "cells": [ 11 | { 12 | "cell_type": "markdown", 13 | "metadata": {}, 14 | "source": [ 15 | "In this notebook, I shall be simulating some appliance data to see how well we are able to find the change points." 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "collapsed": false, 21 | "input": [ 22 | "import numpy as np\n", 23 | "import pandas as pd\n", 24 | "import matplotlib.pyplot as plt\n", 25 | "import seaborn as sns\n", 26 | "%matplotlib inline" 27 | ], 28 | "language": "python", 29 | "metadata": {}, 30 | "outputs": [], 31 | "prompt_number": 39 32 | }, 33 | { 34 | "cell_type": "code", 35 | "collapsed": false, 36 | "input": [ 37 | "test_signal = np.array([0,0,0,2,3,100,100,110,110,112,113,115,120,130,5,4,0])" 38 | ], 39 | "language": "python", 40 | "metadata": {}, 41 | "outputs": [], 42 | "prompt_number": 40 43 | }, 44 | { 45 | "cell_type": "code", 46 | "collapsed": false, 47 | "input": [ 48 | "plt.plot(test_signal);" 49 | ], 50 | "language": "python", 51 | "metadata": {}, 52 | "outputs": [ 53 | { 54 | "metadata": {}, 55 | "output_type": "display_data", 56 | "png": "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\n", 57 | "text": [ 58 | "" 59 | ] 60 | } 61 | ], 62 | "prompt_number": 41 63 | }, 64 | { 65 | "cell_type": "code", 66 | "collapsed": false, 67 | "input": [ 68 | "from bayesianchangepoint import bcp" 69 | ], 70 | "language": "python", 71 | "metadata": {}, 72 | "outputs": [], 73 | "prompt_number": 42 74 | }, 75 | { 76 | "cell_type": "code", 77 | "collapsed": false, 78 | "input": [ 79 | "hazard_func = lambda r: bcp.constant_hazard(r, _lambda=200)" 80 | ], 81 | "language": "python", 82 | "metadata": {}, 83 | "outputs": [], 84 | "prompt_number": 43 85 | }, 86 | { 87 | "cell_type": "code", 88 | "collapsed": false, 89 | "input": [ 90 | "beliefs, maxes = bcp.inference(test_signal, hazard_func)" 91 | ], 92 | "language": "python", 93 | "metadata": {}, 94 | "outputs": [], 95 | "prompt_number": 44 96 | }, 97 | { 98 | "cell_type": "code", 99 | "collapsed": false, 100 | "input": [ 101 | "fig, ax = plt.subplots(nrows = 2, sharex = True)\n", 102 | "\n", 103 | "ax[0].plot(test_signal)\n", 104 | "ax[1].imshow(-np.log(beliefs), interpolation='none', aspect='auto',\n", 105 | " origin='lower', cmap=plt.cm.Blues)\n", 106 | "ax[1].plot(maxes, color='r')\n", 107 | "ax[1].set_xlim([0, len(test_signal)])\n", 108 | "ax[1].set_ylim([0, ax[1].get_ylim()[1]])\n", 109 | "ax[0].grid()\n", 110 | "ax[1].grid()\n", 111 | "index_changes = np.where(np.diff(maxes.T[0])<0)[0]\n", 112 | "ax[0].scatter(index_changes, test_signal[index_changes]);" 113 | ], 114 | "language": "python", 115 | "metadata": {}, 116 | "outputs": [ 117 | { 118 | "metadata": {}, 119 | "output_type": "display_data", 120 | "png": "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\niIiISFb6/8Z4N0cNylfHAAAAAElFTkSuQmCC\n", 121 | "text": [ 122 | "" 123 | ] 124 | } 125 | ], 126 | "prompt_number": 46 127 | }, 128 | { 129 | "cell_type": "markdown", 130 | "metadata": {}, 131 | "source": [ 132 | "Looks decent! I am not very sure about why maxes is same for all index positions. I just used maxes[0] for marking the change points. This needs confirmation though." 133 | ] 134 | } 135 | ], 136 | "metadata": {} 137 | } 138 | ] 139 | } -------------------------------------------------------------------------------- /notebooks/test_tracebase.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "", 4 | "signature": "sha256:df2b19040199e1aed8ac958fc2e196341a355bcb085c7aa506c33e053d38faa7" 5 | }, 6 | "nbformat": 3, 7 | "nbformat_minor": 0, 8 | "worksheets": [ 9 | { 10 | "cells": [ 11 | { 12 | "cell_type": "markdown", 13 | "metadata": {}, 14 | "source": [ 15 | "In this notebook, I shall be testing for changepoint for a few appliances from the Tracebase data set." 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "collapsed": false, 21 | "input": [ 22 | "import numpy as np\n", 23 | "import pandas as pd\n", 24 | "import matplotlib.pyplot as plt\n", 25 | "import seaborn as sns\n", 26 | "%matplotlib inline" 27 | ], 28 | "language": "python", 29 | "metadata": {}, 30 | "outputs": [], 31 | "prompt_number": 1 32 | }, 33 | { 34 | "cell_type": "markdown", 35 | "metadata": {}, 36 | "source": [ 37 | "Refrigerator\n", 38 | "--------------" 39 | ] 40 | }, 41 | { 42 | "cell_type": "markdown", 43 | "metadata": {}, 44 | "source": [ 45 | "Lets start with refrigerator" 46 | ] 47 | }, 48 | { 49 | "cell_type": "code", 50 | "collapsed": false, 51 | "input": [ 52 | "ref = pd.read_csv(\"/home/nipun/study/datasets/tracebase/Refrigerator/dev_98C08A_2011.08.25.csv\", index_col=0, usecols = [0,1],\n", 53 | " parse_dates=True, sep=\";\")" 54 | ], 55 | "language": "python", 56 | "metadata": {}, 57 | "outputs": [], 58 | "prompt_number": 33 59 | }, 60 | { 61 | "cell_type": "code", 62 | "collapsed": false, 63 | "input": [ 64 | "ref[\"index\"] = ref.index\n", 65 | "ref = ref.drop_duplicates(cols=\"index\", take_last = True)\n", 66 | "ref = ref.drop(\"index\",1)" 67 | ], 68 | "language": "python", 69 | "metadata": {}, 70 | "outputs": [], 71 | "prompt_number": 34 72 | }, 73 | { 74 | "cell_type": "code", 75 | "collapsed": false, 76 | "input": [ 77 | "ref.columns = ['real']" 78 | ], 79 | "language": "python", 80 | "metadata": {}, 81 | "outputs": [], 82 | "prompt_number": 35 83 | }, 84 | { 85 | "cell_type": "code", 86 | "collapsed": false, 87 | "input": [ 88 | "len(ref.index)" 89 | ], 90 | "language": "python", 91 | "metadata": {}, 92 | "outputs": [ 93 | { 94 | "metadata": {}, 95 | "output_type": "pyout", 96 | "prompt_number": 36, 97 | "text": [ 98 | "84883" 99 | ] 100 | } 101 | ], 102 | "prompt_number": 36 103 | }, 104 | { 105 | "cell_type": "code", 106 | "collapsed": false, 107 | "input": [ 108 | "ref = ref.resample('1T',how='median')" 109 | ], 110 | "language": "python", 111 | "metadata": {}, 112 | "outputs": [], 113 | "prompt_number": 38 114 | }, 115 | { 116 | "cell_type": "code", 117 | "collapsed": false, 118 | "input": [ 119 | "ref.plot()" 120 | ], 121 | "language": "python", 122 | "metadata": {}, 123 | "outputs": [ 124 | { 125 | "metadata": {}, 126 | "output_type": "pyout", 127 | "prompt_number": 39, 128 | "text": [ 129 | "" 130 | ] 131 | }, 132 | { 133 | "metadata": {}, 134 | "output_type": "display_data", 135 | "png": "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\nAAAASUVORK5CYII=\n", 136 | "text": [ 137 | "" 138 | ] 139 | } 140 | ], 141 | "prompt_number": 39 142 | }, 143 | { 144 | "cell_type": "code", 145 | "collapsed": false, 146 | "input": [ 147 | "from bayesianchangepoint import bcp\n", 148 | "hazard_func = lambda r: bcp.constant_hazard(r, _lambda=200)" 149 | ], 150 | "language": "python", 151 | "metadata": {}, 152 | "outputs": [], 153 | "prompt_number": 40 154 | }, 155 | { 156 | "cell_type": "code", 157 | "collapsed": false, 158 | "input": [ 159 | "import time\n", 160 | "test_signal = ref.head(1000).real.values\n", 161 | "start = time.time()\n", 162 | "beliefs, maxes = bcp.inference(test_signal, hazard_func)\n", 163 | "end = time.time()" 164 | ], 165 | "language": "python", 166 | "metadata": {}, 167 | "outputs": [], 168 | "prompt_number": 44 169 | }, 170 | { 171 | "cell_type": "code", 172 | "collapsed": false, 173 | "input": [ 174 | "fig, ax = plt.subplots(nrows = 2, sharex = True)\n", 175 | "\n", 176 | "ax[0].plot(test_signal)\n", 177 | "ax[1].imshow(-np.log(beliefs), interpolation='none', aspect='auto',\n", 178 | " origin='lower', cmap=plt.cm.Blues)\n", 179 | "ax[1].plot(maxes, color='r')\n", 180 | "ax[1].set_xlim([0, len(test_signal)])\n", 181 | "ax[1].set_ylim([0, ax[1].get_ylim()[1]])\n", 182 | "ax[0].grid()\n", 183 | "ax[1].grid()\n", 184 | "index_changes = np.where(np.diff(maxes.T[0])<0)[0]\n", 185 | "ax[0].scatter(index_changes, test_signal[index_changes],c='green');" 186 | ], 187 | "language": "python", 188 | "metadata": {}, 189 | "outputs": [ 190 | { 191 | "metadata": {}, 192 | "output_type": "display_data", 193 | "png": "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\nrkJggg==\n", 194 | "text": [ 195 | "" 196 | ] 197 | } 198 | ], 199 | "prompt_number": 45 200 | }, 201 | { 202 | "cell_type": "markdown", 203 | "metadata": {}, 204 | "source": [ 205 | "Ok, something doesn't seem all that well:(" 206 | ] 207 | }, 208 | { 209 | "cell_type": "markdown", 210 | "metadata": {}, 211 | "source": [ 212 | "Lets try with a different hazard function" 213 | ] 214 | }, 215 | { 216 | "cell_type": "code", 217 | "collapsed": false, 218 | "input": [ 219 | "hazard_func = lambda r: bcp.constant_hazard(r, _lambda=10)" 220 | ], 221 | "language": "python", 222 | "metadata": {}, 223 | "outputs": [], 224 | "prompt_number": 46 225 | }, 226 | { 227 | "cell_type": "code", 228 | "collapsed": false, 229 | "input": [ 230 | "import time\n", 231 | "test_signal = ref.head(1000).real.values\n", 232 | "start = time.time()\n", 233 | "beliefs, maxes = bcp.inference(test_signal, hazard_func)\n", 234 | "end = time.time()" 235 | ], 236 | "language": "python", 237 | "metadata": {}, 238 | "outputs": [], 239 | "prompt_number": 47 240 | }, 241 | { 242 | "cell_type": "code", 243 | "collapsed": false, 244 | "input": [ 245 | "fig, ax = plt.subplots(nrows = 2, sharex = True)\n", 246 | "\n", 247 | "ax[0].plot(test_signal)\n", 248 | "ax[1].imshow(-np.log(beliefs), interpolation='none', aspect='auto',\n", 249 | " origin='lower', cmap=plt.cm.Blues)\n", 250 | "ax[1].plot(maxes, color='r')\n", 251 | "ax[1].set_xlim([0, len(test_signal)])\n", 252 | "ax[1].set_ylim([0, ax[1].get_ylim()[1]])\n", 253 | "ax[0].grid()\n", 254 | "ax[1].grid()\n", 255 | "index_changes = np.where(np.diff(maxes.T[0])<0)[0]\n", 256 | "ax[0].scatter(index_changes, test_signal[index_changes],c='green');" 257 | ], 258 | "language": "python", 259 | "metadata": {}, 260 | "outputs": [ 261 | { 262 | "metadata": {}, 263 | "output_type": "display_data", 264 | "png": "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\n/wOByQo/6AaKvgAAAABJRU5ErkJggg==\n", 265 | "text": [ 266 | "" 267 | ] 268 | } 269 | ], 270 | "prompt_number": 48 271 | }, 272 | { 273 | "cell_type": "markdown", 274 | "metadata": {}, 275 | "source": [ 276 | "Ah! Seems to make things worse.. Lets try increasing the lambda paramter" 277 | ] 278 | }, 279 | { 280 | "cell_type": "code", 281 | "collapsed": false, 282 | "input": [ 283 | "hazard_func = lambda r: bcp.constant_hazard(r, _lambda=400)" 284 | ], 285 | "language": "python", 286 | "metadata": {}, 287 | "outputs": [], 288 | "prompt_number": 49 289 | }, 290 | { 291 | "cell_type": "code", 292 | "collapsed": false, 293 | "input": [ 294 | "import time\n", 295 | "test_signal = ref.head(1000).real.values\n", 296 | "start = time.time()\n", 297 | "beliefs, maxes = bcp.inference(test_signal, hazard_func)\n", 298 | "end = time.time()" 299 | ], 300 | "language": "python", 301 | "metadata": {}, 302 | "outputs": [], 303 | "prompt_number": 50 304 | }, 305 | { 306 | "cell_type": "code", 307 | "collapsed": false, 308 | "input": [ 309 | "fig, ax = plt.subplots(nrows = 2, sharex = True)\n", 310 | "\n", 311 | "ax[0].plot(test_signal)\n", 312 | "ax[1].imshow(-np.log(beliefs), interpolation='none', aspect='auto',\n", 313 | " origin='lower', cmap=plt.cm.Blues)\n", 314 | "ax[1].plot(maxes, color='r')\n", 315 | "ax[1].set_xlim([0, len(test_signal)])\n", 316 | "ax[1].set_ylim([0, ax[1].get_ylim()[1]])\n", 317 | "ax[0].grid()\n", 318 | "ax[1].grid()\n", 319 | "index_changes = np.where(np.diff(maxes.T[0])<0)[0]\n", 320 | "ax[0].scatter(index_changes, test_signal[index_changes],c='green');" 321 | ], 322 | "language": "python", 323 | "metadata": {}, 324 | "outputs": [ 325 | { 326 | "metadata": {}, 327 | "output_type": "display_data", 328 | "png": "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\n", 329 | "text": [ 330 | "" 331 | ] 332 | } 333 | ], 334 | "prompt_number": 51 335 | }, 336 | { 337 | "cell_type": "markdown", 338 | "metadata": {}, 339 | "source": [ 340 | "Can't comment anything on this!" 341 | ] 342 | }, 343 | { 344 | "cell_type": "markdown", 345 | "metadata": {}, 346 | "source": [ 347 | "Dishwasher\n", 348 | "------------" 349 | ] 350 | }, 351 | { 352 | "cell_type": "code", 353 | "collapsed": false, 354 | "input": [ 355 | "dw = pd.read_csv(\"/home/nipun/study/datasets/tracebase/Dishwasher/dev_B7E6F4_2012.02.03.csv\", index_col=0, usecols = [0,1],\n", 356 | " parse_dates=True, sep=\";\")" 357 | ], 358 | "language": "python", 359 | "metadata": {}, 360 | "outputs": [], 361 | "prompt_number": 54 362 | }, 363 | { 364 | "cell_type": "code", 365 | "collapsed": false, 366 | "input": [ 367 | "dw[\"index\"] = dw.index\n", 368 | "dw = dw.drop_duplicates(cols=\"index\", take_last = True)\n", 369 | "dw = dw.drop(\"index\",1)" 370 | ], 371 | "language": "python", 372 | "metadata": {}, 373 | "outputs": [], 374 | "prompt_number": 56 375 | }, 376 | { 377 | "cell_type": "code", 378 | "collapsed": false, 379 | "input": [ 380 | "dw.columns =['real']" 381 | ], 382 | "language": "python", 383 | "metadata": {}, 384 | "outputs": [], 385 | "prompt_number": 57 386 | }, 387 | { 388 | "cell_type": "code", 389 | "collapsed": false, 390 | "input": [ 391 | "dw.plot()" 392 | ], 393 | "language": "python", 394 | "metadata": {}, 395 | "outputs": [ 396 | { 397 | "metadata": {}, 398 | "output_type": "pyout", 399 | "prompt_number": 58, 400 | "text": [ 401 | "" 402 | ] 403 | }, 404 | { 405 | "metadata": {}, 406 | "output_type": "display_data", 407 | "png": "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\n/sRrFlizPgyvfGVDDz9dsJTevgGmTKonlUqxZn03KVI0NdTw7LK1TG1poLM7w6q13Wy/TTO9fQP0\nDwxQV5Omq6ePHbadxMauDG3Tmli+eiPrNvYwuamObVoaGchmWflKFw11NdSkU3R0ZWior+GVDZto\nbqylrz9LQ10N9bVpOroz7LjtJGrSKXoy/azb2Mua9ZvYbfsWWifVs/KVLrp7+thl+mSaGmrZuClD\nc0MtjfU1bOjMsGT5Ojo39VFfl6axvpaGujQ7tU3m8SVraKyvwXaeylNLY7JZmDKpnoa6GiY11QIp\nGutr2D5qZkNnLxu7MqTTKdrXddPUUMu0lgamT23i5Ve6yGaz7LJdC4uXxuzYNpnO7rDupOZ64rVd\ndHRnqK1JkwJqalL0D2R5Oe5iclMdmb4B9txlKul0irapTSx9aQPNDbUMZLMsWb6ebVoaaGyopXVS\nPX19A0xqrOXxJWvYe/eI2nSKVzp6yGazbOzuo6Orl7raNGvWbyJqbWS3GS3U1aSpSafI9A+wfmMv\nPZl+3rLTVNrXdTN1cj21tWneulvE48+uoqMrw/SpTaxZ3/1q19+a9ZvY0NVLb6af5oZaprY00FhX\nw9N/Wcvb37QN9bVp2qY2sWxlB9OnNVFbm+avKzvYsW0SzY11xOs3se3URjq7++jt6ydFivb13azf\n2MNObZNprK9hIAtP/TkmC2w3rYnG+hpWr+vmzTNawzUeqzqoSad4x+7bsnxVB72Zfjo3ZdhluxZ6\nMv1Mbqqjsb6G9nWbaJvaRPu6bmrSKbLZLOs7MzQ31NA6qR5fvp4Nnb0A7Dx9Mtu0NFBbk+aVjk00\nN9bR0lxHTTpF1NrI8yvWs2xlBzN3j6hJp/nzS+vZdkoTUybXs7ajh9p0irraNLW1aV54uYNMX3hf\nt80Z5DBUwb8sm9lNwE/cfX7y8zLgTe7++kHVwDEX/lQD6SrQLV94LwCfvvrXAHzrgkNobnytDfH0\nC69wzY/+73XPu/6fDqGrP8s/z1lQnKAiVeq+az9Ums5PM7vGzD6S8/OLJQkiIrIVKkaf/ELgaAAz\nezfwZBFeU0REKE6f/D3AkWa2MPn5tCK8poiIiIiIiIiIiIiIiIiIiIjIxNWUOkA5M7Nt4jje8t0u\nykAlZITKyGlmtVEUnRZFUUsURS/HcTz6fA0lUAk5KyFjrko4PsdLRX4YZlYTRdGXgHOjKNo9iqKO\n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\n", 408 | "text": [ 409 | "" 410 | ] 411 | } 412 | ], 413 | "prompt_number": 58 414 | }, 415 | { 416 | "cell_type": "code", 417 | "collapsed": false, 418 | "input": [ 419 | "dw = dw.resample('1T', 'median')" 420 | ], 421 | "language": "python", 422 | "metadata": {}, 423 | "outputs": [], 424 | "prompt_number": 63 425 | }, 426 | { 427 | "cell_type": "code", 428 | "collapsed": false, 429 | "input": [ 430 | "import time\n", 431 | "test_signal = dw.ix[300:600].real.values\n", 432 | "start = time.time()\n", 433 | "beliefs, maxes = bcp.inference(test_signal, hazard_func)\n", 434 | "end = time.time()" 435 | ], 436 | "language": "python", 437 | "metadata": {}, 438 | "outputs": [], 439 | "prompt_number": 66 440 | }, 441 | { 442 | "cell_type": "code", 443 | "collapsed": false, 444 | "input": [ 445 | "fig, ax = plt.subplots(nrows = 2, sharex = True)\n", 446 | "\n", 447 | "ax[0].plot(test_signal)\n", 448 | "ax[1].imshow(-np.log(beliefs), interpolation='none', aspect='auto',\n", 449 | " origin='lower', cmap=plt.cm.Blues)\n", 450 | "ax[1].plot(maxes, color='r')\n", 451 | "ax[1].set_xlim([0, len(test_signal)])\n", 452 | "ax[1].set_ylim([0, ax[1].get_ylim()[1]])\n", 453 | "ax[0].grid()\n", 454 | "ax[1].grid()\n", 455 | "index_changes = np.where(np.diff(maxes.T[0])<0)[0]\n", 456 | "ax[0].scatter(index_changes, test_signal[index_changes],c='green');" 457 | ], 458 | "language": "python", 459 | "metadata": {}, 460 | "outputs": [ 461 | { 462 | "metadata": {}, 463 | "output_type": "display_data", 464 | "png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAECCAYAAAAYfWtSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztvXmcZFWV4P+9772IyMyqyiq2LECgStGLtqMsJWiDCrT8\nAG3tUmdcuhFbRqEdaUdsaVRQaVoUHRRbVHQasavVHv0NCC4giEorWCKI0IANetlxKSgoltoyI95y\n54/7XsSLyNgjcj/fz6cqI996X0TGOfcs9xwQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQ\nFhmq3U6tdQH4CrAGKAHnAr8HrgRMethFxphLtdYnA6cAEXCuMeYqrfUo8HVgD2Ab8NfGmMdn5EkE\nQRCEnumkBN4GvNAY83da612A24FzgJXGmAtyx+0JXAusA0aBnwEvAv4WWG6M+Uet9ZuAPzXGnDYj\nTyIIgiD0TNBh/6XAZelrDwhxgv4ArfV64B7gNOAwYKMxJgRCrfW9wAuBI4BPpudfA3x4uMMXBEEQ\nBsFrt9MYs8MYs11rvQKnEM4CbgZON8YcCdwPnA2sAJ7OnboNWAmMA1sbtgmCIAjzhLZKAEBrvS9w\nHfBVY8w3gSuMMbelu68ADsYJ+hW501YATzVsz7YJgiAI84S27iCt9Wqcr/9dxph/Tzdfo7X+n8aY\nXwLHALfgrIOPaa1LwAjwPODXwEbgVcAvgVcC13ca0ObNW22fzyIIgrBkmZgYbxvjbUWnwPBngTcA\nv81t/gDwaVx8YBNwSuoyegcuO8gDPmaMuSLNDvpXYC+gDPyVMWZzu3uKEhAEQeidGVECc4EoAUEQ\nhN7pVwl0jAkIgiAIixdRAoIgCEsYUQKCIAhLGFECgiAISxhRAoIgCEsYUQKCIAhLmE61gwRBEHpi\nyxNb+PwVn6FiK7zxiL/kwOcdPJTrTk1N8dENZ/OTO34MI/CK5x7LWX99NqVSaSjXX6rIOgFBmEOs\ntfz+sR3stdsYgV9vmG95Ygv/8LWz2BI9zoF7HMTfv+VMPK+z8X7Pg4bv33glE+OrefOr/gql+vua\nJ0nC448/zqpVqygWi+k2yxNbp/A8he97lAoeI8XaXHJycpLXffzPuXX1LRTUMvZ6bG++8LpL2H/N\nAey+arR63PbJkEee2EkYJRQDjz13G2O0FOClY926o8IT26aohAmVMKYSJXzpu5/jRw9dhlobEBRK\neHGJo5Ij+Zv176USxgCMlgLW7rmCFWPFvp55ISOLxQRhAXLXg0/wqW/+B8tHCxzzon0YX1akVPAZ\nKwV84v//ELcuvxWUZUe4ib/d/d28583vqzu/VPSrghPgtv/8Fe+49K/53cTDqCnFX3pv4VPv/hw7\nyxFYWDFW6EopPPDw/bzry+/gbnU3e8V787HXfIKXrXsF/+sbt3LfH7bWHbvLCjcT/+vjD+DRP/yK\nE25+Ay9Q72RNeHzdcR844RD0vqvc6y/dyOanJuv2LxsJOPtthzI6EvB3n99IGCXdv5EN78kFpx7B\naGlpOTr6VQKdagc1aypzN7ABSHD1gU41xlhpKiMIvbNtZwi4mfG3b3igbt+o/0aOmHxj9XezCU79\nTH35rQP2XcX7Tzik+vvXrt/AH/b4Iy/dfj7LkmfwlC1wyvk/qe5fuazIOW8/jPEOM+XzvvVRblt9\nBweUT2A02Z0v/eg27nx4gvv+sJX9nzHOHitHiRLLzqmQux58EoDf/u4p9MRqSlMlxktrsSQ86t/M\nnvFLAHhi21T1+k9uL7NyeZEjD9ybyXLMD2/5HTumIh55cie7jY8QRgn77LGcg56zG8XAp1jw+cq1\nX+GxyUmSXcvElIlVhTVTz+GEo95UFfgb73yEBzZtZdtkuOSUQL90epdOAB4zxpyYaypzG3CmMeZ6\nrfUXgfVa618A7ybXVEZr/UPgfwC355rKfAjXf0AQBJx7BeDP/3QNz91vF57eUaYSJWzbGfLVH/8b\njyz7PR4By+K92Zc1/Mna51fP/e3vnuLhzdvrrufhMWJ3Z1XyHCpqK9vjTazb7yDGl4/wq98+xtM7\nKjz+1FRHJfB0/DS7xs9l/8p6t8GH2+/bwl67jfG+Nx1U5wJ6YNNWPvqvt5AklgP/5CD++8ZT+M/H\nCsSqwq7l/+DEV76Fr/3w3uqzZs+9x8pRXvuyZwGwanmRS39yH0liq8c9Z9+VvP7l+1fP2W3sVbz3\nK3/LvXfeg1qpeM7oAZzx1ndx0PPWVo95+NHtPLBpa929hPb001TmEGNMNh25GjgWiJGmMoLQM1Hi\nXB577jrG85+5a92+iWWv4B+uOIvN0aPst+z5nH/quxgfr7XkOGfDL9m0ZUfdOacc/y5u2WBgFB61\nN3H4hOKDJ54MwLd+eh9X3fhQVwLypfu8jN88fBUA9wXf4XkUeP8JH2GfPZZRCPy6Y33PeSHi9Lrn\nnPwxzvrnjTyxrcIX3vtNbvzPR+v2W2uJE1s9D8DLXSM7zm9wW617/qFc/+mbKJfLWGsZGRmZNu7s\nOqIEuqetEjDG7ADINZX5EPCp3CH55jHSVEYQeiQTVp433Z374gNfwtUH/hhrbVM/vu+pacJOP/MA\nPnfC/+Yzl9/LK/Y+hg+89RXVfVnsIE46+9r/9k2nMfm1PfjNH+HFoy/g3JPfWg0ON9JM8Hp+QODH\neJ43bb+19ec1XiNJD/D95i7udtlAmeIQJdA9vTaV+QYuFpAxzvTmMSBNZQShKzJh5TdRAhmtArme\np6qz5jwrV+4CwH5771u3PROqzc5pds8/O+xYAI598XEtFQDUxt7o7sm2N+7PlFD+mf0mlkAzxdgJ\nz+v+GQVHWyWQaypzhjFmQ7r5Nq31kenrrFHMzcDLtNYlrfVKpjeVyR8rCEJK3IUSaIWvFNZSnTl3\numYzYT2MsTUTvHFiq9trFoit+9nKEojjAd6T7DpWlEC3dIoJnIlz4XxEa/2RdNt7gAu11kXgLuCy\nNDvoQuAGnGI50xhTTgPH/6q1voG0qcyMPIUgLFDauYM6kc3sk8Ti5Vwnra7Z6yy527E1c8E4S8DN\nMRuVTzPrx88piup9+1jfIJZA73SKCbwHJ/QbOarJsV8GvtywbRJ4Y+OxgiA4Ytv/rDcv8PKx2paW\nQI/+8tp12nuNq+Ow9ZZAIV381ri/oyUwhPdEYgLdI7WDBGEOGcgSaCHUWwnvni2BLoVxMzdT3h3U\nlSWQUxQDvSdiCfSMKAFBmENapUN2Qyuh3kqI+unMvFsB2W2Attk48oHhxv3NLJU6S6BLC6TdWMQS\n6B5RAoIwh2RB0EFmva0tgQEDw/H0LJ5ux9GNJeA1swRyMYFBAsNiCXSPKAFBmENqLpfev4qtZvat\nAquNWTodxzZAdlCSzw7q0RIYxB3kyTqBnhElIAhzyEA58S0Wf1WFrN/cEuhmsRjUArkds4NaWAKN\n7qCkQQnkK6LmhXfUZB1Bt4gl0DuiBARhDhmG62O6O6i5EO3VXz6oJdC4WCxucAfl4yDN3EGDLBaT\ndQLdI0pAEOaQQRaL9RwY7nGW3G28otEFY60r/VC1BFQrS6BTYHgQS6C/MtRLEVECgjCHDCMdsmVg\nWDVXAsNeMayUQqnW6wDy6Z/QPPV06JaAuIO6RpSAIMwhw5n1dmcJNFvU1Y5egtb5YnaN928dE2hi\nCVjJDpptuuq6oLV+MfAJY8zRWuuDge8B96S7LzLGXCpNZQShd4Yx620UeB0Dw/Fw1wlkx0zL/lEd\nYgId3EGDlI0QS6B7OioBrfUZwFuArHvFOuACY8wFuWP2RJrKCELPDMMS6HbFcO/rBLofW50lYLuz\nBDq5g1qVkm6HpIj2TjeWwL3A64Gvpb+vA7TWej3OGjgNOAxpKiMIPZMFMIdpCbRcJ9BnAblulICn\n1HQh72cF5NzPpBozmP7MeeE9SO0gcQf1TkdnnzHmcpyLJ+Mm4HRjzJHA/cDZuF4B0lRGEHpkRgPD\n07KD6oVxJ7pdJ5Ddq+oOarAgGi2BTrWDBllFLe6g3uknMHyFMea27DVwMNJURhD6YiiB4Qah3qoz\nV++WQPeLtrxmgeEWMYFOKaLN1hF0Sy3A3POpS5Z+lMA1WutD09fHALcgTWUEoS8GyYRpNevNav60\nXCcwA4Fh31M1d0+DOyc7vdvaQYOsopZ1Ar3TVXZQSvaX807gC1rrENgEnGKM2S5NZQShdwbzf6e1\ng+IW7qBZWicATmBHcfsU0a5rBw1QT0ncQb3TlRIwxjwIHJ6+vh14aZNjpKmMIPTITKSINmbnTDu+\n23UCPSkBjySM6sbTqsdwc0vAq+4byBLosUieIIvFBGFOGaSVYqt+up1LSXdZQK5Hd1DjOoB+LIFB\nS0lL7aDeESUgCHNInFg8pVADKIFpVUSz7JyBA8P9pYg2nteqdlCz7KDh1Q4SJdAtogQEYQ7JN1/p\nlVb+71bWRc8F5Hq1BNLZd2MpaKUUnqrtb+YOyvc6GKi8tsQEekaUgCDMIfm6+73SKtunVbC5/8Bw\nZzHRNEW0wd0z3RKoXTfv2uolNbURsQR6R5SAIMwhyRAsgWnrBDoVkJsBd1CzAnKN7p5pMQNVrySy\nsYklMLuIEhCEOSQZgiUwfZ1AfdmGTse3IhPG3YQrsgJy1jYX4s0tgeYxgZlotCO0RpSAIMwhQ3EH\ntSobMYTaQb7XXdA6G4u1rS2BVgXmoKZohmUJiDuoe0QJCMIcMgx30LTAcIt1AtXFZV1bAknXCqqT\nO6dpqWk/rwRUVVEMVE9Jqoj2jCgBQZhDZtQSGEJguFtB3NydUx/4nRYzaGKp5JVIMIglIOsEuqaf\npjLPBjYACa4+0KnGGCtNZQShdxJrKfj9zcV67TGcd7l0NbYeFFSzFM+6xWAqbwk0r22UxQ2GUTtI\nLIHu6fjXlzaVuRgopZsuwNUGejmggPW5pjKHA8cB52mti9Sayrwc+CquqYwgCClx3L3LpZFWro+s\ngFzjdfMul67G1o8l0CIwXFdgrpWlkiqKQQLDSmICPdPNFCRrKpN9IocYY7JqoFfjKokeStpUxhiz\nNT0naypzTXrsNemxgiCkDLJYLMv+meYOalOULu+bH+bYOpV9yN+3XQprKyXSLWIJ9E4/TWXyn0y+\neYw0lRGEHkms7atuPnSxYriJEHX5+t3VDkoS27VfvlnZh/w6gLwF0i5mkVciffUYlgJyPdOPMzL/\nFzTO9OYxIE1lBKErBrIEWtQOaudOmSl3kJcbS9LEEunaEkgSYjt4PSWxBLqnHyVwm9b6yPR11ihG\nmsoIQh8Mslis1aw3alOUrhd3kEtf7U5EeE0sgXwKaLOyEo3PnRWhG8oqalECXdOLEsje1fcB52it\nf47LLrrMGPMokDWV+TFpUxngi8Dz06Yy7wDOGdrIBWERMIwU0WbuoFZC1OvREuh2bPl01WbunLoe\nxB3cQXFip1VA7Zbsua2kiHZNP01l7gGOanKMNJURhB5IrMXa/gKgUJtpN2s030p4+z1YAr0ogTpL\noEl2UrOyEa1SRJNkgDiJUigllkAvyGIxQZgjBkmFhPbrBFopll6UQC9umXxHr7jJimVfqVTpNV9M\nlh/bIHGS7DoSE+geUQKCMEfUAqT9fQ1btVJsF2fwPG9G3EH5jl6tUkSz/W0tATuYiyy7jlgC3SNK\nQBDmiEE6aEHrFNFoSO6gniyBDrWDuqkSWnMHJWIJzCKiBARhjhhkURS0rh3UTojm20C2w1pLYrtf\nJ+B1EPJNC8w16XyWBZYHsgRyXcyEzogSEIQ5YpBqmVBbMdwsO6ilJeB3Zwn0qqCa9whu0jkssU3X\nEWT3ys4XS2D2ECUgCHPEwO6gFjGBdkK0W3dQrwqqm1LSjfsb00Cz4LHEBGYXUQKCMEcMUh4B6ou2\n5WknRLtdJ9CqMU3HsbRwBzXb36r9ZTRAUb3sXmIJdI8oAUGYI6qF3gZcGJXl5We0dQflUjXbjm0m\nLYE4QdE8JgBQCQcLDIsl0BuiBARhjhh0nUC7pjLtVgzDdOuh5di67HWQL2vdbKaf3x/b5uPLK4rB\n3EHdp8EKXa4YbobW+lZqlUPvB86jy2YzA41YEBYJg2YHeZ5C0XtgGFwz+nbyvdd4RVOffzNLwLbO\n/ml2fD94smK4J/pSAlrrEQBjzNG5bd/F1Qy6Xmv9RVyzmV/gms2sA0aBn2mtf2iMqQw+dEFY2FTL\nK/QZE4DU9dE0JtBcwrdaYNZIr/GKfHyiqSXQkD3UzhLIj7MfJCbQG/1aAgcCY1rrH6TXOIvpzWaO\nBWLSZjNAqLXOms3cMtiwBWHh06ohfC80Cjxr26dYdusOateYpt11W/UIbmw6M6OWQBPFKLSm35jA\nDuB8Y8xxwDuBf2vY36nZjCAseQZNEYVU4MV5JUDba7aKI0wbW2aldBm0ri8lPb2HcGOp6Y6WgGQH\nzRr9KgFDKvjTqqJbgNW5/e2azTzZ5z0FYVEx6GIxSPP+c7PeTnGGVqUmBh1b01LSTYR6W0sgX3q6\ny4B0M3oply30rwROAj4NoLXeGyfcr+2h2YwgLHkGzQ7Kzs0LvE7XzGIFeeuhGb2uE2jaVKaNJdCq\n/3H19SAxgbRhvfQU6I5+YwKXAP+itc5iACfhrIGLtdZF4C5csxmrtc6azXi4wLEEhQWBwbODsnPz\nrp3MFdPRHdQpRbTHeEVVuSStm8pk++PEEjRxMzVbXNYPtcYyMIAuWTL0pQSMMRFwYpNdRzU5dlqz\nGUEQZsYSGJY7KLMUuo4JNKwDyMbWbH+SWLyC33Js7cbfDflMJQ/RAp2QxWKCMEc0K7TWK42WQGd3\nUJeB4R4VVNcxgTa1gYYVGPZyVonQGVECgjBHDMcd5DW4g9pfs1Vf4kZ6XSfQdVOZzBJoct1hpYh2\n+4yCQ5SAIMwRw3AHBT0Ghmv5+knT/Rm9rhPIWwJRKuRVXUygNjuPbReB4SHEBMQS6A5RAoIwR8xM\nYHhI7qBqTKA7ETFtpt9w/077G8c8jMCwWALdIUpAEOaIYVgCjTnxNcXS/Kvd8zqBHstGZNk/jc/U\nWEq6WcC5WTZRP3Sr6ASHKAFBmCNatVnsBdckpubaqSqWFtfs1l/ebwG5TpZAlCROScxgTCCfiSR0\nRpSAIMwRrdos9kIrd1CnwHDHAnI9rxNomOm3sASiqPV1h1k2AjqvhRAcogQEYY4YNCawY8cO/rD5\nYayFW+68ue6azdwtcRxz4x0bAbjqZ1e2XVHbadFZI/lWl83cQdn+MG593Xyq7DACw2IJdIcoAUGY\nIwaJCYRhyFvOfyMPxw8A8PbL/zu/+vUv217zg186neu2/wCAb/zxUj751fMpV+KW/3oZW32p6Omd\nwbL9YTS9uFxGfpPEBGaPvpvKdIvW2gMuwpWQLgPvMMbcN9P3FYT5TjuB2Im7zV1sDG7gMHUUAAeW\n/heX33gV/+2otQAUmmT1/OKxn5OsehbEcFDyXswm+B8X/LTtfXqtIholCZPlmNGS33T/ZDly1+3o\nDhpgAZ3EBHpixpUA8FqgaIw5XGv9YlzhudfOwn0FYV5SLpf59P/5JA9uOQDYg2fsvqzna6waX8VY\nuIwHV3yfgl3GLvFzqZTXcqt5DIDnrd1l2jnjwUoeDG5kvLCGwC5jz3gfDnrWIS3vMVL0ef7aXbsa\nz+XX/V9gDdfffjfWruTAZ+9Wtz8T+lfe+B/ASvabGKvbb61l4+3XA3sB8My9VtAvm7dsAuAPj/yR\nfSd039dZCDz48APcdMeNHPaCl/R9jdlQAkcA1wAYY27SWr9oFu4pCPOWv7ngJH4yegt/Fn2JJ+3d\n/PvNj/Dm4/+qp2vst+8aTl77Ti5+8EvcVDyH47x/pZLsz8Y7H2HX8RL7P2N6244zjvsg7//u6fzG\n+zLaHsDpJ3yR/3LACwd+nm9c/XU+e//5vIzPY62774sO2L3umJ/ffgOwC3G8EkvC5Td8gvUvq5UU\n++glZ/P9J+7h+ZwMwLeu+ydeuP+5PY/lwm9+hisf+B1rvFdz+rdP4/z4LP704CP6f7h5zPd+8h0+\n+NPT2bzLo+zxq4m+rzMbSmAc11cgI9Zae8aYpksWP/XN22ZhSIIwNyRxwtb4cP60vB6AB0ev4cf3\n7NazEgA466SzeevvTuLJrU/yq4cK3HDHIwAc9tzVTdNOX37o0fz7Czby+OOPsXr1nhQKhcEeJuXm\nB3/B1PLtsN39XrZPsao4VXfMnZtuAo4H4HH/Du7dfh07d+5kbMxZBD9/9Gf4Y8+EMjzt3c8fNv+s\n53FYa/n6nRsY2e0IqMAzSm/h4ms38YPbbnarlxdZLbn7Nu1Aj/49+5enuH23z/V9ndlQAo2NZVoq\nAIC7HpSeM8LiZlXwJ4R2Bw8WruaPwUaWqxP6vta+++7HvuzHmjVllo8V2bq9wjEv2qfl8SMjI+yz\nz759368Zey7bk/JTT3HHyEXsFv0Xou33s8fux9cdsyKY5OrRD7M6PozfFX7Mbk+toFQqVfcv91Zw\nZ/H7BHaU+4pX8JJtrd1U7UhUwpbg1+wTHk2BMawt8djTk3SokrEg8diV5clKIjVJYMc6n9CC2VAC\nG4HXAJdqrV8C3NHu4H/++6NmYUiCMHdc+qNv8skbzuXxwmZetHUdHzj1rIGvuXJ5iTcc9ewhjK53\n/u4v388Dn32Am568kSn/D5z+ig9UZ/gZ73/jWfz28ydyu/81dg/34O9e/mF8vxY8PuPPP8j7Ln0P\n9wb/h2fFz+bv/+uZPY9DKcX6Z/1X/veWz/OjFW9njy178Jk/+zzHHnFk55MXIP98+UV8/LcfZef4\nDka39q8EZtxA0loratlBACcZY0yr4zdv3iohfWHRs337Np588kn22mtvgmA25mIzT5IkLctVAERR\nxKZNf2SXXXZh+fLpgd9yucyjjz7CxMRqRkZG+h7Hd6/7Nvc/ch9HHXQ0B/1JfxbFQuHajdfwH/ff\nyoHPPIgTX//mvuT5vPOSiRIQBEHonYmJ8b7kuSwWEwRBWMKIEhAEQVjCiBIQBEFYwogSEARBWMKI\nEhAEQVjCiBIQBEFYwogSEARBWMKIEhAEQVjCiBIQBEFYwvS8Xj0tA/F7ICv98HNjzFlpXaB/AiLg\nWmPMP6bHnw28Kt1+mjHml0MZuSAIgjAw/RQt2R/4lTHmLxq2fxF4vTHmAa31VVrrg3CWxsuNMS/W\nWu8LfAs4bLAhC4IgCMOiHyWwDniG1vo6YBJ4L/AIUDLGPJAe8wPgGFw7yWsBjDG/01oHWuvdjDFb\nBh+6IAiCMChtlYDW+u3AaQ2b3wV83BjzLa31EcDXgddR3zhmG/AsYArY0rB9ZcM2QRAEYY5oqwSM\nMZcAl+S3aa1Hcf59jDEbtdZ744R7vjbsOPAUUGnYviLd3pJ+K+EJgiAIvdNPdtBHSK0DrfWBwMPG\nmK1ARWv9rDRwfCxwPa6hzHFaa6W13g/XVeyJIY1dEARBGJB+YgKfAL6utc4yft6Wbn8n8G+AD/wg\nywLSWt8A3IhTOO8adMCCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiC\nIAiCIAiCIAiCIAiCIAiCIAiCsOToq3a/1toHLgY0YHEVRIvAldR6D19kjLlUa30ycAqu4ui5xpir\nBh61IAiCMBT6VQLrgdcYY96htT4S12Lye8BKY8wFueP2xLWXXAeMAj8DXmSMqQw8ckEQBGFg+ukn\ngDHmO1rrK9Nf1+K6ha0DDkgVxD24xjOHARuNMSEQaq3vBV4I3DLowAVBEITB6aezGADGmFhrvQH4\nLK6ZzM3A6caYI4H7gbNx7SSfzp2W9RgWBEEQ5gF9WQIZxpi3aa1XAzcBhxtj/pjuugL4HK7FZGOP\n4SfbXXPz5q12kDEJgiAsRfrtz96XJaC1PlFr/cH010kgAS7XWh+abjsG5/K5GXiZ1rqktV4JPA/4\ndT/3FARBEIZPv5bAZcAGrfVPgQLwHuBh4Ata6xDYBJxijNmutb4QuAGncM6UoLAgCML8oS/zYSYR\nd5AgCELvzKo7SBAEQVgciBIQBEFYwogSEARBWMKIEhAEQVjCiBIQBEFYwogSEARBWML0tU6gRRXR\nMrABt3Ds18CpxhgrVUQFQRDmL/1aAq8GEmPMS4EPAR8HPo1bDPZy3PqD9WkV0XcDhwPHAedprYuD\nD1sQBEEYBn0pAWPMd4C/SX9di6sHtM4Yc3267Wpc6YhDSauIGmO2AlkVUUEQBGEeMMwqovnValm1\n0HGkiqggCMK8ZaDAsDHmbcABwJeBkdyucVyPga30WEVUEARBmD2GVUU0Bm5Ju4wBvBJXRlqqiAqC\nIMxjhllF9DfAxWng9y7gsjQ7SKqICoIgzFOkiqggCMIiQKqICoIgCD0jSkAQBGEJI0pAEARhCSNK\nQBAEYQkjSkAQBGEJI0pAEARhCSNKQBAEYQnTbynpAvAVYA1QAs4Ffg9cCZj0sIuMMZdKKWlBEIT5\nS78rhk8AHjPGnKi13gW4HTgH+LQx5oLsoFwp6XXAKPAzrfUPZdWwIAjC/KBfJXAprnQEOJdSiBP0\nB2it1wP3AKcBh5GWkgZCrXVWSvqWgUYtCIIgDIV++wnsMMZs11qvwCmEs3DF4k43xhwJ3A+cjasa\nKqWkBUEQ5il9B4a11vsC1wFfNcZ8E7jCGHNbuvsK4GCklLQgCMK8pt9S0quBa4EzjDEb0s3XaK0P\nTV8fg3P5SClpQRCEeUxfVee01p8F3gD8Nrf5A7g+wyGwCTgldRm9A5cd5AEfM8Zc0e7aUkVUEASh\nd/qtIiqlpAVBEBYBUkpaEARB6BlRAoIgCEsYUQKCIAhLGFECgiAISxhRAoIgCEsYUQKCIAhLmGFW\nEb0b2AAkuAVhpxpjrFQRFQRBmL/0awlkVURfDhwPfAG3UOzMdJsC1ueqiB4OHAecp7UuDj5sQRAE\nYRgMs4roIcaY69NtVwPHAjFSRVQQBGHe0pcSMMbsAMhVEf0Q8KncIVm10HGkiqggCMK8ZVhVRL+B\niwVkjANPIVVEBUEQ5jXDrCJ6m9b6yPT1K4HrkSqigiAI85phVhF9D3AhUATuAk5Os4OkiqggCMIM\nI1VEBUHcXCEQAAAZmklEQVQQljBSRVQQBEHoGVECgiAISxhRAoIgCEsYUQKCIAhLGFECgiAIS5h+\ny0YIgtAHoxPjjFFLy3sM+MHND3H82l3mcFTCUkaUgCDMIP7EOCupmdyNOXy7AJITLcwlAykBrfWL\ngU8YY47WWh8MfA+4J919kTHmUiklLSwpJsbZlXo/ayb4be6fyv3zvXm3XEdYQvStBLTWZwBvAban\nm9YBFxhjLsgdk5WSXgeMAj/TWv/QGFPpf8iCMI+YGGcXnNDPRHle6Gc/E6AMUHYltkZLNTUhKkCY\nSwaxBO4FXg98Lf19HaC11utx1sBpwGFIKWlhMTExzirAZ7rQh9pMv1HoN5K3BjwlakCYO/rODjLG\nXI5z8WTcBJxujDkSuB84G1c1VEpJCwuXiXHGJ8bZbWKc3SfG2R0oUD/zt7jGGTuByXLCZDmhXE5a\nKoBGPOWx5nWfmInRC0JHhhkYvsIYkwn8K4DP4SqJSilpYUGxfGKcEu1n+haoAEmXgr4dnlJQHBn4\nOoLQD8NcJ3CN1vrQ9PUxOJePlJIW5j2liXF2zWb6E+OMMn2mn+CE/iRutj9VToaiAEjvY4NR1rzm\nH4dyPUHohWFYAln8653AF7TWIbAJOMUYs11rfSFwA+57daYEhYU5p8sMnhjXN7Vbt04/KMBXCoqj\n7p8gzDLzLiIlpaSFoZNm8Pi5Ta0yeCowo0I/Y6Tk4aX3/N7tm3jz2d+Dpx/D276ZB6/66IzfX1h8\n9FtKWhaLCYuPPtM25wrfU/iFAnGhhC2INSDMLqIEhIXPkNI2Z5O8uatQBMWAeGQZtjLJ2j//MIBY\nBMKsIEpAWJCMT4xToHMGzxTMC6HfDs9TBEFApVDEFkawgWQKCbOHKAFhQbBsYpwROgv9EIjnudBv\nxFcQFAMKxQKV0jJsOAXA2lefzYNXnjPHoxMWO6IEhHlJcWKc5TQvvJYX+lH6bz7P9jstCFYogkJA\nUAioFItQcJaAxAeE2UCUgDA/6DJtczYzeFoxjCoPWUwgSxEtFAtEpYhiWKQSLXfHxCFr/uKjPPTd\nDw9+Q0FowTCriD4b2ID7nv4aONUYY6WKqNCULjN4YmZf6M92KR+loFDwCVNrICqWAEiKo9hwirWv\n+hAPfv/c2R2UsGQYZhXRC3CLwa7XWn8RWK+1/gVSRVSAthk8s5m2OV9qteWzgzylKBZ9wrBAPBIT\nxzEA5XgFJDHWxnMzSGFJMEjZiKyKaPa1OsQYc336+mpc6YhDSauIGmO2pue8cIB7CguFiXFWdll4\nLSvF0GvhtVYo1frffCGvBHylCAKPQsEnKLgAcaFYICgGUBzDFpex5rUfn7OxCoubYVYRzX/Fsmqh\n40gV0SXDigahX6R5DZ5hCv35LOjbUb9OwLmDCgWvTgkUigVUqQSlZU4RSG0hYQYYZmA4/00eB54C\ntiJVRBctjf1y26ZtQl/CfqEI9V5pdAeVSj5xHBDHliRx71OSJFhrKVN7L9es/xgPfeesORixsFgZ\nZhXR27TWR6avX4krIy1VRBcRfkO1zSyFs3GmH1JfbTPuYrY/3903w6bOEkgDw8Vi9i+gWKxZBMVS\nEUaWwchybGk5a9Z/bM7GLSw+hllF9H3AxVrrInAXcFmaHSRVRBcqM5S2uZiFez8opSgVfJLEEscW\nm36jsp9KKVBQ8RTW87F+gf1e90m8cCeALCgTBmLefR2liugc0kXaJnSfwSPCvg1Fj1Hc+/qr+5/i\noz8y7ChHTE6GTE66UNvUVES5HFGeqlCZqlApu592ahLKO9w/gPJOKI2hKjt56HsfmbNHEuYWqSIq\n9M4QC6+JwO+fzBKIk5oVkG13bjGF53l4vofv+1QCn6hQW1lMcQxKY9jyTllcJvSMKIGlxMQ449Cx\n8FonoS8Cf7h4CkpB6g5KLEnRfS2tBWvrDWOnGJxSCH3XIcH6BbyREZKggLUJ+73ukygsD13xgVl/\nFmHhIUpgkTNov1wR+DNEJcEWXbRFKUWp6JNgSWzacxj33nuewvMUvu8RBB7lwMcPfFdwrlIAICoV\nKZQKhJUCZb/g3EPM31pKwvxClMAiozQxzjL6K7wmAn9uUEAp8LDWr3MHJblfMgtAKfB9ZwX4qSXg\nBz6FUgE/cL/HhQBRAkK3iBJY6AzQL1eE/vxAKVhW9Ot+B9dxLPA99y/wKBTcvzBMCIs+Yei+vlGU\nUCoFhGGMH/jEYYy1lv3e9DmIQ3exOIQ4QiUhxDG2tAziEJXEqKTCg1fLiuSliiiBhUYX/XITpqdt\nplmGwjzEU4pioEhs/bIdDzfz95Q7puYWigkCpxigpgSCwMPzFGGqBLauWl1TApFTAjYOIYlhZHn1\ndxtH7PffLnDHJXGqHCJIEpSNZqx4XRbvWPvqc8DzwPPBD8BarPJd4DvTiMpL/4jT41KlRhKnfjO/\n/jjPh51Pu/02QdkYktg9F0hBvhzzTi5IimgDA6Rtykx/fjOSxgTu+v02rrj7EaaihKkwYTJ0n2E5\nSqiEMZUoSf+512GUEEUJUeQKy4VhwshIQKUSUy7HRFGMtbD5j09Ui9HZxBLHMTZxK5KLI0WSOKlt\nT48jiZ3CSOLqPzX5tHNT2dZ/WzazRQsjkAraavZSXjB7vot4B0W3HcB325XnAt5JkuB5Hn7guzUS\nAMo9QxIn1f3KU1U3WfalqLnNFJWpCkmSkMSJUxqJraXVJunzxiFEFZjajrKp0rvmvME+2Dli3qSI\naq1vpVYv6H7gPJqUmB72fRcNE+OsxH0w3Wbw5L4nwgLEU4rlRY/AUwRKEXjukywGHmXfoxI7wV+J\nPMIoIYydUogT9/UNo4SxUkA5iqlUYqIoLTdRHidJ3FctE57WWmxiq0ogSdLt2XHp6/zPsLK65dhV\nNYidZi35XnWGHxSCacI6O97zXcprdq7nedVAeBg6ZaU8VR1XpiA8T1WPy6fQ1sbjfloLlUpMpRzW\nynDECXGqOMtT5brnjGOnOG15J/u99ZLaRXLKMLOSiENUXOGhK/+h/w99HjFUJaC1HgEwxhyd2/Zd\nGkpMA98e5n0XOv30yxX3zuJBKRgpeECCUl4uJmBd68lYUfEUga8I/YQosRSjhCh2fwtRwTJa9ClG\nHpXAJ4wTEmsZH49rSiATeNa9HhkJ0m21f9lx1tr0p1MKmeBUDdP//Cw9E/B+TgkUCj5B4FWFteep\natprlu2UPb/nqbRukmVyMsT3PYpFHy9ViL7fKPxVnTVSW13tnkEpRbkcEccjxHHC5GRYfSaAsXis\nqgDCSoitPvfyOoWYWRJVBTK5Lb2fZb8Tv5zePEnzedOfcb0lBbiFfN+fnwUAh20JHAiMaa1/kF77\nLKaXmD6WJa4ExibGGaW7wmtJJWeCz9YAhVnFU4rRwHMlpeOEQir4KrFlJPAoxwlR7FGOLWFsiWKn\nCOJUCcSJZbQYEKYWQxjX/mZqJShqgt1ay2gpIK4T9rbhuNqxeQHrftZSWPMCORPQmRIoFnyKqRLw\n0mOj3JizVNg4sS7ryVP4niKKLYGvKPheVQl4LWb9cezODTyvboxTYcyOqcitu7Dp+ovEUqk4V1X2\n3Jniyf7FcVJ9X6MooTwVVp/HvRe7QvV9SbenCjazrMJySBRGTilEUXpM5CyMOIJwarqFkbravLjc\nfbwi5yre0t0ZTRm2EtgBnG+MuURr/Rzgmob921mCpaR77ZerKpLet5RQCoq+h6csvgeBl86kU6Ff\niBVhbCkmCWFsiROPMF1YBqkSKHhEiUclskSZ+8PaeiWQW3w2WgqwqXC0luq1rLXu7zE9PsPLCeDq\n5EU5oa1ygevsGgAF32Ok6KPSAHeUWHaWI8IooRB4FFJ3UHYN31MoFLG1ruVm4OE1zHw8BVHifha8\nmjWQxVGycY0DO0cirLVMhfG058wrhkypRpGzGPLvGStH6pRhTWEkxHHtPZuaCokj58YqjZZq7rf0\nfmElnOZqwyZQmYKwXA3gJ9ay3xv+ye3LKQeshZ9/nK00X+G/W9u/sPYMWwkYXOMYjDH3aK23AAfn\n9q/AlZhe3PRQeC0EkNn+ksZZAj5RYgkSRSFVAlHgBFWU2Abh7wRqTXDDaNEjTqxTAqnAGinUcsiS\nvGDDpaRmSiLJbU8sdcrCWgh8J+yrk5hM6Kvaa99z2UyRrY3LU4qCpwjTmb6nIIzdAreCryjkZu9Z\nBpRS7p4qFfJhei3fc9fKlMJUlLlF678xHhAmFt9T7CgHWEt1TGFsSeU2YWypRDGT5ZiEeqsnyT17\n3pKI4oQksUxV4moGFjhrYvnyUtWSCMN4mpstjl08Jgoj4ijOKYnl1ViNu2n9KvHN33hrR1fxoDJj\n2ErgJFznsFO11nvjhP61WusjjTE/xZWY/vGQ7zn39NAvt1HoC0sbBajVYxTvfBRPJXhKVS2B2DoB\nFCWWOFUIsXVKwAknd404sSwrecQJVKKEKN0+WqhNQxqqTzCaZibVLITaviSnEMDFKzyoCmDVoAA8\n5bqjhYllRyVmKrTpeYrRglc9BpzyAqcE/CxIrKjez/cUldQlVvT9OktgKordvYGVIzXRFdtqblL6\n/ik8pdhWiYht5kKzlGPLtnKcez98kmWZ4E/fU5yCADfrj5KExMLOckQljEksjBRdnaeqVZFYyg2C\n3wXnIQyzDK7YuZ5KhYa4i60T+ndf+BeM0P0K/2LJq0si6YdhK4FLgH/RWmcxgJNw7qq6EtNDvufs\n00O/3AqI0Bfa4oGzBKwizvnnMyWQ/2lxQrputp6eH6cKozarn56El82cS75X+1vNHZe9yruCRgMf\nRU4J5Nw77p5J9bqrRoLquQVPUfI9VIOIstjqNcBdx1fOMsiuGyYJQeoeIr33ymKhzl3keQo/U0TV\n41L3FIotfpnJOK66uBrfM2trSjVMLQVrLdvS5ItynFQtiBUjQWoN1NxL+c8pip3Qr6bxplZDLdZS\nH3TPuPr9R/bkKm6s5zUMyTLvvA/zcp1AF2mbIEJf6I2RohNdjwHGPFEn7KHm04/zPzPXRW6VSGJh\nxPex1BRGJjzz3pK8QC36Xv3sPzeuOqVgYazg/PqZUomsi000Boo9amOFepdPdi2lcAJeefhZ0Dcd\nVzmJ8VAkOCGvqFkLkU2tJKVqgj6XIZR3C0WxU0o7KlHN1UPtPcze2yjJXGeWnVFMOUpIsFVLILO4\nwsQyWUmmuZWy92kqdCm7UZxUg+2Zkqi67NL39Z9POYzdae0qzn42W+HflJLHWHqO16c8lxXDLVgx\nMU6RzmZZGUToCwNRAgJP4VtVnelDOnvE5nz3te15JQBQ8v2qPzvB4qHqhKSXm3nn3TON5FzTgBPY\nRc9LhWdqReDVSY5Gv3w2/iBL56SWAeQpVfVjZwIyO73gB9XrWWvTgHGmuPy6LCOVOy9qUEilwEsz\nhlRdkDtJagrWWtgZRZTjBItN4zI1JQrO/ZTFYMYKHmHs3EVTYcJUlBDFteeMcy6iLAhtsZz2xheg\nae8qbrbCvxcGnTWLEkgZTdM2O5llIemsSQS/MCQC3MIwJzimz8SbuW0aKaTunfwxge/VBE+D8MyE\na+M1GwVZ4Lk0z26wZMHfmnAM/PwMvZZ55DdoocxKyKeC+l69sspSSqPEVrd7SqGKtWOyZ3TvSVJV\noJXIZQAFuXhH4BWcRWAtldjN9JPEEqUZOc66gkocuwV7qRIZCRRx4tdiAun7Zi3s/4pn81q6cxV3\n05ipI+UESoN1CV6ySsBPXTydhH5M6osToS/MEB5UhaKTUenr3DE2NxNvTNUEqsI2k+lKOcWgGoRo\nw6S9TuiTjsNTiiyxyOLcOq1IrBtHNnv2vdq5nqfq/N/FoHadTGFkz9MsOyjIaYAosdXjstRRlT6o\nanivsmsl1hLFzoIqBB6BrQXTk8QSxgnWKnxrKXheNfBeSRd4hbGLTSjfJ0itoWpqqXVWAYet4QR6\nW+E/31g6SmCAtE1BmEkU1M22Gyf8jYK75iKpbWucWSulKOby7BU1N0uSzowBPF8R5KoRNloG1tau\nnQl6pZRz75AuEEuPzRapZZfwPYXys3Pr1xr4iuq6gqqbJ309FbosoCBnCZTycYCGN89Tqi5Im+0v\nBh6B754pzBaFZZZAujAtE+pxal34thaHKHppdpZN6mIzf/aC1V25ivMr/Oczi1cJdJm2KcFcYa5R\nONdNq31Qv1q30aWTCePG80YKteBvllGklMuoKRWyFNEGn3Jd9oz76SuIbS2A66vsP7eqOTs/cz9l\nv2fjyoR/o2snbwlkwVyl3PoGT1EXE6iemioLT6m6IHRVodiaYooSi7KQJFD0IVK1K0WxJcKtxcre\n+sx6qFll7j174XN273qFfwxzIvj7iginLB4l0EO/XBH6wnxCAUW/KhHrtqvcDDn/OnN5sKLgrNsd\ntXIIcTq7tbnL+UrVlx9XtRo/tvqfUxaZUM4cUJlQrMR16gKsrY47bpjpQy0mkAltpahm13h5S4B0\nYVv6TNbapkojsZZkxKWrMhm7DCKvZuFU37UR96TFbaGbySuX6eNDndsrW6RmrcL3agvF9t3PtWHt\nxlXcVQbPPGfGlYDW2gMuwi0iKwPvMMbcN/CFe+iXK0JfmM8oXLewvNCHesHvpS+85QVWUG/hAjy9\nLCDeFlYFd+CpOp96Iy5LR6XppLVFXF461S74HknqRlGpfA1yM2TnEqqNN8hl7mTkA8NRXJ866qWx\nB4DCqF/XAjUE4opbpGVLHkWYtiDKjvqUK85NQ8mj0OSY4ooCT22t1N6/XA5lYp3VoJRiZPUYe9Gd\nq7jfDJ75zGxYAq8FisaYw7XWLwY+nW7rmV765VoR+sICohSkzpZshr8sqBP2tbDw9L97hVuav81X\nruxA5rZpogSyoGt2nVo/Y/czHPUZp96iToAtqTAFUJ4ba2FlkeXUC18LPLEtrL6uBnn9+tGPjPhV\ny6RxlAWgUvRY1uJ5s21ZP4ZW70lAVo8oFfip0GeXEnvTnat4vgZz8+T/NvphNpTAEaSF5IwxN2mt\nX9Ttib30y41BZvvCgiL78iogWFFgGa3dmc1mppOkawwgLeugYMxnLP09BipZ6fGSV1eOIASickIl\nXWzUKruF9FqF8SJqZ8TIWNA2KKoAf0UBdkQu08hTqJJHidr3OP/cjTPtTDGMNtmffc+L1AvwRr98\nBIyRU3Ljha5dxQtB6A+b2VAC48DW3O+x1tozxjR9p3edGO+qX66kbQqLBQ9XWreVYIpxAiwEoqm4\n7typEb86Y14x6kRoXtAFaQ55s9l2oeTVBTzz982yW7L9qwDGgrZB0WL+2GX1oqWZQktwZYfVVFxd\nRDZWclaGn7tulBPK1aybVKlVBXfD+0IaO1iVjkOEfmtmQwlsxVmrGS0VANRmAplZlq2ma/pB5wuc\nCMICpXHGOwVEO6PmBzf+ze+M6oRzdo3suvlt+dl2q1l0ZbL+vvFoULUSGidik9n9s2PHgroZfJ7s\n3pbad3zHZC2Yna2GzlsDAFM7IxfVbWRnxI787w3vSytrowwkjXKkzSK8dmRutT5P7+t+ze416O1n\nQwlsBF4DXKq1fglwR7uD1fRJS40Rv+UuQVhUjM1R4t5oj/cdZJzd3Gsm3geRI3XMxl/aFcD/p7Xe\nmP5+0izcUxAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRCEQVYbD40Zqy80D9Ba3wo8nf56P3AesAGX\nEv1r4FRjzIJa8JCW//iEMeZorfWzafI8WuuTgVNw6/rONcZcNWcD7pGG5zsY+B5wT7r7ImPMpQvx\n+bTWBeArwBrcYuNzgbtZJJ9fi+f7PXAlYNLDFvLn5wMXAxq3POCdOHm5gQE+v8Fa0gyPan0h4AO4\n+kILHq31CIAx5uj039uBC4AzjTEvxynh9XM5xl7RWp+B+0MspZumPY/Wek/g3cDhwHHAeVrrYrPr\nzTeaPN864ILcZ3jpAn6+E4DH0s/qeOALuO/aYvn8mj3fIcCnF8nn92ogMca8FPgQ8HGG8PnNl1LS\nfdcXmuccCIxprX+Ae6/PAg4xxlyf7r8aOBb49hyNrx/uBV4PfC39vdnzxMBGY0wIhFrre3FW3i2z\nPdg+aHy+dYDWWq/HWQOnAYexMJ/vUuCy9LWHWyS8mD6/Zs+3DjhgMXx+xpjvaK2vTH9dCzwJHDPo\n5zdfLIGm9YXmajBDZAdwvjHmOJzp9m8N+7fjysYsGIwxl5OWbkrJuxS34Z5nnJoLLL993tPk+W4C\nTjfGHIlz552NK4Oy4J7PGLPDGLNda70CJzA/RL0MWNCfX5PnOwu4mUXy+QEYY2Kt9Qbgszh5MvD3\nb74I2p7qCy0gDKngN8bcA2wBVuf2rwCemoNxDZP85zSOe57Gz3MFbtayELnCGHNb9ho4mAX8fFrr\nfYHrgK8aY77BIvv8Gp7vmyyyzw/AGPM24ADgy8BIbldfn998UQIbgVcBdFNfaAFxEml8Q2u9N+7D\nuFZrfWS6/5XA9S3OXSjc1uR5bgZeprUuaa1XAs/DBa0WItdorQ9NXx+DM6kX5PNprVcD1wJnGGM2\npJsXzefX4vkW0+d3otb6g+mvkzi3zy2Dfn7zJSawWOsLXQL8i9Y6E/Qn4ayBi9NAzV3UfJgLjSyj\n6X00PE+anXAhcANuonGmMaYyR+Psl+z53gl8QWsdApuAU1KXw0J8vjNxboGPaK0/km57D3DhIvn8\nmj3facBnFsnndxmwQWv9U1w18PcAv2Fxfv8EQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAE\nQRAEQRAEQRCEXvh/zBp0t99wNkcAAAAASUVORK5CYII=\n", 465 | "text": [ 466 | "" 467 | ] 468 | } 469 | ], 470 | "prompt_number": 67 471 | }, 472 | { 473 | "cell_type": "markdown", 474 | "metadata": {}, 475 | "source": [ 476 | "So, this one is better, but anyone could do this even with plain eyes!!" 477 | ] 478 | } 479 | ], 480 | "metadata": {} 481 | } 482 | ] 483 | } --------------------------------------------------------------------------------