Show More
@@ -1,1443 +1,1443 b'' | |||
|
1 | 1 | { |
|
2 | 2 | "metadata": { |
|
3 | 3 | "name": "" |
|
4 | 4 | }, |
|
5 | 5 | "nbformat": 3, |
|
6 | 6 | "nbformat_minor": 0, |
|
7 | 7 | "worksheets": [ |
|
8 | 8 | { |
|
9 | 9 | "cells": [ |
|
10 | 10 | { |
|
11 | 11 | "cell_type": "heading", |
|
12 | 12 | "level": 1, |
|
13 | 13 | "metadata": {}, |
|
14 | 14 | "source": [ |
|
15 | 15 | "The cell magics in IPython" |
|
16 | 16 | ] |
|
17 | 17 | }, |
|
18 | 18 | { |
|
19 | 19 | "cell_type": "markdown", |
|
20 | 20 | "metadata": {}, |
|
21 | 21 | "source": [ |
|
22 | 22 | "IPython has a system of commands we call 'magics' that provide effectively a mini command language that is orthogonal to the syntax of Python and is extensible by the user with new commands. Magics are meant to be typed interactively, so they use command-line conventions, such as using whitespace for separating arguments, dashes for options and other conventions typical of a command-line environment.\n", |
|
23 | 23 | "\n", |
|
24 | 24 | "Magics come in two kinds:\n", |
|
25 | 25 | "\n", |
|
26 | 26 | "* Line magics: these are commands prepended by one `%` character and whose arguments only extend to the end of the current line.\n", |
|
27 | 27 | "* Cell magics: these use *two* percent characters as a marker (`%%`), and they receive as argument *both* the current line where they are declared and the whole body of the cell. Note that cell magics can *only* be used as the first line in a cell, and as a general principle they can't be 'stacked' (i.e. you can only use one cell magic per cell). A few of them, because of how they operate, can be stacked, but that is something you will discover on a case by case basis.\n", |
|
28 | 28 | "\n", |
|
29 | 29 | "The `%lsmagic` magic is used to list all available magics, and it will show both line and cell magics currently defined:" |
|
30 | 30 | ] |
|
31 | 31 | }, |
|
32 | 32 | { |
|
33 | 33 | "cell_type": "code", |
|
34 | 34 | "collapsed": false, |
|
35 | 35 | "input": [ |
|
36 | 36 | "%lsmagic" |
|
37 | 37 | ], |
|
38 | 38 | "language": "python", |
|
39 | 39 | "metadata": {}, |
|
40 | 40 | "outputs": [ |
|
41 | 41 | { |
|
42 | 42 | "json": [ |
|
43 | 43 | "{\"cell\": {\"prun\": \"ExecutionMagics\", \"file\": \"Other\", \"!\": \"OSMagics\", \"capture\": \"ExecutionMagics\", \"timeit\": \"ExecutionMagics\", \"script\": \"ScriptMagics\", \"ruby\": \"Other\", \"system\": \"OSMagics\", \"perl\": \"Other\", \"HTML\": \"Other\", \"bash\": \"Other\", \"python\": \"Other\", \"SVG\": \"Other\", \"javascript\": \"DisplayMagics\", \"writefile\": \"OSMagics\", \"pypy\": \"Other\", \"python3\": \"Other\", \"latex\": \"DisplayMagics\", \"sx\": \"OSMagics\", \"svg\": \"DisplayMagics\", \"html\": \"DisplayMagics\", \"sh\": \"Other\", \"time\": \"ExecutionMagics\", \"debug\": \"ExecutionMagics\"}, \"line\": {\"psource\": \"NamespaceMagics\", \"logstart\": \"LoggingMagics\", \"popd\": \"OSMagics\", \"loadpy\": \"CodeMagics\", \"install_ext\": \"ExtensionMagics\", \"colors\": \"BasicMagics\", \"who_ls\": \"NamespaceMagics\", \"install_profiles\": \"DeprecatedMagics\", \"pprint\": \"BasicMagics\", \"save\": \"CodeMagics\", \"tb\": \"ExecutionMagics\", \"pylab\": \"PylabMagics\", \"killbgscripts\": \"ScriptMagics\", \"quickref\": \"BasicMagics\", \"magic\": \"BasicMagics\", \"dhist\": \"OSMagics\", \"edit\": \"KernelMagics\", \"logstop\": \"LoggingMagics\", \"gui\": \"BasicMagics\", \"alias_magic\": \"BasicMagics\", \"debug\": \"ExecutionMagics\", \"page\": \"BasicMagics\", \"logstate\": \"LoggingMagics\", \"ed\": \"Other\", \"pushd\": \"OSMagics\", \"timeit\": \"ExecutionMagics\", \"rehashx\": \"OSMagics\", \"hist\": \"Other\", \"qtconsole\": \"KernelMagics\", \"dirs\": \"OSMagics\", \"run\": \"ExecutionMagics\", \"reset_selective\": \"NamespaceMagics\", \"pinfo2\": \"NamespaceMagics\", \"matplotlib\": \"PylabMagics\", \"automagic\": \"AutoMagics\", \"doctest_mode\": \"KernelMagics\", \"logoff\": \"LoggingMagics\", \"reload_ext\": \"ExtensionMagics\", \"pdb\": \"ExecutionMagics\", \"load\": \"CodeMagics\", \"lsmagic\": \"BasicMagics\", \"autosave\": \"KernelMagics\", \"cd\": \"OSMagics\", \"pastebin\": \"CodeMagics\", \"prun\": \"ExecutionMagics\", \"autocall\": \"AutoMagics\", \"bookmark\": \"OSMagics\", \"connect_info\": \"KernelMagics\", \"system\": \"OSMagics\", \"whos\": \"NamespaceMagics\", \"toc\": \"TimerMagics\", \"unload_ext\": \"ExtensionMagics\", \"store\": \"StoreMagics\", \"more\": \"KernelMagics\", \"gist\": \"Other\", \"pdef\": \"NamespaceMagics\", \"precision\": \"BasicMagics\", \"pinfo\": \"NamespaceMagics\", \"pwd\": \"OSMagics\", \"psearch\": \"NamespaceMagics\", \"reset\": \"NamespaceMagics\", \"recall\": \"HistoryMagics\", \"xdel\": \"NamespaceMagics\", \"xmode\": \"BasicMagics\", \"rerun\": \"HistoryMagics\", \"logon\": \"LoggingMagics\", \"history\": \"HistoryMagics\", \"pycat\": \"OSMagics\", \"unalias\": \"OSMagics\", \"install_default_config\": \"DeprecatedMagics\", \"env\": \"OSMagics\", \"load_ext\": \"ExtensionMagics\", \"config\": \"ConfigMagics\", \"tic\": \"TimerMagics\", \"profile\": \"BasicMagics\", \"pfile\": \"NamespaceMagics\", \"less\": \"KernelMagics\", \"who\": \"NamespaceMagics\", \"notebook\": \"BasicMagics\", \"man\": \"KernelMagics\", \"sx\": \"OSMagics\", \"macro\": \"ExecutionMagics\", \"clear\": \"KernelMagics\", \"alias\": \"OSMagics\", \"time\": \"ExecutionMagics\", \"sc\": \"OSMagics\", \"rep\": \"Other\", \"pdoc\": \"NamespaceMagics\"}}" |
|
44 | 44 | ], |
|
45 | 45 | "metadata": {}, |
|
46 | 46 | "output_type": "pyout", |
|
47 | 47 | "prompt_number": 1, |
|
48 | 48 | "text": [ |
|
49 | 49 | "Available line magics:\n", |
|
50 | 50 | "%alias %alias_magic %autocall %automagic %autosave %bookmark %cd %clear %colors %config %connect_info %debug %dhist %dirs %doctest_mode %ed %edit %env %gist %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %lsmagic %macro %magic %man %matplotlib %more %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %run %save %sc %store %sx %system %tb %tic %time %timeit %toc %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n", |
|
51 | 51 | "\n", |
|
52 | 52 | "Available cell magics:\n", |
|
53 | 53 | "%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%latex %%perl %%prun %%pypy %%python %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n", |
|
54 | 54 | "\n", |
|
55 | 55 | "Automagic is ON, % prefix IS NOT needed for line magics." |
|
56 | 56 | ] |
|
57 | 57 | } |
|
58 | 58 | ], |
|
59 | 59 | "prompt_number": 1 |
|
60 | 60 | }, |
|
61 | 61 | { |
|
62 | 62 | "cell_type": "markdown", |
|
63 | 63 | "metadata": {}, |
|
64 | 64 | "source": [ |
|
65 | 65 | "Since in the introductory section we already covered the most frequently used line magics, we will focus here on the cell magics, which offer a great amount of power.\n", |
|
66 | 66 | "\n", |
|
67 | 67 | "Let's load matplotlib and numpy so we can use numerics/plotting at will later on." |
|
68 | 68 | ] |
|
69 | 69 | }, |
|
70 | 70 | { |
|
71 | 71 | "cell_type": "code", |
|
72 | 72 | "collapsed": false, |
|
73 | 73 | "input": [ |
|
74 | 74 | "%matplotlib inline\n", |
|
75 | 75 | "import numpy as np\n", |
|
76 | 76 | "import matplotlib.pyplot as plt" |
|
77 | 77 | ], |
|
78 | 78 | "language": "python", |
|
79 | 79 | "metadata": {}, |
|
80 | 80 | "outputs": [], |
|
81 | 81 | "prompt_number": 2 |
|
82 | 82 | }, |
|
83 | 83 | { |
|
84 | 84 | "cell_type": "heading", |
|
85 | 85 | "level": 2, |
|
86 | 86 | "metadata": {}, |
|
87 | 87 | "source": [ |
|
88 | 88 | "<!--====-->\n", |
|
89 | 89 | "Some simple cell magics" |
|
90 | 90 | ] |
|
91 | 91 | }, |
|
92 | 92 | { |
|
93 | 93 | "cell_type": "markdown", |
|
94 | 94 | "metadata": {}, |
|
95 | 95 | "source": [ |
|
96 | 96 | "Timing the execution of code; the 'timeit' magic exists both in line and cell form:" |
|
97 | 97 | ] |
|
98 | 98 | }, |
|
99 | 99 | { |
|
100 | 100 | "cell_type": "code", |
|
101 | 101 | "collapsed": false, |
|
102 | 102 | "input": [ |
|
103 | 103 | "%timeit np.linalg.eigvals(np.random.rand(100,100))" |
|
104 | 104 | ], |
|
105 | 105 | "language": "python", |
|
106 | 106 | "metadata": {}, |
|
107 | 107 | "outputs": [ |
|
108 | 108 | { |
|
109 | 109 | "output_type": "stream", |
|
110 | 110 | "stream": "stdout", |
|
111 | 111 | "text": [ |
|
112 | 112 | "100 loops, best of 3: 6.05 ms per loop\n" |
|
113 | 113 | ] |
|
114 | 114 | } |
|
115 | 115 | ], |
|
116 | 116 | "prompt_number": 3 |
|
117 | 117 | }, |
|
118 | 118 | { |
|
119 | 119 | "cell_type": "code", |
|
120 | 120 | "collapsed": false, |
|
121 | 121 | "input": [ |
|
122 | 122 | "%%timeit a = np.random.rand(100, 100)\n", |
|
123 | 123 | "np.linalg.eigvals(a)" |
|
124 | 124 | ], |
|
125 | 125 | "language": "python", |
|
126 | 126 | "metadata": {}, |
|
127 | 127 | "outputs": [ |
|
128 | 128 | { |
|
129 | 129 | "output_type": "stream", |
|
130 | 130 | "stream": "stdout", |
|
131 | 131 | "text": [ |
|
132 | 132 | "100 loops, best of 3: 6.07 ms per loop\n" |
|
133 | 133 | ] |
|
134 | 134 | } |
|
135 | 135 | ], |
|
136 | 136 | "prompt_number": 4 |
|
137 | 137 | }, |
|
138 | 138 | { |
|
139 | 139 | "cell_type": "markdown", |
|
140 | 140 | "metadata": {}, |
|
141 | 141 | "source": [ |
|
142 | 142 | "The `%%capture` magic can be used to capture the stdout/err of any block of python code, either to discard it (if it's noise to you) or to store it in a variable for later use:" |
|
143 | 143 | ] |
|
144 | 144 | }, |
|
145 | 145 | { |
|
146 | 146 | "cell_type": "code", |
|
147 | 147 | "collapsed": false, |
|
148 | 148 | "input": [ |
|
149 | 149 | "%%capture capt\n", |
|
150 | 150 | "from __future__ import print_function\n", |
|
151 | 151 | "import sys\n", |
|
152 | 152 | "print('Hello stdout')\n", |
|
153 | 153 | "print('and stderr', file=sys.stderr)" |
|
154 | 154 | ], |
|
155 | 155 | "language": "python", |
|
156 | 156 | "metadata": {}, |
|
157 | 157 | "outputs": [], |
|
158 | 158 | "prompt_number": 5 |
|
159 | 159 | }, |
|
160 | 160 | { |
|
161 | 161 | "cell_type": "code", |
|
162 | 162 | "collapsed": false, |
|
163 | 163 | "input": [ |
|
164 | 164 | "capt.stdout, capt.stderr" |
|
165 | 165 | ], |
|
166 | 166 | "language": "python", |
|
167 | 167 | "metadata": {}, |
|
168 | 168 | "outputs": [ |
|
169 | 169 | { |
|
170 | 170 | "metadata": {}, |
|
171 | 171 | "output_type": "pyout", |
|
172 | 172 | "prompt_number": 6, |
|
173 | 173 | "text": [ |
|
174 | 174 | "('Hello stdout\\n', 'and stderr\\n')" |
|
175 | 175 | ] |
|
176 | 176 | } |
|
177 | 177 | ], |
|
178 | 178 | "prompt_number": 6 |
|
179 | 179 | }, |
|
180 | 180 | { |
|
181 | 181 | "cell_type": "code", |
|
182 | 182 | "collapsed": false, |
|
183 | 183 | "input": [ |
|
184 | 184 | "capt.show()" |
|
185 | 185 | ], |
|
186 | 186 | "language": "python", |
|
187 | 187 | "metadata": {}, |
|
188 | 188 | "outputs": [ |
|
189 | 189 | { |
|
190 | 190 | "output_type": "stream", |
|
191 | 191 | "stream": "stdout", |
|
192 | 192 | "text": [ |
|
193 | 193 | "Hello stdout\n" |
|
194 | 194 | ] |
|
195 | 195 | }, |
|
196 | 196 | { |
|
197 | 197 | "output_type": "stream", |
|
198 | 198 | "stream": "stderr", |
|
199 | 199 | "text": [ |
|
200 | 200 | "and stderr\n" |
|
201 | 201 | ] |
|
202 | 202 | } |
|
203 | 203 | ], |
|
204 | 204 | "prompt_number": 7 |
|
205 | 205 | }, |
|
206 | 206 | { |
|
207 | 207 | "cell_type": "markdown", |
|
208 | 208 | "metadata": {}, |
|
209 | 209 | "source": [ |
|
210 | 210 | "The `%%writefile` magic is a very useful tool that writes the cell contents as a named file:" |
|
211 | 211 | ] |
|
212 | 212 | }, |
|
213 | 213 | { |
|
214 | 214 | "cell_type": "code", |
|
215 | 215 | "collapsed": false, |
|
216 | 216 | "input": [ |
|
217 | 217 | "%%writefile foo.py\n", |
|
218 | 218 | "print('Hello world')" |
|
219 | 219 | ], |
|
220 | 220 | "language": "python", |
|
221 | 221 | "metadata": {}, |
|
222 | 222 | "outputs": [ |
|
223 | 223 | { |
|
224 | 224 | "output_type": "stream", |
|
225 | 225 | "stream": "stdout", |
|
226 | 226 | "text": [ |
|
227 | 227 | "Writing foo.py\n" |
|
228 | 228 | ] |
|
229 | 229 | } |
|
230 | 230 | ], |
|
231 | 231 | "prompt_number": 8 |
|
232 | 232 | }, |
|
233 | 233 | { |
|
234 | 234 | "cell_type": "code", |
|
235 | 235 | "collapsed": false, |
|
236 | 236 | "input": [ |
|
237 | 237 | "%run foo" |
|
238 | 238 | ], |
|
239 | 239 | "language": "python", |
|
240 | 240 | "metadata": {}, |
|
241 | 241 | "outputs": [ |
|
242 | 242 | { |
|
243 | 243 | "output_type": "stream", |
|
244 | 244 | "stream": "stdout", |
|
245 | 245 | "text": [ |
|
246 | 246 | "Hello world\n" |
|
247 | 247 | ] |
|
248 | 248 | } |
|
249 | 249 | ], |
|
250 | 250 | "prompt_number": 9 |
|
251 | 251 | }, |
|
252 | 252 | { |
|
253 | 253 | "cell_type": "heading", |
|
254 | 254 | "level": 2, |
|
255 | 255 | "metadata": {}, |
|
256 | 256 | "source": [ |
|
257 | 257 | "<!--====-->\n", |
|
258 | 258 | "Magics for running code under other interpreters" |
|
259 | 259 | ] |
|
260 | 260 | }, |
|
261 | 261 | { |
|
262 | 262 | "cell_type": "markdown", |
|
263 | 263 | "metadata": {}, |
|
264 | 264 | "source": [ |
|
265 | 265 | "IPython has a `%%script` cell magic, which lets you run a cell in\n", |
|
266 | 266 | "a subprocess of any interpreter on your system, such as: bash, ruby, perl, zsh, R, etc.\n", |
|
267 | 267 | "\n", |
|
268 | 268 | "It can even be a script of your own, which expects input on stdin." |
|
269 | 269 | ] |
|
270 | 270 | }, |
|
271 | 271 | { |
|
272 | 272 | "cell_type": "markdown", |
|
273 | 273 | "metadata": {}, |
|
274 | 274 | "source": [ |
|
275 | 275 | "To use it, simply pass a path or shell command to the program you want to run on the `%%script` line,\n", |
|
276 | 276 | "and the rest of the cell will be run by that script, and stdout/err from the subprocess are captured and displayed." |
|
277 | 277 | ] |
|
278 | 278 | }, |
|
279 | 279 | { |
|
280 | 280 | "cell_type": "code", |
|
281 | 281 | "collapsed": false, |
|
282 | 282 | "input": [ |
|
283 | 283 | "%%script python\n", |
|
284 | 284 | "import sys\n", |
|
285 | 285 | "print 'hello from Python %s' % sys.version" |
|
286 | 286 | ], |
|
287 | 287 | "language": "python", |
|
288 | 288 | "metadata": {}, |
|
289 | 289 | "outputs": [ |
|
290 | 290 | { |
|
291 | 291 | "output_type": "stream", |
|
292 | 292 | "stream": "stdout", |
|
293 | 293 | "text": [ |
|
294 | 294 | "hello from Python 2.7.2 (default, Oct 11 2012, 20:14:37) \n", |
|
295 | 295 | "[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]\n" |
|
296 | 296 | ] |
|
297 | 297 | } |
|
298 | 298 | ], |
|
299 | 299 | "prompt_number": 10 |
|
300 | 300 | }, |
|
301 | 301 | { |
|
302 | 302 | "cell_type": "code", |
|
303 | 303 | "collapsed": false, |
|
304 | 304 | "input": [ |
|
305 | 305 | "%%script python3\n", |
|
306 | 306 | "import sys\n", |
|
307 | 307 | "print('hello from Python: %s' % sys.version)" |
|
308 | 308 | ], |
|
309 | 309 | "language": "python", |
|
310 | 310 | "metadata": {}, |
|
311 | 311 | "outputs": [ |
|
312 | 312 | { |
|
313 | 313 | "output_type": "stream", |
|
314 | 314 | "stream": "stdout", |
|
315 | 315 | "text": [ |
|
316 | 316 | "hello from Python: 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 11:07:11) \n", |
|
317 | 317 | "[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]\n" |
|
318 | 318 | ] |
|
319 | 319 | } |
|
320 | 320 | ], |
|
321 | 321 | "prompt_number": 11 |
|
322 | 322 | }, |
|
323 | 323 | { |
|
324 | 324 | "cell_type": "markdown", |
|
325 | 325 | "metadata": {}, |
|
326 | 326 | "source": [ |
|
327 | 327 | "IPython also creates aliases for a few common interpreters, such as bash, ruby, perl, etc.\n", |
|
328 | 328 | "\n", |
|
329 | 329 | "These are all equivalent to `%%script <name>`" |
|
330 | 330 | ] |
|
331 | 331 | }, |
|
332 | 332 | { |
|
333 | 333 | "cell_type": "code", |
|
334 | 334 | "collapsed": false, |
|
335 | 335 | "input": [ |
|
336 | 336 | "%%ruby\n", |
|
337 | 337 | "puts \"Hello from Ruby #{RUBY_VERSION}\"" |
|
338 | 338 | ], |
|
339 | 339 | "language": "python", |
|
340 | 340 | "metadata": {}, |
|
341 | 341 | "outputs": [ |
|
342 | 342 | { |
|
343 | 343 | "output_type": "stream", |
|
344 | 344 | "stream": "stdout", |
|
345 | 345 | "text": [ |
|
346 | 346 | "Hello from Ruby 1.9.3\n" |
|
347 | 347 | ] |
|
348 | 348 | } |
|
349 | 349 | ], |
|
350 | 350 | "prompt_number": 12 |
|
351 | 351 | }, |
|
352 | 352 | { |
|
353 | 353 | "cell_type": "code", |
|
354 | 354 | "collapsed": false, |
|
355 | 355 | "input": [ |
|
356 | 356 | "%%bash\n", |
|
357 | 357 | "echo \"hello from $BASH\"" |
|
358 | 358 | ], |
|
359 | 359 | "language": "python", |
|
360 | 360 | "metadata": {}, |
|
361 | 361 | "outputs": [ |
|
362 | 362 | { |
|
363 | 363 | "output_type": "stream", |
|
364 | 364 | "stream": "stdout", |
|
365 | 365 | "text": [ |
|
366 | 366 | "hello from /usr/local/bin/bash\n" |
|
367 | 367 | ] |
|
368 | 368 | } |
|
369 | 369 | ], |
|
370 | 370 | "prompt_number": 13 |
|
371 | 371 | }, |
|
372 | 372 | { |
|
373 | 373 | "cell_type": "heading", |
|
374 | 374 | "level": 2, |
|
375 | 375 | "metadata": {}, |
|
376 | 376 | "source": [ |
|
377 | 377 | "Exercise: write your own script that numbers input lines" |
|
378 | 378 | ] |
|
379 | 379 | }, |
|
380 | 380 | { |
|
381 | 381 | "cell_type": "markdown", |
|
382 | 382 | "metadata": {}, |
|
383 | 383 | "source": [ |
|
384 | 384 | "Write a file, called `lnum.py`, such that the following cell works as shown (hint: don't forget about the executable bit!): " |
|
385 | 385 | ] |
|
386 | 386 | }, |
|
387 | 387 | { |
|
388 | 388 | "cell_type": "code", |
|
389 | 389 | "collapsed": false, |
|
390 | 390 | "input": [ |
|
391 | 391 | "%%script ./lnum.py\n", |
|
392 | 392 | "my first line\n", |
|
393 | 393 | "my second\n", |
|
394 | 394 | "more" |
|
395 | 395 | ], |
|
396 | 396 | "language": "python", |
|
397 | 397 | "metadata": {}, |
|
398 | 398 | "outputs": [ |
|
399 | 399 | { |
|
400 | 400 | "output_type": "stream", |
|
401 | 401 | "stream": "stdout", |
|
402 | 402 | "text": [ |
|
403 | 403 | "0: my first line\n", |
|
404 | 404 | "1: my second\n", |
|
405 | 405 | "2: more\n", |
|
406 | 406 | "---- END ----\n" |
|
407 | 407 | ] |
|
408 | 408 | } |
|
409 | 409 | ], |
|
410 | 410 | "prompt_number": 29 |
|
411 | 411 | }, |
|
412 | 412 | { |
|
413 | 413 | "cell_type": "heading", |
|
414 | 414 | "level": 2, |
|
415 | 415 | "metadata": {}, |
|
416 | 416 | "source": [ |
|
417 | 417 | "Capturing output" |
|
418 | 418 | ] |
|
419 | 419 | }, |
|
420 | 420 | { |
|
421 | 421 | "cell_type": "markdown", |
|
422 | 422 | "metadata": {}, |
|
423 | 423 | "source": [ |
|
424 | 424 | "You can also capture stdout/err from these subprocesses into Python variables, instead of letting them go directly to stdout/err" |
|
425 | 425 | ] |
|
426 | 426 | }, |
|
427 | 427 | { |
|
428 | 428 | "cell_type": "code", |
|
429 | 429 | "collapsed": false, |
|
430 | 430 | "input": [ |
|
431 | 431 | "%%bash\n", |
|
432 | 432 | "echo \"hi, stdout\"\n", |
|
433 | 433 | "echo \"hello, stderr\" >&2\n" |
|
434 | 434 | ], |
|
435 | 435 | "language": "python", |
|
436 | 436 | "metadata": {}, |
|
437 | 437 | "outputs": [ |
|
438 | 438 | { |
|
439 | 439 | "output_type": "stream", |
|
440 | 440 | "stream": "stdout", |
|
441 | 441 | "text": [ |
|
442 | 442 | "hi, stdout\n" |
|
443 | 443 | ] |
|
444 | 444 | }, |
|
445 | 445 | { |
|
446 | 446 | "output_type": "stream", |
|
447 | 447 | "stream": "stderr", |
|
448 | 448 | "text": [ |
|
449 | 449 | "hello, stderr\n" |
|
450 | 450 | ] |
|
451 | 451 | } |
|
452 | 452 | ], |
|
453 | 453 | "prompt_number": 30 |
|
454 | 454 | }, |
|
455 | 455 | { |
|
456 | 456 | "cell_type": "code", |
|
457 | 457 | "collapsed": false, |
|
458 | 458 | "input": [ |
|
459 | 459 | "%%bash --out output --err error\n", |
|
460 | 460 | "echo \"hi, stdout\"\n", |
|
461 | 461 | "echo \"hello, stderr\" >&2" |
|
462 | 462 | ], |
|
463 | 463 | "language": "python", |
|
464 | 464 | "metadata": {}, |
|
465 | 465 | "outputs": [], |
|
466 | 466 | "prompt_number": 31 |
|
467 | 467 | }, |
|
468 | 468 | { |
|
469 | 469 | "cell_type": "code", |
|
470 | 470 | "collapsed": false, |
|
471 | 471 | "input": [ |
|
472 | 472 | "print(error)\n", |
|
473 | 473 | "print(output)" |
|
474 | 474 | ], |
|
475 | 475 | "language": "python", |
|
476 | 476 | "metadata": {}, |
|
477 | 477 | "outputs": [ |
|
478 | 478 | { |
|
479 | 479 | "output_type": "stream", |
|
480 | 480 | "stream": "stdout", |
|
481 | 481 | "text": [ |
|
482 | 482 | "hello, stderr\n", |
|
483 | 483 | "\n", |
|
484 | 484 | "hi, stdout\n", |
|
485 | 485 | "\n" |
|
486 | 486 | ] |
|
487 | 487 | } |
|
488 | 488 | ], |
|
489 | 489 | "prompt_number": 32 |
|
490 | 490 | }, |
|
491 | 491 | { |
|
492 | 492 | "cell_type": "heading", |
|
493 | 493 | "level": 2, |
|
494 | 494 | "metadata": {}, |
|
495 | 495 | "source": [ |
|
496 | 496 | "Background Scripts" |
|
497 | 497 | ] |
|
498 | 498 | }, |
|
499 | 499 | { |
|
500 | 500 | "cell_type": "markdown", |
|
501 | 501 | "metadata": {}, |
|
502 | 502 | "source": [ |
|
503 | 503 | "These scripts can be run in the background, by adding the `--bg` flag.\n", |
|
504 | 504 | "\n", |
|
505 | 505 | "When you do this, output is discarded unless you use the `--out/err`\n", |
|
506 | 506 | "flags to store output as above." |
|
507 | 507 | ] |
|
508 | 508 | }, |
|
509 | 509 | { |
|
510 | 510 | "cell_type": "code", |
|
511 | 511 | "collapsed": false, |
|
512 | 512 | "input": [ |
|
513 | 513 | "%%ruby --bg --out ruby_lines\n", |
|
514 | 514 | "for n in 1...10\n", |
|
515 | 515 | " sleep 1\n", |
|
516 | 516 | " puts \"line #{n}\"\n", |
|
517 | 517 | " STDOUT.flush\n", |
|
518 | 518 | "end" |
|
519 | 519 | ], |
|
520 | 520 | "language": "python", |
|
521 | 521 | "metadata": {}, |
|
522 | 522 | "outputs": [ |
|
523 | 523 | { |
|
524 | 524 | "output_type": "stream", |
|
525 | 525 | "stream": "stdout", |
|
526 | 526 | "text": [ |
|
527 | 527 | "Starting job # 0 in a separate thread.\n" |
|
528 | 528 | ] |
|
529 | 529 | } |
|
530 | 530 | ], |
|
531 | 531 | "prompt_number": 33 |
|
532 | 532 | }, |
|
533 | 533 | { |
|
534 | 534 | "cell_type": "markdown", |
|
535 | 535 | "metadata": {}, |
|
536 | 536 | "source": [ |
|
537 | 537 | "When you do store output of a background thread, these are the stdout/err *pipes*,\n", |
|
538 | 538 | "rather than the text of the output." |
|
539 | 539 | ] |
|
540 | 540 | }, |
|
541 | 541 | { |
|
542 | 542 | "cell_type": "code", |
|
543 | 543 | "collapsed": false, |
|
544 | 544 | "input": [ |
|
545 | 545 | "ruby_lines" |
|
546 | 546 | ], |
|
547 | 547 | "language": "python", |
|
548 | 548 | "metadata": {}, |
|
549 | 549 | "outputs": [ |
|
550 | 550 | { |
|
551 | 551 | "metadata": {}, |
|
552 | 552 | "output_type": "pyout", |
|
553 | 553 | "prompt_number": 34, |
|
554 | 554 | "text": [ |
|
555 | 555 | "<open file '<fdopen>', mode 'rb' at 0x112cd55d0>" |
|
556 | 556 | ] |
|
557 | 557 | } |
|
558 | 558 | ], |
|
559 | 559 | "prompt_number": 34 |
|
560 | 560 | }, |
|
561 | 561 | { |
|
562 | 562 | "cell_type": "code", |
|
563 | 563 | "collapsed": false, |
|
564 | 564 | "input": [ |
|
565 | 565 | "print(ruby_lines.read())" |
|
566 | 566 | ], |
|
567 | 567 | "language": "python", |
|
568 | 568 | "metadata": {}, |
|
569 | 569 | "outputs": [ |
|
570 | 570 | { |
|
571 | 571 | "output_type": "stream", |
|
572 | 572 | "stream": "stdout", |
|
573 | 573 | "text": [ |
|
574 | 574 | "line 1\n", |
|
575 | 575 | "line 2\n", |
|
576 | 576 | "line 3\n", |
|
577 | 577 | "line 4\n", |
|
578 | 578 | "line 5\n", |
|
579 | 579 | "line 6\n", |
|
580 | 580 | "line 7\n", |
|
581 | 581 | "line 8\n", |
|
582 | 582 | "line 9\n", |
|
583 | 583 | "\n" |
|
584 | 584 | ] |
|
585 | 585 | } |
|
586 | 586 | ], |
|
587 | 587 | "prompt_number": 35 |
|
588 | 588 | }, |
|
589 | 589 | { |
|
590 | 590 | "cell_type": "heading", |
|
591 | 591 | "level": 1, |
|
592 | 592 | "metadata": {}, |
|
593 | 593 | "source": [ |
|
594 | 594 | "Cython Magic Functions Extension" |
|
595 | 595 | ] |
|
596 | 596 | }, |
|
597 | 597 | { |
|
598 | 598 | "cell_type": "heading", |
|
599 | 599 | "level": 2, |
|
600 | 600 | "metadata": {}, |
|
601 | 601 | "source": [ |
|
602 | 602 | "Loading the extension" |
|
603 | 603 | ] |
|
604 | 604 | }, |
|
605 | 605 | { |
|
606 | 606 | "cell_type": "markdown", |
|
607 | 607 | "metadata": {}, |
|
608 | 608 | "source": [ |
|
609 | 609 | "IPtyhon has a `cythonmagic` extension that contains a number of magic functions for working with Cython code. This extension can be loaded using the `%load_ext` magic as follows:" |
|
610 | 610 | ] |
|
611 | 611 | }, |
|
612 | 612 | { |
|
613 | 613 | "cell_type": "code", |
|
614 | 614 | "collapsed": false, |
|
615 | 615 | "input": [ |
|
616 | 616 | "%load_ext cythonmagic" |
|
617 | 617 | ], |
|
618 | 618 | "language": "python", |
|
619 | 619 | "metadata": {}, |
|
620 | 620 | "outputs": [], |
|
621 | 621 | "prompt_number": 1 |
|
622 | 622 | }, |
|
623 | 623 | { |
|
624 | 624 | "cell_type": "markdown", |
|
625 | 625 | "metadata": {}, |
|
626 | 626 | "source": [ |
|
627 | 627 | "The `%%cython_pyximport` magic allows you to enter arbitrary Cython code into a cell. That Cython code is written as a `.pyx` file in the current working directory and then imported using `pyximport`. You have the specify the name of the module that the Code will appear in. All symbols from the module are imported automatically by the magic function." |
|
628 | 628 | ] |
|
629 | 629 | }, |
|
630 | 630 | { |
|
631 | 631 | "cell_type": "code", |
|
632 | 632 | "collapsed": false, |
|
633 | 633 | "input": [ |
|
634 | 634 | "%%cython_pyximport foo\n", |
|
635 | 635 | "def f(x):\n", |
|
636 | 636 | " return 4.0*x" |
|
637 | 637 | ], |
|
638 | 638 | "language": "python", |
|
639 | 639 | "metadata": {}, |
|
640 | 640 | "outputs": [], |
|
641 | 641 | "prompt_number": 4 |
|
642 | 642 | }, |
|
643 | 643 | { |
|
644 | 644 | "cell_type": "code", |
|
645 | 645 | "collapsed": false, |
|
646 | 646 | "input": [ |
|
647 | 647 | "f(10)" |
|
648 | 648 | ], |
|
649 | 649 | "language": "python", |
|
650 | 650 | "metadata": {}, |
|
651 | 651 | "outputs": [ |
|
652 | 652 | { |
|
653 | 653 | "metadata": {}, |
|
654 | 654 | "output_type": "pyout", |
|
655 | 655 | "prompt_number": 6, |
|
656 | 656 | "text": [ |
|
657 | 657 | "40.0" |
|
658 | 658 | ] |
|
659 | 659 | } |
|
660 | 660 | ], |
|
661 | 661 | "prompt_number": 6 |
|
662 | 662 | }, |
|
663 | 663 | { |
|
664 | 664 | "cell_type": "heading", |
|
665 | 665 | "level": 2, |
|
666 | 666 | "metadata": {}, |
|
667 | 667 | "source": [ |
|
668 | 668 | "The %cython magic" |
|
669 | 669 | ] |
|
670 | 670 | }, |
|
671 | 671 | { |
|
672 | 672 | "cell_type": "markdown", |
|
673 | 673 | "metadata": {}, |
|
674 | 674 | "source": [ |
|
675 | 675 | "Probably the most important magic is the `%cython` magic. This is similar to the `%%cython_pyximport` magic, but doesn't require you to specify a module name. Instead, the `%%cython` magic manages everything using temporary files in the `~/.cython/magic` directory. All of the symbols in the Cython module are imported automatically by the magic.\n", |
|
676 | 676 | "\n", |
|
677 | 677 | "Here is a simple example of a Black-Scholes options pricing algorithm written in Cython:" |
|
678 | 678 | ] |
|
679 | 679 | }, |
|
680 | 680 | { |
|
681 | 681 | "cell_type": "code", |
|
682 | 682 | "collapsed": false, |
|
683 | 683 | "input": [ |
|
684 | 684 | "%%cython\n", |
|
685 | 685 | "cimport cython\n", |
|
686 | 686 | "from libc.math cimport exp, sqrt, pow, log, erf\n", |
|
687 | 687 | "\n", |
|
688 | 688 | "@cython.cdivision(True)\n", |
|
689 | 689 | "cdef double std_norm_cdf(double x) nogil:\n", |
|
690 | 690 | " return 0.5*(1+erf(x/sqrt(2.0)))\n", |
|
691 | 691 | "\n", |
|
692 | 692 | "@cython.cdivision(True)\n", |
|
693 | 693 | "def black_scholes(double s, double k, double t, double v,\n", |
|
694 | 694 | " double rf, double div, double cp):\n", |
|
695 | 695 | " \"\"\"Price an option using the Black-Scholes model.\n", |
|
696 | 696 | " \n", |
|
697 | 697 | " s : initial stock price\n", |
|
698 | 698 | " k : strike price\n", |
|
699 | 699 | " t : expiration time\n", |
|
700 | 700 | " v : volatility\n", |
|
701 | 701 | " rf : risk-free rate\n", |
|
702 | 702 | " div : dividend\n", |
|
703 | 703 | " cp : +1/-1 for call/put\n", |
|
704 | 704 | " \"\"\"\n", |
|
705 | 705 | " cdef double d1, d2, optprice\n", |
|
706 | 706 | " with nogil:\n", |
|
707 | 707 | " d1 = (log(s/k)+(rf-div+0.5*pow(v,2))*t)/(v*sqrt(t))\n", |
|
708 | 708 | " d2 = d1 - v*sqrt(t)\n", |
|
709 | 709 | " optprice = cp*s*exp(-div*t)*std_norm_cdf(cp*d1) - \\\n", |
|
710 | 710 | " cp*k*exp(-rf*t)*std_norm_cdf(cp*d2)\n", |
|
711 | 711 | " return optprice" |
|
712 | 712 | ], |
|
713 | 713 | "language": "python", |
|
714 | 714 | "metadata": {}, |
|
715 | 715 | "outputs": [], |
|
716 | 716 | "prompt_number": 7 |
|
717 | 717 | }, |
|
718 | 718 | { |
|
719 | 719 | "cell_type": "code", |
|
720 | 720 | "collapsed": false, |
|
721 | 721 | "input": [ |
|
722 | 722 | "black_scholes(100.0, 100.0, 1.0, 0.3, 0.03, 0.0, -1)" |
|
723 | 723 | ], |
|
724 | 724 | "language": "python", |
|
725 | 725 | "metadata": {}, |
|
726 | 726 | "outputs": [ |
|
727 | 727 | { |
|
728 | 728 | "metadata": {}, |
|
729 | 729 | "output_type": "pyout", |
|
730 | 730 | "prompt_number": 8, |
|
731 | 731 | "text": [ |
|
732 | 732 | "10.327861752731728" |
|
733 | 733 | ] |
|
734 | 734 | } |
|
735 | 735 | ], |
|
736 | 736 | "prompt_number": 8 |
|
737 | 737 | }, |
|
738 | 738 | { |
|
739 | 739 | "cell_type": "code", |
|
740 | 740 | "collapsed": false, |
|
741 | 741 | "input": [ |
|
742 | 742 | "%timeit black_scholes(100.0, 100.0, 1.0, 0.3, 0.03, 0.0, -1)" |
|
743 | 743 | ], |
|
744 | 744 | "language": "python", |
|
745 | 745 | "metadata": {}, |
|
746 | 746 | "outputs": [ |
|
747 | 747 | { |
|
748 | 748 | "output_type": "stream", |
|
749 | 749 | "stream": "stdout", |
|
750 | 750 | "text": [ |
|
751 | 751 | "1000000 loops, best of 3: 366 ns per loop\n" |
|
752 | 752 | ] |
|
753 | 753 | } |
|
754 | 754 | ], |
|
755 | 755 | "prompt_number": 9 |
|
756 | 756 | }, |
|
757 | 757 | { |
|
758 | 758 | "cell_type": "markdown", |
|
759 | 759 | "metadata": {}, |
|
760 | 760 | "source": [ |
|
761 | 761 | "Cython allows you to specify additional libraries to be linked with your extension, you can do so with the `-l` flag (also spelled `--lib`). Note that this flag can be passed more than once to specify multiple libraries, such as `-lm -llib2 --lib lib3`. Here's a simple example of how to access the system math library:" |
|
762 | 762 | ] |
|
763 | 763 | }, |
|
764 | 764 | { |
|
765 | 765 | "cell_type": "code", |
|
766 | 766 | "collapsed": false, |
|
767 | 767 | "input": [ |
|
768 | 768 | "%%cython -lm\n", |
|
769 | 769 | "from libc.math cimport sin\n", |
|
770 | 770 | "print 'sin(1)=', sin(1)" |
|
771 | 771 | ], |
|
772 | 772 | "language": "python", |
|
773 | 773 | "metadata": {}, |
|
774 | 774 | "outputs": [ |
|
775 | 775 | { |
|
776 | 776 | "output_type": "stream", |
|
777 | 777 | "stream": "stdout", |
|
778 | 778 | "text": [ |
|
779 | 779 | "sin(1)= 0.841470984808\n" |
|
780 | 780 | ] |
|
781 | 781 | } |
|
782 | 782 | ], |
|
783 | 783 | "prompt_number": 10 |
|
784 | 784 | }, |
|
785 | 785 | { |
|
786 | 786 | "cell_type": "markdown", |
|
787 | 787 | "metadata": {}, |
|
788 | 788 | "source": [ |
|
789 | 789 | "You can similarly use the `-I/--include` flag to add include directories to the search path, and `-c/--compile-args` to add extra flags that are passed to Cython via the `extra_compile_args` of the distutils `Extension` class. Please see [the Cython docs on C library usage](http://docs.cython.org/src/tutorial/clibraries.html) for more details on the use of these flags." |
|
790 | 790 | ] |
|
791 | 791 | }, |
|
792 | 792 | { |
|
793 | 793 | "cell_type": "heading", |
|
794 | 794 | "level": 1, |
|
795 | 795 | "metadata": {}, |
|
796 | 796 | "source": [ |
|
797 | 797 | "Rmagic Functions Extension" |
|
798 | 798 | ] |
|
799 | 799 | }, |
|
800 | 800 | { |
|
801 | 801 | "cell_type": "markdown", |
|
802 | 802 | "metadata": {}, |
|
803 | 803 | "source": [ |
|
804 | 804 | "IPython has an `rmagic` extension that contains a some magic functions for working with R via rpy2. This extension can be loaded using the `%load_ext` magic as follows:" |
|
805 | 805 | ] |
|
806 | 806 | }, |
|
807 | 807 | { |
|
808 | 808 | "cell_type": "code", |
|
809 | 809 | "collapsed": true, |
|
810 | 810 | "input": [ |
|
811 | 811 | "%load_ext rmagic" |
|
812 | 812 | ], |
|
813 | 813 | "language": "python", |
|
814 | 814 | "metadata": {}, |
|
815 | 815 | "outputs": [], |
|
816 | 816 | "prompt_number": 1 |
|
817 | 817 | }, |
|
818 | 818 | { |
|
819 | 819 | "cell_type": "markdown", |
|
820 | 820 | "metadata": {}, |
|
821 | 821 | "source": [ |
|
822 | 822 | "A typical use case one imagines is having some numpy arrays, wanting to compute some statistics of interest on these\n", |
|
823 | 823 | " arrays and return the result back to python. Let's suppose we just want to fit a simple linear model to a scatterplot." |
|
824 | 824 | ] |
|
825 | 825 | }, |
|
826 | 826 | { |
|
827 | 827 | "cell_type": "code", |
|
828 | 828 | "collapsed": false, |
|
829 | 829 | "input": [ |
|
830 | 830 | "%matplotlib inline\n", |
|
831 | 831 | "import numpy as np\n", |
|
832 | 832 | "import matplotlib.pyplot as plt" |
|
833 | 833 | ], |
|
834 | 834 | "language": "python", |
|
835 | 835 | "metadata": {}, |
|
836 | 836 | "outputs": [], |
|
837 | 837 | "prompt_number": 2 |
|
838 | 838 | }, |
|
839 | 839 | { |
|
840 | 840 | "cell_type": "code", |
|
841 | 841 | "collapsed": false, |
|
842 | 842 | "input": [ |
|
843 | 843 | "X = np.array([0,1,2,3,4])\n", |
|
844 | 844 | "Y = np.array([3,5,4,6,7])\n", |
|
845 | 845 | "plt.scatter(X, Y)" |
|
846 | 846 | ], |
|
847 | 847 | "language": "python", |
|
848 | 848 | "metadata": {}, |
|
849 | 849 | "outputs": [ |
|
850 | 850 | { |
|
851 | 851 | "metadata": {}, |
|
852 | 852 | "output_type": "pyout", |
|
853 | 853 | "prompt_number": 3, |
|
854 | 854 | "text": [ |
|
855 | 855 | "<matplotlib.collections.PathCollection at 0x112ab1f90>" |
|
856 | 856 | ] |
|
857 | 857 | }, |
|
858 | 858 | { |
|
859 | 859 | "metadata": {}, |
|
860 | 860 | "output_type": "display_data", |
|
861 | 861 | "png": "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\nH7s1AAAAAElFTkSuQmCC\n", |
|
862 | 862 | "text": [ |
|
863 | 863 | "<matplotlib.figure.Figure at 0x112a87c50>" |
|
864 | 864 | ] |
|
865 | 865 | } |
|
866 | 866 | ], |
|
867 | 867 | "prompt_number": 3 |
|
868 | 868 | }, |
|
869 | 869 | { |
|
870 | 870 | "cell_type": "markdown", |
|
871 | 871 | "metadata": {}, |
|
872 | 872 | "source": [ |
|
873 | 873 | "We can accomplish this by first pushing variables to R, fitting a model and returning the results. The line magic %Rpush copies its arguments to variables of the same name in rpy2. The %R line magic evaluates the string in rpy2 and returns the results. In this case, the coefficients of a linear model." |
|
874 | 874 | ] |
|
875 | 875 | }, |
|
876 | 876 | { |
|
877 | 877 | "cell_type": "code", |
|
878 | 878 | "collapsed": false, |
|
879 | 879 | "input": [ |
|
880 | 880 | "%Rpush X Y\n", |
|
881 | 881 | "%R lm(Y~X)$coef" |
|
882 | 882 | ], |
|
883 | 883 | "language": "python", |
|
884 | 884 | "metadata": {}, |
|
885 | 885 | "outputs": [ |
|
886 | 886 | { |
|
887 | 887 | "metadata": {}, |
|
888 | 888 | "output_type": "pyout", |
|
889 | 889 | "prompt_number": 4, |
|
890 | 890 | "text": [ |
|
891 | 891 | "array([ 3.2, 0.9])" |
|
892 | 892 | ] |
|
893 | 893 | } |
|
894 | 894 | ], |
|
895 | 895 | "prompt_number": 4 |
|
896 | 896 | }, |
|
897 | 897 | { |
|
898 | 898 | "cell_type": "markdown", |
|
899 | 899 | "metadata": {}, |
|
900 | 900 | "source": [ |
|
901 | 901 | "It is also possible to return more than one value with %R." |
|
902 | 902 | ] |
|
903 | 903 | }, |
|
904 | 904 | { |
|
905 | 905 | "cell_type": "code", |
|
906 | 906 | "collapsed": false, |
|
907 | 907 | "input": [ |
|
908 | 908 | "%R resid(lm(Y~X)); coef(lm(X~Y))" |
|
909 | 909 | ], |
|
910 | 910 | "language": "python", |
|
911 | 911 | "metadata": {}, |
|
912 | 912 | "outputs": [ |
|
913 | 913 | { |
|
914 | 914 | "metadata": {}, |
|
915 | 915 | "output_type": "pyout", |
|
916 | 916 | "prompt_number": 5, |
|
917 | 917 | "text": [ |
|
918 | 918 | "array([-2.5, 0.9])" |
|
919 | 919 | ] |
|
920 | 920 | } |
|
921 | 921 | ], |
|
922 | 922 | "prompt_number": 5 |
|
923 | 923 | }, |
|
924 | 924 | { |
|
925 | 925 | "cell_type": "markdown", |
|
926 | 926 | "metadata": {}, |
|
927 | 927 | "source": [ |
|
928 | 928 | "One can also easily capture the results of %R into python objects. Like R, the return value of this multiline expression (multiline in the sense that it is separated by ';') is the final value, which is \n", |
|
929 | 929 | "the *coef(lm(X~Y))*." |
|
930 | 930 | ] |
|
931 | 931 | }, |
|
932 | 932 | { |
|
933 | 933 | "cell_type": "markdown", |
|
934 | 934 | "metadata": {}, |
|
935 | 935 | "source": [ |
|
936 | 936 | "To pull other variables from R, there are two more line magics, %Rpull and %Rget. Both are useful after some R code has been executed and there are variables\n", |
|
937 | 937 | "in the rpy2 namespace that one would like to retrieve. The main difference is that one\n", |
|
938 | 938 | " returns the value (%Rget), while the other pulls it to self.shell.user_ns (%Rpull). Imagine we've stored the results\n", |
|
939 | 939 | "of some calculation in the variable \"a\" in rpy2's namespace. By using the %R magic, we can obtain these results and\n", |
|
940 | 940 | "store them in b. We can also pull them directly to user_ns with %Rpull. They are both views on the same data." |
|
941 | 941 | ] |
|
942 | 942 | }, |
|
943 | 943 | { |
|
944 | 944 | "cell_type": "code", |
|
945 | 945 | "collapsed": false, |
|
946 | 946 | "input": [ |
|
947 | 947 | "b = %R a=resid(lm(Y~X))\n", |
|
948 | 948 | "%Rpull a\n", |
|
949 | 949 | "print(a)\n", |
|
950 | 950 | "assert id(b.data) == id(a.data)\n", |
|
951 | 951 | "%R -o a" |
|
952 | 952 | ], |
|
953 | 953 | "language": "python", |
|
954 | 954 | "metadata": {}, |
|
955 | 955 | "outputs": [ |
|
956 | 956 | { |
|
957 | 957 | "output_type": "stream", |
|
958 | 958 | "stream": "stdout", |
|
959 | 959 | "text": [ |
|
960 | 960 | "[-0.2 0.9 -1. 0.1 0.2]\n" |
|
961 | 961 | ] |
|
962 | 962 | } |
|
963 | 963 | ], |
|
964 | 964 | "prompt_number": 6 |
|
965 | 965 | }, |
|
966 | 966 | { |
|
967 | 967 | "cell_type": "heading", |
|
968 | 968 | "level": 2, |
|
969 | 969 | "metadata": {}, |
|
970 | 970 | "source": [ |
|
971 | 971 | "Plotting and capturing output" |
|
972 | 972 | ] |
|
973 | 973 | }, |
|
974 | 974 | { |
|
975 | 975 | "cell_type": "markdown", |
|
976 | 976 | "metadata": {}, |
|
977 | 977 | "source": [ |
|
978 |
"R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files like |
|
|
978 | "R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files like `%matplotlib inline`. As a call to %R may produce a return value (see above) we must ask what happens to a magic like the one below. The R code specifies that something is published to the notebook. If anything is published to the notebook, that call to %R returns None." | |
|
979 | 979 | ] |
|
980 | 980 | }, |
|
981 | 981 | { |
|
982 | 982 | "cell_type": "code", |
|
983 | 983 | "collapsed": false, |
|
984 | 984 | "input": [ |
|
985 | 985 | "from __future__ import print_function\n", |
|
986 | 986 | "v1 = %R plot(X,Y); print(summary(lm(Y~X))); vv=mean(X)*mean(Y)\n", |
|
987 | 987 | "print('v1 is:', v1)\n", |
|
988 | 988 | "v2 = %R mean(X)*mean(Y)\n", |
|
989 | 989 | "print('v2 is:', v2)" |
|
990 | 990 | ], |
|
991 | 991 | "language": "python", |
|
992 | 992 | "metadata": {}, |
|
993 | 993 | "outputs": [ |
|
994 | 994 | { |
|
995 | 995 | "metadata": {}, |
|
996 | 996 | "output_type": "display_data", |
|
997 | 997 | "text": [ |
|
998 | 998 | "\n", |
|
999 | 999 | "Call:\n", |
|
1000 | 1000 | "lm(formula = Y ~ X)\n", |
|
1001 | 1001 | "\n", |
|
1002 | 1002 | "Residuals:\n", |
|
1003 | 1003 | " 1 2 3 4 5 \n", |
|
1004 | 1004 | "-0.2 0.9 -1.0 0.1 0.2 \n", |
|
1005 | 1005 | "\n", |
|
1006 | 1006 | "Coefficients:\n", |
|
1007 | 1007 | " Estimate Std. Error t value Pr(>|t|) \n", |
|
1008 | 1008 | "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n", |
|
1009 | 1009 | "X 0.9000 0.2517 3.576 0.0374 *\n", |
|
1010 | 1010 | "---\n", |
|
1011 | 1011 | "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1\n", |
|
1012 | 1012 | "\n", |
|
1013 | 1013 | "Residual standard error: 0.7958 on 3 degrees of freedom\n", |
|
1014 | 1014 | "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n", |
|
1015 | 1015 | "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739\n", |
|
1016 | 1016 | "\n" |
|
1017 | 1017 | ] |
|
1018 | 1018 | }, |
|
1019 | 1019 | { |
|
1020 | 1020 | "metadata": {}, |
|
1021 | 1021 | "output_type": "display_data", |
|
1022 | 1022 | "png": "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\nISCAy1C3JgECBAhkLyCAsz8EABAgQIBAGQICuAx1axIgQIBA9gICOPtDAAABAgQIlCEggMtQtyYB\nAgQIZC8ggLM/BAAQIECAQBkCArgMdWsSIECAQPYCAjj7QwAAAQIECJQhIIDLULcmAQIECGQvIICz\nPwQAECBAgEAZAgK4DHVrEiBAgED2AgI4+0MAAAECBAiUISCAy1C3JgECBAhkLyCAsz8EABAgQIBA\nGQICuAx1axIgQIBA9gICOPtDAAABAgQIlCEggMtQtyYBAgQIZC8ggLM/BAAQIECAQBkCArgMdWsS\nIECAQPYCAjj7QwAAAQIECJQhIIDLULcmAQIECGQvIICzPwQAECBAgEAZAgK4DHVrEiBAgED2AgI4\n+0MAAAECBAiUISCAy1C3JgECBAhkLyCAsz8EABAgQIBAGQICuAx1axIgQIBA9gICOPtDAAABAgQI\nlCEggMtQtyYBAgQIZC8ggLM/BAAQIECAQBkCArgMdWsSIECAQPYCAjj7QwAAAQIECJQhIIDLULcm\nAQIECGQvIICzPwQAECBAgEAZAgK4DHVrEiBAgED2AgI4+0MAAAECBAiUISCAy1C3JgECBAhkLyCA\nsz8EABAgQIBAGQICuAx1axIgQIBA9gICOPtDAAABAgQIlCEggMtQtyYBAgQIZC8ggLM/BAAQIECA\nQBkCArgMdWsSIECAQPYCAjj7QwAAAQIECJQhIIDLULcmAQIECGQvIICzPwQAECBAgEAZAgK4DHVr\nEiBAgED2AgI4+0MAAAECBAiUISCAy1C3JgECBAhkLyCAsz8EABAgQIBAGQICuAx1axIgQIBA9gIC\nOPtDAAABAgQIlCEggMtQtyYBAgQIZC8ggLM/BAAQIECAQBkCArgMdWsSIECAQPYCAjj7QwAAAQIE\nCJQhIIDLULcmAQIECGQvIICzPwQAECBAgEAZAgK4DHVrEiBAgED2AgI4+0MAAAECBAiUISCAy1C3\nJgECBAhkLyCAsz8EABAgQIBAGQICuAx1axIgQIBA9gIdshdYD8DDDz8cr732WmyzzTbRv3//9dzb\nzQQIECBAoHkCyb4CXrlyZSxevLh5XbTSvU455ZS46667omPHjnHllVfG8ccfH6tWrWql1eyWAAEC\nBHISSCKAly9fHldccUUMGTIknn322bjtttuiR48escUWW8Rxxx0X7777bpvPZNKkSfHiiy/GTTfd\nFIMHD45f/epXsfnmm8fPf/7zNq/FggQIECDQeAJJnII+//zz46WXXop99tknTjzxxOjQoUNMnjw5\nevXqFSNHjowpU6bUtq+Pf+LEiXH33XfXvdvzzz9f21/dG+tsfO655+Kaa65pcsvw4cPj9ttvb7LN\nFQIECBAgsCECSQTwQw89FDNmzKi9wuzcuXP8+9//jsMOO6zWz5gxY+Liiy9uVgAXp4i/8pWv1HW4\n8847Y8mSJXVvq7exeLU7e/bsOOSQQ9bc/Mc//rFW45oNviFAgAABAhsokEQA77zzzjFr1qzYf//9\n49RTT41//OMfa9qZOXNm9O7de831dX3TqVOnKL7qXYpALd5Xbu5l2LBhMXDgwOjZs2etrmnTpsXp\np58eCxcubO4u3I8AAQIECKxVIIkAHjVqVBx99NHxk5/8pPbfbbfdtlbwRRddFLfccks8+uija22g\ntW7o3r177dR3cXp8woQJUVyfN29edO3atbWWtF8CBAgQyEggiQA+8sgja6d7P3iKuDidXJx+3mST\nTUoZyVZbbRU333xzKWtblAABAgQaWyCJAC6Ii1PExdf7LwcddND7r/qeAAECBAg0jEASv4bUMJoa\nIUCAAAECzRQQwM2EcjcCBAgQINCSAgK4JTXtiwABAgQINFNAADcTyt0IECBAgEBLCgjgltS0LwIE\nCBAg0EwBAdxMKHcjQIAAAQItKSCAW1LTvggQIECAQDMF2r33v0sz71vpuxV/XGHAgAGx9957f+Q+\nHn/88bX+E5cfeWcesFaBZcuWRbt27Wp//nGtd3JDiwgU/+jNpptu2iL7spO1CyxdurR2PLdv337t\nd3LLRgusjrGDDz74I+9r7ty5MXXq1Nhuu+0+8mM39gHZBPDGQPXt2zeeeOKJjdmFxzZDYOzYsbU/\nQ1n8G9wurSvgmG5d39V7v/DCC2v/vO6BBx64epP/toJA8Qd8RowYUbm/VucUdCscDHZJgAABAgTW\nJyCA1yfkdgIECBAg0AoCArgVUO2SAAECBAisT0AAr0/I7QQIECBAoBUEBHAroNolAQIECBBYn4AA\nXp+Q2wkQIECAQCsI+DWkZqD+61//im222aYZ93SXjRFYvHhxFL8v6fdTN0axeY91TDfPaWPv9eab\nb9aO50984hMbuyuPX4fAqlWr4o033oju3buv417p3SSA05uJiggQIEAgAwGnoDMYshYJECBAID0B\nAZzeTFREgAABAhkICOAMhqxFAgQIEEhPQACnNxMVESBAgEAGAgI4gyFrkQABAgTSExDA6c1ERQQI\nECCQgYAAzmDIWiRAgACB9AQEcHozybqi5cuXZ92/5gkQyEdAAK9j1k888UQccsghsdNOO8Wxxx4b\nb7311jru7aaNFZg0aVIcdNBBG7sbj1+HQGF8+OGHR58+fWLw4MHx0ksvrePebtpQgTlz5tR+Zuy5\n556x//77xzPPPLOhu/K4ZgqcdtppMXz48GbeO427CeC1zKH4Z81OOumkuP7666P4P1MRwueee+5a\n7m3zxggUT2zOOuusOPvss+O9997bmF157DoE5s+fHyNHjowihP/0pz/FEUccEeecc846HuGmDRUY\nOnRoHH/88TFz5swYM2ZMDBw4cEN35XHNEHjwwQdj8uTJzbhnWncRwGuZx4wZM2KPPfaIvfbaKzp2\n7BgjRoyIu+++ey33tnljBB577LHYZJNN4mc/+9nG7MZj1yNQ/Hu5d9xxR/To0aN2z+JV8NNPP72e\nR7l5QwSmTJkSgwYNqj10xYoVUXy5tI7AggULak9yip/RVbsI4LVMbN68eU3+AEPxQ2vRokXx7rvv\nruURNm+oQPHq4Morr4zOnTtv6C48rhkC2267bRx66KFr7nnjjTfGgAED1lz3TcsJbL311tGuXbva\nGYbi1Oh1113Xcju3pyYCZ5xxRlx66aXRpUuXJturcEUAr2VKxbOq9/9VntXh8J///Gctj7CZQHUE\nxo0bF/fff39cddVV1Sm6YpUWT9aLv87Tq1evuO2222LZsmUV6yD9cn/xi1/Unrj369cv/WLrVCiA\n66AUm7p16xbFn8dbfXn77bejU6dOseWWW67e5L8EKilwww03xMUXXxyPPvpoLRwq2UQFii7+BOFF\nF10UTz31VDz++OO1/1ag7MqUWLxIKj7DUHyo8IEHHqh9oPDVV1+N6dOnV6YHAbyWURXPWl955ZU1\ntxbfb7/99muu+4ZAFQWK99mL03VF+BafcXBpeYGlS5fGBRdcsObtqg4dOsRuu+0Wf/nLX1p+sYz3\nuHDhwujdu3cUTygvv/zyKD5L8txzz8XEiRMroyKA1zKq4lnV3Llza0MtTiVdffXV8dWvfnUt97aZ\nQPoCf/vb3+LMM8+snQ4t3g8u/lh88eXSsgLFmbI//OEPMX78+NqOiw90/v73v4/Pf/7zLbtQ5nvb\nZZddah8iLD5IWHwVv0lx9NFH135zpSo0HapSaFvXWZw+Kj44ccwxx0TXrl1rz2DHjh3b1mVYj0CL\nCRS/UrdkyZLo27dvk30W24pPobu0nMAVV1wRo0aNimuuuab282PChAnx6U9/uuUWsKeGEGj3v9+7\n9IuX6xhl8esDxfu/3vtdB5KbCBCoK1D85kTxBN6FQD0BAVxPxTYCBAgQINDKAt4DbmVguydAgAAB\nAvUEBHA9FdsIECBAgEArCwjgVga2ewIECBAgUE9AANdTsY0AAQIECLSygABuZWC7J0CAAAEC9QQE\ncD0V2wgQIECAQCsLCOBWBrZ7AgQIECBQT0AA11OxjQABAgQItLKAAG5lYLsnQIAAAQL1BARwPRXb\nCBAgQIBAKwsI4FYGtnsCBAgQIFBPQADXU7GNAAECBAi0soAAbmVguydAgAABAvUEBHA9FdsIECBA\ngEArCwjgVga2ewIECBAgUE9AANdTsY0AAQIECLSygABuZWC7J0CAAAEC9QQEcD0V2wgQIECAQCsL\nCOBWBrZ7AikILF26ND772c/GRRdd1KScb37zm3HSSSc12eYKAQJtI9ChbZaxCgECZQp06tQpJk2a\nFAcccEDst99+ceyxx8b3v//9mD59esyYMaPM0qxNIFsBAZzt6DWem8Cee+5ZC91hw4ZFx44dY/To\n0fH000/HZpttlhuFfgkkIdDuvf9dkqhEEQQItInAUUcdFY888khcf/31cdppp7XJmhYhQODDAt4D\n/rCJLQQaWqB3796xcuXK6NatW0P3qTkCqQsI4NQnpD4CLSjwxBNPxIQJE+Kyyy6LM888M956660W\n3LtdESDwUQScgv4oWu5LoMIC77zzThTvA1944YVRvA/ct2/f2GmnneKnP/1phbtSOoHqCgjg6s5O\n5QQ+ksDw4cPj5ZdfjqlTp0a7du1izpw50adPn7jnnnuif//+H2lf7kyAwMYLCOCNN7QHAskLPPzw\nwzFw4MCYOXNm7LjjjmvqLX4V6cc//nG88MILPg29RsU3BNpGQAC3jbNVCBAgQIBAEwEfwmrC4QoB\nAgQIEGgbAQHcNs5WIUCAAAECTQQEcBMOVwgQIECAQNsICOC2cbYKAQIECBBoIiCAm3C4QoAAAQIE\n2kZAALeNs1UIECBAgEATAQHchMMVAgQIECDQNgICuG2crUKAAAECBJoICOAmHK4QIECAAIG2ERDA\nbeNsFQIECBAg0ERAADfhcIUAAQIECLSNgABuG2erECBAgACBJgICuAmHKwQIECBAoG0EBHDbOFuF\nAAECBAg0ERDATThcIUCAAAECbSMggNvG2SoECBAgQKCJgABuwuEKAQIECBBoG4H/A7mZRipqNAOP\nAAAAAElFTkSuQmCC\n" |
|
1023 | 1023 | }, |
|
1024 | 1024 | { |
|
1025 | 1025 | "output_type": "stream", |
|
1026 | 1026 | "stream": "stdout", |
|
1027 | 1027 | "text": [ |
|
1028 | 1028 | "v1 is: [ 10.]\n", |
|
1029 | 1029 | "v2 is: [ 10.]\n" |
|
1030 | 1030 | ] |
|
1031 | 1031 | } |
|
1032 | 1032 | ], |
|
1033 | 1033 | "prompt_number": 7 |
|
1034 | 1034 | }, |
|
1035 | 1035 | { |
|
1036 | 1036 | "cell_type": "heading", |
|
1037 | 1037 | "level": 2, |
|
1038 | 1038 | "metadata": {}, |
|
1039 | 1039 | "source": [ |
|
1040 | 1040 | "Cell level magic" |
|
1041 | 1041 | ] |
|
1042 | 1042 | }, |
|
1043 | 1043 | { |
|
1044 | 1044 | "cell_type": "markdown", |
|
1045 | 1045 | "metadata": {}, |
|
1046 | 1046 | "source": [ |
|
1047 | 1047 | "Often, we will want to do more than a simple linear regression model. There may be several lines of R code that we want to \n", |
|
1048 | 1048 | "use before returning to python. This is the cell-level magic.\n", |
|
1049 | 1049 | "\n", |
|
1050 | 1050 | "\n", |
|
1051 | 1051 | "For the cell level magic, inputs can be passed via the -i or --inputs argument in the line. These variables are copied \n", |
|
1052 | 1052 | "from the shell namespace to R's namespace using rpy2.robjects.r.assign. It would be nice not to have to copy these into R: rnumpy ( http://bitbucket.org/njs/rnumpy/wiki/API ) has done some work to limit or at least make transparent the number of copies of an array. This seems like a natural thing to try to build on. Arrays can be output from R via the -o or --outputs argument in the line. All other arguments are sent to R's png function, which is the graphics device used to create the plots.\n", |
|
1053 | 1053 | "\n", |
|
1054 | 1054 | "We can redo the above calculations in one ipython cell. We might also want to add some output such as a summary\n", |
|
1055 | 1055 | " from R or perhaps the standard plotting diagnostics of the lm." |
|
1056 | 1056 | ] |
|
1057 | 1057 | }, |
|
1058 | 1058 | { |
|
1059 | 1059 | "cell_type": "code", |
|
1060 | 1060 | "collapsed": false, |
|
1061 | 1061 | "input": [ |
|
1062 | 1062 | "%%R -i X,Y -o XYcoef\n", |
|
1063 | 1063 | "XYlm = lm(Y~X)\n", |
|
1064 | 1064 | "XYcoef = coef(XYlm)\n", |
|
1065 | 1065 | "print(summary(XYlm))\n", |
|
1066 | 1066 | "par(mfrow=c(2,2))\n", |
|
1067 | 1067 | "plot(XYlm)" |
|
1068 | 1068 | ], |
|
1069 | 1069 | "language": "python", |
|
1070 | 1070 | "metadata": {}, |
|
1071 | 1071 | "outputs": [ |
|
1072 | 1072 | { |
|
1073 | 1073 | "metadata": {}, |
|
1074 | 1074 | "output_type": "display_data", |
|
1075 | 1075 | "text": [ |
|
1076 | 1076 | "\n", |
|
1077 | 1077 | "Call:\n", |
|
1078 | 1078 | "lm(formula = Y ~ X)\n", |
|
1079 | 1079 | "\n", |
|
1080 | 1080 | "Residuals:\n", |
|
1081 | 1081 | " 1 2 3 4 5 \n", |
|
1082 | 1082 | "-0.2 0.9 -1.0 0.1 0.2 \n", |
|
1083 | 1083 | "\n", |
|
1084 | 1084 | "Coefficients:\n", |
|
1085 | 1085 | " Estimate Std. Error t value Pr(>|t|) \n", |
|
1086 | 1086 | "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n", |
|
1087 | 1087 | "X 0.9000 0.2517 3.576 0.0374 *\n", |
|
1088 | 1088 | "---\n", |
|
1089 | 1089 | "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1\n", |
|
1090 | 1090 | "\n", |
|
1091 | 1091 | "Residual standard error: 0.7958 on 3 degrees of freedom\n", |
|
1092 | 1092 | "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n", |
|
1093 | 1093 | "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739\n", |
|
1094 | 1094 | "\n" |
|
1095 | 1095 | ] |
|
1096 | 1096 | }, |
|
1097 | 1097 | { |
|
1098 | 1098 | "metadata": {}, |
|
1099 | 1099 | "output_type": "display_data", |
|
1100 | 1100 | "png": "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\nHwT+H3+Bv8VJdwumAAAAAElFTkSuQmCC\n" |
|
1101 | 1101 | } |
|
1102 | 1102 | ], |
|
1103 | 1103 | "prompt_number": 8 |
|
1104 | 1104 | }, |
|
1105 | 1105 | { |
|
1106 | 1106 | "cell_type": "heading", |
|
1107 | 1107 | "level": 1, |
|
1108 | 1108 | "metadata": {}, |
|
1109 | 1109 | "source": [ |
|
1110 | 1110 | "octavemagic: Octave inside IPython" |
|
1111 | 1111 | ] |
|
1112 | 1112 | }, |
|
1113 | 1113 | { |
|
1114 | 1114 | "cell_type": "markdown", |
|
1115 | 1115 | "metadata": {}, |
|
1116 | 1116 | "source": [ |
|
1117 | 1117 | "The `octavemagic` extension provides the ability to interact with Octave. It depends on the `oct2py` and `h5py` packages,\n", |
|
1118 | 1118 | "which may be installed using `easy_install`. It has been closely modeled after the R extension, so many of its names and usage patterns are the same.\n", |
|
1119 | 1119 | "\n", |
|
1120 | 1120 | "To enable the extension, load it as follows:" |
|
1121 | 1121 | ] |
|
1122 | 1122 | }, |
|
1123 | 1123 | { |
|
1124 | 1124 | "cell_type": "code", |
|
1125 | 1125 | "collapsed": false, |
|
1126 | 1126 | "input": [ |
|
1127 | 1127 | "%load_ext octavemagic" |
|
1128 | 1128 | ], |
|
1129 | 1129 | "language": "python", |
|
1130 | 1130 | "metadata": {}, |
|
1131 | 1131 | "outputs": [], |
|
1132 | 1132 | "prompt_number": 109 |
|
1133 | 1133 | }, |
|
1134 | 1134 | { |
|
1135 | 1135 | "cell_type": "heading", |
|
1136 | 1136 | "level": 2, |
|
1137 | 1137 | "metadata": {}, |
|
1138 | 1138 | "source": [ |
|
1139 | 1139 | "Overview" |
|
1140 | 1140 | ] |
|
1141 | 1141 | }, |
|
1142 | 1142 | { |
|
1143 | 1143 | "cell_type": "markdown", |
|
1144 | 1144 | "metadata": {}, |
|
1145 | 1145 | "source": [ |
|
1146 | 1146 | "Loading the extension enables three magic functions: `%octave`, `%octave_push`, and `%octave_pull`.\n", |
|
1147 | 1147 | "\n", |
|
1148 | 1148 | "The first is for executing one or more lines of Octave, while the latter allow moving variables between the Octave and Python workspace.\n", |
|
1149 | 1149 | "Here you see an example of how to execute a single line of Octave, and how to transfer the generated value back to Python:" |
|
1150 | 1150 | ] |
|
1151 | 1151 | }, |
|
1152 | 1152 | { |
|
1153 | 1153 | "cell_type": "code", |
|
1154 | 1154 | "collapsed": false, |
|
1155 | 1155 | "input": [ |
|
1156 | 1156 | "x = %octave [1 2; 3 4];\n", |
|
1157 | 1157 | "x" |
|
1158 | 1158 | ], |
|
1159 | 1159 | "language": "python", |
|
1160 | 1160 | "metadata": {}, |
|
1161 | 1161 | "outputs": [ |
|
1162 | 1162 | { |
|
1163 | 1163 | "output_type": "pyout", |
|
1164 | 1164 | "prompt_number": 110, |
|
1165 | 1165 | "text": [ |
|
1166 | 1166 | "array([[ 1., 2.],\n", |
|
1167 | 1167 | " [ 3., 4.]])" |
|
1168 | 1168 | ] |
|
1169 | 1169 | } |
|
1170 | 1170 | ], |
|
1171 | 1171 | "prompt_number": 110 |
|
1172 | 1172 | }, |
|
1173 | 1173 | { |
|
1174 | 1174 | "cell_type": "code", |
|
1175 | 1175 | "collapsed": false, |
|
1176 | 1176 | "input": [ |
|
1177 | 1177 | "a = [1, 2, 3]\n", |
|
1178 | 1178 | "\n", |
|
1179 | 1179 | "%octave_push a\n", |
|
1180 | 1180 | "%octave a = a * 2;\n", |
|
1181 | 1181 | "%octave_pull a\n", |
|
1182 | 1182 | "a" |
|
1183 | 1183 | ], |
|
1184 | 1184 | "language": "python", |
|
1185 | 1185 | "metadata": {}, |
|
1186 | 1186 | "outputs": [ |
|
1187 | 1187 | { |
|
1188 | 1188 | "output_type": "pyout", |
|
1189 | 1189 | "prompt_number": 111, |
|
1190 | 1190 | "text": [ |
|
1191 | 1191 | "array([[2, 4, 6]])" |
|
1192 | 1192 | ] |
|
1193 | 1193 | } |
|
1194 | 1194 | ], |
|
1195 | 1195 | "prompt_number": 111 |
|
1196 | 1196 | }, |
|
1197 | 1197 | { |
|
1198 | 1198 | "cell_type": "markdown", |
|
1199 | 1199 | "metadata": {}, |
|
1200 | 1200 | "source": [ |
|
1201 | 1201 | "When using the cell magic, `%%octave` (note the double `%`), multiple lines of Octave can be executed together. Unlike\n", |
|
1202 | 1202 | "with the single cell magic, no value is returned, so we use the `-i` and `-o` flags to specify input and output variables." |
|
1203 | 1203 | ] |
|
1204 | 1204 | }, |
|
1205 | 1205 | { |
|
1206 | 1206 | "cell_type": "code", |
|
1207 | 1207 | "collapsed": false, |
|
1208 | 1208 | "input": [ |
|
1209 | 1209 | "%%octave -i x -o y\n", |
|
1210 | 1210 | "y = x + 3;" |
|
1211 | 1211 | ], |
|
1212 | 1212 | "language": "python", |
|
1213 | 1213 | "metadata": {}, |
|
1214 | 1214 | "outputs": [], |
|
1215 | 1215 | "prompt_number": 116 |
|
1216 | 1216 | }, |
|
1217 | 1217 | { |
|
1218 | 1218 | "cell_type": "code", |
|
1219 | 1219 | "collapsed": false, |
|
1220 | 1220 | "input": [ |
|
1221 | 1221 | "y" |
|
1222 | 1222 | ], |
|
1223 | 1223 | "language": "python", |
|
1224 | 1224 | "metadata": {}, |
|
1225 | 1225 | "outputs": [ |
|
1226 | 1226 | { |
|
1227 | 1227 | "output_type": "pyout", |
|
1228 | 1228 | "prompt_number": 117, |
|
1229 | 1229 | "text": [ |
|
1230 | 1230 | "array([[ 4., 5.],\n", |
|
1231 | 1231 | " [ 6., 7.]])" |
|
1232 | 1232 | ] |
|
1233 | 1233 | } |
|
1234 | 1234 | ], |
|
1235 | 1235 | "prompt_number": 117 |
|
1236 | 1236 | }, |
|
1237 | 1237 | { |
|
1238 | 1238 | "cell_type": "heading", |
|
1239 | 1239 | "level": 2, |
|
1240 | 1240 | "metadata": {}, |
|
1241 | 1241 | "source": [ |
|
1242 | 1242 | "Plotting" |
|
1243 | 1243 | ] |
|
1244 | 1244 | }, |
|
1245 | 1245 | { |
|
1246 | 1246 | "cell_type": "markdown", |
|
1247 | 1247 | "metadata": {}, |
|
1248 | 1248 | "source": [ |
|
1249 | 1249 | "Plot output is automatically captured and displayed, and using the `-f` flag you may choose its format (currently, `png` and `svg` are supported)." |
|
1250 | 1250 | ] |
|
1251 | 1251 | }, |
|
1252 | 1252 | { |
|
1253 | 1253 | "cell_type": "code", |
|
1254 | 1254 | "collapsed": false, |
|
1255 | 1255 | "input": [ |
|
1256 | 1256 | "%%octave -f svg\n", |
|
1257 | 1257 | "\n", |
|
1258 | 1258 | "p = [12 -2.5 -8 -0.1 8];\n", |
|
1259 | 1259 | "x = 0:0.01:1;\n", |
|
1260 | 1260 | "\n", |
|
1261 | 1261 | "polyout(p, 'x')\n", |
|
1262 | 1262 | "plot(x, polyval(p, x));" |
|
1263 | 1263 | ], |
|
1264 | 1264 | "language": "python", |
|
1265 | 1265 | "metadata": {}, |
|
1266 | 1266 | "outputs": [ |
|
1267 | 1267 | { |
|
1268 | 1268 | "output_type": "display_data", |
|
1269 | 1269 | "text": [ |
|
1270 | 1270 | "12*x^4 - 2.5*x^3 - 8*x^2 - 0.1*x^1 + 8" |
|
1271 | 1271 | ] |
|
1272 | 1272 | }, |
|
1273 | 1273 | { |
|
1274 | 1274 | "output_type": "display_data", |
|
1275 | 1275 | "svg": [ |
|
1276 | 1276 | "<svg height=\"240px\" viewBox=\"0 0 400 240\" width=\"400px\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", |
|
1277 | 1277 | "\n", |
|
1278 | 1278 | "<desc>Produced by GNUPLOT 4.4 patchlevel 3 </desc>\n", |
|
1279 | 1279 | "\n", |
|
1280 | 1280 | "<defs>\n", |
|
1281 | 1281 | "\n", |
|
1282 | 1282 | "\t<circle id=\"gpDot\" r=\"0.5\" stroke-width=\"0.5\"/>\n", |
|
1283 | 1283 | "\t<path d=\"M-1,0 h2 M0,-1 v2\" id=\"gpPt0\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n", |
|
1284 | 1284 | "\t<path d=\"M-1,-1 L1,1 M1,-1 L-1,1\" id=\"gpPt1\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n", |
|
1285 | 1285 | "\t<path d=\"M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1\" id=\"gpPt2\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n", |
|
1286 | 1286 | "\t<rect height=\"2\" id=\"gpPt3\" stroke=\"currentColor\" stroke-width=\"0.222\" width=\"2\" x=\"-1\" y=\"-1\"/>\n", |
|
1287 | 1287 | "\t<rect fill=\"currentColor\" height=\"2\" id=\"gpPt4\" stroke=\"currentColor\" stroke-width=\"0.222\" width=\"2\" x=\"-1\" y=\"-1\"/>\n", |
|
1288 | 1288 | "\t<circle cx=\"0\" cy=\"0\" id=\"gpPt5\" r=\"1\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n", |
|
1289 | 1289 | "\t<use fill=\"currentColor\" id=\"gpPt6\" stroke=\"none\" xlink:href=\"#gpPt5\"/>\n", |
|
1290 | 1290 | "\t<path d=\"M0,-1.33 L-1.33,0.67 L1.33,0.67 z\" id=\"gpPt7\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n", |
|
1291 | 1291 | "\t<use fill=\"currentColor\" id=\"gpPt8\" stroke=\"none\" xlink:href=\"#gpPt7\"/>\n", |
|
1292 | 1292 | "\t<use id=\"gpPt9\" stroke=\"currentColor\" transform=\"rotate(180)\" xlink:href=\"#gpPt7\"/>\n", |
|
1293 | 1293 | "\t<use fill=\"currentColor\" id=\"gpPt10\" stroke=\"none\" xlink:href=\"#gpPt9\"/>\n", |
|
1294 | 1294 | "\t<use id=\"gpPt11\" stroke=\"currentColor\" transform=\"rotate(45)\" xlink:href=\"#gpPt3\"/>\n", |
|
1295 | 1295 | "\t<use fill=\"currentColor\" id=\"gpPt12\" stroke=\"none\" xlink:href=\"#gpPt11\"/>\n", |
|
1296 | 1296 | "</defs>\n", |
|
1297 | 1297 | "<g style=\"fill:none; color:white; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter\">\n", |
|
1298 | 1298 | "</g>\n", |
|
1299 | 1299 | "<g style=\"fill:none; color:white; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n", |
|
1300 | 1300 | "</g>\n", |
|
1301 | 1301 | "<g style=\"fill:none; color:black; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n", |
|
1302 | 1302 | "\t<path d=\"M52.0,213.6 L64.5,213.6 M361.9,213.6 L349.4,213.6 \"/>\n", |
|
1303 | 1303 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,218.1)\">\n", |
|
1304 | 1304 | "\t\t<text><tspan>6</tspan>\n", |
|
1305 | 1305 | "\t\t</text>\n", |
|
1306 | 1306 | "\t</g>\n", |
|
1307 | 1307 | "\t<path d=\"M52.0,185.7 L64.5,185.7 M361.9,185.7 L349.4,185.7 \"/>\n", |
|
1308 | 1308 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,190.2)\">\n", |
|
1309 | 1309 | "\t\t<text><tspan>6.5</tspan>\n", |
|
1310 | 1310 | "\t\t</text>\n", |
|
1311 | 1311 | "\t</g>\n", |
|
1312 | 1312 | "\t<path d=\"M52.0,157.7 L64.5,157.7 M361.9,157.7 L349.4,157.7 \"/>\n", |
|
1313 | 1313 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,162.2)\">\n", |
|
1314 | 1314 | "\t\t<text><tspan>7</tspan>\n", |
|
1315 | 1315 | "\t\t</text>\n", |
|
1316 | 1316 | "\t</g>\n", |
|
1317 | 1317 | "\t<path d=\"M52.0,129.8 L64.5,129.8 M361.9,129.8 L349.4,129.8 \"/>\n", |
|
1318 | 1318 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,134.3)\">\n", |
|
1319 | 1319 | "\t\t<text><tspan>7.5</tspan>\n", |
|
1320 | 1320 | "\t\t</text>\n", |
|
1321 | 1321 | "\t</g>\n", |
|
1322 | 1322 | "\t<path d=\"M52.0,101.9 L64.5,101.9 M361.9,101.9 L349.4,101.9 \"/>\n", |
|
1323 | 1323 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,106.4)\">\n", |
|
1324 | 1324 | "\t\t<text><tspan>8</tspan>\n", |
|
1325 | 1325 | "\t\t</text>\n", |
|
1326 | 1326 | "\t</g>\n", |
|
1327 | 1327 | "\t<path d=\"M52.0,74.0 L64.5,74.0 M361.9,74.0 L349.4,74.0 \"/>\n", |
|
1328 | 1328 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,78.5)\">\n", |
|
1329 | 1329 | "\t\t<text><tspan>8.5</tspan>\n", |
|
1330 | 1330 | "\t\t</text>\n", |
|
1331 | 1331 | "\t</g>\n", |
|
1332 | 1332 | "\t<path d=\"M52.0,46.0 L64.5,46.0 M361.9,46.0 L349.4,46.0 \"/>\n", |
|
1333 | 1333 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,50.5)\">\n", |
|
1334 | 1334 | "\t\t<text><tspan>9</tspan>\n", |
|
1335 | 1335 | "\t\t</text>\n", |
|
1336 | 1336 | "\t</g>\n", |
|
1337 | 1337 | "\t<path d=\"M52.0,18.1 L64.5,18.1 M361.9,18.1 L349.4,18.1 \"/>\n", |
|
1338 | 1338 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,22.6)\">\n", |
|
1339 | 1339 | "\t\t<text><tspan>9.5</tspan>\n", |
|
1340 | 1340 | "\t\t</text>\n", |
|
1341 | 1341 | "\t</g>\n", |
|
1342 | 1342 | "\t<path d=\"M52.0,213.6 L52.0,201.1 M52.0,18.1 L52.0,30.6 \"/>\n", |
|
1343 | 1343 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(52.0,236.1)\">\n", |
|
1344 | 1344 | "\t\t<text><tspan>0</tspan>\n", |
|
1345 | 1345 | "\t\t</text>\n", |
|
1346 | 1346 | "\t</g>\n", |
|
1347 | 1347 | "\t<path d=\"M114.0,213.6 L114.0,201.1 M114.0,18.1 L114.0,30.6 \"/>\n", |
|
1348 | 1348 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(114.0,236.1)\">\n", |
|
1349 | 1349 | "\t\t<text><tspan>0.2</tspan>\n", |
|
1350 | 1350 | "\t\t</text>\n", |
|
1351 | 1351 | "\t</g>\n", |
|
1352 | 1352 | "\t<path d=\"M176.0,213.6 L176.0,201.1 M176.0,18.1 L176.0,30.6 \"/>\n", |
|
1353 | 1353 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(176.0,236.1)\">\n", |
|
1354 | 1354 | "\t\t<text><tspan>0.4</tspan>\n", |
|
1355 | 1355 | "\t\t</text>\n", |
|
1356 | 1356 | "\t</g>\n", |
|
1357 | 1357 | "\t<path d=\"M237.9,213.6 L237.9,201.1 M237.9,18.1 L237.9,30.6 \"/>\n", |
|
1358 | 1358 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(237.9,236.1)\">\n", |
|
1359 | 1359 | "\t\t<text><tspan>0.6</tspan>\n", |
|
1360 | 1360 | "\t\t</text>\n", |
|
1361 | 1361 | "\t</g>\n", |
|
1362 | 1362 | "\t<path d=\"M299.9,213.6 L299.9,201.1 M299.9,18.1 L299.9,30.6 \"/>\n", |
|
1363 | 1363 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(299.9,236.1)\">\n", |
|
1364 | 1364 | "\t\t<text><tspan>0.8</tspan>\n", |
|
1365 | 1365 | "\t\t</text>\n", |
|
1366 | 1366 | "\t</g>\n", |
|
1367 | 1367 | "\t<path d=\"M361.9,213.6 L361.9,201.1 M361.9,18.1 L361.9,30.6 \"/>\n", |
|
1368 | 1368 | "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(361.9,236.1)\">\n", |
|
1369 | 1369 | "\t\t<text><tspan>1</tspan>\n", |
|
1370 | 1370 | "\t\t</text>\n", |
|
1371 | 1371 | "\t</g>\n", |
|
1372 | 1372 | "\t<path d=\"M52.0,18.1 L52.0,213.6 L361.9,213.6 L361.9,18.1 L52.0,18.1 Z \"/>\n", |
|
1373 | 1373 | "</g>\n", |
|
1374 | 1374 | "\t<a xlink:title=\"Plot #1\">\n", |
|
1375 | 1375 | "<g style=\"fill:none; color:red; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n", |
|
1376 | 1376 | "\t<path d=\"M52.0,101.9 L55.1,102.0 L58.2,102.2 L61.3,102.5 L64.4,102.8 L67.5,103.3 L70.6,103.9 L73.7,104.5 L76.8,105.2 L79.9,106.1 L83.0,107.0 L86.1,108.0 L89.2,109.1 L92.3,110.3 L95.4,111.6 L98.5,112.9 L101.6,114.4 L104.7,115.9 L107.8,117.5 L110.9,119.2 L114.0,120.9 L117.1,122.8 L120.2,124.7 L123.3,126.6 L126.4,128.7 L129.5,130.8 L132.6,132.9 L135.7,135.2 L138.8,137.4 L141.9,139.8 L145.0,142.1 L148.1,144.5 L151.2,147.0 L154.3,149.5 L157.4,152.0 L160.5,154.5 L163.6,157.1 L166.7,159.6 L169.8,162.2 L172.9,164.8 L176.0,167.4 L179.1,170.0 L182.2,172.5 L185.3,175.1 L188.4,177.6 L191.5,180.1 L194.6,182.6 L197.7,185.0 L200.8,187.4 L203.9,189.7 L207.0,192.0 L210.0,194.1 L213.1,196.2 L216.2,198.3 L219.3,200.2 L222.4,202.0 L225.5,203.8 L228.6,205.4 L231.7,206.8 L234.8,208.2 L237.9,209.4 L241.0,210.5 L244.1,211.4 L247.2,212.1 L250.3,212.6 L253.4,213.0 L256.5,213.2 L259.6,213.2 L262.7,212.9 L265.8,212.4 L268.9,211.7 L272.0,210.8 L275.1,209.5 L278.2,208.1 L281.3,206.3 L284.4,204.3 L287.5,201.9 L290.6,199.3 L293.7,196.3 L296.8,193.0 L299.9,189.3 L303.0,185.3 L306.1,180.9 L309.2,176.1 L312.3,170.9 L315.4,165.4 L318.5,159.4 L321.6,152.9 L324.7,146.0 L327.8,138.7 L330.9,130.9 L334.0,122.6 L337.1,113.8 L340.2,104.5 L343.3,94.6 L346.4,84.3 L349.5,73.3 L352.6,61.8 L355.7,49.7 L358.8,37.0 L361.9,23.7 \" stroke=\"rgb( 0, 0, 255)\"/>\n", |
|
1377 | 1377 | "</g>\n", |
|
1378 | 1378 | "\t</a>\n", |
|
1379 | 1379 | "<g style=\"fill:none; color:black; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n", |
|
1380 | 1380 | "</g>\n", |
|
1381 | 1381 | "</svg>" |
|
1382 | 1382 | ] |
|
1383 | 1383 | } |
|
1384 | 1384 | ], |
|
1385 | 1385 | "prompt_number": 118 |
|
1386 | 1386 | }, |
|
1387 | 1387 | { |
|
1388 | 1388 | "cell_type": "markdown", |
|
1389 | 1389 | "metadata": {}, |
|
1390 | 1390 | "source": [ |
|
1391 | 1391 | "The plot size is adjusted using the `-s` flag:" |
|
1392 | 1392 | ] |
|
1393 | 1393 | }, |
|
1394 | 1394 | { |
|
1395 | 1395 | "cell_type": "code", |
|
1396 | 1396 | "collapsed": false, |
|
1397 | 1397 | "input": [ |
|
1398 | 1398 | "%%octave -s 500,500\n", |
|
1399 | 1399 | "\n", |
|
1400 | 1400 | "# butterworth filter, order 2, cutoff pi/2 radians\n", |
|
1401 | 1401 | "b = [0.292893218813452 0.585786437626905 0.292893218813452];\n", |
|
1402 | 1402 | "a = [1 0 0.171572875253810];\n", |
|
1403 | 1403 | "freqz(b, a, 32);" |
|
1404 | 1404 | ], |
|
1405 | 1405 | "language": "python", |
|
1406 | 1406 | "metadata": {}, |
|
1407 | 1407 | "outputs": [ |
|
1408 | 1408 | { |
|
1409 | 1409 | "output_type": "display_data", |
|
1410 | 1410 | "png": "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\nFaCsDL6+YG8PPJfzQBBeyMN3p7W1VSLekZa1Hb2iZtw4CAqCsLDa6GhoboavvoKICOC8GCVqRs7n\nLFmv2JCH4F5WViYR70jL2o5esXnpdJg/H7Zvh7g40NSEHTsgMhJSUoDFEq1XhK2jV+zgmDuCyAAE\nATduwB9/QEcH6OvD3Lkwbpyk+4S8irQFIhxzRxAZgEL5Z2i+qQny8uD4cejshGnTwMMDZ80jbwCD\nO4LIGFpasGQJAACbDSUlsHs3NDWBvj4sXgxjx0q6c4jUIA9j7vn5+RLxjrSs7eiVNq+CAtjaQmQk\nxMWBlxf8+it89RXEx0NJiWi9wmWkecWGPIy5R0ZG7ty5U/xeucnajl558ra1QU4OkJMM3nsP3NzA\nwEAcXoGRGy+OuQsfOp0uEe9Iy9qOXpnwqqnB4sWweDEAAIsFRUVQUQHt7TB+PPj4/PMerNC9AjPS\nvGJDHoI7giBvREcHlix5MUBfVQVZWVBVBQQB06aBlxcMtiIfItvIw5j7oAu+i4hz586hF72y4jUx\ngaAgiIuDmBjQ0oLvvoOYGNi9G27cgP5+EXoHZaR5xYY83Ll3dHRIxDvSsrajVz68NBq4uoKrKwBA\nRwdcugTffAP9/XDz5hgGA2bOBCUlkfoHIq+fs8SRhweq0vYcA0FkkefP4fJl+OsvaG8HbW2YMwem\nTMHFbYaAtAUiIf/T1dfXr1u3zs7OTkVFhUKh1NTUcNfm5uZSXmXAMw0Wi7VixQotLS0Gg+Hl5VVZ\nWSnc7iEI8jZUVcHNDb78EuLiIDAQbt+GrVshJgYOHYI7dyTdOWToCHlYpqqqKj09ffr06XZ2dgUF\nBW88JiEhwfDlqqbKXK/W9fb2enh4sFis+Ph4BoMRGxvr7OxcVlamq6sr3E4iCMIbfX0IDHyx/ewZ\n/Pe/kJEBfX1ApcKMGTBrFqioSLR/CD8IN/cHm80mNxITEwGgurqauzYnJwcAbt68+cZzU1NTASA/\nP58sPnr0iEqlbtiwYVCpra3tsDotKHKTtR296OXT295O5OQQ27YRGzcSGzcSP/9MPHkiDq8oELpX\n2jIxiWrM/dtvvw0NDa2urjY2NubszM3NdXd3v3nzpomJCTluw32Kn5/flStX6urqOHvmzZt39+7d\nQSfDSNtQF4KMBNrb4dIluHwZWlpAWRlsbMDeHoyMJN0tySFtgUgCs2UcHBxaW1vpdLqnp+euXbtM\n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\n3r33339fXV3dxsampKREQ0PD2NgYAFpaWkpLS52cnMjDioqKrK2tyUuoqalpaWmxsbEhqzIzMxcs\nWEBuD2ghIyNDWVl5OC0I1oeKigrSK5Sr4L8FgiBIr9A/Sd4t1NTUkF6hf5K8WygsLFRWVhb1v+br\nLWRnZysrK4vzG0W2kJ2d3dnZKc5vFNlCdnZ2ZWWlOL9RZAvZ2dnnzp0bUgslJSUPHz58PcKQ25Ja\nmP6tEIJy+fLlt7XT1dXl6emprq7+999/c+8fP368p6cn956IiAgKhdLR0TFoLYIgCMI/gt+5W1hY\nFBcXv76/p6fnww8/vHjx4h9//DFlypQBp1y9epV7T3l5uYmJiYqKyqC1CIIgCP8IPuaupqbmwAW5\ns6+vb9myZXl5eVlZWXZ2dgNO8fX1raurKyoqIot1dXV5eXmcn0W8axEEQRD+EfJ67p988smBAweC\ngoLc3d05O83MzMhBrt7eXltb26dPn27fvl1VVTU2NrahoaG0tFRPT2/QWgRBEGQICHeUZ8BcRpLg\n4GDOAY8fPw4ICNDQ0KDT6R4eHhUVFdyn865FEARB+EQeMjEhCIIgA8BVIREEQeQQDO4IgiByCAZ3\nBEEQOQSDO4IgiByCwR1BEEQOweCOIAgih8hwcBdDTj7+FfX19evWrbOzs1NRUaFQKDU1NeLxDprX\nUETeixcv+vj4jB07lkaj6enp+fr6Dlg6QkRebvz8/CgUyscffywGb25uLuVVhrNK1FCv9+zZs46O\njgwGQ11d3c7OjvMWt+i8CxcupLzGjBkzRO0FgKKiIldX13feeWf06NHTp08/fvy4YNKheouLi52c\nnOh0uqam5rJlyzhZKGQYSU+0F5Cenh5ra2s9Pb0DBw6kp6dbWVnp6Og8fvxYUori4mIdHR1vb28y\n2Uh1dbV4vE5OTjY2Nlu3bk1NTY2MjKTT6e+9996zZ89E7T169OiHH364c+fO1NTUuLg4ExMTKpU6\nYJ04UXg5ZGZmamlpUanUjz76SADpUL05OTkAkJCQkPGS06dPi8FLEMS+ffsAwN3dPTExMTk5OTg4\n+MSJE6L2Xrp0KYOLuLg4AIiKihK19+rVq1Qqddq0aWlpaSdPniRXC09LSxO196+//lJSUpoxY8ax\nY8d+/PFHQ0NDMzOztrY2AbzSg6wG99TUVADIz88ni48ePaJSqRs2bJCUgs1mkxuJiYnDDO5D8t6+\n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\nY2RHRMr/A5YdmP24XbLsAAAAAElFTkSuQmCC\n" |
|
1411 | 1411 | } |
|
1412 | 1412 | ], |
|
1413 | 1413 | "prompt_number": 119 |
|
1414 | 1414 | }, |
|
1415 | 1415 | { |
|
1416 | 1416 | "cell_type": "code", |
|
1417 | 1417 | "collapsed": false, |
|
1418 | 1418 | "input": [ |
|
1419 | 1419 | "%%octave -s 600,200 -f png\n", |
|
1420 | 1420 | "\n", |
|
1421 | 1421 | "subplot(121);\n", |
|
1422 | 1422 | "[x, y] = meshgrid(0:0.1:3);\n", |
|
1423 | 1423 | "r = sin(x - 0.5).^2 + cos(y - 0.5).^2;\n", |
|
1424 | 1424 | "surf(x, y, r);\n", |
|
1425 | 1425 | "\n", |
|
1426 | 1426 | "subplot(122);\n", |
|
1427 | 1427 | "sombrero()" |
|
1428 | 1428 | ], |
|
1429 | 1429 | "language": "python", |
|
1430 | 1430 | "metadata": {}, |
|
1431 | 1431 | "outputs": [ |
|
1432 | 1432 | { |
|
1433 | 1433 | "output_type": "display_data", |
|
1434 | 1434 | "png": "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\nFhMTs2bNmrCwsIiIiA0bzCthiQAAEHhJREFUNtTI10Z1R5jaCNLWKKjuP4gavvI3b94cNGhQYGDg\nj08zWz7+9ebNmwcOHPjBDajAkydPvLy8pk+fXkHmPjExcdu2bWFhYatWrQoPD9fguqIaWkK/Or8N\nYa1QxRBWoPIcQigUxsXFBQYGfnMULJVKk5KSJkyYoGKnlEql4eHh5etU2xBKJBI/P7/yM7DHjx+r\n7iauOm/evFmwYMGECRPkLrUBAQE+Pj7qrfBUprrMzLUUpFUjqO4/hXpBYzKZ7ObNm0FBQX/99ZcG\n1c6qJCIi4psi7IWFhT9mXbRKcnNzw8LCvL29g4OD58yZM2fOnGHDhml8MFol/4Vlj99eoz+a7t27\nm5mZ3bp1a9q0aUlJSampqQKB4N27d2vWrLl165ajo2PXrl0XLlxYPiHfhw8fVqxYUa9ePQqF0rZt\n29DQUCMjI1WuRaFQ/P395a9Jkrx7926NmvrmzZuTJ0/OmjULAJVK3bhxY/lPbWxsFOkeCwsL5Qsp\ntUEikcTHx9+6dSszM7O4uNjc3DwgIKCWdVbg9u3bAFq2bFnhuiNGjLhy5UpsbGznzp2/2Uga7f/f\nNefPn//06dP48eM1285/GXp6egUFBeWP5OfnEwShPLUnQRBdu3bt2rXrmzdvfHx86HR6eHi4np6e\nplq1dOnSOXPmMBgMANOmTftm+ZcvX757927YsGGaaoDq3L9/Pz4+vrCw8P3795aWljNmzPiR6R7l\nj6ykpKQfdsUfz78nMe8/wvr16/39/d+9e9ewYUPVzzIxMTEyMsrIyOjQoQOfz7927Vr5GlJTUw8d\nOsTj8QwNDbOzsyUSiaGhobGxceV4xBohlUqPHj368uVL5Yl579279/XrVzc3txpVvmrVqvj4+LCw\nsFatWtW0YRkZGbGxsRcuXDAxMRk4cKCFhcX69evLDxGU/LbynLHljxgYGFQX+FFdZmZvb+9du3b5\n+PiUr6pJkyatW7cGcOnSJRcXl/37948aNQpA3759jY2NbW1teTze/fv3d+7caWhoeP/+/RqFE/zX\nGDJkSFJSUkZGhuKIi4vLy5cvX79+rXolmZmZe/fuLS0t9fPzMzY2VqMZBQUFt2/fdnV1lb/Ny8tT\nhE/UlOzsbB6PVyH/s2bJz8+/fPnyqVOnhELhiBEjevXqVV1C4Ozs7MDAwPPnzyvSLKudhro6TExM\n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\n" |
|
1435 | 1435 | } |
|
1436 | 1436 | ], |
|
1437 | 1437 | "prompt_number": 120 |
|
1438 | 1438 | } |
|
1439 | 1439 | ], |
|
1440 | 1440 | "metadata": {} |
|
1441 | 1441 | } |
|
1442 | 1442 | ] |
|
1443 | 1443 | } No newline at end of file |
@@ -1,930 +1,930 b'' | |||
|
1 | 1 | { |
|
2 | 2 | "metadata": { |
|
3 | 3 | "name": "" |
|
4 | 4 | }, |
|
5 | 5 | "nbformat": 3, |
|
6 | 6 | "nbformat_minor": 0, |
|
7 | 7 | "worksheets": [ |
|
8 | 8 | { |
|
9 | 9 | "cells": [ |
|
10 | 10 | { |
|
11 | 11 | "cell_type": "heading", |
|
12 | 12 | "level": 1, |
|
13 | 13 | "metadata": {}, |
|
14 | 14 | "source": [ |
|
15 | 15 | "Using R Within the IPython Notebok" |
|
16 | 16 | ] |
|
17 | 17 | }, |
|
18 | 18 | { |
|
19 | 19 | "cell_type": "markdown", |
|
20 | 20 | "metadata": {}, |
|
21 | 21 | "source": [ |
|
22 | 22 | "Using the `rmagic` extension, users can run R code from within the IPython Notebook. This example Notebook demonstrates this capability. " |
|
23 | 23 | ] |
|
24 | 24 | }, |
|
25 | 25 | { |
|
26 | 26 | "cell_type": "code", |
|
27 | 27 | "collapsed": false, |
|
28 | 28 | "input": [ |
|
29 | 29 | "%matplotlib inline" |
|
30 | 30 | ], |
|
31 | 31 | "language": "python", |
|
32 | 32 | "metadata": {}, |
|
33 | 33 | "outputs": [], |
|
34 | 34 | "prompt_number": 1 |
|
35 | 35 | }, |
|
36 | 36 | { |
|
37 | 37 | "cell_type": "heading", |
|
38 | 38 | "level": 2, |
|
39 | 39 | "metadata": {}, |
|
40 | 40 | "source": [ |
|
41 | 41 | "Line magics" |
|
42 | 42 | ] |
|
43 | 43 | }, |
|
44 | 44 | { |
|
45 | 45 | "cell_type": "markdown", |
|
46 | 46 | "metadata": {}, |
|
47 | 47 | "source": [ |
|
48 | 48 | "IPython has an `rmagic` extension that contains a some magic functions for working with R via rpy2. This extension can be loaded using the `%load_ext` magic as follows:" |
|
49 | 49 | ] |
|
50 | 50 | }, |
|
51 | 51 | { |
|
52 | 52 | "cell_type": "code", |
|
53 | 53 | "collapsed": true, |
|
54 | 54 | "input": [ |
|
55 | 55 | "%load_ext rmagic " |
|
56 | 56 | ], |
|
57 | 57 | "language": "python", |
|
58 | 58 | "metadata": {}, |
|
59 | 59 | "outputs": [], |
|
60 | 60 | "prompt_number": 2 |
|
61 | 61 | }, |
|
62 | 62 | { |
|
63 | 63 | "cell_type": "markdown", |
|
64 | 64 | "metadata": {}, |
|
65 | 65 | "source": [ |
|
66 | 66 | "A typical use case one imagines is having some numpy arrays, wanting to compute some statistics of interest on these\n", |
|
67 | 67 | " arrays and return the result back to python. Let's suppose we just want to fit a simple linear model to a scatterplot." |
|
68 | 68 | ] |
|
69 | 69 | }, |
|
70 | 70 | { |
|
71 | 71 | "cell_type": "code", |
|
72 | 72 | "collapsed": false, |
|
73 | 73 | "input": [ |
|
74 | 74 | "import numpy as np\n", |
|
75 | 75 | "import matplotlib.pyplot as plt\n", |
|
76 | 76 | "X = np.array([0,1,2,3,4])\n", |
|
77 | 77 | "Y = np.array([3,5,4,6,7])\n", |
|
78 | 78 | "plt.scatter(X, Y)" |
|
79 | 79 | ], |
|
80 | 80 | "language": "python", |
|
81 | 81 | "metadata": {}, |
|
82 | 82 | "outputs": [ |
|
83 | 83 | { |
|
84 | 84 | "metadata": {}, |
|
85 | 85 | "output_type": "pyout", |
|
86 | 86 | "prompt_number": 3, |
|
87 | 87 | "text": [ |
|
88 | 88 | "<matplotlib.collections.PathCollection at 0x107efe2d0>" |
|
89 | 89 | ] |
|
90 | 90 | }, |
|
91 | 91 | { |
|
92 | 92 | "metadata": {}, |
|
93 | 93 | "output_type": "display_data", |
|
94 | 94 | "png": "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\nH7s1AAAAAElFTkSuQmCC\n", |
|
95 | 95 | "text": [ |
|
96 | 96 | "<matplotlib.figure.Figure at 0x108019350>" |
|
97 | 97 | ] |
|
98 | 98 | } |
|
99 | 99 | ], |
|
100 | 100 | "prompt_number": 3 |
|
101 | 101 | }, |
|
102 | 102 | { |
|
103 | 103 | "cell_type": "markdown", |
|
104 | 104 | "metadata": {}, |
|
105 | 105 | "source": [ |
|
106 | 106 | "We can accomplish this by first pushing variables to R, fitting a model and returning the results. The line magic %Rpush copies its arguments to variables of the same name in rpy2. The %R line magic evaluates the string in rpy2 and returns the results. In this case, the coefficients of a linear model." |
|
107 | 107 | ] |
|
108 | 108 | }, |
|
109 | 109 | { |
|
110 | 110 | "cell_type": "code", |
|
111 | 111 | "collapsed": false, |
|
112 | 112 | "input": [ |
|
113 | 113 | "%Rpush X Y\n", |
|
114 | 114 | "%R lm(Y~X)$coef" |
|
115 | 115 | ], |
|
116 | 116 | "language": "python", |
|
117 | 117 | "metadata": {}, |
|
118 | 118 | "outputs": [ |
|
119 | 119 | { |
|
120 | 120 | "output_type": "pyout", |
|
121 | 121 | "prompt_number": 3, |
|
122 | 122 | "text": [ |
|
123 | 123 | "array([ 3.2, 0.9])" |
|
124 | 124 | ] |
|
125 | 125 | } |
|
126 | 126 | ], |
|
127 | 127 | "prompt_number": 3 |
|
128 | 128 | }, |
|
129 | 129 | { |
|
130 | 130 | "cell_type": "markdown", |
|
131 | 131 | "metadata": {}, |
|
132 | 132 | "source": [ |
|
133 | 133 | "We can check that this is correct fairly easily:" |
|
134 | 134 | ] |
|
135 | 135 | }, |
|
136 | 136 | { |
|
137 | 137 | "cell_type": "code", |
|
138 | 138 | "collapsed": false, |
|
139 | 139 | "input": [ |
|
140 | 140 | "Xr = X - X.mean(); Yr = Y - Y.mean()\n", |
|
141 | 141 | "slope = (Xr*Yr).sum() / (Xr**2).sum()\n", |
|
142 | 142 | "intercept = Y.mean() - X.mean() * slope\n", |
|
143 | 143 | "(intercept, slope)" |
|
144 | 144 | ], |
|
145 | 145 | "language": "python", |
|
146 | 146 | "metadata": {}, |
|
147 | 147 | "outputs": [ |
|
148 | 148 | { |
|
149 | 149 | "output_type": "pyout", |
|
150 | 150 | "prompt_number": 4, |
|
151 | 151 | "text": [ |
|
152 | 152 | "(3.2000000000000002, 0.90000000000000002)" |
|
153 | 153 | ] |
|
154 | 154 | } |
|
155 | 155 | ], |
|
156 | 156 | "prompt_number": 4 |
|
157 | 157 | }, |
|
158 | 158 | { |
|
159 | 159 | "cell_type": "markdown", |
|
160 | 160 | "metadata": {}, |
|
161 | 161 | "source": [ |
|
162 | 162 | "It is also possible to return more than one value with %R." |
|
163 | 163 | ] |
|
164 | 164 | }, |
|
165 | 165 | { |
|
166 | 166 | "cell_type": "code", |
|
167 | 167 | "collapsed": false, |
|
168 | 168 | "input": [ |
|
169 | 169 | "%R resid(lm(Y~X)); coef(lm(X~Y))\n" |
|
170 | 170 | ], |
|
171 | 171 | "language": "python", |
|
172 | 172 | "metadata": {}, |
|
173 | 173 | "outputs": [ |
|
174 | 174 | { |
|
175 | 175 | "output_type": "pyout", |
|
176 | 176 | "prompt_number": 5, |
|
177 | 177 | "text": [ |
|
178 | 178 | "array([-2.5, 0.9])" |
|
179 | 179 | ] |
|
180 | 180 | } |
|
181 | 181 | ], |
|
182 | 182 | "prompt_number": 5 |
|
183 | 183 | }, |
|
184 | 184 | { |
|
185 | 185 | "cell_type": "markdown", |
|
186 | 186 | "metadata": {}, |
|
187 | 187 | "source": [ |
|
188 | 188 | "One can also easily capture the results of %R into python objects. Like R, the return value of this multiline expression (multiline in the sense that it is separated by ';') is the final value, which is \n", |
|
189 | 189 | "the *coef(lm(X~Y))*. To pull other variables from R, there is one more magic." |
|
190 | 190 | ] |
|
191 | 191 | }, |
|
192 | 192 | { |
|
193 | 193 | "cell_type": "markdown", |
|
194 | 194 | "metadata": {}, |
|
195 | 195 | "source": [ |
|
196 | 196 | "There are two more line magics, %Rpull and %Rget. Both are useful after some R code has been executed and there are variables\n", |
|
197 | 197 | "in the rpy2 namespace that one would like to retrieve. The main difference is that one\n", |
|
198 | 198 | " returns the value (%Rget), while the other pulls it to self.shell.user_ns (%Rpull). Imagine we've stored the results\n", |
|
199 | 199 | "of some calculation in the variable \"a\" in rpy2's namespace. By using the %R magic, we can obtain these results and\n", |
|
200 | 200 | "store them in b. We can also pull them directly to user_ns with %Rpull. They are both views on the same data." |
|
201 | 201 | ] |
|
202 | 202 | }, |
|
203 | 203 | { |
|
204 | 204 | "cell_type": "code", |
|
205 | 205 | "collapsed": false, |
|
206 | 206 | "input": [ |
|
207 | 207 | "b = %R a=resid(lm(Y~X))\n", |
|
208 | 208 | "%Rpull a\n", |
|
209 | 209 | "print(a)\n", |
|
210 | 210 | "assert id(b.data) == id(a.data)\n", |
|
211 | 211 | "%R -o a" |
|
212 | 212 | ], |
|
213 | 213 | "language": "python", |
|
214 | 214 | "metadata": {}, |
|
215 | 215 | "outputs": [ |
|
216 | 216 | { |
|
217 | 217 | "output_type": "stream", |
|
218 | 218 | "stream": "stdout", |
|
219 | 219 | "text": [ |
|
220 | 220 | "[-0.2 0.9 -1. 0.1 0.2]\n" |
|
221 | 221 | ] |
|
222 | 222 | } |
|
223 | 223 | ], |
|
224 | 224 | "prompt_number": 6 |
|
225 | 225 | }, |
|
226 | 226 | { |
|
227 | 227 | "cell_type": "markdown", |
|
228 | 228 | "metadata": {}, |
|
229 | 229 | "source": [ |
|
230 | 230 | "%Rpull is equivalent to calling %R with just -o\n" |
|
231 | 231 | ] |
|
232 | 232 | }, |
|
233 | 233 | { |
|
234 | 234 | "cell_type": "code", |
|
235 | 235 | "collapsed": false, |
|
236 | 236 | "input": [ |
|
237 | 237 | "%R d=resid(lm(Y~X)); e=coef(lm(Y~X))\n", |
|
238 | 238 | "%R -o d -o e\n", |
|
239 | 239 | "%Rpull e\n", |
|
240 | 240 | "print(d)\n", |
|
241 | 241 | "print(e)\n", |
|
242 | 242 | "import numpy as np\n", |
|
243 | 243 | "np.testing.assert_almost_equal(d, a)" |
|
244 | 244 | ], |
|
245 | 245 | "language": "python", |
|
246 | 246 | "metadata": {}, |
|
247 | 247 | "outputs": [ |
|
248 | 248 | { |
|
249 | 249 | "output_type": "stream", |
|
250 | 250 | "stream": "stdout", |
|
251 | 251 | "text": [ |
|
252 | 252 | "[-0.2 0.9 -1. 0.1 0.2]\n", |
|
253 | 253 | "[ 3.2 0.9]\n" |
|
254 | 254 | ] |
|
255 | 255 | } |
|
256 | 256 | ], |
|
257 | 257 | "prompt_number": 7 |
|
258 | 258 | }, |
|
259 | 259 | { |
|
260 | 260 | "cell_type": "markdown", |
|
261 | 261 | "metadata": {}, |
|
262 | 262 | "source": [ |
|
263 | 263 | "On the other hand %Rpush is equivalent to calling %R with just -i and no trailing code." |
|
264 | 264 | ] |
|
265 | 265 | }, |
|
266 | 266 | { |
|
267 | 267 | "cell_type": "code", |
|
268 | 268 | "collapsed": false, |
|
269 | 269 | "input": [ |
|
270 | 270 | "A = np.arange(20)\n", |
|
271 | 271 | "%R -i A\n", |
|
272 | 272 | "%R mean(A)\n" |
|
273 | 273 | ], |
|
274 | 274 | "language": "python", |
|
275 | 275 | "metadata": {}, |
|
276 | 276 | "outputs": [ |
|
277 | 277 | { |
|
278 | 278 | "output_type": "pyout", |
|
279 | 279 | "prompt_number": 8, |
|
280 | 280 | "text": [ |
|
281 | 281 | "array([ 9.5])" |
|
282 | 282 | ] |
|
283 | 283 | } |
|
284 | 284 | ], |
|
285 | 285 | "prompt_number": 8 |
|
286 | 286 | }, |
|
287 | 287 | { |
|
288 | 288 | "cell_type": "markdown", |
|
289 | 289 | "metadata": {}, |
|
290 | 290 | "source": [ |
|
291 | 291 | "The magic %Rget retrieves one variable from R." |
|
292 | 292 | ] |
|
293 | 293 | }, |
|
294 | 294 | { |
|
295 | 295 | "cell_type": "code", |
|
296 | 296 | "collapsed": false, |
|
297 | 297 | "input": [ |
|
298 | 298 | "%Rget A" |
|
299 | 299 | ], |
|
300 | 300 | "language": "python", |
|
301 | 301 | "metadata": {}, |
|
302 | 302 | "outputs": [ |
|
303 | 303 | { |
|
304 | 304 | "output_type": "pyout", |
|
305 | 305 | "prompt_number": 9, |
|
306 | 306 | "text": [ |
|
307 | 307 | "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n", |
|
308 | 308 | " 17, 18, 19], dtype=int32)" |
|
309 | 309 | ] |
|
310 | 310 | } |
|
311 | 311 | ], |
|
312 | 312 | "prompt_number": 9 |
|
313 | 313 | }, |
|
314 | 314 | { |
|
315 | 315 | "cell_type": "heading", |
|
316 | 316 | "level": 2, |
|
317 | 317 | "metadata": {}, |
|
318 | 318 | "source": [ |
|
319 | 319 | "Plotting and capturing output" |
|
320 | 320 | ] |
|
321 | 321 | }, |
|
322 | 322 | { |
|
323 | 323 | "cell_type": "markdown", |
|
324 | 324 | "metadata": {}, |
|
325 | 325 | "source": [ |
|
326 |
"R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files |
|
|
326 | "R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files, as with `%matplotlib inline`. As a call to %R may produce a return value (see above) we must ask what happens to a magic like the one below. The R code specifies that something is published to the notebook. If anything is published to the notebook, that call to %R returns None." | |
|
327 | 327 | ] |
|
328 | 328 | }, |
|
329 | 329 | { |
|
330 | 330 | "cell_type": "code", |
|
331 | 331 | "collapsed": false, |
|
332 | 332 | "input": [ |
|
333 | 333 | "from __future__ import print_function\n", |
|
334 | 334 | "v1 = %R plot(X,Y); print(summary(lm(Y~X))); vv=mean(X)*mean(Y)\n", |
|
335 | 335 | "print('v1 is:', v1)\n", |
|
336 | 336 | "v2 = %R mean(X)*mean(Y)\n", |
|
337 | 337 | "print('v2 is:', v2)" |
|
338 | 338 | ], |
|
339 | 339 | "language": "python", |
|
340 | 340 | "metadata": {}, |
|
341 | 341 | "outputs": [ |
|
342 | 342 | { |
|
343 | 343 | "output_type": "display_data", |
|
344 | 344 | "text": [ |
|
345 | 345 | "\n", |
|
346 | 346 | "Call:\n", |
|
347 | 347 | "lm(formula = Y ~ X)\n", |
|
348 | 348 | "\n", |
|
349 | 349 | "Residuals:\n", |
|
350 | 350 | " 1 2 3 4 5 \n", |
|
351 | 351 | "-0.2 0.9 -1.0 0.1 0.2 \n", |
|
352 | 352 | "\n", |
|
353 | 353 | "Coefficients:\n", |
|
354 | 354 | " Estimate Std. Error t value Pr(>|t|) \n", |
|
355 | 355 | "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n", |
|
356 | 356 | "X 0.9000 0.2517 3.576 0.0374 *\n", |
|
357 | 357 | "---\n", |
|
358 | 358 | "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1 \n", |
|
359 | 359 | "\n", |
|
360 | 360 | "Residual standard error: 0.7958 on 3 degrees of freedom\n", |
|
361 | 361 | "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n", |
|
362 | 362 | "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739 \n", |
|
363 | 363 | "\n" |
|
364 | 364 | ] |
|
365 | 365 | }, |
|
366 | 366 | { |
|
367 | 367 | "output_type": "display_data", |
|
368 | 368 | "png": "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\nUpK06OAUzDPgiIjOnTvHggULYtWqVTFjxoz41re+FevWrYshQ4bEQw899B9/vmvXrtG1a9f9nnv5\n5Zdj/fr1h3oyAEkGDBgQEyZMiEceeSSaNGkS8+bNi5tvvvmgnrhlKqgA/9spp5wSU6dOjalTp8aO\nHTti06ZN2ZMAKDBlZWWxYcOGOOOMM6Jr167RvHnzeO+996JFixbZ02qlIAI8YcKE6Nix437PNWvW\nLJo1a1bHiwD4NBg5cmSMHDkye8Z/pSACPHDgwOwJAFCnCuZNWABQnwgwACQQYABIIMAAkECAASCB\nAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABI\nIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgA\nEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEG\ngAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECA\nASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJGmUPOJCdO3dG\nw4YNo6SkJHsKwEGprq6OGTNmxC9/+cs44ogj4rrrroszzzwzexYFpiCeAa9bty4GDx4cy5Ytiw0b\nNsTQoUOjXbt2cdRRR8WQIUNi9+7d2RMBam3w4MGxYMGCmDx5cowZMya+//3vx4svvpg9iwJTEAG+\n9dZb4/jjj4/Pf/7zcd9990VVVVWsXLky3nzzzdi+fXtMmjSpVteprq6Oqqqq/X5VV1dHTU3NYf6X\nAPXd66+/Hu+++248+eST0alTp+jevXvMmDEj7rvvvuxpFJiCuAX92muvxapVq+KII46IZ555JubN\nmxelpaURETFp0qQYMWJEra4zc+bMmDNnzn7PrV69Ok488cRDNRlgvyorK6N3794fO9ahQ4eorq5O\nWkShKogAd+3aNWbNmhXXXHNN9OzZM+bPnx+jR4+OiIgXXnghunTpUqvrDB06NIYOHbrfc2PHjo31\n69cfss0A+9O1a9e49957Y9OmTXHsscdGRMSiRYviww8/TF5GoSmIAE+bNi2+/vWvx8MPPxydO3eO\nG2+8MR555JH4zGc+E9u2bYvXXnsteyJArZxwwgkxdOjQaN26dcyePTu2bt0azz77bDz55JPZ0ygw\nBRHgk08+Od56661YsGBBrF69Oo4//vg4+uijo0uXLtG3b99o1KggZgLUSv/+/WP58uWxaNGiaNKk\nSZSXl+97Ngz/VjBla9CgQVx00UVx0UUXZU8B+J917949unfvnj2DAlYQ74IGgPpGgAEggQADQAIB\nBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\ngAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\nEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\nCQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\nQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASPCJ\nAN90002xffv2jC3UY5WVlfHyyy/HwoUL46OPPsqeA3DYfSLA69ati9NOOy0WLVqUsWefDRs2RFVV\nVeoG6sbatWvj0ksvjddffz0qKiqiZcuWsX79+uxZAIfVJwL8+OOPxx133BFlZWUxYcKE2L1792Ef\nMXjw4Fi1alVERKxevTr69u0bHTt2jHbt2sWoUaNiz549h30DOT766KM47bTT4rvf/W5873vfiylT\npsTMmTNjwoQJsXfv3ux5AIdNo/0dHDhwYHz1q1+NG2+8Mc4666y4/PLL95079dRT49JLLz2kI1au\nXBk7duyIiIgpU6bEKaecErNnz46NGzfGuHHjYsqUKXHrrbf+x+s899xzsWDBgv2eW7RoURx77LGH\ndDf/uz//+c9x1VVXRe/evfcdGzRoUDz33HPx/vvvR8eOHRPXARw++w1wRESDBg2ipKQk1q9fHytX\nrtx3vHnz5od10EsvvRRr1qyJFi1axDHHHBOTJ0+OcePG1SrAPXr0iJNOOmm/5yorK/dFnsLRuHHj\nqKys/Nix6urqWLt2bTRp0iRpFcDht98Al5eXx/XXXx9f/vKXY8WKFdGmTZvDPmTJkiXRvn37OOec\nc2LTpk3RokWLiIhYsWJFnH766bW6Rtu2baNt27b7Pde6dWuvKRegLl26xMknnxy33357TJgwIaqq\nquIrX/lK9OzZM1q3bp09D+Cw+USAr7jiiqioqIj7778/vvnNb9bJiKuuuiqef/75mDRpUmzdujUa\nN24c5eXlcdttt8W0adOioqKiTnaQY9KkSXH99dfHxRdfHE2bNo0hQ4bE8OHDs2cBHFafCHCrVq3i\nj3/84wGfSR4O48ePj/Hjx0dExN///vfYtm1bRET06dMnbrzxxsN+25tcDRs2jGnTpmXPAKhTnwjw\ngw8+mLFjnw4dOkSHDh0iIuKcc85J3QIAh4vfhAUACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIB\nBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\ngAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\nEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\nCQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\nQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEBRvgnTt3xrZt27JnQFFZtmxZ\nDBw4MPr06RNlZWWxadOm7ElQbxVsgOfOnRvjxo3LngFF469//WvccMMNMX78+Hj22Wdj6NChcfnl\nl8fmzZuzp0G91Ch7QEREly5dYuPGjR87tnv37qiqqoq5c+dG//79Y+bMmf/xOlu2bInKysr9ntu6\ndWvs2bPnkOyFT6O77ror7rjjjjjzzDMjIuJrX/tavPPOO/HYY4/F6NGjk9dB/VMQAZ45c2YMGTIk\nBg0aFFdffXVERMybNy+WLl0aP/jBD6JZs2a1uk5FRUXMnz9/v+d+85vfRNu2bQ/ZZvi0+fDDD6Nd\nu3YfO1ZaWhqrV69OWgT1W0EE+Pzzz49ly5bFqFGjYty4cfHAAw9E69ato3nz5nHCCSfU+jplZWVR\nVla233Njx46N9evXH6rJ8KnTo0eP+OEPfxgzZsyIiH/dZfrOd74Tc+fOTV4G9VNBBDgiomXLljFr\n1qx44okn4oILLogePXpEw4YNs2dB0Rg2bFjMnz8/evfuHf37948FCxbExIkTo1evXtnToF4qmAD/\n2+WXXx7nnXdejBw5Mrp37549B4pGw4YN47nnnouKiorYvHlzTJw4Mc4444zsWVBvFVyAI/71utTz\nzz+fPQOK0oUXXpg9AYgC/hgSABQzAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaA\nBAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIAB\nIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBg\nAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkE\nGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0AC\nAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIEGj7AGF7qWXXor3338/jjvuuOjTp0/2HACKRME+\nA967d29s27YtdcPVV18dTz31VJSUlMRdd90Vl112WVRXV6duAqA4FESA9+zZE1OmTIkhQ4bEG2+8\nEXPmzIm2bdvGUUcdFZdeemns2rWrzjeVl5fHW2+9FQ899FAMGjQofvGLX0TLli3jpz/9aZ1vAaD4\nFMQt6JtuuinefvvtOOOMM+KKK66IRo0axdy5c6O0tDTGjh0b8+bNiyuuuOI/Xmf27Nnx9NNP7/fc\nm2++GaWlpbXetHz58rjnnns+dmz48OHx+OOP1/oaAHAgBRHg+fPnx7Jly6Jly5bRpEmT+OCDD+LL\nX/5yRERMnjw5Jk6cWKsAX3bZZXHJJZfs99yTTz4ZO3bsqPWmli1bxurVq+P888/fd+z3v/99tGzZ\nstbXAIADKYgAn3TSSbFq1ao4++yz45prrom//e1v+86tWLEiOnfuXKvrNG7cOBo3brzfcy1btoy9\ne/fWetOwYcOirKws2rVrF2effXYsWrQoRowYEZWVlbW+BgAcSEEEeNy4cdGvX7/48Y9/HP369Yv2\n7dtHRMQtt9wSjzzySCxcuLDON7Vp0ybmzZsXN910U8yaNSvatGkT69ati1atWtX5FgCKT0EE+KKL\n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\nrkJggg==\n" |
|
369 | 369 | }, |
|
370 | 370 | { |
|
371 | 371 | "output_type": "stream", |
|
372 | 372 | "stream": "stdout", |
|
373 | 373 | "text": [ |
|
374 | 374 | "v1 is: [ 10.]\n", |
|
375 | 375 | "v2 is: [ 10.]\n" |
|
376 | 376 | ] |
|
377 | 377 | } |
|
378 | 378 | ], |
|
379 | 379 | "prompt_number": 10 |
|
380 | 380 | }, |
|
381 | 381 | { |
|
382 | 382 | "cell_type": "heading", |
|
383 | 383 | "level": 2, |
|
384 | 384 | "metadata": {}, |
|
385 | 385 | "source": [ |
|
386 | 386 | "What value is returned from %R?" |
|
387 | 387 | ] |
|
388 | 388 | }, |
|
389 | 389 | { |
|
390 | 390 | "cell_type": "markdown", |
|
391 | 391 | "metadata": {}, |
|
392 | 392 | "source": [ |
|
393 | 393 | "Some calls have no particularly interesting return value, the magic %R will not return anything in this case. The return value in rpy2 is actually NULL so %R returns None." |
|
394 | 394 | ] |
|
395 | 395 | }, |
|
396 | 396 | { |
|
397 | 397 | "cell_type": "code", |
|
398 | 398 | "collapsed": false, |
|
399 | 399 | "input": [ |
|
400 | 400 | "v = %R plot(X,Y)\n", |
|
401 | 401 | "assert v == None" |
|
402 | 402 | ], |
|
403 | 403 | "language": "python", |
|
404 | 404 | "metadata": {}, |
|
405 | 405 | "outputs": [ |
|
406 | 406 | { |
|
407 | 407 | "output_type": "display_data", |
|
408 | 408 | "png": "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\nUpK06OAUzDPgiIjOnTvHggULYtWqVTFjxoz41re+FevWrYshQ4bEQw899B9/vmvXrtG1a9f9nnv5\n5Zdj/fr1h3oyAEkGDBgQEyZMiEceeSSaNGkS8+bNi5tvvvmgnrhlKqgA/9spp5wSU6dOjalTp8aO\nHTti06ZN2ZMAKDBlZWWxYcOGOOOMM6Jr167RvHnzeO+996JFixbZ02qlIAI8YcKE6Nix437PNWvW\nLJo1a1bHiwD4NBg5cmSMHDkye8Z/pSACPHDgwOwJAFCnCuZNWABQnwgwACQQYABIIMAAkECAASCB\nAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABI\nIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgA\nEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEG\ngAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECA\nASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJGmUPOJCdO3dG\nw4YNo6SkJHsKwEGprq6OGTNmxC9/+cs44ogj4rrrroszzzwzexYFpiCeAa9bty4GDx4cy5Ytiw0b\nNsTQoUOjXbt2cdRRR8WQIUNi9+7d2RMBam3w4MGxYMGCmDx5cowZMya+//3vx4svvpg9iwJTEAG+\n9dZb4/jjj4/Pf/7zcd9990VVVVWsXLky3nzzzdi+fXtMmjSpVteprq6Oqqqq/X5VV1dHTU3NYf6X\nAPXd66+/Hu+++248+eST0alTp+jevXvMmDEj7rvvvuxpFJiCuAX92muvxapVq+KII46IZ555JubN\nmxelpaURETFp0qQYMWJEra4zc+bMmDNnzn7PrV69Ok488cRDNRlgvyorK6N3794fO9ahQ4eorq5O\nWkShKogAd+3aNWbNmhXXXHNN9OzZM+bPnx+jR4+OiIgXXnghunTpUqvrDB06NIYOHbrfc2PHjo31\n69cfss0A+9O1a9e49957Y9OmTXHsscdGRMSiRYviww8/TF5GoSmIAE+bNi2+/vWvx8MPPxydO3eO\nG2+8MR555JH4zGc+E9u2bYvXXnsteyJArZxwwgkxdOjQaN26dcyePTu2bt0azz77bDz55JPZ0ygw\nBRHgk08+Od56661YsGBBrF69Oo4//vg4+uijo0uXLtG3b99o1KggZgLUSv/+/WP58uWxaNGiaNKk\nSZSXl+97Ngz/VjBla9CgQVx00UVx0UUXZU8B+J917949unfvnj2DAlYQ74IGgPpGgAEggQADQAIB\nBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\ngAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\nEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\nCQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\nQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASPCJ\nAN90002xffv2jC3UY5WVlfHyyy/HwoUL46OPPsqeA3DYfSLA69ati9NOOy0WLVqUsWefDRs2RFVV\nVeoG6sbatWvj0ksvjddffz0qKiqiZcuWsX79+uxZAIfVJwL8+OOPxx133BFlZWUxYcKE2L1792Ef\nMXjw4Fi1alVERKxevTr69u0bHTt2jHbt2sWoUaNiz549h30DOT766KM47bTT4rvf/W5873vfiylT\npsTMmTNjwoQJsXfv3ux5AIdNo/0dHDhwYHz1q1+NG2+8Mc4666y4/PLL95079dRT49JLLz2kI1au\nXBk7duyIiIgpU6bEKaecErNnz46NGzfGuHHjYsqUKXHrrbf+x+s899xzsWDBgv2eW7RoURx77LGH\ndDf/uz//+c9x1VVXRe/evfcdGzRoUDz33HPx/vvvR8eOHRPXARw++w1wRESDBg2ipKQk1q9fHytX\nrtx3vHnz5od10EsvvRRr1qyJFi1axDHHHBOTJ0+OcePG1SrAPXr0iJNOOmm/5yorK/dFnsLRuHHj\nqKys/Nix6urqWLt2bTRp0iRpFcDht98Al5eXx/XXXx9f/vKXY8WKFdGmTZvDPmTJkiXRvn37OOec\nc2LTpk3RokWLiIhYsWJFnH766bW6Rtu2baNt27b7Pde6dWuvKRegLl26xMknnxy33357TJgwIaqq\nquIrX/lK9OzZM1q3bp09D+Cw+USAr7jiiqioqIj7778/vvnNb9bJiKuuuiqef/75mDRpUmzdujUa\nN24c5eXlcdttt8W0adOioqKiTnaQY9KkSXH99dfHxRdfHE2bNo0hQ4bE8OHDs2cBHFafCHCrVq3i\nj3/84wGfSR4O48ePj/Hjx0dExN///vfYtm1bRET06dMnbrzxxsN+25tcDRs2jGnTpmXPAKhTnwjw\ngw8+mLFjnw4dOkSHDh0iIuKcc85J3QIAh4vfhAUACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIB\nBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\ngAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\nEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\nCQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\nQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEBRvgnTt3xrZt27JnQFFZtmxZ\nDBw4MPr06RNlZWWxadOm7ElQbxVsgOfOnRvjxo3LngFF469//WvccMMNMX78+Hj22Wdj6NChcfnl\nl8fmzZuzp0G91Ch7QEREly5dYuPGjR87tnv37qiqqoq5c+dG//79Y+bMmf/xOlu2bInKysr9ntu6\ndWvs2bPnkOyFT6O77ror7rjjjjjzzDMjIuJrX/tavPPOO/HYY4/F6NGjk9dB/VMQAZ45c2YMGTIk\nBg0aFFdffXVERMybNy+WLl0aP/jBD6JZs2a1uk5FRUXMnz9/v+d+85vfRNu2bQ/ZZvi0+fDDD6Nd\nu3YfO1ZaWhqrV69OWgT1W0EE+Pzzz49ly5bFqFGjYty4cfHAAw9E69ato3nz5nHCCSfU+jplZWVR\nVla233Njx46N9evXH6rJ8KnTo0eP+OEPfxgzZsyIiH/dZfrOd74Tc+fOTV4G9VNBBDgiomXLljFr\n1qx44okn4oILLogePXpEw4YNs2dB0Rg2bFjMnz8/evfuHf37948FCxbExIkTo1evXtnToF4qmAD/\n2+WXXx7nnXdejBw5Mrp37549B4pGw4YN47nnnouKiorYvHlzTJw4Mc4444zsWVBvFVyAI/71utTz\nzz+fPQOK0oUXXpg9AYgC/hgSABQzAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaA\nBAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIAB\nIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBg\nAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkE\nGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0AC\nAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIEGj7AGF7qWXXor3338/jjvuuOjTp0/2HACKRME+\nA967d29s27YtdcPVV18dTz31VJSUlMRdd90Vl112WVRXV6duAqA4FESA9+zZE1OmTIkhQ4bEG2+8\nEXPmzIm2bdvGUUcdFZdeemns2rWrzjeVl5fHW2+9FQ899FAMGjQofvGLX0TLli3jpz/9aZ1vAaD4\nFMQt6JtuuinefvvtOOOMM+KKK66IRo0axdy5c6O0tDTGjh0b8+bNiyuuuOI/Xmf27Nnx9NNP7/fc\nm2++GaWlpbXetHz58rjnnns+dmz48OHx+OOP1/oaAHAgBRHg+fPnx7Jly6Jly5bRpEmT+OCDD+LL\nX/5yRERMnjw5Jk6cWKsAX3bZZXHJJZfs99yTTz4ZO3bsqPWmli1bxurVq+P888/fd+z3v/99tGzZ\nstbXAIADKYgAn3TSSbFq1ao4++yz45prrom//e1v+86tWLEiOnfuXKvrNG7cOBo3brzfcy1btoy9\ne/fWetOwYcOirKws2rVrF2effXYsWrQoRowYEZWVlbW+BgAcSEEEeNy4cdGvX7/48Y9/HP369Yv2\n7dtHRMQtt9wSjzzySCxcuLDON7Vp0ybmzZsXN910U8yaNSvatGkT69ati1atWtX5FgCKT0EE+KKL\n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\nrkJggg==\n" |
|
409 | 409 | } |
|
410 | 410 | ], |
|
411 | 411 | "prompt_number": 11 |
|
412 | 412 | }, |
|
413 | 413 | { |
|
414 | 414 | "cell_type": "markdown", |
|
415 | 415 | "metadata": {}, |
|
416 | 416 | "source": [ |
|
417 | 417 | "Also, if the return value of a call to %R (in line mode) has just been printed to the console, then its value is also not returned." |
|
418 | 418 | ] |
|
419 | 419 | }, |
|
420 | 420 | { |
|
421 | 421 | "cell_type": "code", |
|
422 | 422 | "collapsed": false, |
|
423 | 423 | "input": [ |
|
424 | 424 | "v = %R print(X)\n", |
|
425 | 425 | "assert v == None" |
|
426 | 426 | ], |
|
427 | 427 | "language": "python", |
|
428 | 428 | "metadata": {}, |
|
429 | 429 | "outputs": [ |
|
430 | 430 | { |
|
431 | 431 | "output_type": "display_data", |
|
432 | 432 | "text": [ |
|
433 | 433 | "[1] 0 1 2 3 4\n" |
|
434 | 434 | ] |
|
435 | 435 | } |
|
436 | 436 | ], |
|
437 | 437 | "prompt_number": 12 |
|
438 | 438 | }, |
|
439 | 439 | { |
|
440 | 440 | "cell_type": "markdown", |
|
441 | 441 | "metadata": {}, |
|
442 | 442 | "source": [ |
|
443 | 443 | "But, if the last value did not print anything to console, the value is returned:\n" |
|
444 | 444 | ] |
|
445 | 445 | }, |
|
446 | 446 | { |
|
447 | 447 | "cell_type": "code", |
|
448 | 448 | "collapsed": false, |
|
449 | 449 | "input": [ |
|
450 | 450 | "v = %R print(summary(X)); X\n", |
|
451 | 451 | "print('v:', v)" |
|
452 | 452 | ], |
|
453 | 453 | "language": "python", |
|
454 | 454 | "metadata": {}, |
|
455 | 455 | "outputs": [ |
|
456 | 456 | { |
|
457 | 457 | "output_type": "display_data", |
|
458 | 458 | "text": [ |
|
459 | 459 | " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", |
|
460 | 460 | " 0 1 2 2 3 4 \n" |
|
461 | 461 | ] |
|
462 | 462 | }, |
|
463 | 463 | { |
|
464 | 464 | "output_type": "stream", |
|
465 | 465 | "stream": "stdout", |
|
466 | 466 | "text": [ |
|
467 | 467 | "v: [0 1 2 3 4]\n" |
|
468 | 468 | ] |
|
469 | 469 | } |
|
470 | 470 | ], |
|
471 | 471 | "prompt_number": 13 |
|
472 | 472 | }, |
|
473 | 473 | { |
|
474 | 474 | "cell_type": "markdown", |
|
475 | 475 | "metadata": {}, |
|
476 | 476 | "source": [ |
|
477 | 477 | "The return value can be suppressed by a trailing ';' or an -n argument.\n" |
|
478 | 478 | ] |
|
479 | 479 | }, |
|
480 | 480 | { |
|
481 | 481 | "cell_type": "code", |
|
482 | 482 | "collapsed": true, |
|
483 | 483 | "input": [ |
|
484 | 484 | "%R -n X" |
|
485 | 485 | ], |
|
486 | 486 | "language": "python", |
|
487 | 487 | "metadata": {}, |
|
488 | 488 | "outputs": [], |
|
489 | 489 | "prompt_number": 14 |
|
490 | 490 | }, |
|
491 | 491 | { |
|
492 | 492 | "cell_type": "code", |
|
493 | 493 | "collapsed": true, |
|
494 | 494 | "input": [ |
|
495 | 495 | "%R X; " |
|
496 | 496 | ], |
|
497 | 497 | "language": "python", |
|
498 | 498 | "metadata": {}, |
|
499 | 499 | "outputs": [], |
|
500 | 500 | "prompt_number": 15 |
|
501 | 501 | }, |
|
502 | 502 | { |
|
503 | 503 | "cell_type": "heading", |
|
504 | 504 | "level": 2, |
|
505 | 505 | "metadata": {}, |
|
506 | 506 | "source": [ |
|
507 | 507 | "Cell level magic" |
|
508 | 508 | ] |
|
509 | 509 | }, |
|
510 | 510 | { |
|
511 | 511 | "cell_type": "markdown", |
|
512 | 512 | "metadata": {}, |
|
513 | 513 | "source": [ |
|
514 | 514 | "Often, we will want to do more than a simple linear regression model. There may be several lines of R code that we want to \n", |
|
515 | 515 | "use before returning to python. This is the cell-level magic.\n", |
|
516 | 516 | "\n", |
|
517 | 517 | "\n", |
|
518 | 518 | "For the cell level magic, inputs can be passed via the -i or --inputs argument in the line. These variables are copied \n", |
|
519 | 519 | "from the shell namespace to R's namespace using rpy2.robjects.r.assign. It would be nice not to have to copy these into R: rnumpy ( http://bitbucket.org/njs/rnumpy/wiki/API ) has done some work to limit or at least make transparent the number of copies of an array. This seems like a natural thing to try to build on. Arrays can be output from R via the -o or --outputs argument in the line. All other arguments are sent to R's png function, which is the graphics device used to create the plots.\n", |
|
520 | 520 | "\n", |
|
521 | 521 | "We can redo the above calculations in one ipython cell. We might also want to add some output such as a summary\n", |
|
522 | 522 | " from R or perhaps the standard plotting diagnostics of the lm." |
|
523 | 523 | ] |
|
524 | 524 | }, |
|
525 | 525 | { |
|
526 | 526 | "cell_type": "code", |
|
527 | 527 | "collapsed": false, |
|
528 | 528 | "input": [ |
|
529 | 529 | "%%R -i X,Y -o XYcoef\n", |
|
530 | 530 | "XYlm = lm(Y~X)\n", |
|
531 | 531 | "XYcoef = coef(XYlm)\n", |
|
532 | 532 | "print(summary(XYlm))\n", |
|
533 | 533 | "par(mfrow=c(2,2))\n", |
|
534 | 534 | "plot(XYlm)" |
|
535 | 535 | ], |
|
536 | 536 | "language": "python", |
|
537 | 537 | "metadata": {}, |
|
538 | 538 | "outputs": [ |
|
539 | 539 | { |
|
540 | 540 | "output_type": "display_data", |
|
541 | 541 | "text": [ |
|
542 | 542 | "\n", |
|
543 | 543 | "Call:\n", |
|
544 | 544 | "lm(formula = Y ~ X)\n", |
|
545 | 545 | "\n", |
|
546 | 546 | "Residuals:\n", |
|
547 | 547 | " 1 2 3 4 5 \n", |
|
548 | 548 | "-0.2 0.9 -1.0 0.1 0.2 \n", |
|
549 | 549 | "\n", |
|
550 | 550 | "Coefficients:\n", |
|
551 | 551 | " Estimate Std. Error t value Pr(>|t|) \n", |
|
552 | 552 | "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n", |
|
553 | 553 | "X 0.9000 0.2517 3.576 0.0374 *\n", |
|
554 | 554 | "---\n", |
|
555 | 555 | "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1 \n", |
|
556 | 556 | "\n", |
|
557 | 557 | "Residual standard error: 0.7958 on 3 degrees of freedom\n", |
|
558 | 558 | "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n", |
|
559 | 559 | "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739 \n", |
|
560 | 560 | "\n" |
|
561 | 561 | ] |
|
562 | 562 | }, |
|
563 | 563 | { |
|
564 | 564 | "output_type": "display_data", |
|
565 | 565 | "png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAYAAAB91L6VAAAD8GlDQ1BJQ0MgUHJvZmlsZQAAKJGN\nVd1v21QUP4lvXKQWP6Cxjg4Vi69VU1u5GxqtxgZJk6XpQhq5zdgqpMl1bhpT1za2021Vn/YCbwz4\nA4CyBx6QeEIaDMT2su0BtElTQRXVJKQ9dNpAaJP2gqpwrq9Tu13GuJGvfznndz7v0TVAx1ea45hJ\nGWDe8l01n5GPn5iWO1YhCc9BJ/RAp6Z7TrpcLgIuxoVH1sNfIcHeNwfa6/9zdVappwMknkJsVz19\nHvFpgJSpO64PIN5G+fAp30Hc8TziHS4miFhheJbjLMMzHB8POFPqKGKWi6TXtSriJcT9MzH5bAzz\nHIK1I08t6hq6zHpRdu2aYdJYuk9Q/881bzZa8Xrx6fLmJo/iu4/VXnfH1BB/rmu5ScQvI77m+Bkm\nfxXxvcZcJY14L0DymZp7pML5yTcW61PvIN6JuGr4halQvmjNlCa4bXJ5zj6qhpxrujeKPYMXEd+q\n00KR5yNAlWZzrF+Ie+uNsdC/MO4tTOZafhbroyXuR3Df08bLiHsQf+ja6gTPWVimZl7l/oUrjl8O\ncxDWLbNU5D6JRL2gxkDu16fGuC054OMhclsyXTOOFEL+kmMGs4i5kfNuQ62EnBuam8tzP+Q+tSqh\nz9SuqpZlvR1EfBiOJTSgYMMM7jpYsAEyqJCHDL4dcFFTAwNMlFDUUpQYiadhDmXteeWAw3HEmA2s\n15k1RmnP4RHuhBybdBOF7MfnICmSQ2SYjIBM3iRvkcMki9IRcnDTthyLz2Ld2fTzPjTQK+Mdg8y5\nnkZfFO+se9LQr3/09xZr+5GcaSufeAfAww60mAPx+q8u/bAr8rFCLrx7s+vqEkw8qb+p26n11Aru\nq6m1iJH6PbWGv1VIY25mkNE8PkaQhxfLIF7DZXx80HD/A3l2jLclYs061xNpWCfoB6WHJTjbH0mV\n35Q/lRXlC+W8cndbl9t2SfhU+Fb4UfhO+F74GWThknBZ+Em4InwjXIyd1ePnY/Psg3pb1TJNu15T\nMKWMtFt6ScpKL0ivSMXIn9QtDUlj0h7U7N48t3i8eC0GnMC91dX2sTivgloDTgUVeEGHLTizbf5D\na9JLhkhh29QOs1luMcScmBXTIIt7xRFxSBxnuJWfuAd1I7jntkyd/pgKaIwVr3MgmDo2q8x6IdB5\nQH162mcX7ajtnHGN2bov71OU1+U0fqqoXLD0wX5ZM005UHmySz3qLtDqILDvIL+iH6jB9y2x83ok\n898GOPQX3lk3Itl0A+BrD6D7tUjWh3fis58BXDigN9yF8M5PJH4B8Gr79/F/XRm8m241mw/wvur4\nBGDj42bzn+Vmc+NL9L8GcMn8F1kAcXjEKMJAAAAgAElEQVR4nOzdd1gU59rH8e8soCLFDiiCBTtW\njFhQNNbEXqKvvWOMxhNLLImJJ4k91ojHY0libKgxtqiJioomaoIxNjxGxcYRFAERpYiUnfcP4h4R\nLMDuDuX+XBdXsjO78/xYdrx3Zp55HkVVVRUhhBBCmJVO6wBCCCFEQSQFWAghhNCAFGAhhBBCA1KA\nhRBCCA1IARZCCCE0IAVYCCGE0IAUYCGEEEIDUoCFEEIIDUgBFkIIITQgBVgIIYTQgBRgIYQQQgNS\ngIUQQggNSAEWQgghNCAFWAghhNCAFGAhhBBCA1KAhRBCCA1IARZCCCE0IAVYCCGE0IAUYCGEEEID\nUoCFEEIIDUgBFkIIITQgBVgIIYTQgBRgIYQQQgNSgIUQQggNSAEWQgghNCAFWAghhNCAFGAhhBBC\nA1KAhRBCCA1IARZCCCE0IAVYCCGE0IAUYCGEEEIDUoCFEEIIDUgBFkIIITQgBVgIIQqwhIQEnjx5\nkqXXqKpKTEyMiRIVHFKAjeDRo0coioKzszMuLi64uLhQvnx5evTowb1797K93cqVK3P+/PkMy3/9\n9Vc8PDyyvd0TJ05Qt27dbL8+q3r27EmRIkWwt7dP9xMWFsbUqVP55JNPADhw4ABHjhwBIDQ0FF9f\n3yy3NW7cOObOnWvU/EK8rlatWtGuXbt0y+7fv4+iKKSmppo9T7ly5bhy5Uqm6/bu3YuXlxdubm5U\nr16dNm3a8Msvv7x0e2FhYfTs2RMnJyc8PT2pW7cuX375pSmiFwhSgI3o/Pnz3L59m9u3bxMUFERq\naioff/xxtrd3/PhxatWqZcSE2pk1axaPHj1K9+Ps7MxHH33E5MmTAVi1ahVhYWFA2peMgwcPahlZ\niGw5fvw4a9eu1TrGS23bto2JEycyZcoUQkJCuHXrFtOnT6dXr14cOnQo09eEhobi7e1Ns2bNCAoK\n4urVq/j7+7Nt2zbGjx9v5t8gf5ACbCIlSpTAy8vLcJpGVVVmzZpF+fLlcXZ2Zvbs2aiqCsCGDRtw\ndXWlVKlS9O7dmwcPHgAwePBgbty4AcCOHTuoU6cOFStWZOfOnYZ25syZw7///W/D41mzZrFq1SoA\nLl26xJtvvkmxYsWoUKECS5YsyZDz6tWrNGnSBDs7Ozw8PPjtt98yPOe9997j+++/Nzz+8ccfGTVq\nFCkpKQwfPpzixYtToUIF5s+fn+X36ZtvvmHt2rV8++23+Pv7M3XqVHx9fZk0aRJHjx5l4MCBABw7\ndox69epRvHhxevbsSVRUlOF9nThxImXLlqVFixaEhoZmOYMQxjRlyhQ++uijF579OnbsGD179qRk\nyZJ0796d8PBwAObPn8/MmTMpX748H3zwAQsWLGDBggU0b94cBwcH5s6dy549e6hcuTKNGzc27KsJ\nCQmMHj0aZ2dnSpYsSe/evYmNjX1pxkWLFjFz5ky6detGoUKFAGjdujUfffQRS5cuzfQ133//PQ0a\nNODDDz/EwcEBAEdHR3bs2IGvry9xcXHZer8KMinARnTs2DEOHTrE/v37WbZsGfPnzzcUkA0bNrBx\n40b27NnDrl272Lx5M6dOnSIxMZExY8bw448/cv36deLj41m5ciUAN27cIDExkRs3bjBq1ChmzpzJ\nnj17OHz4sKHNiIgIQzECuHfvHvfv3wdg4MCBdOzYkTt37rBkyRImT55MdHR0uswff/wxXbt2JSIi\ngmHDhjF27NgMv5enpycbNmwwPN64cSONGjVi+/btXLt2jevXr7N//35mz57NtWvXMn1vAgMDWbNm\njeHn7Nmz6fIPGDCAVq1aMWPGDEaOHMkXX3yBl5cXK1euJDIyki5dujB58mT++usvihUrZjjNvGLF\nCn755RcCAgIYO3YsP/30U5b/bkIYk7u7O0OHDmXcuHEZ1t28eZOuXbvStWtXLly4gLW1NUOGDAHS\n9oWvvvqK5cuXM2DAACIjI5k7dy6LFi1i+/btfPLJJ/j6+nLw4EG6devGV199BcBXX33F9evXOXv2\nLL/99hsXLlxg69atL8yXnJzM+fPnadKkSYZ1DRs25M8//8z0dX/88Uemr3FxcaF06dKGfVq8Pkut\nA+Qnn376KQDXrl2jXr16HDlyhPr16wOwbt06hg0bhpubGwDDhw9nz5491K9fH71ez5EjRxgwYAC7\ndu0yfCN9yt/fH3d3d7p37w7AsGHDWL9+/SvzrF69mgYNGqCqKhUrVsTa2prIyMh0z7G0tOTPP//k\nypUrjB07ltGjR2fYTo8ePRg/fjyxsbFYWlri7+/PypUrOXr0KLdv3+bkyZO0b9+eyMhIChcunGmW\nCxcu8PDhQ8NjGxsbGjRoYHhcuHBhrKyssLGxwdraGhsbG6ysrLC1tWXTpk24u7vTtWtXAKZPn06X\nLl1YtGgRO3bsYOjQodSoUYMaNWqwbNmyV74vQpjajBkzqFWrFrt376Z58+aG5bt27aJ27doMHToU\ngJkzZ1K1alUiIiIA6NKli2E//+GHH+jatSuNGzcGoHz58gwePJgqVarQqVMn1qxZA0D//v0ZOnQo\nDg4OPH78mKpVqxqOqjMTHR1NYmIiJUqUyLCubNmy3Lt3j+TkZKysrNKtCwsLo02bNplu08nJSc4+\nZYMcARvRL7/8wqVLlzh9+jQ3btzg9u3bhnVhYWEsWLCA6tWrU716dRYsWMDZs2cpXLgw33//PevW\nrcPZ2ZlOnTpl6DRx7do1GjZsaHj8dId8lcjISFq0aIGDgwMffvghqamp6PX6dM9ZvHgxycnJeHp6\nUrNmzXSnmp8qXrw4b775Jvv27ePnn3+mWbNmhtNn/fv3Z8SIETg6OjJ58uQX9qb08fHh4MGDhp/+\n/fu/1u8AadeegoKCDO9dixYtiImJISwsjOvXr6d7bzL7hi6EuRUtWhRfX1/GjBmT7otnSEhIus9o\nlSpVKFWqFHfu3AHSiuyzypUrZ/h/a2trqlevDqR9YU1JSQHAwsKCDz74AEdHRzp16kRwcPBLO3w5\nOjri6OjIf//73wzrbt68iaurK1ZWVpQsWZJChQpRqFAh9u/fT7169dL9m/asW7duGQ4uxOuTAmwC\ndevWZdasWQwdOtTwTbRRo0bMnTuXu3fvcvfuXYKDg/Hz80Ov1+Ph4cH58+c5f/489vb2GU4Du7q6\ncunSJcPjmzdvGv5fp9OlK3pPj3Cjo6Pp1asXkyZN4s6dOxw+fBhVVQ3XnZ+ytLRk+/bthIeHM3r0\naAYPHmw4hf2svn37snPnTrZv307fvn0BePLkiWH7fn5+7Nmzh++++y5nb14mPD09adasmeG9u3v3\nLn/++SflypXL8N48vWYuhNa6dOlCo0aNmDJlimFZ6dKl031e7969S3R0NJUqVQLSiumznn+cmdGj\nR1OyZEmCgoK4ePEinp6eGfbz53l6erJlyxbD4x07dpCUlMTWrVvx8vICICAggN9//53ff/+dZs2a\n4enpyffff28o7sePHyc0NJT9+/djYWGRbzqMmpMUYBMZPXo0lStXZurUqQB069aNtWvX8uDBA1RV\nZeDAgSxZsoSoqChq165NaGgo7u7uvP322xm21bJlS37//XeuXr1KYmJiuqNUR0dHAgMDUVWVu3fv\ncvToUQBDh4i2bdtSpEgRNm/eTGJiIsnJyem2PXToUL7++mtKlizJgAEDKFy4cKY7b5cuXThx4gRH\njx41nCLbsmULffr0QVEU3n77bcO38+yysbExdFqzsbExHDm0bduWwMBAwzWmjRs38tZbb6HX62nT\npg3ff/898fHxhISEvPI2CiHMadmyZezfv9/wuEOHDvz666/85z//Qa/Xs2bNGtzd3SlWrFi227h/\n/76ho1ZoaCj+/v4Z9vPnLVy4kLVr1xoOAg4dOkSNGjX4/vvvmTNnDgD16tXDw8MDDw8P7O3t6dev\nH+XLl2fUqFHExcURERFB06ZNGTp0KDNnzsTW1jbbv0NBJQXYRBRFYfny5WzcuJHffvuNjh074uTk\nRMWKFalatSqpqalMnToVBwcHPvnkE5o3b467uzszZ87McB/r0yPqZs2aUaVKFYoUKWJYN3DgQEJD\nQ3F2dqZ169aGAu7q6sqQIUOoV68eDRs25Oeff6ZJkyZcvXo13bZnzpzJqlWrqFmzJjVr1uTzzz+n\ndOnSGX4fGxsbWrRoYegxDTBo0CBsbGxwc3PD1dUVnU6XpVPLz2vRogWTJk1i5syZ1K1bl0uXLlG/\nfn2sra2ZM2cOLVq0oHr16ixcuJCVK1diYWHBxx9/jLW1NVWrVqVp06avfXpeCHNwdXXln//8p+Fx\no0aNmDFjBp6enlSsWJFt27alu6shOyZPnswnn3xCkyZN6NWrFz169CA4OPilr6lWrRp+fn78+9//\npnTp0mzZsgVXV1cqVarE8uXLSUhIyPAaS0tLtm3bRlxcHJUrV2bUqFHY2dnh7u7Ozp07uXz5co5+\nj4JIUV91rkIYVXx8PJBW0J4XGRlJmTJlXvja5ORkEhMTDQXwdV4bHx+PoigULVr0pbkePHiAnZ0d\nlpZZ75eXmJhIUlIS9vb2WX5tZtuysrLCwsICvV7PkydPsLa2BiA1NZWYmBhKlSqV4XUPHz7E1tb2\ntU7ZCaG1lJQUHj58mOlnOTtUVeX+/fuZfnl+lbi4OCwtLSlSpAjJycmsXLmSkSNHGva7zOj1emJi\nYihZsiQAR48excrKynD6WrweKcBCCCGEBuQUtBBCCKEBKcBCCCGEBvLFQBzr1q17Zbd7IcypaNGi\n9OnTR+sYeYLsvyK3Mdf+m+ePgNevX2+Se0+FyInFixezd+9erWOYVGpqaqa9ZbNC9l+RG5lr/9Xs\nCDg5ORmdTpfjXquqqjJkyBDD0G5C5AbR0dH57qjO19eXevXq4e3tzapVqwzT0Hl5ebFmzZoXDkP6\nMrL/itzIXPuvWY+AU1JS+PDDD3FzczOM3Vu7dm1mzZr1yhvHhRDaCgsL4+HDh8THx7N69WrOnj1L\ncHAwlSpVYsWKFVrHEyLPMWsBfjod3uXLl7l+/TrBwcGcOXOG8PBw/Pz8zBlFCJFNcXFx1K9fH3t7\ne3Q6HZ07dzZMJiCEeH1mPQV9584devfunW6WjUKFCtG1a1dOnTplzihCiCxycXFh4sSJuLm5cenS\nJUJDQ4mKimL06NGGOaiFEK/PrAV44MCBjBkzhl69euHi4gLA7du32bBhQ7o5boUQuc/YsWMZO3Ys\nISEhnDt3DhsbGyIiIli/fj3u7u5axxMizzFrAW7YsCG7du1i7969BAUFodfrcXV15fDhwzg4OJgz\nihAimypUqECFChUAMp1TNjMxMTGZTn939epVihcvbtR8QuQVZu8FXbZsWXx8fLL8umPHjjF//vwM\nyy9fvswbb7whvSiF0MjixYtRVZVJkya98Dk3btxg3bp1GZYfPnyYypUrM3nyZFNGFCJXyhUDcbzO\nDty8eXM8PT0zLB8zZgyKopgynhDiJUaNGvXK5zyd1u55Pj4++e52LSFeV64owK+zA1tYWGQ6O4el\npWWe34EfPHhAYGAgXl5emc50JERuJvPACpE9uWIkLFtb2wKzE+/evZsvv/ySLVu2AGnT7w0fPhxL\nS0sGDRpEamqqxgmFECJ/2bp1K5MmTWL69Ono9XoArly5wnfffceOHTs0O4gz6xHwwoULCQgIyHTd\ngAEDcjSZe17w2WefceLECcaPH8/kyZP55ZdfWLhwIcuXL8fZ2ZnVq1fz8OFDwxybQuQmBX3/FXnX\njRs3WLRoEb6+vhw7dgwbGxt69+7NjBkzWLt2Lb6+vhw6dMjs84mbtQAPGjQIPz8/Jk2aRIMGDdKt\ne9lE9PnBvXv32LhxI1evXkWn09GpUyf69evHrVu3qFWrFl9++SVNmjSR4ityrYK8/4q87aOPPiIx\nMRF/f3/eeecd3n77bXbt2kWDBg0YMWIE48aNY+/evXTr1s2sucxagB0dHdm4cSOffvopAwYMMGfT\nmktNTaVx48YoF4JIadAYi3On0Ol06PV6vvjiCxwdHXn33Xe1jinECxXk/VfkbfHx8QwbNoxPPvmE\nsmXL4uLiQrVq1Qzrq1evTnx8vNlzmf0acK1atdi+fbu5m9Vc2bJlcbCz48rwUTxa/CUBUz7i+PHj\nxMTE8M0333Dy5EmGDBnC3bt3tY4qxAsV1P1X5F2qqtK/f3+GDRtGmTJliIuLo2nTpnTv3p3Y2Fj+\n+OMPxo0bR6tWrcyeLVf0gi4IFEXhy5q12XbqTw4eC2Dy9RtcPH0auzJlCAkJ0TqeyGcCAwNp3Lgx\n+/bt4/Tp0/zjH/947UEzhMhPHj58SIMGDQgMDCQwMJCePXsydepUQkJC6NatGy4uLpw7d45y5cqZ\nPZsUYDNRL19Bd+wX+v0SQH9bW1I//hTl7Dlo307raCKfCQgIYPr06ezatYsxY8YwduxYJkyYIPPu\nigKpePHifPbZZxmW54bxy3PFbUj5nZqain7+QpR/jEX5+3YrXYd2qAf8NU4m8qMTJ04we/Zs9u7d\nS+/evZkyZQphYWFaxxJCPEcKsBmoflugrBO6Vi3/t7BZUwi+hhoZqVkukT9VrlyZTZs2sXLlSt55\n5x1Wr15NlSpVtI4lhHiOFGATU2/fRv1hB7oJ/0i3XLGyQnmzFerBQxolE/lVv3798PT0ZOLEiTRp\n0oSUlBTmzp2rdSwhxHPkGrCJ6RcuQRk6GCWT+ySVDu3Qz1sAA/ppkEzkN2fPnmXHjh3pln366acA\n7Nixg+HDh2sRSwjxAlKATUi/Zx+k6lG6d810vVKrJuj1qJevoNSobuZ0Ir+xt7enevXMP0eOjo5m\nTiOEeBUpwCaiRkejfrMW3dKFL52tSXmrPer+g1KARY65ubnh5uaW6bqUlBQzpxFCvIpcAzYR/VJf\nlO5dUSpWfOnzlPZtUQOOoso/kMJIoqKi6NixI+7u7tSsWZOqVasyZMgQrWMJIZ4jR8AmoB4/ASH/\nRfn041c+V3FwALfKcPI38G5hhnQiv9u0aRMeHh54e3tTrVo1Hj16RExMjNaxhBDPkSNgI1MTEtAv\n9UU3eSKKldVrvUZp3xa99IYWRpKQkECrVq1o2rQpFy9eZOjQoRw7dkzrWEKI50gBNjJ15RoUr2Yo\ntd1f+zVKS284dx714UMTJhMFRZs2bfjnP/9JxYoV2bVrFytXrqRw4cJaxxJCPEdOQRuRGnQR9bff\n0a37JkuvU6ytUbyaoR46gtKrh4nSiYLC09OTefPmUbp0aebNm8ehQ4c0vw/48OHDzJw5M8PyK1eu\nUK9ePQ0SCaE9TQtwamoqT548oWjRolrGMAo1ORn9gsXoxo9Dycbvo7Rvi371NyAFWOTQ1q1bmTVr\nVrplcXFxrFixQqNEaUflbdq0ybDcx8cHVVU1SCSE9sx6CtrX15dffvkFSBsIu1q1atSpU4fBgwfz\n5MkTc0YxOnXDJqhUEcWrWfY24NEAoqNRb90yZixRAPXs2ZOTJ09y8uRJAgICmDRpEpUrV9Y6lhDi\nOWYtwGFhYTx8+JD4+HhWr17N2bNnCQ4OplKlSpp+O88p9eZN1B/3ovvg/WxvQ1EUlA7tUPcfNGIy\nURBZWVlhZ2eHnZ0dpUuXZsiQIezevVvrWEKI52hyCjouLo769etjb28PQOfOnTMMoZdXqKqKfsES\nFJ8RKCVL5mhbSod26Md/iDpqJIpO+seJ7Dl16hR79uwBQK/Xc/HiRWrVqqVxKiHE88xagF1cXJg4\ncSJubm5cunSJ0NBQoqKiGD16dK6YmzE71J27oZAVuk5v53hbiosLODrC6T/Bs5ER0omCqHjx4umG\npGzevHmm11+FENoyawEeO3YsY8eOJSQkhHPnzmFjY0NERATr16/H3f31b9vJLdTISNR1G9CtWGa0\nbSrt26IePIQiBVhkU7Vq1ahWrZrWMYQQr6DJKegKFSpQoUIFAEqUKPFar7l+/TqHDx/OsPzy5cs4\nOTkZNd/r0i/+CqXPOyjOzkbbptLmTfRff4uakJCt3tSi4Nq9ezczZszIdF2jRo34+uuvzZxICPEy\nueI+4MWLF6OqKpMmTXrhcywtLbGzs8uw3MrKCp0G10v1RwLgXgTKrM+Nul3Fzg4aeqAGHEMxwmlt\nUXB06tSJ1q1bc+bMGZYuXcrMmTNxdnZm06ZNhv4WQojcQ7MCnJycjE6nw8LCglGjRr3y+c8eNT/r\nyJEjZr+PUI2NRf3XSnSzv0CxsDD69nXt26L//geQAiyy4OmX1MDAQAYNGkTt2rWBtHttu3btyuDB\ngzVOKIR4llkLcEpKCtOmTWPnzp0A6HQ6ChcuTN++fZk6dao5o+SI+q+VKK1bmW4KwSaNYcFi1PBw\nFI1Or4u8q23btvj4+BAeHk6pUqXYsmULrVu31jqWEHlGXFycWdox67nbJUuWAGnXba9fv05wcDBn\nzpwhPDwcPz8/c0bJNvXMWdRz51FGDDNZG4qFBUrb1nJPsMgWDw8P1qxZQ0hICMeOHaN///556guu\nEOZ29+5dLly4YHhcqFAhs7Rr1gJ8584devbsidUzswQVKlSIrl27cvv2bXNGyRY1KQn9wiXoJn6A\nUqSISdtS2rdDlRmSRBacPn2a77//nt9//52tW7cCYGdnx+nTp/PsbX5CmMqDBw8M/3/27FmKFStm\neGyuAmzWU9ADBw5kzJgx9OrVCxcXFwBu377Nhg0bMu3hnNuoa9ehuNcyyy1CSrWqULgwatBFlDq1\nTd6eyPtKly6NXq+nVKlSNGzYMN06BwcHjVIJkXvo9Xp0Oh1//PEH169fp2/fvgB07NhRkzxmPQJu\n2LAhu3btokSJEgQFBXH+/HlsbW05fPhwrv8HQr12DfWAP8r775mtTaVDO9QD/mZrT+RtFStWxNPT\nEzc3NypUqECfPn2wsbHhr7/+MsmMQ6mpqSQkJBh9u0IYW2xsLHv27CE2NhYANzc3Q/HVktnv3ylb\ntiw+Pj7MmTOHefPmMWbMmNxffPV69PMXobw3CuWZ0xSmprRvi3r0GGpSktnaFHlfQEAAEyZMICIi\ngjFjxmBtbc2ECRNyvN38PJmKyH/u3r3LnTt3AIiJiaFKlSqG08wlczhssLHIgMOvQd22HYoXQ9eu\nrVnbVUqWhFo1UY+fMGu7Im87ceIEs2fPZu/evfTu3ZspU6YQFhaW4+3m18lURP7x+PFjABISEjh0\n6JDhWq6Liws1a9bUMlqmXliAAwMDAdi3bx+ff/55ugvWBYl69y6q3xZ0k8Zr0r6chhZZVblyZTZt\n2sTKlSt55513WL16NVWqVDHa9p+dTEWn09G5c2ciIiKMtn0hsuPAgQOGulWkSBEGDRpE6dKlNU71\ncpkWYFOdwsqL9AuXoAzop9n9uEqL5nDpL9ToaE3aF3lPv3798PT0ZPz48dSpU4fk5GTmzp2b4+0+\nnUxlyJAh+Pv7Exoayrlz5xg9ejS9evUyQnIhXl9UVBRHjx41PK5Vqxbe3t4AmoyOmB2ZpjTVKay8\nRr//AMTFo7zTU7MMSqFCKN4tUP1zfy9xkTsoikJwcDCzZs1i8+bN/PTTT1y7di3H2x07dizBwcGs\nWrUKX19fbGxs0Ov1rF+/njfeeMMIyYV4uaioKBITEwG4efNmunkAXFxc8kzhfSrT25CensK6cOEC\ny5YtM/oprLxAjYlBXf0Nui/naD43r9KhHfqlvvB/vTXNIfKGkydPoigKX3zxBTExMSxdupQZM2aw\nefNmo2w/O5OpnDt3jo0bN2ZYHhgYSKVKlYySS+RPKSkpWFpacvPmTQICAhgwYACQNsFIXpdpAe7X\nrx9xcXG0bduWJk2acObMGaOcwspLVN8VKG+1R8kFXzyUunXg8WPUa9dyRR6R5v79+5w9exZ7e3s8\nPT21jmPwn//8hyZNmhjGSC9btqxJeym/zmQqFSpUoF+/fhmWX79+HRsbG5NlE3lXcnIyP/30EzVq\n1KB69eo4OjoyfPhwrWMZVboCfPbsWXbs2JHuCZ9++ikAO3bsyHe//IuogadQL19BN/VDraMYKB3a\noe4/iPK+FODcICQkhC5dutCrVy9++OEHWrZsyfLly7WOBUDfvn3x9vamdu3aWFpasm3bNoYOHWrU\nNrI6mUqJEiUyDA4CaYOHmHsyFWF8jx49Yvny5dy7d4+GDRtme+KPe/fucf/+fWrVqkVycjI1atSg\natWqABTNh9Ozpju3am9vT/Xq1TP9KVeunFYZzUp9/Bj9kmXoPpyAYqbhyF6H0qEd6qEjqKmpWkcR\nQJcuXZgzZw4zxo8nKCiIyMhIDh7MHWN329nZ4e/vT4sWLShXrhxz587N9Ogzq1JSUvjwww9xc3Oj\nRo0a1KhRg9q1a7N06VIKFy5shOQiL3paKC0tLRk0aBAnT57M0pfRp4NjAPz222+GQlu0aFGqV6+e\n567rZkW6I2A3Nzfc3NyIiopi8ODBhISEoNfrSUlJwdPTk7feekurnGajfrMWxaMBSoP6WkdJRylb\nFlxdIfAUNGuqdZwCRY2MhLA7qGF3ICwMNewO8x/E0nbZv9Gf+hOLL/5Jhw4duHfvntZRAbhx4wZ6\nvf61jkyz4tnJVJ6O556UlMTEiRPx8/NjyJAhRm1P5A3Hjh2jU6dOTJkyBYDatWvzzjvv8P7777/y\ntadOneLGjRuGUam6d+9u0qy5TabXgDdt2oSHhwfe3t5Uq1aNR48eERMTY+5sZqf+dRk14Bi6dd9o\nHSVTSod26A/4YyEF2OjSFdnQ0L//GwZ37oKtDTiXQylfHpzLoWvdirO3QwiwteHLL/7JvXv3GDFi\nRLrZVLT0dLrPl12TzY47d+7Qu3fvTCdTOXXqlFHbEnnLs53xVFXl1q1bmT4vNjaWX3/9FW9vb2xt\nbalUqVKB7kGfaQFOSEigVatWWFlZcezYMWbMmEGPHj0YP16bwSjMQU1NRf/lIpRxY1BsbbWOkynl\nzZaoK1aixsXl2oy5mRoR8eIia4yFFJUAACAASURBVG+XVmSdndOKbJs3obwzODtnOvPVBM9GtGjR\ngtatW2NjY8P+/fupU6eOBr9VRk2aNGHgwIFcvXrVMBBBpUqVGDlyZI62m9cnUxGm4eXlxVdffcWa\nNWuoX78+Y8aMoX///ob1TwdpcXBwICoqCldXV2z//verTJkymmTOLTItwG3atGHChAn4+fkxYcIE\nHBwc8v01HtVvC5R1QteqpdZRXkgpWhSlSWPUwwEo3bpoHccs7ty5w+zZs7l16xYlSpTgu+++w9Ly\nxZN4qREREBqWvsiG3clYZMs7o6tV839FNoufb2tra06fPp3TX88kHBwcmD17drpljo6OOd7u08lU\n9u7dS1BQEHq9HldX1zwxmYowHWtra3744Qe++OILrl69yqRJk+jRoweQdsT7008/0blzZwC55ew5\nmf5L5unpybx58yhdujTz5s3j0KFDRr8N6dlelFpTb99G/WEHuq9Xah3llZQO7dB/twEKQAGOj4/H\n2dmZrVu3MnPmTAYPHsynn3zCnAkT/ldkw8LSH8kWs4fyzv8rsrXd04psuXJZLrJ5VdWqVQ09R43t\n6WQqQjyrcOHChi99T4eE9Pb2xtra2ug98POTFx5KtGjRAoD27dvTvn17ozSWkpLCtGnTDNeodDod\nhQsXpm/fvkydOjXdtSVz0i9cgjJ0MEpeOB3yRkOYtwA1NDTtmmQ+durUKSZNmkTvtm3Rz5nP7hIO\nnP1mPfob/01fZOvUBudyaUeyuajnuhAFQXR0NJcvX6ZZs2YAVKtWzTBQy8vOVokXFOCtW7cya9as\ndMtatGiR4xlPcmMvSv2efZCqR+ne1extZ4ei06G0a5M2N/GIYVrHMalChQoRHR2NfvY8lPLleTRo\nAH0CDnLjez+towlRoD148AAbGxsKFSrE5cuX03XCktPMry/TG6x69uzJyZMnOXnyJAEBAUyaNInK\nlSvnuLE7d+7Qs2fPTHtR3r59O8fbzyo1Ohr162/RTZ6Aoihmbz+7lLfao+7PHfecmpKXlxfOIf9l\n//qN7CzrgPeggcz68kutY+Vau3fvpl69epn+5LQDlhCpf49BcP36dbZv325Y3qxZs1w51V9ekOkR\nsJWVlaFI2tnZMWTIELy9vfnww5yNDJXbelHql/qi9OiG8vfpkrxCqVQJSpRAPXMWxaOB1nFMRk1I\n4LOSZTg07UPC799nxYoVNG/eXOtYuVanTp1o3bo1Z86cYenSpcycORNnZ2c2bdqEvb291vGECQUF\nBbFv3z6SkpJ47733jNq7OCkpCX9/f2rUqIGbmxsODg4MHz48Xw+QYS6ZFuBTp06xZ88eAPR6PRcv\nXqRWrVo5biw39aJUj5+AWyEoM6abtV1jUdq3RT14KH8X4FVfozRtQoeJH9BB6zB5gKWlJXZ2dgQG\nBjJo0CBq164NgI+PD127ds328IAid7t8+TJjxoxh2rRpJCYm0q1bN9avX5+jCXQiIyOJiYmhatWq\nPHnyhIoVKxpOLdvZ2RkreoGXaQEuXrw41atXNzxu3rw5bdq0MUqD2e1F+eTJEx49epRh+ePHjylR\nooRhxoyUlBQeP36MtbX1Cx8nREdT+F8rKTR9GqnA49jYlz4/Nz4u8mZLdN+tJznuPRJVVfM8Rv/9\nbt5Cd+Ik+m9XE58H/z5aXtJo27YtPj4+hIeHU6pUKbZs2ULr1q01yyNMa9myZcyaNYuWLdNuoUxJ\nSWH79u1MnTo1S9uJj483TIwREBBgmGDEzs4Od3d344YWwHPXgJ9eQ+rduzcLFiww/EybNo0xY8aY\nLMTixYtZtGjRS59z+vRpxo4dm+Hn5MmTlCtXjoSEBCBtEJEbN268/PH+Azxu7oVS2/31np8LHz+2\nsoJ6dYn/9XiuyGPMx9evXSNuzTfoxo/jMWieJzuPtez96eHhwZo1awgJCeHYsWP0798/y/8Yi7zD\n3t6eQs/0/rezszNcr31dgYGB/PTTT4bHffr0oWLFisaKKF5EfUZycrL66NEj9ejRo2r37t3VoKAg\nNTo6WvX19VXXrVunmkpsbKwaGxubrdeOHDlSHTFixGs/X38hSE15p6+qj4/PVnu5if7oMTVl4mSt\nYxhd6rffqSkzPtc6Ro4sWrRI/fHHHzXNkJqaqsbFxal6vV7THC+T1f1XZPTrr7+qrVu3Vk+cOKEe\nOHBAbdasmRoSEvLS1zx69Eg9cOCA+vjxY1VVVfXu3btqamqqOeLmCebaf9MdAWd2DalEiRL4+Piw\nadMmoxb+5ORkw7c0W1tbw9BkpqQmJ6NfsBjd+HEo+WFqK69mcDU4bRzjfEK9dQt19x50H7x6IHfx\nYpMnT6Z27dps3ryZzp0759pRu0TONW/enPnz5+Pn58eRI0dYvnw5rq6uGZ4XHR1NVFQUAOHh4Tg4\nOFDk72FWnZycpFOVBjI9T2aqa0haD8ShbtgElSqieDUzaTvmolhaorR+M60z1oCcTzenNVVV0S9Y\ngjJyOErJklrHybNOnjyJoih88cUXxMTEsHTpUmbMmMHmzZu1jiZM5I033sh0UoPk5GSsrKx4+PAh\nO3fupFu3bgAmGylNZE2mX3lMdQ3p2YE4rl+/TnBwMGfOnCE8PBw/P9MOrqDevIn64958d2SldGiH\nesBf6xhGoe76ESwt0HXuqHWUPO0///kPTZo0MXQEK1u2LE+ePNE4lTC3AwcOGGapKlq0KMOHDzdM\nziFyhxf2FPHw8MDDw8OojWk1nZnhyMpnRL47slJq1QRVRf3rMkrNGlrHyTY1MhL1u/Xoli/VOkqe\n17dvX7y9valduzaWlpZs27ZN8/F4o6KiuHLlSobl4eHhco+ykTx48IDg4GBD7+WKFSsabkXSaphf\n8XLpCvDp06e5ceMGrq6uhtPET1WuXJl33303R41pNRCHunM3FLJC1+ltk7WhpadHwXm5AOsXf4XS\nuxfK358LkX12dnb4+/uzY8cOQkJCGDdunNG/TGfVnTt3+PnnnzMsDw0NNYwbLLLu0aNH2NjYYGFh\nwYULF9Id4T57K6nIndIV4NKlS6PX6ylVqhQNGzZM90RjDJShxUAcamQk6roN6FYsM8n2cwOlQzv0\nI95Fff89lDw4+Lk+4Cjci0CZ9bnWUfKFo0eP8uDBA0aNGmVYNm7cOHx9fTXLVLduXerWrZth+b17\n91BVVYNEeZder0en0xEcHMyRI0cYMWIEgOE+YJF3pPvXumLFioZ7v6KiomjcuDH79u3j9OnTtGvX\nzigNmmM6s8ePH7N3716SkpLodupPivZ5J23mnHxKKVMGqlaBEyehpbfWcbJEjYtD9V2Bbs5MlFww\nNWV+cOnSJRYtWsSVK1eYNm0aABcvXtQ4lcippKQkjhw5Qo0aNahYsSIODg74+PhI7+U8LNO/XEBA\nABMmTCAiIoIxY8ZgbW3NhAkTzJ0tW1JTU6lfvz7nzp2jyG+BbF7my5V6dbSOZXJK+7boDx7SOkaW\nqStWobRuhVJDTpcZ05IlSwgJCWHEiBEkJSVpHUdkU3R0NDdv3gTSRqoqV66c4RajYsWKSfHN4zL9\n6504cYLZs2ezd+9eevfuzZQpUwgLCzN3tmxZv349LVq0YNa0aXS/ew/3b9fg+/c0ipGRkTm+jp1b\nKS294dx51IcPtY7y2tSz59ImlMjn0ypqwcLCgn//+99Ur16dzp07y7yseUhiYqLh//ft22fozV6i\nRAnq1q0rRTcfyXSvrFy5Mps2beLChQssW7aM1atX52hgb3OKj49PO10eG4tuxTJck5MJ3bmD0NBQ\npk6dmul40vmBUqQISnMv1ENHUHr10DrOK6lJSegXLkE34R8o1tZax8lXatWqRcm/e/tPmTKFChUq\naDLbmMi6wMBAwsLC6NmzJwCDBg3SOJEwpUwLcL9+/YiLi6N169bUqVOHP//8k7lz55o7W7a0aNGC\ndu3aUTsgACcnJ1q3aMHw4cMpV64cmzZtol+/vD9gxYsoHdqhX7kG8kIB/m49Ss0aKI09tY6Sbzx7\nF8OmTZvSjV73fKdKkTvExcURGBiIt7c3VlZWODs7ZzqghsifMi3AiqIQHBzMvn37SEhI4KeffqJx\n48Z54oNRr149fvjhB3x8fChXrhwffPABY8aMMZzGyc89LhWPBvDgAeqtWyi5eCB19do11J8PoPvu\na62j5CumvotBGMfDhw9RVZXixYvz3//+l+LFixvu0y1fvrzG6YQ5ZVqA8/pQdt7e3pw8eVLrGJpQ\nOrRD3X8QZfSoVz9ZA6penzYoymgflGLFtI6Tr5w/f54ZM2Zkuq5Ro0a0atXKvIGEwdPpUqOjo9m+\nfTu9evUCMMo86yLvyvRqfn4eyq53795aRzAppUM7VP/DqHq91lEypf6wA2xt0HVor3WUfKdTp04c\nP36cZcuWGfpxHD16FB8fH7y989btafnJwYMHDZNh2NjYMGLECMM1elGwZXoEnBuHsjOWp9888yvF\nxQUcHeH0n+DZSOs46ajh4aibNqNbuVzrKPlSZrOZAfj4+NC1a1cGDx6sccKC4eHDh9y8eZP69esD\n4OzsbBiVqnDhwlpGE7lMpgU4Nw5lJ16fYWjKXFaA9QuXoPTvi1K2rNZR8jVTzWYmXiw+Ph5ra2t0\nOh2nTp2i7DOfcXd3dw2Tidwswyno4OBgVq9eTWxsLKNGjWL27NlER0cbhjsTuZ/S5k3U3wNRExK0\njmKgP+gPj2JReufvMxC5galmM3teamoqCbnoM2ZuTzt0BgcHs2HDBsPydu3aGc4+CPEy6QrwnTt3\naNu2LefOnaNdu3bcuXOHDz74gFGjRpnk9p2CvgObimJrC280RA04pnUUANSHD1FXrkE3ZSKKDCJg\ncjdu3MDe3p758+ezYsUKo/V78PX15ZdffgFg1apVVKtWjTp16jB48OB800fkdSQlJeHv728YnKhU\nqVI0bdqUH374gRMnTqR77scff8zly5e1iCnygHT/Gp4+fZp33nmHFStWMHPmTFq1akVCQgJBQUG0\nbds2x43JDmw+ulw0T7C6/N8oHdqh5JHBXPK6nTt3snv3bqNvNywsjIcPHxIfH8/q1as5e/YswcHB\nVKpUiRV/jzaXX8XExPDf//4XSLvGW7p0acNp5uPHjzN8+HDu379P165dWbBgAQDTpk0jMDBQhgIV\nL5SuAN+/f5+qVasC4OLiQuXKlVmzZg02NjZGaawg78Bm19gTQkJQw8M1jaGe+gP1P5dQhg3RNEdB\n0qRJE5YvX867777L9OnTmT59Ol9/bbx7ruPi4qhfvz729vbodDo6d+5MRESE0bafWzxbOHfs2IH+\n7zsLypQpQ4MGDbCwsODhw4cMHjyY/fv389577xEeHs7x48e5dOkSc+bMMcqBi8i/XjhArKIouLm5\nmaTRZ3dggM6dO7Njxw6TtFVQKRYWKO3apN0TPFSb3q9qYiL6RUvRTZuMUqiQJhkKIgcHB2bPnp1u\n2bPzxGaXi4sLEydOxM3NjUuXLhEaGkpUVBSjR49m1apVOd5+bhIYGMjdu3fp3r07AMOGDTPclvms\nuLg4OnXqRJkyZYC0ie+rVq1KdHS0jNksXilDAV62bBk7duwgJiaG8PBwgoODgbQRpp6eWsmugrQD\n5wZKh/bo//kFaFWAv/4WxaMBSoP6mrRfUJUoUYKNGzcSEhKCXq8nJSUFT09P2rfP2b3XY8eOZezY\nsYSEhHDu3DlsbGyIiIhg/fr1eb6nb3x8PKdPnzbMqevo6Jjuzo/Mii+Ak5MTVlZWzJ8/nylTpnD4\n8GEWLVr0wgFRhHhWugLcuXPnF47M8vRoNSfy8w6cGylVq0DhwqhBF1HqmLdXpnr5CmrAMRluUgOb\nNm3Cw8MDb29vqlWrxqNHj4iJiTHa9itUqECFChWAtGKfV8XGxgJpt11eu3aNIkWKGNZVfM2hXC0s\nLPD19aVRo0b4+/vj5ORk6AQHaWPTOzo6Gj27yB/SFeAyZcoYTqWYUn7ZgfMC5a32aaehzViA1dRU\n9AsWo4wdjWJnZ7Z2RZqEhARatWqFlZUVx44dY8aMGfTo0YPx48ebpL3FixejqiqTJk0yyfaNSa/X\no9PpiIqKYvv27fTp0wdIO8OXXXZ2di/s6dy8efNsb1fkf7liktC8tAPnNUq7NugHD0f94H2zXYdV\nN28FhzLoWr9plvZEem3atGHChAn4+fkxYcIEHBwcjD4CU3JyMjqdDgsLC0aNevW444cPH2bmzJkZ\nll+5ciVHxS8rDh48SMmSJXnjjTewsbFh5MiRWFhYmKVtITKjWQHOiztwXqSULAm1aqIeP4FihoKo\nhoaibtuO7uuVJm9LZM7T05N58+ZRunRp5s2bx6FDh4wynWhKSgrTpk1j586dAOh0OgoXLkzfvn1f\nOdBHmzZtaNOmTYblPj4+JpuhLDY2lpCQEMOgGA4ODoZLXdYyB7XIBcxagPPaDpxfPD0NjRkKsH7h\nEpShg1HMcClDvFiLFi0AaN++fY47Xz21ZMkSAC5fvmyYPi8pKYmJEyfi5+fHkCHa32qWmJhouJb7\n66+/4urqalj3dGxmIXILs/aTf3YHvn79OsHBwZw5c4bw8HD8/PzMGaVAUZp7waW/UKOjTdqOft/P\nkJSM0r2rSdsRmdu9ezf16tXL9GfkyJE53v6dO3fo2bOnofgCFCpUiK5du3L79u0cbz+nrly5wnff\nfWd43LFjRxkSUuRqZj0CvnPnDr179850Bz516pQ5oxQoSqFCKC29Uf0Po/yfaaZjVKOjUdd8g27J\nghfesiFMq1OnTrRu3ZozZ86wdOlSZs6cibOzM5s2bTLKXQwDBw5kzJgx9OrVCxcXFwBu377Nhg0b\nOHz4cI63n1VJSUmcOHGCGjVqULZsWUqWLClj1os8xawFOLftwAWJ8lZ79Iu/AhMVYP1Xy1G6dkap\nVMkk2xevZurpCBs2bMiuXbvYu3cvQUFB6PV6XF1dOXz4MA4ODsb4FV4pNjaW2NhYypUrR3R0NLa2\ntoa2zXEHhxDGZNYCnBt24IJKqVMbEhNRg6+l3R9sROrxE3DzFsonHxl1uyJ7TDkdYdmyZfHx8THK\ntl5XSkoKlpaWqKqKn58fb731FpA2CIaTk5NZswhhTGbvBa3FDizSpM0TfNCoBVhNSED/1XJ0M6aj\nPHNpQWjn6XSEW7du5eLFi/Tv399oMyI9a/r06dSsWZOBAwcafdtPBQYGEhkZSefOnVEURW4dEvmK\npoOVTp8+nY0bN2oZoUBR3mqP6n8YNTXVaNtUV32N0rSJ2UfaEi/24MEDPv/8c3bv3s2hQ4eYPn06\ngwYN0jrWa0lISODkyZOGx6VKlUrXi1uKr8hPcsVAHMI8FCcnqFABAk9Bs6Y53p568T+oJ06iW/+t\nEdIJY1m7di0NGjTAz8+PQn8PvmKKjnHu7u44OzsbZVvx8fHY2Nhw6dKldJMYVJEpLEU+pmkBNuYO\nLF6P0qEd+gP+WOSwAKvJyei/XIRu/DiUokWNlE4Yg729PSVLljTaNKIv0r9/f6Nsp1ChQqSkpADw\nxhtvGGWbQuQFmhZgY+3A4vUpb7ZEXbESNS4OxdY229tRN/pBpYpp9xiLXKV+/fp0796dn3/+mUp/\n90qvXLnya404p4WkpCSKFSumdQwhzE5OQRcwStGiKE0aox4OQOnWJVvbUG/dQt29B923q42cThhD\n8eLFWbRoUbplcpeBELmPFOACSOnQDv13GyAbBVhVVfQLlqCMHJ42zrTIdapUqZLh2unTU7xCiNxD\n017QQiNvNIR791CzMXyguutHsLJE17mjCYIJY4iKiqJjx464u7tTs2ZNqlatmivGaRZCpCdHwAWQ\notOhtGuDesAfZeTw136dGhmJum4DOt8lJkwncmrTpk14eHjg7e1NtWrVePToETExMVrHEkI8R46A\nCyjlrfaoB/yz9Br94q9Q3umJ8vcwoiJ3SkhIoFWrVjRt2pSLFy8ydOhQjh07pnUsIcRzpAAXUErF\nilCiBOqZs6/1fH3AUbgXgdLv/0wZSxhBmzZt+Oc//0nFihXZtWsXK1eupHDhwlrHEkI8RwpwAZY2\nNOWrj4LVuDhU3xXopkxCkZGIcj1PT0/mzZtH6dKlmTdvHjdu3GDu3LlaxxJCPEcKcAGmtG2NevwE\namLiS5+nrliF0roVSo3q5gkmcuT48eM4OjpiY2ND+/btmTdvHuvXr9c6lhDiOZp1wkpOTkan08nY\nrhpSihWD+vVQj/2C0qF9ps9Rz55DPXMW3do1Zk4nsiohIYERI0Zw6dIlbG1tDdPzxcXFUaJECU2z\n/fHHH3z99dcZlh8/flyGmxQFllkLcEpKCtOmTWPnzp0A6HQ6ChcuTN++fZk6dSpWMpuO2ek6tEO/\n60fIpACrSUnoFy5BN/EDFGtrDdKJrChatCizZs1i9+7dODk5Ubt2bRISEihRogQVK1bUNFuNGjWY\nNGlShuUPHjygSJEiGiQSQntmPQW9ZEna7SuXL1/m+vXrBAcHc+bMGcLDw/Hz8zNnFPFUs6Zw7Tpq\nZGSGVep361Fq1kDxbKRBMJEde/bsITw8nP79+/PDDz/Qp08fevToQVhYmKa57OzsqFatWoafYsWK\nGSaMEKKgMWsBvnPnDj179kx3pFuoUCG6du3K7WwMCiFyTrG0RGn9ZobOWOq1a6g/H0AZN0ajZCKr\nTp48ybZt2xg3bhwhISGsX7+eK1eusGLFCj7++GOt4wkhnmPWU9ADBw5kzJgx9OrVC5e/7yW9ffs2\nGzZs4PDhw+aMIp6hdGiHfs58GJg2OYaq16cNNznaJ+06scgTAgMDGTBgAC4uLqxcuZJu3bphbW2N\nl5cX//jHP7SOJ4R4jlmPgBs2bMiuXbsoUaIEQUFBnD9/HltbWw4fPiyDxWtIqVkDAPWvy2n/3bYd\n7GzRvaBjlsidSpcuTWhoKAB79+6la9euAFy8eJEKFSpoGU0IkQmz94IuW7YsPj4+5m5WvMKl8s4E\nv/seAU5l+CLiAcW3bNA6ksiirl27Mn/+fH777TeSkpJo2bIlhw4dYvz48Xz55ZdaxxNCPCdXjAW9\nePFiVFXNtJekML0TJ06w9PcTrFQVGlkUYum9u/QID6e+k5PW0UQWFCtWjNOnT3Px4kXq1KmDpWXa\n7v3tt9/i6empcTohxPNyRQF+nYnCL1++zL59+zIsv3DhAuXLlzdFrHzr999/Z8uWLej1eubNm4ef\nnx+T58+n2IcfUSzkNp4L5rF//37q16+vdVSRRUWKFOGNN94wPG7btq2GaYQQL5MrCrCtre0rn2Nv\nb0/16hlHYqpTpw7lypUzRax866+//mLhwoX861//4tdff8Xe3p4HDx5g+UtaR7j4778nNTVV45RC\nCJG/5YoC/DrKlSuXaaG9f/8+qqpqkCjvGjZsGDt37mT9+vUcOXIEJycn3nvvPRISEoiNjWXlypXs\n3btX65hCCJGvmbUAL1y4kICAgEzXDRgwgP79+5szToHWo0cPChUqxPLly5k+fTo7duzAz88PVVXZ\nvHkzJUuW1DqiEELka2YtwIMGDcLPz49JkybRoEGDdOuejlsrTO/dd99lxowZRERE4OrqCoCTkxMT\nJ07UOJkQQhQcZi3Ajo6ObNy4kU8//ZQBAwaYs2nxjC+++IJ169ZRsWJFevbsqXUckUelpqby5MkT\nihYtqnUUIfIks09HWKtWLbZv327uZsUzHB0dmTJlCn369DHcqiLEq/j6+vLLL78AsGrVKqpVq0ad\nOnUYPHgwT548MVo7iYmJ/PDDD2zZsoWoqCgAwsLC+OCDD3j33XcJCQkxWltCaEnT+YCnT5/Oxo0b\ntYwghHhNYWFhPHz4kPj4eFavXs3Zs2cJDg6mUqVKrFixwihtpKam0qBBA86cOcPdu3cpU6YMV65c\nISgoiA8//JBBgwaxadMmo7QlhNY0LcBCiLwnLi6O+vXrY29vj06no3PnzkRERBhl2+vXr6dJkybM\nmTOHCRMmcPDgQb766iveeustIiMj+cc//kGXLl2M0pYQWtO0ALu7uxsmZRBC5G4uLi5MnDiRIUOG\n4O/vT2hoKOfOnWP06NH06tXLKG3Ex8fTsWNHw+NatWoZplL08PBg165dzJ492yhtCaE1TS8Aym1H\nQuQdY8eOZezYsYSEhHDu3DlsbGyIiIhg/fr1uLu7G6UNLy8v3n77bWrXro2TkxNt2rRh4MCBLFq0\niIYNG1KsWDEZeEfkG9IDRwiRJRUqVDDMrlSiRAkWL17M/v37jTKWe4MGDdi6dStDhgyhfPnyvP/+\n+4wdO5bExETWrVsHwOeff57jdoTIDaQACyFy5HXGcr979y7nz5/PsPz27duUKFEi3bKWLVty6tSp\ndMusra0ZPXp0zoIKkcvkiwIcERHB1q1bc7ydixcvEh4e/lpjU7+u1NRUIiMjcTLyzEKhoaFGn4Qi\nJiYGS0vLAv37V61aFTc3txxvKyoqiqpVqxohVe73Op+XmJiYTAuwqqpYWVnleP89deoUCQkJFClS\nJEfbyQlTfCazwhT7b1Zp/R7ExcXh5ORE7dq1c7Qdc+2/iprHB1JOTU1l1apV6HQ570+2a9cu4uLi\njPoBSkxM5MyZMzRr1sxo2wQ4cuQIrVu3Nuo2g4ODKVKkiFE7xuW1379q1aq0atUqx9sqXLgwgwcP\nxsLCIufB8jFj7b/fffcdtra2lC5d2kjJss4Un8msMMX+m1VavwehoaHY2trSvXv3HG3HXPtvni/A\nxuTr64uzs7NRR4e6d+8eH3zwAVu2bDHaNgFatWrF0aNHjbrN5cuXU7ZsWaP1aIW0sxPjxo0zyhmK\nZ5ni9//Xv/6Fo6Mj77zzjlG3m1/k5rHcP/74Y7p06ULTpk01y2CKz2RWmGL/zSqt34MdO3YQFhbG\nuHHjNMuQFfniFLQQwvRkLHchjEsKsBDitchY7kIYl4yEJYR4bTKWuxDGIwVYCJEtMpa7EDlj8dln\nn32mdYjcwtbWlgoVKlC8RQ2UIAAAIABJREFUeHGjbdPCwgJHR0cqVapktG0ClC5dmmrVqhl1m/L7\n2+Lq6prhvlSRuSNHjlCmTBnq1q2rdRTs7e2pVKkSNjY2mmUwxWcyK0yx/2aV1u+BtbU15cuXx8HB\nQbMMWSG9oIUQ2eLn54ezszMtW7bUOooQeZIUYCGEEEIDcg1YCCGE0IAUYCGEEEIDUoCFEEIIDUgB\nFkIIITQgBVgIIYTQQIEuwPfv3yc1NTXTdSkpKSQmJhp+tJacnMz9+/czXZeUlGTImZSUZOZk//Oq\n90yv16dbr9frNUj5P9HR0S98v3Lb319kLiYm5qV/n3v37mHKGz2io6NJTk7OdJ2pP0MvaxsgISGB\n2NhYo7f7lF6vJzIy8oXrn/3dU1JSTJbj7t27L1xn6vcgpwpkAU5NTaVbt26MGTOGRo0aERgYmOE5\n48aNo0GDBnh5eeHl5UV8fLwGSf9n8uTJTJ8+PdN1Hh4ehpzDhg0zc7L/edV7tm3bNqpWrWpYf/z4\ncY2SwsiRIxk6dCitW7fOdKaq3Pb3Fxk9ePCAZs2aERQUlGHdw4cPadKkCSNGjKBBgwZEREQYvf3B\ngwczYMAAqlevzokTJzKsN+Vn6FVtr1ixgnbt2tG0aVO++uoro7X7VGBgIA0aNKBPnz706dMnw5ec\ne/fu4eTkZPjdly1bZvQMACtXrmTkyJGZrjP1e2AUagH066+/qnPnzlVVVVV//vlntW/fvhme07Rp\nU/X+/fvmjpapgwcPqvXq1VPffffdDOvi4+PV+vXra5Aqo1e9Z9OmTVO3b99uxkSZO3LkiOFv/ujR\nI/Xjjz/O8Jzc9PcXGZ06dUqtU6eOWr16dfXUqVMZ1k+bNk1dv369qqqq+vXXX2f6N86J/fv3q8OH\nD1dVVVWDg4NVLy+vDM8x1WfoVW0/ePBArVOnjqrX69Xk5GTV3d1djYmJMWqGZs2aqbdu3VJVVVUH\nDhyoHjx4MEPGcePGGbXN540YMUL18vJSO3bsmGGdOd4DYyiQR8DNmzdn2rRpXL58mW+++YY333wz\n3Xq9Xs/t27dZtmwZ77//fqbfsM3l/v37fPnll7xoxNCgoCCsra0ZO3YsM2fO5N69e+YN+LfXec/O\nnTvHH3/8wZAhQ9i/f78GKdMcO3YMT09PZsyYwebNm/nkk0/Src9Nf3+ROXt7ewICAl44DOb58+dp\n1qwZkLa///nnn0Zt/9ntV6lShbCwsHTrTfkZelXbV69epV69eiiKgqWlJXXq1OGvv/4yWvuQ9u9S\nhQoVgMzf33PnzhEdHc2QIUP45ptvTHIKftiwYaxevTrTdeZ4D4yhQBbgp3bv3s3t27extrZOtzw6\nOpoWLVrQu3dvunfvTvfu3Xn8+LEmGd9//33mz5+fIeNTT548oUmTJkyZMoVSpUoxZMgQMydM8zrv\nmaurKy1btmTSpEl89tln/P7775pkDQ8PZ+3atTRp0oTw8HB8fHzSrc9Nf3+RRq/Xk5ycTHJyMqqq\nUr16dUqVKvXC54eHh1OsWDEA7OzsiImJyXGGlJQUkpOTSU1NTbd9ACsrq3RFxpSfoVe1/fx6Y/3+\nTz169AhLy//NZJvZ9m1tbWncuDGfffYZv/32G0uXLjVa+095eXm9cJ2p3wNjKdAFeOrUqfj7+zN1\n6tT/Z+/O42rK/weOv84NkcqWXZK1kCWEIktZa6wTWcIPWWLGboYxY2xjz1jGDGYYW8jYxjbMGGMJ\nWbPvTCPLpJGotJ7P74/L/UpFkU7p83w8eszcc889532P+7nvez5rkk4CFhYW+Pn5Ua1aNVxdXXFy\ncuLPP//M9Ph2797NuXPn2Lp1K6tWreLEiRPJ7hydnZ3x9fXFysoKHx8frly5wpMnTzI91rRcsyVL\nltC6dWtq1KjBgAEDNFvWrmDBgnh6etK2bVu+/PJLjhw5kqQzVlb595f+Z/Xq1dja2mJra5tin41X\nFSlSxFAOnjx5QqlSpd45hvr162Nra4uXl1eS44N+0ZG8efMaHr/Pz9Cbzv3q8xn1/l8wMzNLkvBT\nOv6QIUP45JNPsLa2Zvz48Zle1t/3NcgoOTIBr1+/nvHjxwMQFRVFiRIlkvyi++eff3B1dQVACMHZ\ns2epW7dupsdZo0YNZs+eTYMGDbCxsaF48eKGap8XNmzYYOic9eJXn7m5eabH+qZrpqoqTk5OhIWF\nAXDq1Cnq16+f6XGC/ov0+vXrgL4qTVVV8uTJY3g+q/z7S//Tu3dvbty4wY0bN2jQoMEb93dwcOCv\nv/4C4K+//qJWrVrvHMOpU6e4ceMGfn5+SY5/+fLlZF/u7/Mz9KZzV6tWjbNnzxIXF0dsbCwXL16k\nfPnyGXJuAEVRKFGiBDdv3gRSvr6ffvopu3fvBrQp6+/7GmSUXG/e5cPTqVMnNm/eTMeOHYmKimLG\njBkADB48mNq1azNgwAAaNmyIm5sbd+/epXPnzhQvXjzT4yxdujSlS5cG9L9y7969i62tLQ8ePMDe\n3p579+7RoUMH/P396dChA5cuXXovVT1pUbZs2RSv2fr16/n111/x8/Nj5MiRdO3aFSEEZmZmuLu7\naxJr+/bt2bx5M25ubty5c4dFixYBWe/fX0qfl8vFsGHD+PTTT1m/fj2xsbHs2rUrQ8/VokUL9u7d\nS+vWrbl//z6rV68GMuczlJZzjx49mrZt2/L48WNGjx6Nqalphpz7BV9fX3x8fIiJicHOzg5nZ+ck\n13/w4MEMGzaMxYsXExISwi+//JKh509NZl6DjJCjV0OKiop67fqhcXFxCCEwNjbOxKjeTmRkJCYm\nJuh02lZqpOWaPX36FDMzs0yMKvU4TExMMDIySvH57PTvL6Xs2bNnqfafyIzjv8/P0JvOnZCQgBCC\n3LlzZ/i50xrDkydPNKmReyEzrsG7yNEJWJIkSZK0kiPbgCVJkiRJazIBS5IkSZIGZAKWJEmSJA3I\nBCxJkiRJGpAJWJIkSZI0IBOwJEmSJGlAJmBJkiRJ0oBMwJIkSZKkAZmAJUmSJEkDMgFLkiRJkgZk\nApYkSZIkDcgELEmSJEkakAlYkiRJkjQgE7AkSZIkaSCX1gFIrxcaGkpUVFSSbZaWlkRERGBiYvLW\na50KIbh37x6lS5d+q9eHhYVhampK3rx53+r1kpRV3b59O9k2U1NTdDrdO5W59IqKiiIuLo5ChQql\n+TWvK5fx8fFcvHiRypUrY2JikpGhGryI2dzcnNDQUEqWLPlezvOhkHfAWdygQYPw9PRkyJAhhr//\n/vuPefPmERgYyL///sv48eMBOHDgAKtXr07TcSMjI2nbtu1bx/X5558TEBDw1q+XpKwoMTHRUM4c\nHR3p2rUrQ4YMYdWqVUyYMIEDBw689xj69esHwP79+1myZEm6XptauZw3bx6WlpbMnDmTpk2bMnjw\nYDJyKfhXY75//z5dunTJsON/qGQCzgamT5/Orl27DH/Fixdn6NCh1K1bl9OnTxMYGMi9e/fYs2cP\nly5d4unTpwDExMRw5cqVJMeKjY0lMDCQyMjIZOd58OCB4bUAt27dIjExkYSEBIKCgjh27BjPnj1L\n8pqIiAgePnwIgKqq3Lp1y/BcSue/c+cOhw4dIjw8/N0uiiS9B0ZGRoZy1rhxY6ZOncquXbsYNWqU\nYZ/bt28THByc5HUpfdYBLl68SHR0dJLX3r9/nxs3bgD6mqjz58+jqiqgL4N79uzh1q1bODs707dv\nX8Nrr169yt9//214/Lpy+bLt27fj5+fHtWvXWLduHcePHyc6Oprp06cDGGIB+Pfffw3fAZGRkRw9\nepSzZ88akvX9+/eJiori1KlThrL+uphfCA0N5d69e0m2ye8CWQWdLURERBAWFgZA3rx5MTU1ZfLk\nyXz00UccOXKEkJAQAgMDOXXqFEIIQkJCOH36NOvXr8fa2prr16+zefNmnjx5gqurK82aNePMmTPJ\nzrN3714uXrzIzJkziYiIoH379gQFBdGsWTPq1auXpEC+sH37dq5evcqUKVOIioqiffv2nD9/nrVr\n1yY7/8GDB5kyZQouLi4MHjyYrVu3UrFixUy7jpL0rubMmYO9vT3bt29nzpw5uLm5pfhZNzIyolmz\nZtSqVYvr16/j4eGBt7c3HTt2pFixYlSsWJFBgwYxZswYatSowalTp5g7dy737t0jKiqKXbt2UaxY\nMU6dOsWMGTPo2bMncXFx5M2blxIlSjBjxozXlsuXbd26FU9PT8zNzQ3bxo0bh5eXF+PHj6d169Zc\nvXoVIyMjZs2ahaOjI7Vq1aJLly60adOG48ePU7FiRRYvXszkyZO5cuUKdnZ2/Pnnn0ydOpXcuXMn\ni/mTTz4xnGvkyJE8evQIVVUpVKgQ8+fPZ8+ePfK7AJmAs4WJEydSsGBBANzd3Rk7dqzhOQ8PDy5c\nuEDHjh25c+cOQghsbW3p168fa9euxczMjO+++45du3Zx6dIlunXrxvjx4zl06BBDhw5Ncp6PP/6Y\nGTNmMH36dDZu3IinpydRUVGGQnrz5k2aN2+epl+s3333XbLz//3331SqVInevXvTq1evdLVtSVJW\n4OHhwcCBA6lTpw579uzBzc0txc86QMuWLZk4cSLPnj2jXr16eHt7Ex0dzcKFC6lSpQrDhg1j0KBB\nNG7cmKCgIJYvX87ChQspVKgQQ4cOxd/fH4Bz585x/fp1jh8/DsDPP/+crnJ57dq1ZHelFSpU4OrV\nq6m+T1VVWbZsGXZ2dhw6dIhhw4YZnnNxcWHChAls2bKF33//ne+++y5ZzC+EhYVx/Phxtm7dCkCv\nXr0IDQ3lwoUL8rsAmYCzhW+//ZbmzZunef+nT59y6dIlvvzyS8O2cuXKERwczEcffQRA7dq1k73O\nxMQER0dHDhw4wNq1a1m1ahW5c+dm1apVzJo1Czs7O4QQJCYmpnjeF9VoqZ3/k08+wdfXly5dupCY\nmMjq1aspXLhwmt+XJGnNysoKAAsLC6Kjo1P9rJ84cYKWLVsCkC9fPvLkycPdu3cNzwMEBARw9+5d\nNm3aBECZMmVSPOfdu3epWbOm4XGfPn149uxZmstljRo12LdvH05OToZtN2/epHz58sn2fVGGAcaM\nGUPu3Lmxs7NLcuw6deoA+o5p8fHxqVwpvWPHjvHw4UOGDx8OQOHChfn777/ld8Fzsg04mzMyMjIU\njhf/b2ZmRrVq1Zg1axZr1qzB3d0dKysratSowcGDBwEIDAxM8Xh9+/bF19cXY2NjLC0t2bt3L4qi\nsH//fqZNm0ZUVFSSwpgvXz5CQ0MBOH/+PECq59+2bRuNGzfm5MmT9OjRg3Xr1r3PSyNJ711qn/WW\nLVsaOmw9evSIf/75h1KlSgGg0+m/dl1dXenSpQtr1qxhzJgxhuSuKEqSczg7OxMUFATo233d3d3Z\ntWvXa8vly7p3787GjRu5evUqJ06c4P/+7/8YPXo0gwYNAvTNWi/K8IULFwBYvHgxXbt25bfffqND\nhw5Jjv1qfKltA2jcuDH58+dn9erVrFmzhkqVKmFpaSm/C56Td8DZnKWlJefPn2fq1Kk0adKEnj17\nUqVKFb7++mv69etHvnz5iImJYePGjTRs2JCOHTvSunVrbGxsUiw0jo6OXL9+nYkTJwLQpEkTpk+f\nTs+ePYmNjaVixYqEhIQY9m/WrBmTJk3Czc2NokWLGoY/pHT+e/fu0a9fP4oVK8adO3dYsWJF5lwk\nSXqPUvqs58qVi23btuHu7s7t27f58ccfk5W3gQMHMnbsWNatW0d4eDjz588HoHLlyrRr146ePXsC\n+jvNnj170qZNG4QQdO3aFRcXF2bPnp1quXyZk5MTkyZNonPnzpibmxMTE4OqqkRFRZGQkMCAAQNo\n0aIFZcuWNfw46NSpE2PGjOHw4cPkyZOHhIQEEhISUr0Gr8b8QoECBejTpw+tW7fG2NgYa2trSpYs\nSa1ateR3AaCIjOyLLmlCVVUSExPJnTs38fHxGBkZGQpSdHR0sjF/z549S/dYxoiICAoUKJDu51M6\n/5MnT5J0CJGkD0FqZS1v3ryp3iGm9rrY2FiMjY2TbHuRAHPl+t9905vK5ateLnubN2+mQ4cO6HQ6\noqKiMDY2TnJsVVWJjo7G1NQ0TcdOKeaXjxUfH5/s+Zz+XSATsCRJkiRpQLYBS5IkSZIGZAKWJEmS\nJA3IBCxJkiRJGpAJWJIkSZI0IBOwJEmSJGlAJmBJkiRJ0oBMwJIkSZKkAZmAJUmSJEkDMgFLkiRJ\nkgZkApYkSZIkDcgELEmSJEkakAlYkiRJkjQgE7AkSZIkaUAmYEmSJEnSgEzAkiRJkqQBmYAlSZIk\nSQMyAUuSJEmSBmQCliRJkiQNyAQsSZIkSRqQCViSJEmSNCATsCRJkiRpQCZgSZIkSdKATMCSJEmS\npAGZgCVJkiRJAzIBS5IkSZIGZAKWJEmSJA3IBCxJkiRJGpAJWJIkSZI0IBOwJEmSJGlAJmBJkiRJ\n0oBMwJIkSZKkAZmAJUmSJEkDMgFLkiRJkgZkApYkSZIkDcgELEmSJEkakAlYkiRJkjQgE7AkSZIk\naUAmYEmSJEnSgEzAkiRJkqQBmYAlSZIkSQMyAUuSJEmSBmQCliRJkiQNyAQsSZIkSRqQCViSJEmS\nNCATsCRJkiRpQCZgSZIkSdKATMCSJEmSpAGZgDUUERHBs2fPtA5DkiRJ0oBMwBrYt28flSpVwtbW\nFktLS+rWrcvZs2ff+njDhw9nypQp6XrNP//8g6IoJCYmvvV502rixInExcUBUL58+Xd6r5KUVk+e\nPEFRFEqXLo2lpSWWlpaUKVOGjh078u+//771cVP7DB86dAh7e/u3Pm5AQAA1atR469enV/369Vm3\nbl2mnU9KTibgTBYXF4eHhwdLlizh3r17hIaG4uXlRceOHbUO7b1ITExk8uTJqKoKwOHDh6latarG\nUUk5ydmzZ7lz5w537tzh/PnzJCYmMn78+Lc+nvwMSxlFJuBMpqoq0dHR5MmTBwCdTseQIUNYtmwZ\nCQkJABw8eBAnJydKlSqFj48PMTExAKxcuRJbW1tMTU2xt7fnxIkTyY7/8OFDOnXqRMGCBalZsyYH\nDx58qxi/++47ateuTenSpZk0aZIhgUZERODh4UGxYsVwd3cnKCgIgEuXLtGsWTMKFCiAlZUV8+bN\nA8DT0xOAmjVrEhYWRq9evbh16xYABw4coFOnThQuXJgOHTrw4MEDAGbPns3cuXNp0qQJBQsWpFu3\nbrKqXsoQhQoVwsnJicePHwMghGDq1KmUKVOG0qVLM23aNIQQAKxevZqyZctSpEgRPDw8CA8PB0jy\nGd68eTN2dnaUK1eOLVu2GM7zzTff8P333xseT506lSVLlgCpl5WXXbt2jQYNGmBmZoa9vT1Hjx5N\nts/gwYPx9/c3PP71118ZMGAACQkJ9O3bl4IFC2JlZcXMmTPTfZ0OHDhAzZo1KViwIJ06dSIsLIzI\nyEhq1qxpuHYAPj4+bN68+bXXsVmzZsyYMYPixYvz22+/vfb9b968mVq1alGmTBlmzZqFq6sr8Pp/\np2xNSJluypQpIleuXKJly5Zi/vz54u+//zY8d//+fWFhYSGWL18uwsLChLu7u5g3b564du2ayJ8/\nvzh9+rR49OiR8Pb2Fi1bthRCCDFs2DAxefJkIYQQ7u7uok+fPuL+/fti+fLlonz58inGEBwcLACR\nkJCQ7LmFCxeKatWqicDAQBEQECAqVaokli1bJoQQon379sLLy0vcv39fLFq0SDg6OgohhKhdu7aY\nNWuWiIyMFJs2bRJGRkbiv//+E+Hh4QIQ9+/fF6qqCmtraxEUFCRu3bolzM3NxYoVK8SdO3eEp6en\n4f2MGTNGWFhYiN27d4u///5bVKpUSfz8888Z9w8g5QgRERECEL/88ov4/fffxe7du8X8+fNFoUKF\nxObNm4UQQqxcuVJUqVJFnD59Whw/flxUq1ZNHDt2TDx79kyYmpqKM2fOiPDwcNGmTRvxzTffCCGE\n4TN88+ZNUaRIEbFlyxZx7tw5UaNGDVG7dm0hRNIyKYQQQ4cOFdOmTRNCpF5WDh8+LOzs7IQQQnTu\n3FlMmzZNREdHiwULFhiO+7Lly5cLd3d3w2MPDw+xdOlSsX79etG4cWMRFhYmLl26JMzMzMT169eT\nvd7BwUH4+fkl2x4aGirMzMzE6tWrxb1790SfPn3EyJEjhRBCtG7dWqxatUoIIURUVJQwNzcXDx8+\nTPU6CiFEmTJlRIsWLcT27dvFgwcPUn3/N27cEBYWFmLz5s3i0qVLom7duqJcuXKv/XfK7mQC1khg\nYKD49NNPRbly5YROpxO+vr5CCCE2bNggqlevbtjvzp074syZMyIiIkJcuHBBCCHE48ePxbx58wyF\n9UVh/++//4ROpxOXLl0SERERIiIiQjRq1EicPXs22flfl4AbNmwo5s2bZ3g8bdo04ezsLGJjY0Wu\nXLnE5cuXhRBCqKoqfvvtN5GQkCBOnDghEhISRHx8vDh16pQwNTUVV65cEQkJCQIQz549E0L878vL\n19fXkLyFEOL69esCEP/++68YM2aM8Pb2Njzn4+Mjvv7667e+1lLO9CIB29raCltbW5E7d25Rt25d\ncebMGcM+zZs3FzNmzDCUl7lz54ovvvhCxMTECBMTEzF37lzx4MEDERsba3jNi8/wDz/8IJydnQ3b\n582bl6YEnFpZeTkBd+3aVXTq1EmcOXNGJCYmiri4uGTvLzw8XJibm4snT56I6OhoUbBgQfHff/+J\nTZs2iXLlyolff/1VxMTEiJiYmBSvT2oJ+IcffhANGjQwXJPr168LGxsbIYQ+EbZv314IIcTGjRtF\nq1atXnsdhdAn4J07dxqOn9r7X7hwoWjRooVhv59++smQgF93/OxMVkFnssTERCIjI3FwcGD+/Pnc\nvn2brVu3Mm7cOK5du8bVq1dxcHAw7F+mTBlq1aqFmZkZGzZsoEqVKtjY2LBp0yZDtfALISEhKIpC\n8+bNqVKlClWqVOHGjRscOXIEb29v8uTJQ548efD29n5tjMHBwTRs2NDwuGHDhty7d4/bt2+TL18+\nbGxsAFAUhVatWmFkZMTDhw9p3LgxxYoVY/To0SQmJiaL79VzNGjQwPC4YsWKFClShHv37gFQrFgx\nw3P58+c3VM9LUnodPHiQS5cucfLkSW7dusWdO3cMz929e5fZs2cbysvs2bM5c+YMxsbG+Pv7s3Ll\nSkqXLo2bmxtXr15NctwbN25Qp04dw+P69eunKZ60lBVfX1/i4+NxcHDA1tY2SVXzCwULFqRZs2bs\n3LmT3bt34+joaGjO6d69O/369aN48eKMGTOG2NjYNF+vkJAQzp8/b7gmjRs35vHjx9y9e5cOHTpw\n4MABIiMj+eWXXwxNTKldxxcsLS3f+P5v3bqVpBNbvXr1DP//puNnV7m0DiCn2bZtG9OnT0/SfvvR\nRx9hZ2fH1atXKVy4MHv27DE8d+fOHU6ePMmTJ0/45Zdf2LRpE9WrV+fXX39l3LhxSY5tY2NDgQIF\nOH/+PBYWFoD+w16gQAHatm3L4MGDAShSpMhrY7SwsODixYuGL5Tz589Tvnx5ChUqxNOnT7l//z4l\nS5YEYPny5bi4uNC5c2dWr16Nm5sbxsbGmJiYvLaNxsLCgoCAAMPj+/fv8+jRI6ytrQF9cpekjFSj\nRg2mTp1Knz59uHjxIiVKlKBevXo4OzsbfpRGRkYaEoK9vT1nz57l4sWLfPXVVwwZMoQ//vjDcLyy\nZcuyc+dOw+Pbt28b/l+n0yVJeg8fPqRkyZI8evQoTWUlV65cbNq0iadPn7Jy5Up69epF69atk5Vd\nT09PtmzZQq5cuQzJMDY2llGjRjFp0iT27t3LkCFDqFatGgMHDkzTdXJwcMDR0ZG9e/catt27d4+S\nJUsafuBv27aNffv2Gdq1U7uOLxgZGQG89v07ODjw888/G17zck/zNx0/u5J3wJnMxcWFa9euMWXK\nFCIiIkhMTGTLli1cuXIFR0dHmjVrxunTp7l8+TKg75B09uxZHj16RKVKlahevTpCCH7++Wfi4+OT\nHDtPnjy4uLjw3XffoaoqDx48oGrVqly5coWyZctib2+Pvb09VlZWhtc8evQoyV9CQgKtWrVi3bp1\nRERE8OjRIzZu3IiTkxPFihWjRo0arF69GiEEhw4dwtfX13AsV1dX8ubNy7p164iJiSE+Ph4jIyOM\njY2JiIhIEmurVq04dOgQFy9eRFVVli1bRrVq1ShQoMB7vPpSTjdo0CDKly/PZ599BkD79u1ZsWIF\n4eHhCCHo2bMn8+bNIywsjOrVqxMSEkK1atVo06ZNsmM1adKEY8eOce3aNWJiYpLcpRYvXpzAwECE\nENy/f5+//voL0CcOSLmsvKxPnz78+OOPFC5cmB49emBsbJziD9qPPvqIgIAA/vrrLzp06ADA+vXr\n6dKlC4qi0KZNG6pUqZLq9YiMjExS/qOjo3F1dSUwMNBwh7lmzRpat25tuEv39PTkq6++olGjRoby\nmtp1TOl8qb3/li1bcvToUf78809CQkL46aefDK9L6/GzHa3qvnOy06dPi2rVqolcuXIJY2NjYWVl\nJfbt22d4ft68eSJ//vyiYsWKonXr1iIsLEw8ePBA2Nvbixo1aghbW1sxbdo0YWpqKqKiopK0N50+\nfVpUqlRJlC1bVlhbW4sZM2akGMOLNuBX/w4cOCDCw8OFm5ubKFSokChatKjo0aOHiI+PF0Lo22+s\nra1FuXLlhJ2dndizZ48QQohBgwYJKysrYW9vL3r27CkaNGgg/P39hRD6jhu5cuUSFy5cMLSfCSHE\nzJkzhYmJibC0tBTVq1c3dBQZM2aMmDBhgiHWVx9LUlq8aAN++PBhku3Hjh0TOp1OHDlyRERFRYmO\nHTsKc3NzUaFCBeHu7i6io6OFEEL4+voKKysrUbVqVVG2bFlx/PhxIYRI8hleuHChKFKkiChdurTo\n2rWroQ04JCRE2Nj1D2ISAAAgAElEQVTYiJIlSwobGxvRp08fQxtwamXl5TbgkydPipo1awobGxtR\nuHBhMWvWrFTfp6enp+jUqZPhcXx8vGjXrp2wsrISZcqUEW3atBFPnjxJ9joHB4dk5X/IkCFCCCEW\nLVok8ufPLypXrixq1qwpAgICDK+Ljo4WpqamYv369YZtr7uOZcqUERcvXjTs+7rviuXLlxvi9vb2\nFpUrV37j8bMzRYgPoS939vTs2TOioqIM1cUvS0hIICoqKtkd4X///UehQoXQ6V5fefHw4UMsLCze\nqSr3yZMn5M6dm3z58iV7LiwsLFncUVFRKIqCiYlJsv2joqLInz9/su0JCQlERES8sVpckt6nqKgo\ngBQ/ow8fPqRo0aKpvjY+Pp6YmBjMzMzS/NrXlZWXhYeHY2ZmRq5c6W8tjImJIS4uDnNz83S/FvT9\nVR4/fpyusvm66/jqfq++/9u3b3Pr1i1cXFwA8Pf3Z/HixYbag/QcP7vIEgn4RQiy3U+SJClnio6O\npkqVKvTv3598+fLxww8/sGDBAtzd3bUO7b3J1Dbg8PBwunXrRokSJRg4cKBhcgV/f38mT56cmaFI\nkiRJWYiJiQknTpzA2toaExMTtm/f/kEnX8jkBLxhwwaaNGnC7du3KVWqFB9//HGyzgeSJElSzlSi\nRAl69erF0KFDqVatmtbhvHeZOgzpxo0beHl5kS9fPiZOnMikSZPo168fbdu2fafjrly58sOYlkz6\nYJiYmNClSxetw8gWZPmVsprMKr+ZegfcqVMnBg4cyLFjxwD9KjnFixfnq6++eutjrlq1KsnYMUnK\nCnx9fdmxY4fWYWR5qZVfRVHe2NEwJ7C4eYtG3y/D+Gmk1qEkJQQlz1+k6u69b943G8qs8pupd8CO\njo74+fklGRM6e/ZsateubVicIL2EEPTu3Zs+ffpkUJQfvsTERA4cOECJEiXkqi7vyaNHjz74u7rE\nxERiY2Pf2JP3dVIrvw8fPuTRo0evHcOaU4hxn1MhKgrlNT2xtSISE3F4PskGgLh7F6V0aQ0jyhiZ\nVX4z/Sdm+fLlqV27dpJt3bt35+OPP37t6xISEnj69Gmyv6ioKNmOnE5ffPEFjx8/Zs6cOZw7dw7Q\nt8/36dOHli1bJpkBR5JeWLhwoWF1rSVLllC5cmXs7Ozo1atXuqY6TAtzc3PDbGs5nWJikiT5isDj\niJAQDSP6H+Wl5AsgVq0l8fMvEBcuahRR9pIlpqL09fVFCMGoUaNS3efIkSPMmTMn2fazZ89StWrV\nN85vnJWFh4cTGBiIk5NTimMJM9oXX3xBXFwcu3fvBvTTY/7yyy/MnTuXyMhIGjZsyK5du3Bycnrv\nsUjZx927dylXrhxRUVEsXbqUM2fOYGpqyqRJk1i8eDEjRozIsHMZGxtjbGycYcf7oBQvhvrJCJSW\nrii9eqJkoTGxymej4be9qN/MhPLWGE2dpHVIWVqWSMADBgx44z7Ozs44Ozsn2+7t7Z2tqvq2bdvG\n1atXsbS0pFu3bsTExNC3b1+GDBmCl5cXmzZtMsybmlHEs2cQGan/i4rGNCqKg0ePEHvzJk+3bOXJ\nvv3MrVeP0vMXoZv0FZs2beLPP/+UCVhKUWRkJLVq1TJM8ODu7s7mzZsz9Bzx8fHEx8e/U/X2h0op\nVw7dquWIZctRvf4Pnb8fyltM1PE+KDodStvWiNYt4XDAm1+Qw2WJfzVTU1OtQ8gUEydO5OjRo4wY\nMYJRo0Zx6NAh5syZw6JFiyhdujRLly4lIiKCwoULG14j4uKeJ84oiIzS/zcqChEZlWy7iHq+7aX9\niIoG4zyQPz+YmoKpKVvu3qGTfR0K1KnHxsBAqhcqSHAuI8o4O6P6fMpdlyYZ/iNAyv4sLS0ZOXIk\nFSpU4NKlS4SEhBAWFsagQYMMk/JnlMePH8s24NdQzMxQRg5DdPgIEhIgiyTgFxSdDpwbJ9mmbtkG\nRkYobVqh5M6tUWRZS9b6V/uAhYaGsnbtWq5fv47Y9yetJk/l+zlzCJ8+i5JmZszYuweHhHgKjP+K\nxJcTq04H+U0MyZP8JpA/P8qL/zc1BcsykN8EXf78zxPt82T7/LHySm/SqJUr+ezCBcLDw/ls/rfk\nzp0ba2trZhctQvPr1zl+LohZAYc0ulJSVjVkyBCGDBlCcHAwQUFB5M+fn9DQUFatWpXhYzbNzc1l\nFXQaKOXLJ3msrl6LUsMOpWYNjSJKndLIEXXR94gVK1E+ckPp0yvZd1NOk6kJeM6cOezfvz/F53r0\n6EH37t0zM5xMlZCQoF/e7/gJ1BZu6ObPRUEhvmABJgedoUStGgzs1v15os1vuGN9H1VLvXv3Ji4u\nLknP8/DwcH799VceNG/K7Lv3MclC7UpS1mJlZWVYUatQoUL4+vry22+/vbYPx759+5gyZUqy7dev\nX6dOnTrJekHLNuC3o9jX1re/limNrm8flCqVtQ7JQClaFKNJXyHu3kX8sgUePIBSpbQOS1OZmoC9\nvLzw8/Nj1KhRyXpCv26y8w9ByZIlKZM3Lzf6D8L0wO/8HHCYH+6HUKN+PVYs+JamTZtydMF8ZsyY\nkSm9P18d9lWwYEF69eoFQGKf/ohTp1Hq2Kf0UklKIi19OFxcXAyT7L8stT4csg347SjVqurbh/f8\njvr1FHTfL0QpWFDrsJJQSpdGGTY0yb+7uHcPbt6CRk45ak2ATE3AxYsXZ82aNXz55Zf06NEjM0+d\nJUw1MWdZQXP+WrSQihUrcuHCBczMzAgODtY6tCSUHp6oa9dhJBOwlAbvow+HbAN+e4qREUrb1iS2\ncOHQgQMUt7SkSpUqiMhIfdNVFpEk0RYogOq/Cb77AaVDO5ROHVDecm6I7CRXXFwcd+/exdraOlNO\nWLVqVTZt2pQp58pKxIaN6HQKgw/uxyeL/8JTmjdD/PQz4spVFBv5BShlPtkGnD63b99m165dKIqC\nl5cXZmZmfPHll9SpU4ddf/xBkyZNaG1ZlsQlP6Lz9EBxctQ65CSU/PkxWjgPceMGYsuviE1bULp1\n1Tqs9y5XSEgI06ZN46effsLT0xNVVVPdedGiRRQrViwTw/swiOs3EOv90S37PltUryhGRiieXVDX\n+MlxfJJBZvbhkG3AaXfnzh28vLwYNGgQDx48wNzcnJCQEPr160elSpUwMzPjwoULtGnTBl2Xzqir\n/WDZcnTTJmW5WauUihVRxozUj/54ibrvTxQnR5S8eTWK7P1IUgW9aNGi146plYump5+IjUWd8g3K\nsKFZciq51ChtWyNWrUEEB6M873Aj5WyZ2YdDtgGn3dSpU5k4cSItWrQA9N/Ta9euZezYsVy+fJnF\nixfj5+cHgNK4EUaNGyHOX4Cw/yCLJeAXklU/nzqDOm8BiqsLSnt3lEyqsX3fkvQBt7CwoGjRohQs\nWJCQkBCKFi2Kn58f/v7+WFhYyMnR34L47gcUWxt0zZpqHUq6KHnyoHzcCbF2vdahSFnEiz4cmzdv\npmrVqkn+MjoBP378mDt37mToMT9UZmZmSeYOKFWqFLGxsQQFBTF58mTWrl2brJ1esauebKiS+s1M\nxOUrmRJzeunGjkK3ajlYFEGdNE3rcDJMihl12rRp+Pv7s3XrVjZv3syZM2dYuXJlZseW7YmjxxDH\nT6AM/0TrUN6K0qEd4lgg4t9/tQ5FyiIyqw+HnAs67VxdXfn666+5dOkSJ0+eZObMmXh4eNCrVy9U\nVWXo0KGGO+DXsrVBnT6LxP6DECdOvv/A00kpXBhdz+4Y/fxjku3i4iXExUsaRfVuUuwFffToUXbs\n2EH//v0ZM2YM5cqVY/ny5ZkdW7YmHj1Cne2LbuoklHz5tA7nrSgmJijt3BHrN6IMG6p1OFI6BAYG\nUr9+fXbu3MnJkyf59NNPKVSokNZhpZlsA0671q1bk5iYyKRJkyhSpAgTJ07ExsbGsNBKWuk6toeO\n7RGnTus7YNar+54izmBmpqgTp0BiIkrrligfd8o2PahTvAO2srJi3rx5HDhwACcnJ+bNm6efREJK\nM3XGbJR27ihVbbUO5Z0oHp0Rf+xDhIdrHYqURvv372fEiBGEhobi4+NDvnz5MnShhMwQHx9PdHS0\n1mFkG25ubmzYsIHFixfTpEmTdzqWUsceXY9uSbapPy5H3bZdP698FqOULYvRimXovvgcHvyLCDii\ndUhplmICnj17Nqqqsn79ehRFoX79+m9cLlD6H3XTFoiMQunVU+tQ3plSoABKC1fExpw3dCy7CggI\nYNq0aezYsQMPDw/Gjh3L3bt3tQ4rXWQbcNaiuDSDs+dQu/ZAnTYDEROjdUjJKFUqoxs5DKVp0h8g\n6tIfs2wVdZIq6BftvS/s3LmTnTt3AnDw4EGaNWuWudFlQ+L2bcSqNeiWfPfBzHOqeHqg9h+E6NEt\nSy19JqWsfPnyrF27lnPnzrFgwQKWLl1KxYoVtQ4rXeQ44KxFsbZG+eoLRFQU4s+/4PFjKFECAKGq\nWeq7LtlQz1KlUH3nQ0wMSvuP0HXJOjeTSRJwiRIlUp15pkCBApkSUHYm4uJQJ3+DMmQQyvMP54dA\nKVYMxbEhYuuvKK9UTUlZT7du3YiMjMTV1ZUGDRpw+vRppk+frnVY6SLbgLMmJX9+lI/ckm6MjiZx\n+GiU5k1RWrhkueGWOve24N4WcfMm4tjxJM+JuDhN24uTJGBHR0ccHR05evQoo0aN4vHjxwghiIuL\nY/jw4djby6kJX0cs/RHFuhy6li20DiXDKd27og4fjfDonG06OOQ0Z86cSbYu75dffgnoa7f69u2r\nRVhvRY4Dzj4UU1N0Iz5F7P0DdYAPSptW6Ab01zqsZJQKFVAqVEi68egxEnfs0v9waNzotR1mxZkg\nxI5d6L4cn2ExpVhvMGvWLCZMmICNjQ27du2iTZs2ODpmranLshpx4iTi4GGUkcO0DuW9UMqWherV\nEDt3ax2KlApzc3OqVKmS4p+lpaXW4aWLbAPOXpRqVdGN+BTdZn+UV+Y8EFeuIh4/1iawN3FujM69\nLSLgKGqX7ojjJ1LcTRw8hPrtQsSDjB2SmeIwpNjYWFxcXDhx4gR37txhxIgR/PDDD9SpUydDT/6h\nEBERqDNmo/vqiyw12XlG0/Xohvrl14h27ihGRlqHI72iQoUKVHj1F/5zCQkJmRzNu5FtwNmToihQ\n6ZX+BqGhqJ+NBysrlGZNUNzaZJlaNEVRoIkzRk2cEdHREBYGwPbt26lbty4fffSRfsdGTuiqV0P9\nMmOn5k0xATdr1ozhw4fTqVMn5s2bh7W1teadOPbv388333yTbPulS5ews7PTIKL/UWfO0Y8/y4KL\nYGckpUplsCyD+GMfSquWWocjpSIsLIxevXoRHByMqqokJCTg4ODA2rVrtQ4tzWQb8IdDcW6MzskR\nTp5CHDwM5y9AFlxpTTExgbJlAf3n7+XmD0WnI/VJmt9eigl45MiR/Pnnn7Ro0YLr16/z+PFjvLy8\n3sPp065p06Y0btw42faBAwdqEM3/qL/ugP8eoUz5WtM4MouuRzfU+YtAJuAsa+3atdjb2+Ps7Ezl\nypV58uQJj7NqFWAqZBvwh0UxMoL6Dij1HZI9l/jpSJSqNigNG2SZmxgjIyOMMqGWL8U2YCMjI8PE\n3j4+PowfPx4zM7P3HszrKIpCrly5kv3pdDrNVhgSd+4gflqB7stxOaZKVrGvDSYmiMMBWocipSI6\nOpqmTZvSsGFDLly4QJ8+fThw4IDWYaGqarK/1BZ/kW3AOYdu1DAwNUVdvITEHr21Did1+fKhuLXJ\n0EOmeAc8evRo9uzZY3hsZGTE0KFD6d8/6/Vs04pITNQPOfLuh1KmjNbhZCpdD0/UNeswauSkdShS\nClxcXBgxYgR+fn6MGDGCYsWKaV6du3//fqZOnZps++XLl6lRI/ldj2wDzjkUKyv9ims9uyfrrCXO\nBCEuX0FpWF/zFZCUfPlQ2rbO0GOmmIBfLG8F8OTJE+bMmUPVqlUz9MTZnfhpBRQvph9jlsMojZxg\n2XLE6TP6O2IpS3FwcGDGjBlYWFgwY8YM/vjjD83HATdr1izFiXy8vb1TvAuWbcA5k1KwYNIN5awg\n4AjqV5P1E2n0/z90H1DzV4oJOG/evOR9vvCxmZkZ3bt3Z926dXIo0nMi6Cxi7x/oli/VOhTNKD08\nUdeuw0gm4Cxnw4YNye42IyMjWbx4sUYRpZ9sA5YAlEKFUIb6wFAQd+9C6MMkz4uAI1CoULadcz/F\nBLxhwwYuXLgA6Icv7N27l9GjR2dqYFmViIxEnTYD3bixKObmWoejGcWlOWL5Sv2qKTYpz54maaNT\np060bauvmYmNjWXHjh2EPR9ekV08fvyYR48epTozn5TzKKVLQ+nSSbaJ+HiE73wIDYXatdAN8kbJ\nRstYppiAS5UqRXx8PAA6nY527drRsGHDTA0sq1Jn++rHsmXBbvSZSTEyQvHsgrrGD6OpGTs2Tno3\nuXPnJnfu3IC+Bqt37944Oztnqx/Rsg1YSgtd0ybQtAkiIgJx8hQ8eQovJWAReBwqV0LJoktxJknA\nEyZMYPv27Snu6OPjo/mQH62pv+2BOyEoE8ZpHUqWoLRtjVi1BhEcrO9EIWUJx48fN5RjVVW5cOFC\ntuvDIduApfRQChRAcWmebLs4GoiYOh2KFkWxr4UyeGCWGrGSLAF/9tlnLF68mCdPnuDj40NiYiLf\nfPMNrq6uWsWYJYh79xDfL0U3fy7K87uLnE7Jkwfl404Ivw0o48ZqHY70XMGCBZNU3TZq1AgXFxcN\nI0o/2QYsZQTd8E8Qw4bCjZuI02cgLg6ez/cs4uPh5CmoYffGVd7Epcuo3y6ExER0C3wN+4v791EH\nDdW3Qzd1RtenV7riS5KAX3S+OnjwICtXrsTCwgKAnj17smLFihSHEeQEIjERdeoMlD69UMqV0zqc\nLEXp0A7Vsyfi339RihfXOhwJqFy5MpUrV9Y6jHci24CljPJiekzl1SkyFQV1yzaY8g2ULYtS1x5d\n/5QXLFFnzUX3wyJEwBHE6rUogwYAIE4HoXT3ROny8VvNR5FiG7Cbmxu9e/emR48ePH36lOXLlzNn\nzpx0H/xDIVatAdP86Dq21zqULEcxMUFp545YvxFl2FCtw8nRtm3bxldffZXic/Xq1ePHH3/M5Ije\nnmwDlt43JVcujGZNRyQmwtVriEuXAVCnzYCgszwsX/5/O8fGouTNC7Y2qDt2/W970FnE38GIHbtQ\nunqke1hqignYx8eHUqVK8ccff2BiYsKCBQuoX79++t/hB0BcuIjYvhPdT0u0DiXLUjw6o/bojejd\nM/k4PinTuLm50bx5c06fPs23337LlClTKF26NGvXrsU8m/XYl23A6SeCg/U/hNu5o9jaaB1OtqEY\nGUFVW8NQJmX8Z7B7JwUKFEi+c3w8vFRdrYwbi06nQyQkoHbpDhmRgAE6dOhAhw4d0nWwD42Ijkad\nOh3d2FFZthddVqAUKIDSwhWxcROKdz+tw8mxcuXKhZmZGYGBgXh5eVG9enVAP9lFu3bt6NUrfe1T\nWpJtwOmnTpuJUqc26vRZACgtXfV/xYppHFn2oigKFDAnz8srNllYIM5fQPy+D8WxISIsDGJjEf6b\nEDXt9DcebzEjYpIE7O/vT4UKFbhy5Qrnzp1LsmOLFi3eS0es2NjYLPtLV3y7EKW+A0qDnHn3nx6K\npwfqAB9Ed883dmiQ3i9XV1e8vb158OABRYoUYf369TRvnryHaFYm24DTR/z7L4SGogzoj26gN+Ly\nFcTeP1C9B0N5a5RWLVCaOL92wXkpdboZUxErV0OxoujatkZcvgJPn6IM7K8fCWJigm7uzHQfN0kC\nLleuHEWKFKF8+fKGcYQvlMyAwc3R0dHMnDmTU6dOMWPGDIYOHUpwcDD16tVj5cqV5MtCHw71z/2I\nK1fR/fiD1qFkC0rx4igNGyC2/orSo5vW4eRo9vb2LFu2zDChTvfu3fHw8Mjw8yQmJhIbG/te7lJl\nG3D6iMNHUJwcDR2BFFsbFFsbxJBBcCwQdc/viEXf61ccatUC6thrtohNdqTkz4/iM+h/j1+q4n/R\nIettJFkNycHBgXLlylG3bl0qVapEly5duH//Pg8fPsyQcYTr168HYNy4cbRo0YL+/ftz+/ZtGjdu\nzNatW9/5+BlFhIYi5i9C99X4LLNwdHagdO+K2LQFERendSg50smTJ/H39+fYsWNs2LAB0E/EcfLk\nSZYsefc+DAsXLuTgwYMALFmyhMqVK2NnZ0evXr2IjY195+O/zNjYONu1W2tJHDqM0ij5VMFKrlwo\njZwwmvI1Or9VUNUW9aefUT26oS5ZhggO1iBa6YUU24CnTZtGbGwswcHBbN68mUqVKrFy5Ur69Onz\nTie7dOkSvXr1okaNGhQtWtQwt3STJk3YtGnTOx07owghUKdM13ctr1jxzS+QDJSyZaFaVcTO3Siy\nx3ims7CwQFVVihQpQp06dZI8VywD2gHv3r1LuXLliIqKYunSpZw5cwZTU1MmTZrE4sWLGTFixDuf\n4wXZBpx2IiICbtyEunVeu59ibq4vlx3bI/75R19FPfpzKFxY31bs2hwlpY5H0nuT4nrAR48eZfLk\nyWzZsoUxY8YwfPjwZG3Cb6Nbt254eXnRokUL6tSpw4ABA1ixYgU+Pj54enq+8/Ezgli7DnLnQtc1\n46vscgJdz+6I9f76rv1SpipXrhwODg5UqFABKysrunTpQv78+bl8+TI1a9bMsPNERkZSq1YtzM3N\n0el0uLu7ExoammHHB7kecHqII8dQ6tVN1wRBStmy6Pr3Refvh25gf7h+A7VHbxLHf4k4cFA/SYX0\n3qWYgK2srJg3bx4HDhzAycmJefPmZcgwpDp16nDgwAFmzJjB8uXLGTt2LMHBwfz444/Y2mq/moW4\neg2xaQu68Z9pHUq2pVSpDGVKI/7Yp3UoOdb+/fsZMWIEoaGh+Pj4kC9fvgy5O7W0tGTkyJH07t2b\n33//nZCQEIKCghg0aBCdO3fOgMj/x9zcPEP6neQE4nAApFD9nBaKoqDY10b3+Rh0v6xHadYEdftO\n1I89UX3nIy5eyuBopZelWAU9e/Zsvv/+e37++WcSEhKoX78+H3/8cYacsGDBgobqsZYtW9KyZdrW\ndrxx4wZ79+5Ntv3SpUsZUlBFTAzq5GnoRnyK8nwGMOnt6Hp0Q52/CD6gdTuzk4CAAKZNm8aOHTvw\n8PBg7NixtGjR4p2PO2TIEIYMGUJwcDBBQUHkz5+f0NBQVq1aRbVq1TIg8v+R44DTRsTEwJkglC8+\nf+djKXnzorRwhRauiIcPEb/vQ53tC/Hx+l7ULV1RSpTIgKilF1JMwHFxcZw9e5YFCxawYcMGNm7c\nSKdOnQxTU2Y0X19fhBCMGjUq1X2MjY0pWrRosu158+bFKAMm1xYLF6PUrIHi3Pidj5XTKfa1wcQE\ncTgApZGT1uHkOOXLl2ft2rWcO3eOBQsWsHTpUipmYH8GKysrrJ4vvlEojePjHz9+zD///JNs+6NH\nj1Js55VtwGkUeByqV0PJ4OukFC2K0t0Tunvqawb3/q6f87icFUrLFihNnTP8nDlRigl42bJleHl5\nYWFhQcmSJenevTv+/v74+Phk2Inj4+PR6XQYGRkxYMCbu3FbWlpiaWmZbPvevXsRQrxTLOLQYUTQ\nWTnbVQbS9fBEXbMOI5mAM123bt2IjIykefPm2NnZcerUKaZPn/7ezpeWH9C3bt1i5cqVybZfvXqV\n8i9P+fecHAecNuLwEZTGjd7rOZQqlVGqVEb4PB/StPcPxOIf9HMktGoBdeug6FJszcwybt++zfXr\n1wFo0KBBlulhn2ICvnz5MgMGDGD37t0AWFtbc+TIkXc+WUJCAp9//jlbtmwB9GsNGxsb4+npyWef\nadPuKv77D3Xut+hmfqOf61PKEEojJ1i2HHH6jP6OWMo0iqJw/fp1du7cSXR0NLt27aJ+/frUrVv3\nvZwvLT+g7e3tsbdPvoa2t7d3ij+g5TjgNxOJiYhjgegGv/041PRQjIzAyREjJ0dEZCTiz79Qf14N\nM+foe1C3bolibZ0psaTXrFmzcHR0xMjIiISEBAD27dtHQEAA+fPn59NPP00290VmSPFnS79+/fDw\n8ODChQusWrWKTz75JEOmsZs3bx4AV65c4ebNm1y/fp3Tp0/z4MED/Pz83vn4b0P9ZiZK5476zkNS\nhlJ6eKKuXad1GDnOkSNHUBSFyZMnA/Dtt98yd+7cDD1HfHw8ic97upuammJqapqhx5fjgNPgTBBY\nWaEULpzpp1ZMTdG1c8do8QJ08+dCnjyon08gsf8g1I2bEOHhmR7T69y/f5/w8HBKlixJ4cKF8ff3\np3fv3jRq1AgTExPc3NyIjIzM9LhSTMBNmzZlyZIluLq6UqBAAXbu3EmZt5jn8lX37t2jU6dOSX5p\n5MmTh3bt2mky5ED1/wXi4lF6ds/0c+cEiktzuHsPceWq1qHkKBcvXqRBgwaGmY5KliyZIRNlJCQk\nMHr0aCpUqICNjQ02NjZUr16dqVOnEp/Bw1bi4+OJjo7O0GN+aMShAJTG2jfxKGXKoOv3fxhtWItu\n6GC4/Tdqr74kjpuAuv+vLDExT/PmzenUqRPr1q0jKCiIOXPmcOzYMZo3b87gwYNp2LAhe/bsyfS4\nUqyCPn78OFWqVOGLL77I0JP17NkTHx8fOnfubGjPvXPnDqtXr2bfvswdtiJu3kSsXYdu6WI5Jdt7\nohgZoXh2QV3jh9HUSVqHk2N4enri7OxM9erVyZUrFxs3bnznSXQgaQ3Wix/RcXFxjBw5Ej8/P3r3\n7v3O53hBtgG/mTh0GN2ib7UOIwmlVk2UWjURw4bq+9bs3oPwna+fh7pVCxS76pkek6qqlC9fnjJl\nytCsWTOuXbuGlZVVkg5+iqK8c1+it5FiAp4yZQpff/11stl03lWdOnXYunUrO3bs4Pz586iqStmy\nZdm3b1+GzIIw9AIAACAASURBVNSTViIuDnXyNyifDpGLyL9nStvW+snKg4NRnvecld4vMzMzfv/9\ndzZv3kxwcDCffPJJiu2v6XXv3j08PDxSrME6fvz4Ox//ZbIN+PXEpctQoABKqVJah5IixdgYxdUF\nXF0Qjx7phzT5ztevq9vSVZ+MM2mct06n49ixYxw5coSYmBgmT55MREQEY8aMYeTIkQQFBTFp0iSe\nPn2aKfG8LMUE7OrqSq9evXB1dTW07bi4uGTIiiolS5bE29v7nY/zLsT3S1EqV0Lnkr1WiMmOlDx5\nUD7uhPDbgDJurNbh5Ai3bt1CVdU0dY5Kj8yswZLjgF9PHM4a1c9poRQujNLVA7p6IK7fQOzZi+rz\nKZQpo++41dT5va+g9qKZ5MWPR29vb4yMjPD19aV48eKEhIRkeD+GtEgxAdepUydZ9XNKY3CzIxF4\nHHHkKLoVy7QOJcdQOrRD9eyJ+PdfWeOQCV6MMnjdsKC3kZk1WHIc8OuJg4fRfT1B6zDSTalUEaVS\nRcTggXD8hH6Vpu+XoDjUQ2npCvXq6ntbvwev9nLu27cvffv2fS/nSqsUE3CjRu93XJlWxOPHqDPn\noJv0lRxEnokUExOUdu6I9RtRhg3VOpwPXoMGDejZsyfXrl0zTJ5jbW1N//793/nYmVWDJduAUyf+\n/hsSErL1YjGKkRE0bIBRwwb6IU37D6CuXQ+z5qK4NNNXUWfj95dWKSbgD5U6fRaKe1tNOgLkdIpH\nZ9QevRG9e6IULKh1OB+0YsWKMW3atCTbimezmgfZBpw6cfhIiksPZleKqSnKR27wkRvi3j39Kk1f\nTgITE317cQsXTYZaZYYck4DVLdvgyVOU3l5ah5IjKQUKoLRwRWzchOLdT+twPmiVKlWiUqVKWofx\nTmQbcOrEoYBkk2/ExMRw6tQpABo2bIgui89MlRqlVCmUPr2gTy/EufOIPb+j9u4Htjb69uJGTh/U\nGu1JEvCECRPYvn17ijv6+PgwcODATAkqo4ngYMTPq9B9v/C9tS9Ib6Z4eqAO8EF093zvnS6k7E22\nAadMPHwIDx5ADTvDtpiYGLp160bFihW5efMmwcHBHDlyJNv/gFFq2KHUsNMPaTocgNjzO2LeAhTn\nxvo745o1tA7xnSX5mTRhwgQOHz5M9+7dcXd3Z9euXWzfvp2GDRvi6uqqVYzvRCQkoE6ahjJ4AEqp\nUhk+XEJKO6V4cZSGDRBbf9U6FCmLk+sBp0wcCkBxckwy9/Lo0aNp164ds2fPZvPmzbi6urJ06VIN\no8xYSp486Jo3w2jmN+hW/gRWZVEXLibRsyfqipWIu3e1DvGtJbkDzps3L3nz5uXgwYOsXLnS0IGj\nZ8+erFixgqlTp2oSZHpFR0ezZcsW4uPj6fBvGGaWZVBdXZg+bRq//fYbhw4d0jrEHEvp3hV1+GiE\nR+dsX5V04cIFjh49irm5OR4eHppX+23bto2vvvoqxefq1avHjz/+mMkRvT3ZBpwycTgA3cedkmxL\nTEzEwcHB8Njd3Z3ffvsts0PLFErhwihdPoYuH+snU9rzO+onI6BUKf1dcfOmKBoMJ3pbKX5juLm5\n0bt3b/z8/FiyZAmjRo2iVatWmR3bW0lISMDW1pZr166R/+o19nw+jqttWxEaGkqjRo0yZEpN6e0p\nZctCtaqInbu1DuWdBAQE0Lp1a/Lly8fGjRtxcnLK8OkY08vNzY3Dhw+zYMECw5KEf/31F97e3jg7\nO2saW3rJuaCTE0+fwtVrUDfpBEm1atVizJgxqKpKfHw8K1asoGbNmhpFmXmUChXQ+QxC98t6dF7d\nIegsqmdPEidORhw9hng+V3lWlmIC9vHxwdvbm4MHD3Lt2jUWLFhA48bZY53cVatW4ebmxtejRtHp\nxm0qLlvCghUrKFWqFE2aNNFkujEpKV3P7oj1/tmigKRm6NCh/Pbbb/RwdOSXX36hQYMG7Ny5U9OY\ncuXKhZmZGYGBgXh5eVG9enUKFSqEt7c3a9eu1TS29JJzQScnAo7ol/57pebI29sba2tr6tatS8eO\nHalZsyZdunTRKMrMp+h0KPUd0H31BTp/PxSHeqjr/FE7d0VdtBhx7brWIaYqxV7QDx8+ZMOGDRw4\ncIANGzYwYcIE1q1bZ6iSzsqePXum/7UfHY3uh0UUi47m3q9btQ5LeolSpTKUKY34Yx9Kq5Zah/NW\nKpQsRYXtu1BjYzH6+kvKlSvHs2fPtA4L0M9k5+3tzYMHDyhSpAjr16/PkFnsMpMcB5ycOHwEpWny\nmgydTsd3332nQURZj2JiguLWBtzaIB480FdRT5oKefLoxxa3cEEpUkTrMA1SvANetmwZXl5edO7c\nmZIlS9K9e3f8/f0zO7a34uzszCeffMLpu3f5Nz6eJk2a0LRpU63Dkl6h69EN4bdB6zDeijhylMkh\n91myZAmPB/Tj8OHDDB8+PMskOXt7e5YtW0ZwcDAHDhyge/fumq23/bbMzc0pmUlzBWcHIjYWzgSh\nNKivdSjZhlKiBLreXhitXYlu1HC4ew/1/7xJHPM56u9/6K+pxlK8A758+TIDBgxg9259O521tTVH\njhzJ1MBeFRMTQ3gKa0xGR0cnmWLMzs6OHTt2MHr0aEqUKMG4ceOSzNyzfv36TIlXej3Fvjbky6ef\n07ZR9pjTVoSHo85fBDduUmX1zyz7eQXd/+//KFOmDBcvXsxSk13Y29tTq1Ytnj17liWG8gQHBxMQ\nEJBs+40bN3BwcODZs2fky5ePZ8+eERYWhoWFBebm5kkev/p8Tnpc5NYtjKvaEmNkRNidO5rHk+0e\nVyhPvlHDifbuS9ixQAofCiDf/P9v787DY7reAI5/72SRkITY94g1SOz7HsFPLbE1paQoVRpLhSq1\nK62taKmttNqQ0KqKUlq1iyWCithjaSyVEBEkss/5/TE1TDORbSaT5Xyex9POvXfOeedO7n3n3nPP\nOV8T7/k2Ua1bpdo+p2bI05uAhw8fjoeHB6BpU92+fbs2GZvKX3/9xYoVK1ItDwwMxMnJSWdZ8+bN\nOXjwYE6FJmWRyvNt1L5bMMsDCVi95w/E2nUoPbujTJuCYmGhnZ4vN5o0aRK//fYbEyZMYPv27cyZ\nM4cmTZqYLJ7k5GRiY2P1Lv/vVHBqtZrExESEECiKglqtTrW+oL1WnzqN0rZNroknr75WLCwQtWqi\natMaVWIiyl/n9G6fU5QbN26Izz77jG+//VZnxbVr19i6dStWVlZ4eHhQuXLlHAsqM0aMGIEQIk91\nsZBeShkyHNWHYzRXxLmQuH8f9eKl8DwO1ccTUKpWzdD7li5dSo0aNejZs6eRI0zt+PHj+Pv706xZ\nM6Kjo2nfvj0zZ85k8+bNOR5LetI6fh8+fCjbgP8lUlJQ934T1Q/f5tshGXOb7t2707x58zS79RmK\n3jbgtWvXkpSUxLRp05g4cSKPHj3iu+++M2ogUsGkDBqA2jf3JQahVqP+cSvqUWNQWrZAtWp5hpOv\nqV28eJEWLVpob6OVK1eOhFzQ3pUZsg34FeeCoVIlmXzzIb23oPfv38+aNWtYuHAhXbp04cmTJ3JU\nGskoFLeOiG+/R1y9pnk6OhcQ16+jXrQUbG1QrV2JUrasqUPKlAEDBtCuXTucnZ0xNzdn69atDB06\n1NRhZYocC/olEXA8z8z9K2VOmpMx+Pv7884773Dr1i15G0gyGsXMDGXAW6g3+WE2d7ZJYxGJiYjv\nfRB7/kAZNQJVHu0iZWtry59//skvv/xCWFgYY8eOpVGjRqYOK1PkWNAviaMBqL5aYuowJCNIMwGX\nLFmSvXv34unpib+/P82by8ffJeNQur+B2OiLCAtDcXAwSQwi+DzqRUtQatVEtWFdnp4y8dChQzx+\n/Jj33385Y87YsWP1PsSYW8l+wBri8hWwtUWpUMHUoUhGoLcN2M3NDXNzc6ysrPjpp5+oX7++bI+R\njEaxtER5s69J+gWL2FjUS75EPW8+qjEfoJo5LU8nX4BLly7x0UcfsWDBAu2yCxcumDCizJNtwBqa\nbnr5Z+5fSZfeBDxy5Eht+4tKpWLBggV5dipCKW9Qertrxm+NiMixOkXAMc1co2ZmqHy+Q2nZIsfq\nNrZly5YRFhbG8OHDSUxMNHU4mSbHgtYQR49pux9J+Y/OLeiffvqJatWqceXKFc6fP6+zYefOnfPs\nlIRS7qcULozSsztiy1aUD8cYtS4RFaUZUOPW36hmz0BxrmvU+kzBzMyM1atXs2jRInr06IG5eZqt\nTbmSbAMGcfs2xMej1Kxh6lAkI9E5KqtUqUKJEiWoWrWqzuhSgLwdJBmd4tEP9TvvIoZ4Gu02sHr3\n75oBNXr1RJn+Ccp//s7zgzp16lD83y4rH3/8MQ4ODuzfv9/EUWWObAN+cfUrn37Oz3QS8K+//srO\nnTv1bujl5UXduvnvSkHKPZRixVA6uSG2bkMZMdygZYt79zQDasQnoPryCxRHR4OWnxucPn2amzdv\nUrlyZXx9fXVmQGrcuPFr3pk1KSkpJCQkGOUqVc4HrOl+pHrfsMeBlLvotAFPnz6dgIAABg4cSI8e\nPdi9ezc7d+6kZcuW8vazlCOUAR6Inb8hDDQVnVCrUW/5CbXXOJQ2rVGtXpEvky9oei5UqVKFUqVK\n0bhxY51/hriSXLFiBUeOHAE0g/XUrFkTFxcXBg8ebPCBPgp6G7CIjIR796B+PVOHIhmRzhWwlZUV\nVlZWHDlyhB9++EE7/aCnpycbNmxg3rx5JglSKjiUMmVQWrZA+P+KMnBAtsoS16+jXrgEihXNkwNq\nZFZwcHCaQ+c1bdo027OC3bt3jypVqhAbG8s333zDX3/9hY2NDXPmzGHVqlV4e3tnq/xXFfQ2YHH0\nGEqrligqvc/JSgawfft2jh8/jlqtZtasWSb5waf32+3evTtDhgzBz8+PtWvXMnHiRP73v//ldGxS\nAaUM7I/4+RdEFp/eFYmJqNeuQz3pExSPvpgtXpDvky9ojtuAgACWL19O1apV8fX15dChQ4wYMUIz\nR7aBxMTE0KBBA+zs7FCpVPTo0YMHDx4YrHzQtAEX5NH3RIBs/zWmb775ho8++oj+/fvTtGlT+vTp\nQ3R0dI7HoffRyCZNmlC0aFGOHz9O4cKFWb58udEG4oiNjaVIkSJGKVvKmxQHB6hbB/HbHpQ+vTL1\nXnEuGPXipSi1nVB9vx6laFEjRZn7mJubY2trS2BgIO+88w7Ozs6AZsIDd3d3Bg8enK3yK1WqxIQJ\nE6hWrRqXLl3i7t27REZGMmrUKNauXWuIj6BVkNuARUwMXLkKTU03e1V+98MPP3Dy5ElKlSpFkyZN\nuHXrFgcOHKBv3745GofeBDx37lxmz57NoEGDDFrZkydPiIuL075Wq9V069aN33//HRsbG2xsbAxa\nn5R3qTwHop45B+HeA8XMLN3tRUwMYvU3iFNBqD7yRmneLAeizJ06derEiBEjCA8Pp0SJEmzZsoWO\nHTtmu9zRo0czevRowsLCOHfuHEWKFOHBgwf4+PgY/AHNgjwWtDh+Aho3QrG0NHUo+VaFChVISUnR\nvo6MjKRmzZwfi15vAu7UqRODBw+mU6dO2qTo5uaW7YN44cKFLF68mMaNG2vnAL1+/Tp9+vThvffe\nY/hw+cSfpKHUqgkVKyD2H0Dp0vm124ojR1F/9TVKu7aaATWsrXMoytypUaNGrFu3jh9//JELFy4w\ncOBA7fzehuDg4IDDv0OG2tvbG6zcVxXkNmBx9BhKOzn4hjH16tWLcePGMX78eM6ePcvatWv57LPP\ncjwOvQm4cePGTJs2TWdZqVKlsl3Z559/TsWKFTlw4AArVqygTJkyNG/enBMnTmS7bCn/UQ16WzNg\nRhoJWERFoV62HG7fQTV3Nkqd2jkcYe508+ZN7OzsWLhwYY7Ut3TpUoQQTJw40WBlFtR+wCIxEc6c\nRZn8kalDydcGDRpEiRIl8Pf3p3jx4ty+fRsrK6scj0NvAm7TJvWvr+TkZINU6OXlRceOHRk6dKi8\n4pVeS2nUEKyt/x0PV/eBFPVvexDfrEfp0wtl1nSUPDbSkzFt374dwKAJ8XVenfQhLefPn2fLli2p\nlgcFBVGlSpVUywtsG/CpIKjthCKb44yua9eudO3a1aQx6D1rnThxgokTJxIdHY0QgsTERMaPH8/Y\nsWMNUqmTkxO7du1i5syZlC9f3iBlSvlTdLeuXPIay9JqDpQpU4avp05DWfolJCah+moJip6Td0HX\nokULPD09uXbtmrYroaOjI++9957B6khKSkKlUmFmZpahZzcqVKhAz549Uy2/cOGC3ocwC2obsGbu\nX3n7uaDQm4AXLVrE9OnTWb9+PUuWLGHJkiW0amXYGTksLCyYP38+kLFbWPv372fu3Lmpll+9epX6\n9esbNDYpd4iLi6N0n15cbtmWdaO8WO3tzdUDXam94DPNla+imDrEXKl06dKp2rNeJOLsSE5OZsqU\nKdorbJVKRaFChRgwYACTJ09ONXztq0qUKEHLli1TLS9TpgxCiFTLC2IbsEhJQRw/gWrEMFOHIuUQ\nvQk4ISEBNzc3goKCuHPnDt7e3qxZs8Yow9lBxm5hubm54ebmlmr5iBEj9B7AUt538uRJxo0bR41+\nb5IydASf9HFnaPBZNvXtberQcjV7e3s2bdpEWFgYarWa5ORkmjVrRpcuXbJV7rJlywC4cuWKNtkm\nJiYyYcIE/Pz8GDJkSLZjf6FAtgEHn4eKFVFKlDB1JFIO0ZuAXV1dGT9+PH379mXZsmU4OjpSvXp1\ng1ac2VtYUsFjaWnJs2fPUNq0xsx/KzEOlTku73aky9fXl0aNGtGuXTtq1qzJ06dPDTLIwD///IOH\nh4fOla6lpSXu7u6cOnUq2+W/qiC2AYuA43Lu3wJGbwKeMGECBw4coHPnzoSGhhIdHc0777yT7cqy\ncwtLKnhatWrFokWLcHNzY9y4ccwcNJAZM2aYOqxc7/nz53To0AELCwsOHz7MzJkz6dOnD+PHj89W\nuZ6ennh5edGvXz8qVaoEwJ07d9i4caPBZ1sqiG3A4mgAqqWLTB2GlIP0JmAzMzM6d9Z0/fDy8jJY\nZTl5C0vK+xRFYceOHfj6+nLz5k2+/PJLXF1dTR1Wrufm5oa3tzd+fn54e3tTunRpgySzxo0b4+/v\nz65duwgJCUGtVlO5cmX2799P6dKlDRD5SwWtDVhcvQaFC6P8+8NGKhh0EvD06dNfOx3hyJEjs1VZ\nTt7CkvIPQ4/Ilt81a9aMBQsWULJkSRYsWMC+ffu0DzxmV7ly5RgxYgQA06ZNw87OzuDJFwpeG7A4\nGiDHfi6AUiXgyZMns2rVKp4+fYqXlxcpKSl8/vnnBpmOMCdvYUlSQda2bVsAunTpku2Hr0yhoLUB\ni4DjqKZMMnUYUhqEWg1HA8DeHqWey8vlSUmIg4cAUCpWzPRgQDqzIVlZWWFra8uRI0fw9vamQoUK\nVK5cWTsdYXa9uIVlb29PSEgIwcHB2NjYGOUWliQVNDt27KB+/fp6/xmyD/ALdevW1f6QNrSCNB+w\nuHsXYmNRnArG1X5eJBYvRVy/gXr5SsSpoJcrzocgfvwZIh9BTEymy9XbBvxiOsJBgwbx7Nkzvvvu\nO7744ossB/+qV29hSZJkON27d6djx46cPXuWL7/8krlz51KhQgV8fX2NkswGDhxo8DJfKEhtwOJI\nQKqR3iQTi4klKSlJ+1JcuIjZxg2Idm1R+2zCrFlTzfJzwVCmNDx7BrWdMl2N3gTs5eVF+fLl2bdv\nn9GnI5QkyTCMPR1hTipIbcAi4Diq9941dRgFnvr3PxAnAjVXtddCeezi/HJlQoLmv7Y2mmT7QuVK\nqJxqaeYgnzIds5VfZapOvQn49OnTfPHFFzx8+BAhBP7+/owdO9ZgQ1FKkmQ8xpqOMCcVlDZg8egR\n3L0L9euZOpQCRdy6BXZ2uoOehN1GadsaZdxolMGDdZtFzcw0Az7d+welcuWXy83NoX49FGtrxMo1\nmY5DbwL+9NNPmTVrFu3atUOlUv1bf/pzskqSZHrGno4wJxSUfsAi4DhKyxYZmvNayh5xKgj1b3s0\nI44VLYrq80911qtGpt00qgz2RP3hRLh3D9WarxFHAxCRj1DKlEbtPQnsi6GMynzTqt4EbGdnR/Xq\n1QvEASBJ+c3jx4+ZM2cOV69eRa1Ws2/fPn799Vc2btxo6tAyrKC0AYujAah6u5s6jHxHPHwI0U9Q\narwcwVH8cx+lTSuUD8egFC+eqfJUb/wP0dnt5axrpUrxYiR6VQtN86yiUul/82voTcDt2rWjXbt2\nvPHGGxT/N9BOnToZpCuSJEnGtWHDBho2bIifnx+WlpYAeW7iioLQBixiYuDSZfg89SQzUuaJiAjE\nlq2Is3/BkyeaW8mvJODs/tBJa8rTrCTeF/SW6OzsnOqp53LlymW5EkmSco6dnR3FixfXO81fXlEQ\n2oDFiZPQqCHKvz+SpIwTQkBYGDrTkd76G8qWQTVzKkq1aiaKLHP0JmB9Uw8mJycbPRhJkrKvQYMG\n9O7dmz179uDo6AhA1apVMzTrWG5RENqANXP/yu5HmaH+/Q8IOoMIOo3StAnKjKnadUqL5igt8lZv\nHb0J+MSJE0ycOJHo6GiEECQmJjJ+/Hj5FLQk5QHFihVjyZIlOsvy2kA3+b0NWCQmwukzKB95mzqU\nXEsIAWq19gE18ewZBJ2BZk1QjR6V6Xbc3EhvAl60aBHTp09n/fr1LFmyhCVLlui9KpYkKfepXr16\nqulDTX0H68iRI3oH8wkODqZOnTqpluf7NuCg0+BUC8XW1tSR5CoiLk5za/7YCcTpM6j8fODfphTF\n1lbnijc/0JuAExIScHNzIygoiDt37uDt7c2aNWto3LhxTscnSVImRUZGMnjwYMLCwlCr1SQnJ9Os\nWTN8fX1NFlOrVq301j9mzBi9XRzzexuwZu5fefv5v9SzPgUrK5TmzVCN+QAlDz/HkBF6E7Crqyvj\nx4+nb9++LFu2DEdHx1S/qCVJyp18fX1p1KgR7dq1o2bNmjx9+pTo6GiTxvRilK7/srS01Nxq/I/8\n3AYs1GrE8ROohhXc6VfF1WuIgGPgWAVVx5dTjKrmz8u1faLFX+cQu3ajMuBVuN4EXKJECerVq0fn\nzp0JDQ0lNDQUKysrg1WaFZcvX9Y7VWJwcDAVK1Y0QUSSlDs9f/6cDh06YGFhweHDh5k5cyZ9+vRh\n/Pjxpg4tw/J1G/D5EChXDqVUKVNHkuPEpcuoP/0MChVCadcGpVFDnfW5JvmmpOi8FEeOov72e7Cx\nMWg1Ogk4JCSEGTNmEBQURJMmTVi9ejUAf//9t8mvgIsVK4aLi0uq5QcOHMi3v5QlKSvc3Nzw9vbG\nz88Pb29vSpcuneeOkfzcBlyQ5v4VV6+h1Kr5coGlBaolC1EqVDBdUBlgce060a8+m9CmNSrnuqhn\nzDFoPToJ2MXFhU8//ZTly5czevRobduMra0tVV7tb2UC5cqV09sX+ZdfftF7C0uSCqpmzZqxYMEC\nSpYsyYIFC9i3bx/z5883dViZkp/bgMXRY6i+WGDqMIxGXLiI2H8QceQoSpPGKJ98rF2n5LKmTCEE\nnApCxMWh6tBeu7zDByOp5vRydiNFpcIYWSbVLeh69eqxfv167euYmBhsDHzZLUmS8QQEBFCmTBmK\nFClCly5d6NSpE3PnzmXWrFmmDi3D8msbsLgWqnnI6NUB/fMZ9co1KG1bo1q1HKVMGVOHo5eIiUF8\n+z3i0GGoWBHVB7p95NU5dCtcJwEnJiYyZswYOnTogIeHBz169CA0NJSaNWuyY8eOfHlASFJ+8fz5\nc4YPH86lS5ewsbGh1L9tjDExMdjb25s4uszJr23A4mgASpv80aVTPHyI2LsPpU5tlIYNtMvNVq8w\nYVQZFHodShRHtXYlSkb7yFtbo3R/w6Bh6CTgJUuWYGZmRq9evdi8eTNFixbl5s2bzJ49mw0bNjBq\n1CiDVi5JkuEULlyYefPmsWPHDsqWLYuzszPPnz/H3t7e5E1ImZVf24BFwHFUH080dRjZIq5fR71y\nDdy8heLaAWrkrtvKrxKxsZrb4QHHMFv0shlGadhA50dDRijW1ijduho0Pp1RpE+ePMnYsWMpUqQI\nu3fv5u233wagTZs2XLp0yaAVS5JkeDt37iQ8PJyBAwfy888/89Zbb9GnTx/u3btn6tAyxc7OLt+N\nPy/u3YOnT1FqO6W/cS4mbv2Nqm9vVL/8hGr8WJRc2kSpXrUG9QBPCD6P6u3+pg5HL50r4JIlS3L3\n7l2qVatGQECAti04JCQEBwcHkwQoSVLGHD9+nK1bt7JlyxbCwsLw8fHh6tWrBAYGMnXqVLZs2WLq\nEDMsP7YBi6PHUNq2MXUYGSZiYhC/74VLl1HNnKZdruqcO2fFE8+e6YwspjjXRXl3CIq1tQmjej2d\nK2AvLy/ee+89WrVqxdtvv42NjQ2rV69m1apVeW5Cb0kqaAIDAxk0aBCVKlViz5499OrVC2tra1q3\nbm2UO1gpKSk8f/7c4OWCpg3YWGWbiiYB543uR+ovlqEeOBhCr6MMGmDqcNIk4uJQ7/yNFK9xiGPH\nddYp7drm6uQLem5Bjx49ms6dO1O5cmW+/vprAgMD8fT05Ndff+XZs2emilOSpHS8uIMFsGvXLtzd\nNfOfXrhwwSB3sFasWMGRI0cAWLt2LTVr1sTFxYXBgweTkJCQ7fJfFR0dzZ07dwxapimJqCi4fRsa\n1Dd1KHoJtVp3QbWqqDZvRPXJx7l2aj9x/TrqtwYizpxFNWwIqq7/M3VImWYOaPvRlitXLlWf2p49\ne2r/X9+YrZIk5Q7u7u4sXLiQEydOkJiYSPv27dm3bx/jx49n0aJF2S7/3r17VKlShdjYWL755hv+\n+usvbGxsmDNnDqtWrcLb23Az++SGfsBJSUlcvnyZWrVqZSmW2NhYIiIi+Pbbbylx/CT1VGY0jI7G\nwsIC13j07AAAHUVJREFUOzu7DJcTFxdHXFwcxYoVIzw8nPLly2c6lrSIhw8R/r+iONWCV26Pq/r0\nMlgdhiJiYnTbm4sUQeX7A0om9mVuoypRogShoaEMHjyY8+fP8/z5c8qVK0fr1q3p16+fzr/81iVA\nkvKTokWLcvr0aRYvXsyBAwcwN9c84vHdd9/RrVs3g9UTExNDgwYNsLOzQ6VS0aNHDx48eGCw8kHT\nBpyZJGVoK1eupFGjRixZsoS2bdvy2WefZbqMHTt2ULt2bcqWLcvg6jW4Ua4sPXv2ZMOGDZkqZ9++\nfcyZM4fHjx/j5eWV5nbDhw/PcJkiNhb1ZwtQDx8JycnQtEmmYspJ4uIl1PMXoR48TGe5Uq5cnk6+\nAOZFixblyJEjhIWFcfPmTW7cuMGvv/7KjRs3eP78OdWqVaNq1arY2dkxbNiw9EuUJMlkrKysaNLk\n5cm0UyfDPTBTqVIlJkyYQLVq1bh06RJ3794lMjKSUaNGsXbtWoPVA6btB7x37158fHw4e/YsFhYW\nJCUl0aJFC/r164fTv6MjXbx4EUdHR534nj17xr1797TbXLt2jTp16jDmvfd4OHAwXRfPZ2n37tjb\n2zNp0iTCw8Np3rw5gwYN0ttP+/Hjx1y/fp2Uf8clLlasGMuWLQM000ueOnUKOzs7nJ2dCQ8P548/\n/uDmzZtUrVqV5ORkLly4QHx8PPXr18fa2pr79+9jZ2fHlStXKHbvHxydaqGa8CGKtTVXr16lUKFC\nOt3VHjx4QHJyskGvuDNLvfALxIWLKL3dUY1N+8dHXmUOoCgKVapUoUqVKnTs2FG7MiQkhB07drB1\n61ZSUlJkApakAmz06NGMHj2asLAwzp07R5EiRXjw4AE+Pj7UrVvXoHW92g9Y3L+PCDqjs15p1QKl\nZEmA9Ner1Yhdu8HaKkNP8O7Zs4exY8diYWEBgIWFBadPn0ZRFBITE3F1daVBgwaEhobi4eHBiBEj\n2LBhAz4+PtSpU4dr166xbds2FEVBURSu373L23dusT4mhvj4eBwdHXn48CEBAQGcPXuWNWvW4O/v\nrzPe/qFDhxg9ejQdO3Zk//79dO7cmUePHjFgwAACAwPp3LkzzZo1IywsjJIlS/LGG28QGxvL7t27\n+eCDD3B1daVp06bExMRw4sQJzq34mjm+m7h6/TouLi4cOHCAefPm0cvKikGDBpGYmIiVlRVly5Zl\n8eLFTJgwgaioKNRqNfb29nz11VfZ+j4zSjx+jPLKjxGlX29Ukz/KkbpNQe9sSAB//fUX/fv3Z/bs\n2Wzbto2yZcsatOKkpCRUKpVsV5akPMbBwUH7UJexRtjSaQOOiYUbN3U3aFDv5f+nt14IzXqbjM0t\ne/36dXr06KGzTFEUQNPPukuXLsyaNYu4uDiaNm3KiBEjWLNmDYcOHcLa2po5c+awfft2atasycOH\nD2nTpg2LFy/mvffew9vbm7Zt23LgwAH+/vtvJk+eTM+ePVPtx7lz57Ju3TpatWrF3LlziYyM1K5T\nq9XcunWLSZMm0aFDBy5fvkzjxo2xt7dnzJgxPH36lKlTp9K1a1dCfTbi5uvHo02bwUyFm5sb06dP\nZ/v27fz55584OjoSGhrKqVOnAPj++++JjIzk1KlT+Pv7AzB48GAePHhA6YyOGJUFIvAU6m3bURyr\noHww8uV+z2VjRxtamgm4Xr16vPvuu7Ru3dpgyTc5OZkpU6awfft2AFQqFYUKFWLAgAFMnjxZ+4tT\nkqS8Y+nSpQghmDjRcCM8vdoPWKlRHcV7XJrbprvezOy16/+rbt26hIaG4ubmpl125MgRSpUqxcGD\nB+nSpQsA1tbWWFpaEhISQnJyMtb/dnlp2LAhO3fupHPnzpiZmVGkSBH279/PrFmztA+1fvLJJyiK\nwsyZM/nhhx/YuHEjxYsX19Z3+/Zt7V2FRo0asXfvXu06lUrFjz/+yNdff83IkSMZOHAgjRs31q63\nsLDAx8eHhd7eOFtZI2yKwOefosyapd3OxsaGpKQk7t27R/36L5/MHjp0KLt27eLhw4fa6SuLFy/O\n33//bZQELGJjUb/vBXZ2KH17oXRyS/9N+YgqrRVmZmZ88sknBh2A40X7xZUrV7hx4wahoaGcPXuW\n8PBw/Pz8DFaPJEk55/3332fkyJGv3Wb//v106NAh1b/du3cTERGRantT9gN+8803+frrr4mOjgY0\nbbHDhg3D2tqaLl26cPjwYQCioqK4ffs2zs7OmJmZERUVBWhuH9euXRuA/v37s3fvXgIDA2nfXjPb\nzsGDBxkxYgQNGzakW7duDBo0iM2bN+vE4OLiou3ydfLkSZ11cXFx+Pv7s3HjRq5fv86GDRuIj4/X\nXqXv3bsXRVE4uG8f848e4XlSkrYd+cU2L7Rr145z584BmgukHj160KJFC4oUKcLGjRvZtGkTNWrU\noFKlSobZuYBISnr5IjER1dTJmK1egapzp1Tx5XdpXgEbwz///IOHh4fOla6lpSXu7u7aWyCSJOUt\nGZktzc3NTeeK8oUffvhB73SiphwLukmTJkyZMoXOnTtjbW1NXFwcs2fPpkqVKpQrV44dO3bQo0cP\nbt26xfr161EUhdmzZzNgwADUajXW1tbMmzePXbt2AVC9enWGDRvGxIkTWbduHa6urpw/f55x48ZR\np04dtm7dmurJ6C+++II+ffrg4+ODpaUlJf9tzwbNlbcQgm7dupGUlISnpyeFQq9TQ2i6ovn4+DB/\n/nzemTKFhIQEqlevru0f/l82NjZ4enryxhtvIISgf//+lCxZkqFDh9K1a1cKFSqEo6OjQYYFFTdv\nIn7ahtKjGzhrru4Ve3vIYxOFGJIicnAy3TNnzuDl5UW/fv20v6ju3LnDxo0b2b9/f5ZucYwYMQIh\nhM4UipJkakuXLqVGjRo6/ejzui+++IKDBw/qXTdo0CAGDhyY6TJfJOChQ4fqLE9ISCAhIcGkXZFA\n82Sz7SvDG74QFxeHlZVVqiu22NhYihTJWFszwNOnT1/7GePj47GystK7LikpiaRHjyi0ai1cC0U1\nehSJzZpqb90/efKEokWLZiiO5ORkAG3XNdC0NSclJWW7P7aIikK9aAlcv4Hy1psob/ZFUaV58zVX\nyKnjN0evgBs3boy/vz+7du0iJCQEtVpN5cqVs5x8JUnKOe+88w5+fn5MnDiRhg0b6qx7MfWhoeSW\nsaD1JV9A2977X5lJvkC6PzDSSr6gaes12/kbuDijzJiKYmHBq3sso8kXdBPvCy+e0cm2S5dROnZA\n+exTFPnQrY4cTcCgGW1rxIgRmX5fTEwM9+/fT7X8yZMnr/0jlSTJMMqUKcOmTZuYMWMGgwYNMmpd\n+XU+YENT3hmEksvOf+qDh1C5dtC+Vtq0pmC17GZcjidgfTLyFOXly5dZt25dquWhoaE6T/FJkmQ8\nderUYdu2bUavJ7/OB5wd4uZN1F9+jdnypdpluSn5qv/ch9joB/bF4JUELKUtVyTg999/P91tmjZt\nStOmTVMtT+shDkmS8q7cMBZ0biHUasQ36xF/7kd5P+PDTeYk9ZIvEXfuoPrIG6Wei6nDyTNMloBf\nHYgjI09RSpKUu0ybNo3atWvj6elp8LJzSxtwbiAOHIRHUai+X68z321uovTrjeqVYSyljMnRR9GS\nk5P56KOPqFatGk5OTjg5OeHs7My8efNIerVvmCRJBVp+nA84M16dHlCpXw/VtCm5JvmKU0GkTJ2h\ns0yRyTdLcvQK+NWBOF70BU5MTGTChAn4+fkxZMiQLJX74MEDfvzxx2zHd+HCBcLDww16RZ6SksLD\nhw8NPpTn3bt3qVixokHLjI6OxtzcvEB//ho1alDNAPOfRkZGUqNGDQNElXvVrVuXChUqZLscfcfv\n48ePiYqK4uHDh9ku/3UiIiIoUaKE3qeADenevXsZ3ldlIh+BohBRonj6G7/CGMfvq+xiYnA9fY7k\nx9Gca92cewacfvK/4uPjiYmJ0en/bAwRERG4urqmeho9p47fPD8Qh6enJ2vXruXx48fZji8oKIiY\nmBiDntjj4+M5e/YsrVq1MliZAIcPH9aZOMMQQkNDsbKyMuioN3nt88fFxekMCZhVNWrUMOgUgLlR\nVvr9/ldax+/58+c5dOgQ9erVS+OdhhEYGIizs3Omuw9lhlqt5siRI3To0CHdbRW14IEQpJipQE+v\nj9cxxvH7qgi1mms1q7L/4EE6piRnOr7MePToEXfv3jX6A7anTp2iWrVqqX4c5djxK3LQ6dOnRbNm\nzcTChQuFn5+f8PPzEwsXLhTOzs4iIiIiJ0PRa/ny5WLbtm0GLTM8PFz079/foGUKIUT79u0NXuaK\nFSvEzz//bNAyIyIixFtvvWXQMoUwzuf/+uuvxdatWw1erpR5x44dE1OnTjV6PUOGDBF///23UetI\nSEgQXbp0MWodQhjn+NXHGMfef504cUJMmTLF6PW8++674ubNm0avJy052gb8YiAOe3t7QkJCCA4O\nxsbGRg7EIUmSJBU4eWYgDkmSJEnKT3L3gJySJEmSlE/JBCxJkiRJJmA2e/bs2aYOIrewsbHBwcGB\nYsWKGaxMMzMzypQpg6Ojo8HKBChZsiQ1a9Y0aJny89tQuXJl7Avw9Gi5RaFChShfvjzly5c3aj32\n9vZUq1YNS0tLo9WhKAqlSpUyercWYxy/+hjj2PsvS0tLypcvb5Bubq/z4vs31aAvOTodoSRJkiRJ\nGvIWtCRJkiSZgEzAkiRJkmQCMgFLkiRJkgnIBCxJkiRJJiATsCRJkiSZgEzAkiRJkmQCBToBP3r0\niJSUFL3rkpOTiY+P1/4ztaSkJB49eqR3XWJiojbOxMTEHI7spfT2mVqt1lmvfmXOU1OIiopKc3/l\ntu8/v4uKinrtnOBqtdogUxNGRESQXs/L+9mc5ef58+c8e/YszfVCCIPM3pbePnv27Fm251TO6H7P\n7j573Wcx5Hkjve//decEozDZNBAmlJycLNzd3cVbb70lGjZsKE6ePJlqm1GjRgknJyfRqFEj0ahR\nIxETE2OCSF/68MMPxciRI/Wuq1u3rjbOgQMH5nBkL6W3z7Zs2SIqVqyoXX/48GETRSrE8OHDRc+e\nPUXr1q3F5s2bU63Pbd9/fvbOO++Irl27CkdHRxEQEJBq/cmTJ0W9evVEhw4dhIeHh1Cr1ZmuIzo6\nWjRv3lx0795d1K9fP83Z11avXi26deuW6fJfWLlypWjVqpWoW7eu+PLLL1Ot37Ztm2jfvr3w8PAQ\n7u7uIj4+Pkv1pLfPpk+fLtzd3UXLli3FqlWrslRHRvf79u3bRa1atbJUhxDpfxZDnDcy8v2nd04w\nhgKZgI8ePSrmz58vhBBiz549YsCAAam2admypXj06FFOh6bX3r17Rf369fUm4NjYWNGgQQMTRJVa\nevtsypQpBp/uMSsOHDig/c6fPn2qd9q73PT952e///67GDZsmBBCiNDQUNG6detU27Rq1Uo7ZaCn\np6fYu3dvpuuZMmWK8PHxEUIIsX79er3f+fDhw0Xr1q2znIAfP34sXFxchFqtFklJSaJu3boiOjpa\nZ5tX/64mTZokNm3alOl60ttn0dHR2h/iz549ExUrVszKx8nQfr9//77o2LFjlhNwRr5/Q5w30vv+\nM3JOMIYCeQu6TZs2TJkyhStXrvDtt9/i6uqqs16tVnPnzh2WL1/OmDFjCAkJMVGkmtvkixYtIq0R\nQ0NCQrC2tmb06NHMnTuXiIiInA3wXxnZZ+fOnSMoKIghQ4bw+++/myBKjcOHD9OsWTNmzpzJ5s2b\nmT59us763PT953fBwcG0atUKgOrVq3Pv3r1U2zx69AgHBwdAc+yeOXMmW/WkVca7777LN998k+my\nX7h27Rr169dHURTMzc1xcXHh8uXLOtscP36c4sWLA3Dz5k0sLCwyXU96+6xo0aL4+vry4MEDli1b\nRtu2bbP0eTKy3728vFi6dGmWyoeMff+GOG+k9/2nd04wlgKZgF/YsWMHd+7cwdraWmd5VFQUbdu2\nxcPDg969e9O7d2/i4uJMEuOYMWNYuHBhqhhfSEhIoEWLFnz88ceUKFGCIUOG5HCEGhnZZ5UrV6Z9\n+/ZMnDiR2bNnc/LkSZPEGh4ezoYNG2jRogXh4eGppsfMTd9/fhceHk7RokW1ry0sLHTa3J8+fYq5\n+ctZU21tbYmOjs5WPWmV0bp160yXm1Ydr6sH4PPPPyc2NpY333wz2/X8d5+9cPToUY4fP07p0qXT\nbff+r4zs9xUrVtCxY0ecnJwy+QleyshnMcR5I73vP71zgrEU6AQ8efJk/vzzTyZPnkxycrJ2ecmS\nJfHz86Nu3bp06tSJ1q1bc+DAgRyPb8+ePZw/fx5/f398fHwICgpK9QuwXbt2LF26FAcHB7y8vLhy\n5QpPnz7N8Vgzss/Wrl1L165dqVevHu+//z7btm3L8TgBihUrxoABA+jWrRszZszg+PHjOg9e5Jbv\nvyAoUaKEzt+rmZkZVlZW2te2trapEnJWJmh4tZ6slpGZOl5Xz/Tp0zlz5gz+/v6oVJk/Bae3z17o\n168fe/bs4ezZswQFBWWqjvT2e1RUlPaO25w5c4iMjGT16tVG+SyGOG+k9/2nd04wlgKZgLds2cLU\nqVMBiI2NpWzZsjq/9m7fvk2nTp0AzROLwcHBNGnSJMfjrFevHosXL6ZFixY4OTlRpkwZ7S2hF378\n8UemTZsGvPyVZ2dnl+OxprfP1Go1rVu3JjIyEoAzZ87QvHnzHI8ToHnz5oSGhgKa22xqtVpnNpzc\n8v0XBM2aNePQoUMAXL58OdWJUVEUypYty40bNwA4dOgQDRo0yFY9WS0jPXXr1iU4OJjExEQSEhK4\nePEiVatW1dlm5syZPHz4kK1bt2Z5Bp709tnt27fp0KGD9nVsbCyVKlXKVB3p7Xdra2u+//57WrZs\nSbNmzbC2tsbFxcXgn8VQ5430vv/0zglGkyMtzblMQkKC8PDwEL179xadO3cWf/zxhxBC8+Tr2rVr\nhRCapwi7desm6tevL+bMmWPKcIUQmocVXjyEdf/+fVGuXDkhhBDx8fGib9++olevXqJGjRrit99+\nM1mM+vbZ5s2bxdtvvy2EEOLnn38WHTt2FK6ursLd3V3ExcWZJM6UlBTh6ekpunXrJlxcXMTOnTuF\nELn7+8/PPvroI/G///1P1KtXTwQHBwshdP9uAgMDRZcuXUS7du3E6NGjs1RHRESE6N+/v+jcubNo\n166d9ql2JycncfXqVe12Fy9ezNZT0D4+PsLNzU00btxYfP/99zqf5f79+8Lc3FzUqFFDODk5CScn\nJ/HVV19lqR59++zVv99Zs2aJ7t27iy5duoilS5dmqQ59+/3Vc88L8fHx2XoKOr3v3xDnjfS+/7TO\nCcZWoKcjjI2NpUiRImmuT0xMRAhhsrkiMyMmJobChQtn6ZaWIWVknz179gxbW9scjCrtOAoXLoyZ\nmZne9Xnp+8/r4uLi0nzOITPbGKKe7EpOTkYIkaUHrDIjvc+SkJCAubl5mn/fhqrHEDJShyHOG+nV\nk945wdAKdAKWJEmSJFMpkG3AkiRJkmRqMgFLkiRJkgnIBCxJkiRJJiATsCRJkiSZgEzAkiRJkmQC\nMgFLkiRJkgnIBCxJkiRJJiATsCRJkiSZgEzAkiRJkmQCMgFLkiRJkgnIBCxJkiRJJiATsCRJkiSZ\ngEzAkiRJkmQCMgFLkiRJkgmYmzoA6fUePHhAbGyszrJKlSrx5MkTChcunOV5OoUQ/PPPP1SoUCFL\n74+MjMTGxgYrK6ssvV+SCrr4+HiePn1K6dKlTR2KZCLyCjiXGzVqFAMGDGD06NHaf48ePWLZsmUE\nBgYSERHB1KlTATh8+DAbN27MULkxMTF069Yty3FNmTKFY8eOZfn9klTQHT16FC8vL1OHIZmQTMB5\nwPz589m9e7f2X5kyZRgzZgxNmjTh7NmzBAYG8s8///DHH39w6dIlnj17Bmh+YV+5ckWnrISEBAID\nA4mJiUlVT3h4uPa9ADdv3iQlJYXk5GTOnTvHyZMniYuL03nPkydPePjwIQBqtZqbN29q1+mr/86d\nOxw9epTHjx9nb6dIUj7232MnrWMTIDQ0lOfPn2vX3b9/n6ioKM6dO4cQgpiYGE6cOEFwcDBCCO12\nYWFhhIeHExUVxZMnT7TL/1ueZDzyFnQe8OTJEyIjIwGwsrLCxsaGTz/9lJ49e3L8+HHu3r1LYGAg\nZ86cQQjB3bt3OXv2LFu2bMHR0ZHQ0FB++eUXnj59SqdOnXB1deWvv/5KVc/evXu5ePEiCxcu5MmT\nJ/Tq1Ytz587h6upK06ZNdQ7kF3bu3MnVq1eZO3cusbGx9OrVi5CQEHx9fVPVf+TIEebOnYubmxsf\nfPAB/v7+VK9ePcf2oyTlBfqOHX3HZlBQEL1798bR0ZHr16/Tv39/hgwZwqxZs7hw4QIlSpRg7ty5\nDB8+nDfeeINTp05RvXp1Vq1axbx58zhw4AA1a9YkKCiIcePG0b9/fzw8PFKVJxmPTMB5wKxZsyhW\nrBgAPXr04OOPP9au8/Dw4MKFC/Tp04c7d+4ghKB27doMHz4cX19fbG1tWblyJbt37+bSpUu8/fbb\nTJ06laNHjzJmzBidet58800WLFjA/Pnz2bp1KwMGDCA2NpapU6fStWtXbty4QceOHTN09bpy5cpU\n9f/999/UqFGDIUOGMHjwYOzt7Q27oyQpH9B37Og7Nvfs2UOtWrWYMmUKycnJeHh4aBPmkCFDGDly\nJKGhoaxbtw4XFxeOHj3Khx9+SGJiIl999RX379/H3Nwcd3d3gNeWJxmHTMB5wJdffknHjh0zvP2z\nZ8+4dOkSM2bM0C6rUqUKYWFh9OzZE4CGDRumel/hwoVp1aoVhw8fxtfXFx8fHywsLPDx8WHRokW4\nuLgghNDe+vovtVr92vrHjh3L0qVLeeutt0hJSWHjxo0UL148w59LkvK7tI4dfcfmV199xalTpxg/\nfjwADg4O2tvUVapU0b5/0qRJWFhY4OLiQkpKCpGRkTg4OGBurjn9u7i4AHDs2DG95dna2ubERy+Q\nZBtwHmdmZqZNiC/+39bWlrp167Jo0SI2bdpEjx49cHBwoF69ehw5cgSAwMBAveUNGzaMpUuXUqhQ\nISpVqsTevXtRFIWDBw/y2WefERsbq5OAra2tefDgAQAhISEAada/Y8cO2rZty+nTpxk0aBCbN282\n5q6RpDwnrWMHUh+bnTp1wtnZmU2bNrFmzRrKlStHkSJFAFCpNKf2VatW0b9/f37//Xd69+5NSkoK\n5cuXJyUlhYiICJKTk9m/fz/Aa8uTjENeAedxlSpVIiQkhHnz5tG+fXs8PT2pVasWs2fPZvjw4Vhb\nWxMfH8/WrVtp2bIlffr0oWvXrjg5OaEoSqryWrVqRWhoKLNmzQKgffv2zJ8/H09PTxISEqhevTp3\n797Vbu/q6sqcOXPo3r07pUqV0nZL0lf/P//8w/DhwyldujR37txhw4YNObOTJCmX2rt3L7Vr19a+\n9vf313vsQOpjs1OnTmzfvh13d3diYmIYOnSoNvG+0LdvXyZNmkRAQACWlpYkJyeTnJzMypUref/9\n97G0tKRIkSJYW1tnqDzJsBTx6mNxUp6kVqtJSUnBwsKCpKQkzMzMtAfO8+fPKVy4sM72cXFxme4/\n/OTJE4oWLZrp9frqf/r0KXZ2dpmqX5IKGn3Hjj7x8fEUKlRI7w9q0Jwfnj9/jo2NjXbZmjVrGDly\nJIqi8Oabb/LJJ5/QuHHjDJUnGY68As4HVCqVNuFaWFjorNN3AGdl8I7XJd/XrddXv0y+kpS+jCRf\nIN3BcFQqlU7yBU2S7datG0IIHBwcdJ4JkYPr5Bx5BSxJklQApaSkkJKSgqWlpalDKbBkApYkSZIk\nE5At7JIkSZJkAjIBS5IkSZIJyAQsSZIkSSYgE7AkSZIkmYBMwJIkSZJkAjIBS5IkSZIJyAQsSZIk\nSSYgE7AkSZIkmYBMwJIkSZJkAjIBS5IkSZIJyAQsSZIkSSbwf/WrCZmGNOguAAAAAElFTkSuQmCC\n" |
|
566 | 566 | } |
|
567 | 567 | ], |
|
568 | 568 | "prompt_number": 16 |
|
569 | 569 | }, |
|
570 | 570 | { |
|
571 | 571 | "cell_type": "heading", |
|
572 | 572 | "level": 2, |
|
573 | 573 | "metadata": {}, |
|
574 | 574 | "source": [ |
|
575 | 575 | "Passing data back and forth" |
|
576 | 576 | ] |
|
577 | 577 | }, |
|
578 | 578 | { |
|
579 | 579 | "cell_type": "markdown", |
|
580 | 580 | "metadata": {}, |
|
581 | 581 | "source": [ |
|
582 | 582 | "Currently, data is passed through RMagics.pyconverter when going from python to R and RMagics.Rconverter when \n", |
|
583 | 583 | "going from R to python. These currently default to numpy.ndarray. Future work will involve writing better converters, most likely involving integration with http://pandas.sourceforge.net.\n", |
|
584 | 584 | "\n", |
|
585 | 585 | "Passing ndarrays into R seems to require a copy, though once an object is returned to python, this object is NOT copied, and it is possible to change its values.\n" |
|
586 | 586 | ] |
|
587 | 587 | }, |
|
588 | 588 | { |
|
589 | 589 | "cell_type": "code", |
|
590 | 590 | "collapsed": true, |
|
591 | 591 | "input": [ |
|
592 | 592 | "seq1 = np.arange(10)" |
|
593 | 593 | ], |
|
594 | 594 | "language": "python", |
|
595 | 595 | "metadata": {}, |
|
596 | 596 | "outputs": [], |
|
597 | 597 | "prompt_number": 17 |
|
598 | 598 | }, |
|
599 | 599 | { |
|
600 | 600 | "cell_type": "code", |
|
601 | 601 | "collapsed": false, |
|
602 | 602 | "input": [ |
|
603 | 603 | "%%R -i seq1 -o seq2\n", |
|
604 | 604 | "seq2 = rep(seq1, 2)\n", |
|
605 | 605 | "print(seq2)" |
|
606 | 606 | ], |
|
607 | 607 | "language": "python", |
|
608 | 608 | "metadata": {}, |
|
609 | 609 | "outputs": [ |
|
610 | 610 | { |
|
611 | 611 | "output_type": "display_data", |
|
612 | 612 | "text": [ |
|
613 | 613 | " [1] 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9\n" |
|
614 | 614 | ] |
|
615 | 615 | } |
|
616 | 616 | ], |
|
617 | 617 | "prompt_number": 18 |
|
618 | 618 | }, |
|
619 | 619 | { |
|
620 | 620 | "cell_type": "code", |
|
621 | 621 | "collapsed": false, |
|
622 | 622 | "input": [ |
|
623 | 623 | "seq2[::2] = 0\n", |
|
624 | 624 | "seq2" |
|
625 | 625 | ], |
|
626 | 626 | "language": "python", |
|
627 | 627 | "metadata": {}, |
|
628 | 628 | "outputs": [ |
|
629 | 629 | { |
|
630 | 630 | "output_type": "pyout", |
|
631 | 631 | "prompt_number": 19, |
|
632 | 632 | "text": [ |
|
633 | 633 | "array([0, 1, 0, 3, 0, 5, 0, 7, 0, 9, 0, 1, 0, 3, 0, 5, 0, 7, 0, 9], dtype=int32)" |
|
634 | 634 | ] |
|
635 | 635 | } |
|
636 | 636 | ], |
|
637 | 637 | "prompt_number": 19 |
|
638 | 638 | }, |
|
639 | 639 | { |
|
640 | 640 | "cell_type": "code", |
|
641 | 641 | "collapsed": false, |
|
642 | 642 | "input": [ |
|
643 | 643 | "%%R\n", |
|
644 | 644 | "print(seq2)" |
|
645 | 645 | ], |
|
646 | 646 | "language": "python", |
|
647 | 647 | "metadata": {}, |
|
648 | 648 | "outputs": [ |
|
649 | 649 | { |
|
650 | 650 | "output_type": "display_data", |
|
651 | 651 | "text": [ |
|
652 | 652 | " [1] 0 1 0 3 0 5 0 7 0 9 0 1 0 3 0 5 0 7 0 9\n" |
|
653 | 653 | ] |
|
654 | 654 | } |
|
655 | 655 | ], |
|
656 | 656 | "prompt_number": 20 |
|
657 | 657 | }, |
|
658 | 658 | { |
|
659 | 659 | "cell_type": "markdown", |
|
660 | 660 | "metadata": {}, |
|
661 | 661 | "source": [ |
|
662 | 662 | "Once the array data has been passed to R, modifring its contents does not modify R's copy of the data." |
|
663 | 663 | ] |
|
664 | 664 | }, |
|
665 | 665 | { |
|
666 | 666 | "cell_type": "code", |
|
667 | 667 | "collapsed": false, |
|
668 | 668 | "input": [ |
|
669 | 669 | "seq1[0] = 200\n", |
|
670 | 670 | "%R print(seq1)" |
|
671 | 671 | ], |
|
672 | 672 | "language": "python", |
|
673 | 673 | "metadata": {}, |
|
674 | 674 | "outputs": [ |
|
675 | 675 | { |
|
676 | 676 | "output_type": "display_data", |
|
677 | 677 | "text": [ |
|
678 | 678 | " [1] 0 1 2 3 4 5 6 7 8 9\n" |
|
679 | 679 | ] |
|
680 | 680 | } |
|
681 | 681 | ], |
|
682 | 682 | "prompt_number": 21 |
|
683 | 683 | }, |
|
684 | 684 | { |
|
685 | 685 | "cell_type": "markdown", |
|
686 | 686 | "metadata": {}, |
|
687 | 687 | "source": [ |
|
688 | 688 | "But, if we pass data as both input and output, then the value of \"data\" in user_ns will be overwritten and the\n", |
|
689 | 689 | "new array will be a view of the data in R's copy." |
|
690 | 690 | ] |
|
691 | 691 | }, |
|
692 | 692 | { |
|
693 | 693 | "cell_type": "code", |
|
694 | 694 | "collapsed": false, |
|
695 | 695 | "input": [ |
|
696 | 696 | "print(seq1)\n", |
|
697 | 697 | "%R -i seq1 -o seq1\n", |
|
698 | 698 | "print(seq1)\n", |
|
699 | 699 | "seq1[0] = 200\n", |
|
700 | 700 | "%R print(seq1)\n", |
|
701 | 701 | "seq1_view = %R seq1\n", |
|
702 | 702 | "assert(id(seq1_view.data) == id(seq1.data))" |
|
703 | 703 | ], |
|
704 | 704 | "language": "python", |
|
705 | 705 | "metadata": {}, |
|
706 | 706 | "outputs": [ |
|
707 | 707 | { |
|
708 | 708 | "output_type": "stream", |
|
709 | 709 | "stream": "stdout", |
|
710 | 710 | "text": [ |
|
711 | 711 | "[200 1 2 3 4 5 6 7 8 9]\n", |
|
712 | 712 | "[200 1 2 3 4 5 6 7 8 9]\n" |
|
713 | 713 | ] |
|
714 | 714 | }, |
|
715 | 715 | { |
|
716 | 716 | "output_type": "display_data", |
|
717 | 717 | "text": [ |
|
718 | 718 | " [1] 200 1 2 3 4 5 6 7 8 9\n" |
|
719 | 719 | ] |
|
720 | 720 | } |
|
721 | 721 | ], |
|
722 | 722 | "prompt_number": 22 |
|
723 | 723 | }, |
|
724 | 724 | { |
|
725 | 725 | "cell_type": "heading", |
|
726 | 726 | "level": 2, |
|
727 | 727 | "metadata": {}, |
|
728 | 728 | "source": [ |
|
729 | 729 | "Exception handling\n" |
|
730 | 730 | ] |
|
731 | 731 | }, |
|
732 | 732 | { |
|
733 | 733 | "cell_type": "markdown", |
|
734 | 734 | "metadata": {}, |
|
735 | 735 | "source": [ |
|
736 | 736 | "Exceptions are handled by passing back rpy2's exception and the line that triggered it." |
|
737 | 737 | ] |
|
738 | 738 | }, |
|
739 | 739 | { |
|
740 | 740 | "cell_type": "code", |
|
741 | 741 | "collapsed": false, |
|
742 | 742 | "input": [ |
|
743 | 743 | "try:\n", |
|
744 | 744 | " %R -n nosuchvar\n", |
|
745 | 745 | "except Exception as e:\n", |
|
746 | 746 | " print(e)\n", |
|
747 | 747 | " pass" |
|
748 | 748 | ], |
|
749 | 749 | "language": "python", |
|
750 | 750 | "metadata": {}, |
|
751 | 751 | "outputs": [ |
|
752 | 752 | { |
|
753 | 753 | "output_type": "stream", |
|
754 | 754 | "stream": "stdout", |
|
755 | 755 | "text": [ |
|
756 | 756 | "parsing and evaluating line \"nosuchvar\".\n", |
|
757 | 757 | "R error message: \"Error in eval(expr, envir, enclos) : object 'nosuchvar' not found\n", |
|
758 | 758 | "\"\n", |
|
759 | 759 | " R stdout:\"Error in eval(expr, envir, enclos) : object 'nosuchvar' not found\n", |
|
760 | 760 | "\"\n", |
|
761 | 761 | "\n" |
|
762 | 762 | ] |
|
763 | 763 | } |
|
764 | 764 | ], |
|
765 | 765 | "prompt_number": 23 |
|
766 | 766 | }, |
|
767 | 767 | { |
|
768 | 768 | "cell_type": "heading", |
|
769 | 769 | "level": 2, |
|
770 | 770 | "metadata": {}, |
|
771 | 771 | "source": [ |
|
772 | 772 | "Structured arrays and data frames\n" |
|
773 | 773 | ] |
|
774 | 774 | }, |
|
775 | 775 | { |
|
776 | 776 | "cell_type": "markdown", |
|
777 | 777 | "metadata": {}, |
|
778 | 778 | "source": [ |
|
779 | 779 | "In R, data frames play an important role as they allow array-like objects of mixed type with column names (and row names). In bumpy, the closest analogy is a structured array with named fields. In future work, it would be nice to use pandas to return full-fledged DataFrames from rpy2. In the mean time, structured arrays can be passed back and forth with the -d flag to %R, %Rpull, and %Rget" |
|
780 | 780 | ] |
|
781 | 781 | }, |
|
782 | 782 | { |
|
783 | 783 | "cell_type": "code", |
|
784 | 784 | "collapsed": true, |
|
785 | 785 | "input": [ |
|
786 | 786 | "datapy= np.array([(1, 2.9, 'a'), (2, 3.5, 'b'), (3, 2.1, 'c')],\n", |
|
787 | 787 | " dtype=[('x', '<i4'), ('y', '<f8'), ('z', '|S1')])\n" |
|
788 | 788 | ], |
|
789 | 789 | "language": "python", |
|
790 | 790 | "metadata": {}, |
|
791 | 791 | "outputs": [], |
|
792 | 792 | "prompt_number": 24 |
|
793 | 793 | }, |
|
794 | 794 | { |
|
795 | 795 | "cell_type": "code", |
|
796 | 796 | "collapsed": true, |
|
797 | 797 | "input": [ |
|
798 | 798 | "%%R -i datapy -d datar\n", |
|
799 | 799 | "datar = datapy" |
|
800 | 800 | ], |
|
801 | 801 | "language": "python", |
|
802 | 802 | "metadata": {}, |
|
803 | 803 | "outputs": [], |
|
804 | 804 | "prompt_number": 25 |
|
805 | 805 | }, |
|
806 | 806 | { |
|
807 | 807 | "cell_type": "code", |
|
808 | 808 | "collapsed": false, |
|
809 | 809 | "input": [ |
|
810 | 810 | "datar" |
|
811 | 811 | ], |
|
812 | 812 | "language": "python", |
|
813 | 813 | "metadata": {}, |
|
814 | 814 | "outputs": [ |
|
815 | 815 | { |
|
816 | 816 | "output_type": "pyout", |
|
817 | 817 | "prompt_number": 26, |
|
818 | 818 | "text": [ |
|
819 | 819 | "array([(1, 2.9, 'a'), (2, 3.5, 'b'), (3, 2.1, 'c')], \n", |
|
820 | 820 | " dtype=[('x', '<i4'), ('y', '<f8'), ('z', '|S1')])" |
|
821 | 821 | ] |
|
822 | 822 | } |
|
823 | 823 | ], |
|
824 | 824 | "prompt_number": 26 |
|
825 | 825 | }, |
|
826 | 826 | { |
|
827 | 827 | "cell_type": "code", |
|
828 | 828 | "collapsed": false, |
|
829 | 829 | "input": [ |
|
830 | 830 | "%R datar2 = datapy\n", |
|
831 | 831 | "%Rpull -d datar2\n", |
|
832 | 832 | "datar2" |
|
833 | 833 | ], |
|
834 | 834 | "language": "python", |
|
835 | 835 | "metadata": {}, |
|
836 | 836 | "outputs": [ |
|
837 | 837 | { |
|
838 | 838 | "output_type": "pyout", |
|
839 | 839 | "prompt_number": 27, |
|
840 | 840 | "text": [ |
|
841 | 841 | "array([(1, 2.9, 'a'), (2, 3.5, 'b'), (3, 2.1, 'c')], \n", |
|
842 | 842 | " dtype=[('x', '<i4'), ('y', '<f8'), ('z', '|S1')])" |
|
843 | 843 | ] |
|
844 | 844 | } |
|
845 | 845 | ], |
|
846 | 846 | "prompt_number": 27 |
|
847 | 847 | }, |
|
848 | 848 | { |
|
849 | 849 | "cell_type": "code", |
|
850 | 850 | "collapsed": false, |
|
851 | 851 | "input": [ |
|
852 | 852 | "%Rget -d datar2" |
|
853 | 853 | ], |
|
854 | 854 | "language": "python", |
|
855 | 855 | "metadata": {}, |
|
856 | 856 | "outputs": [ |
|
857 | 857 | { |
|
858 | 858 | "output_type": "pyout", |
|
859 | 859 | "prompt_number": 28, |
|
860 | 860 | "text": [ |
|
861 | 861 | "array([(1, 2.9, 'a'), (2, 3.5, 'b'), (3, 2.1, 'c')], \n", |
|
862 | 862 | " dtype=[('x', '<i4'), ('y', '<f8'), ('z', '|S1')])" |
|
863 | 863 | ] |
|
864 | 864 | } |
|
865 | 865 | ], |
|
866 | 866 | "prompt_number": 28 |
|
867 | 867 | }, |
|
868 | 868 | { |
|
869 | 869 | "cell_type": "markdown", |
|
870 | 870 | "metadata": {}, |
|
871 | 871 | "source": [ |
|
872 | 872 | "For arrays without names, the -d argument has no effect because the R object has no colnames or names." |
|
873 | 873 | ] |
|
874 | 874 | }, |
|
875 | 875 | { |
|
876 | 876 | "cell_type": "code", |
|
877 | 877 | "collapsed": false, |
|
878 | 878 | "input": [ |
|
879 | 879 | "Z = np.arange(6)\n", |
|
880 | 880 | "%R -i Z\n", |
|
881 | 881 | "%Rget -d Z" |
|
882 | 882 | ], |
|
883 | 883 | "language": "python", |
|
884 | 884 | "metadata": {}, |
|
885 | 885 | "outputs": [ |
|
886 | 886 | { |
|
887 | 887 | "output_type": "pyout", |
|
888 | 888 | "prompt_number": 29, |
|
889 | 889 | "text": [ |
|
890 | 890 | "array([0, 1, 2, 3, 4, 5], dtype=int32)" |
|
891 | 891 | ] |
|
892 | 892 | } |
|
893 | 893 | ], |
|
894 | 894 | "prompt_number": 29 |
|
895 | 895 | }, |
|
896 | 896 | { |
|
897 | 897 | "cell_type": "markdown", |
|
898 | 898 | "metadata": {}, |
|
899 | 899 | "source": [ |
|
900 | 900 | "For mixed-type data frames in R, if the -d flag is not used, then an array of a single type is returned and\n", |
|
901 | 901 | "its value is transposed. This would be nice to fix, but it seems something that should be fixed at the rpy2 level (See: https://bitbucket.org/lgautier/rpy2/issue/44/numpyrecarray-as-dataframe)" |
|
902 | 902 | ] |
|
903 | 903 | }, |
|
904 | 904 | { |
|
905 | 905 | "cell_type": "code", |
|
906 | 906 | "collapsed": false, |
|
907 | 907 | "input": [ |
|
908 | 908 | "%Rget datar2" |
|
909 | 909 | ], |
|
910 | 910 | "language": "python", |
|
911 | 911 | "metadata": {}, |
|
912 | 912 | "outputs": [ |
|
913 | 913 | { |
|
914 | 914 | "output_type": "pyout", |
|
915 | 915 | "prompt_number": 30, |
|
916 | 916 | "text": [ |
|
917 | 917 | "array([['1', '2', '3'],\n", |
|
918 | 918 | " ['2', '3', '2'],\n", |
|
919 | 919 | " ['a', 'b', 'c']], \n", |
|
920 | 920 | " dtype='|S1')" |
|
921 | 921 | ] |
|
922 | 922 | } |
|
923 | 923 | ], |
|
924 | 924 | "prompt_number": 30 |
|
925 | 925 | } |
|
926 | 926 | ], |
|
927 | 927 | "metadata": {} |
|
928 | 928 | } |
|
929 | 929 | ] |
|
930 | 930 | } No newline at end of file |
General Comments 0
You need to be logged in to leave comments.
Login now