Show More
The requested changes are too big and content was truncated. Show full diff
This diff has been collapsed as it changes many lines, (1613 lines changed) Show them Hide them | |||
@@ -0,0 +1,1613 b'' | |||
|
1 | { | |
|
2 | "metadata": { | |
|
3 | "name": "", | |
|
4 | "signature": "sha256:31071a05d0ecd75ed72fe3f0de0ad447a6f85cffe382c26efa5e68db1fee54ee" | |
|
5 | }, | |
|
6 | "nbformat": 3, | |
|
7 | "nbformat_minor": 0, | |
|
8 | "worksheets": [ | |
|
9 | { | |
|
10 | "cells": [ | |
|
11 | { | |
|
12 | "cell_type": "heading", | |
|
13 | "level": 1, | |
|
14 | "metadata": { | |
|
15 | "slideshow": { | |
|
16 | "slide_type": "slide" | |
|
17 | } | |
|
18 | }, | |
|
19 | "source": [ | |
|
20 | "IPython: beyond plain Python" | |
|
21 | ] | |
|
22 | }, | |
|
23 | { | |
|
24 | "cell_type": "markdown", | |
|
25 | "metadata": {}, | |
|
26 | "source": [ | |
|
27 | "When executing code in IPython, all valid Python syntax works as-is, but IPython provides a number of features designed to make the interactive experience more fluid and efficient." | |
|
28 | ] | |
|
29 | }, | |
|
30 | { | |
|
31 | "cell_type": "heading", | |
|
32 | "level": 2, | |
|
33 | "metadata": { | |
|
34 | "slideshow": { | |
|
35 | "slide_type": "slide" | |
|
36 | } | |
|
37 | }, | |
|
38 | "source": [ | |
|
39 | "First things first: running code, getting help" | |
|
40 | ] | |
|
41 | }, | |
|
42 | { | |
|
43 | "cell_type": "markdown", | |
|
44 | "metadata": {}, | |
|
45 | "source": [ | |
|
46 | "In the notebook, to run a cell of code, hit `Shift-Enter`. This executes the cell and puts the cursor in the next cell below, or makes a new one if you are at the end. Alternately, you can use:\n", | |
|
47 | " \n", | |
|
48 | "- `Alt-Enter` to force the creation of a new cell unconditionally (useful when inserting new content in the middle of an existing notebook).\n", | |
|
49 | "- `Control-Enter` executes the cell and keeps the cursor in the same cell, useful for quick experimentation of snippets that you don't need to keep permanently." | |
|
50 | ] | |
|
51 | }, | |
|
52 | { | |
|
53 | "cell_type": "code", | |
|
54 | "collapsed": false, | |
|
55 | "input": [ | |
|
56 | "print \"Hi\"" | |
|
57 | ], | |
|
58 | "language": "python", | |
|
59 | "metadata": {}, | |
|
60 | "outputs": [ | |
|
61 | { | |
|
62 | "output_type": "stream", | |
|
63 | "stream": "stdout", | |
|
64 | "text": [ | |
|
65 | "Hi\n" | |
|
66 | ] | |
|
67 | } | |
|
68 | ], | |
|
69 | "prompt_number": 1 | |
|
70 | }, | |
|
71 | { | |
|
72 | "cell_type": "markdown", | |
|
73 | "metadata": { | |
|
74 | "slideshow": { | |
|
75 | "slide_type": "slide" | |
|
76 | } | |
|
77 | }, | |
|
78 | "source": [ | |
|
79 | "Getting help:" | |
|
80 | ] | |
|
81 | }, | |
|
82 | { | |
|
83 | "cell_type": "code", | |
|
84 | "collapsed": false, | |
|
85 | "input": [ | |
|
86 | "?" | |
|
87 | ], | |
|
88 | "language": "python", | |
|
89 | "metadata": {}, | |
|
90 | "outputs": [], | |
|
91 | "prompt_number": 2 | |
|
92 | }, | |
|
93 | { | |
|
94 | "cell_type": "markdown", | |
|
95 | "metadata": { | |
|
96 | "slideshow": { | |
|
97 | "slide_type": "slide" | |
|
98 | } | |
|
99 | }, | |
|
100 | "source": [ | |
|
101 | "Typing `object_name?` will print all sorts of details about any object, including docstrings, function definition lines (for call arguments) and constructor details for classes." | |
|
102 | ] | |
|
103 | }, | |
|
104 | { | |
|
105 | "cell_type": "code", | |
|
106 | "collapsed": false, | |
|
107 | "input": [ | |
|
108 | "import collections\n", | |
|
109 | "collections.namedtuple?" | |
|
110 | ], | |
|
111 | "language": "python", | |
|
112 | "metadata": {}, | |
|
113 | "outputs": [], | |
|
114 | "prompt_number": 3 | |
|
115 | }, | |
|
116 | { | |
|
117 | "cell_type": "code", | |
|
118 | "collapsed": false, | |
|
119 | "input": [ | |
|
120 | "collections.Counter??" | |
|
121 | ], | |
|
122 | "language": "python", | |
|
123 | "metadata": {}, | |
|
124 | "outputs": [], | |
|
125 | "prompt_number": 4 | |
|
126 | }, | |
|
127 | { | |
|
128 | "cell_type": "code", | |
|
129 | "collapsed": false, | |
|
130 | "input": [ | |
|
131 | "*int*?" | |
|
132 | ], | |
|
133 | "language": "python", | |
|
134 | "metadata": {}, | |
|
135 | "outputs": [], | |
|
136 | "prompt_number": 5 | |
|
137 | }, | |
|
138 | { | |
|
139 | "cell_type": "markdown", | |
|
140 | "metadata": { | |
|
141 | "slideshow": { | |
|
142 | "slide_type": "slide" | |
|
143 | } | |
|
144 | }, | |
|
145 | "source": [ | |
|
146 | "An IPython quick reference card:" | |
|
147 | ] | |
|
148 | }, | |
|
149 | { | |
|
150 | "cell_type": "code", | |
|
151 | "collapsed": false, | |
|
152 | "input": [ | |
|
153 | "%quickref" | |
|
154 | ], | |
|
155 | "language": "python", | |
|
156 | "metadata": {}, | |
|
157 | "outputs": [], | |
|
158 | "prompt_number": 6 | |
|
159 | }, | |
|
160 | { | |
|
161 | "cell_type": "heading", | |
|
162 | "level": 2, | |
|
163 | "metadata": { | |
|
164 | "slideshow": { | |
|
165 | "slide_type": "slide" | |
|
166 | } | |
|
167 | }, | |
|
168 | "source": [ | |
|
169 | "Tab completion" | |
|
170 | ] | |
|
171 | }, | |
|
172 | { | |
|
173 | "cell_type": "markdown", | |
|
174 | "metadata": {}, | |
|
175 | "source": [ | |
|
176 | "Tab completion, especially for attributes, is a convenient way to explore the structure of any object you\u2019re dealing with. Simply type `object_name.<TAB>` to view the object\u2019s attributes. Besides Python objects and keywords, tab completion also works on file and directory names." | |
|
177 | ] | |
|
178 | }, | |
|
179 | { | |
|
180 | "cell_type": "code", | |
|
181 | "collapsed": false, | |
|
182 | "input": [ | |
|
183 | "collections." | |
|
184 | ], | |
|
185 | "language": "python", | |
|
186 | "metadata": {}, | |
|
187 | "outputs": [], | |
|
188 | "prompt_number": 8 | |
|
189 | }, | |
|
190 | { | |
|
191 | "cell_type": "heading", | |
|
192 | "level": 2, | |
|
193 | "metadata": { | |
|
194 | "slideshow": { | |
|
195 | "slide_type": "slide" | |
|
196 | } | |
|
197 | }, | |
|
198 | "source": [ | |
|
199 | "The interactive workflow: input, output, history" | |
|
200 | ] | |
|
201 | }, | |
|
202 | { | |
|
203 | "cell_type": "code", | |
|
204 | "collapsed": false, | |
|
205 | "input": [ | |
|
206 | "2+10" | |
|
207 | ], | |
|
208 | "language": "python", | |
|
209 | "metadata": {}, | |
|
210 | "outputs": [ | |
|
211 | { | |
|
212 | "metadata": {}, | |
|
213 | "output_type": "pyout", | |
|
214 | "prompt_number": 7, | |
|
215 | "text": [ | |
|
216 | "12" | |
|
217 | ] | |
|
218 | } | |
|
219 | ], | |
|
220 | "prompt_number": 7 | |
|
221 | }, | |
|
222 | { | |
|
223 | "cell_type": "code", | |
|
224 | "collapsed": false, | |
|
225 | "input": [ | |
|
226 | "_+10" | |
|
227 | ], | |
|
228 | "language": "python", | |
|
229 | "metadata": {}, | |
|
230 | "outputs": [ | |
|
231 | { | |
|
232 | "metadata": {}, | |
|
233 | "output_type": "pyout", | |
|
234 | "prompt_number": 8, | |
|
235 | "text": [ | |
|
236 | "22" | |
|
237 | ] | |
|
238 | } | |
|
239 | ], | |
|
240 | "prompt_number": 8 | |
|
241 | }, | |
|
242 | { | |
|
243 | "cell_type": "markdown", | |
|
244 | "metadata": { | |
|
245 | "slideshow": { | |
|
246 | "slide_type": "slide" | |
|
247 | } | |
|
248 | }, | |
|
249 | "source": [ | |
|
250 | "You can suppress the storage and rendering of output if you append `;` to the last cell (this comes in handy when plotting with matplotlib, for example):" | |
|
251 | ] | |
|
252 | }, | |
|
253 | { | |
|
254 | "cell_type": "code", | |
|
255 | "collapsed": false, | |
|
256 | "input": [ | |
|
257 | "10+20;" | |
|
258 | ], | |
|
259 | "language": "python", | |
|
260 | "metadata": {}, | |
|
261 | "outputs": [], | |
|
262 | "prompt_number": 9 | |
|
263 | }, | |
|
264 | { | |
|
265 | "cell_type": "code", | |
|
266 | "collapsed": false, | |
|
267 | "input": [ | |
|
268 | "_" | |
|
269 | ], | |
|
270 | "language": "python", | |
|
271 | "metadata": {}, | |
|
272 | "outputs": [ | |
|
273 | { | |
|
274 | "metadata": {}, | |
|
275 | "output_type": "pyout", | |
|
276 | "prompt_number": 10, | |
|
277 | "text": [ | |
|
278 | "22" | |
|
279 | ] | |
|
280 | } | |
|
281 | ], | |
|
282 | "prompt_number": 10 | |
|
283 | }, | |
|
284 | { | |
|
285 | "cell_type": "markdown", | |
|
286 | "metadata": { | |
|
287 | "slideshow": { | |
|
288 | "slide_type": "slide" | |
|
289 | } | |
|
290 | }, | |
|
291 | "source": [ | |
|
292 | "The output is stored in `_N` and `Out[N]` variables:" | |
|
293 | ] | |
|
294 | }, | |
|
295 | { | |
|
296 | "cell_type": "code", | |
|
297 | "collapsed": false, | |
|
298 | "input": [ | |
|
299 | "_10 == Out[10]" | |
|
300 | ], | |
|
301 | "language": "python", | |
|
302 | "metadata": {}, | |
|
303 | "outputs": [ | |
|
304 | { | |
|
305 | "metadata": {}, | |
|
306 | "output_type": "pyout", | |
|
307 | "prompt_number": 11, | |
|
308 | "text": [ | |
|
309 | "True" | |
|
310 | ] | |
|
311 | } | |
|
312 | ], | |
|
313 | "prompt_number": 11 | |
|
314 | }, | |
|
315 | { | |
|
316 | "cell_type": "markdown", | |
|
317 | "metadata": { | |
|
318 | "slideshow": { | |
|
319 | "slide_type": "slide" | |
|
320 | } | |
|
321 | }, | |
|
322 | "source": [ | |
|
323 | "And the last three have shorthands for convenience:" | |
|
324 | ] | |
|
325 | }, | |
|
326 | { | |
|
327 | "cell_type": "code", | |
|
328 | "collapsed": false, | |
|
329 | "input": [ | |
|
330 | "print 'last output:', _\n", | |
|
331 | "print 'next one :', __\n", | |
|
332 | "print 'and next :', ___" | |
|
333 | ], | |
|
334 | "language": "python", | |
|
335 | "metadata": {}, | |
|
336 | "outputs": [ | |
|
337 | { | |
|
338 | "output_type": "stream", | |
|
339 | "stream": "stdout", | |
|
340 | "text": [ | |
|
341 | "last output: True\n", | |
|
342 | "next one : 22\n", | |
|
343 | "and next : 22\n" | |
|
344 | ] | |
|
345 | } | |
|
346 | ], | |
|
347 | "prompt_number": 12 | |
|
348 | }, | |
|
349 | { | |
|
350 | "cell_type": "code", | |
|
351 | "collapsed": false, | |
|
352 | "input": [ | |
|
353 | "In[11]" | |
|
354 | ], | |
|
355 | "language": "python", | |
|
356 | "metadata": { | |
|
357 | "slideshow": { | |
|
358 | "slide_type": "-" | |
|
359 | } | |
|
360 | }, | |
|
361 | "outputs": [ | |
|
362 | { | |
|
363 | "metadata": {}, | |
|
364 | "output_type": "pyout", | |
|
365 | "prompt_number": 13, | |
|
366 | "text": [ | |
|
367 | "u'_10 == Out[10]'" | |
|
368 | ] | |
|
369 | } | |
|
370 | ], | |
|
371 | "prompt_number": 13 | |
|
372 | }, | |
|
373 | { | |
|
374 | "cell_type": "code", | |
|
375 | "collapsed": false, | |
|
376 | "input": [ | |
|
377 | "_i" | |
|
378 | ], | |
|
379 | "language": "python", | |
|
380 | "metadata": {}, | |
|
381 | "outputs": [ | |
|
382 | { | |
|
383 | "metadata": {}, | |
|
384 | "output_type": "pyout", | |
|
385 | "prompt_number": 14, | |
|
386 | "text": [ | |
|
387 | "u'In[11]'" | |
|
388 | ] | |
|
389 | } | |
|
390 | ], | |
|
391 | "prompt_number": 14 | |
|
392 | }, | |
|
393 | { | |
|
394 | "cell_type": "code", | |
|
395 | "collapsed": false, | |
|
396 | "input": [ | |
|
397 | "_ii" | |
|
398 | ], | |
|
399 | "language": "python", | |
|
400 | "metadata": {}, | |
|
401 | "outputs": [ | |
|
402 | { | |
|
403 | "metadata": {}, | |
|
404 | "output_type": "pyout", | |
|
405 | "prompt_number": 15, | |
|
406 | "text": [ | |
|
407 | "u'In[11]'" | |
|
408 | ] | |
|
409 | } | |
|
410 | ], | |
|
411 | "prompt_number": 15 | |
|
412 | }, | |
|
413 | { | |
|
414 | "cell_type": "code", | |
|
415 | "collapsed": false, | |
|
416 | "input": [ | |
|
417 | "print 'last input:', _i\n", | |
|
418 | "print 'next one :', _ii\n", | |
|
419 | "print 'and next :', _iii" | |
|
420 | ], | |
|
421 | "language": "python", | |
|
422 | "metadata": { | |
|
423 | "slideshow": { | |
|
424 | "slide_type": "subslide" | |
|
425 | } | |
|
426 | }, | |
|
427 | "outputs": [ | |
|
428 | { | |
|
429 | "output_type": "stream", | |
|
430 | "stream": "stdout", | |
|
431 | "text": [ | |
|
432 | "last input: _ii\n", | |
|
433 | "next one : _i\n", | |
|
434 | "and next : In[11]\n" | |
|
435 | ] | |
|
436 | } | |
|
437 | ], | |
|
438 | "prompt_number": 16 | |
|
439 | }, | |
|
440 | { | |
|
441 | "cell_type": "code", | |
|
442 | "collapsed": false, | |
|
443 | "input": [ | |
|
444 | "%history -n 1-5" | |
|
445 | ], | |
|
446 | "language": "python", | |
|
447 | "metadata": {}, | |
|
448 | "outputs": [ | |
|
449 | { | |
|
450 | "output_type": "stream", | |
|
451 | "stream": "stdout", | |
|
452 | "text": [ | |
|
453 | " 1: print \"Hi\"\n", | |
|
454 | " 2: ?\n", | |
|
455 | " 3:\n", | |
|
456 | "import collections\n", | |
|
457 | "collections.namedtuple?\n", | |
|
458 | " 4: collections.Counter??\n", | |
|
459 | " 5: *int*?\n" | |
|
460 | ] | |
|
461 | } | |
|
462 | ], | |
|
463 | "prompt_number": 17 | |
|
464 | }, | |
|
465 | { | |
|
466 | "cell_type": "markdown", | |
|
467 | "metadata": { | |
|
468 | "slideshow": { | |
|
469 | "slide_type": "subslide" | |
|
470 | } | |
|
471 | }, | |
|
472 | "source": [ | |
|
473 | "**Exercise**\n", | |
|
474 | "\n", | |
|
475 | "Write the last 10 lines of history to a file named `log.py`." | |
|
476 | ] | |
|
477 | }, | |
|
478 | { | |
|
479 | "cell_type": "heading", | |
|
480 | "level": 2, | |
|
481 | "metadata": { | |
|
482 | "slideshow": { | |
|
483 | "slide_type": "slide" | |
|
484 | } | |
|
485 | }, | |
|
486 | "source": [ | |
|
487 | "Accessing the underlying operating system" | |
|
488 | ] | |
|
489 | }, | |
|
490 | { | |
|
491 | "cell_type": "code", | |
|
492 | "collapsed": false, | |
|
493 | "input": [ | |
|
494 | "!pwd" | |
|
495 | ], | |
|
496 | "language": "python", | |
|
497 | "metadata": {}, | |
|
498 | "outputs": [ | |
|
499 | { | |
|
500 | "output_type": "stream", | |
|
501 | "stream": "stdout", | |
|
502 | "text": [ | |
|
503 | "/home/fperez/ipython/tutorial/notebooks\r\n" | |
|
504 | ] | |
|
505 | } | |
|
506 | ], | |
|
507 | "prompt_number": 18 | |
|
508 | }, | |
|
509 | { | |
|
510 | "cell_type": "code", | |
|
511 | "collapsed": false, | |
|
512 | "input": [ | |
|
513 | "files = !ls\n", | |
|
514 | "print \"My current directory's files:\"\n", | |
|
515 | "print files" | |
|
516 | ], | |
|
517 | "language": "python", | |
|
518 | "metadata": {}, | |
|
519 | "outputs": [ | |
|
520 | { | |
|
521 | "output_type": "stream", | |
|
522 | "stream": "stdout", | |
|
523 | "text": [ | |
|
524 | "My current directory's files:\n", | |
|
525 | "['BackgroundJobs.ipynb', 'Custom Display Logic.ipynb', 'Customizing IPython - Condensed.ipynb', 'Customizing IPython - Config.ipynb', 'Customizing IPython - Extensions.ipynb', 'Customizing IPython - Magics.ipynb', 'data', 'figs', 'flare.json', 'Index.ipynb', 'Interactive Widgets.ipynb', 'IPython - beyond plain Python.ipynb', 'kernel-embedding', 'Markdown Cells.ipynb', 'myscript.py', 'nbconvert_arch.png', 'NbConvert from command line.ipynb', 'NbConvert Python library.ipynb', 'Notebook and javascript extension.ipynb', 'Notebook Basics.ipynb', 'Overview of IPython.parallel.ipynb', 'parallel', 'Rich Display System.ipynb', 'Running a Secure Public Notebook.ipynb', 'Running Code.ipynb', 'Sample.ipynb', 'soln', 'Terminal usage.ipynb', 'text_analysis.py', 'Typesetting Math Using MathJax.ipynb']\n" | |
|
526 | ] | |
|
527 | } | |
|
528 | ], | |
|
529 | "prompt_number": 19 | |
|
530 | }, | |
|
531 | { | |
|
532 | "cell_type": "code", | |
|
533 | "collapsed": false, | |
|
534 | "input": [ | |
|
535 | "!echo $files" | |
|
536 | ], | |
|
537 | "language": "python", | |
|
538 | "metadata": {}, | |
|
539 | "outputs": [ | |
|
540 | { | |
|
541 | "output_type": "stream", | |
|
542 | "stream": "stdout", | |
|
543 | "text": [ | |
|
544 | "[BackgroundJobs.ipynb, Custom Display Logic.ipynb, Customizing IPython - Condensed.ipynb, Customizing IPython - Config.ipynb, Customizing IPython - Extensions.ipynb, Customizing IPython - Magics.ipynb, data, figs, flare.json, Index.ipynb, Interactive Widgets.ipynb, IPython - beyond plain Python.ipynb, kernel-embedding, Markdown Cells.ipynb, myscript.py, nbconvert_arch.png, NbConvert from command line.ipynb, NbConvert Python library.ipynb, Notebook and javascript extension.ipynb, Notebook Basics.ipynb, Overview of IPython.parallel.ipynb, parallel, Rich Display System.ipynb, Running a Secure Public Notebook.ipynb, Running Code.ipynb, Sample.ipynb, soln, Terminal usage.ipynb, text_analysis.py, Typesetting Math Using MathJax.ipynb]\r\n" | |
|
545 | ] | |
|
546 | } | |
|
547 | ], | |
|
548 | "prompt_number": 20 | |
|
549 | }, | |
|
550 | { | |
|
551 | "cell_type": "code", | |
|
552 | "collapsed": false, | |
|
553 | "input": [ | |
|
554 | "!echo {files[0].upper()}" | |
|
555 | ], | |
|
556 | "language": "python", | |
|
557 | "metadata": {}, | |
|
558 | "outputs": [ | |
|
559 | { | |
|
560 | "output_type": "stream", | |
|
561 | "stream": "stdout", | |
|
562 | "text": [ | |
|
563 | "BACKGROUNDJOBS.IPYNB\r\n" | |
|
564 | ] | |
|
565 | } | |
|
566 | ], | |
|
567 | "prompt_number": 21 | |
|
568 | }, | |
|
569 | { | |
|
570 | "cell_type": "markdown", | |
|
571 | "metadata": {}, | |
|
572 | "source": [ | |
|
573 | "Note that all this is available even in multiline blocks:" | |
|
574 | ] | |
|
575 | }, | |
|
576 | { | |
|
577 | "cell_type": "code", | |
|
578 | "collapsed": false, | |
|
579 | "input": [ | |
|
580 | "import os\n", | |
|
581 | "for i,f in enumerate(files):\n", | |
|
582 | " if f.endswith('ipynb'):\n", | |
|
583 | " !echo {\"%02d\" % i} - \"{os.path.splitext(f)[0]}\"\n", | |
|
584 | " else:\n", | |
|
585 | " print '--'" | |
|
586 | ], | |
|
587 | "language": "python", | |
|
588 | "metadata": {}, | |
|
589 | "outputs": [ | |
|
590 | { | |
|
591 | "output_type": "stream", | |
|
592 | "stream": "stdout", | |
|
593 | "text": [ | |
|
594 | "00 - BackgroundJobs\r\n" | |
|
595 | ] | |
|
596 | }, | |
|
597 | { | |
|
598 | "output_type": "stream", | |
|
599 | "stream": "stdout", | |
|
600 | "text": [ | |
|
601 | "01 - Custom Display Logic\r\n" | |
|
602 | ] | |
|
603 | }, | |
|
604 | { | |
|
605 | "output_type": "stream", | |
|
606 | "stream": "stdout", | |
|
607 | "text": [ | |
|
608 | "02 - Customizing IPython - Condensed\r\n" | |
|
609 | ] | |
|
610 | }, | |
|
611 | { | |
|
612 | "output_type": "stream", | |
|
613 | "stream": "stdout", | |
|
614 | "text": [ | |
|
615 | "03 - Customizing IPython - Config\r\n" | |
|
616 | ] | |
|
617 | }, | |
|
618 | { | |
|
619 | "output_type": "stream", | |
|
620 | "stream": "stdout", | |
|
621 | "text": [ | |
|
622 | "04 - Customizing IPython - Extensions\r\n" | |
|
623 | ] | |
|
624 | }, | |
|
625 | { | |
|
626 | "output_type": "stream", | |
|
627 | "stream": "stdout", | |
|
628 | "text": [ | |
|
629 | "05 - Customizing IPython - Magics\r\n" | |
|
630 | ] | |
|
631 | }, | |
|
632 | { | |
|
633 | "output_type": "stream", | |
|
634 | "stream": "stdout", | |
|
635 | "text": [ | |
|
636 | "--\n", | |
|
637 | "--\n", | |
|
638 | "--\n", | |
|
639 | "09 - Index\r\n" | |
|
640 | ] | |
|
641 | }, | |
|
642 | { | |
|
643 | "output_type": "stream", | |
|
644 | "stream": "stdout", | |
|
645 | "text": [ | |
|
646 | "10 - Interactive Widgets\r\n" | |
|
647 | ] | |
|
648 | }, | |
|
649 | { | |
|
650 | "output_type": "stream", | |
|
651 | "stream": "stdout", | |
|
652 | "text": [ | |
|
653 | "11 - IPython - beyond plain Python\r\n" | |
|
654 | ] | |
|
655 | }, | |
|
656 | { | |
|
657 | "output_type": "stream", | |
|
658 | "stream": "stdout", | |
|
659 | "text": [ | |
|
660 | "--\n", | |
|
661 | "13 - Markdown Cells\r\n" | |
|
662 | ] | |
|
663 | }, | |
|
664 | { | |
|
665 | "output_type": "stream", | |
|
666 | "stream": "stdout", | |
|
667 | "text": [ | |
|
668 | "--\n", | |
|
669 | "--\n", | |
|
670 | "16 - NbConvert from command line\r\n" | |
|
671 | ] | |
|
672 | }, | |
|
673 | { | |
|
674 | "output_type": "stream", | |
|
675 | "stream": "stdout", | |
|
676 | "text": [ | |
|
677 | "17 - NbConvert Python library\r\n" | |
|
678 | ] | |
|
679 | }, | |
|
680 | { | |
|
681 | "output_type": "stream", | |
|
682 | "stream": "stdout", | |
|
683 | "text": [ | |
|
684 | "18 - Notebook and javascript extension\r\n" | |
|
685 | ] | |
|
686 | }, | |
|
687 | { | |
|
688 | "output_type": "stream", | |
|
689 | "stream": "stdout", | |
|
690 | "text": [ | |
|
691 | "19 - Notebook Basics\r\n" | |
|
692 | ] | |
|
693 | }, | |
|
694 | { | |
|
695 | "output_type": "stream", | |
|
696 | "stream": "stdout", | |
|
697 | "text": [ | |
|
698 | "20 - Overview of IPython.parallel\r\n" | |
|
699 | ] | |
|
700 | }, | |
|
701 | { | |
|
702 | "output_type": "stream", | |
|
703 | "stream": "stdout", | |
|
704 | "text": [ | |
|
705 | "--\n", | |
|
706 | "22 - Rich Display System\r\n" | |
|
707 | ] | |
|
708 | }, | |
|
709 | { | |
|
710 | "output_type": "stream", | |
|
711 | "stream": "stdout", | |
|
712 | "text": [ | |
|
713 | "23 - Running a Secure Public Notebook\r\n" | |
|
714 | ] | |
|
715 | }, | |
|
716 | { | |
|
717 | "output_type": "stream", | |
|
718 | "stream": "stdout", | |
|
719 | "text": [ | |
|
720 | "24 - Running Code\r\n" | |
|
721 | ] | |
|
722 | }, | |
|
723 | { | |
|
724 | "output_type": "stream", | |
|
725 | "stream": "stdout", | |
|
726 | "text": [ | |
|
727 | "25 - Sample\r\n" | |
|
728 | ] | |
|
729 | }, | |
|
730 | { | |
|
731 | "output_type": "stream", | |
|
732 | "stream": "stdout", | |
|
733 | "text": [ | |
|
734 | "--\n", | |
|
735 | "27 - Terminal usage\r\n" | |
|
736 | ] | |
|
737 | }, | |
|
738 | { | |
|
739 | "output_type": "stream", | |
|
740 | "stream": "stdout", | |
|
741 | "text": [ | |
|
742 | "--\n", | |
|
743 | "29 - Typesetting Math Using MathJax\r\n" | |
|
744 | ] | |
|
745 | } | |
|
746 | ], | |
|
747 | "prompt_number": 27 | |
|
748 | }, | |
|
749 | { | |
|
750 | "cell_type": "heading", | |
|
751 | "level": 2, | |
|
752 | "metadata": {}, | |
|
753 | "source": [ | |
|
754 | "Beyond Python: magic functions" | |
|
755 | ] | |
|
756 | }, | |
|
757 | { | |
|
758 | "cell_type": "markdown", | |
|
759 | "metadata": {}, | |
|
760 | "source": [ | |
|
761 | "The IPyhton 'magic' functions are a set of commands, invoked by prepending one or two `%` signs to their name, that live in a namespace separate from your normal Python variables and provide a more command-like interface. They take flags with `--` and arguments without quotes, parentheses or commas. The motivation behind this system is two-fold:\n", | |
|
762 | " \n", | |
|
763 | "- To provide an orthogonal namespace for controlling IPython itself and exposing other system-oriented functionality.\n", | |
|
764 | "\n", | |
|
765 | "- To expose a calling mode that requires minimal verbosity and typing while working interactively. Thus the inspiration taken from the classic Unix shell style for commands." | |
|
766 | ] | |
|
767 | }, | |
|
768 | { | |
|
769 | "cell_type": "code", | |
|
770 | "collapsed": false, | |
|
771 | "input": [ | |
|
772 | "%magic" | |
|
773 | ], | |
|
774 | "language": "python", | |
|
775 | "metadata": {}, | |
|
776 | "outputs": [], | |
|
777 | "prompt_number": 28 | |
|
778 | }, | |
|
779 | { | |
|
780 | "cell_type": "markdown", | |
|
781 | "metadata": {}, | |
|
782 | "source": [ | |
|
783 | "Line vs cell magics:" | |
|
784 | ] | |
|
785 | }, | |
|
786 | { | |
|
787 | "cell_type": "code", | |
|
788 | "collapsed": false, | |
|
789 | "input": [ | |
|
790 | "%timeit range(10)" | |
|
791 | ], | |
|
792 | "language": "python", | |
|
793 | "metadata": {}, | |
|
794 | "outputs": [ | |
|
795 | { | |
|
796 | "output_type": "stream", | |
|
797 | "stream": "stdout", | |
|
798 | "text": [ | |
|
799 | "10000000 loops, best of 3: 190 ns per loop\n" | |
|
800 | ] | |
|
801 | } | |
|
802 | ], | |
|
803 | "prompt_number": 29 | |
|
804 | }, | |
|
805 | { | |
|
806 | "cell_type": "code", | |
|
807 | "collapsed": false, | |
|
808 | "input": [ | |
|
809 | "%%timeit\n", | |
|
810 | "range(10)\n", | |
|
811 | "range(100)" | |
|
812 | ], | |
|
813 | "language": "python", | |
|
814 | "metadata": {}, | |
|
815 | "outputs": [ | |
|
816 | { | |
|
817 | "output_type": "stream", | |
|
818 | "stream": "stdout", | |
|
819 | "text": [ | |
|
820 | "1000000 loops, best of 3: 888 ns per loop\n" | |
|
821 | ] | |
|
822 | } | |
|
823 | ], | |
|
824 | "prompt_number": 30 | |
|
825 | }, | |
|
826 | { | |
|
827 | "cell_type": "markdown", | |
|
828 | "metadata": {}, | |
|
829 | "source": [ | |
|
830 | "Line magics can be used even inside code blocks:" | |
|
831 | ] | |
|
832 | }, | |
|
833 | { | |
|
834 | "cell_type": "code", | |
|
835 | "collapsed": false, | |
|
836 | "input": [ | |
|
837 | "for i in range(5):\n", | |
|
838 | " size = i*100\n", | |
|
839 | " print 'size:',size, \n", | |
|
840 | " %timeit range(size)" | |
|
841 | ], | |
|
842 | "language": "python", | |
|
843 | "metadata": {}, | |
|
844 | "outputs": [ | |
|
845 | { | |
|
846 | "output_type": "stream", | |
|
847 | "stream": "stdout", | |
|
848 | "text": [ | |
|
849 | "size: 010000000 loops, best of 3: 129 ns per loop" | |
|
850 | ] | |
|
851 | }, | |
|
852 | { | |
|
853 | "output_type": "stream", | |
|
854 | "stream": "stdout", | |
|
855 | "text": [ | |
|
856 | "\n", | |
|
857 | " size: 1001000000 loops, best of 3: 649 ns per loop" | |
|
858 | ] | |
|
859 | }, | |
|
860 | { | |
|
861 | "output_type": "stream", | |
|
862 | "stream": "stdout", | |
|
863 | "text": [ | |
|
864 | "\n", | |
|
865 | " size: 2001000000 loops, best of 3: 1.09 \u00b5s per loop" | |
|
866 | ] | |
|
867 | }, | |
|
868 | { | |
|
869 | "output_type": "stream", | |
|
870 | "stream": "stdout", | |
|
871 | "text": [ | |
|
872 | "\n", | |
|
873 | " size: 3001000000 loops, best of 3: 1.74 \u00b5s per loop" | |
|
874 | ] | |
|
875 | }, | |
|
876 | { | |
|
877 | "output_type": "stream", | |
|
878 | "stream": "stdout", | |
|
879 | "text": [ | |
|
880 | "\n", | |
|
881 | " size: 400100000 loops, best of 3: 2.72 \u00b5s per loop" | |
|
882 | ] | |
|
883 | }, | |
|
884 | { | |
|
885 | "output_type": "stream", | |
|
886 | "stream": "stdout", | |
|
887 | "text": [ | |
|
888 | "\n", | |
|
889 | "\n" | |
|
890 | ] | |
|
891 | } | |
|
892 | ], | |
|
893 | "prompt_number": 31 | |
|
894 | }, | |
|
895 | { | |
|
896 | "cell_type": "markdown", | |
|
897 | "metadata": {}, | |
|
898 | "source": [ | |
|
899 | "Magics can do anything they want with their input, so it doesn't have to be valid Python:" | |
|
900 | ] | |
|
901 | }, | |
|
902 | { | |
|
903 | "cell_type": "code", | |
|
904 | "collapsed": false, | |
|
905 | "input": [ | |
|
906 | "%%bash\n", | |
|
907 | "echo \"My shell is:\" $SHELL\n", | |
|
908 | "echo \"My memory status is:\"\n", | |
|
909 | "free" | |
|
910 | ], | |
|
911 | "language": "python", | |
|
912 | "metadata": {}, | |
|
913 | "outputs": [ | |
|
914 | { | |
|
915 | "output_type": "stream", | |
|
916 | "stream": "stdout", | |
|
917 | "text": [ | |
|
918 | "My shell is: /bin/bash\n", | |
|
919 | "My memory status is:\n", | |
|
920 | " total used free shared buffers cached\n", | |
|
921 | "Mem: 7870888 6389328 1481560 0 662860 2505172\n", | |
|
922 | "-/+ buffers/cache: 3221296 4649592\n", | |
|
923 | "Swap: 3905532 4852 3900680\n" | |
|
924 | ] | |
|
925 | } | |
|
926 | ], | |
|
927 | "prompt_number": 32 | |
|
928 | }, | |
|
929 | { | |
|
930 | "cell_type": "markdown", | |
|
931 | "metadata": {}, | |
|
932 | "source": [ | |
|
933 | "Another interesting cell magic: create any file you want locally from the notebook:" | |
|
934 | ] | |
|
935 | }, | |
|
936 | { | |
|
937 | "cell_type": "code", | |
|
938 | "collapsed": false, | |
|
939 | "input": [ | |
|
940 | "%%writefile test.txt\n", | |
|
941 | "This is a test file!\n", | |
|
942 | "It can contain anything I want...\n", | |
|
943 | "\n", | |
|
944 | "And more..." | |
|
945 | ], | |
|
946 | "language": "python", | |
|
947 | "metadata": {}, | |
|
948 | "outputs": [ | |
|
949 | { | |
|
950 | "output_type": "stream", | |
|
951 | "stream": "stdout", | |
|
952 | "text": [ | |
|
953 | "Writing test.txt\n" | |
|
954 | ] | |
|
955 | } | |
|
956 | ], | |
|
957 | "prompt_number": 33 | |
|
958 | }, | |
|
959 | { | |
|
960 | "cell_type": "code", | |
|
961 | "collapsed": false, | |
|
962 | "input": [ | |
|
963 | "!cat test.txt" | |
|
964 | ], | |
|
965 | "language": "python", | |
|
966 | "metadata": {}, | |
|
967 | "outputs": [ | |
|
968 | { | |
|
969 | "output_type": "stream", | |
|
970 | "stream": "stdout", | |
|
971 | "text": [ | |
|
972 | "This is a test file!\r\n", | |
|
973 | "It can contain anything I want...\r\n", | |
|
974 | "\r\n", | |
|
975 | "And more..." | |
|
976 | ] | |
|
977 | } | |
|
978 | ], | |
|
979 | "prompt_number": 34 | |
|
980 | }, | |
|
981 | { | |
|
982 | "cell_type": "markdown", | |
|
983 | "metadata": {}, | |
|
984 | "source": [ | |
|
985 | "Let's see what other magics are currently defined in the system:" | |
|
986 | ] | |
|
987 | }, | |
|
988 | { | |
|
989 | "cell_type": "code", | |
|
990 | "collapsed": false, | |
|
991 | "input": [ | |
|
992 | "%lsmagic" | |
|
993 | ], | |
|
994 | "language": "python", | |
|
995 | "metadata": {}, | |
|
996 | "outputs": [ | |
|
997 | { | |
|
998 | "json": [ | |
|
999 | "{\"cell\": {\"prun\": \"ExecutionMagics\", \"file\": \"Other\", \"!\": \"OSMagics\", \"capture\": \"ExecutionMagics\", \"timeit\": \"ExecutionMagics\", \"script\": \"ScriptMagics\", \"pypy\": \"Other\", \"system\": \"OSMagics\", \"perl\": \"Other\", \"HTML\": \"Other\", \"bash\": \"Other\", \"python\": \"Other\", \"SVG\": \"Other\", \"javascript\": \"DisplayMagics\", \"writefile\": \"OSMagics\", \"ruby\": \"Other\", \"python3\": \"Other\", \"python2\": \"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\", \"lf\": \"Other\", \"install_profiles\": \"DeprecatedMagics\", \"clk\": \"Other\", \"ll\": \"Other\", \"pprint\": \"BasicMagics\", \"lk\": \"Other\", \"ls\": \"Other\", \"save\": \"CodeMagics\", \"tb\": \"ExecutionMagics\", \"lx\": \"Other\", \"dl\": \"Other\", \"pylab\": \"PylabMagics\", \"dd\": \"Other\", \"quickref\": \"BasicMagics\", \"dx\": \"Other\", \"d\": \"Other\", \"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\", \"rm\": \"Other\", \"dirs\": \"OSMagics\", \"run\": \"ExecutionMagics\", \"reset_selective\": \"NamespaceMagics\", \"rep\": \"Other\", \"pinfo2\": \"NamespaceMagics\", \"matplotlib\": \"PylabMagics\", \"automagic\": \"AutoMagics\", \"doctest_mode\": \"KernelMagics\", \"logoff\": \"LoggingMagics\", \"reload_ext\": \"ExtensionMagics\", \"pdb\": \"ExecutionMagics\", \"load\": \"CodeMagics\", \"lsmagic\": \"BasicMagics\", \"cl\": \"Other\", \"autosave\": \"KernelMagics\", \"cd\": \"OSMagics\", \"pastebin\": \"CodeMagics\", \"prun\": \"ExecutionMagics\", \"cp\": \"Other\", \"autocall\": \"AutoMagics\", \"bookmark\": \"OSMagics\", \"connect_info\": \"KernelMagics\", \"mkdir\": \"Other\", \"system\": \"OSMagics\", \"whos\": \"NamespaceMagics\", \"rmdir\": \"Other\", \"unload_ext\": \"ExtensionMagics\", \"store\": \"StoreMagics\", \"more\": \"KernelMagics\", \"pdef\": \"NamespaceMagics\", \"precision\": \"BasicMagics\", \"pinfo\": \"NamespaceMagics\", \"pwd\": \"OSMagics\", \"psearch\": \"NamespaceMagics\", \"reset\": \"NamespaceMagics\", \"recall\": \"HistoryMagics\", \"xdel\": \"NamespaceMagics\", \"xmode\": \"BasicMagics\", \"cat\": \"Other\", \"mv\": \"Other\", \"rerun\": \"HistoryMagics\", \"logon\": \"LoggingMagics\", \"history\": \"HistoryMagics\", \"pycat\": \"OSMagics\", \"unalias\": \"OSMagics\", \"install_default_config\": \"DeprecatedMagics\", \"env\": \"OSMagics\", \"load_ext\": \"ExtensionMagics\", \"config\": \"ConfigMagics\", \"killbgscripts\": \"ScriptMagics\", \"profile\": \"BasicMagics\", \"pfile\": \"NamespaceMagics\", \"less\": \"KernelMagics\", \"who\": \"NamespaceMagics\", \"notebook\": \"BasicMagics\", \"man\": \"KernelMagics\", \"sx\": \"OSMagics\", \"macro\": \"ExecutionMagics\", \"clear\": \"KernelMagics\", \"alias\": \"OSMagics\", \"time\": \"ExecutionMagics\", \"sc\": \"OSMagics\", \"ldir\": \"Other\", \"pdoc\": \"NamespaceMagics\"}}" | |
|
1000 | ], | |
|
1001 | "metadata": {}, | |
|
1002 | "output_type": "pyout", | |
|
1003 | "prompt_number": 35, | |
|
1004 | "text": [ | |
|
1005 | "Available line magics:\n", | |
|
1006 | "%alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %cl %clear %clk %colors %config %connect_info %cp %d %dd %debug %dhist %dirs %dl %doctest_mode %dx %ed %edit %env %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %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 %rm %rmdir %run %save %sc %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n", | |
|
1007 | "\n", | |
|
1008 | "Available cell magics:\n", | |
|
1009 | "%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%latex %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n", | |
|
1010 | "\n", | |
|
1011 | "Automagic is ON, % prefix IS NOT needed for line magics." | |
|
1012 | ] | |
|
1013 | } | |
|
1014 | ], | |
|
1015 | "prompt_number": 35 | |
|
1016 | }, | |
|
1017 | { | |
|
1018 | "cell_type": "heading", | |
|
1019 | "level": 2, | |
|
1020 | "metadata": {}, | |
|
1021 | "source": [ | |
|
1022 | "Running normal Python code: execution and errors" | |
|
1023 | ] | |
|
1024 | }, | |
|
1025 | { | |
|
1026 | "cell_type": "markdown", | |
|
1027 | "metadata": {}, | |
|
1028 | "source": [ | |
|
1029 | "Not only can you input normal Python code, you can even paste straight from a Python or IPython shell session:" | |
|
1030 | ] | |
|
1031 | }, | |
|
1032 | { | |
|
1033 | "cell_type": "code", | |
|
1034 | "collapsed": false, | |
|
1035 | "input": [ | |
|
1036 | ">>> # Fibonacci series:\n", | |
|
1037 | "... # the sum of two elements defines the next\n", | |
|
1038 | "... a, b = 0, 1\n", | |
|
1039 | ">>> while b < 10:\n", | |
|
1040 | "... print b\n", | |
|
1041 | "... a, b = b, a+b" | |
|
1042 | ], | |
|
1043 | "language": "python", | |
|
1044 | "metadata": {}, | |
|
1045 | "outputs": [ | |
|
1046 | { | |
|
1047 | "output_type": "stream", | |
|
1048 | "stream": "stdout", | |
|
1049 | "text": [ | |
|
1050 | "1\n", | |
|
1051 | "1\n", | |
|
1052 | "2\n", | |
|
1053 | "3\n", | |
|
1054 | "5\n", | |
|
1055 | "8\n" | |
|
1056 | ] | |
|
1057 | } | |
|
1058 | ], | |
|
1059 | "prompt_number": 36 | |
|
1060 | }, | |
|
1061 | { | |
|
1062 | "cell_type": "code", | |
|
1063 | "collapsed": false, | |
|
1064 | "input": [ | |
|
1065 | "In [1]: for i in range(10):\n", | |
|
1066 | " ...: print i,\n", | |
|
1067 | " ...: " | |
|
1068 | ], | |
|
1069 | "language": "python", | |
|
1070 | "metadata": {}, | |
|
1071 | "outputs": [ | |
|
1072 | { | |
|
1073 | "output_type": "stream", | |
|
1074 | "stream": "stdout", | |
|
1075 | "text": [ | |
|
1076 | "0 1 2 3 4 5 6 7 8 9\n" | |
|
1077 | ] | |
|
1078 | } | |
|
1079 | ], | |
|
1080 | "prompt_number": 37 | |
|
1081 | }, | |
|
1082 | { | |
|
1083 | "cell_type": "markdown", | |
|
1084 | "metadata": {}, | |
|
1085 | "source": [ | |
|
1086 | "And when your code produces errors, you can control how they are displayed with the `%xmode` magic:" | |
|
1087 | ] | |
|
1088 | }, | |
|
1089 | { | |
|
1090 | "cell_type": "code", | |
|
1091 | "collapsed": false, | |
|
1092 | "input": [ | |
|
1093 | "%%writefile mod.py\n", | |
|
1094 | "\n", | |
|
1095 | "def f(x):\n", | |
|
1096 | " return 1.0/(x-1)\n", | |
|
1097 | "\n", | |
|
1098 | "def g(y):\n", | |
|
1099 | " return f(y+1)" | |
|
1100 | ], | |
|
1101 | "language": "python", | |
|
1102 | "metadata": {}, | |
|
1103 | "outputs": [ | |
|
1104 | { | |
|
1105 | "output_type": "stream", | |
|
1106 | "stream": "stdout", | |
|
1107 | "text": [ | |
|
1108 | "Writing mod.py\n" | |
|
1109 | ] | |
|
1110 | } | |
|
1111 | ], | |
|
1112 | "prompt_number": 38 | |
|
1113 | }, | |
|
1114 | { | |
|
1115 | "cell_type": "markdown", | |
|
1116 | "metadata": {}, | |
|
1117 | "source": [ | |
|
1118 | "Now let's call the function `g` with an argument that would produce an error:" | |
|
1119 | ] | |
|
1120 | }, | |
|
1121 | { | |
|
1122 | "cell_type": "code", | |
|
1123 | "collapsed": false, | |
|
1124 | "input": [ | |
|
1125 | "import mod\n", | |
|
1126 | "mod.g(0)" | |
|
1127 | ], | |
|
1128 | "language": "python", | |
|
1129 | "metadata": {}, | |
|
1130 | "outputs": [ | |
|
1131 | { | |
|
1132 | "ename": "ZeroDivisionError", | |
|
1133 | "evalue": "float division by zero", | |
|
1134 | "output_type": "pyerr", | |
|
1135 | "traceback": [ | |
|
1136 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", | |
|
1137 | "\u001b[1;32m<ipython-input-39-a54c5799f57e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mmod\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", | |
|
1138 | "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", | |
|
1139 | "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
|
1140 | "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" | |
|
1141 | ] | |
|
1142 | } | |
|
1143 | ], | |
|
1144 | "prompt_number": 39 | |
|
1145 | }, | |
|
1146 | { | |
|
1147 | "cell_type": "code", | |
|
1148 | "collapsed": false, | |
|
1149 | "input": [ | |
|
1150 | "%xmode plain\n", | |
|
1151 | "mod.g(0)" | |
|
1152 | ], | |
|
1153 | "language": "python", | |
|
1154 | "metadata": {}, | |
|
1155 | "outputs": [ | |
|
1156 | { | |
|
1157 | "output_type": "stream", | |
|
1158 | "stream": "stdout", | |
|
1159 | "text": [ | |
|
1160 | "Exception reporting mode: Plain\n" | |
|
1161 | ] | |
|
1162 | }, | |
|
1163 | { | |
|
1164 | "ename": "ZeroDivisionError", | |
|
1165 | "evalue": "float division by zero", | |
|
1166 | "output_type": "pyerr", | |
|
1167 | "traceback": [ | |
|
1168 | "Traceback \u001b[1;36m(most recent call last)\u001b[0m:\n", | |
|
1169 | " File \u001b[0;32m\"<ipython-input-40-5a5bcec1553f>\"\u001b[0m, line \u001b[0;32m2\u001b[0m, in \u001b[0;35m<module>\u001b[0m\n mod.g(0)\n", | |
|
1170 | " File \u001b[0;32m\"mod.py\"\u001b[0m, line \u001b[0;32m6\u001b[0m, in \u001b[0;35mg\u001b[0m\n return f(y+1)\n", | |
|
1171 | "\u001b[1;36m File \u001b[1;32m\"mod.py\"\u001b[1;36m, line \u001b[1;32m3\u001b[1;36m, in \u001b[1;35mf\u001b[1;36m\u001b[0m\n\u001b[1;33m return 1.0/(x-1)\u001b[0m\n", | |
|
1172 | "\u001b[1;31mZeroDivisionError\u001b[0m\u001b[1;31m:\u001b[0m float division by zero\n" | |
|
1173 | ] | |
|
1174 | } | |
|
1175 | ], | |
|
1176 | "prompt_number": 40 | |
|
1177 | }, | |
|
1178 | { | |
|
1179 | "cell_type": "code", | |
|
1180 | "collapsed": false, | |
|
1181 | "input": [ | |
|
1182 | "%xmode verbose\n", | |
|
1183 | "mod.g(0)" | |
|
1184 | ], | |
|
1185 | "language": "python", | |
|
1186 | "metadata": {}, | |
|
1187 | "outputs": [ | |
|
1188 | { | |
|
1189 | "output_type": "stream", | |
|
1190 | "stream": "stdout", | |
|
1191 | "text": [ | |
|
1192 | "Exception reporting mode: Verbose\n" | |
|
1193 | ] | |
|
1194 | }, | |
|
1195 | { | |
|
1196 | "ename": "ZeroDivisionError", | |
|
1197 | "evalue": "float division by zero", | |
|
1198 | "output_type": "pyerr", | |
|
1199 | "traceback": [ | |
|
1200 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", | |
|
1201 | "\u001b[1;32m<ipython-input-41-81967cfaa0c3>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mu'xmode verbose'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[1;36mglobal\u001b[0m \u001b[0;36mmod.g\u001b[0m \u001b[1;34m= <function g at 0x237fc08>\u001b[0m\n", | |
|
1202 | "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y=0)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[1;36mglobal\u001b[0m \u001b[0;36mf\u001b[0m \u001b[1;34m= <function f at 0x2367c08>\u001b[0m\u001b[1;34m\n \u001b[0m\u001b[0;36my\u001b[0m \u001b[1;34m= 0\u001b[0m\n", | |
|
1203 | "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x=1)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36mx\u001b[0m \u001b[1;34m= 1\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
|
1204 | "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" | |
|
1205 | ] | |
|
1206 | } | |
|
1207 | ], | |
|
1208 | "prompt_number": 41 | |
|
1209 | }, | |
|
1210 | { | |
|
1211 | "cell_type": "markdown", | |
|
1212 | "metadata": {}, | |
|
1213 | "source": [ | |
|
1214 | "The default `%xmode` is \"context\", which shows additional context but not all local variables. Let's restore that one for the rest of our session." | |
|
1215 | ] | |
|
1216 | }, | |
|
1217 | { | |
|
1218 | "cell_type": "code", | |
|
1219 | "collapsed": false, | |
|
1220 | "input": [ | |
|
1221 | "%xmode context" | |
|
1222 | ], | |
|
1223 | "language": "python", | |
|
1224 | "metadata": {}, | |
|
1225 | "outputs": [ | |
|
1226 | { | |
|
1227 | "output_type": "stream", | |
|
1228 | "stream": "stdout", | |
|
1229 | "text": [ | |
|
1230 | "Exception reporting mode: Context\n" | |
|
1231 | ] | |
|
1232 | } | |
|
1233 | ], | |
|
1234 | "prompt_number": 42 | |
|
1235 | }, | |
|
1236 | { | |
|
1237 | "cell_type": "heading", | |
|
1238 | "level": 2, | |
|
1239 | "metadata": {}, | |
|
1240 | "source": [ | |
|
1241 | "Running code in other languages with special `%%` magics" | |
|
1242 | ] | |
|
1243 | }, | |
|
1244 | { | |
|
1245 | "cell_type": "code", | |
|
1246 | "collapsed": false, | |
|
1247 | "input": [ | |
|
1248 | "%%perl\n", | |
|
1249 | "@months = (\"July\", \"August\", \"September\");\n", | |
|
1250 | "print $months[0];" | |
|
1251 | ], | |
|
1252 | "language": "python", | |
|
1253 | "metadata": {}, | |
|
1254 | "outputs": [ | |
|
1255 | { | |
|
1256 | "output_type": "stream", | |
|
1257 | "stream": "stdout", | |
|
1258 | "text": [ | |
|
1259 | "July" | |
|
1260 | ] | |
|
1261 | } | |
|
1262 | ], | |
|
1263 | "prompt_number": 43 | |
|
1264 | }, | |
|
1265 | { | |
|
1266 | "cell_type": "code", | |
|
1267 | "collapsed": false, | |
|
1268 | "input": [ | |
|
1269 | "%%ruby\n", | |
|
1270 | "name = \"world\"\n", | |
|
1271 | "puts \"Hello #{name.capitalize}!\"" | |
|
1272 | ], | |
|
1273 | "language": "python", | |
|
1274 | "metadata": {}, | |
|
1275 | "outputs": [ | |
|
1276 | { | |
|
1277 | "output_type": "stream", | |
|
1278 | "stream": "stdout", | |
|
1279 | "text": [ | |
|
1280 | "Hello World!\n" | |
|
1281 | ] | |
|
1282 | } | |
|
1283 | ], | |
|
1284 | "prompt_number": 44 | |
|
1285 | }, | |
|
1286 | { | |
|
1287 | "cell_type": "heading", | |
|
1288 | "level": 3, | |
|
1289 | "metadata": {}, | |
|
1290 | "source": [ | |
|
1291 | "Exercise" | |
|
1292 | ] | |
|
1293 | }, | |
|
1294 | { | |
|
1295 | "cell_type": "markdown", | |
|
1296 | "metadata": {}, | |
|
1297 | "source": [ | |
|
1298 | "Write a cell that executes in Bash and prints your current working directory as well as the date.\n", | |
|
1299 | "\n", | |
|
1300 | "Apologies to Windows users who may not have Bash available, not sure how to obtain the equivalent result with `cmd.exe` or Powershell." | |
|
1301 | ] | |
|
1302 | }, | |
|
1303 | { | |
|
1304 | "cell_type": "code", | |
|
1305 | "collapsed": false, | |
|
1306 | "input": [ | |
|
1307 | "%load soln/bash-script" | |
|
1308 | ], | |
|
1309 | "language": "python", | |
|
1310 | "metadata": {}, | |
|
1311 | "outputs": [] | |
|
1312 | }, | |
|
1313 | { | |
|
1314 | "cell_type": "heading", | |
|
1315 | "level": 2, | |
|
1316 | "metadata": {}, | |
|
1317 | "source": [ | |
|
1318 | "Raw Input in the notebook" | |
|
1319 | ] | |
|
1320 | }, | |
|
1321 | { | |
|
1322 | "cell_type": "markdown", | |
|
1323 | "metadata": {}, | |
|
1324 | "source": [ | |
|
1325 | "Since 1.0 the IPython notebook web application support `raw_input` which for example allow us to invoke the `%debug` magic in the notebook:" | |
|
1326 | ] | |
|
1327 | }, | |
|
1328 | { | |
|
1329 | "cell_type": "code", | |
|
1330 | "collapsed": false, | |
|
1331 | "input": [ | |
|
1332 | "mod.g(0)" | |
|
1333 | ], | |
|
1334 | "language": "python", | |
|
1335 | "metadata": {}, | |
|
1336 | "outputs": [ | |
|
1337 | { | |
|
1338 | "ename": "ZeroDivisionError", | |
|
1339 | "evalue": "float division by zero", | |
|
1340 | "output_type": "pyerr", | |
|
1341 | "traceback": [ | |
|
1342 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", | |
|
1343 | "\u001b[1;32m<ipython-input-45-5e708f13c839>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", | |
|
1344 | "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", | |
|
1345 | "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
|
1346 | "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" | |
|
1347 | ] | |
|
1348 | } | |
|
1349 | ], | |
|
1350 | "prompt_number": 45 | |
|
1351 | }, | |
|
1352 | { | |
|
1353 | "cell_type": "code", | |
|
1354 | "collapsed": false, | |
|
1355 | "input": [ | |
|
1356 | "%debug" | |
|
1357 | ], | |
|
1358 | "language": "python", | |
|
1359 | "metadata": {}, | |
|
1360 | "outputs": [ | |
|
1361 | { | |
|
1362 | "output_type": "stream", | |
|
1363 | "stream": "stdout", | |
|
1364 | "text": [ | |
|
1365 | "> \u001b[0;32m/Users/bussonniermatthias/ipython-in-depth/notebooks/mod.py\u001b[0m(3)\u001b[0;36mf\u001b[0;34m()\u001b[0m\n", | |
|
1366 | "\u001b[0;32m 2 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
|
1367 | "\u001b[0m\u001b[0;32m----> 3 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
|
1368 | "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
|
1369 | "\u001b[0m\n" | |
|
1370 | ] | |
|
1371 | }, | |
|
1372 | { | |
|
1373 | "name": "stdout", | |
|
1374 | "output_type": "stream", | |
|
1375 | "stream": "stdout", | |
|
1376 | "text": [ | |
|
1377 | "ipdb> x\n" | |
|
1378 | ] | |
|
1379 | }, | |
|
1380 | { | |
|
1381 | "output_type": "stream", | |
|
1382 | "stream": "stdout", | |
|
1383 | "text": [ | |
|
1384 | "1\n" | |
|
1385 | ] | |
|
1386 | }, | |
|
1387 | { | |
|
1388 | "name": "stdout", | |
|
1389 | "output_type": "stream", | |
|
1390 | "stream": "stdout", | |
|
1391 | "text": [ | |
|
1392 | "ipdb> up\n" | |
|
1393 | ] | |
|
1394 | }, | |
|
1395 | { | |
|
1396 | "output_type": "stream", | |
|
1397 | "stream": "stdout", | |
|
1398 | "text": [ | |
|
1399 | "> \u001b[0;32m/Users/bussonniermatthias/ipython-in-depth/notebooks/mod.py\u001b[0m(6)\u001b[0;36mg\u001b[0;34m()\u001b[0m\n", | |
|
1400 | "\u001b[0;32m 4 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
|
1401 | "\u001b[0m\u001b[0;32m 5 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
|
1402 | "\u001b[0m\u001b[0;32m----> 6 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
|
1403 | "\u001b[0m\n" | |
|
1404 | ] | |
|
1405 | }, | |
|
1406 | { | |
|
1407 | "name": "stdout", | |
|
1408 | "output_type": "stream", | |
|
1409 | "stream": "stdout", | |
|
1410 | "text": [ | |
|
1411 | "ipdb> y\n" | |
|
1412 | ] | |
|
1413 | }, | |
|
1414 | { | |
|
1415 | "output_type": "stream", | |
|
1416 | "stream": "stdout", | |
|
1417 | "text": [ | |
|
1418 | "0\n" | |
|
1419 | ] | |
|
1420 | }, | |
|
1421 | { | |
|
1422 | "name": "stdout", | |
|
1423 | "output_type": "stream", | |
|
1424 | "stream": "stdout", | |
|
1425 | "text": [ | |
|
1426 | "ipdb> up\n" | |
|
1427 | ] | |
|
1428 | }, | |
|
1429 | { | |
|
1430 | "output_type": "stream", | |
|
1431 | "stream": "stdout", | |
|
1432 | "text": [ | |
|
1433 | "> \u001b[0;32m<ipython-input-37-5e708f13c839>\u001b[0m(1)\u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n", | |
|
1434 | "\u001b[0;32m----> 1 \u001b[0;31m\u001b[0mmod\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
|
1435 | "\u001b[0m\n" | |
|
1436 | ] | |
|
1437 | }, | |
|
1438 | { | |
|
1439 | "name": "stdout", | |
|
1440 | "output_type": "stream", | |
|
1441 | "stream": "stdout", | |
|
1442 | "text": [ | |
|
1443 | "ipdb> exit\n" | |
|
1444 | ] | |
|
1445 | } | |
|
1446 | ], | |
|
1447 | "prompt_number": 38 | |
|
1448 | }, | |
|
1449 | { | |
|
1450 | "cell_type": "markdown", | |
|
1451 | "metadata": {}, | |
|
1452 | "source": [ | |
|
1453 | "Don't foget to exit your debugging session. Raw input can of course be use to ask for user input:" | |
|
1454 | ] | |
|
1455 | }, | |
|
1456 | { | |
|
1457 | "cell_type": "code", | |
|
1458 | "collapsed": false, | |
|
1459 | "input": [ | |
|
1460 | "enjoy = raw_input('Are you enjoying this tutorial ?')\n", | |
|
1461 | "print 'enjoy is :', enjoy" | |
|
1462 | ], | |
|
1463 | "language": "python", | |
|
1464 | "metadata": {}, | |
|
1465 | "outputs": [ | |
|
1466 | { | |
|
1467 | "name": "stdout", | |
|
1468 | "output_type": "stream", | |
|
1469 | "stream": "stdout", | |
|
1470 | "text": [ | |
|
1471 | "Are you enjoying this tutorial ?Yes !\n" | |
|
1472 | ] | |
|
1473 | }, | |
|
1474 | { | |
|
1475 | "output_type": "stream", | |
|
1476 | "stream": "stdout", | |
|
1477 | "text": [ | |
|
1478 | "enjoy is : Yes !\n" | |
|
1479 | ] | |
|
1480 | } | |
|
1481 | ], | |
|
1482 | "prompt_number": 39 | |
|
1483 | }, | |
|
1484 | { | |
|
1485 | "cell_type": "heading", | |
|
1486 | "level": 2, | |
|
1487 | "metadata": {}, | |
|
1488 | "source": [ | |
|
1489 | "Plotting in the notebook" | |
|
1490 | ] | |
|
1491 | }, | |
|
1492 | { | |
|
1493 | "cell_type": "markdown", | |
|
1494 | "metadata": {}, | |
|
1495 | "source": [ | |
|
1496 | "This magic configures matplotlib to render its figures inline:" | |
|
1497 | ] | |
|
1498 | }, | |
|
1499 | { | |
|
1500 | "cell_type": "code", | |
|
1501 | "collapsed": false, | |
|
1502 | "input": [ | |
|
1503 | "%matplotlib inline" | |
|
1504 | ], | |
|
1505 | "language": "python", | |
|
1506 | "metadata": {}, | |
|
1507 | "outputs": [], | |
|
1508 | "prompt_number": 46 | |
|
1509 | }, | |
|
1510 | { | |
|
1511 | "cell_type": "code", | |
|
1512 | "collapsed": false, | |
|
1513 | "input": [ | |
|
1514 | "import numpy as np\n", | |
|
1515 | "import matplotlib.pyplot as plt" | |
|
1516 | ], | |
|
1517 | "language": "python", | |
|
1518 | "metadata": {}, | |
|
1519 | "outputs": [], | |
|
1520 | "prompt_number": 47 | |
|
1521 | }, | |
|
1522 | { | |
|
1523 | "cell_type": "code", | |
|
1524 | "collapsed": false, | |
|
1525 | "input": [ | |
|
1526 | "x = np.linspace(0, 2*np.pi, 300)\n", | |
|
1527 | "y = np.sin(x**2)\n", | |
|
1528 | "plt.plot(x, y)\n", | |
|
1529 | "plt.title(\"A little chirp\")\n", | |
|
1530 | "fig = plt.gcf() # let's keep the figure object around for later..." | |
|
1531 | ], | |
|
1532 | "language": "python", | |
|
1533 | "metadata": {}, | |
|
1534 | "outputs": [ | |
|
1535 | { | |
|
1536 | "metadata": {}, | |
|
1537 | "output_type": "display_data", | |
|
1538 | "png": "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\n", | |
|
1539 | "text": [ | |
|
1540 | "<matplotlib.figure.Figure at 0x3436950>" | |
|
1541 | ] | |
|
1542 | } | |
|
1543 | ], | |
|
1544 | "prompt_number": 48 | |
|
1545 | }, | |
|
1546 | { | |
|
1547 | "cell_type": "heading", | |
|
1548 | "level": 2, | |
|
1549 | "metadata": {}, | |
|
1550 | "source": [ | |
|
1551 | "The IPython kernel/client model" | |
|
1552 | ] | |
|
1553 | }, | |
|
1554 | { | |
|
1555 | "cell_type": "code", | |
|
1556 | "collapsed": false, | |
|
1557 | "input": [ | |
|
1558 | "%connect_info" | |
|
1559 | ], | |
|
1560 | "language": "python", | |
|
1561 | "metadata": {}, | |
|
1562 | "outputs": [ | |
|
1563 | { | |
|
1564 | "output_type": "stream", | |
|
1565 | "stream": "stdout", | |
|
1566 | "text": [ | |
|
1567 | "{\n", | |
|
1568 | " \"stdin_port\": 50023, \n", | |
|
1569 | " \"ip\": \"127.0.0.1\", \n", | |
|
1570 | " \"control_port\": 50024, \n", | |
|
1571 | " \"hb_port\": 50025, \n", | |
|
1572 | " \"signature_scheme\": \"hmac-sha256\", \n", | |
|
1573 | " \"key\": \"b54b8859-d64d-48bb-814a-909f9beb3316\", \n", | |
|
1574 | " \"shell_port\": 50021, \n", | |
|
1575 | " \"transport\": \"tcp\", \n", | |
|
1576 | " \"iopub_port\": 50022\n", | |
|
1577 | "}\n", | |
|
1578 | "\n", | |
|
1579 | "Paste the above JSON into a file, and connect with:\n", | |
|
1580 | " $> ipython <app> --existing <file>\n", | |
|
1581 | "or, if you are local, you can connect with just:\n", | |
|
1582 | " $> ipython <app> --existing kernel-30f00f4a-230c-4e64-bea5-0e5f6a52cb40.json \n", | |
|
1583 | "or even just:\n", | |
|
1584 | " $> ipython <app> --existing \n", | |
|
1585 | "if this is the most recent IPython session you have started.\n" | |
|
1586 | ] | |
|
1587 | } | |
|
1588 | ], | |
|
1589 | "prompt_number": 43 | |
|
1590 | }, | |
|
1591 | { | |
|
1592 | "cell_type": "markdown", | |
|
1593 | "metadata": {}, | |
|
1594 | "source": [ | |
|
1595 | "We can connect automatically a Qt Console to the currently running kernel with the `%qtconsole` magic, or by typing `ipython console --existing <kernel-UUID>` in any terminal:" | |
|
1596 | ] | |
|
1597 | }, | |
|
1598 | { | |
|
1599 | "cell_type": "code", | |
|
1600 | "collapsed": false, | |
|
1601 | "input": [ | |
|
1602 | "%qtconsole" | |
|
1603 | ], | |
|
1604 | "language": "python", | |
|
1605 | "metadata": {}, | |
|
1606 | "outputs": [], | |
|
1607 | "prompt_number": 83 | |
|
1608 | } | |
|
1609 | ], | |
|
1610 | "metadata": {} | |
|
1611 | } | |
|
1612 | ] | |
|
1613 | } No newline at end of file |
@@ -0,0 +1,275 b'' | |||
|
1 | { | |
|
2 | "metadata": { | |
|
3 | "name": "", | |
|
4 | "signature": "sha256:993106eecfd7abe1920e1dbe670c4518189c26e7b29dcc541835f7dcf6fffbb2" | |
|
5 | }, | |
|
6 | "nbformat": 3, | |
|
7 | "nbformat_minor": 0, | |
|
8 | "worksheets": [ | |
|
9 | { | |
|
10 | "cells": [ | |
|
11 | { | |
|
12 | "cell_type": "heading", | |
|
13 | "level": 1, | |
|
14 | "metadata": {}, | |
|
15 | "source": [ | |
|
16 | "A few things that work best/only at the IPython terminal or Qt console clients" | |
|
17 | ] | |
|
18 | }, | |
|
19 | { | |
|
20 | "cell_type": "markdown", | |
|
21 | "metadata": {}, | |
|
22 | "source": [ | |
|
23 | "## Running code with `%run`" | |
|
24 | ] | |
|
25 | }, | |
|
26 | { | |
|
27 | "cell_type": "code", | |
|
28 | "collapsed": false, | |
|
29 | "input": [ | |
|
30 | "%%writefile script.py\n", | |
|
31 | "x = 10\n", | |
|
32 | "y = 20\n", | |
|
33 | "z = x+y\n", | |
|
34 | "print 'z is:', z" | |
|
35 | ], | |
|
36 | "language": "python", | |
|
37 | "metadata": {}, | |
|
38 | "outputs": [ | |
|
39 | { | |
|
40 | "output_type": "stream", | |
|
41 | "stream": "stdout", | |
|
42 | "text": [ | |
|
43 | "Writing script.py\n" | |
|
44 | ] | |
|
45 | } | |
|
46 | ], | |
|
47 | "prompt_number": 1 | |
|
48 | }, | |
|
49 | { | |
|
50 | "cell_type": "code", | |
|
51 | "collapsed": false, | |
|
52 | "input": [ | |
|
53 | "%run script" | |
|
54 | ], | |
|
55 | "language": "python", | |
|
56 | "metadata": {}, | |
|
57 | "outputs": [ | |
|
58 | { | |
|
59 | "output_type": "stream", | |
|
60 | "stream": "stdout", | |
|
61 | "text": [ | |
|
62 | "z is: 30\n" | |
|
63 | ] | |
|
64 | } | |
|
65 | ], | |
|
66 | "prompt_number": 2 | |
|
67 | }, | |
|
68 | { | |
|
69 | "cell_type": "code", | |
|
70 | "collapsed": false, | |
|
71 | "input": [ | |
|
72 | "x" | |
|
73 | ], | |
|
74 | "language": "python", | |
|
75 | "metadata": {}, | |
|
76 | "outputs": [ | |
|
77 | { | |
|
78 | "metadata": {}, | |
|
79 | "output_type": "pyout", | |
|
80 | "prompt_number": 3, | |
|
81 | "text": [ | |
|
82 | "10" | |
|
83 | ] | |
|
84 | } | |
|
85 | ], | |
|
86 | "prompt_number": 3 | |
|
87 | }, | |
|
88 | { | |
|
89 | "cell_type": "heading", | |
|
90 | "level": 2, | |
|
91 | "metadata": {}, | |
|
92 | "source": [ | |
|
93 | "Event loop and GUI integration" | |
|
94 | ] | |
|
95 | }, | |
|
96 | { | |
|
97 | "cell_type": "markdown", | |
|
98 | "metadata": {}, | |
|
99 | "source": [ | |
|
100 | "The `%gui` magic enables the integration of GUI event loops with the interactive execution loop, allowing you to run GUI code without blocking IPython.\n", | |
|
101 | "\n", | |
|
102 | "Consider for example the execution of Qt-based code. Once we enable the Qt gui support:" | |
|
103 | ] | |
|
104 | }, | |
|
105 | { | |
|
106 | "cell_type": "code", | |
|
107 | "collapsed": false, | |
|
108 | "input": [ | |
|
109 | "%gui qt" | |
|
110 | ], | |
|
111 | "language": "python", | |
|
112 | "metadata": {}, | |
|
113 | "outputs": [], | |
|
114 | "prompt_number": 4 | |
|
115 | }, | |
|
116 | { | |
|
117 | "cell_type": "markdown", | |
|
118 | "metadata": {}, | |
|
119 | "source": [ | |
|
120 | "We can define a simple Qt application class (simplified version from [this Qt tutorial](http://zetcode.com/tutorials/pyqt4/firstprograms)):" | |
|
121 | ] | |
|
122 | }, | |
|
123 | { | |
|
124 | "cell_type": "code", | |
|
125 | "collapsed": false, | |
|
126 | "input": [ | |
|
127 | "import sys\n", | |
|
128 | "from PyQt4 import QtGui, QtCore\n", | |
|
129 | "\n", | |
|
130 | "class SimpleWindow(QtGui.QWidget):\n", | |
|
131 | " def __init__(self, parent=None):\n", | |
|
132 | " QtGui.QWidget.__init__(self, parent)\n", | |
|
133 | "\n", | |
|
134 | " self.setGeometry(300, 300, 200, 80)\n", | |
|
135 | " self.setWindowTitle('Hello World')\n", | |
|
136 | "\n", | |
|
137 | " quit = QtGui.QPushButton('Close', self)\n", | |
|
138 | " quit.setGeometry(10, 10, 60, 35)\n", | |
|
139 | "\n", | |
|
140 | " self.connect(quit, QtCore.SIGNAL('clicked()'),\n", | |
|
141 | " self, QtCore.SLOT('close()'))" | |
|
142 | ], | |
|
143 | "language": "python", | |
|
144 | "metadata": {}, | |
|
145 | "outputs": [], | |
|
146 | "prompt_number": 5 | |
|
147 | }, | |
|
148 | { | |
|
149 | "cell_type": "markdown", | |
|
150 | "metadata": {}, | |
|
151 | "source": [ | |
|
152 | "And now we can instantiate it:" | |
|
153 | ] | |
|
154 | }, | |
|
155 | { | |
|
156 | "cell_type": "code", | |
|
157 | "collapsed": false, | |
|
158 | "input": [ | |
|
159 | "app = QtCore.QCoreApplication.instance()\n", | |
|
160 | "if app is None:\n", | |
|
161 | " app = QtGui.QApplication([])\n", | |
|
162 | "\n", | |
|
163 | "sw = SimpleWindow()\n", | |
|
164 | "sw.show()\n", | |
|
165 | "\n", | |
|
166 | "from IPython.lib.guisupport import start_event_loop_qt4\n", | |
|
167 | "start_event_loop_qt4(app)" | |
|
168 | ], | |
|
169 | "language": "python", | |
|
170 | "metadata": {}, | |
|
171 | "outputs": [], | |
|
172 | "prompt_number": 6 | |
|
173 | }, | |
|
174 | { | |
|
175 | "cell_type": "markdown", | |
|
176 | "metadata": {}, | |
|
177 | "source": [ | |
|
178 | "But IPython still remains responsive:" | |
|
179 | ] | |
|
180 | }, | |
|
181 | { | |
|
182 | "cell_type": "code", | |
|
183 | "collapsed": false, | |
|
184 | "input": [ | |
|
185 | "10+2" | |
|
186 | ], | |
|
187 | "language": "python", | |
|
188 | "metadata": {}, | |
|
189 | "outputs": [ | |
|
190 | { | |
|
191 | "metadata": {}, | |
|
192 | "output_type": "pyout", | |
|
193 | "prompt_number": 7, | |
|
194 | "text": [ | |
|
195 | "12" | |
|
196 | ] | |
|
197 | } | |
|
198 | ], | |
|
199 | "prompt_number": 7 | |
|
200 | }, | |
|
201 | { | |
|
202 | "cell_type": "markdown", | |
|
203 | "metadata": {}, | |
|
204 | "source": [ | |
|
205 | "The `%gui` magic can be similarly used to control Wx, Tk, glut and pyglet applications, [as can be seen in our examples](https://github.com/ipython/ipython/tree/master/examples/lib)." | |
|
206 | ] | |
|
207 | }, | |
|
208 | { | |
|
209 | "cell_type": "heading", | |
|
210 | "level": 2, | |
|
211 | "metadata": {}, | |
|
212 | "source": [ | |
|
213 | "Embedding IPython in a terminal application" | |
|
214 | ] | |
|
215 | }, | |
|
216 | { | |
|
217 | "cell_type": "code", | |
|
218 | "collapsed": false, | |
|
219 | "input": [ | |
|
220 | "%%writefile simple-embed.py\n", | |
|
221 | "# This shows how to use the new top-level embed function. It is a simpler\n", | |
|
222 | "# API that manages the creation of the embedded shell.\n", | |
|
223 | "\n", | |
|
224 | "from IPython import embed\n", | |
|
225 | "\n", | |
|
226 | "a = 10\n", | |
|
227 | "b = 20\n", | |
|
228 | "\n", | |
|
229 | "embed(header='First time', banner1='')\n", | |
|
230 | "\n", | |
|
231 | "c = 30\n", | |
|
232 | "d = 40\n", | |
|
233 | "\n", | |
|
234 | "embed(header='The second time')" | |
|
235 | ], | |
|
236 | "language": "python", | |
|
237 | "metadata": {}, | |
|
238 | "outputs": [ | |
|
239 | { | |
|
240 | "output_type": "stream", | |
|
241 | "stream": "stdout", | |
|
242 | "text": [ | |
|
243 | "Writing simple-embed.py\n" | |
|
244 | ] | |
|
245 | } | |
|
246 | ], | |
|
247 | "prompt_number": 12 | |
|
248 | }, | |
|
249 | { | |
|
250 | "cell_type": "markdown", | |
|
251 | "metadata": {}, | |
|
252 | "source": [ | |
|
253 | "The example in kernel-embedding shows how to embed a full kernel into an application and how to connect to this kernel from an external process." | |
|
254 | ] | |
|
255 | }, | |
|
256 | { | |
|
257 | "cell_type": "heading", | |
|
258 | "level": 2, | |
|
259 | "metadata": {}, | |
|
260 | "source": [ | |
|
261 | "Logging terminal sessions and transitioning to a notebook" | |
|
262 | ] | |
|
263 | }, | |
|
264 | { | |
|
265 | "cell_type": "markdown", | |
|
266 | "metadata": {}, | |
|
267 | "source": [ | |
|
268 | "The `%logstart` magic lets you log a terminal session with various degrees of control, and the `%notebook` one will convert an interactive console session into a notebook with all input cells already created for you (but no output)." | |
|
269 | ] | |
|
270 | } | |
|
271 | ], | |
|
272 | "metadata": {} | |
|
273 | } | |
|
274 | ] | |
|
275 | } No newline at end of file |
@@ -0,0 +1,380 b'' | |||
|
1 | { | |
|
2 | "name": "flare", | |
|
3 | "children": [ | |
|
4 | { | |
|
5 | "name": "analytics", | |
|
6 | "children": [ | |
|
7 | { | |
|
8 | "name": "cluster", | |
|
9 | "children": [ | |
|
10 | {"name": "AgglomerativeCluster", "size": 3938}, | |
|
11 | {"name": "CommunityStructure", "size": 3812}, | |
|
12 | {"name": "HierarchicalCluster", "size": 6714}, | |
|
13 | {"name": "MergeEdge", "size": 743} | |
|
14 | ] | |
|
15 | }, | |
|
16 | { | |
|
17 | "name": "graph", | |
|
18 | "children": [ | |
|
19 | {"name": "BetweennessCentrality", "size": 3534}, | |
|
20 | {"name": "LinkDistance", "size": 5731}, | |
|
21 | {"name": "MaxFlowMinCut", "size": 7840}, | |
|
22 | {"name": "ShortestPaths", "size": 5914}, | |
|
23 | {"name": "SpanningTree", "size": 3416} | |
|
24 | ] | |
|
25 | }, | |
|
26 | { | |
|
27 | "name": "optimization", | |
|
28 | "children": [ | |
|
29 | {"name": "AspectRatioBanker", "size": 7074} | |
|
30 | ] | |
|
31 | } | |
|
32 | ] | |
|
33 | }, | |
|
34 | { | |
|
35 | "name": "animate", | |
|
36 | "children": [ | |
|
37 | {"name": "Easing", "size": 17010}, | |
|
38 | {"name": "FunctionSequence", "size": 5842}, | |
|
39 | { | |
|
40 | "name": "interpolate", | |
|
41 | "children": [ | |
|
42 | {"name": "ArrayInterpolator", "size": 1983}, | |
|
43 | {"name": "ColorInterpolator", "size": 2047}, | |
|
44 | {"name": "DateInterpolator", "size": 1375}, | |
|
45 | {"name": "Interpolator", "size": 8746}, | |
|
46 | {"name": "MatrixInterpolator", "size": 2202}, | |
|
47 | {"name": "NumberInterpolator", "size": 1382}, | |
|
48 | {"name": "ObjectInterpolator", "size": 1629}, | |
|
49 | {"name": "PointInterpolator", "size": 1675}, | |
|
50 | {"name": "RectangleInterpolator", "size": 2042} | |
|
51 | ] | |
|
52 | }, | |
|
53 | {"name": "ISchedulable", "size": 1041}, | |
|
54 | {"name": "Parallel", "size": 5176}, | |
|
55 | {"name": "Pause", "size": 449}, | |
|
56 | {"name": "Scheduler", "size": 5593}, | |
|
57 | {"name": "Sequence", "size": 5534}, | |
|
58 | {"name": "Transition", "size": 9201}, | |
|
59 | {"name": "Transitioner", "size": 19975}, | |
|
60 | {"name": "TransitionEvent", "size": 1116}, | |
|
61 | {"name": "Tween", "size": 6006} | |
|
62 | ] | |
|
63 | }, | |
|
64 | { | |
|
65 | "name": "data", | |
|
66 | "children": [ | |
|
67 | { | |
|
68 | "name": "converters", | |
|
69 | "children": [ | |
|
70 | {"name": "Converters", "size": 721}, | |
|
71 | {"name": "DelimitedTextConverter", "size": 4294}, | |
|
72 | {"name": "GraphMLConverter", "size": 9800}, | |
|
73 | {"name": "IDataConverter", "size": 1314}, | |
|
74 | {"name": "JSONConverter", "size": 2220} | |
|
75 | ] | |
|
76 | }, | |
|
77 | {"name": "DataField", "size": 1759}, | |
|
78 | {"name": "DataSchema", "size": 2165}, | |
|
79 | {"name": "DataSet", "size": 586}, | |
|
80 | {"name": "DataSource", "size": 3331}, | |
|
81 | {"name": "DataTable", "size": 772}, | |
|
82 | {"name": "DataUtil", "size": 3322} | |
|
83 | ] | |
|
84 | }, | |
|
85 | { | |
|
86 | "name": "display", | |
|
87 | "children": [ | |
|
88 | {"name": "DirtySprite", "size": 8833}, | |
|
89 | {"name": "LineSprite", "size": 1732}, | |
|
90 | {"name": "RectSprite", "size": 3623}, | |
|
91 | {"name": "TextSprite", "size": 10066} | |
|
92 | ] | |
|
93 | }, | |
|
94 | { | |
|
95 | "name": "flex", | |
|
96 | "children": [ | |
|
97 | {"name": "FlareVis", "size": 4116} | |
|
98 | ] | |
|
99 | }, | |
|
100 | { | |
|
101 | "name": "physics", | |
|
102 | "children": [ | |
|
103 | {"name": "DragForce", "size": 1082}, | |
|
104 | {"name": "GravityForce", "size": 1336}, | |
|
105 | {"name": "IForce", "size": 319}, | |
|
106 | {"name": "NBodyForce", "size": 10498}, | |
|
107 | {"name": "Particle", "size": 2822}, | |
|
108 | {"name": "Simulation", "size": 9983}, | |
|
109 | {"name": "Spring", "size": 2213}, | |
|
110 | {"name": "SpringForce", "size": 1681} | |
|
111 | ] | |
|
112 | }, | |
|
113 | { | |
|
114 | "name": "query", | |
|
115 | "children": [ | |
|
116 | {"name": "AggregateExpression", "size": 1616}, | |
|
117 | {"name": "And", "size": 1027}, | |
|
118 | {"name": "Arithmetic", "size": 3891}, | |
|
119 | {"name": "Average", "size": 891}, | |
|
120 | {"name": "BinaryExpression", "size": 2893}, | |
|
121 | {"name": "Comparison", "size": 5103}, | |
|
122 | {"name": "CompositeExpression", "size": 3677}, | |
|
123 | {"name": "Count", "size": 781}, | |
|
124 | {"name": "DateUtil", "size": 4141}, | |
|
125 | {"name": "Distinct", "size": 933}, | |
|
126 | {"name": "Expression", "size": 5130}, | |
|
127 | {"name": "ExpressionIterator", "size": 3617}, | |
|
128 | {"name": "Fn", "size": 3240}, | |
|
129 | {"name": "If", "size": 2732}, | |
|
130 | {"name": "IsA", "size": 2039}, | |
|
131 | {"name": "Literal", "size": 1214}, | |
|
132 | {"name": "Match", "size": 3748}, | |
|
133 | {"name": "Maximum", "size": 843}, | |
|
134 | { | |
|
135 | "name": "methods", | |
|
136 | "children": [ | |
|
137 | {"name": "add", "size": 593}, | |
|
138 | {"name": "and", "size": 330}, | |
|
139 | {"name": "average", "size": 287}, | |
|
140 | {"name": "count", "size": 277}, | |
|
141 | {"name": "distinct", "size": 292}, | |
|
142 | {"name": "div", "size": 595}, | |
|
143 | {"name": "eq", "size": 594}, | |
|
144 | {"name": "fn", "size": 460}, | |
|
145 | {"name": "gt", "size": 603}, | |
|
146 | {"name": "gte", "size": 625}, | |
|
147 | {"name": "iff", "size": 748}, | |
|
148 | {"name": "isa", "size": 461}, | |
|
149 | {"name": "lt", "size": 597}, | |
|
150 | {"name": "lte", "size": 619}, | |
|
151 | {"name": "max", "size": 283}, | |
|
152 | {"name": "min", "size": 283}, | |
|
153 | {"name": "mod", "size": 591}, | |
|
154 | {"name": "mul", "size": 603}, | |
|
155 | {"name": "neq", "size": 599}, | |
|
156 | {"name": "not", "size": 386}, | |
|
157 | {"name": "or", "size": 323}, | |
|
158 | {"name": "orderby", "size": 307}, | |
|
159 | {"name": "range", "size": 772}, | |
|
160 | {"name": "select", "size": 296}, | |
|
161 | {"name": "stddev", "size": 363}, | |
|
162 | {"name": "sub", "size": 600}, | |
|
163 | {"name": "sum", "size": 280}, | |
|
164 | {"name": "update", "size": 307}, | |
|
165 | {"name": "variance", "size": 335}, | |
|
166 | {"name": "where", "size": 299}, | |
|
167 | {"name": "xor", "size": 354}, | |
|
168 | {"name": "_", "size": 264} | |
|
169 | ] | |
|
170 | }, | |
|
171 | {"name": "Minimum", "size": 843}, | |
|
172 | {"name": "Not", "size": 1554}, | |
|
173 | {"name": "Or", "size": 970}, | |
|
174 | {"name": "Query", "size": 13896}, | |
|
175 | {"name": "Range", "size": 1594}, | |
|
176 | {"name": "StringUtil", "size": 4130}, | |
|
177 | {"name": "Sum", "size": 791}, | |
|
178 | {"name": "Variable", "size": 1124}, | |
|
179 | {"name": "Variance", "size": 1876}, | |
|
180 | {"name": "Xor", "size": 1101} | |
|
181 | ] | |
|
182 | }, | |
|
183 | { | |
|
184 | "name": "scale", | |
|
185 | "children": [ | |
|
186 | {"name": "IScaleMap", "size": 2105}, | |
|
187 | {"name": "LinearScale", "size": 1316}, | |
|
188 | {"name": "LogScale", "size": 3151}, | |
|
189 | {"name": "OrdinalScale", "size": 3770}, | |
|
190 | {"name": "QuantileScale", "size": 2435}, | |
|
191 | {"name": "QuantitativeScale", "size": 4839}, | |
|
192 | {"name": "RootScale", "size": 1756}, | |
|
193 | {"name": "Scale", "size": 4268}, | |
|
194 | {"name": "ScaleType", "size": 1821}, | |
|
195 | {"name": "TimeScale", "size": 5833} | |
|
196 | ] | |
|
197 | }, | |
|
198 | { | |
|
199 | "name": "util", | |
|
200 | "children": [ | |
|
201 | {"name": "Arrays", "size": 8258}, | |
|
202 | {"name": "Colors", "size": 10001}, | |
|
203 | {"name": "Dates", "size": 8217}, | |
|
204 | {"name": "Displays", "size": 12555}, | |
|
205 | {"name": "Filter", "size": 2324}, | |
|
206 | {"name": "Geometry", "size": 10993}, | |
|
207 | { | |
|
208 | "name": "heap", | |
|
209 | "children": [ | |
|
210 | {"name": "FibonacciHeap", "size": 9354}, | |
|
211 | {"name": "HeapNode", "size": 1233} | |
|
212 | ] | |
|
213 | }, | |
|
214 | {"name": "IEvaluable", "size": 335}, | |
|
215 | {"name": "IPredicate", "size": 383}, | |
|
216 | {"name": "IValueProxy", "size": 874}, | |
|
217 | { | |
|
218 | "name": "math", | |
|
219 | "children": [ | |
|
220 | {"name": "DenseMatrix", "size": 3165}, | |
|
221 | {"name": "IMatrix", "size": 2815}, | |
|
222 | {"name": "SparseMatrix", "size": 3366} | |
|
223 | ] | |
|
224 | }, | |
|
225 | {"name": "Maths", "size": 17705}, | |
|
226 | {"name": "Orientation", "size": 1486}, | |
|
227 | { | |
|
228 | "name": "palette", | |
|
229 | "children": [ | |
|
230 | {"name": "ColorPalette", "size": 6367}, | |
|
231 | {"name": "Palette", "size": 1229}, | |
|
232 | {"name": "ShapePalette", "size": 2059}, | |
|
233 | {"name": "SizePalette", "size": 2291} | |
|
234 | ] | |
|
235 | }, | |
|
236 | {"name": "Property", "size": 5559}, | |
|
237 | {"name": "Shapes", "size": 19118}, | |
|
238 | {"name": "Sort", "size": 6887}, | |
|
239 | {"name": "Stats", "size": 6557}, | |
|
240 | {"name": "Strings", "size": 22026} | |
|
241 | ] | |
|
242 | }, | |
|
243 | { | |
|
244 | "name": "vis", | |
|
245 | "children": [ | |
|
246 | { | |
|
247 | "name": "axis", | |
|
248 | "children": [ | |
|
249 | {"name": "Axes", "size": 1302}, | |
|
250 | {"name": "Axis", "size": 24593}, | |
|
251 | {"name": "AxisGridLine", "size": 652}, | |
|
252 | {"name": "AxisLabel", "size": 636}, | |
|
253 | {"name": "CartesianAxes", "size": 6703} | |
|
254 | ] | |
|
255 | }, | |
|
256 | { | |
|
257 | "name": "controls", | |
|
258 | "children": [ | |
|
259 | {"name": "AnchorControl", "size": 2138}, | |
|
260 | {"name": "ClickControl", "size": 3824}, | |
|
261 | {"name": "Control", "size": 1353}, | |
|
262 | {"name": "ControlList", "size": 4665}, | |
|
263 | {"name": "DragControl", "size": 2649}, | |
|
264 | {"name": "ExpandControl", "size": 2832}, | |
|
265 | {"name": "HoverControl", "size": 4896}, | |
|
266 | {"name": "IControl", "size": 763}, | |
|
267 | {"name": "PanZoomControl", "size": 5222}, | |
|
268 | {"name": "SelectionControl", "size": 7862}, | |
|
269 | {"name": "TooltipControl", "size": 8435} | |
|
270 | ] | |
|
271 | }, | |
|
272 | { | |
|
273 | "name": "data", | |
|
274 | "children": [ | |
|
275 | {"name": "Data", "size": 20544}, | |
|
276 | {"name": "DataList", "size": 19788}, | |
|
277 | {"name": "DataSprite", "size": 10349}, | |
|
278 | {"name": "EdgeSprite", "size": 3301}, | |
|
279 | {"name": "NodeSprite", "size": 19382}, | |
|
280 | { | |
|
281 | "name": "render", | |
|
282 | "children": [ | |
|
283 | {"name": "ArrowType", "size": 698}, | |
|
284 | {"name": "EdgeRenderer", "size": 5569}, | |
|
285 | {"name": "IRenderer", "size": 353}, | |
|
286 | {"name": "ShapeRenderer", "size": 2247} | |
|
287 | ] | |
|
288 | }, | |
|
289 | {"name": "ScaleBinding", "size": 11275}, | |
|
290 | {"name": "Tree", "size": 7147}, | |
|
291 | {"name": "TreeBuilder", "size": 9930} | |
|
292 | ] | |
|
293 | }, | |
|
294 | { | |
|
295 | "name": "events", | |
|
296 | "children": [ | |
|
297 | {"name": "DataEvent", "size": 2313}, | |
|
298 | {"name": "SelectionEvent", "size": 1880}, | |
|
299 | {"name": "TooltipEvent", "size": 1701}, | |
|
300 | {"name": "VisualizationEvent", "size": 1117} | |
|
301 | ] | |
|
302 | }, | |
|
303 | { | |
|
304 | "name": "legend", | |
|
305 | "children": [ | |
|
306 | {"name": "Legend", "size": 20859}, | |
|
307 | {"name": "LegendItem", "size": 4614}, | |
|
308 | {"name": "LegendRange", "size": 10530} | |
|
309 | ] | |
|
310 | }, | |
|
311 | { | |
|
312 | "name": "operator", | |
|
313 | "children": [ | |
|
314 | { | |
|
315 | "name": "distortion", | |
|
316 | "children": [ | |
|
317 | {"name": "BifocalDistortion", "size": 4461}, | |
|
318 | {"name": "Distortion", "size": 6314}, | |
|
319 | {"name": "FisheyeDistortion", "size": 3444} | |
|
320 | ] | |
|
321 | }, | |
|
322 | { | |
|
323 | "name": "encoder", | |
|
324 | "children": [ | |
|
325 | {"name": "ColorEncoder", "size": 3179}, | |
|
326 | {"name": "Encoder", "size": 4060}, | |
|
327 | {"name": "PropertyEncoder", "size": 4138}, | |
|
328 | {"name": "ShapeEncoder", "size": 1690}, | |
|
329 | {"name": "SizeEncoder", "size": 1830} | |
|
330 | ] | |
|
331 | }, | |
|
332 | { | |
|
333 | "name": "filter", | |
|
334 | "children": [ | |
|
335 | {"name": "FisheyeTreeFilter", "size": 5219}, | |
|
336 | {"name": "GraphDistanceFilter", "size": 3165}, | |
|
337 | {"name": "VisibilityFilter", "size": 3509} | |
|
338 | ] | |
|
339 | }, | |
|
340 | {"name": "IOperator", "size": 1286}, | |
|
341 | { | |
|
342 | "name": "label", | |
|
343 | "children": [ | |
|
344 | {"name": "Labeler", "size": 9956}, | |
|
345 | {"name": "RadialLabeler", "size": 3899}, | |
|
346 | {"name": "StackedAreaLabeler", "size": 3202} | |
|
347 | ] | |
|
348 | }, | |
|
349 | { | |
|
350 | "name": "layout", | |
|
351 | "children": [ | |
|
352 | {"name": "AxisLayout", "size": 6725}, | |
|
353 | {"name": "BundledEdgeRouter", "size": 3727}, | |
|
354 | {"name": "CircleLayout", "size": 9317}, | |
|
355 | {"name": "CirclePackingLayout", "size": 12003}, | |
|
356 | {"name": "DendrogramLayout", "size": 4853}, | |
|
357 | {"name": "ForceDirectedLayout", "size": 8411}, | |
|
358 | {"name": "IcicleTreeLayout", "size": 4864}, | |
|
359 | {"name": "IndentedTreeLayout", "size": 3174}, | |
|
360 | {"name": "Layout", "size": 7881}, | |
|
361 | {"name": "NodeLinkTreeLayout", "size": 12870}, | |
|
362 | {"name": "PieLayout", "size": 2728}, | |
|
363 | {"name": "RadialTreeLayout", "size": 12348}, | |
|
364 | {"name": "RandomLayout", "size": 870}, | |
|
365 | {"name": "StackedAreaLayout", "size": 9121}, | |
|
366 | {"name": "TreeMapLayout", "size": 9191} | |
|
367 | ] | |
|
368 | }, | |
|
369 | {"name": "Operator", "size": 2490}, | |
|
370 | {"name": "OperatorList", "size": 5248}, | |
|
371 | {"name": "OperatorSequence", "size": 4190}, | |
|
372 | {"name": "OperatorSwitch", "size": 2581}, | |
|
373 | {"name": "SortOperator", "size": 2023} | |
|
374 | ] | |
|
375 | }, | |
|
376 | {"name": "Visualization", "size": 16540} | |
|
377 | ] | |
|
378 | } | |
|
379 | ] | |
|
380 | } |
|
1 | NO CONTENT: modified file | |
The requested commit or file is too big and content was truncated. Show full diff |
General Comments 0
You need to be logged in to leave comments.
Login now