Show More
The requested changes are too big and content was truncated. Show full diff
@@ -0,0 +1,146 b'' | |||||
|
1 | { | |||
|
2 | "metadata": { | |||
|
3 | "name": "Progress Bars" | |||
|
4 | }, | |||
|
5 | "nbformat": 3, | |||
|
6 | "nbformat_minor": 0, | |||
|
7 | "worksheets": [ | |||
|
8 | { | |||
|
9 | "cells": [ | |||
|
10 | { | |||
|
11 | "cell_type": "heading", | |||
|
12 | "level": 1, | |||
|
13 | "metadata": {}, | |||
|
14 | "source": [ | |||
|
15 | "Two Examples of Progress Bars" | |||
|
16 | ] | |||
|
17 | }, | |||
|
18 | { | |||
|
19 | "cell_type": "heading", | |||
|
20 | "level": 2, | |||
|
21 | "metadata": {}, | |||
|
22 | "source": [ | |||
|
23 | "A Javascript Progress Bar" | |||
|
24 | ] | |||
|
25 | }, | |||
|
26 | { | |||
|
27 | "cell_type": "markdown", | |||
|
28 | "metadata": {}, | |||
|
29 | "source": [ | |||
|
30 | "Here is a simple progress bar using HTML/Javascript:" | |||
|
31 | ] | |||
|
32 | }, | |||
|
33 | { | |||
|
34 | "cell_type": "code", | |||
|
35 | "collapsed": false, | |||
|
36 | "input": [ | |||
|
37 | "import uuid\n", | |||
|
38 | "import time\n", | |||
|
39 | "from IPython.display import HTML, Javascript, display\n", | |||
|
40 | "\n", | |||
|
41 | "divid = str(uuid.uuid4())\n", | |||
|
42 | "\n", | |||
|
43 | "pb = HTML(\n", | |||
|
44 | "\"\"\"\n", | |||
|
45 | "<div style=\"border: 1px solid black; width:500px\">\n", | |||
|
46 | " <div id=\"%s\" style=\"background-color:blue; width:0%%\"> </div>\n", | |||
|
47 | "</div> \n", | |||
|
48 | "\"\"\" % divid)\n", | |||
|
49 | "display(pb)\n", | |||
|
50 | "for i in range(1,101):\n", | |||
|
51 | " time.sleep(0.1)\n", | |||
|
52 | " \n", | |||
|
53 | " display(Javascript(\"$('div#%s').width('%i%%')\" % (divid, i)))" | |||
|
54 | ], | |||
|
55 | "language": "python", | |||
|
56 | "metadata": {}, | |||
|
57 | "outputs": [], | |||
|
58 | "prompt_number": 2 | |||
|
59 | }, | |||
|
60 | { | |||
|
61 | "cell_type": "markdown", | |||
|
62 | "metadata": {}, | |||
|
63 | "source": [ | |||
|
64 | "The above simply makes a div that is a box, and a blue div inside it with a unique ID \n", | |||
|
65 | "(so that the javascript won't collide with other similar progress bars on the same page). \n", | |||
|
66 | "\n", | |||
|
67 | "Then, at every progress point, we run a simple jQuery call to resize the blue box to\n", | |||
|
68 | "the appropriate fraction of the width of its containing box, and voil\u00e0 a nice\n", | |||
|
69 | "HTML/Javascript progress bar!" | |||
|
70 | ] | |||
|
71 | }, | |||
|
72 | { | |||
|
73 | "cell_type": "heading", | |||
|
74 | "level": 1, | |||
|
75 | "metadata": {}, | |||
|
76 | "source": [ | |||
|
77 | "ProgressBar class" | |||
|
78 | ] | |||
|
79 | }, | |||
|
80 | { | |||
|
81 | "cell_type": "markdown", | |||
|
82 | "metadata": {}, | |||
|
83 | "source": [ | |||
|
84 | "And finally, here is a progress bar *class* extracted from [PyMC](http://code.google.com/p/pymc/), which will work in regular Python as well as in the IPython Notebook" | |||
|
85 | ] | |||
|
86 | }, | |||
|
87 | { | |||
|
88 | "cell_type": "code", | |||
|
89 | "collapsed": true, | |||
|
90 | "input": [ | |||
|
91 | "import sys, time\n", | |||
|
92 | "\n", | |||
|
93 | "class ProgressBar:\n", | |||
|
94 | " def __init__(self, iterations):\n", | |||
|
95 | " self.iterations = iterations\n", | |||
|
96 | " self.prog_bar = '[]'\n", | |||
|
97 | " self.fill_char = '*'\n", | |||
|
98 | " self.width = 50\n", | |||
|
99 | " self.__update_amount(0)\n", | |||
|
100 | "\n", | |||
|
101 | " def animate(self, iter):\n", | |||
|
102 | " print '\\r', self,\n", | |||
|
103 | " sys.stdout.flush()\n", | |||
|
104 | " self.update_iteration(iter + 1)\n", | |||
|
105 | "\n", | |||
|
106 | " def update_iteration(self, elapsed_iter):\n", | |||
|
107 | " self.__update_amount((elapsed_iter / float(self.iterations)) * 100.0)\n", | |||
|
108 | " self.prog_bar += ' %d of %s complete' % (elapsed_iter, self.iterations)\n", | |||
|
109 | "\n", | |||
|
110 | " def __update_amount(self, new_amount):\n", | |||
|
111 | " percent_done = int(round((new_amount / 100.0) * 100.0))\n", | |||
|
112 | " all_full = self.width - 2\n", | |||
|
113 | " num_hashes = int(round((percent_done / 100.0) * all_full))\n", | |||
|
114 | " self.prog_bar = '[' + self.fill_char * num_hashes + ' ' * (all_full - num_hashes) + ']'\n", | |||
|
115 | " pct_place = (len(self.prog_bar) // 2) - len(str(percent_done))\n", | |||
|
116 | " pct_string = '%d%%' % percent_done\n", | |||
|
117 | " self.prog_bar = self.prog_bar[0:pct_place] + \\\n", | |||
|
118 | " (pct_string + self.prog_bar[pct_place + len(pct_string):])\n", | |||
|
119 | "\n", | |||
|
120 | " def __str__(self):\n", | |||
|
121 | " return str(self.prog_bar)" | |||
|
122 | ], | |||
|
123 | "language": "python", | |||
|
124 | "metadata": {}, | |||
|
125 | "outputs": [], | |||
|
126 | "prompt_number": 3 | |||
|
127 | }, | |||
|
128 | { | |||
|
129 | "cell_type": "code", | |||
|
130 | "collapsed": false, | |||
|
131 | "input": [ | |||
|
132 | "p = ProgressBar(1000)\n", | |||
|
133 | "for i in range(1001):\n", | |||
|
134 | " time.sleep(0.002)\n", | |||
|
135 | " p.animate(i)" | |||
|
136 | ], | |||
|
137 | "language": "python", | |||
|
138 | "metadata": {}, | |||
|
139 | "outputs": [], | |||
|
140 | "prompt_number": 4 | |||
|
141 | } | |||
|
142 | ], | |||
|
143 | "metadata": {} | |||
|
144 | } | |||
|
145 | ] | |||
|
146 | } No newline at end of file |
@@ -12,27 +12,31 b'' | |||||
12 | "level": 1, |
|
12 | "level": 1, | |
13 | "metadata": {}, |
|
13 | "metadata": {}, | |
14 | "source": [ |
|
14 | "source": [ | |
15 |
"Simple animations |
|
15 | "Simple animations Using clear_output" | |
16 | ] |
|
16 | ] | |
17 | }, |
|
17 | }, | |
18 | { |
|
18 | { | |
19 | "cell_type": "markdown", |
|
19 | "cell_type": "markdown", | |
20 | "metadata": {}, |
|
20 | "metadata": {}, | |
21 | "source": [ |
|
21 | "source": [ | |
22 | "Sometimes you want to print progress in-place, but don't want\n", |
|
22 | "Sometimes you want to clear the output area in the middle of a calculation. This can be useful for doing simple animations. In terminals, there is the carriage-return (`'\\r'`) for overwriting a single line, but the notebook frontend does not support this behavior.\n", | |
23 | "to keep growing the output area. In terminals, there is the carriage-return\n", |
|
|||
24 | "(`'\\r'`) for overwriting a single line, but the notebook frontend does not support this\n", |
|
|||
25 | "behavior (yet).\n", |
|
|||
26 | "\n", |
|
23 | "\n", | |
27 | "What the notebook *does* support is explicit `clear_output`, and you can use this to replace previous\n", |
|
24 | "To clear output in the Notebook you can use the `clear_output` function." | |
28 | "output (specifying stdout/stderr or the special IPython display outputs)." |
|
25 | ] | |
|
26 | }, | |||
|
27 | { | |||
|
28 | "cell_type": "heading", | |||
|
29 | "level": 2, | |||
|
30 | "metadata": {}, | |||
|
31 | "source": [ | |||
|
32 | "Simple example" | |||
29 | ] |
|
33 | ] | |
30 | }, |
|
34 | }, | |
31 | { |
|
35 | { | |
32 | "cell_type": "markdown", |
|
36 | "cell_type": "markdown", | |
33 | "metadata": {}, |
|
37 | "metadata": {}, | |
34 | "source": [ |
|
38 | "source": [ | |
35 |
" |
|
39 | "Here we show our progress iterating through a list:" | |
36 | ] |
|
40 | ] | |
37 | }, |
|
41 | }, | |
38 | { |
|
42 | { | |
@@ -44,7 +48,8 b'' | |||||
44 | ], |
|
48 | ], | |
45 | "language": "python", |
|
49 | "language": "python", | |
46 | "metadata": {}, |
|
50 | "metadata": {}, | |
47 | "outputs": [] |
|
51 | "outputs": [], | |
|
52 | "prompt_number": 1 | |||
48 | }, |
|
53 | }, | |
49 | { |
|
54 | { | |
50 | "cell_type": "code", |
|
55 | "cell_type": "code", | |
@@ -59,7 +64,24 b'' | |||||
59 | ], |
|
64 | ], | |
60 | "language": "python", |
|
65 | "language": "python", | |
61 | "metadata": {}, |
|
66 | "metadata": {}, | |
62 |
"outputs": [ |
|
67 | "outputs": [ | |
|
68 | { | |||
|
69 | "output_type": "stream", | |||
|
70 | "stream": "stdout", | |||
|
71 | "text": [ | |||
|
72 | "9\n" | |||
|
73 | ] | |||
|
74 | } | |||
|
75 | ], | |||
|
76 | "prompt_number": 2 | |||
|
77 | }, | |||
|
78 | { | |||
|
79 | "cell_type": "heading", | |||
|
80 | "level": 2, | |||
|
81 | "metadata": {}, | |||
|
82 | "source": [ | |||
|
83 | "AsyncResult.wait_interactive" | |||
|
84 | ] | |||
63 | }, |
|
85 | }, | |
64 | { |
|
86 | { | |
65 | "cell_type": "markdown", |
|
87 | "cell_type": "markdown", | |
@@ -85,15 +107,38 b'' | |||||
85 | ], |
|
107 | ], | |
86 | "language": "python", |
|
108 | "language": "python", | |
87 | "metadata": {}, |
|
109 | "metadata": {}, | |
88 |
"outputs": [ |
|
110 | "outputs": [ | |
|
111 | { | |||
|
112 | "output_type": "stream", | |||
|
113 | "stream": "stdout", | |||
|
114 | "text": [ | |||
|
115 | " 100/100 tasks finished after 30 s" | |||
|
116 | ] | |||
|
117 | }, | |||
|
118 | { | |||
|
119 | "output_type": "stream", | |||
|
120 | "stream": "stdout", | |||
|
121 | "text": [ | |||
|
122 | "\n", | |||
|
123 | "done\n" | |||
|
124 | ] | |||
|
125 | } | |||
|
126 | ], | |||
|
127 | "prompt_number": 3 | |||
|
128 | }, | |||
|
129 | { | |||
|
130 | "cell_type": "heading", | |||
|
131 | "level": 2, | |||
|
132 | "metadata": {}, | |||
|
133 | "source": [ | |||
|
134 | "Matplotlib example" | |||
|
135 | ] | |||
89 | }, |
|
136 | }, | |
90 | { |
|
137 | { | |
91 | "cell_type": "markdown", |
|
138 | "cell_type": "markdown", | |
92 | "metadata": {}, |
|
139 | "metadata": {}, | |
93 | "source": [ |
|
140 | "source": [ | |
94 |
"You can also use `clear_output()` to clear figures and plots. |
|
141 | "You can also use `clear_output()` to clear figures and plots." | |
95 | "\n", |
|
|||
96 | "This time, we need to make sure we are using inline pylab (**requires matplotlib**)" |
|
|||
97 | ] |
|
142 | ] | |
98 | }, |
|
143 | }, | |
99 | { |
|
144 | { | |
@@ -104,7 +149,18 b'' | |||||
104 | ], |
|
149 | ], | |
105 | "language": "python", |
|
150 | "language": "python", | |
106 | "metadata": {}, |
|
151 | "metadata": {}, | |
107 |
"outputs": [ |
|
152 | "outputs": [ | |
|
153 | { | |||
|
154 | "output_type": "stream", | |||
|
155 | "stream": "stdout", | |||
|
156 | "text": [ | |||
|
157 | "\n", | |||
|
158 | "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n", | |||
|
159 | "For more information, type 'help(pylab)'.\n" | |||
|
160 | ] | |||
|
161 | } | |||
|
162 | ], | |||
|
163 | "prompt_number": 4 | |||
108 | }, |
|
164 | }, | |
109 | { |
|
165 | { | |
110 | "cell_type": "code", |
|
166 | "cell_type": "code", | |
@@ -127,130 +183,16 b'' | |||||
127 | ], |
|
183 | ], | |
128 | "language": "python", |
|
184 | "language": "python", | |
129 | "metadata": {}, |
|
185 | "metadata": {}, | |
130 |
"outputs": [ |
|
186 | "outputs": [ | |
131 |
|
|
187 | { | |
132 | { |
|
188 | "output_type": "display_data", | |
133 | "cell_type": "heading", |
|
189 | "png": "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\n", | |
134 |
|
|
190 | "text": [ | |
135 | "metadata": {}, |
|
191 | "<matplotlib.figure.Figure at 0x1082fcbd0>" | |
136 | "source": [ |
|
192 | ] | |
137 | "A Javascript Progress Bar" |
|
193 | } | |
138 | ] |
|
|||
139 | }, |
|
|||
140 | { |
|
|||
141 | "cell_type": "markdown", |
|
|||
142 | "metadata": {}, |
|
|||
143 | "source": [ |
|
|||
144 | "`clear_output()` is still something of a hack, and if you want to do a progress bar in the notebook\n", |
|
|||
145 | "it is better to just use Javascript/HTML if you can.\n", |
|
|||
146 | "\n", |
|
|||
147 | "Here is a simple progress bar using HTML/Javascript:" |
|
|||
148 | ] |
|
|||
149 | }, |
|
|||
150 | { |
|
|||
151 | "cell_type": "code", |
|
|||
152 | "collapsed": false, |
|
|||
153 | "input": [ |
|
|||
154 | "import uuid\n", |
|
|||
155 | "from IPython.display import HTML, Javascript, display\n", |
|
|||
156 | "\n", |
|
|||
157 | "divid = str(uuid.uuid4())\n", |
|
|||
158 | "\n", |
|
|||
159 | "pb = HTML(\n", |
|
|||
160 | "\"\"\"\n", |
|
|||
161 | "<div style=\"border: 1px solid black; width:500px\">\n", |
|
|||
162 | " <div id=\"%s\" style=\"background-color:blue; width:0%%\"> </div>\n", |
|
|||
163 | "</div> \n", |
|
|||
164 | "\"\"\" % divid)\n", |
|
|||
165 | "display(pb)\n", |
|
|||
166 | "for i in range(1,101):\n", |
|
|||
167 | " time.sleep(0.1)\n", |
|
|||
168 | " \n", |
|
|||
169 | " display(Javascript(\"$('div#%s').width('%i%%')\" % (divid, i)))" |
|
|||
170 | ], |
|
|||
171 | "language": "python", |
|
|||
172 | "metadata": {}, |
|
|||
173 | "outputs": [] |
|
|||
174 | }, |
|
|||
175 | { |
|
|||
176 | "cell_type": "markdown", |
|
|||
177 | "metadata": {}, |
|
|||
178 | "source": [ |
|
|||
179 | "The above simply makes a div that is a box, and a blue div inside it with a unique ID \n", |
|
|||
180 | "(so that the javascript won't collide with other similar progress bars on the same page). \n", |
|
|||
181 | "\n", |
|
|||
182 | "Then, at every progress point, we run a simple jQuery call to resize the blue box to\n", |
|
|||
183 | "the appropriate fraction of the width of its containing box, and voil\u00e0 a nice\n", |
|
|||
184 | "HTML/Javascript progress bar!" |
|
|||
185 | ] |
|
|||
186 | }, |
|
|||
187 | { |
|
|||
188 | "cell_type": "heading", |
|
|||
189 | "level": 2, |
|
|||
190 | "metadata": {}, |
|
|||
191 | "source": [ |
|
|||
192 | "ProgressBar class" |
|
|||
193 | ] |
|
|||
194 | }, |
|
|||
195 | { |
|
|||
196 | "cell_type": "markdown", |
|
|||
197 | "metadata": {}, |
|
|||
198 | "source": [ |
|
|||
199 | "And finally, here is a progress bar *class* extracted from [PyMC](http://code.google.com/p/pymc/), which will work in regular Python as well as in the IPython Notebook" |
|
|||
200 | ] |
|
|||
201 | }, |
|
|||
202 | { |
|
|||
203 | "cell_type": "code", |
|
|||
204 | "collapsed": true, |
|
|||
205 | "input": [ |
|
|||
206 | "import sys, time\n", |
|
|||
207 | "\n", |
|
|||
208 | "class ProgressBar:\n", |
|
|||
209 | " def __init__(self, iterations):\n", |
|
|||
210 | " self.iterations = iterations\n", |
|
|||
211 | " self.prog_bar = '[]'\n", |
|
|||
212 | " self.fill_char = '*'\n", |
|
|||
213 | " self.width = 50\n", |
|
|||
214 | " self.__update_amount(0)\n", |
|
|||
215 | "\n", |
|
|||
216 | " def animate(self, iter):\n", |
|
|||
217 | " print '\\r', self,\n", |
|
|||
218 | " sys.stdout.flush()\n", |
|
|||
219 | " self.update_iteration(iter + 1)\n", |
|
|||
220 | "\n", |
|
|||
221 | " def update_iteration(self, elapsed_iter):\n", |
|
|||
222 | " self.__update_amount((elapsed_iter / float(self.iterations)) * 100.0)\n", |
|
|||
223 | " self.prog_bar += ' %d of %s complete' % (elapsed_iter, self.iterations)\n", |
|
|||
224 | "\n", |
|
|||
225 | " def __update_amount(self, new_amount):\n", |
|
|||
226 | " percent_done = int(round((new_amount / 100.0) * 100.0))\n", |
|
|||
227 | " all_full = self.width - 2\n", |
|
|||
228 | " num_hashes = int(round((percent_done / 100.0) * all_full))\n", |
|
|||
229 | " self.prog_bar = '[' + self.fill_char * num_hashes + ' ' * (all_full - num_hashes) + ']'\n", |
|
|||
230 | " pct_place = (len(self.prog_bar) // 2) - len(str(percent_done))\n", |
|
|||
231 | " pct_string = '%d%%' % percent_done\n", |
|
|||
232 | " self.prog_bar = self.prog_bar[0:pct_place] + \\\n", |
|
|||
233 | " (pct_string + self.prog_bar[pct_place + len(pct_string):])\n", |
|
|||
234 | "\n", |
|
|||
235 | " def __str__(self):\n", |
|
|||
236 | " return str(self.prog_bar)" |
|
|||
237 | ], |
|
194 | ], | |
238 | "language": "python", |
|
195 | "prompt_number": 5 | |
239 | "metadata": {}, |
|
|||
240 | "outputs": [] |
|
|||
241 | }, |
|
|||
242 | { |
|
|||
243 | "cell_type": "code", |
|
|||
244 | "collapsed": false, |
|
|||
245 | "input": [ |
|
|||
246 | "p = ProgressBar(1000)\n", |
|
|||
247 | "for i in range(1001):\n", |
|
|||
248 | " time.sleep(0.002)\n", |
|
|||
249 | " p.animate(i)" |
|
|||
250 | ], |
|
|||
251 | "language": "python", |
|
|||
252 | "metadata": {}, |
|
|||
253 | "outputs": [] |
|
|||
254 | } |
|
196 | } | |
255 | ], |
|
197 | ], | |
256 | "metadata": {} |
|
198 | "metadata": {} |
@@ -12,7 +12,7 b'' | |||||
12 | "level": 1, |
|
12 | "level": 1, | |
13 | "metadata": {}, |
|
13 | "metadata": {}, | |
14 | "source": [ |
|
14 | "source": [ | |
15 |
" |
|
15 | "Defining Custom Display Logic for Your Own Objects" | |
16 | ] |
|
16 | ] | |
17 | }, |
|
17 | }, | |
18 | { |
|
18 | { | |
@@ -22,12 +22,7 b'' | |||||
22 | "IPython extends the idea of the ``__repr__`` method in Python to support multiple representations for a given\n", |
|
22 | "IPython extends the idea of the ``__repr__`` method in Python to support multiple representations for a given\n", | |
23 | "object, which clients can use to display the object according to their capabilities. An object can return multiple\n", |
|
23 | "object, which clients can use to display the object according to their capabilities. An object can return multiple\n", | |
24 | "representations of itself by implementing special methods, and you can also define at runtime custom display \n", |
|
24 | "representations of itself by implementing special methods, and you can also define at runtime custom display \n", | |
25 |
"functions for existing objects whose methods you can't or won't modify. In this notebook, we show how both approaches work. |
|
25 | "functions for existing objects whose methods you can't or won't modify. In this notebook, we show how both approaches work." | |
26 | "\n", |
|
|||
27 | "<br/>\n", |
|
|||
28 | "**Note:** this notebook has had all output cells stripped out so we can include it in the IPython documentation with \n", |
|
|||
29 | "a minimal file size. You'll need to manually execute the cells to see the output (you can run all of them with the \n", |
|
|||
30 | "\"Run All\" button, or execute each individually)." |
|
|||
31 | ] |
|
26 | ] | |
32 | }, |
|
27 | }, | |
33 | { |
|
28 | { |
@@ -12,7 +12,7 b'' | |||||
12 | "level": 1, |
|
12 | "level": 1, | |
13 | "metadata": {}, |
|
13 | "metadata": {}, | |
14 | "source": [ |
|
14 | "source": [ | |
15 |
"Cython Magic Functions |
|
15 | "Cython Magic Functions" | |
16 | ] |
|
16 | ] | |
17 | }, |
|
17 | }, | |
18 | { |
|
18 | { | |
@@ -229,6 +229,14 b'' | |||||
229 | "prompt_number": 8 |
|
229 | "prompt_number": 8 | |
230 | }, |
|
230 | }, | |
231 | { |
|
231 | { | |
|
232 | "cell_type": "heading", | |||
|
233 | "level": 2, | |||
|
234 | "metadata": {}, | |||
|
235 | "source": [ | |||
|
236 | "External libraries" | |||
|
237 | ] | |||
|
238 | }, | |||
|
239 | { | |||
232 | "cell_type": "markdown", |
|
240 | "cell_type": "markdown", | |
233 | "metadata": {}, |
|
241 | "metadata": {}, | |
234 | "source": [ |
|
242 | "source": [ |
@@ -19,7 +19,7 b'' | |||||
19 | "cell_type": "markdown", |
|
19 | "cell_type": "markdown", | |
20 | "metadata": {}, |
|
20 | "metadata": {}, | |
21 | "source": [ |
|
21 | "source": [ | |
22 |
"IPython has an API that allows IPython Engines to publish data back to the Client. This |
|
22 | "IPython has an API that allows IPython Engines to publish data back to the Client. This Notebook shows how this API works." | |
23 | ] |
|
23 | ] | |
24 | }, |
|
24 | }, | |
25 | { |
|
25 | { |
@@ -12,7 +12,7 b'' | |||||
12 | "level": 1, |
|
12 | "level": 1, | |
13 | "metadata": {}, |
|
13 | "metadata": {}, | |
14 | "source": [ |
|
14 | "source": [ | |
15 |
" |
|
15 | "Using Octave Inside IPython" | |
16 | ] |
|
16 | ] | |
17 | }, |
|
17 | }, | |
18 | { |
|
18 | { |
@@ -168,7 +168,7 b'' | |||||
168 | "level": 2, |
|
168 | "level": 2, | |
169 | "metadata": {}, |
|
169 | "metadata": {}, | |
170 | "source": [ |
|
170 | "source": [ | |
171 |
"LaTeX |
|
171 | "LaTeX equations" | |
172 | ] |
|
172 | ] | |
173 | }, |
|
173 | }, | |
174 | { |
|
174 | { | |
@@ -210,6 +210,59 b'' | |||||
210 | "</tr>\n", |
|
210 | "</tr>\n", | |
211 | "</table>" |
|
211 | "</table>" | |
212 | ] |
|
212 | ] | |
|
213 | }, | |||
|
214 | { | |||
|
215 | "cell_type": "heading", | |||
|
216 | "level": 2, | |||
|
217 | "metadata": {}, | |||
|
218 | "source": [ | |||
|
219 | "Local files" | |||
|
220 | ] | |||
|
221 | }, | |||
|
222 | { | |||
|
223 | "cell_type": "markdown", | |||
|
224 | "metadata": {}, | |||
|
225 | "source": [ | |||
|
226 | "If you have local files in your Notebook directory, you can refer to these files in Markdown cells via relative URLs that are prefixed with `files/`:\n", | |||
|
227 | "\n", | |||
|
228 | " files/[subdirectory/]<filename>\n", | |||
|
229 | "\n", | |||
|
230 | "For example, in the example Notebook folder, we have the Python logo:\n", | |||
|
231 | "\n", | |||
|
232 | " <img src=\"files/python-logo.svg\" />\n", | |||
|
233 | "\n", | |||
|
234 | "<img src=\"/files/python-logo.svg\" />\n", | |||
|
235 | "\n", | |||
|
236 | "and a video with the HTML5 video tag:\n", | |||
|
237 | "\n", | |||
|
238 | " <video controls src=\"files/animation.m4v\" />\n", | |||
|
239 | "\n", | |||
|
240 | "<video controls src=\"/files/animation.m4v\" />\n", | |||
|
241 | "\n", | |||
|
242 | "These do not embed the data into the notebook file, and require that the files exist when you are viewing the notebook." | |||
|
243 | ] | |||
|
244 | }, | |||
|
245 | { | |||
|
246 | "cell_type": "heading", | |||
|
247 | "level": 3, | |||
|
248 | "metadata": {}, | |||
|
249 | "source": [ | |||
|
250 | "Security of local files" | |||
|
251 | ] | |||
|
252 | }, | |||
|
253 | { | |||
|
254 | "cell_type": "markdown", | |||
|
255 | "metadata": {}, | |||
|
256 | "source": [ | |||
|
257 | "Note that this means that the IPython notebook server also acts as a generic file server\n", | |||
|
258 | "for files inside the same tree as your notebooks. Access is not granted outside the\n", | |||
|
259 | "notebook folder so you have strict control over what files are visible, but for this\n", | |||
|
260 | "reason it is highly recommended that you do not run the notebook server with a notebook\n", | |||
|
261 | "directory at a high level in your filesystem (e.g. your home directory).\n", | |||
|
262 | "\n", | |||
|
263 | "When you run the notebook in a password-protected manner, local file access is restricted\n", | |||
|
264 | "to authenticated users unless read-only views are active." | |||
|
265 | ] | |||
213 | } |
|
266 | } | |
214 | ], |
|
267 | ], | |
215 | "metadata": {} |
|
268 | "metadata": {} |
@@ -8,22 +8,127 b'' | |||||
8 | { |
|
8 | { | |
9 | "cells": [ |
|
9 | "cells": [ | |
10 | { |
|
10 | { | |
|
11 | "cell_type": "heading", | |||
|
12 | "level": 1, | |||
|
13 | "metadata": {}, | |||
|
14 | "source": [ | |||
|
15 | "IPython's Rich Display System" | |||
|
16 | ] | |||
|
17 | }, | |||
|
18 | { | |||
|
19 | "cell_type": "markdown", | |||
|
20 | "metadata": {}, | |||
|
21 | "source": [ | |||
|
22 | "In Python, objects can declare their textual representation using the `__repr__` and `__str__` methods. IPython expands on this idea and allows objects to declare other, richer representations including:\n", | |||
|
23 | "\n", | |||
|
24 | "* HTML\n", | |||
|
25 | "* JSON\n", | |||
|
26 | "* Images = PNG/JPEG\n", | |||
|
27 | "* SVG\n", | |||
|
28 | "* LaTeX\n", | |||
|
29 | "\n", | |||
|
30 | "A single object can declare some or all of these representations; all are handled by IPython's *display system*. This Notebook shows how you can use this display system to incorporate a broad range of content into your Notebooks." | |||
|
31 | ] | |||
|
32 | }, | |||
|
33 | { | |||
|
34 | "cell_type": "heading", | |||
|
35 | "level": 2, | |||
|
36 | "metadata": {}, | |||
|
37 | "source": [ | |||
|
38 | "Basic display imports" | |||
|
39 | ] | |||
|
40 | }, | |||
|
41 | { | |||
|
42 | "cell_type": "markdown", | |||
|
43 | "metadata": {}, | |||
|
44 | "source": [ | |||
|
45 | "The `display` function is a general purpose tool for displaying different representations of objects. Think of it as `print` for these rich representations." | |||
|
46 | ] | |||
|
47 | }, | |||
|
48 | { | |||
|
49 | "cell_type": "code", | |||
|
50 | "collapsed": false, | |||
|
51 | "input": [ | |||
|
52 | "from IPython.display import display" | |||
|
53 | ], | |||
|
54 | "language": "python", | |||
|
55 | "metadata": {}, | |||
|
56 | "outputs": [], | |||
|
57 | "prompt_number": 8 | |||
|
58 | }, | |||
|
59 | { | |||
11 | "cell_type": "markdown", |
|
60 | "cell_type": "markdown", | |
12 | "metadata": {}, |
|
61 | "metadata": {}, | |
13 | "source": [ |
|
62 | "source": [ | |
14 | "## Rich displays: include anyting a browser can show\n", |
|
63 | "A few points:\n", | |
15 | "\n", |
|
64 | "\n", | |
16 | "Note that we have an actual protocol for this, see the `display_protocol` notebook for further details.\n", |
|
65 | "* Calling `display` on an object will send **all** possible representations to the Notebook.\n", | |
|
66 | "* These representations are stored in the Notebook document.\n", | |||
|
67 | "* In general the Notebook will use the richest available representation.\n", | |||
17 | "\n", |
|
68 | "\n", | |
18 | "### Images" |
|
69 | "If you want to display a particular representationa, there are specific functions for that:" | |
|
70 | ] | |||
|
71 | }, | |||
|
72 | { | |||
|
73 | "cell_type": "code", | |||
|
74 | "collapsed": false, | |||
|
75 | "input": [ | |||
|
76 | "from IPython.display import display_pretty, display_html, display_jpeg, display_png, display_json, display_latex, display_svg" | |||
|
77 | ], | |||
|
78 | "language": "python", | |||
|
79 | "metadata": {}, | |||
|
80 | "outputs": [], | |||
|
81 | "prompt_number": 11 | |||
|
82 | }, | |||
|
83 | { | |||
|
84 | "cell_type": "heading", | |||
|
85 | "level": 2, | |||
|
86 | "metadata": {}, | |||
|
87 | "source": [ | |||
|
88 | "Images" | |||
|
89 | ] | |||
|
90 | }, | |||
|
91 | { | |||
|
92 | "cell_type": "markdown", | |||
|
93 | "metadata": {}, | |||
|
94 | "source": [ | |||
|
95 | "To work with images (JPEG, PNG) use the `Image` class." | |||
19 | ] |
|
96 | ] | |
20 | }, |
|
97 | }, | |
21 | { |
|
98 | { | |
22 | "cell_type": "code", |
|
99 | "cell_type": "code", | |
23 | "collapsed": false, |
|
100 | "collapsed": false, | |
24 | "input": [ |
|
101 | "input": [ | |
25 |
"from IPython.display import Image |
|
102 | "from IPython.display import Image" | |
26 | "Image(filename='../../source/_static/logo.png')" |
|
103 | ], | |
|
104 | "language": "python", | |||
|
105 | "metadata": {}, | |||
|
106 | "outputs": [], | |||
|
107 | "prompt_number": 2 | |||
|
108 | }, | |||
|
109 | { | |||
|
110 | "cell_type": "code", | |||
|
111 | "collapsed": false, | |||
|
112 | "input": [ | |||
|
113 | "i = Image(filename='../../docs/source/_static/logo.png')" | |||
|
114 | ], | |||
|
115 | "language": "python", | |||
|
116 | "metadata": {}, | |||
|
117 | "outputs": [], | |||
|
118 | "prompt_number": 5 | |||
|
119 | }, | |||
|
120 | { | |||
|
121 | "cell_type": "markdown", | |||
|
122 | "metadata": {}, | |||
|
123 | "source": [ | |||
|
124 | "Returning an `Image` object from an expression will automatically display it:" | |||
|
125 | ] | |||
|
126 | }, | |||
|
127 | { | |||
|
128 | "cell_type": "code", | |||
|
129 | "collapsed": false, | |||
|
130 | "input": [ | |||
|
131 | "i" | |||
27 | ], |
|
132 | ], | |
28 | "language": "python", |
|
133 | "language": "python", | |
29 | "metadata": {}, |
|
134 | "metadata": {}, | |
@@ -31,13 +136,39 b'' | |||||
31 | { |
|
136 | { | |
32 | "output_type": "pyout", |
|
137 | "output_type": "pyout", | |
33 | "png": "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\n", |
|
138 | "png": "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\n", | |
34 |
"prompt_number": |
|
139 | "prompt_number": 6, | |
35 | "text": [ |
|
140 | "text": [ | |
36 |
"<IPython.core.display.Image at 0x10 |
|
141 | "<IPython.core.display.Image at 0x107ea26d0>" | |
37 | ] |
|
142 | ] | |
38 | } |
|
143 | } | |
39 | ], |
|
144 | ], | |
40 |
"prompt_number": |
|
145 | "prompt_number": 6 | |
|
146 | }, | |||
|
147 | { | |||
|
148 | "cell_type": "markdown", | |||
|
149 | "metadata": {}, | |||
|
150 | "source": [ | |||
|
151 | "Or you can pass it to `display`:" | |||
|
152 | ] | |||
|
153 | }, | |||
|
154 | { | |||
|
155 | "cell_type": "code", | |||
|
156 | "collapsed": false, | |||
|
157 | "input": [ | |||
|
158 | "display(i)" | |||
|
159 | ], | |||
|
160 | "language": "python", | |||
|
161 | "metadata": {}, | |||
|
162 | "outputs": [ | |||
|
163 | { | |||
|
164 | "output_type": "display_data", | |||
|
165 | "png": "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\n", | |||
|
166 | "text": [ | |||
|
167 | "<IPython.core.display.Image at 0x107ea26d0>" | |||
|
168 | ] | |||
|
169 | } | |||
|
170 | ], | |||
|
171 | "prompt_number": 9 | |||
41 | }, |
|
172 | }, | |
42 | { |
|
173 | { | |
43 | "cell_type": "markdown", |
|
174 | "cell_type": "markdown", | |
@@ -159,19 +290,18 b'' | |||||
159 | "prompt_number": 3 |
|
290 | "prompt_number": 3 | |
160 | }, |
|
291 | }, | |
161 | { |
|
292 | { | |
162 |
"cell_type": " |
|
293 | "cell_type": "heading", | |
|
294 | "level": 3, | |||
163 | "metadata": {}, |
|
295 | "metadata": {}, | |
164 | "source": [ |
|
296 | "source": [ | |
165 |
" |
|
297 | "Embedded vs Non-embedded Images" | |
166 | ] |
|
298 | ] | |
167 | }, |
|
299 | }, | |
168 | { |
|
300 | { | |
169 | "cell_type": "markdown", |
|
301 | "cell_type": "markdown", | |
170 | "metadata": {}, |
|
302 | "metadata": {}, | |
171 | "source": [ |
|
303 | "source": [ | |
172 | "As of IPython 0.13, images are embedded by default for compatibility with QtConsole, and the ability to still be displayed offline.\n", |
|
304 | "By default, image data is embedded in the Notebook document so that the images can be viewed offline. However it is also possible to tell the `Image` class to only store a *link* to the image. Let's see how this works using a webcam at Berkeley." | |
173 | "\n", |
|
|||
174 | "Let's look at the differences:" |
|
|||
175 | ] |
|
305 | ] | |
176 | }, |
|
306 | }, | |
177 | { |
|
307 | { | |
@@ -196,8 +326,7 b'' | |||||
196 | "cell_type": "markdown", |
|
326 | "cell_type": "markdown", | |
197 | "metadata": {}, |
|
327 | "metadata": {}, | |
198 | "source": [ |
|
328 | "source": [ | |
199 | "Today's image from a webcam at Berkeley, (at the time I created this notebook). This should also work in the Qtconsole.\n", |
|
329 | "Here is the embedded version. Note that this image was pulled from the webcam when this code cell was originally run and stored in the Notebook. Unless we rerun this cell, this is not todays image." | |
200 | "Drawback is that the saved notebook will be larger, but the image will still be present offline." |
|
|||
201 | ] |
|
330 | ] | |
202 | }, |
|
331 | }, | |
203 | { |
|
332 | { | |
@@ -224,8 +353,7 b'' | |||||
224 | "cell_type": "markdown", |
|
353 | "cell_type": "markdown", | |
225 | "metadata": {}, |
|
354 | "metadata": {}, | |
226 | "source": [ |
|
355 | "source": [ | |
227 |
" |
|
356 | "Here is today's image from same webcam at Berkeley, (refreshed every minutes, if you reload the notebook), visible only with an active internet connection, that should be different from the previous one. Notebooks saved with this kind of image will be lighter and always reflect the current version of the source, but the image won't display offline." | |
228 | "Notebook saved with this kind of image will be lighter and always reflect the current version of the source, but the image won't display offline." |
|
|||
229 | ] |
|
357 | ] | |
230 | }, |
|
358 | }, | |
231 | { |
|
359 | { | |
@@ -254,14 +382,15 b'' | |||||
254 | "cell_type": "markdown", |
|
382 | "cell_type": "markdown", | |
255 | "metadata": {}, |
|
383 | "metadata": {}, | |
256 | "source": [ |
|
384 | "source": [ | |
257 |
"Of course, if you re-run th |
|
385 | "Of course, if you re-run this Notebook, the two images will be the same again." | |
258 | ] |
|
386 | ] | |
259 | }, |
|
387 | }, | |
260 | { |
|
388 | { | |
261 |
"cell_type": " |
|
389 | "cell_type": "heading", | |
|
390 | "level": 2, | |||
262 | "metadata": {}, |
|
391 | "metadata": {}, | |
263 | "source": [ |
|
392 | "source": [ | |
264 |
" |
|
393 | "Video" | |
265 | ] |
|
394 | ] | |
266 | }, |
|
395 | }, | |
267 | { |
|
396 | { | |
@@ -557,6 +686,21 b'' | |||||
557 | "prompt_number": 8 |
|
686 | "prompt_number": 8 | |
558 | }, |
|
687 | }, | |
559 | { |
|
688 | { | |
|
689 | "cell_type": "heading", | |||
|
690 | "level": 2, | |||
|
691 | "metadata": {}, | |||
|
692 | "source": [ | |||
|
693 | "HTML" | |||
|
694 | ] | |||
|
695 | }, | |||
|
696 | { | |||
|
697 | "cell_type": "markdown", | |||
|
698 | "metadata": {}, | |||
|
699 | "source": [ | |||
|
700 | "Python objects can declare HTML representations that will be displayed in the Notebook. If you have some HTML you want to display, simply use the `HTML` class." | |||
|
701 | ] | |||
|
702 | }, | |||
|
703 | { | |||
560 | "cell_type": "markdown", |
|
704 | "cell_type": "markdown", | |
561 | "metadata": {}, |
|
705 | "metadata": {}, | |
562 | "source": [ |
|
706 | "source": [ | |
@@ -589,18 +733,19 b'' | |||||
589 | "prompt_number": 9 |
|
733 | "prompt_number": 9 | |
590 | }, |
|
734 | }, | |
591 | { |
|
735 | { | |
|
736 | "cell_type": "heading", | |||
|
737 | "level": 2, | |||
|
738 | "metadata": {}, | |||
|
739 | "source": [ | |||
|
740 | "LaTeX" | |||
|
741 | ] | |||
|
742 | }, | |||
|
743 | { | |||
592 | "cell_type": "markdown", |
|
744 | "cell_type": "markdown", | |
593 | "metadata": {}, |
|
745 | "metadata": {}, | |
594 | "source": [ |
|
746 | "source": [ | |
595 | "### Mathematics\n", |
|
|||
596 | "\n", |
|
|||
597 | "And we also support the display of mathematical expressions typeset in LaTeX, which is rendered\n", |
|
747 | "And we also support the display of mathematical expressions typeset in LaTeX, which is rendered\n", | |
598 |
"in the browser thanks to the [MathJax library](http://mathjax.org). |
|
748 | "in the browser thanks to the [MathJax library](http://mathjax.org)." | |
599 | "\n", |
|
|||
600 | "Note that this is *different* from the above examples. Above we were typing mathematical expressions\n", |
|
|||
601 | "in Markdown cells (along with normal text) and letting the browser render them; now we are displaying\n", |
|
|||
602 | "the output of a Python computation as a LaTeX expression wrapped by the `Math()` object so the browser\n", |
|
|||
603 | "renders it. The `Math` object will add the needed LaTeX delimiters (`$$`) if they are not provided:" |
|
|||
604 | ] |
|
749 | ] | |
605 | }, |
|
750 | }, | |
606 | { |
|
751 | { |
@@ -12,7 +12,14 b'' | |||||
12 | "level": 1, |
|
12 | "level": 1, | |
13 | "metadata": {}, |
|
13 | "metadata": {}, | |
14 | "source": [ |
|
14 | "source": [ | |
15 | "Rmagic Functions Extension" |
|
15 | "Using R Within the IPython Notebok" | |
|
16 | ] | |||
|
17 | }, | |||
|
18 | { | |||
|
19 | "cell_type": "markdown", | |||
|
20 | "metadata": {}, | |||
|
21 | "source": [ | |||
|
22 | "Using the `rmagic` extension, users can run R code from within the IPython Notebook. This example Notebook demonstrates this capability. " | |||
16 | ] |
|
23 | ] | |
17 | }, |
|
24 | }, | |
18 | { |
|
25 | { |
@@ -37,6 +37,14 b'' | |||||
37 | "prompt_number": 1 |
|
37 | "prompt_number": 1 | |
38 | }, |
|
38 | }, | |
39 | { |
|
39 | { | |
|
40 | "cell_type": "heading", | |||
|
41 | "level": 2, | |||
|
42 | "metadata": {}, | |||
|
43 | "source": [ | |||
|
44 | "Basic usage" | |||
|
45 | ] | |||
|
46 | }, | |||
|
47 | { | |||
40 | "cell_type": "markdown", |
|
48 | "cell_type": "markdown", | |
41 | "metadata": {}, |
|
49 | "metadata": {}, | |
42 | "source": [ |
|
50 | "source": [ |
@@ -8,12 +8,17 b'' | |||||
8 | { |
|
8 | { | |
9 | "cells": [ |
|
9 | "cells": [ | |
10 | { |
|
10 | { | |
|
11 | "cell_type": "heading", | |||
|
12 | "level": 1, | |||
|
13 | "metadata": {}, | |||
|
14 | "source": [ | |||
|
15 | "Basic Numerical Integration: the Trapezoid Rule" | |||
|
16 | ] | |||
|
17 | }, | |||
|
18 | { | |||
11 | "cell_type": "markdown", |
|
19 | "cell_type": "markdown", | |
12 | "metadata": {}, |
|
20 | "metadata": {}, | |
13 | "source": [ |
|
21 | "source": [ | |
14 | "Basic numerical integration: the trapezoid rule\n", |
|
|||
15 | "===============================================\n", |
|
|||
16 | "\n", |
|
|||
17 | "A simple illustration of the trapezoid rule for definite integration:\n", |
|
22 | "A simple illustration of the trapezoid rule for definite integration:\n", | |
18 | "\n", |
|
23 | "\n", | |
19 | "$$\n", |
|
24 | "$$\n", | |
@@ -134,14 +139,6 b'' | |||||
134 | } |
|
139 | } | |
135 | ], |
|
140 | ], | |
136 | "prompt_number": 5 |
|
141 | "prompt_number": 5 | |
137 | }, |
|
|||
138 | { |
|
|||
139 | "cell_type": "code", |
|
|||
140 | "collapsed": true, |
|
|||
141 | "input": [], |
|
|||
142 | "language": "python", |
|
|||
143 | "metadata": {}, |
|
|||
144 | "outputs": [] |
|
|||
145 | } |
|
142 | } | |
146 | ], |
|
143 | ], | |
147 | "metadata": {} |
|
144 | "metadata": {} |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now