##// END OF EJS Templates
`IPython.zmq` --> `IPython.kernel.zmq` throughout docs and examples
Martin Spacek -
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,1050 +1,1050 b''
1 .. _messaging:
1 .. _messaging:
2
2
3 ======================
3 ======================
4 Messaging in IPython
4 Messaging in IPython
5 ======================
5 ======================
6
6
7
7
8 Introduction
8 Introduction
9 ============
9 ============
10
10
11 This document explains the basic communications design and messaging
11 This document explains the basic communications design and messaging
12 specification for how the various IPython objects interact over a network
12 specification for how the various IPython objects interact over a network
13 transport. The current implementation uses the ZeroMQ_ library for messaging
13 transport. The current implementation uses the ZeroMQ_ library for messaging
14 within and between hosts.
14 within and between hosts.
15
15
16 .. Note::
16 .. Note::
17
17
18 This document should be considered the authoritative description of the
18 This document should be considered the authoritative description of the
19 IPython messaging protocol, and all developers are strongly encouraged to
19 IPython messaging protocol, and all developers are strongly encouraged to
20 keep it updated as the implementation evolves, so that we have a single
20 keep it updated as the implementation evolves, so that we have a single
21 common reference for all protocol details.
21 common reference for all protocol details.
22
22
23 The basic design is explained in the following diagram:
23 The basic design is explained in the following diagram:
24
24
25 .. image:: figs/frontend-kernel.png
25 .. image:: figs/frontend-kernel.png
26 :width: 450px
26 :width: 450px
27 :alt: IPython kernel/frontend messaging architecture.
27 :alt: IPython kernel/frontend messaging architecture.
28 :align: center
28 :align: center
29 :target: ../_images/frontend-kernel.png
29 :target: ../_images/frontend-kernel.png
30
30
31 A single kernel can be simultaneously connected to one or more frontends. The
31 A single kernel can be simultaneously connected to one or more frontends. The
32 kernel has three sockets that serve the following functions:
32 kernel has three sockets that serve the following functions:
33
33
34 1. stdin: this ROUTER socket is connected to all frontends, and it allows
34 1. stdin: this ROUTER socket is connected to all frontends, and it allows
35 the kernel to request input from the active frontend when :func:`raw_input` is called.
35 the kernel to request input from the active frontend when :func:`raw_input` is called.
36 The frontend that executed the code has a DEALER socket that acts as a 'virtual keyboard'
36 The frontend that executed the code has a DEALER socket that acts as a 'virtual keyboard'
37 for the kernel while this communication is happening (illustrated in the
37 for the kernel while this communication is happening (illustrated in the
38 figure by the black outline around the central keyboard). In practice,
38 figure by the black outline around the central keyboard). In practice,
39 frontends may display such kernel requests using a special input widget or
39 frontends may display such kernel requests using a special input widget or
40 otherwise indicating that the user is to type input for the kernel instead
40 otherwise indicating that the user is to type input for the kernel instead
41 of normal commands in the frontend.
41 of normal commands in the frontend.
42
42
43 2. Shell: this single ROUTER socket allows multiple incoming connections from
43 2. Shell: this single ROUTER socket allows multiple incoming connections from
44 frontends, and this is the socket where requests for code execution, object
44 frontends, and this is the socket where requests for code execution, object
45 information, prompts, etc. are made to the kernel by any frontend. The
45 information, prompts, etc. are made to the kernel by any frontend. The
46 communication on this socket is a sequence of request/reply actions from
46 communication on this socket is a sequence of request/reply actions from
47 each frontend and the kernel.
47 each frontend and the kernel.
48
48
49 3. IOPub: this socket is the 'broadcast channel' where the kernel publishes all
49 3. IOPub: this socket is the 'broadcast channel' where the kernel publishes all
50 side effects (stdout, stderr, etc.) as well as the requests coming from any
50 side effects (stdout, stderr, etc.) as well as the requests coming from any
51 client over the shell socket and its own requests on the stdin socket. There
51 client over the shell socket and its own requests on the stdin socket. There
52 are a number of actions in Python which generate side effects: :func:`print`
52 are a number of actions in Python which generate side effects: :func:`print`
53 writes to ``sys.stdout``, errors generate tracebacks, etc. Additionally, in
53 writes to ``sys.stdout``, errors generate tracebacks, etc. Additionally, in
54 a multi-client scenario, we want all frontends to be able to know what each
54 a multi-client scenario, we want all frontends to be able to know what each
55 other has sent to the kernel (this can be useful in collaborative scenarios,
55 other has sent to the kernel (this can be useful in collaborative scenarios,
56 for example). This socket allows both side effects and the information
56 for example). This socket allows both side effects and the information
57 about communications taking place with one client over the shell channel
57 about communications taking place with one client over the shell channel
58 to be made available to all clients in a uniform manner.
58 to be made available to all clients in a uniform manner.
59
59
60 All messages are tagged with enough information (details below) for clients
60 All messages are tagged with enough information (details below) for clients
61 to know which messages come from their own interaction with the kernel and
61 to know which messages come from their own interaction with the kernel and
62 which ones are from other clients, so they can display each type
62 which ones are from other clients, so they can display each type
63 appropriately.
63 appropriately.
64
64
65 The actual format of the messages allowed on each of these channels is
65 The actual format of the messages allowed on each of these channels is
66 specified below. Messages are dicts of dicts with string keys and values that
66 specified below. Messages are dicts of dicts with string keys and values that
67 are reasonably representable in JSON. Our current implementation uses JSON
67 are reasonably representable in JSON. Our current implementation uses JSON
68 explicitly as its message format, but this shouldn't be considered a permanent
68 explicitly as its message format, but this shouldn't be considered a permanent
69 feature. As we've discovered that JSON has non-trivial performance issues due
69 feature. As we've discovered that JSON has non-trivial performance issues due
70 to excessive copying, we may in the future move to a pure pickle-based raw
70 to excessive copying, we may in the future move to a pure pickle-based raw
71 message format. However, it should be possible to easily convert from the raw
71 message format. However, it should be possible to easily convert from the raw
72 objects to JSON, since we may have non-python clients (e.g. a web frontend).
72 objects to JSON, since we may have non-python clients (e.g. a web frontend).
73 As long as it's easy to make a JSON version of the objects that is a faithful
73 As long as it's easy to make a JSON version of the objects that is a faithful
74 representation of all the data, we can communicate with such clients.
74 representation of all the data, we can communicate with such clients.
75
75
76 .. Note::
76 .. Note::
77
77
78 Not all of these have yet been fully fleshed out, but the key ones are, see
78 Not all of these have yet been fully fleshed out, but the key ones are, see
79 kernel and frontend files for actual implementation details.
79 kernel and frontend files for actual implementation details.
80
80
81 General Message Format
81 General Message Format
82 ======================
82 ======================
83
83
84 A message is defined by the following four-dictionary structure::
84 A message is defined by the following four-dictionary structure::
85
85
86 {
86 {
87 # The message header contains a pair of unique identifiers for the
87 # The message header contains a pair of unique identifiers for the
88 # originating session and the actual message id, in addition to the
88 # originating session and the actual message id, in addition to the
89 # username for the process that generated the message. This is useful in
89 # username for the process that generated the message. This is useful in
90 # collaborative settings where multiple users may be interacting with the
90 # collaborative settings where multiple users may be interacting with the
91 # same kernel simultaneously, so that frontends can label the various
91 # same kernel simultaneously, so that frontends can label the various
92 # messages in a meaningful way.
92 # messages in a meaningful way.
93 'header' : {
93 'header' : {
94 'msg_id' : uuid,
94 'msg_id' : uuid,
95 'username' : str,
95 'username' : str,
96 'session' : uuid
96 'session' : uuid
97 # All recognized message type strings are listed below.
97 # All recognized message type strings are listed below.
98 'msg_type' : str,
98 'msg_type' : str,
99 },
99 },
100
100
101 # In a chain of messages, the header from the parent is copied so that
101 # In a chain of messages, the header from the parent is copied so that
102 # clients can track where messages come from.
102 # clients can track where messages come from.
103 'parent_header' : dict,
103 'parent_header' : dict,
104
104
105 # The actual content of the message must be a dict, whose structure
105 # The actual content of the message must be a dict, whose structure
106 # depends on the message type.
106 # depends on the message type.
107 'content' : dict,
107 'content' : dict,
108
108
109 # Any metadata associated with the message.
109 # Any metadata associated with the message.
110 'metadata' : dict,
110 'metadata' : dict,
111 }
111 }
112
112
113
113
114 Python functional API
114 Python functional API
115 =====================
115 =====================
116
116
117 As messages are dicts, they map naturally to a ``func(**kw)`` call form. We
117 As messages are dicts, they map naturally to a ``func(**kw)`` call form. We
118 should develop, at a few key points, functional forms of all the requests that
118 should develop, at a few key points, functional forms of all the requests that
119 take arguments in this manner and automatically construct the necessary dict
119 take arguments in this manner and automatically construct the necessary dict
120 for sending.
120 for sending.
121
121
122 In addition, the Python implementation of the message specification extends
122 In addition, the Python implementation of the message specification extends
123 messages upon deserialization to the following form for convenience::
123 messages upon deserialization to the following form for convenience::
124
124
125 {
125 {
126 'header' : dict,
126 'header' : dict,
127 # The msg's unique identifier and type are always stored in the header,
127 # The msg's unique identifier and type are always stored in the header,
128 # but the Python implementation copies them to the top level.
128 # but the Python implementation copies them to the top level.
129 'msg_id' : uuid,
129 'msg_id' : uuid,
130 'msg_type' : str,
130 'msg_type' : str,
131 'parent_header' : dict,
131 'parent_header' : dict,
132 'content' : dict,
132 'content' : dict,
133 'metadata' : dict,
133 'metadata' : dict,
134 }
134 }
135
135
136 All messages sent to or received by any IPython process should have this
136 All messages sent to or received by any IPython process should have this
137 extended structure.
137 extended structure.
138
138
139
139
140 Messages on the shell ROUTER/DEALER sockets
140 Messages on the shell ROUTER/DEALER sockets
141 ===========================================
141 ===========================================
142
142
143 .. _execute:
143 .. _execute:
144
144
145 Execute
145 Execute
146 -------
146 -------
147
147
148 This message type is used by frontends to ask the kernel to execute code on
148 This message type is used by frontends to ask the kernel to execute code on
149 behalf of the user, in a namespace reserved to the user's variables (and thus
149 behalf of the user, in a namespace reserved to the user's variables (and thus
150 separate from the kernel's own internal code and variables).
150 separate from the kernel's own internal code and variables).
151
151
152 Message type: ``execute_request``::
152 Message type: ``execute_request``::
153
153
154 content = {
154 content = {
155 # Source code to be executed by the kernel, one or more lines.
155 # Source code to be executed by the kernel, one or more lines.
156 'code' : str,
156 'code' : str,
157
157
158 # A boolean flag which, if True, signals the kernel to execute
158 # A boolean flag which, if True, signals the kernel to execute
159 # this code as quietly as possible. This means that the kernel
159 # this code as quietly as possible. This means that the kernel
160 # will compile the code with 'exec' instead of 'single' (so
160 # will compile the code with 'exec' instead of 'single' (so
161 # sys.displayhook will not fire), forces store_history to be False,
161 # sys.displayhook will not fire), forces store_history to be False,
162 # and will *not*:
162 # and will *not*:
163 # - broadcast exceptions on the PUB socket
163 # - broadcast exceptions on the PUB socket
164 # - do any logging
164 # - do any logging
165 #
165 #
166 # The default is False.
166 # The default is False.
167 'silent' : bool,
167 'silent' : bool,
168
168
169 # A boolean flag which, if True, signals the kernel to populate history
169 # A boolean flag which, if True, signals the kernel to populate history
170 # The default is True if silent is False. If silent is True, store_history
170 # The default is True if silent is False. If silent is True, store_history
171 # is forced to be False.
171 # is forced to be False.
172 'store_history' : bool,
172 'store_history' : bool,
173
173
174 # A list of variable names from the user's namespace to be retrieved. What
174 # A list of variable names from the user's namespace to be retrieved. What
175 # returns is a JSON string of the variable's repr(), not a python object.
175 # returns is a JSON string of the variable's repr(), not a python object.
176 'user_variables' : list,
176 'user_variables' : list,
177
177
178 # Similarly, a dict mapping names to expressions to be evaluated in the
178 # Similarly, a dict mapping names to expressions to be evaluated in the
179 # user's dict.
179 # user's dict.
180 'user_expressions' : dict,
180 'user_expressions' : dict,
181
181
182 # Some frontends (e.g. the Notebook) do not support stdin requests. If
182 # Some frontends (e.g. the Notebook) do not support stdin requests. If
183 # raw_input is called from code executed from such a frontend, a
183 # raw_input is called from code executed from such a frontend, a
184 # StdinNotImplementedError will be raised.
184 # StdinNotImplementedError will be raised.
185 'allow_stdin' : True,
185 'allow_stdin' : True,
186
186
187 }
187 }
188
188
189 The ``code`` field contains a single string (possibly multiline). The kernel
189 The ``code`` field contains a single string (possibly multiline). The kernel
190 is responsible for splitting this into one or more independent execution blocks
190 is responsible for splitting this into one or more independent execution blocks
191 and deciding whether to compile these in 'single' or 'exec' mode (see below for
191 and deciding whether to compile these in 'single' or 'exec' mode (see below for
192 detailed execution semantics).
192 detailed execution semantics).
193
193
194 The ``user_`` fields deserve a detailed explanation. In the past, IPython had
194 The ``user_`` fields deserve a detailed explanation. In the past, IPython had
195 the notion of a prompt string that allowed arbitrary code to be evaluated, and
195 the notion of a prompt string that allowed arbitrary code to be evaluated, and
196 this was put to good use by many in creating prompts that displayed system
196 this was put to good use by many in creating prompts that displayed system
197 status, path information, and even more esoteric uses like remote instrument
197 status, path information, and even more esoteric uses like remote instrument
198 status aqcuired over the network. But now that IPython has a clean separation
198 status aqcuired over the network. But now that IPython has a clean separation
199 between the kernel and the clients, the kernel has no prompt knowledge; prompts
199 between the kernel and the clients, the kernel has no prompt knowledge; prompts
200 are a frontend-side feature, and it should be even possible for different
200 are a frontend-side feature, and it should be even possible for different
201 frontends to display different prompts while interacting with the same kernel.
201 frontends to display different prompts while interacting with the same kernel.
202
202
203 The kernel now provides the ability to retrieve data from the user's namespace
203 The kernel now provides the ability to retrieve data from the user's namespace
204 after the execution of the main ``code``, thanks to two fields in the
204 after the execution of the main ``code``, thanks to two fields in the
205 ``execute_request`` message:
205 ``execute_request`` message:
206
206
207 - ``user_variables``: If only variables from the user's namespace are needed, a
207 - ``user_variables``: If only variables from the user's namespace are needed, a
208 list of variable names can be passed and a dict with these names as keys and
208 list of variable names can be passed and a dict with these names as keys and
209 their :func:`repr()` as values will be returned.
209 their :func:`repr()` as values will be returned.
210
210
211 - ``user_expressions``: For more complex expressions that require function
211 - ``user_expressions``: For more complex expressions that require function
212 evaluations, a dict can be provided with string keys and arbitrary python
212 evaluations, a dict can be provided with string keys and arbitrary python
213 expressions as values. The return message will contain also a dict with the
213 expressions as values. The return message will contain also a dict with the
214 same keys and the :func:`repr()` of the evaluated expressions as value.
214 same keys and the :func:`repr()` of the evaluated expressions as value.
215
215
216 With this information, frontends can display any status information they wish
216 With this information, frontends can display any status information they wish
217 in the form that best suits each frontend (a status line, a popup, inline for a
217 in the form that best suits each frontend (a status line, a popup, inline for a
218 terminal, etc).
218 terminal, etc).
219
219
220 .. Note::
220 .. Note::
221
221
222 In order to obtain the current execution counter for the purposes of
222 In order to obtain the current execution counter for the purposes of
223 displaying input prompts, frontends simply make an execution request with an
223 displaying input prompts, frontends simply make an execution request with an
224 empty code string and ``silent=True``.
224 empty code string and ``silent=True``.
225
225
226 Execution semantics
226 Execution semantics
227 ~~~~~~~~~~~~~~~~~~~
227 ~~~~~~~~~~~~~~~~~~~
228
228
229 When the silent flag is false, the execution of use code consists of the
229 When the silent flag is false, the execution of use code consists of the
230 following phases (in silent mode, only the ``code`` field is executed):
230 following phases (in silent mode, only the ``code`` field is executed):
231
231
232 1. Run the ``pre_runcode_hook``.
232 1. Run the ``pre_runcode_hook``.
233
233
234 2. Execute the ``code`` field, see below for details.
234 2. Execute the ``code`` field, see below for details.
235
235
236 3. If #2 succeeds, compute ``user_variables`` and ``user_expressions`` are
236 3. If #2 succeeds, compute ``user_variables`` and ``user_expressions`` are
237 computed. This ensures that any error in the latter don't harm the main
237 computed. This ensures that any error in the latter don't harm the main
238 code execution.
238 code execution.
239
239
240 4. Call any method registered with :meth:`register_post_execute`.
240 4. Call any method registered with :meth:`register_post_execute`.
241
241
242 .. warning::
242 .. warning::
243
243
244 The API for running code before/after the main code block is likely to
244 The API for running code before/after the main code block is likely to
245 change soon. Both the ``pre_runcode_hook`` and the
245 change soon. Both the ``pre_runcode_hook`` and the
246 :meth:`register_post_execute` are susceptible to modification, as we find a
246 :meth:`register_post_execute` are susceptible to modification, as we find a
247 consistent model for both.
247 consistent model for both.
248
248
249 To understand how the ``code`` field is executed, one must know that Python
249 To understand how the ``code`` field is executed, one must know that Python
250 code can be compiled in one of three modes (controlled by the ``mode`` argument
250 code can be compiled in one of three modes (controlled by the ``mode`` argument
251 to the :func:`compile` builtin):
251 to the :func:`compile` builtin):
252
252
253 *single*
253 *single*
254 Valid for a single interactive statement (though the source can contain
254 Valid for a single interactive statement (though the source can contain
255 multiple lines, such as a for loop). When compiled in this mode, the
255 multiple lines, such as a for loop). When compiled in this mode, the
256 generated bytecode contains special instructions that trigger the calling of
256 generated bytecode contains special instructions that trigger the calling of
257 :func:`sys.displayhook` for any expression in the block that returns a value.
257 :func:`sys.displayhook` for any expression in the block that returns a value.
258 This means that a single statement can actually produce multiple calls to
258 This means that a single statement can actually produce multiple calls to
259 :func:`sys.displayhook`, if for example it contains a loop where each
259 :func:`sys.displayhook`, if for example it contains a loop where each
260 iteration computes an unassigned expression would generate 10 calls::
260 iteration computes an unassigned expression would generate 10 calls::
261
261
262 for i in range(10):
262 for i in range(10):
263 i**2
263 i**2
264
264
265 *exec*
265 *exec*
266 An arbitrary amount of source code, this is how modules are compiled.
266 An arbitrary amount of source code, this is how modules are compiled.
267 :func:`sys.displayhook` is *never* implicitly called.
267 :func:`sys.displayhook` is *never* implicitly called.
268
268
269 *eval*
269 *eval*
270 A single expression that returns a value. :func:`sys.displayhook` is *never*
270 A single expression that returns a value. :func:`sys.displayhook` is *never*
271 implicitly called.
271 implicitly called.
272
272
273
273
274 The ``code`` field is split into individual blocks each of which is valid for
274 The ``code`` field is split into individual blocks each of which is valid for
275 execution in 'single' mode, and then:
275 execution in 'single' mode, and then:
276
276
277 - If there is only a single block: it is executed in 'single' mode.
277 - If there is only a single block: it is executed in 'single' mode.
278
278
279 - If there is more than one block:
279 - If there is more than one block:
280
280
281 * if the last one is a single line long, run all but the last in 'exec' mode
281 * if the last one is a single line long, run all but the last in 'exec' mode
282 and the very last one in 'single' mode. This makes it easy to type simple
282 and the very last one in 'single' mode. This makes it easy to type simple
283 expressions at the end to see computed values.
283 expressions at the end to see computed values.
284
284
285 * if the last one is no more than two lines long, run all but the last in
285 * if the last one is no more than two lines long, run all but the last in
286 'exec' mode and the very last one in 'single' mode. This makes it easy to
286 'exec' mode and the very last one in 'single' mode. This makes it easy to
287 type simple expressions at the end to see computed values. - otherwise
287 type simple expressions at the end to see computed values. - otherwise
288 (last one is also multiline), run all in 'exec' mode
288 (last one is also multiline), run all in 'exec' mode
289
289
290 * otherwise (last one is also multiline), run all in 'exec' mode as a single
290 * otherwise (last one is also multiline), run all in 'exec' mode as a single
291 unit.
291 unit.
292
292
293 Any error in retrieving the ``user_variables`` or evaluating the
293 Any error in retrieving the ``user_variables`` or evaluating the
294 ``user_expressions`` will result in a simple error message in the return fields
294 ``user_expressions`` will result in a simple error message in the return fields
295 of the form::
295 of the form::
296
296
297 [ERROR] ExceptionType: Exception message
297 [ERROR] ExceptionType: Exception message
298
298
299 The user can simply send the same variable name or expression for evaluation to
299 The user can simply send the same variable name or expression for evaluation to
300 see a regular traceback.
300 see a regular traceback.
301
301
302 Errors in any registered post_execute functions are also reported similarly,
302 Errors in any registered post_execute functions are also reported similarly,
303 and the failing function is removed from the post_execution set so that it does
303 and the failing function is removed from the post_execution set so that it does
304 not continue triggering failures.
304 not continue triggering failures.
305
305
306 Upon completion of the execution request, the kernel *always* sends a reply,
306 Upon completion of the execution request, the kernel *always* sends a reply,
307 with a status code indicating what happened and additional data depending on
307 with a status code indicating what happened and additional data depending on
308 the outcome. See :ref:`below <execution_results>` for the possible return
308 the outcome. See :ref:`below <execution_results>` for the possible return
309 codes and associated data.
309 codes and associated data.
310
310
311
311
312 Execution counter (old prompt number)
312 Execution counter (old prompt number)
313 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
313 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
314
314
315 The kernel has a single, monotonically increasing counter of all execution
315 The kernel has a single, monotonically increasing counter of all execution
316 requests that are made with ``store_history=True``. This counter is used to populate
316 requests that are made with ``store_history=True``. This counter is used to populate
317 the ``In[n]``, ``Out[n]`` and ``_n`` variables, so clients will likely want to
317 the ``In[n]``, ``Out[n]`` and ``_n`` variables, so clients will likely want to
318 display it in some form to the user, which will typically (but not necessarily)
318 display it in some form to the user, which will typically (but not necessarily)
319 be done in the prompts. The value of this counter will be returned as the
319 be done in the prompts. The value of this counter will be returned as the
320 ``execution_count`` field of all ``execute_reply`` messages.
320 ``execution_count`` field of all ``execute_reply`` messages.
321
321
322 .. _execution_results:
322 .. _execution_results:
323
323
324 Execution results
324 Execution results
325 ~~~~~~~~~~~~~~~~~
325 ~~~~~~~~~~~~~~~~~
326
326
327 Message type: ``execute_reply``::
327 Message type: ``execute_reply``::
328
328
329 content = {
329 content = {
330 # One of: 'ok' OR 'error' OR 'abort'
330 # One of: 'ok' OR 'error' OR 'abort'
331 'status' : str,
331 'status' : str,
332
332
333 # The global kernel counter that increases by one with each request that
333 # The global kernel counter that increases by one with each request that
334 # stores history. This will typically be used by clients to display
334 # stores history. This will typically be used by clients to display
335 # prompt numbers to the user. If the request did not store history, this will
335 # prompt numbers to the user. If the request did not store history, this will
336 # be the current value of the counter in the kernel.
336 # be the current value of the counter in the kernel.
337 'execution_count' : int,
337 'execution_count' : int,
338 }
338 }
339
339
340 When status is 'ok', the following extra fields are present::
340 When status is 'ok', the following extra fields are present::
341
341
342 {
342 {
343 # 'payload' will be a list of payload dicts.
343 # 'payload' will be a list of payload dicts.
344 # Each execution payload is a dict with string keys that may have been
344 # Each execution payload is a dict with string keys that may have been
345 # produced by the code being executed. It is retrieved by the kernel at
345 # produced by the code being executed. It is retrieved by the kernel at
346 # the end of the execution and sent back to the front end, which can take
346 # the end of the execution and sent back to the front end, which can take
347 # action on it as needed. See main text for further details.
347 # action on it as needed. See main text for further details.
348 'payload' : list(dict),
348 'payload' : list(dict),
349
349
350 # Results for the user_variables and user_expressions.
350 # Results for the user_variables and user_expressions.
351 'user_variables' : dict,
351 'user_variables' : dict,
352 'user_expressions' : dict,
352 'user_expressions' : dict,
353 }
353 }
354
354
355 .. admonition:: Execution payloads
355 .. admonition:: Execution payloads
356
356
357 The notion of an 'execution payload' is different from a return value of a
357 The notion of an 'execution payload' is different from a return value of a
358 given set of code, which normally is just displayed on the pyout stream
358 given set of code, which normally is just displayed on the pyout stream
359 through the PUB socket. The idea of a payload is to allow special types of
359 through the PUB socket. The idea of a payload is to allow special types of
360 code, typically magics, to populate a data container in the IPython kernel
360 code, typically magics, to populate a data container in the IPython kernel
361 that will be shipped back to the caller via this channel. The kernel
361 that will be shipped back to the caller via this channel. The kernel
362 has an API for this in the PayloadManager::
362 has an API for this in the PayloadManager::
363
363
364 ip.payload_manager.write_payload(payload_dict)
364 ip.payload_manager.write_payload(payload_dict)
365
365
366 which appends a dictionary to the list of payloads.
366 which appends a dictionary to the list of payloads.
367
367
368
368
369 When status is 'error', the following extra fields are present::
369 When status is 'error', the following extra fields are present::
370
370
371 {
371 {
372 'ename' : str, # Exception name, as a string
372 'ename' : str, # Exception name, as a string
373 'evalue' : str, # Exception value, as a string
373 'evalue' : str, # Exception value, as a string
374
374
375 # The traceback will contain a list of frames, represented each as a
375 # The traceback will contain a list of frames, represented each as a
376 # string. For now we'll stick to the existing design of ultraTB, which
376 # string. For now we'll stick to the existing design of ultraTB, which
377 # controls exception level of detail statefully. But eventually we'll
377 # controls exception level of detail statefully. But eventually we'll
378 # want to grow into a model where more information is collected and
378 # want to grow into a model where more information is collected and
379 # packed into the traceback object, with clients deciding how little or
379 # packed into the traceback object, with clients deciding how little or
380 # how much of it to unpack. But for now, let's start with a simple list
380 # how much of it to unpack. But for now, let's start with a simple list
381 # of strings, since that requires only minimal changes to ultratb as
381 # of strings, since that requires only minimal changes to ultratb as
382 # written.
382 # written.
383 'traceback' : list,
383 'traceback' : list,
384 }
384 }
385
385
386
386
387 When status is 'abort', there are for now no additional data fields. This
387 When status is 'abort', there are for now no additional data fields. This
388 happens when the kernel was interrupted by a signal.
388 happens when the kernel was interrupted by a signal.
389
389
390 Kernel attribute access
390 Kernel attribute access
391 -----------------------
391 -----------------------
392
392
393 .. warning::
393 .. warning::
394
394
395 This part of the messaging spec is not actually implemented in the kernel
395 This part of the messaging spec is not actually implemented in the kernel
396 yet.
396 yet.
397
397
398 While this protocol does not specify full RPC access to arbitrary methods of
398 While this protocol does not specify full RPC access to arbitrary methods of
399 the kernel object, the kernel does allow read (and in some cases write) access
399 the kernel object, the kernel does allow read (and in some cases write) access
400 to certain attributes.
400 to certain attributes.
401
401
402 The policy for which attributes can be read is: any attribute of the kernel, or
402 The policy for which attributes can be read is: any attribute of the kernel, or
403 its sub-objects, that belongs to a :class:`Configurable` object and has been
403 its sub-objects, that belongs to a :class:`Configurable` object and has been
404 declared at the class-level with Traits validation, is in principle accessible
404 declared at the class-level with Traits validation, is in principle accessible
405 as long as its name does not begin with a leading underscore. The attribute
405 as long as its name does not begin with a leading underscore. The attribute
406 itself will have metadata indicating whether it allows remote read and/or write
406 itself will have metadata indicating whether it allows remote read and/or write
407 access. The message spec follows for attribute read and write requests.
407 access. The message spec follows for attribute read and write requests.
408
408
409 Message type: ``getattr_request``::
409 Message type: ``getattr_request``::
410
410
411 content = {
411 content = {
412 # The (possibly dotted) name of the attribute
412 # The (possibly dotted) name of the attribute
413 'name' : str,
413 'name' : str,
414 }
414 }
415
415
416 When a ``getattr_request`` fails, there are two possible error types:
416 When a ``getattr_request`` fails, there are two possible error types:
417
417
418 - AttributeError: this type of error was raised when trying to access the
418 - AttributeError: this type of error was raised when trying to access the
419 given name by the kernel itself. This means that the attribute likely
419 given name by the kernel itself. This means that the attribute likely
420 doesn't exist.
420 doesn't exist.
421
421
422 - AccessError: the attribute exists but its value is not readable remotely.
422 - AccessError: the attribute exists but its value is not readable remotely.
423
423
424
424
425 Message type: ``getattr_reply``::
425 Message type: ``getattr_reply``::
426
426
427 content = {
427 content = {
428 # One of ['ok', 'AttributeError', 'AccessError'].
428 # One of ['ok', 'AttributeError', 'AccessError'].
429 'status' : str,
429 'status' : str,
430 # If status is 'ok', a JSON object.
430 # If status is 'ok', a JSON object.
431 'value' : object,
431 'value' : object,
432 }
432 }
433
433
434 Message type: ``setattr_request``::
434 Message type: ``setattr_request``::
435
435
436 content = {
436 content = {
437 # The (possibly dotted) name of the attribute
437 # The (possibly dotted) name of the attribute
438 'name' : str,
438 'name' : str,
439
439
440 # A JSON-encoded object, that will be validated by the Traits
440 # A JSON-encoded object, that will be validated by the Traits
441 # information in the kernel
441 # information in the kernel
442 'value' : object,
442 'value' : object,
443 }
443 }
444
444
445 When a ``setattr_request`` fails, there are also two possible error types with
445 When a ``setattr_request`` fails, there are also two possible error types with
446 similar meanings as those of the ``getattr_request`` case, but for writing.
446 similar meanings as those of the ``getattr_request`` case, but for writing.
447
447
448 Message type: ``setattr_reply``::
448 Message type: ``setattr_reply``::
449
449
450 content = {
450 content = {
451 # One of ['ok', 'AttributeError', 'AccessError'].
451 # One of ['ok', 'AttributeError', 'AccessError'].
452 'status' : str,
452 'status' : str,
453 }
453 }
454
454
455
455
456
456
457 Object information
457 Object information
458 ------------------
458 ------------------
459
459
460 One of IPython's most used capabilities is the introspection of Python objects
460 One of IPython's most used capabilities is the introspection of Python objects
461 in the user's namespace, typically invoked via the ``?`` and ``??`` characters
461 in the user's namespace, typically invoked via the ``?`` and ``??`` characters
462 (which in reality are shorthands for the ``%pinfo`` magic). This is used often
462 (which in reality are shorthands for the ``%pinfo`` magic). This is used often
463 enough that it warrants an explicit message type, especially because frontends
463 enough that it warrants an explicit message type, especially because frontends
464 may want to get object information in response to user keystrokes (like Tab or
464 may want to get object information in response to user keystrokes (like Tab or
465 F1) besides from the user explicitly typing code like ``x??``.
465 F1) besides from the user explicitly typing code like ``x??``.
466
466
467 Message type: ``object_info_request``::
467 Message type: ``object_info_request``::
468
468
469 content = {
469 content = {
470 # The (possibly dotted) name of the object to be searched in all
470 # The (possibly dotted) name of the object to be searched in all
471 # relevant namespaces
471 # relevant namespaces
472 'name' : str,
472 'name' : str,
473
473
474 # The level of detail desired. The default (0) is equivalent to typing
474 # The level of detail desired. The default (0) is equivalent to typing
475 # 'x?' at the prompt, 1 is equivalent to 'x??'.
475 # 'x?' at the prompt, 1 is equivalent to 'x??'.
476 'detail_level' : int,
476 'detail_level' : int,
477 }
477 }
478
478
479 The returned information will be a dictionary with keys very similar to the
479 The returned information will be a dictionary with keys very similar to the
480 field names that IPython prints at the terminal.
480 field names that IPython prints at the terminal.
481
481
482 Message type: ``object_info_reply``::
482 Message type: ``object_info_reply``::
483
483
484 content = {
484 content = {
485 # The name the object was requested under
485 # The name the object was requested under
486 'name' : str,
486 'name' : str,
487
487
488 # Boolean flag indicating whether the named object was found or not. If
488 # Boolean flag indicating whether the named object was found or not. If
489 # it's false, all other fields will be empty.
489 # it's false, all other fields will be empty.
490 'found' : bool,
490 'found' : bool,
491
491
492 # Flags for magics and system aliases
492 # Flags for magics and system aliases
493 'ismagic' : bool,
493 'ismagic' : bool,
494 'isalias' : bool,
494 'isalias' : bool,
495
495
496 # The name of the namespace where the object was found ('builtin',
496 # The name of the namespace where the object was found ('builtin',
497 # 'magics', 'alias', 'interactive', etc.)
497 # 'magics', 'alias', 'interactive', etc.)
498 'namespace' : str,
498 'namespace' : str,
499
499
500 # The type name will be type.__name__ for normal Python objects, but it
500 # The type name will be type.__name__ for normal Python objects, but it
501 # can also be a string like 'Magic function' or 'System alias'
501 # can also be a string like 'Magic function' or 'System alias'
502 'type_name' : str,
502 'type_name' : str,
503
503
504 # The string form of the object, possibly truncated for length if
504 # The string form of the object, possibly truncated for length if
505 # detail_level is 0
505 # detail_level is 0
506 'string_form' : str,
506 'string_form' : str,
507
507
508 # For objects with a __class__ attribute this will be set
508 # For objects with a __class__ attribute this will be set
509 'base_class' : str,
509 'base_class' : str,
510
510
511 # For objects with a __len__ attribute this will be set
511 # For objects with a __len__ attribute this will be set
512 'length' : int,
512 'length' : int,
513
513
514 # If the object is a function, class or method whose file we can find,
514 # If the object is a function, class or method whose file we can find,
515 # we give its full path
515 # we give its full path
516 'file' : str,
516 'file' : str,
517
517
518 # For pure Python callable objects, we can reconstruct the object
518 # For pure Python callable objects, we can reconstruct the object
519 # definition line which provides its call signature. For convenience this
519 # definition line which provides its call signature. For convenience this
520 # is returned as a single 'definition' field, but below the raw parts that
520 # is returned as a single 'definition' field, but below the raw parts that
521 # compose it are also returned as the argspec field.
521 # compose it are also returned as the argspec field.
522 'definition' : str,
522 'definition' : str,
523
523
524 # The individual parts that together form the definition string. Clients
524 # The individual parts that together form the definition string. Clients
525 # with rich display capabilities may use this to provide a richer and more
525 # with rich display capabilities may use this to provide a richer and more
526 # precise representation of the definition line (e.g. by highlighting
526 # precise representation of the definition line (e.g. by highlighting
527 # arguments based on the user's cursor position). For non-callable
527 # arguments based on the user's cursor position). For non-callable
528 # objects, this field is empty.
528 # objects, this field is empty.
529 'argspec' : { # The names of all the arguments
529 'argspec' : { # The names of all the arguments
530 args : list,
530 args : list,
531 # The name of the varargs (*args), if any
531 # The name of the varargs (*args), if any
532 varargs : str,
532 varargs : str,
533 # The name of the varkw (**kw), if any
533 # The name of the varkw (**kw), if any
534 varkw : str,
534 varkw : str,
535 # The values (as strings) of all default arguments. Note
535 # The values (as strings) of all default arguments. Note
536 # that these must be matched *in reverse* with the 'args'
536 # that these must be matched *in reverse* with the 'args'
537 # list above, since the first positional args have no default
537 # list above, since the first positional args have no default
538 # value at all.
538 # value at all.
539 defaults : list,
539 defaults : list,
540 },
540 },
541
541
542 # For instances, provide the constructor signature (the definition of
542 # For instances, provide the constructor signature (the definition of
543 # the __init__ method):
543 # the __init__ method):
544 'init_definition' : str,
544 'init_definition' : str,
545
545
546 # Docstrings: for any object (function, method, module, package) with a
546 # Docstrings: for any object (function, method, module, package) with a
547 # docstring, we show it. But in addition, we may provide additional
547 # docstring, we show it. But in addition, we may provide additional
548 # docstrings. For example, for instances we will show the constructor
548 # docstrings. For example, for instances we will show the constructor
549 # and class docstrings as well, if available.
549 # and class docstrings as well, if available.
550 'docstring' : str,
550 'docstring' : str,
551
551
552 # For instances, provide the constructor and class docstrings
552 # For instances, provide the constructor and class docstrings
553 'init_docstring' : str,
553 'init_docstring' : str,
554 'class_docstring' : str,
554 'class_docstring' : str,
555
555
556 # If it's a callable object whose call method has a separate docstring and
556 # If it's a callable object whose call method has a separate docstring and
557 # definition line:
557 # definition line:
558 'call_def' : str,
558 'call_def' : str,
559 'call_docstring' : str,
559 'call_docstring' : str,
560
560
561 # If detail_level was 1, we also try to find the source code that
561 # If detail_level was 1, we also try to find the source code that
562 # defines the object, if possible. The string 'None' will indicate
562 # defines the object, if possible. The string 'None' will indicate
563 # that no source was found.
563 # that no source was found.
564 'source' : str,
564 'source' : str,
565 }
565 }
566
566
567
567
568 Complete
568 Complete
569 --------
569 --------
570
570
571 Message type: ``complete_request``::
571 Message type: ``complete_request``::
572
572
573 content = {
573 content = {
574 # The text to be completed, such as 'a.is'
574 # The text to be completed, such as 'a.is'
575 'text' : str,
575 'text' : str,
576
576
577 # The full line, such as 'print a.is'. This allows completers to
577 # The full line, such as 'print a.is'. This allows completers to
578 # make decisions that may require information about more than just the
578 # make decisions that may require information about more than just the
579 # current word.
579 # current word.
580 'line' : str,
580 'line' : str,
581
581
582 # The entire block of text where the line is. This may be useful in the
582 # The entire block of text where the line is. This may be useful in the
583 # case of multiline completions where more context may be needed. Note: if
583 # case of multiline completions where more context may be needed. Note: if
584 # in practice this field proves unnecessary, remove it to lighten the
584 # in practice this field proves unnecessary, remove it to lighten the
585 # messages.
585 # messages.
586
586
587 'block' : str,
587 'block' : str,
588
588
589 # The position of the cursor where the user hit 'TAB' on the line.
589 # The position of the cursor where the user hit 'TAB' on the line.
590 'cursor_pos' : int,
590 'cursor_pos' : int,
591 }
591 }
592
592
593 Message type: ``complete_reply``::
593 Message type: ``complete_reply``::
594
594
595 content = {
595 content = {
596 # The list of all matches to the completion request, such as
596 # The list of all matches to the completion request, such as
597 # ['a.isalnum', 'a.isalpha'] for the above example.
597 # ['a.isalnum', 'a.isalpha'] for the above example.
598 'matches' : list
598 'matches' : list
599 }
599 }
600
600
601
601
602 History
602 History
603 -------
603 -------
604
604
605 For clients to explicitly request history from a kernel. The kernel has all
605 For clients to explicitly request history from a kernel. The kernel has all
606 the actual execution history stored in a single location, so clients can
606 the actual execution history stored in a single location, so clients can
607 request it from the kernel when needed.
607 request it from the kernel when needed.
608
608
609 Message type: ``history_request``::
609 Message type: ``history_request``::
610
610
611 content = {
611 content = {
612
612
613 # If True, also return output history in the resulting dict.
613 # If True, also return output history in the resulting dict.
614 'output' : bool,
614 'output' : bool,
615
615
616 # If True, return the raw input history, else the transformed input.
616 # If True, return the raw input history, else the transformed input.
617 'raw' : bool,
617 'raw' : bool,
618
618
619 # So far, this can be 'range', 'tail' or 'search'.
619 # So far, this can be 'range', 'tail' or 'search'.
620 'hist_access_type' : str,
620 'hist_access_type' : str,
621
621
622 # If hist_access_type is 'range', get a range of input cells. session can
622 # If hist_access_type is 'range', get a range of input cells. session can
623 # be a positive session number, or a negative number to count back from
623 # be a positive session number, or a negative number to count back from
624 # the current session.
624 # the current session.
625 'session' : int,
625 'session' : int,
626 # start and stop are line numbers within that session.
626 # start and stop are line numbers within that session.
627 'start' : int,
627 'start' : int,
628 'stop' : int,
628 'stop' : int,
629
629
630 # If hist_access_type is 'tail' or 'search', get the last n cells.
630 # If hist_access_type is 'tail' or 'search', get the last n cells.
631 'n' : int,
631 'n' : int,
632
632
633 # If hist_access_type is 'search', get cells matching the specified glob
633 # If hist_access_type is 'search', get cells matching the specified glob
634 # pattern (with * and ? as wildcards).
634 # pattern (with * and ? as wildcards).
635 'pattern' : str,
635 'pattern' : str,
636
636
637 # If hist_access_type is 'search' and unique is true, do not
637 # If hist_access_type is 'search' and unique is true, do not
638 # include duplicated history. Default is false.
638 # include duplicated history. Default is false.
639 'unique' : bool,
639 'unique' : bool,
640
640
641 }
641 }
642
642
643 .. versionadded:: 4.0
643 .. versionadded:: 4.0
644 The key ``unique`` for ``history_request``.
644 The key ``unique`` for ``history_request``.
645
645
646 Message type: ``history_reply``::
646 Message type: ``history_reply``::
647
647
648 content = {
648 content = {
649 # A list of 3 tuples, either:
649 # A list of 3 tuples, either:
650 # (session, line_number, input) or
650 # (session, line_number, input) or
651 # (session, line_number, (input, output)),
651 # (session, line_number, (input, output)),
652 # depending on whether output was False or True, respectively.
652 # depending on whether output was False or True, respectively.
653 'history' : list,
653 'history' : list,
654 }
654 }
655
655
656
656
657 Connect
657 Connect
658 -------
658 -------
659
659
660 When a client connects to the request/reply socket of the kernel, it can issue
660 When a client connects to the request/reply socket of the kernel, it can issue
661 a connect request to get basic information about the kernel, such as the ports
661 a connect request to get basic information about the kernel, such as the ports
662 the other ZeroMQ sockets are listening on. This allows clients to only have
662 the other ZeroMQ sockets are listening on. This allows clients to only have
663 to know about a single port (the shell channel) to connect to a kernel.
663 to know about a single port (the shell channel) to connect to a kernel.
664
664
665 Message type: ``connect_request``::
665 Message type: ``connect_request``::
666
666
667 content = {
667 content = {
668 }
668 }
669
669
670 Message type: ``connect_reply``::
670 Message type: ``connect_reply``::
671
671
672 content = {
672 content = {
673 'shell_port' : int # The port the shell ROUTER socket is listening on.
673 'shell_port' : int # The port the shell ROUTER socket is listening on.
674 'iopub_port' : int # The port the PUB socket is listening on.
674 'iopub_port' : int # The port the PUB socket is listening on.
675 'stdin_port' : int # The port the stdin ROUTER socket is listening on.
675 'stdin_port' : int # The port the stdin ROUTER socket is listening on.
676 'hb_port' : int # The port the heartbeat socket is listening on.
676 'hb_port' : int # The port the heartbeat socket is listening on.
677 }
677 }
678
678
679
679
680 Kernel info
680 Kernel info
681 -----------
681 -----------
682
682
683 If a client needs to know what protocol the kernel supports, it can
683 If a client needs to know what protocol the kernel supports, it can
684 ask version number of the messaging protocol supported by the kernel.
684 ask version number of the messaging protocol supported by the kernel.
685 This message can be used to fetch other core information of the
685 This message can be used to fetch other core information of the
686 kernel, including language (e.g., Python), language version number and
686 kernel, including language (e.g., Python), language version number and
687 IPython version number.
687 IPython version number.
688
688
689 Message type: ``kernel_info_request``::
689 Message type: ``kernel_info_request``::
690
690
691 content = {
691 content = {
692 }
692 }
693
693
694 Message type: ``kernel_info_reply``::
694 Message type: ``kernel_info_reply``::
695
695
696 content = {
696 content = {
697 # Version of messaging protocol (mandatory).
697 # Version of messaging protocol (mandatory).
698 # The first integer indicates major version. It is incremented when
698 # The first integer indicates major version. It is incremented when
699 # there is any backward incompatible change.
699 # there is any backward incompatible change.
700 # The second integer indicates minor version. It is incremented when
700 # The second integer indicates minor version. It is incremented when
701 # there is any backward compatible change.
701 # there is any backward compatible change.
702 'protocol_version': [int, int],
702 'protocol_version': [int, int],
703
703
704 # IPython version number (optional).
704 # IPython version number (optional).
705 # Non-python kernel backend may not have this version number.
705 # Non-python kernel backend may not have this version number.
706 # The last component is an extra field, which may be 'dev' or
706 # The last component is an extra field, which may be 'dev' or
707 # 'rc1' in development version. It is an empty string for
707 # 'rc1' in development version. It is an empty string for
708 # released version.
708 # released version.
709 'ipython_version': [int, int, int, str],
709 'ipython_version': [int, int, int, str],
710
710
711 # Language version number (mandatory).
711 # Language version number (mandatory).
712 # It is Python version number (e.g., [2, 7, 3]) for the kernel
712 # It is Python version number (e.g., [2, 7, 3]) for the kernel
713 # included in IPython.
713 # included in IPython.
714 'language_version': [int, ...],
714 'language_version': [int, ...],
715
715
716 # Programming language in which kernel is implemented (mandatory).
716 # Programming language in which kernel is implemented (mandatory).
717 # Kernel included in IPython returns 'python'.
717 # Kernel included in IPython returns 'python'.
718 'language': str,
718 'language': str,
719 }
719 }
720
720
721
721
722 Kernel shutdown
722 Kernel shutdown
723 ---------------
723 ---------------
724
724
725 The clients can request the kernel to shut itself down; this is used in
725 The clients can request the kernel to shut itself down; this is used in
726 multiple cases:
726 multiple cases:
727
727
728 - when the user chooses to close the client application via a menu or window
728 - when the user chooses to close the client application via a menu or window
729 control.
729 control.
730 - when the user types 'exit' or 'quit' (or their uppercase magic equivalents).
730 - when the user types 'exit' or 'quit' (or their uppercase magic equivalents).
731 - when the user chooses a GUI method (like the 'Ctrl-C' shortcut in the
731 - when the user chooses a GUI method (like the 'Ctrl-C' shortcut in the
732 IPythonQt client) to force a kernel restart to get a clean kernel without
732 IPythonQt client) to force a kernel restart to get a clean kernel without
733 losing client-side state like history or inlined figures.
733 losing client-side state like history or inlined figures.
734
734
735 The client sends a shutdown request to the kernel, and once it receives the
735 The client sends a shutdown request to the kernel, and once it receives the
736 reply message (which is otherwise empty), it can assume that the kernel has
736 reply message (which is otherwise empty), it can assume that the kernel has
737 completed shutdown safely.
737 completed shutdown safely.
738
738
739 Upon their own shutdown, client applications will typically execute a last
739 Upon their own shutdown, client applications will typically execute a last
740 minute sanity check and forcefully terminate any kernel that is still alive, to
740 minute sanity check and forcefully terminate any kernel that is still alive, to
741 avoid leaving stray processes in the user's machine.
741 avoid leaving stray processes in the user's machine.
742
742
743 For both shutdown request and reply, there is no actual content that needs to
743 For both shutdown request and reply, there is no actual content that needs to
744 be sent, so the content dict is empty.
744 be sent, so the content dict is empty.
745
745
746 Message type: ``shutdown_request``::
746 Message type: ``shutdown_request``::
747
747
748 content = {
748 content = {
749 'restart' : bool # whether the shutdown is final, or precedes a restart
749 'restart' : bool # whether the shutdown is final, or precedes a restart
750 }
750 }
751
751
752 Message type: ``shutdown_reply``::
752 Message type: ``shutdown_reply``::
753
753
754 content = {
754 content = {
755 'restart' : bool # whether the shutdown is final, or precedes a restart
755 'restart' : bool # whether the shutdown is final, or precedes a restart
756 }
756 }
757
757
758 .. Note::
758 .. Note::
759
759
760 When the clients detect a dead kernel thanks to inactivity on the heartbeat
760 When the clients detect a dead kernel thanks to inactivity on the heartbeat
761 socket, they simply send a forceful process termination signal, since a dead
761 socket, they simply send a forceful process termination signal, since a dead
762 process is unlikely to respond in any useful way to messages.
762 process is unlikely to respond in any useful way to messages.
763
763
764
764
765 Messages on the PUB/SUB socket
765 Messages on the PUB/SUB socket
766 ==============================
766 ==============================
767
767
768 Streams (stdout, stderr, etc)
768 Streams (stdout, stderr, etc)
769 ------------------------------
769 ------------------------------
770
770
771 Message type: ``stream``::
771 Message type: ``stream``::
772
772
773 content = {
773 content = {
774 # The name of the stream is one of 'stdin', 'stdout', 'stderr'
774 # The name of the stream is one of 'stdin', 'stdout', 'stderr'
775 'name' : str,
775 'name' : str,
776
776
777 # The data is an arbitrary string to be written to that stream
777 # The data is an arbitrary string to be written to that stream
778 'data' : str,
778 'data' : str,
779 }
779 }
780
780
781 When a kernel receives a raw_input call, it should also broadcast it on the pub
781 When a kernel receives a raw_input call, it should also broadcast it on the pub
782 socket with the names 'stdin' and 'stdin_reply'. This will allow other clients
782 socket with the names 'stdin' and 'stdin_reply'. This will allow other clients
783 to monitor/display kernel interactions and possibly replay them to their user
783 to monitor/display kernel interactions and possibly replay them to their user
784 or otherwise expose them.
784 or otherwise expose them.
785
785
786 Display Data
786 Display Data
787 ------------
787 ------------
788
788
789 This type of message is used to bring back data that should be diplayed (text,
789 This type of message is used to bring back data that should be diplayed (text,
790 html, svg, etc.) in the frontends. This data is published to all frontends.
790 html, svg, etc.) in the frontends. This data is published to all frontends.
791 Each message can have multiple representations of the data; it is up to the
791 Each message can have multiple representations of the data; it is up to the
792 frontend to decide which to use and how. A single message should contain all
792 frontend to decide which to use and how. A single message should contain all
793 possible representations of the same information. Each representation should
793 possible representations of the same information. Each representation should
794 be a JSON'able data structure, and should be a valid MIME type.
794 be a JSON'able data structure, and should be a valid MIME type.
795
795
796 Some questions remain about this design:
796 Some questions remain about this design:
797
797
798 * Do we use this message type for pyout/displayhook? Probably not, because
798 * Do we use this message type for pyout/displayhook? Probably not, because
799 the displayhook also has to handle the Out prompt display. On the other hand
799 the displayhook also has to handle the Out prompt display. On the other hand
800 we could put that information into the metadata secion.
800 we could put that information into the metadata secion.
801
801
802 Message type: ``display_data``::
802 Message type: ``display_data``::
803
803
804 content = {
804 content = {
805
805
806 # Who create the data
806 # Who create the data
807 'source' : str,
807 'source' : str,
808
808
809 # The data dict contains key/value pairs, where the kids are MIME
809 # The data dict contains key/value pairs, where the kids are MIME
810 # types and the values are the raw data of the representation in that
810 # types and the values are the raw data of the representation in that
811 # format. The data dict must minimally contain the ``text/plain``
811 # format. The data dict must minimally contain the ``text/plain``
812 # MIME type which is used as a backup representation.
812 # MIME type which is used as a backup representation.
813 'data' : dict,
813 'data' : dict,
814
814
815 # Any metadata that describes the data
815 # Any metadata that describes the data
816 'metadata' : dict
816 'metadata' : dict
817 }
817 }
818
818
819
819
820 Raw Data Publication
820 Raw Data Publication
821 --------------------
821 --------------------
822
822
823 ``display_data`` lets you publish *representations* of data, such as images and html.
823 ``display_data`` lets you publish *representations* of data, such as images and html.
824 This ``data_pub`` message lets you publish *actual raw data*, sent via message buffers.
824 This ``data_pub`` message lets you publish *actual raw data*, sent via message buffers.
825
825
826 data_pub messages are constructed via the :func:`IPython.lib.datapub.publish_data` function:
826 data_pub messages are constructed via the :func:`IPython.lib.datapub.publish_data` function:
827
827
828 .. sourcecode:: python
828 .. sourcecode:: python
829
829
830 from IPython.zmq.datapub import publish_data
830 from IPython.kernel.zmq.datapub import publish_data
831 ns = dict(x=my_array)
831 ns = dict(x=my_array)
832 publish_data(ns)
832 publish_data(ns)
833
833
834
834
835 Message type: ``data_pub``::
835 Message type: ``data_pub``::
836
836
837 content = {
837 content = {
838 # the keys of the data dict, after it has been unserialized
838 # the keys of the data dict, after it has been unserialized
839 keys = ['a', 'b']
839 keys = ['a', 'b']
840 }
840 }
841 # the namespace dict will be serialized in the message buffers,
841 # the namespace dict will be serialized in the message buffers,
842 # which will have a length of at least one
842 # which will have a length of at least one
843 buffers = ['pdict', ...]
843 buffers = ['pdict', ...]
844
844
845
845
846 The interpretation of a sequence of data_pub messages for a given parent request should be
846 The interpretation of a sequence of data_pub messages for a given parent request should be
847 to update a single namespace with subsequent results.
847 to update a single namespace with subsequent results.
848
848
849 .. note::
849 .. note::
850
850
851 No frontends directly handle data_pub messages at this time.
851 No frontends directly handle data_pub messages at this time.
852 It is currently only used by the client/engines in :mod:`IPython.parallel`,
852 It is currently only used by the client/engines in :mod:`IPython.parallel`,
853 where engines may publish *data* to the Client,
853 where engines may publish *data* to the Client,
854 of which the Client can then publish *representations* via ``display_data``
854 of which the Client can then publish *representations* via ``display_data``
855 to various frontends.
855 to various frontends.
856
856
857 Python inputs
857 Python inputs
858 -------------
858 -------------
859
859
860 These messages are the re-broadcast of the ``execute_request``.
860 These messages are the re-broadcast of the ``execute_request``.
861
861
862 Message type: ``pyin``::
862 Message type: ``pyin``::
863
863
864 content = {
864 content = {
865 'code' : str, # Source code to be executed, one or more lines
865 'code' : str, # Source code to be executed, one or more lines
866
866
867 # The counter for this execution is also provided so that clients can
867 # The counter for this execution is also provided so that clients can
868 # display it, since IPython automatically creates variables called _iN
868 # display it, since IPython automatically creates variables called _iN
869 # (for input prompt In[N]).
869 # (for input prompt In[N]).
870 'execution_count' : int
870 'execution_count' : int
871 }
871 }
872
872
873 Python outputs
873 Python outputs
874 --------------
874 --------------
875
875
876 When Python produces output from code that has been compiled in with the
876 When Python produces output from code that has been compiled in with the
877 'single' flag to :func:`compile`, any expression that produces a value (such as
877 'single' flag to :func:`compile`, any expression that produces a value (such as
878 ``1+1``) is passed to ``sys.displayhook``, which is a callable that can do with
878 ``1+1``) is passed to ``sys.displayhook``, which is a callable that can do with
879 this value whatever it wants. The default behavior of ``sys.displayhook`` in
879 this value whatever it wants. The default behavior of ``sys.displayhook`` in
880 the Python interactive prompt is to print to ``sys.stdout`` the :func:`repr` of
880 the Python interactive prompt is to print to ``sys.stdout`` the :func:`repr` of
881 the value as long as it is not ``None`` (which isn't printed at all). In our
881 the value as long as it is not ``None`` (which isn't printed at all). In our
882 case, the kernel instantiates as ``sys.displayhook`` an object which has
882 case, the kernel instantiates as ``sys.displayhook`` an object which has
883 similar behavior, but which instead of printing to stdout, broadcasts these
883 similar behavior, but which instead of printing to stdout, broadcasts these
884 values as ``pyout`` messages for clients to display appropriately.
884 values as ``pyout`` messages for clients to display appropriately.
885
885
886 IPython's displayhook can handle multiple simultaneous formats depending on its
886 IPython's displayhook can handle multiple simultaneous formats depending on its
887 configuration. The default pretty-printed repr text is always given with the
887 configuration. The default pretty-printed repr text is always given with the
888 ``data`` entry in this message. Any other formats are provided in the
888 ``data`` entry in this message. Any other formats are provided in the
889 ``extra_formats`` list. Frontends are free to display any or all of these
889 ``extra_formats`` list. Frontends are free to display any or all of these
890 according to its capabilities. ``extra_formats`` list contains 3-tuples of an ID
890 according to its capabilities. ``extra_formats`` list contains 3-tuples of an ID
891 string, a type string, and the data. The ID is unique to the formatter
891 string, a type string, and the data. The ID is unique to the formatter
892 implementation that created the data. Frontends will typically ignore the ID
892 implementation that created the data. Frontends will typically ignore the ID
893 unless if it has requested a particular formatter. The type string tells the
893 unless if it has requested a particular formatter. The type string tells the
894 frontend how to interpret the data. It is often, but not always a MIME type.
894 frontend how to interpret the data. It is often, but not always a MIME type.
895 Frontends should ignore types that it does not understand. The data itself is
895 Frontends should ignore types that it does not understand. The data itself is
896 any JSON object and depends on the format. It is often, but not always a string.
896 any JSON object and depends on the format. It is often, but not always a string.
897
897
898 Message type: ``pyout``::
898 Message type: ``pyout``::
899
899
900 content = {
900 content = {
901
901
902 # The counter for this execution is also provided so that clients can
902 # The counter for this execution is also provided so that clients can
903 # display it, since IPython automatically creates variables called _N
903 # display it, since IPython automatically creates variables called _N
904 # (for prompt N).
904 # (for prompt N).
905 'execution_count' : int,
905 'execution_count' : int,
906
906
907 # The data dict contains key/value pairs, where the kids are MIME
907 # The data dict contains key/value pairs, where the kids are MIME
908 # types and the values are the raw data of the representation in that
908 # types and the values are the raw data of the representation in that
909 # format. The data dict must minimally contain the ``text/plain``
909 # format. The data dict must minimally contain the ``text/plain``
910 # MIME type which is used as a backup representation.
910 # MIME type which is used as a backup representation.
911 'data' : dict,
911 'data' : dict,
912
912
913 }
913 }
914
914
915 Python errors
915 Python errors
916 -------------
916 -------------
917
917
918 When an error occurs during code execution
918 When an error occurs during code execution
919
919
920 Message type: ``pyerr``::
920 Message type: ``pyerr``::
921
921
922 content = {
922 content = {
923 # Similar content to the execute_reply messages for the 'error' case,
923 # Similar content to the execute_reply messages for the 'error' case,
924 # except the 'status' field is omitted.
924 # except the 'status' field is omitted.
925 }
925 }
926
926
927 Kernel status
927 Kernel status
928 -------------
928 -------------
929
929
930 This message type is used by frontends to monitor the status of the kernel.
930 This message type is used by frontends to monitor the status of the kernel.
931
931
932 Message type: ``status``::
932 Message type: ``status``::
933
933
934 content = {
934 content = {
935 # When the kernel starts to execute code, it will enter the 'busy'
935 # When the kernel starts to execute code, it will enter the 'busy'
936 # state and when it finishes, it will enter the 'idle' state.
936 # state and when it finishes, it will enter the 'idle' state.
937 execution_state : ('busy', 'idle')
937 execution_state : ('busy', 'idle')
938 }
938 }
939
939
940 Kernel crashes
940 Kernel crashes
941 --------------
941 --------------
942
942
943 When the kernel has an unexpected exception, caught by the last-resort
943 When the kernel has an unexpected exception, caught by the last-resort
944 sys.excepthook, we should broadcast the crash handler's output before exiting.
944 sys.excepthook, we should broadcast the crash handler's output before exiting.
945 This will allow clients to notice that a kernel died, inform the user and
945 This will allow clients to notice that a kernel died, inform the user and
946 propose further actions.
946 propose further actions.
947
947
948 Message type: ``crash``::
948 Message type: ``crash``::
949
949
950 content = {
950 content = {
951 # Similarly to the 'error' case for execute_reply messages, this will
951 # Similarly to the 'error' case for execute_reply messages, this will
952 # contain ename, etype and traceback fields.
952 # contain ename, etype and traceback fields.
953
953
954 # An additional field with supplementary information such as where to
954 # An additional field with supplementary information such as where to
955 # send the crash message
955 # send the crash message
956 'info' : str,
956 'info' : str,
957 }
957 }
958
958
959
959
960 Future ideas
960 Future ideas
961 ------------
961 ------------
962
962
963 Other potential message types, currently unimplemented, listed below as ideas.
963 Other potential message types, currently unimplemented, listed below as ideas.
964
964
965 Message type: ``file``::
965 Message type: ``file``::
966
966
967 content = {
967 content = {
968 'path' : 'cool.jpg',
968 'path' : 'cool.jpg',
969 'mimetype' : str,
969 'mimetype' : str,
970 'data' : str,
970 'data' : str,
971 }
971 }
972
972
973
973
974 Messages on the stdin ROUTER/DEALER sockets
974 Messages on the stdin ROUTER/DEALER sockets
975 ===========================================
975 ===========================================
976
976
977 This is a socket where the request/reply pattern goes in the opposite direction:
977 This is a socket where the request/reply pattern goes in the opposite direction:
978 from the kernel to a *single* frontend, and its purpose is to allow
978 from the kernel to a *single* frontend, and its purpose is to allow
979 ``raw_input`` and similar operations that read from ``sys.stdin`` on the kernel
979 ``raw_input`` and similar operations that read from ``sys.stdin`` on the kernel
980 to be fulfilled by the client. The request should be made to the frontend that
980 to be fulfilled by the client. The request should be made to the frontend that
981 made the execution request that prompted ``raw_input`` to be called. For now we
981 made the execution request that prompted ``raw_input`` to be called. For now we
982 will keep these messages as simple as possible, since they only mean to convey
982 will keep these messages as simple as possible, since they only mean to convey
983 the ``raw_input(prompt)`` call.
983 the ``raw_input(prompt)`` call.
984
984
985 Message type: ``input_request``::
985 Message type: ``input_request``::
986
986
987 content = { 'prompt' : str }
987 content = { 'prompt' : str }
988
988
989 Message type: ``input_reply``::
989 Message type: ``input_reply``::
990
990
991 content = { 'value' : str }
991 content = { 'value' : str }
992
992
993 .. Note::
993 .. Note::
994
994
995 We do not explicitly try to forward the raw ``sys.stdin`` object, because in
995 We do not explicitly try to forward the raw ``sys.stdin`` object, because in
996 practice the kernel should behave like an interactive program. When a
996 practice the kernel should behave like an interactive program. When a
997 program is opened on the console, the keyboard effectively takes over the
997 program is opened on the console, the keyboard effectively takes over the
998 ``stdin`` file descriptor, and it can't be used for raw reading anymore.
998 ``stdin`` file descriptor, and it can't be used for raw reading anymore.
999 Since the IPython kernel effectively behaves like a console program (albeit
999 Since the IPython kernel effectively behaves like a console program (albeit
1000 one whose "keyboard" is actually living in a separate process and
1000 one whose "keyboard" is actually living in a separate process and
1001 transported over the zmq connection), raw ``stdin`` isn't expected to be
1001 transported over the zmq connection), raw ``stdin`` isn't expected to be
1002 available.
1002 available.
1003
1003
1004
1004
1005 Heartbeat for kernels
1005 Heartbeat for kernels
1006 =====================
1006 =====================
1007
1007
1008 Initially we had considered using messages like those above over ZMQ for a
1008 Initially we had considered using messages like those above over ZMQ for a
1009 kernel 'heartbeat' (a way to detect quickly and reliably whether a kernel is
1009 kernel 'heartbeat' (a way to detect quickly and reliably whether a kernel is
1010 alive at all, even if it may be busy executing user code). But this has the
1010 alive at all, even if it may be busy executing user code). But this has the
1011 problem that if the kernel is locked inside extension code, it wouldn't execute
1011 problem that if the kernel is locked inside extension code, it wouldn't execute
1012 the python heartbeat code. But it turns out that we can implement a basic
1012 the python heartbeat code. But it turns out that we can implement a basic
1013 heartbeat with pure ZMQ, without using any Python messaging at all.
1013 heartbeat with pure ZMQ, without using any Python messaging at all.
1014
1014
1015 The monitor sends out a single zmq message (right now, it is a str of the
1015 The monitor sends out a single zmq message (right now, it is a str of the
1016 monitor's lifetime in seconds), and gets the same message right back, prefixed
1016 monitor's lifetime in seconds), and gets the same message right back, prefixed
1017 with the zmq identity of the DEALER socket in the heartbeat process. This can be
1017 with the zmq identity of the DEALER socket in the heartbeat process. This can be
1018 a uuid, or even a full message, but there doesn't seem to be a need for packing
1018 a uuid, or even a full message, but there doesn't seem to be a need for packing
1019 up a message when the sender and receiver are the exact same Python object.
1019 up a message when the sender and receiver are the exact same Python object.
1020
1020
1021 The model is this::
1021 The model is this::
1022
1022
1023 monitor.send(str(self.lifetime)) # '1.2345678910'
1023 monitor.send(str(self.lifetime)) # '1.2345678910'
1024
1024
1025 and the monitor receives some number of messages of the form::
1025 and the monitor receives some number of messages of the form::
1026
1026
1027 ['uuid-abcd-dead-beef', '1.2345678910']
1027 ['uuid-abcd-dead-beef', '1.2345678910']
1028
1028
1029 where the first part is the zmq.IDENTITY of the heart's DEALER on the engine, and
1029 where the first part is the zmq.IDENTITY of the heart's DEALER on the engine, and
1030 the rest is the message sent by the monitor. No Python code ever has any
1030 the rest is the message sent by the monitor. No Python code ever has any
1031 access to the message between the monitor's send, and the monitor's recv.
1031 access to the message between the monitor's send, and the monitor's recv.
1032
1032
1033
1033
1034 ToDo
1034 ToDo
1035 ====
1035 ====
1036
1036
1037 Missing things include:
1037 Missing things include:
1038
1038
1039 * Important: finish thinking through the payload concept and API.
1039 * Important: finish thinking through the payload concept and API.
1040
1040
1041 * Important: ensure that we have a good solution for magics like %edit. It's
1041 * Important: ensure that we have a good solution for magics like %edit. It's
1042 likely that with the payload concept we can build a full solution, but not
1042 likely that with the payload concept we can build a full solution, but not
1043 100% clear yet.
1043 100% clear yet.
1044
1044
1045 * Finishing the details of the heartbeat protocol.
1045 * Finishing the details of the heartbeat protocol.
1046
1046
1047 * Signal handling: specify what kind of information kernel should broadcast (or
1047 * Signal handling: specify what kind of information kernel should broadcast (or
1048 not) when it receives signals.
1048 not) when it receives signals.
1049
1049
1050 .. include:: ../links.rst
1050 .. include:: ../links.rst
@@ -1,367 +1,367 b''
1 .. _parallel_messages:
1 .. _parallel_messages:
2
2
3 Messaging for Parallel Computing
3 Messaging for Parallel Computing
4 ================================
4 ================================
5
5
6 This is an extension of the :ref:`messaging <messaging>` doc. Diagrams of the connections
6 This is an extension of the :ref:`messaging <messaging>` doc. Diagrams of the connections
7 can be found in the :ref:`parallel connections <parallel_connections>` doc.
7 can be found in the :ref:`parallel connections <parallel_connections>` doc.
8
8
9
9
10 ZMQ messaging is also used in the parallel computing IPython system. All messages to/from
10 ZMQ messaging is also used in the parallel computing IPython system. All messages to/from
11 kernels remain the same as the single kernel model, and are forwarded through a ZMQ Queue
11 kernels remain the same as the single kernel model, and are forwarded through a ZMQ Queue
12 device. The controller receives all messages and replies in these channels, and saves
12 device. The controller receives all messages and replies in these channels, and saves
13 results for future use.
13 results for future use.
14
14
15 The Controller
15 The Controller
16 --------------
16 --------------
17
17
18 The controller is the central collection of processes in the IPython parallel computing
18 The controller is the central collection of processes in the IPython parallel computing
19 model. It has two major components:
19 model. It has two major components:
20
20
21 * The Hub
21 * The Hub
22 * A collection of Schedulers
22 * A collection of Schedulers
23
23
24 The Hub
24 The Hub
25 -------
25 -------
26
26
27 The Hub is the central process for monitoring the state of the engines, and all task
27 The Hub is the central process for monitoring the state of the engines, and all task
28 requests and results. It has no role in execution and does no relay of messages, so
28 requests and results. It has no role in execution and does no relay of messages, so
29 large blocking requests or database actions in the Hub do not have the ability to impede
29 large blocking requests or database actions in the Hub do not have the ability to impede
30 job submission and results.
30 job submission and results.
31
31
32 Registration (``ROUTER``)
32 Registration (``ROUTER``)
33 *************************
33 *************************
34
34
35 The first function of the Hub is to facilitate and monitor connections of clients
35 The first function of the Hub is to facilitate and monitor connections of clients
36 and engines. Both client and engine registration are handled by the same socket, so only
36 and engines. Both client and engine registration are handled by the same socket, so only
37 one ip/port pair is needed to connect any number of connections and clients.
37 one ip/port pair is needed to connect any number of connections and clients.
38
38
39 Engines register with the ``zmq.IDENTITY`` of their two ``DEALER`` sockets, one for the
39 Engines register with the ``zmq.IDENTITY`` of their two ``DEALER`` sockets, one for the
40 queue, which receives execute requests, and one for the heartbeat, which is used to
40 queue, which receives execute requests, and one for the heartbeat, which is used to
41 monitor the survival of the Engine process.
41 monitor the survival of the Engine process.
42
42
43 Message type: ``registration_request``::
43 Message type: ``registration_request``::
44
44
45 content = {
45 content = {
46 'uuid' : 'abcd-1234-...', # the zmq.IDENTITY of the engine's sockets
46 'uuid' : 'abcd-1234-...', # the zmq.IDENTITY of the engine's sockets
47 }
47 }
48
48
49 .. note::
49 .. note::
50
50
51 these are always the same, at least for now.
51 these are always the same, at least for now.
52
52
53 The Controller replies to an Engine's registration request with the engine's integer ID,
53 The Controller replies to an Engine's registration request with the engine's integer ID,
54 and all the remaining connection information for connecting the heartbeat process, and
54 and all the remaining connection information for connecting the heartbeat process, and
55 kernel queue socket(s). The message status will be an error if the Engine requests IDs that
55 kernel queue socket(s). The message status will be an error if the Engine requests IDs that
56 already in use.
56 already in use.
57
57
58 Message type: ``registration_reply``::
58 Message type: ``registration_reply``::
59
59
60 content = {
60 content = {
61 'status' : 'ok', # or 'error'
61 'status' : 'ok', # or 'error'
62 # if ok:
62 # if ok:
63 'id' : 0, # int, the engine id
63 'id' : 0, # int, the engine id
64 }
64 }
65
65
66 Clients use the same socket as engines to start their connections. Connection requests
66 Clients use the same socket as engines to start their connections. Connection requests
67 from clients need no information:
67 from clients need no information:
68
68
69 Message type: ``connection_request``::
69 Message type: ``connection_request``::
70
70
71 content = {}
71 content = {}
72
72
73 The reply to a Client registration request contains the connection information for the
73 The reply to a Client registration request contains the connection information for the
74 multiplexer and load balanced queues, as well as the address for direct hub
74 multiplexer and load balanced queues, as well as the address for direct hub
75 queries. If any of these addresses is `None`, that functionality is not available.
75 queries. If any of these addresses is `None`, that functionality is not available.
76
76
77 Message type: ``connection_reply``::
77 Message type: ``connection_reply``::
78
78
79 content = {
79 content = {
80 'status' : 'ok', # or 'error'
80 'status' : 'ok', # or 'error'
81 }
81 }
82
82
83 Heartbeat
83 Heartbeat
84 *********
84 *********
85
85
86 The hub uses a heartbeat system to monitor engines, and track when they become
86 The hub uses a heartbeat system to monitor engines, and track when they become
87 unresponsive. As described in :ref:`messaging <messaging>`, and shown in :ref:`connections
87 unresponsive. As described in :ref:`messaging <messaging>`, and shown in :ref:`connections
88 <parallel_connections>`.
88 <parallel_connections>`.
89
89
90 Notification (``PUB``)
90 Notification (``PUB``)
91 **********************
91 **********************
92
92
93 The hub publishes all engine registration/unregistration events on a ``PUB`` socket.
93 The hub publishes all engine registration/unregistration events on a ``PUB`` socket.
94 This allows clients to have up-to-date engine ID sets without polling. Registration
94 This allows clients to have up-to-date engine ID sets without polling. Registration
95 notifications contain both the integer engine ID and the queue ID, which is necessary for
95 notifications contain both the integer engine ID and the queue ID, which is necessary for
96 sending messages via the Multiplexer Queue and Control Queues.
96 sending messages via the Multiplexer Queue and Control Queues.
97
97
98 Message type: ``registration_notification``::
98 Message type: ``registration_notification``::
99
99
100 content = {
100 content = {
101 'id' : 0, # engine ID that has been registered
101 'id' : 0, # engine ID that has been registered
102 'uuid' : 'engine_id' # the IDENT for the engine's sockets
102 'uuid' : 'engine_id' # the IDENT for the engine's sockets
103 }
103 }
104
104
105 Message type : ``unregistration_notification``::
105 Message type : ``unregistration_notification``::
106
106
107 content = {
107 content = {
108 'id' : 0 # engine ID that has been unregistered
108 'id' : 0 # engine ID that has been unregistered
109 'uuid' : 'engine_id' # the IDENT for the engine's sockets
109 'uuid' : 'engine_id' # the IDENT for the engine's sockets
110 }
110 }
111
111
112
112
113 Client Queries (``ROUTER``)
113 Client Queries (``ROUTER``)
114 ***************************
114 ***************************
115
115
116 The hub monitors and logs all queue traffic, so that clients can retrieve past
116 The hub monitors and logs all queue traffic, so that clients can retrieve past
117 results or monitor pending tasks. This information may reside in-memory on the Hub, or
117 results or monitor pending tasks. This information may reside in-memory on the Hub, or
118 on disk in a database (SQLite and MongoDB are currently supported). These requests are
118 on disk in a database (SQLite and MongoDB are currently supported). These requests are
119 handled by the same socket as registration.
119 handled by the same socket as registration.
120
120
121
121
122 :func:`queue_request` requests can specify multiple engines to query via the `targets`
122 :func:`queue_request` requests can specify multiple engines to query via the `targets`
123 element. A verbose flag can be passed, to determine whether the result should be the list
123 element. A verbose flag can be passed, to determine whether the result should be the list
124 of `msg_ids` in the queue or simply the length of each list.
124 of `msg_ids` in the queue or simply the length of each list.
125
125
126 Message type: ``queue_request``::
126 Message type: ``queue_request``::
127
127
128 content = {
128 content = {
129 'verbose' : True, # whether return should be lists themselves or just lens
129 'verbose' : True, # whether return should be lists themselves or just lens
130 'targets' : [0,3,1] # list of ints
130 'targets' : [0,3,1] # list of ints
131 }
131 }
132
132
133 The content of a reply to a :func:`queue_request` request is a dict, keyed by the engine
133 The content of a reply to a :func:`queue_request` request is a dict, keyed by the engine
134 IDs. Note that they will be the string representation of the integer keys, since JSON
134 IDs. Note that they will be the string representation of the integer keys, since JSON
135 cannot handle number keys. The three keys of each dict are::
135 cannot handle number keys. The three keys of each dict are::
136
136
137 'completed' : messages submitted via any queue that ran on the engine
137 'completed' : messages submitted via any queue that ran on the engine
138 'queue' : jobs submitted via MUX queue, whose results have not been received
138 'queue' : jobs submitted via MUX queue, whose results have not been received
139 'tasks' : tasks that are known to have been submitted to the engine, but
139 'tasks' : tasks that are known to have been submitted to the engine, but
140 have not completed. Note that with the pure zmq scheduler, this will
140 have not completed. Note that with the pure zmq scheduler, this will
141 always be 0/[].
141 always be 0/[].
142
142
143 Message type: ``queue_reply``::
143 Message type: ``queue_reply``::
144
144
145 content = {
145 content = {
146 'status' : 'ok', # or 'error'
146 'status' : 'ok', # or 'error'
147 # if verbose=False:
147 # if verbose=False:
148 '0' : {'completed' : 1, 'queue' : 7, 'tasks' : 0},
148 '0' : {'completed' : 1, 'queue' : 7, 'tasks' : 0},
149 # if verbose=True:
149 # if verbose=True:
150 '1' : {'completed' : ['abcd-...','1234-...'], 'queue' : ['58008-'], 'tasks' : []},
150 '1' : {'completed' : ['abcd-...','1234-...'], 'queue' : ['58008-'], 'tasks' : []},
151 }
151 }
152
152
153 Clients can request individual results directly from the hub. This is primarily for
153 Clients can request individual results directly from the hub. This is primarily for
154 gathering results of executions not submitted by the requesting client, as the client
154 gathering results of executions not submitted by the requesting client, as the client
155 will have all its own results already. Requests are made by msg_id, and can contain one or
155 will have all its own results already. Requests are made by msg_id, and can contain one or
156 more msg_id. An additional boolean key 'statusonly' can be used to not request the
156 more msg_id. An additional boolean key 'statusonly' can be used to not request the
157 results, but simply poll the status of the jobs.
157 results, but simply poll the status of the jobs.
158
158
159 Message type: ``result_request``::
159 Message type: ``result_request``::
160
160
161 content = {
161 content = {
162 'msg_ids' : ['uuid','...'], # list of strs
162 'msg_ids' : ['uuid','...'], # list of strs
163 'targets' : [1,2,3], # list of int ids or uuids
163 'targets' : [1,2,3], # list of int ids or uuids
164 'statusonly' : False, # bool
164 'statusonly' : False, # bool
165 }
165 }
166
166
167 The :func:`result_request` reply contains the content objects of the actual execution
167 The :func:`result_request` reply contains the content objects of the actual execution
168 reply messages. If `statusonly=True`, then there will be only the 'pending' and
168 reply messages. If `statusonly=True`, then there will be only the 'pending' and
169 'completed' lists.
169 'completed' lists.
170
170
171
171
172 Message type: ``result_reply``::
172 Message type: ``result_reply``::
173
173
174 content = {
174 content = {
175 'status' : 'ok', # else error
175 'status' : 'ok', # else error
176 # if ok:
176 # if ok:
177 'acbd-...' : msg, # the content dict is keyed by msg_ids,
177 'acbd-...' : msg, # the content dict is keyed by msg_ids,
178 # values are the result messages
178 # values are the result messages
179 # there will be none of these if `statusonly=True`
179 # there will be none of these if `statusonly=True`
180 'pending' : ['msg_id','...'], # msg_ids still pending
180 'pending' : ['msg_id','...'], # msg_ids still pending
181 'completed' : ['msg_id','...'], # list of completed msg_ids
181 'completed' : ['msg_id','...'], # list of completed msg_ids
182 }
182 }
183 buffers = ['bufs','...'] # the buffers that contained the results of the objects.
183 buffers = ['bufs','...'] # the buffers that contained the results of the objects.
184 # this will be empty if no messages are complete, or if
184 # this will be empty if no messages are complete, or if
185 # statusonly is True.
185 # statusonly is True.
186
186
187 For memory management purposes, Clients can also instruct the hub to forget the
187 For memory management purposes, Clients can also instruct the hub to forget the
188 results of messages. This can be done by message ID or engine ID. Individual messages are
188 results of messages. This can be done by message ID or engine ID. Individual messages are
189 dropped by msg_id, and all messages completed on an engine are dropped by engine ID. This
189 dropped by msg_id, and all messages completed on an engine are dropped by engine ID. This
190 may no longer be necessary with the mongodb-based message logging backend.
190 may no longer be necessary with the mongodb-based message logging backend.
191
191
192 If the msg_ids element is the string ``'all'`` instead of a list, then all completed
192 If the msg_ids element is the string ``'all'`` instead of a list, then all completed
193 results are forgotten.
193 results are forgotten.
194
194
195 Message type: ``purge_request``::
195 Message type: ``purge_request``::
196
196
197 content = {
197 content = {
198 'msg_ids' : ['id1', 'id2',...], # list of msg_ids or 'all'
198 'msg_ids' : ['id1', 'id2',...], # list of msg_ids or 'all'
199 'engine_ids' : [0,2,4] # list of engine IDs
199 'engine_ids' : [0,2,4] # list of engine IDs
200 }
200 }
201
201
202 The reply to a purge request is simply the status 'ok' if the request succeeded, or an
202 The reply to a purge request is simply the status 'ok' if the request succeeded, or an
203 explanation of why it failed, such as requesting the purge of a nonexistent or pending
203 explanation of why it failed, such as requesting the purge of a nonexistent or pending
204 message.
204 message.
205
205
206 Message type: ``purge_reply``::
206 Message type: ``purge_reply``::
207
207
208 content = {
208 content = {
209 'status' : 'ok', # or 'error'
209 'status' : 'ok', # or 'error'
210 }
210 }
211
211
212
212
213 Schedulers
213 Schedulers
214 ----------
214 ----------
215
215
216 There are three basic schedulers:
216 There are three basic schedulers:
217
217
218 * Task Scheduler
218 * Task Scheduler
219 * MUX Scheduler
219 * MUX Scheduler
220 * Control Scheduler
220 * Control Scheduler
221
221
222 The MUX and Control schedulers are simple MonitoredQueue ØMQ devices, with ``ROUTER``
222 The MUX and Control schedulers are simple MonitoredQueue ØMQ devices, with ``ROUTER``
223 sockets on either side. This allows the queue to relay individual messages to particular
223 sockets on either side. This allows the queue to relay individual messages to particular
224 targets via ``zmq.IDENTITY`` routing. The Task scheduler may be a MonitoredQueue ØMQ
224 targets via ``zmq.IDENTITY`` routing. The Task scheduler may be a MonitoredQueue ØMQ
225 device, in which case the client-facing socket is ``ROUTER``, and the engine-facing socket
225 device, in which case the client-facing socket is ``ROUTER``, and the engine-facing socket
226 is ``DEALER``. The result of this is that client-submitted messages are load-balanced via
226 is ``DEALER``. The result of this is that client-submitted messages are load-balanced via
227 the ``DEALER`` socket, but the engine's replies to each message go to the requesting client.
227 the ``DEALER`` socket, but the engine's replies to each message go to the requesting client.
228
228
229 Raw ``DEALER`` scheduling is quite primitive, and doesn't allow message introspection, so
229 Raw ``DEALER`` scheduling is quite primitive, and doesn't allow message introspection, so
230 there are also Python Schedulers that can be used. These Schedulers behave in much the
230 there are also Python Schedulers that can be used. These Schedulers behave in much the
231 same way as a MonitoredQueue does from the outside, but have rich internal logic to
231 same way as a MonitoredQueue does from the outside, but have rich internal logic to
232 determine destinations, as well as handle dependency graphs Their sockets are always
232 determine destinations, as well as handle dependency graphs Their sockets are always
233 ``ROUTER`` on both sides.
233 ``ROUTER`` on both sides.
234
234
235 The Python task schedulers have an additional message type, which informs the Hub of
235 The Python task schedulers have an additional message type, which informs the Hub of
236 the destination of a task as soon as that destination is known.
236 the destination of a task as soon as that destination is known.
237
237
238 Message type: ``task_destination``::
238 Message type: ``task_destination``::
239
239
240 content = {
240 content = {
241 'msg_id' : 'abcd-1234-...', # the msg's uuid
241 'msg_id' : 'abcd-1234-...', # the msg's uuid
242 'engine_id' : '1234-abcd-...', # the destination engine's zmq.IDENTITY
242 'engine_id' : '1234-abcd-...', # the destination engine's zmq.IDENTITY
243 }
243 }
244
244
245 :func:`apply`
245 :func:`apply`
246 *************
246 *************
247
247
248 In terms of message classes, the MUX scheduler and Task scheduler relay the exact same
248 In terms of message classes, the MUX scheduler and Task scheduler relay the exact same
249 message types. Their only difference lies in how the destination is selected.
249 message types. Their only difference lies in how the destination is selected.
250
250
251 The `Namespace <http://gist.github.com/483294>`_ model suggests that execution be able to
251 The `Namespace <http://gist.github.com/483294>`_ model suggests that execution be able to
252 use the model::
252 use the model::
253
253
254 ns.apply(f, *args, **kwargs)
254 ns.apply(f, *args, **kwargs)
255
255
256 which takes `f`, a function in the user's namespace, and executes ``f(*args, **kwargs)``
256 which takes `f`, a function in the user's namespace, and executes ``f(*args, **kwargs)``
257 on a remote engine, returning the result (or, for non-blocking, information facilitating
257 on a remote engine, returning the result (or, for non-blocking, information facilitating
258 later retrieval of the result). This model, unlike the execute message which just uses a
258 later retrieval of the result). This model, unlike the execute message which just uses a
259 code string, must be able to send arbitrary (pickleable) Python objects. And ideally, copy
259 code string, must be able to send arbitrary (pickleable) Python objects. And ideally, copy
260 as little data as we can. The `buffers` property of a Message was introduced for this
260 as little data as we can. The `buffers` property of a Message was introduced for this
261 purpose.
261 purpose.
262
262
263 Utility method :func:`build_apply_message` in :mod:`IPython.zmq.serialize` wraps a
263 Utility method :func:`build_apply_message` in :mod:`IPython.kernel.zmq.serialize` wraps a
264 function signature and builds a sendable buffer format for minimal data copying (exactly
264 function signature and builds a sendable buffer format for minimal data copying (exactly
265 zero copies of numpy array data or buffers or large strings).
265 zero copies of numpy array data or buffers or large strings).
266
266
267 Message type: ``apply_request``::
267 Message type: ``apply_request``::
268
268
269 metadata = {
269 metadata = {
270 'after' : ['msg_id',...], # list of msg_ids or output of Dependency.as_dict()
270 'after' : ['msg_id',...], # list of msg_ids or output of Dependency.as_dict()
271 'follow' : ['msg_id',...], # list of msg_ids or output of Dependency.as_dict()
271 'follow' : ['msg_id',...], # list of msg_ids or output of Dependency.as_dict()
272 }
272 }
273 content = {}
273 content = {}
274 buffers = ['...'] # at least 3 in length
274 buffers = ['...'] # at least 3 in length
275 # as built by build_apply_message(f,args,kwargs)
275 # as built by build_apply_message(f,args,kwargs)
276
276
277 after/follow represent task dependencies. 'after' corresponds to a time dependency. The
277 after/follow represent task dependencies. 'after' corresponds to a time dependency. The
278 request will not arrive at an engine until the 'after' dependency tasks have completed.
278 request will not arrive at an engine until the 'after' dependency tasks have completed.
279 'follow' corresponds to a location dependency. The task will be submitted to the same
279 'follow' corresponds to a location dependency. The task will be submitted to the same
280 engine as these msg_ids (see :class:`Dependency` docs for details).
280 engine as these msg_ids (see :class:`Dependency` docs for details).
281
281
282 Message type: ``apply_reply``::
282 Message type: ``apply_reply``::
283
283
284 content = {
284 content = {
285 'status' : 'ok' # 'ok' or 'error'
285 'status' : 'ok' # 'ok' or 'error'
286 # other error info here, as in other messages
286 # other error info here, as in other messages
287 }
287 }
288 buffers = ['...'] # either 1 or 2 in length
288 buffers = ['...'] # either 1 or 2 in length
289 # a serialization of the return value of f(*args,**kwargs)
289 # a serialization of the return value of f(*args,**kwargs)
290 # only populated if status is 'ok'
290 # only populated if status is 'ok'
291
291
292 All engine execution and data movement is performed via apply messages.
292 All engine execution and data movement is performed via apply messages.
293
293
294 Control Messages
294 Control Messages
295 ----------------
295 ----------------
296
296
297 Messages that interact with the engines, but are not meant to execute code, are submitted
297 Messages that interact with the engines, but are not meant to execute code, are submitted
298 via the Control queue. These messages have high priority, and are thus received and
298 via the Control queue. These messages have high priority, and are thus received and
299 handled before any execution requests.
299 handled before any execution requests.
300
300
301 Clients may want to clear the namespace on the engine. There are no arguments nor
301 Clients may want to clear the namespace on the engine. There are no arguments nor
302 information involved in this request, so the content is empty.
302 information involved in this request, so the content is empty.
303
303
304 Message type: ``clear_request``::
304 Message type: ``clear_request``::
305
305
306 content = {}
306 content = {}
307
307
308 Message type: ``clear_reply``::
308 Message type: ``clear_reply``::
309
309
310 content = {
310 content = {
311 'status' : 'ok' # 'ok' or 'error'
311 'status' : 'ok' # 'ok' or 'error'
312 # other error info here, as in other messages
312 # other error info here, as in other messages
313 }
313 }
314
314
315 Clients may want to abort tasks that have not yet run. This can by done by message id, or
315 Clients may want to abort tasks that have not yet run. This can by done by message id, or
316 all enqueued messages can be aborted if None is specified.
316 all enqueued messages can be aborted if None is specified.
317
317
318 Message type: ``abort_request``::
318 Message type: ``abort_request``::
319
319
320 content = {
320 content = {
321 'msg_ids' : ['1234-...', '...'] # list of msg_ids or None
321 'msg_ids' : ['1234-...', '...'] # list of msg_ids or None
322 }
322 }
323
323
324 Message type: ``abort_reply``::
324 Message type: ``abort_reply``::
325
325
326 content = {
326 content = {
327 'status' : 'ok' # 'ok' or 'error'
327 'status' : 'ok' # 'ok' or 'error'
328 # other error info here, as in other messages
328 # other error info here, as in other messages
329 }
329 }
330
330
331 The last action a client may want to do is shutdown the kernel. If a kernel receives a
331 The last action a client may want to do is shutdown the kernel. If a kernel receives a
332 shutdown request, then it aborts all queued messages, replies to the request, and exits.
332 shutdown request, then it aborts all queued messages, replies to the request, and exits.
333
333
334 Message type: ``shutdown_request``::
334 Message type: ``shutdown_request``::
335
335
336 content = {}
336 content = {}
337
337
338 Message type: ``shutdown_reply``::
338 Message type: ``shutdown_reply``::
339
339
340 content = {
340 content = {
341 'status' : 'ok' # 'ok' or 'error'
341 'status' : 'ok' # 'ok' or 'error'
342 # other error info here, as in other messages
342 # other error info here, as in other messages
343 }
343 }
344
344
345
345
346 Implementation
346 Implementation
347 --------------
347 --------------
348
348
349 There are a few differences in implementation between the `StreamSession` object used in
349 There are a few differences in implementation between the `StreamSession` object used in
350 the newparallel branch and the `Session` object, the main one being that messages are
350 the newparallel branch and the `Session` object, the main one being that messages are
351 sent in parts, rather than as a single serialized object. `StreamSession` objects also
351 sent in parts, rather than as a single serialized object. `StreamSession` objects also
352 take pack/unpack functions, which are to be used when serializing/deserializing objects.
352 take pack/unpack functions, which are to be used when serializing/deserializing objects.
353 These can be any functions that translate to/from formats that ZMQ sockets can send
353 These can be any functions that translate to/from formats that ZMQ sockets can send
354 (buffers,bytes, etc.).
354 (buffers,bytes, etc.).
355
355
356 Split Sends
356 Split Sends
357 ***********
357 ***********
358
358
359 Previously, messages were bundled as a single json object and one call to
359 Previously, messages were bundled as a single json object and one call to
360 :func:`socket.send_json`. Since the hub inspects all messages, and doesn't need to
360 :func:`socket.send_json`. Since the hub inspects all messages, and doesn't need to
361 see the content of the messages, which can be large, messages are now serialized and sent in
361 see the content of the messages, which can be large, messages are now serialized and sent in
362 pieces. All messages are sent in at least 4 parts: the header, the parent header, the metadata and the content.
362 pieces. All messages are sent in at least 4 parts: the header, the parent header, the metadata and the content.
363 This allows the controller to unpack and inspect the (always small) header,
363 This allows the controller to unpack and inspect the (always small) header,
364 without spending time unpacking the content unless the message is bound for the
364 without spending time unpacking the content unless the message is bound for the
365 controller. Buffers are added on to the end of the message, and can be any objects that
365 controller. Buffers are added on to the end of the message, and can be any objects that
366 present the buffer interface.
366 present the buffer interface.
367
367
@@ -1,85 +1,85 b''
1 .. _module_reorg:
1 .. _module_reorg:
2
2
3 ===========================
3 ===========================
4 IPython module organization
4 IPython module organization
5 ===========================
5 ===========================
6
6
7 As of the 0.11 release of IPython, the top-level packages and modules have
7 As of the 0.11 release of IPython, the top-level packages and modules have
8 been completely reorganized. This section describes the purpose of the
8 been completely reorganized. This section describes the purpose of the
9 top-level IPython subpackages.
9 top-level IPython subpackages.
10
10
11 Subpackage descriptions
11 Subpackage descriptions
12 =======================
12 =======================
13
13
14 * :mod:`IPython.config`. This package contains the :ref:`configuration system
14 * :mod:`IPython.config`. This package contains the :ref:`configuration system
15 <config_index>` of IPython, as well as default configuration files for the
15 <config_index>` of IPython, as well as default configuration files for the
16 different IPython applications.
16 different IPython applications.
17
17
18 * :mod:`IPython.core`. This sub-package contains the core of the IPython
18 * :mod:`IPython.core`. This sub-package contains the core of the IPython
19 interpreter, but none of its extended capabilities.
19 interpreter, but none of its extended capabilities.
20
20
21 * :mod:`IPython.deathrow`. This is for code that is outdated, untested,
21 * :mod:`IPython.deathrow`. This is for code that is outdated, untested,
22 rotting, or that belongs in a separate third party project. Eventually all
22 rotting, or that belongs in a separate third party project. Eventually all
23 this code will either 1) be revived by someone willing to maintain it with
23 this code will either 1) be revived by someone willing to maintain it with
24 tests and docs and re-included into IPython or 2) be removed from IPython
24 tests and docs and re-included into IPython or 2) be removed from IPython
25 proper, but put into a separate third-party Python package. No new code will
25 proper, but put into a separate third-party Python package. No new code will
26 be allowed here. If your favorite extension has been moved here please
26 be allowed here. If your favorite extension has been moved here please
27 contact the IPython developer mailing list to help us determine the best
27 contact the IPython developer mailing list to help us determine the best
28 course of action.
28 course of action.
29
29
30 * :mod:`IPython.extensions`. This package contains fully supported IPython
30 * :mod:`IPython.extensions`. This package contains fully supported IPython
31 extensions. These extensions adhere to the official IPython extension API
31 extensions. These extensions adhere to the official IPython extension API
32 and can be enabled by adding them to a field in the configuration file.
32 and can be enabled by adding them to a field in the configuration file.
33 If your extension is no longer in this location, please look in
33 If your extension is no longer in this location, please look in
34 :mod:`IPython.quarantine` and :mod:`IPython.deathrow` and contact the
34 :mod:`IPython.quarantine` and :mod:`IPython.deathrow` and contact the
35 IPython developer mailing list.
35 IPython developer mailing list.
36
36
37 * :mod:`IPython.external`. This package contains third party packages and
37 * :mod:`IPython.external`. This package contains third party packages and
38 modules that IPython ships internally to reduce the number of dependencies.
38 modules that IPython ships internally to reduce the number of dependencies.
39 Usually, these are short, single file modules.
39 Usually, these are short, single file modules.
40
40
41 * :mod:`IPython.frontend`. This package contains the various IPython
41 * :mod:`IPython.frontend`. This package contains the various IPython
42 frontends which communicate with the :mod:`IPython.zmq` kernels (see
42 frontends which communicate with the :mod:`IPython.kernel.zmq` kernels (see
43 :ref:`Messaging in IPython <messaging>`). This includes the
43 :ref:`Messaging in IPython <messaging>`). This includes the
44 :ref:`ipython notebook <htmlnotebook>`, :ref:`ipython qtconsole
44 :ref:`ipython notebook <htmlnotebook>`, :ref:`ipython qtconsole
45 <qtconsole>`, and :ref:`ipython console <two_process_console>` entry points.
45 <qtconsole>`, and :ref:`ipython console <two_process_console>` entry points.
46
46
47 * :mod:`IPython.lib`. IPython has many extended capabilities that are not part
47 * :mod:`IPython.lib`. IPython has many extended capabilities that are not part
48 of the IPython core. These things will go here and in. Modules in this
48 of the IPython core. These things will go here and in. Modules in this
49 package are similar to extensions, but don't adhere to the official
49 package are similar to extensions, but don't adhere to the official
50 IPython extension API.
50 IPython extension API.
51
51
52 * :mod:`IPython.nbformat`. This package contains code related to reading and
52 * :mod:`IPython.nbformat`. This package contains code related to reading and
53 writing :ref:`IPython Notebook's <htmlnotebook>` file format (`.ipynb`
53 writing :ref:`IPython Notebook's <htmlnotebook>` file format (`.ipynb`
54 files).
54 files).
55
55
56 * :mod:`IPython.parallel`. This contains :ref:`IPython's parallel computing
56 * :mod:`IPython.parallel`. This contains :ref:`IPython's parallel computing
57 system <parallel_index>`. This previously lived under :mod:`IPython.kernel`,
57 system <parallel_index>`. This previously lived under :mod:`IPython.kernel`,
58 but that module has been deprecated.
58 but that module has been deprecated.
59
59
60 * :mod:`IPython.quarantine`. This is for code that doesn't meet IPython's
60 * :mod:`IPython.quarantine`. This is for code that doesn't meet IPython's
61 standards, but that we plan on keeping. To be moved out of this sub-package
61 standards, but that we plan on keeping. To be moved out of this sub-package
62 a module needs to have approval of the core IPython developers, tests and
62 a module needs to have approval of the core IPython developers, tests and
63 documentation. If your favorite extension has been moved here please contact
63 documentation. If your favorite extension has been moved here please contact
64 the IPython developer mailing list to help us determine the best course of
64 the IPython developer mailing list to help us determine the best course of
65 action.
65 action.
66
66
67 * :mod:`IPython.scripts`. This package contains a variety of top-level
67 * :mod:`IPython.scripts`. This package contains a variety of top-level
68 command line scripts. Eventually, these should be moved to the
68 command line scripts. Eventually, these should be moved to the
69 :file:`scripts` subdirectory of the appropriate IPython subpackage.
69 :file:`scripts` subdirectory of the appropriate IPython subpackage.
70
70
71 * :mod:`IPython.testing`. This package contains code related to the IPython
71 * :mod:`IPython.testing`. This package contains code related to the IPython
72 test suite, which locates and executes the `tests` submodules of all
72 test suite, which locates and executes the `tests` submodules of all
73 IPython sub-packages. It also contains decorators and utilities relevant for
73 IPython sub-packages. It also contains decorators and utilities relevant for
74 testing.
74 testing.
75
75
76 * :mod:`IPython.utils`. This sub-package will contain anything that might
76 * :mod:`IPython.utils`. This sub-package will contain anything that might
77 eventually be found in the Python standard library, like things in
77 eventually be found in the Python standard library, like things in
78 :mod:`genutils`. Each sub-module in this sub-package should contain
78 :mod:`genutils`. Each sub-module in this sub-package should contain
79 functions and classes that serve a single purpose and that don't
79 functions and classes that serve a single purpose and that don't
80 depend on things in the rest of IPython.
80 depend on things in the rest of IPython.
81
81
82 * :mod:`IPython.zmq`. This sub-package contains code related to starting and
82 * :mod:`IPython.kernel.zmq`. This sub-package contains code related to starting
83 managing IPython kernels, which :mod:`IPython.frontend` instances can then
83 and managing IPython kernels, which :mod:`IPython.frontend` instances can then
84 communicate with (see :ref:`Messaging in IPython <messaging>`).
84 communicate with (see :ref:`Messaging in IPython <messaging>`).
85
85
@@ -1,395 +1,395 b''
1 Overview
1 Overview
2 ========
2 ========
3
3
4 This document describes the steps required to install IPython. IPython is
4 This document describes the steps required to install IPython. IPython is
5 organized into a number of subpackages, each of which has its own dependencies.
5 organized into a number of subpackages, each of which has its own dependencies.
6 All of the subpackages come with IPython, so you don't need to download and
6 All of the subpackages come with IPython, so you don't need to download and
7 install them separately. However, to use a given subpackage, you will need to
7 install them separately. However, to use a given subpackage, you will need to
8 install all of its dependencies.
8 install all of its dependencies.
9
9
10 Please let us know if you have problems installing IPython or any of its
10 Please let us know if you have problems installing IPython or any of its
11 dependencies. Officially, IPython requires Python 2.6, 2.7, 3.1, or 3.2.
11 dependencies. Officially, IPython requires Python 2.6, 2.7, 3.1, or 3.2.
12
12
13 .. warning::
13 .. warning::
14
14
15 Since version 0.11, IPython has a hard syntax dependency on 2.6, and will no
15 Since version 0.11, IPython has a hard syntax dependency on 2.6, and will no
16 longer work on Python <= 2.5. You can find older versions of IPython which
16 longer work on Python <= 2.5. You can find older versions of IPython which
17 supported Python <= 2.5 `here <http://archive.ipython.org/release/>`_
17 supported Python <= 2.5 `here <http://archive.ipython.org/release/>`_
18
18
19 Some of the installation approaches use the :mod:`distribute` package and its
19 Some of the installation approaches use the :mod:`distribute` package and its
20 :command:`easy_install` command line program. In many scenarios, this provides
20 :command:`easy_install` command line program. In many scenarios, this provides
21 the most simple method of installing IPython and its dependencies. More
21 the most simple method of installing IPython and its dependencies. More
22 information about :mod:`distribute` can be found on `its PyPI page
22 information about :mod:`distribute` can be found on `its PyPI page
23 <http://pypi.python.org/pypi/distribute>`__.
23 <http://pypi.python.org/pypi/distribute>`__.
24
24
25 .. note::
25 .. note::
26
26
27 On Windows, IPython has a hard dependency on :mod:`distribute`. We hope to
27 On Windows, IPython has a hard dependency on :mod:`distribute`. We hope to
28 change this in the future, but for now on Windows, you *must* install
28 change this in the future, but for now on Windows, you *must* install
29 :mod:`distribute`.
29 :mod:`distribute`.
30
30
31 More general information about installing Python packages can be found in
31 More general information about installing Python packages can be found in
32 `Python's documentation <http://docs.python.org>`_.
32 `Python's documentation <http://docs.python.org>`_.
33
33
34
34
35 Quickstart
35 Quickstart
36 ==========
36 ==========
37
37
38 If you have :mod:`distribute` installed and you are on OS X or Linux (not
38 If you have :mod:`distribute` installed and you are on OS X or Linux (not
39 Windows), the following will download and install IPython *and* the main
39 Windows), the following will download and install IPython *and* the main
40 optional dependencies:
40 optional dependencies:
41
41
42 .. code-block:: bash
42 .. code-block:: bash
43
43
44 $ easy_install ipython[zmq,qtconsole,notebook,test]
44 $ easy_install ipython[zmq,qtconsole,notebook,test]
45
45
46 This will get:
46 This will get:
47
47
48 - jinja2, needed for the notebook
48 - jinja2, needed for the notebook
49 - pyzmq, needed for IPython's parallel computing features, qt console and
49 - pyzmq, needed for IPython's parallel computing features, qt console and
50 notebook.
50 notebook.
51 - pygments, used by the Qt console for syntax highlighting.
51 - pygments, used by the Qt console for syntax highlighting.
52 - tornado, needed by the web-based notebook
52 - tornado, needed by the web-based notebook
53 - nose, used by the test suite.
53 - nose, used by the test suite.
54
54
55 To run IPython's test suite, use the :command:`iptest` command:
55 To run IPython's test suite, use the :command:`iptest` command:
56
56
57 .. code-block:: bash
57 .. code-block:: bash
58
58
59 $ iptest
59 $ iptest
60
60
61
61
62 Installing IPython itself
62 Installing IPython itself
63 =========================
63 =========================
64
64
65 Given a properly built Python, the basic interactive IPython shell will work
65 Given a properly built Python, the basic interactive IPython shell will work
66 with no external dependencies. However, some Python distributions
66 with no external dependencies. However, some Python distributions
67 (particularly on Windows and OS X), don't come with a working :mod:`readline`
67 (particularly on Windows and OS X), don't come with a working :mod:`readline`
68 module. The IPython shell will work without :mod:`readline`, but will lack
68 module. The IPython shell will work without :mod:`readline`, but will lack
69 many features that users depend on, such as tab completion and command line
69 many features that users depend on, such as tab completion and command line
70 editing. If you install IPython with :mod:`distribute`, (e.g. with
70 editing. If you install IPython with :mod:`distribute`, (e.g. with
71 `easy_install`), then the appropriate :mod:`readline` for your platform will be
71 `easy_install`), then the appropriate :mod:`readline` for your platform will be
72 installed. See below for details of how to make sure you have a working
72 installed. See below for details of how to make sure you have a working
73 :mod:`readline`.
73 :mod:`readline`.
74
74
75 Installation using easy_install
75 Installation using easy_install
76 -------------------------------
76 -------------------------------
77
77
78 If you have :mod:`distribute` installed, the easiest way of getting IPython is
78 If you have :mod:`distribute` installed, the easiest way of getting IPython is
79 to simply use :command:`easy_install`:
79 to simply use :command:`easy_install`:
80
80
81 .. code-block:: bash
81 .. code-block:: bash
82
82
83 $ easy_install ipython
83 $ easy_install ipython
84
84
85 That's it.
85 That's it.
86
86
87 Installation from source
87 Installation from source
88 ------------------------
88 ------------------------
89
89
90 If you don't want to use :command:`easy_install`, or don't have it installed,
90 If you don't want to use :command:`easy_install`, or don't have it installed,
91 just grab the latest stable build of IPython from `here
91 just grab the latest stable build of IPython from `here
92 <http://ipython.org/download.html>`_. Then do the following:
92 <http://ipython.org/download.html>`_. Then do the following:
93
93
94 .. code-block:: bash
94 .. code-block:: bash
95
95
96 $ tar -xzf ipython.tar.gz
96 $ tar -xzf ipython.tar.gz
97 $ cd ipython
97 $ cd ipython
98 $ python setup.py install
98 $ python setup.py install
99
99
100 If you are installing to a location (like ``/usr/local``) that requires higher
100 If you are installing to a location (like ``/usr/local``) that requires higher
101 permissions, you may need to run the last command with :command:`sudo`.
101 permissions, you may need to run the last command with :command:`sudo`.
102
102
103 Windows
103 Windows
104 -------
104 -------
105
105
106 As mentioned above, on Windows, IPython requires :mod:`distribute`, and it also
106 As mentioned above, on Windows, IPython requires :mod:`distribute`, and it also
107 requires the PyReadline library to properly support coloring and keyboard
107 requires the PyReadline library to properly support coloring and keyboard
108 management (features that the default windows console doesn't have). So on
108 management (features that the default windows console doesn't have). So on
109 Windows, the installation procedure is:
109 Windows, the installation procedure is:
110
110
111 1. Install `distribute <http://pypi.python.org/pypi/distribute>`_.
111 1. Install `distribute <http://pypi.python.org/pypi/distribute>`_.
112
112
113 2. Install `pyreadline <http://pypi.python.org/pypi/pyreadline>`_. You can use
113 2. Install `pyreadline <http://pypi.python.org/pypi/pyreadline>`_. You can use
114 the command ``easy_install pyreadline`` from a terminal, or the binary
114 the command ``easy_install pyreadline`` from a terminal, or the binary
115 installer appropriate for your platform from the PyPI page.
115 installer appropriate for your platform from the PyPI page.
116
116
117 3. Install IPython itself, which you can download from `PyPI
117 3. Install IPython itself, which you can download from `PyPI
118 <http://pypi.python.org/pypi/ipython>`_ or from `our site
118 <http://pypi.python.org/pypi/ipython>`_ or from `our site
119 <http://ipython.org/download.html>`_. Note that on Windows 7, you *must*
119 <http://ipython.org/download.html>`_. Note that on Windows 7, you *must*
120 right-click and 'Run as administrator' for the Start menu shortcuts to be
120 right-click and 'Run as administrator' for the Start menu shortcuts to be
121 created.
121 created.
122
122
123 IPython by default runs in a terminal window, but the normal terminal
123 IPython by default runs in a terminal window, but the normal terminal
124 application supplied by Microsoft Windows is very primitive. You may want to
124 application supplied by Microsoft Windows is very primitive. You may want to
125 download the excellent and free Console_ application instead, which is a far
125 download the excellent and free Console_ application instead, which is a far
126 superior tool. You can even configure Console to give you by default an
126 superior tool. You can even configure Console to give you by default an
127 IPython tab, which is very convenient to create new IPython sessions directly
127 IPython tab, which is very convenient to create new IPython sessions directly
128 from the working terminal.
128 from the working terminal.
129
129
130 .. _Console: http://sourceforge.net/projects/console
130 .. _Console: http://sourceforge.net/projects/console
131
131
132
132
133 Installing the development version
133 Installing the development version
134 ----------------------------------
134 ----------------------------------
135
135
136 It is also possible to install the development version of IPython from our
136 It is also possible to install the development version of IPython from our
137 `Git <http://git-scm.com/>`_ source code repository. To do this you will
137 `Git <http://git-scm.com/>`_ source code repository. To do this you will
138 need to have Git installed on your system. Then just do:
138 need to have Git installed on your system. Then just do:
139
139
140 .. code-block:: bash
140 .. code-block:: bash
141
141
142 $ git clone https://github.com/ipython/ipython.git
142 $ git clone https://github.com/ipython/ipython.git
143 $ cd ipython
143 $ cd ipython
144 $ python setup.py install
144 $ python setup.py install
145
145
146 Some users want to be able to follow the development branch as it changes. If
146 Some users want to be able to follow the development branch as it changes. If
147 you have :mod:`distribute` installed, this is easy. Simply replace the last
147 you have :mod:`distribute` installed, this is easy. Simply replace the last
148 step by:
148 step by:
149
149
150 .. code-block:: bash
150 .. code-block:: bash
151
151
152 $ python setupegg.py develop
152 $ python setupegg.py develop
153
153
154 This creates links in the right places and installs the command line script to
154 This creates links in the right places and installs the command line script to
155 the appropriate places. Then, if you want to update your IPython at any time,
155 the appropriate places. Then, if you want to update your IPython at any time,
156 just do:
156 just do:
157
157
158 .. code-block:: bash
158 .. code-block:: bash
159
159
160 $ git pull
160 $ git pull
161
161
162
162
163 Basic optional dependencies
163 Basic optional dependencies
164 ===========================
164 ===========================
165
165
166 There are a number of basic optional dependencies that most users will want to
166 There are a number of basic optional dependencies that most users will want to
167 get. These are:
167 get. These are:
168
168
169 * readline (for command line editing, tab completion, etc.)
169 * readline (for command line editing, tab completion, etc.)
170 * nose (to run the IPython test suite)
170 * nose (to run the IPython test suite)
171 * pexpect (to use things like irunner)
171 * pexpect (to use things like irunner)
172
172
173 If you are comfortable installing these things yourself, have at it, otherwise
173 If you are comfortable installing these things yourself, have at it, otherwise
174 read on for more details.
174 read on for more details.
175
175
176 readline
176 readline
177 --------
177 --------
178
178
179 As indicated above, on Windows, PyReadline is a *mandatory* dependency.
179 As indicated above, on Windows, PyReadline is a *mandatory* dependency.
180 PyReadline is a separate, Windows only implementation of readline that uses
180 PyReadline is a separate, Windows only implementation of readline that uses
181 native Windows calls through :mod:`ctypes`. The easiest way of installing
181 native Windows calls through :mod:`ctypes`. The easiest way of installing
182 PyReadline is you use the binary installer available `here
182 PyReadline is you use the binary installer available `here
183 <http://pypi.python.org/pypi/pyreadline>`_.
183 <http://pypi.python.org/pypi/pyreadline>`_.
184
184
185 On OSX, if you are using the built-in Python shipped by Apple, you will be
185 On OSX, if you are using the built-in Python shipped by Apple, you will be
186 missing a full readline implementation as Apple ships instead a library called
186 missing a full readline implementation as Apple ships instead a library called
187 ``libedit`` that provides only some of readline's functionality. While you may
187 ``libedit`` that provides only some of readline's functionality. While you may
188 find libedit sufficient, we have occasional reports of bugs with it and several
188 find libedit sufficient, we have occasional reports of bugs with it and several
189 developers who use OS X as their main environment consider libedit unacceptable
189 developers who use OS X as their main environment consider libedit unacceptable
190 for productive, regular use with IPython.
190 for productive, regular use with IPython.
191
191
192 Therefore, we *strongly* recommend that on OS X you get the full
192 Therefore, we *strongly* recommend that on OS X you get the full
193 :mod:`readline` module. We will *not* consider completion/history problems to
193 :mod:`readline` module. We will *not* consider completion/history problems to
194 be bugs for IPython if you are using libedit.
194 be bugs for IPython if you are using libedit.
195
195
196 To get a working :mod:`readline` module, just do (with :mod:`distribute`
196 To get a working :mod:`readline` module, just do (with :mod:`distribute`
197 installed):
197 installed):
198
198
199 .. code-block:: bash
199 .. code-block:: bash
200
200
201 $ easy_install readline
201 $ easy_install readline
202
202
203 .. note::
203 .. note::
204
204
205 Other Python distributions on OS X (such as fink, MacPorts and the official
205 Other Python distributions on OS X (such as fink, MacPorts and the official
206 python.org binaries) already have readline installed so you likely don't
206 python.org binaries) already have readline installed so you likely don't
207 have to do this step.
207 have to do this step.
208
208
209 When IPython is installed with :mod:`distribute`, (e.g. using the
209 When IPython is installed with :mod:`distribute`, (e.g. using the
210 ``easy_install`` command), readline is added as a dependency on OS X, and
210 ``easy_install`` command), readline is added as a dependency on OS X, and
211 PyReadline on Windows, and will be installed on your system. However, if you
211 PyReadline on Windows, and will be installed on your system. However, if you
212 do not use distribute, you may have to install one of these packages yourself.
212 do not use distribute, you may have to install one of these packages yourself.
213
213
214
214
215 nose
215 nose
216 ----
216 ----
217
217
218 To run the IPython test suite you will need the :mod:`nose` package. Nose
218 To run the IPython test suite you will need the :mod:`nose` package. Nose
219 provides a great way of sniffing out and running all of the IPython tests. The
219 provides a great way of sniffing out and running all of the IPython tests. The
220 simplest way of getting nose, is to use :command:`easy_install`:
220 simplest way of getting nose, is to use :command:`easy_install`:
221
221
222 .. code-block:: bash
222 .. code-block:: bash
223
223
224 $ easy_install nose
224 $ easy_install nose
225
225
226 Another way of getting this is to do:
226 Another way of getting this is to do:
227
227
228 .. code-block:: bash
228 .. code-block:: bash
229
229
230 $ easy_install ipython[test]
230 $ easy_install ipython[test]
231
231
232 For more installation options, see the `nose website
232 For more installation options, see the `nose website
233 <http://somethingaboutorange.com/mrl/projects/nose/>`_.
233 <http://somethingaboutorange.com/mrl/projects/nose/>`_.
234
234
235 Once you have nose installed, you can run IPython's test suite using the
235 Once you have nose installed, you can run IPython's test suite using the
236 iptest command:
236 iptest command:
237
237
238 .. code-block:: bash
238 .. code-block:: bash
239
239
240 $ iptest
240 $ iptest
241
241
242 pexpect
242 pexpect
243 -------
243 -------
244
244
245 The pexpect_ package is used in IPython's :command:`irunner` script, as well as
245 The pexpect_ package is used in IPython's :command:`irunner` script, as well as
246 for managing subprocesses. IPython now includes a version of pexpect in
246 for managing subprocesses. IPython now includes a version of pexpect in
247 :mod:`IPython.external`, but if you have installed pexpect, IPython will use
247 :mod:`IPython.external`, but if you have installed pexpect, IPython will use
248 that instead. On Unix platforms (including OS X), just do:
248 that instead. On Unix platforms (including OS X), just do:
249
249
250 .. code-block:: bash
250 .. code-block:: bash
251
251
252 $ easy_install pexpect
252 $ easy_install pexpect
253
253
254 Windows users are out of luck as pexpect does not run there.
254 Windows users are out of luck as pexpect does not run there.
255
255
256 Dependencies for IPython.parallel (parallel computing)
256 Dependencies for IPython.parallel (parallel computing)
257 ======================================================
257 ======================================================
258
258
259 :mod:`IPython.kernel` has been replaced by :mod:`IPython.parallel`,
259 :mod:`IPython.kernel` has been replaced by :mod:`IPython.parallel`,
260 which uses ZeroMQ for all communication.
260 which uses ZeroMQ for all communication.
261
261
262 IPython.parallel provides a nice architecture for parallel computing, with a
262 IPython.parallel provides a nice architecture for parallel computing, with a
263 focus on fluid interactive workflows. These features require just one package:
263 focus on fluid interactive workflows. These features require just one package:
264 PyZMQ. See the next section for PyZMQ details.
264 PyZMQ. See the next section for PyZMQ details.
265
265
266 On a Unix style platform (including OS X), if you want to use
266 On a Unix style platform (including OS X), if you want to use
267 :mod:`distribute`, you can just do:
267 :mod:`distribute`, you can just do:
268
268
269 .. code-block:: bash
269 .. code-block:: bash
270
270
271 $ easy_install ipython[zmq] # will include pyzmq
271 $ easy_install ipython[zmq] # will include pyzmq
272
272
273 Security in IPython.parallel is provided by SSH tunnels. By default, Linux
273 Security in IPython.parallel is provided by SSH tunnels. By default, Linux
274 and OSX clients will use the shell ssh command, but on Windows, we also
274 and OSX clients will use the shell ssh command, but on Windows, we also
275 support tunneling with paramiko_.
275 support tunneling with paramiko_.
276
276
277 Dependencies for IPython.zmq
277 Dependencies for IPython.kernel.zmq
278 ============================
278 ============================
279
279
280 pyzmq
280 pyzmq
281 -----
281 -----
282
282
283 IPython 0.11 introduced some new functionality, including a two-process
283 IPython 0.11 introduced some new functionality, including a two-process
284 execution model using ZeroMQ_ for communication. The Python bindings to ZeroMQ
284 execution model using ZeroMQ_ for communication. The Python bindings to ZeroMQ
285 are found in the PyZMQ_ project, which is easy_install-able once you have
285 are found in the PyZMQ_ project, which is easy_install-able once you have
286 ZeroMQ installed. If you are on Python 2.6 or 2.7 on OSX, or 2.7 on Windows,
286 ZeroMQ installed. If you are on Python 2.6 or 2.7 on OSX, or 2.7 on Windows,
287 pyzmq has eggs that include ZeroMQ itself.
287 pyzmq has eggs that include ZeroMQ itself.
288
288
289 IPython.zmq depends on pyzmq >= 2.1.4.
289 IPython.kernel.zmq depends on pyzmq >= 2.1.4.
290
290
291 Dependencies for the IPython QT console
291 Dependencies for the IPython QT console
292 =======================================
292 =======================================
293
293
294 pyzmq
294 pyzmq
295 -----
295 -----
296
296
297 Like the :mod:`IPython.parallel` package, the QT Console requires ZeroMQ and
297 Like the :mod:`IPython.parallel` package, the QT Console requires ZeroMQ and
298 PyZMQ.
298 PyZMQ.
299
299
300 Qt
300 Qt
301 --
301 --
302
302
303 Also with 0.11, a new GUI was added using the work in :mod:`IPython.zmq`, which
303 Also with 0.11, a new GUI was added using the work in :mod:`IPython.kernel.zmq`, which
304 can be launched with ``ipython qtconsole``. The GUI is built on Qt, and works
304 can be launched with ``ipython qtconsole``. The GUI is built on Qt, and works
305 with either PyQt, which can be installed from the `PyQt website
305 with either PyQt, which can be installed from the `PyQt website
306 <http://www.riverbankcomputing.co.uk/>`_, or `PySide
306 <http://www.riverbankcomputing.co.uk/>`_, or `PySide
307 <http://www.pyside.org/>`_, from Nokia.
307 <http://www.pyside.org/>`_, from Nokia.
308
308
309 pygments
309 pygments
310 --------
310 --------
311
311
312 The syntax-highlighting in ``ipython qtconsole`` is done with the pygments_
312 The syntax-highlighting in ``ipython qtconsole`` is done with the pygments_
313 project, which is easy_install-able.
313 project, which is easy_install-able.
314
314
315 .. _installnotebook:
315 .. _installnotebook:
316
316
317 Dependencies for the IPython HTML notebook
317 Dependencies for the IPython HTML notebook
318 ==========================================
318 ==========================================
319
319
320 The IPython notebook is a notebook-style web interface to IPython and can be
320 The IPython notebook is a notebook-style web interface to IPython and can be
321 started withe command ``ipython notebook``.
321 started withe command ``ipython notebook``.
322
322
323 pyzmq
323 pyzmq
324 -----
324 -----
325
325
326 Like the :mod:`IPython.parallel` and :mod:`IPython.frontend.qt.console`
326 Like the :mod:`IPython.parallel` and :mod:`IPython.frontend.qt.console`
327 packages, the HTML notebook requires ZeroMQ and PyZMQ.
327 packages, the HTML notebook requires ZeroMQ and PyZMQ.
328
328
329 Tornado
329 Tornado
330 -------
330 -------
331
331
332 The IPython notebook uses the Tornado_ project for its HTTP server. Tornado 2.1
332 The IPython notebook uses the Tornado_ project for its HTTP server. Tornado 2.1
333 is required, in order to support current versions of browsers, due to an update
333 is required, in order to support current versions of browsers, due to an update
334 to the websocket protocol.
334 to the websocket protocol.
335
335
336 Jinja
336 Jinja
337 -----
337 -----
338
338
339 The IPython notebook uses the Jinja_ templating tool to render HTML pages.
339 The IPython notebook uses the Jinja_ templating tool to render HTML pages.
340
340
341
341
342 MathJax
342 MathJax
343 -------
343 -------
344
344
345 The IPython notebook uses the MathJax_ Javascript library for rendering LaTeX
345 The IPython notebook uses the MathJax_ Javascript library for rendering LaTeX
346 in web browsers. Because MathJax is large, we don't include it with
346 in web browsers. Because MathJax is large, we don't include it with
347 IPython. Normally IPython will load MathJax from a CDN, but if you have a slow
347 IPython. Normally IPython will load MathJax from a CDN, but if you have a slow
348 network connection, or want to use LaTeX without an internet connection at all,
348 network connection, or want to use LaTeX without an internet connection at all,
349 you can install MathJax locally.
349 you can install MathJax locally.
350
350
351 A quick and easy method is to install it from a python session::
351 A quick and easy method is to install it from a python session::
352
352
353 from IPython.external.mathjax import install_mathjax
353 from IPython.external.mathjax import install_mathjax
354 install_mathjax()
354 install_mathjax()
355
355
356 If you need tighter configuration control, you can download your own copy
356 If you need tighter configuration control, you can download your own copy
357 of MathJax from http://www.mathjax.org/download/ - use the MathJax-2.0 link.
357 of MathJax from http://www.mathjax.org/download/ - use the MathJax-2.0 link.
358 When you have the file stored locally, install it with::
358 When you have the file stored locally, install it with::
359
359
360 python -m IPython.external.mathjax /path/to/source/mathjax-MathJax-v2.0-20-g07669ac.zip
360 python -m IPython.external.mathjax /path/to/source/mathjax-MathJax-v2.0-20-g07669ac.zip
361
361
362 For unusual needs, IPython can tell you what directory it wants to find MathJax in::
362 For unusual needs, IPython can tell you what directory it wants to find MathJax in::
363
363
364 python -m IPython.external.mathjax -d /some/other/mathjax
364 python -m IPython.external.mathjax -d /some/other/mathjax
365
365
366 By default Mathjax will be installed in your ipython profile directory, but you
366 By default Mathjax will be installed in your ipython profile directory, but you
367 can make system wide install, please refer to the documentation and helper function
367 can make system wide install, please refer to the documentation and helper function
368 of :mod:`IPython.external.mathjax`
368 of :mod:`IPython.external.mathjax`
369
369
370 Browser Compatibility
370 Browser Compatibility
371 ---------------------
371 ---------------------
372
372
373 The notebook uses WebSockets and the flexible box model. These features are
373 The notebook uses WebSockets and the flexible box model. These features are
374 available in the following browsers:
374 available in the following browsers:
375
375
376 * Chrome
376 * Chrome
377 * Safari
377 * Safari
378 * Firefox 6 and above
378 * Firefox 6 and above
379 * Firefox 4 and 5: These browsers have WebSocket support, but it is disabled by
379 * Firefox 4 and 5: These browsers have WebSocket support, but it is disabled by
380 default. If you're unable to upgrade, you can enable it by entering ``about:config``
380 default. If you're unable to upgrade, you can enable it by entering ``about:config``
381 in the URL bar and then setting ``network.websocket.enabled`` and
381 in the URL bar and then setting ``network.websocket.enabled`` and
382 ``network.websocket.override-security-block`` to ``true``.
382 ``network.websocket.override-security-block`` to ``true``.
383
383
384 Internet Explorer 9 does not support WebSockets or the flexible box model, but
384 Internet Explorer 9 does not support WebSockets or the flexible box model, but
385 these features should appear in Internet Explorer 10.
385 these features should appear in Internet Explorer 10.
386
386
387
387
388 .. _ZeroMQ: http://www.zeromq.org
388 .. _ZeroMQ: http://www.zeromq.org
389 .. _PyZMQ: https://github.com/zeromq/pyzmq
389 .. _PyZMQ: https://github.com/zeromq/pyzmq
390 .. _paramiko: https://github.com/robey/paramiko
390 .. _paramiko: https://github.com/robey/paramiko
391 .. _pygments: http://pygments.org
391 .. _pygments: http://pygments.org
392 .. _pexpect: http://www.noah.org/wiki/Pexpect
392 .. _pexpect: http://www.noah.org/wiki/Pexpect
393 .. _Jinja: http://jinja.pocoo.org
393 .. _Jinja: http://jinja.pocoo.org
394 .. _Tornado: http://www.tornadoweb.org
394 .. _Tornado: http://www.tornadoweb.org
395 .. _MathJax: http://www.mathjax.org
395 .. _MathJax: http://www.mathjax.org
@@ -1,251 +1,251 b''
1 .. _parallelsecurity:
1 .. _parallelsecurity:
2
2
3 ===========================
3 ===========================
4 Security details of IPython
4 Security details of IPython
5 ===========================
5 ===========================
6
6
7 .. note::
7 .. note::
8
8
9 This section is not thorough, and IPython.zmq needs a thorough security
9 This section is not thorough, and IPython.kernel.zmq needs a thorough security
10 audit.
10 audit.
11
11
12 IPython's :mod:`IPython.zmq` package exposes the full power of the
12 IPython's :mod:`IPython.kernel.zmq` package exposes the full power of the
13 Python interpreter over a TCP/IP network for the purposes of parallel
13 Python interpreter over a TCP/IP network for the purposes of parallel
14 computing. This feature brings up the important question of IPython's security
14 computing. This feature brings up the important question of IPython's security
15 model. This document gives details about this model and how it is implemented
15 model. This document gives details about this model and how it is implemented
16 in IPython's architecture.
16 in IPython's architecture.
17
17
18 Process and network topology
18 Process and network topology
19 ============================
19 ============================
20
20
21 To enable parallel computing, IPython has a number of different processes that
21 To enable parallel computing, IPython has a number of different processes that
22 run. These processes are discussed at length in the IPython documentation and
22 run. These processes are discussed at length in the IPython documentation and
23 are summarized here:
23 are summarized here:
24
24
25 * The IPython *engine*. This process is a full blown Python
25 * The IPython *engine*. This process is a full blown Python
26 interpreter in which user code is executed. Multiple
26 interpreter in which user code is executed. Multiple
27 engines are started to make parallel computing possible.
27 engines are started to make parallel computing possible.
28 * The IPython *hub*. This process monitors a set of
28 * The IPython *hub*. This process monitors a set of
29 engines and schedulers, and keeps track of the state of the processes. It listens
29 engines and schedulers, and keeps track of the state of the processes. It listens
30 for registration connections from engines and clients, and monitor connections
30 for registration connections from engines and clients, and monitor connections
31 from schedulers.
31 from schedulers.
32 * The IPython *schedulers*. This is a set of processes that relay commands and results
32 * The IPython *schedulers*. This is a set of processes that relay commands and results
33 between clients and engines. They are typically on the same machine as the controller,
33 between clients and engines. They are typically on the same machine as the controller,
34 and listen for connections from engines and clients, but connect to the Hub.
34 and listen for connections from engines and clients, but connect to the Hub.
35 * The IPython *client*. This process is typically an
35 * The IPython *client*. This process is typically an
36 interactive Python process that is used to coordinate the
36 interactive Python process that is used to coordinate the
37 engines to get a parallel computation done.
37 engines to get a parallel computation done.
38
38
39 Collectively, these processes are called the IPython *cluster*, and the hub and schedulers
39 Collectively, these processes are called the IPython *cluster*, and the hub and schedulers
40 together are referred to as the *controller*.
40 together are referred to as the *controller*.
41
41
42
42
43 These processes communicate over any transport supported by ZeroMQ (tcp,pgm,infiniband,ipc)
43 These processes communicate over any transport supported by ZeroMQ (tcp,pgm,infiniband,ipc)
44 with a well defined topology. The IPython hub and schedulers listen on sockets. Upon
44 with a well defined topology. The IPython hub and schedulers listen on sockets. Upon
45 starting, an engine connects to a hub and registers itself, which then informs the engine
45 starting, an engine connects to a hub and registers itself, which then informs the engine
46 of the connection information for the schedulers, and the engine then connects to the
46 of the connection information for the schedulers, and the engine then connects to the
47 schedulers. These engine/hub and engine/scheduler connections persist for the
47 schedulers. These engine/hub and engine/scheduler connections persist for the
48 lifetime of each engine.
48 lifetime of each engine.
49
49
50 The IPython client also connects to the controller processes using a number of socket
50 The IPython client also connects to the controller processes using a number of socket
51 connections. As of writing, this is one socket per scheduler (4), and 3 connections to the
51 connections. As of writing, this is one socket per scheduler (4), and 3 connections to the
52 hub for a total of 7. These connections persist for the lifetime of the client only.
52 hub for a total of 7. These connections persist for the lifetime of the client only.
53
53
54 A given IPython controller and set of engines engines typically has a relatively
54 A given IPython controller and set of engines engines typically has a relatively
55 short lifetime. Typically this lifetime corresponds to the duration of a single parallel
55 short lifetime. Typically this lifetime corresponds to the duration of a single parallel
56 simulation performed by a single user. Finally, the hub, schedulers, engines, and client
56 simulation performed by a single user. Finally, the hub, schedulers, engines, and client
57 processes typically execute with the permissions of that same user. More specifically, the
57 processes typically execute with the permissions of that same user. More specifically, the
58 controller and engines are *not* executed as root or with any other superuser permissions.
58 controller and engines are *not* executed as root or with any other superuser permissions.
59
59
60 Application logic
60 Application logic
61 =================
61 =================
62
62
63 When running the IPython kernel to perform a parallel computation, a user
63 When running the IPython kernel to perform a parallel computation, a user
64 utilizes the IPython client to send Python commands and data through the
64 utilizes the IPython client to send Python commands and data through the
65 IPython schedulers to the IPython engines, where those commands are executed
65 IPython schedulers to the IPython engines, where those commands are executed
66 and the data processed. The design of IPython ensures that the client is the
66 and the data processed. The design of IPython ensures that the client is the
67 only access point for the capabilities of the engines. That is, the only way
67 only access point for the capabilities of the engines. That is, the only way
68 of addressing the engines is through a client.
68 of addressing the engines is through a client.
69
69
70 A user can utilize the client to instruct the IPython engines to execute
70 A user can utilize the client to instruct the IPython engines to execute
71 arbitrary Python commands. These Python commands can include calls to the
71 arbitrary Python commands. These Python commands can include calls to the
72 system shell, access the filesystem, etc., as required by the user's
72 system shell, access the filesystem, etc., as required by the user's
73 application code. From this perspective, when a user runs an IPython engine on
73 application code. From this perspective, when a user runs an IPython engine on
74 a host, that engine has the same capabilities and permissions as the user
74 a host, that engine has the same capabilities and permissions as the user
75 themselves (as if they were logged onto the engine's host with a terminal).
75 themselves (as if they were logged onto the engine's host with a terminal).
76
76
77 Secure network connections
77 Secure network connections
78 ==========================
78 ==========================
79
79
80 Overview
80 Overview
81 --------
81 --------
82
82
83 ZeroMQ provides exactly no security. For this reason, users of IPython must be very
83 ZeroMQ provides exactly no security. For this reason, users of IPython must be very
84 careful in managing connections, because an open TCP/IP socket presents access to
84 careful in managing connections, because an open TCP/IP socket presents access to
85 arbitrary execution as the user on the engine machines. As a result, the default behavior
85 arbitrary execution as the user on the engine machines. As a result, the default behavior
86 of controller processes is to only listen for clients on the loopback interface, and the
86 of controller processes is to only listen for clients on the loopback interface, and the
87 client must establish SSH tunnels to connect to the controller processes.
87 client must establish SSH tunnels to connect to the controller processes.
88
88
89 .. warning::
89 .. warning::
90
90
91 If the controller's loopback interface is untrusted, then IPython should be considered
91 If the controller's loopback interface is untrusted, then IPython should be considered
92 vulnerable, and this extends to the loopback of all connected clients, which have
92 vulnerable, and this extends to the loopback of all connected clients, which have
93 opened a loopback port that is redirected to the controller's loopback port.
93 opened a loopback port that is redirected to the controller's loopback port.
94
94
95
95
96 SSH
96 SSH
97 ---
97 ---
98
98
99 Since ZeroMQ provides no security, SSH tunnels are the primary source of secure
99 Since ZeroMQ provides no security, SSH tunnels are the primary source of secure
100 connections. A connector file, such as `ipcontroller-client.json`, will contain
100 connections. A connector file, such as `ipcontroller-client.json`, will contain
101 information for connecting to the controller, possibly including the address of an
101 information for connecting to the controller, possibly including the address of an
102 ssh-server through with the client is to tunnel. The Client object then creates tunnels
102 ssh-server through with the client is to tunnel. The Client object then creates tunnels
103 using either [OpenSSH]_ or [Paramiko]_, depending on the platform. If users do not wish to
103 using either [OpenSSH]_ or [Paramiko]_, depending on the platform. If users do not wish to
104 use OpenSSH or Paramiko, or the tunneling utilities are insufficient, then they may
104 use OpenSSH or Paramiko, or the tunneling utilities are insufficient, then they may
105 construct the tunnels themselves, and simply connect clients and engines as if the
105 construct the tunnels themselves, and simply connect clients and engines as if the
106 controller were on loopback on the connecting machine.
106 controller were on loopback on the connecting machine.
107
107
108
108
109 Authentication
109 Authentication
110 --------------
110 --------------
111
111
112 To protect users of shared machines, [HMAC]_ digests are used to sign messages, using a
112 To protect users of shared machines, [HMAC]_ digests are used to sign messages, using a
113 shared key.
113 shared key.
114
114
115 The Session object that handles the message protocol uses a unique key to verify valid
115 The Session object that handles the message protocol uses a unique key to verify valid
116 messages. This can be any value specified by the user, but the default behavior is a
116 messages. This can be any value specified by the user, but the default behavior is a
117 pseudo-random 128-bit number, as generated by `uuid.uuid4()`. This key is used to
117 pseudo-random 128-bit number, as generated by `uuid.uuid4()`. This key is used to
118 initialize an HMAC object, which digests all messages, and includes that digest as a
118 initialize an HMAC object, which digests all messages, and includes that digest as a
119 signature and part of the message. Every message that is unpacked (on Controller, Engine,
119 signature and part of the message. Every message that is unpacked (on Controller, Engine,
120 and Client) will also be digested by the receiver, ensuring that the sender's key is the
120 and Client) will also be digested by the receiver, ensuring that the sender's key is the
121 same as the receiver's. No messages that do not contain this key are acted upon in any
121 same as the receiver's. No messages that do not contain this key are acted upon in any
122 way. The key itself is never sent over the network.
122 way. The key itself is never sent over the network.
123
123
124 There is exactly one shared key per cluster - it must be the same everywhere. Typically,
124 There is exactly one shared key per cluster - it must be the same everywhere. Typically,
125 the controller creates this key, and stores it in the private connection files
125 the controller creates this key, and stores it in the private connection files
126 `ipython-{engine|client}.json`. These files are typically stored in the
126 `ipython-{engine|client}.json`. These files are typically stored in the
127 `~/.ipython/profile_<name>/security` directory, and are maintained as readable only by the
127 `~/.ipython/profile_<name>/security` directory, and are maintained as readable only by the
128 owner, just as is common practice with a user's keys in their `.ssh` directory.
128 owner, just as is common practice with a user's keys in their `.ssh` directory.
129
129
130 .. warning::
130 .. warning::
131
131
132 It is important to note that the signatures protect against unauthorized messages,
132 It is important to note that the signatures protect against unauthorized messages,
133 but, as there is no encryption, provide exactly no protection of data privacy. It is
133 but, as there is no encryption, provide exactly no protection of data privacy. It is
134 possible, however, to use a custom serialization scheme (via Session.packer/unpacker
134 possible, however, to use a custom serialization scheme (via Session.packer/unpacker
135 traits) that does incorporate your own encryption scheme.
135 traits) that does incorporate your own encryption scheme.
136
136
137
137
138
138
139 Specific security vulnerabilities
139 Specific security vulnerabilities
140 =================================
140 =================================
141
141
142 There are a number of potential security vulnerabilities present in IPython's
142 There are a number of potential security vulnerabilities present in IPython's
143 architecture. In this section we discuss those vulnerabilities and detail how
143 architecture. In this section we discuss those vulnerabilities and detail how
144 the security architecture described above prevents them from being exploited.
144 the security architecture described above prevents them from being exploited.
145
145
146 Unauthorized clients
146 Unauthorized clients
147 --------------------
147 --------------------
148
148
149 The IPython client can instruct the IPython engines to execute arbitrary
149 The IPython client can instruct the IPython engines to execute arbitrary
150 Python code with the permissions of the user who started the engines. If an
150 Python code with the permissions of the user who started the engines. If an
151 attacker were able to connect their own hostile IPython client to the IPython
151 attacker were able to connect their own hostile IPython client to the IPython
152 controller, they could instruct the engines to execute code.
152 controller, they could instruct the engines to execute code.
153
153
154
154
155 On the first level, this attack is prevented by requiring access to the controller's
155 On the first level, this attack is prevented by requiring access to the controller's
156 ports, which are recommended to only be open on loopback if the controller is on an
156 ports, which are recommended to only be open on loopback if the controller is on an
157 untrusted local network. If the attacker does have access to the Controller's ports, then
157 untrusted local network. If the attacker does have access to the Controller's ports, then
158 the attack is prevented by the capabilities based client authentication of the execution
158 the attack is prevented by the capabilities based client authentication of the execution
159 key. The relevant authentication information is encoded into the JSON file that clients
159 key. The relevant authentication information is encoded into the JSON file that clients
160 must present to gain access to the IPython controller. By limiting the distribution of
160 must present to gain access to the IPython controller. By limiting the distribution of
161 those keys, a user can grant access to only authorized persons, just as with SSH keys.
161 those keys, a user can grant access to only authorized persons, just as with SSH keys.
162
162
163 It is highly unlikely that an execution key could be guessed by an attacker
163 It is highly unlikely that an execution key could be guessed by an attacker
164 in a brute force guessing attack. A given instance of the IPython controller
164 in a brute force guessing attack. A given instance of the IPython controller
165 only runs for a relatively short amount of time (on the order of hours). Thus
165 only runs for a relatively short amount of time (on the order of hours). Thus
166 an attacker would have only a limited amount of time to test a search space of
166 an attacker would have only a limited amount of time to test a search space of
167 size 2**128. For added security, users can have arbitrarily long keys.
167 size 2**128. For added security, users can have arbitrarily long keys.
168
168
169 .. warning::
169 .. warning::
170
170
171 If the attacker has gained enough access to intercept loopback connections on *either* the
171 If the attacker has gained enough access to intercept loopback connections on *either* the
172 controller or client, then a duplicate message can be sent. To protect against this,
172 controller or client, then a duplicate message can be sent. To protect against this,
173 recipients only allow each signature once, and consider duplicates invalid. However,
173 recipients only allow each signature once, and consider duplicates invalid. However,
174 the duplicate message could be sent to *another* recipient using the same key,
174 the duplicate message could be sent to *another* recipient using the same key,
175 and it would be considered valid.
175 and it would be considered valid.
176
176
177
177
178 Unauthorized engines
178 Unauthorized engines
179 --------------------
179 --------------------
180
180
181 If an attacker were able to connect a hostile engine to a user's controller,
181 If an attacker were able to connect a hostile engine to a user's controller,
182 the user might unknowingly send sensitive code or data to the hostile engine.
182 the user might unknowingly send sensitive code or data to the hostile engine.
183 This attacker's engine would then have full access to that code and data.
183 This attacker's engine would then have full access to that code and data.
184
184
185 This type of attack is prevented in the same way as the unauthorized client
185 This type of attack is prevented in the same way as the unauthorized client
186 attack, through the usage of the capabilities based authentication scheme.
186 attack, through the usage of the capabilities based authentication scheme.
187
187
188 Unauthorized controllers
188 Unauthorized controllers
189 ------------------------
189 ------------------------
190
190
191 It is also possible that an attacker could try to convince a user's IPython
191 It is also possible that an attacker could try to convince a user's IPython
192 client or engine to connect to a hostile IPython controller. That controller
192 client or engine to connect to a hostile IPython controller. That controller
193 would then have full access to the code and data sent between the IPython
193 would then have full access to the code and data sent between the IPython
194 client and the IPython engines.
194 client and the IPython engines.
195
195
196 Again, this attack is prevented through the capabilities in a connection file, which
196 Again, this attack is prevented through the capabilities in a connection file, which
197 ensure that a client or engine connects to the correct controller. It is also important to
197 ensure that a client or engine connects to the correct controller. It is also important to
198 note that the connection files also encode the IP address and port that the controller is
198 note that the connection files also encode the IP address and port that the controller is
199 listening on, so there is little chance of mistakenly connecting to a controller running
199 listening on, so there is little chance of mistakenly connecting to a controller running
200 on a different IP address and port.
200 on a different IP address and port.
201
201
202 When starting an engine or client, a user must specify the key to use
202 When starting an engine or client, a user must specify the key to use
203 for that connection. Thus, in order to introduce a hostile controller, the
203 for that connection. Thus, in order to introduce a hostile controller, the
204 attacker must convince the user to use the key associated with the
204 attacker must convince the user to use the key associated with the
205 hostile controller. As long as a user is diligent in only using keys from
205 hostile controller. As long as a user is diligent in only using keys from
206 trusted sources, this attack is not possible.
206 trusted sources, this attack is not possible.
207
207
208 .. note::
208 .. note::
209
209
210 I may be wrong, the unauthorized controller may be easier to fake than this.
210 I may be wrong, the unauthorized controller may be easier to fake than this.
211
211
212 Other security measures
212 Other security measures
213 =======================
213 =======================
214
214
215 A number of other measures are taken to further limit the security risks
215 A number of other measures are taken to further limit the security risks
216 involved in running the IPython kernel.
216 involved in running the IPython kernel.
217
217
218 First, by default, the IPython controller listens on random port numbers.
218 First, by default, the IPython controller listens on random port numbers.
219 While this can be overridden by the user, in the default configuration, an
219 While this can be overridden by the user, in the default configuration, an
220 attacker would have to do a port scan to even find a controller to attack.
220 attacker would have to do a port scan to even find a controller to attack.
221 When coupled with the relatively short running time of a typical controller
221 When coupled with the relatively short running time of a typical controller
222 (on the order of hours), an attacker would have to work extremely hard and
222 (on the order of hours), an attacker would have to work extremely hard and
223 extremely *fast* to even find a running controller to attack.
223 extremely *fast* to even find a running controller to attack.
224
224
225 Second, much of the time, especially when run on supercomputers or clusters,
225 Second, much of the time, especially when run on supercomputers or clusters,
226 the controller is running behind a firewall. Thus, for engines or client to
226 the controller is running behind a firewall. Thus, for engines or client to
227 connect to the controller:
227 connect to the controller:
228
228
229 * The different processes have to all be behind the firewall.
229 * The different processes have to all be behind the firewall.
230
230
231 or:
231 or:
232
232
233 * The user has to use SSH port forwarding to tunnel the
233 * The user has to use SSH port forwarding to tunnel the
234 connections through the firewall.
234 connections through the firewall.
235
235
236 In either case, an attacker is presented with additional barriers that prevent
236 In either case, an attacker is presented with additional barriers that prevent
237 attacking or even probing the system.
237 attacking or even probing the system.
238
238
239 Summary
239 Summary
240 =======
240 =======
241
241
242 IPython's architecture has been carefully designed with security in mind. The
242 IPython's architecture has been carefully designed with security in mind. The
243 capabilities based authentication model, in conjunction with SSH tunneled
243 capabilities based authentication model, in conjunction with SSH tunneled
244 TCP/IP channels, address the core potential vulnerabilities in the system,
244 TCP/IP channels, address the core potential vulnerabilities in the system,
245 while still enabling user's to use the system in open networks.
245 while still enabling user's to use the system in open networks.
246
246
247 .. [RFC5246] <http://tools.ietf.org/html/rfc5246>
247 .. [RFC5246] <http://tools.ietf.org/html/rfc5246>
248
248
249 .. [OpenSSH] <http://www.openssh.com/>
249 .. [OpenSSH] <http://www.openssh.com/>
250 .. [Paramiko] <http://www.lag.net/paramiko/>
250 .. [Paramiko] <http://www.lag.net/paramiko/>
251 .. [HMAC] <http://tools.ietf.org/html/rfc2104.html>
251 .. [HMAC] <http://tools.ietf.org/html/rfc2104.html>
@@ -1,59 +1,59 b''
1 #-----------------------------------------------------------------------------
1 #-----------------------------------------------------------------------------
2 # Imports
2 # Imports
3 #-----------------------------------------------------------------------------
3 #-----------------------------------------------------------------------------
4
4
5 import subprocess
5 import subprocess
6 import sys
6 import sys
7
7
8 from IPython.lib.kernel import connect_qtconsole
8 from IPython.lib.kernel import connect_qtconsole
9 from IPython.zmq.ipkernel import IPKernelApp
9 from IPython.kernel.zmq.ipkernel import IPKernelApp
10
10
11 #-----------------------------------------------------------------------------
11 #-----------------------------------------------------------------------------
12 # Functions and classes
12 # Functions and classes
13 #-----------------------------------------------------------------------------
13 #-----------------------------------------------------------------------------
14 def pylab_kernel(gui):
14 def pylab_kernel(gui):
15 """Launch and return an IPython kernel with pylab support for the desired gui
15 """Launch and return an IPython kernel with pylab support for the desired gui
16 """
16 """
17 kernel = IPKernelApp.instance()
17 kernel = IPKernelApp.instance()
18 kernel.initialize(['python', '--pylab=%s' % gui,
18 kernel.initialize(['python', '--pylab=%s' % gui,
19 #'--log-level=10'
19 #'--log-level=10'
20 ])
20 ])
21 return kernel
21 return kernel
22
22
23
23
24 class InternalIPKernel(object):
24 class InternalIPKernel(object):
25
25
26 def init_ipkernel(self, backend):
26 def init_ipkernel(self, backend):
27 # Start IPython kernel with GUI event loop and pylab support
27 # Start IPython kernel with GUI event loop and pylab support
28 self.ipkernel = pylab_kernel(backend)
28 self.ipkernel = pylab_kernel(backend)
29 # To create and track active qt consoles
29 # To create and track active qt consoles
30 self.consoles = []
30 self.consoles = []
31
31
32 # This application will also act on the shell user namespace
32 # This application will also act on the shell user namespace
33 self.namespace = self.ipkernel.shell.user_ns
33 self.namespace = self.ipkernel.shell.user_ns
34 # Keys present at startup so we don't print the entire pylab/numpy
34 # Keys present at startup so we don't print the entire pylab/numpy
35 # namespace when the user clicks the 'namespace' button
35 # namespace when the user clicks the 'namespace' button
36 self._init_keys = set(self.namespace.keys())
36 self._init_keys = set(self.namespace.keys())
37
37
38 # Example: a variable that will be seen by the user in the shell, and
38 # Example: a variable that will be seen by the user in the shell, and
39 # that the GUI modifies (the 'Counter++' button increments it):
39 # that the GUI modifies (the 'Counter++' button increments it):
40 self.namespace['app_counter'] = 0
40 self.namespace['app_counter'] = 0
41 #self.namespace['ipkernel'] = self.ipkernel # dbg
41 #self.namespace['ipkernel'] = self.ipkernel # dbg
42
42
43 def print_namespace(self, evt=None):
43 def print_namespace(self, evt=None):
44 print("\n***Variables in User namespace***")
44 print("\n***Variables in User namespace***")
45 for k, v in self.namespace.iteritems():
45 for k, v in self.namespace.iteritems():
46 if k not in self._init_keys and not k.startswith('_'):
46 if k not in self._init_keys and not k.startswith('_'):
47 print('%s -> %r' % (k, v))
47 print('%s -> %r' % (k, v))
48 sys.stdout.flush()
48 sys.stdout.flush()
49
49
50 def new_qt_console(self, evt=None):
50 def new_qt_console(self, evt=None):
51 """start a new qtconsole connected to our kernel"""
51 """start a new qtconsole connected to our kernel"""
52 return connect_qtconsole(self.ipkernel.connection_file, profile=self.ipkernel.profile)
52 return connect_qtconsole(self.ipkernel.connection_file, profile=self.ipkernel.profile)
53
53
54 def count(self, evt=None):
54 def count(self, evt=None):
55 self.namespace['app_counter'] += 1
55 self.namespace['app_counter'] += 1
56
56
57 def cleanup_consoles(self, evt=None):
57 def cleanup_consoles(self, evt=None):
58 for c in self.consoles:
58 for c in self.consoles:
59 c.kill()
59 c.kill()
@@ -1,201 +1,201 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "name": "Animations Using clear_output"
3 "name": "Animations Using clear_output"
4 },
4 },
5 "nbformat": 3,
5 "nbformat": 3,
6 "nbformat_minor": 0,
6 "nbformat_minor": 0,
7 "worksheets": [
7 "worksheets": [
8 {
8 {
9 "cells": [
9 "cells": [
10 {
10 {
11 "cell_type": "heading",
11 "cell_type": "heading",
12 "level": 1,
12 "level": 1,
13 "metadata": {},
13 "metadata": {},
14 "source": [
14 "source": [
15 "Simple animations Using clear_output"
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 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",
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 "\n",
23 "\n",
24 "To clear output in the Notebook you can use the `clear_output` function."
24 "To clear output in the Notebook you can use the `clear_output` function."
25 ]
25 ]
26 },
26 },
27 {
27 {
28 "cell_type": "heading",
28 "cell_type": "heading",
29 "level": 2,
29 "level": 2,
30 "metadata": {},
30 "metadata": {},
31 "source": [
31 "source": [
32 "Simple example"
32 "Simple example"
33 ]
33 ]
34 },
34 },
35 {
35 {
36 "cell_type": "markdown",
36 "cell_type": "markdown",
37 "metadata": {},
37 "metadata": {},
38 "source": [
38 "source": [
39 "Here we show our progress iterating through a list:"
39 "Here we show our progress iterating through a list:"
40 ]
40 ]
41 },
41 },
42 {
42 {
43 "cell_type": "code",
43 "cell_type": "code",
44 "collapsed": true,
44 "collapsed": true,
45 "input": [
45 "input": [
46 "import sys\n",
46 "import sys\n",
47 "import time"
47 "import time"
48 ],
48 ],
49 "language": "python",
49 "language": "python",
50 "metadata": {},
50 "metadata": {},
51 "outputs": [],
51 "outputs": [],
52 "prompt_number": 1
52 "prompt_number": 1
53 },
53 },
54 {
54 {
55 "cell_type": "code",
55 "cell_type": "code",
56 "collapsed": false,
56 "collapsed": false,
57 "input": [
57 "input": [
58 "from IPython.display import clear_output\n",
58 "from IPython.display import clear_output\n",
59 "for i in range(10):\n",
59 "for i in range(10):\n",
60 " time.sleep(0.25)\n",
60 " time.sleep(0.25)\n",
61 " clear_output()\n",
61 " clear_output()\n",
62 " print(i)\n",
62 " print(i)\n",
63 " sys.stdout.flush()"
63 " sys.stdout.flush()"
64 ],
64 ],
65 "language": "python",
65 "language": "python",
66 "metadata": {},
66 "metadata": {},
67 "outputs": [
67 "outputs": [
68 {
68 {
69 "output_type": "stream",
69 "output_type": "stream",
70 "stream": "stdout",
70 "stream": "stdout",
71 "text": [
71 "text": [
72 "9\n"
72 "9\n"
73 ]
73 ]
74 }
74 }
75 ],
75 ],
76 "prompt_number": 2
76 "prompt_number": 2
77 },
77 },
78 {
78 {
79 "cell_type": "heading",
79 "cell_type": "heading",
80 "level": 2,
80 "level": 2,
81 "metadata": {},
81 "metadata": {},
82 "source": [
82 "source": [
83 "AsyncResult.wait_interactive"
83 "AsyncResult.wait_interactive"
84 ]
84 ]
85 },
85 },
86 {
86 {
87 "cell_type": "markdown",
87 "cell_type": "markdown",
88 "metadata": {},
88 "metadata": {},
89 "source": [
89 "source": [
90 "The AsyncResult object has a special `wait_interactive()` method, which prints its progress interactively,\n",
90 "The AsyncResult object has a special `wait_interactive()` method, which prints its progress interactively,\n",
91 "so you can watch as your parallel computation completes.\n",
91 "so you can watch as your parallel computation completes.\n",
92 "\n",
92 "\n",
93 "**This example assumes you have an IPython cluster running, which you can start from the [cluster panel](/#tab2)**"
93 "**This example assumes you have an IPython cluster running, which you can start from the [cluster panel](/#tab2)**"
94 ]
94 ]
95 },
95 },
96 {
96 {
97 "cell_type": "code",
97 "cell_type": "code",
98 "collapsed": false,
98 "collapsed": false,
99 "input": [
99 "input": [
100 "from IPython import parallel\n",
100 "from IPython import parallel\n",
101 "rc = parallel.Client()\n",
101 "rc = parallel.Client()\n",
102 "view = rc.load_balanced_view()\n",
102 "view = rc.load_balanced_view()\n",
103 "\n",
103 "\n",
104 "amr = view.map_async(time.sleep, [0.5]*100)\n",
104 "amr = view.map_async(time.sleep, [0.5]*100)\n",
105 "\n",
105 "\n",
106 "amr.wait_interactive()"
106 "amr.wait_interactive()"
107 ],
107 ],
108 "language": "python",
108 "language": "python",
109 "metadata": {},
109 "metadata": {},
110 "outputs": [
110 "outputs": [
111 {
111 {
112 "output_type": "stream",
112 "output_type": "stream",
113 "stream": "stdout",
113 "stream": "stdout",
114 "text": [
114 "text": [
115 " 100/100 tasks finished after 30 s"
115 " 100/100 tasks finished after 30 s"
116 ]
116 ]
117 },
117 },
118 {
118 {
119 "output_type": "stream",
119 "output_type": "stream",
120 "stream": "stdout",
120 "stream": "stdout",
121 "text": [
121 "text": [
122 "\n",
122 "\n",
123 "done\n"
123 "done\n"
124 ]
124 ]
125 }
125 }
126 ],
126 ],
127 "prompt_number": 3
127 "prompt_number": 3
128 },
128 },
129 {
129 {
130 "cell_type": "heading",
130 "cell_type": "heading",
131 "level": 2,
131 "level": 2,
132 "metadata": {},
132 "metadata": {},
133 "source": [
133 "source": [
134 "Matplotlib example"
134 "Matplotlib example"
135 ]
135 ]
136 },
136 },
137 {
137 {
138 "cell_type": "markdown",
138 "cell_type": "markdown",
139 "metadata": {},
139 "metadata": {},
140 "source": [
140 "source": [
141 "You can also use `clear_output()` to clear figures and plots."
141 "You can also use `clear_output()` to clear figures and plots."
142 ]
142 ]
143 },
143 },
144 {
144 {
145 "cell_type": "code",
145 "cell_type": "code",
146 "collapsed": false,
146 "collapsed": false,
147 "input": [
147 "input": [
148 "%pylab inline"
148 "%pylab inline"
149 ],
149 ],
150 "language": "python",
150 "language": "python",
151 "metadata": {},
151 "metadata": {},
152 "outputs": [
152 "outputs": [
153 {
153 {
154 "output_type": "stream",
154 "output_type": "stream",
155 "stream": "stdout",
155 "stream": "stdout",
156 "text": [
156 "text": [
157 "\n",
157 "\n",
158 "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
158 "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.kernel.zmq.pylab.backend_inline].\n",
159 "For more information, type 'help(pylab)'.\n"
159 "For more information, type 'help(pylab)'.\n"
160 ]
160 ]
161 }
161 }
162 ],
162 ],
163 "prompt_number": 4
163 "prompt_number": 4
164 },
164 },
165 {
165 {
166 "cell_type": "code",
166 "cell_type": "code",
167 "collapsed": false,
167 "collapsed": false,
168 "input": [
168 "input": [
169 "from scipy.special import jn\n",
169 "from scipy.special import jn\n",
170 "x = np.linspace(0,5)\n",
170 "x = np.linspace(0,5)\n",
171 "f, ax = plt.subplots()\n",
171 "f, ax = plt.subplots()\n",
172 "ax.set_title(\"Bessel functions\")\n",
172 "ax.set_title(\"Bessel functions\")\n",
173 "\n",
173 "\n",
174 "for n in range(1,10):\n",
174 "for n in range(1,10):\n",
175 " time.sleep(1)\n",
175 " time.sleep(1)\n",
176 " ax.plot(x, jn(x,n))\n",
176 " ax.plot(x, jn(x,n))\n",
177 " clear_output()\n",
177 " clear_output()\n",
178 " display(f)\n",
178 " display(f)\n",
179 "\n",
179 "\n",
180 "# close the figure at the end, so we don't get a duplicate\n",
180 "# close the figure at the end, so we don't get a duplicate\n",
181 "# of the last plot\n",
181 "# of the last plot\n",
182 "plt.close()"
182 "plt.close()"
183 ],
183 ],
184 "language": "python",
184 "language": "python",
185 "metadata": {},
185 "metadata": {},
186 "outputs": [
186 "outputs": [
187 {
187 {
188 "output_type": "display_data",
188 "output_type": "display_data",
189 "png": "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\n",
189 "png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXdYFNfXx7+AooIowgJiwa7YscUSC/ZujDGWRGOPGktM\nfknemKZpxmgsWBJLTGISjT32xNhQlo5iBUEEAeltl7Kwbb7vH2OIBaVtAZ3P88zDrjNz79lx99x7\nzz3FgiQhISEhIfHMYmluASQkJCQkjIuk6CUkJCSecSRFLyEhIfGMIyl6CQkJiWccSdFLSEhIPONI\nil5CQkLiGUdS9BLPFXfv3oWlpSUEQXji+VdffRV16tTBpk2bTCZXXFwc7OzsIHk7SxgDSdFLGJ3G\njRvDxsYGdnZ2aNq0KRYvXozU1FRzi1Ukv//+O2rXro2MjAwsXLjQaP00btwY586dK3zv5uaGnJwc\nWFhYGK1PiecXSdFLGB0LCwscP34cOTk58Pf3R3x8PDZu3GhusYpELpeje/fusLQ07k/DwsJCmr1L\nmAxJ0UuYFBcXF0ycOBEnTpwo/DedTod9+/ZhwIAB8PDwwI4dO6DRaAAAKpUKs2fPRuPGjeHo6Ii+\nffsWKsgdO3agZ8+eqF27Ntzd3R+aIf/1118YM2YMWrVqhXXr1iE3N7dY2QYMGIAzZ85g8eLFqFWr\nFm7fvg1PT0/s2LGj8JpffvkFffr0KXxvaWmJXbt2wcPDA82bN8e6deseavP8+fOYMmUKHBwc0LZt\nW4SGhmLq1KmIi4vD6NGjYWdnh+++++4xk1JmZia+/fZbtGjRAuPHj8eFCxcK21y+fDkmT56MhQsX\nom7dupgwYQLCw8MLzz/tuUg8p1BCwsg0btyYZ86cIUneu3ePo0aN4jvvvFN43svLiwMGDOCNGzcY\nFRVFT09Pbtu2jSS5adMmvvbaa1QqldTpdJTL5STJtLQ0NmjQgJGRkSTJ2NhY3rlzhyR55MgRdujQ\ngf7+/kxMTOSECRP40UcfkSRjYmJoYWFBvV5fpKyenp7csWPHE9///PPP7N27d+F7CwsLDhgwgOHh\n4bx06RLt7OwYFRVFkrx8+TKdnZ25e/duajQaRkVFMTY2tvCZnD17trCdR+V64403OGHCBMbHx/Pg\nwYN0cHBgTEwMSXLZsmW0trbmtm3bmJmZydmzZ3PKlCnFPheJ5xdpRi9hdEhi7NixqFOnDho1aoSY\nmBh88sknhef37duHL7/8Em3btkWzZs3w9ttv4/DhwwAAQRCQnp6OhIQEWFlZ4cUXXwQgmj7y8/MR\nGRkJrVYLNzc3NG3aFACwd+9e/N///R969OgBV1dXLF26tLC9kspbGhYsWAB3d3d07twZvXr1wunT\npwEAe/bsweTJkzF58mRUrVoVzZo1g5ubW7Ht6fV6nDhxAl9++SUaNGiAcePGYfjw4fjzzz8Lr2nV\nqhXmzJmDOnXqYNasWThz5gyApz8XiecXSdFLGB0LCwscOXIEWVlZyMrKwrx589CmTRtoNBrk5eXB\nz88PI0eORJ06dVCnTh1Mnz4dfn5+AIBZs2bB09MTo0aNQvv27QvNKI6Ojvjtt9+wbt06uLq6YsmS\nJUhLSwMAnDlzBvPnzy9sr3///rh7926JN4BLuyHq4eFR+NrV1RWJiYkAAG9v78KBqTSEh4dDrVaj\nZcuWhf/WpUsX+Pj4FL7v2LFj4eu6desiJSUFgiA89blIPL9Iil7CpNjZ2WH+/PnIycmBj48PbG1t\n0b17d5w6dapwIFAoFMjKygIA2NjYYOnSpbhz5w5++uknvPvuuwgLCwMADB8+HGfOnEFYWBhiYmKw\natUqAKKtffv27YXtZWVlIS8vD87OzqWWt379+khOTi58HxoaWuJ7+/fvD7lcXuQ5KyurJ64c3N3d\nUa1aNURERBT+W0hICPr27Vuifp/0XCSeXyRFL2ES/lVqubm52LZtG2xsbNCrVy8AwNSpU/HZZ5/h\n8uXLEAQBCQkJ+OeffwAAJ06cQFRUFARBgK2tLaytrVG9enVERkbi3LlzUKvVsLa2RrVq1WBnZ1fY\n3qpVqyCXy6HX65GWloajR4+WWlYAGDhwIA4fPoyEhAScO3cOR44cKfbef++fNGkS9u3bh3379kGj\n0SAqKgpxcXEAxBn6pUuXimyjSpUqGDlyJJYtW4aEhAQcPnwYf//9N8aOHVus7E97LhLPL5KilzAJ\n/3qYNG3aFOfOncPOnTtRo0YNAMCcOXMwc+ZMfPbZZ3BwcMDgwYMRGRkJALh9+zYGDx6M2rVrY86c\nOfjqq6/QtGlTqNVqLF26FE5OTujatSvs7e3xzjvvABBntF988QU2bdoEJycn9OzZE0FBQYWyFGea\nefD8uHHj0KtXL3Tt2hWrVq3CggULHjr/aFsWFhaF/+bh4YFdu3bh0KFDcHZ2xrhx4wpXKvPmzcPx\n48fh4OCAtWvXPtbW2rVr0bFjR/Tr1w+//vor9u/fj8aNGz/Wx6NyPO25SDy/WLC0O08SEhISEpWK\ncs/oL168iNatW6NFixZFBsHk5+dj2rRp6NSpE/r161fs0ldCQkJCwrCUe0bfqVMneHl5oVGjRhg6\ndCjkcjlkMlnh+S1btuDatWv4/vvvERsbiwEDBiAqKkoK9ZaQkJAwEeWa0SuVSgBA37590ahRIwwZ\nMgSBgYEPXVO7dm3k5ORAq9UiMzMTNjY2kpKXkJCQMCHlUvTBwcFwd3cvfN+mTRsEBAQ8dM3kyZOh\n1+shk8nQu3dv7Nq1qzxdSkhISEiUkirG7mDTpk2oUqUKkpKScP36dYwcORKxsbGPJY2SZvkSEhIS\nZaM4C3y5ZvTdunXDrVu3Ct/fvHkTPXr0eOiaixcv4vXXX4eNjQ26d++OevXqFbrOFSWsdBDLli0z\nuwwV5ZCehfQspGfx9KMklEvR165du1CZ3717F6dPn0b37t0fumbgwIE4duwYBEFAdHQ0MjMzHzL3\nSEhISEgYl3KbbtavX4+5c+dCq9Vi8eLFkMlk2Lp1KwBg7ty5mDRpEsLCwtC1a1c4OTnBy8ur3EJL\nSEhISJScChMw9WAhBp0OiI0FIiKAmBigbVugZ0+gWjUzC2kivL294enpaW4xKgTSs/gP6Vn8h/Qs\n/qMkRWwqlKJ/6SUiMlJU7i4uQMuWgJsbcO0acOsW8OKLwODBwKBBQPv2gLR/KyEh8bxT6RT9gQNE\ny5ZA8+bA/TQohWRmAufPA6dPA2fOADk5wLBhwLJlgJRuW0JC4nml0in60ogSEwPs3g2sWwcsXgx8\n8AFQvboRBZSQkJCogJREd1ba7JVNmgAffwxcvgxcuSKacv7+29xSSUhISFQ8Ku2M/lFOngQWLQI6\ndRJn+Q0bGlA4CQkJiQrKMz2jf5QRI4AbN0QPnU6dgPXrgYoxhElISEiYl2dmRv8gUVHAxImAhwew\nZQtQtapBmpWQkJCocDzTm7HFkZsLTJoEaLXA/v1ArVoGa1pCQkKiwvBcmW4epWZN4PBh0fWyTx8g\nIcHcEklISEiYh2dW0QNAlSrA998Dr78uRtZev25uiSQkJCRMzzNrunmUvXtFr5xdu8ToWgkJCYln\ngefadPMoEycCBw8CU6cCv/1mbmkkJCQkTIfRC49UJPr0Aby9gYEDxRQL48ebWyIJCQkJ4/NcKXoA\ncHcXg6uGDAHs7IChQ80tkYSEhIRxeW5MNw/SsSPw55+iGcfX19zSSEhISBiX51LRA0CvXqKtftw4\nMVeOhISExLPKc6voAdFss3mzmD7hCWVsJSQkJCo9z52N/lHGjweys0WbvY+PlAxNQkLi2eO5V/QA\nMHMmoFCI/vUXLwLOzuaWSEJCQsJwPDcBUyXh44+Bc+fESlZSERMJCYnKwHOd1KwsCIKYCK16dWDn\nTqkmrYSERMVHiowtJZaWwC+/ADdvAqtXm1saCQkJCcMg2egfwcYGOHIE6N5dDK4aM8bcEklISEiU\nD8l08wQCA4FRo0Sbffv25pZGQkJComgk00056N5dLEc4ZgyQlmZuaSQkJCTKjjSjL4aPPgLkcuDM\nGcDa2tzSSEhISDyM5HVjAARBTJPg6Aj8+KPkiSMhIVGxkEw3BsDSEvj9dyAkBNi0ydzSSEhISJSe\nciv6ixcvonXr1mjRogU2btxY5DXBwcHo1q0bWrduDU9Pz/J2aXJq1gQOHQK+/BLw8zO3NBISEhKl\no9ymm06dOsHLywuNGjXC0KFDIZfLIZPJCs+TRIcOHbBu3ToMGjQI6enpD50vFKSCmm4e5PhxYP58\ncXbv4mJuaSQkJCRMYLpRKpUAgL59+6JRo0YYMmQIAgMDH7omJCQEHTp0wKBBgwCgSCVfWRg1Cpg2\nDZg8GdDpzC2NhISERMkol6IPDg6Gu7t74fs2bdogICDgoWtOnToFCwsL9OnTB6NHj8apU6fK06XZ\n+fxzoEoV4JNPzC2JhISERMkwemRsQUEBrly5gjNnzkClUmHw4MG4ceMGatSo8di1y5cvL3zt6elZ\nIe35VlbA7t1Aly5Ajx7A2LHmlkhCQuJ5wtvbG97e3qW6p1w2eqVSCU9PT4SGhgIAFi1ahGHDhmHk\nyJGF15w4cQLe3t5YfT95zMSJEzFz5kwMfaRYa2Ww0T9IYCAwerRYirBFC3NLIyEh8bxidBt97dq1\nAYieN3fv3sXp06fRvXv3h67p0aMHLly4AJVKhczMTISGhuLFF18sT7cVgu7dRTPOuHFAXp65pZGQ\nkJB4MuU23axfvx5z586FVqvF4sWLIZPJsHXrVgDA3Llz4ejoiBkzZqBr165wcnLCF198gZo1a5Zb\n8IrAvHmAv7/499dfHw+mUuvUCE4MRmJOIlLzUpGSl4LUvNTCI1eTi7o166KeXT3Ut6uPenb1Cl83\nd2iOOjXqmOeDSUhIPFNIkbHlRKUCevYU3S7nzQPS8tJw8vZJHIs8hjPRZ9DCsQUa2zeGs60znG2c\n4VLTRXxt6wybqjZIyU1BYk4iEnISkJiTWPj6dsZttJK1wuCmgzGo6SC82PBFVKtSzdwfV0JCooIh\npUAwEX+HROCVTw6h+YhjiFWFYVDTQRjdcjSGtxgOZ9uy1SXU6DXwj/fHmZgzOH3nNMLSwtCrYS8M\najoIL7u/jGYOzQz8KSQkJCojkqI3Mncy7+DT85/iXMw5eFR9FdcOjMaVw/3g7Gj4mbeiQIHzMefx\nT/Q/OBh2EB51PTC/63yMbjUaVSylsgISEs8rkqI3Esm5yfjq4lfYc2MPlvRYgiU9lqCmdU3Mnw+k\npwP79hk3+VmBrgAHww5iy6UtiMmKwezOszG782w0qNXAeJ1KSEhUSCRFb2Cy1dlY7bca3wd/j2kd\np+GjPh9BZvNfpG9BAdCrFzBzJrBwoWlkup5yHVsvbcXu67vRr3E/vN/rffRq2Ms0nUtISJgdSdEb\nCJLYfnk7Pj3/KYY3H47PPT9HI/tGRV4bFSUq+xMngG7dTCdjriYXv1/7Hd/Iv0EHlw74qv9X6Fi3\no+kEkJCQMAuSojcAKq0Kbx57EzfTbuLXsb+ivUvxdQUPHgTefx+4dAmoY2IPSbVOja2XtmKFzwr0\nb9Ifn3t+jpaOLU0rhISEhMmQ8tGXk+isaPTa0QuWFpbwnelbIiUPAK+8IiZAmzEDMPXYVa1KNSzu\nvhhRi6PQ3rk9eu3ohTnH5iBeGW9aQSQkJCoMkqJ/An/d/gs9d/TE7M6zsXPsTthUtSnV/atXA4mJ\nYt1Zc1DTuiY+6vMRIhdFQmYjg8dWDyz3Xo4CXYF5BJKQkDAbkunmEQQK+Pri19hyaQv2jd+HF93K\nnq4hJkZMlXD0qJgAzZzEK+Ox5NQSXEu5hu9HfI/BzQabVyAJCQmDINnoS4myQImpf05FZn4m9r+6\nH652ruVu8/Bh4O23gdBQwMHBAEKWk+ORx7Hor0Xo0aAH1g5Za5DPKCEhYT4kG30pUBYoMeDXAWhQ\nqwHOTTtnMAU4diwwfrxYsEQQDNJkuRjVchRuvnUTje0bo8OWDtgctBl6QW9usSQkJIyINKMHkKfJ\nw9Dfh6KTaydsGLYBFgaOdtJqgb59gZdfBj74wKBNl4ubqTcx/8R85Ovy8ctLv6Ctc1tziyQhIVFK\nJNNNCSjQFWDMH2NQv1Z97BizA5YWxlnkxMWJfvUHDwK9exulizLxb4zAx+c+xtLeS7GkxxKjPQMJ\nCQnDIyn6YtDqtXh1/6uoalUVf7zyh9Fzxpw4IWa4vHwZcHIyalelJjorGtMOT4OVhRV+GfsLGts3\nLn0jJJCVJY5qubmApWXRh5MT4OoqvpaQkCgXkqJ/CnpBjzcOvwFFgQJ/TvwT1lbWJun3ww+BK1eA\nkycrnp7TC3qs9V+LVX6rsHLgSszsNLNoM1ZuLiCXiyNWXBwQGyv+jYsTay26uQG1aombEo8eej2Q\nmgpkZgINGgCNGwONGolHkyZA585AmzYV7+FISFRQJEX/BEhi3ol5iEiPwF+v/4UaVR+vX2ssdDqg\nf39g+HDgo49M1m2puJ5yHVP/nIqGtRti++jtqGtVW6ywcv48cO4ccPUq0LWr6DvauLGo2P897lcd\nK5aCgv8GidhY4O5dIDoaCAkRB4IXXhB9Unv2FP+aOsRYQqKSICn6IiCJ90+/D584H5yZegZ21eyM\n3uejJCSIenLPHqBfP5N3XyI02Vk4/sUUOB8+jR5JVqjSwQMYMEAcpXr1AmxKF0BWKtLSgIAAcXDx\n9xeVv5sbMHKk6MbUvbu4cpCQkJAUfVF4BXhhR+gOeE/3hkMN8zm2nzoFzJol6rC6dc0mxuNcvw5s\n3Qrs3g306YMbI1/AqxnfY1TX1/D1gK9NZuJ6CJ1ONBMdOyYGJqSmAmPGAC+9BAwcCNQw3YpMQqKi\nISn6Rwi8F4jRf4xG4OxANKnTxKh9lYTlywFvb+DMGaCKOWuH5OcDBw4AW7aIJpQ5c8RRqGFDAEC6\nKh3TD09HmioNe17ZY/5nFx0NHDkiHqGhwJAhwPTpwNChZn6QEhKmR1L0D5CZn4nOWztj/bD1GOs+\n1mj9lAa9XrRGdOwIfPutGQTQaoEffgC++krcBJ03T8zGVoSyJIl1AeuwUr4S34/8HuPbjDeDwEWQ\nng4cOgT89BMQHy9Gps2cCTRvbm7JJCRMgqTo70MSL+15Cc0dmmPt0LVG6aOspKcDXboAXl6i+dkk\nkKIZ5P33gaZNxQxs7dqV6NbghGBMOjgJQ5oNwdoha026kV0sN2+KCv/33wF3d1Hhjx8P2NqaWzIJ\nCaMhKfr7fOf3HQ6EHcDFGRfNY2MuhqAgcSLt52eCiWhoKPC//4l27u++A4YNK3UTygIl5h6fi/D0\ncByccBDNHSrY7FmjAY4fB3bsAAIDRVPUwoVA/frmlkxCwuBIuW4A+MX7YbXfauwdv7dCKnlA9CRc\nvlzMY69SGamTxERxhjtiBDBxoujMXwYlDwC1q9fGH6/8gbld5qLXjl44fOuwgYUtJ9bWwLhxYoRa\nYKD4UNu3B6ZOFTd1JSSeM57pGX26Kh2dt3bG5hGbMbrVaIO2bWhIUQ9VqQL8/LOBi4vv3i2m0Jw1\nS3Ter1XLYE0HJQRhwv4JmNB2AlYMXGH06OIyk5UF/PgjsGGDuGx6911xg6QEgVmZWi1uqVS4pVIh\nMj8f6VotFDodlA8eej1y9XpUtbBAdUtLVLe0RLX7f6tbWqKmlRXqW1ujYfXqaFCtGhpUq4aG9/86\nVKli8PxKEs8Pz7XpRqCAUbtHoa1zW6wevNpg7RqTvDzRRfztt0VrQ7nJzRVNFv7+otN+p04GaPRx\n0lXpmHJoCvJ1+djzyp6KnfpYqwX27wfWrBGDtj75BJgwAbCyAkncUqlwXqHA1dxchN9X7gWCAHcb\nG7S2sUFLGxs4Va0K+ypVUPv+YV+lCmpbWaGmlRV0JAoEAQWCAPUDr3N0OtxTq3FPrUb8/ePf1wDQ\nwdYWHWvWFA9bW7SztUUNKVZAogQ814r+W/m3OBp5FN7TvFHVqqrB2jU2ERFAnz7AX3+Jm7Rl5vJl\nYNIksTEvL6BmTYPJWBR6QY+vLn6FbZe3Yfe43ejXuIJGgv0LCZw6hbj163G2Xj2cHT8e5+ztYW1p\niQH29uhqZwd3Gxu429jA1draqDPuNI0G1/LycCU3F1fvH5H5+WhcvTpesLODp709+tnbo0n16tLM\nX+IxnltFH5wQjNF/jEbwnGA0rN3QIG2akgMHgPfeA4KDy5D8TBDE+oUrV4pmikmTjCLjkzgVdQrT\nDk/D/3r+D+/1eq9CKqYrubnYmZyM4xkZUOp0GKBWY+DRoxgQHIym8+bBYvJks/vjawQB4SoV/LOz\ncUGhgLdCgaoWFuhnbw/P+0dTSfFL4DlV9DpBh27bu+G9nu/h9Q6vG0Ay87B0qbiPeOoUULWkC5LU\nVNGPXKEQ7fJNzBPYFKeMwyv7XkET+ybYMWaHWdJMPEqyRoNdKSn4NTkZSr0eb7i4YLyTE9rZ2sLS\nwkKc4Z8/D3z+ubhxvWwZ8NprFSa5Gknczs+Ht0KBCwoFzisUsLGywhhHR4x2dETv2rVRtYLIKmFa\nSqQ7WU4uXLhAd3d3Nm/enBs2bHjidUFBQbSysuLBgweLPG8AUUiSa/zWcNCvgygIgkHaMxc6HTls\nGPn22yW84cYN0s2NXLqU1GiMKltJyNfmc9aRWWyzuQ1vpd0yiwxqvZ77UlI44upV2vv4cHp4OM9n\nZVFf3Hfj3DmyRw+yQwfy+HGyAn6XBEFgaE4OP4+JYZeQENbx8eHkmzf5R0oKs7Rac4snYUJKojvL\nPaPv1KkTvLy80KhRIwwdOhRyuRwymeyha/R6PQYPHgwbGxvMmDEDr7zyStlGpWKIU8ah89bO8J/l\njxaOLcrVVkUgK0t0vfzkE3Gi/kR8fMTAoDVrgClTTCZfSdh+SSxqsm30NpNFJOfr9diRnIxVcXFo\nVqMGZtSti3FOTqhZms1NUqzq/tFHgKOjaArr1ct4QpeTBLUaxzMycDQ9HT5KJfra2+M1Z2eMkclK\n97kfQafUQR2vhjZdC71KD0ElQJ9//69KDyFfrI9pWd3y4aOG+LeqY1VY17WGtYs1LKtJKw5jYHTT\njVKphKenJ0JDQwEAixcvxtChQzFy5MiHrlu/fj2sra0RHByMUaNGGUXR83706wv1X8AnfT8pczsV\njZs3AU9PMX99t25FXHDokJi6YNcuYPBgU4tXIoISgjB+33i80fENfO75OawsjeNNkqvXY2tiItbE\nx+OFWrXwsZsbupXXlVSvB377TTTleHgAX39d4ihic5Gj0+FIRgZ2p6TAV6nECEdHvObsjKEODrB+\nxLxDEgUxBcgNzUXezTyo49RQ31OjIL4A6ng1QKBaw2qo6lQVVrZWsLKxEpW4jSWsaoivYQEIBcLj\nR74AbboWmmQNNCkaWNlZiUq/rjWquVZDjeY1UKNVDdi0soFNSxtY1ZS8jMpCSXRnuXacgoOD4e7u\nXvi+TZs2CAgIeEjRJyQk4MiRIzh37hyCg4ONtnl0+NZhRGVGYf+r+43Svrlo2xbYtk0MpgoOBlxc\nHji5eTOwYoVoyDeS66QheKH+Cwh5MwSTDkzCyN0jsWvcLjjaOBqsfaVOh80JCfC6dw+e9vb4q0MH\ndDSUl5GVlZgwbdIkMS/QwIHA6NHAl1+KVbIqIHZVqmCKiwumuLggTaPBgbQ0rIqPx4xbtzAj2x5j\nE2rCJVyH3NBc5F7JhZWtFWp2rgnb9raw62YH2TgZqjWshuoNq8OqtpVBfrMUCF2mDppkDdRJamgS\nNciPykf6oXSoIlTIj8pHVYeqqNGqBmxb26Jm55qw62oH2za2sKgibTiXF6O7FixZsgQrV64sHHWe\nNvIsX7688LWnpyc8PT1L1Ee2OhuL/16MXeN2oVqVauWUuOLx8sti5oLx44GzZwHrqgQ+/lgsQCuX\nm23TtTQ42zrjn6n/4MMzH6Lb9m44NPEQPOp6lKtNHYmN9+5hRVwchjs4wNvDA62NldemenXgnXeA\nGTPEwbVdO2DJEjGdhDFz85cT+2wLjLtYBf1P1UDaPyrkWSng1yoLie6WaDfbCSM9W6BufePnArKw\ntEBVWVVUlVWFbbvH+6NAqOPUUEWokHczD4pzCsSviof6nhq2HW1h19UOdl3tUOuFWqjRssZz7W3k\n7e0Nb2/vUt1jUNPNokWLMGzYsIdm9E2bNi1U7unp6bCxscH27dsxZsyYhwUph+nm7b/fRq4mFzvG\n7CjjJ6n4CIKYfr1xfS025s8WHe6PHwce2Q+pDOy9sRcL/1qIdUPXYUqHsu0pyJVKvBUZCRdra2xs\n0QLupla2MTFiXUg/P9GcM2VKhfDQoUBkB2Qj82QmMk9lQhWpgn0/ezgMdYDDUAfUaF4DJHFBqcSO\npCQcy8jAMAcHzHZ1xQB7e9EDqQKhU4orj+zgbOSE5CDbPxvUEPae9rD3tEftfrVh427zXCt+k7hX\n/rsZ6+bmhmHDhhW5GfsvM2bMwOjRozFu3LgyCVsUIYkhGLV7FG6+ddOg5oCKiDJdi6AmE9CyiRaN\n/PdW6qyMN1Jv4OW9L2NEixH4bvB3JQ5qS9Vo8EF0NM5kZWFts2Z41cnJvD9yPz8xnYJWK26Gl3AV\namhUt1VI+S0FKb+lwNLGErIxMjgMdUCtXrVgaf3kAShLq8Xu1FT8mJQEpU6H+fXqYaarKxxL7NNr\negruFkDhrSg89Pl62Hvao86AOnAY7oDqbtVL3SZJ6PVKaDTJ0GhSoNGkQKtNhV6fB0FQQxAK7h/i\na1IDC4uqsLSsBkvLarCwqFb42tLSBlWrymBt7YSqVWWoWlX8a2VlnN+rSRT9hQsXMG/ePGi1Wixe\nvBiLFy/G1q1bAQBz58596FpDK3qdoEP3H7tjSfclmNpxatk/RGVAEIBp05AXl4FW4Yex8w9rDBxo\nbqHKh6JAgSmHpiBbnY19r+5D3ZpPLrWlJ7E1MRHL797FG3XrYlmjRrCrKEVGSGDvXnGG37WrmPbZ\nBOY0bYYWqXtTkfJbCgpiCuA82Rkub7igpkfNMg1+QdnZ2JyQgKMZGRgnk2FB/frobGf+GIjiKLhb\nAMUFBbLAeqYoAAAgAElEQVROZyHzVCas61rDYbgDHEc4otaLtWBZVRzoSB3y86OhUt166FCr70Gr\nTYWFhTWsrV1gbV0X1tYuqFrVGVZWNWFpWf3+Ua3wtYVFVZDa+4pfDVJdOBDo9SpotemPHGkAAGvr\nuqhevTGqV2+C6tUbo0aNJoXvra1dYWFR+lXhMx8wtT5gPY5FHsOZqWee7aUbCSxYILrg/PUXvINs\nMGECcOEC0Lq1uYUrHwIFfHHhC+wI3YF94/ehZ8Oej10TnpeHqbduwdbSEptbtkS7irqSyc8XZ/Xr\n1gHz54uK3wipJ7IDsxG/Jh6ZpzLhONwRLm+4wGGIg8E2LdM0GvyYlIQtiYmoX60aFtavj/FOTo95\n7FREqCdyQnKQ/lcy0q8GosDmEqr0iwQaR0FbLQ7VqtWDjY37A0crVKvmBmtrF1hZGdf8p9eroNEk\noqDgLvLzY1BQcBcFBTGFh16fBxub1rC1bXf/aAtb23awtq73VP32TCv65NxktPu+Hfxm+aGlY0sj\nSlYB+PBDcRf27NnCzJM//ywWhgoMrJRm+sc4HnkcM4/MxOeen2Ne13mF34cfk5LwUUwMVjRpgtmu\nrpVjQL93D/i//xNH4pUrgddfL3c6UgpExokMxK+OhzpOjQbvNEDd6XVRpbbxVjU6EsczMrApIQFh\neXlYUL8+5tarB1kFNOvodAooFD7IzvaDUumH3NxLqF69CWpW7QHLqHbI/6cBsv+sjdoeTpCNk0E2\nVoZqrhXLcUOnUyAvLwx5eTfuHzeRl3cDpAY1a3ZCrVovwM6uG+zsXkC1ag0KfwvPtKJfcHIBqllV\nq3AVowzON9+IPvIXLoiBOw+wdKkYK3X2LFCtYn1ny8TtjNt4Zd8r6OTaCSuGbsTb0fGIys/HnjZt\nTL/Zagh8fcVUpNbWYmK5IgMhno6gFpDyewriv4uHpY0l3N53g9N4J5O7HN7Iy8O6+HgcSk/HJGdn\nLGnQAK3M+H9CEvn5kcjIOI6MjBPIyQlBrVrdUbv2i6hVqxdq1eqOKlVqP3SPPk+PzFOZSD+UjowT\nGbBpYwOncU5wetWpTHZ9U6HRpCIn5xJycoKRkxOM7OwgWFhYwM7uBdSq9QIaN/702VT0UZlR6PFj\nD9xaeAsym2dgOvskNm8WzQA+PkX6bAuCmGG3Rg3g118NnMPeTORp8jD2789wocaLeN21EX5o0wnV\nK4HJ4IkIArBzp+gOO3y46Jr5UDDEE24rEJCwOQHxa+JRs2NNNHy/Iez725t9RZOi0eD7hARsSUzE\nC7Vq4Z0GDdDf3jRykTooFBfuK/fj0OtVcHQcBUfHUahTZ0CpNjsFjQDFOQXSDqYh/c902LjbwHmy\nM5xedYK1c8UsUPQvJKFWxyMnJwjZ2cFo3nzVs6noJx+cjLZObZ+pCNjH+PVXUTlcvPjUjT2VSnT0\nGD0a+PRT04lnDHQkvoqNxdbERLxkEYk/ff8PP7/0M0a0GGFu0cqPUikGWf2r9BcsKDJbHQUidU8q\nYj6OgW0HWzT5sglqdjBuiumykK/X4/eUFKy7dw/VLS3xgZsbxjs5oYoRFH5u7nWkpOxESsouVKvW\nADLZS3B0HAVb244GGWAEjYCsf7KQ8kcKMk9kolaPWnCe7AzZyzJUqVVBNvyfgkmSmhmKkopyKfES\nXb9zZa4618gSmZHjx8m6dcmwsBJdnpRENmpE7t5tXLGMSapazb6XL3PQlStMLCggSfrG+bL+mvpc\ndn4Z9YLezBIaiPBwcsgQsk0b8syZh05lnstkSJcQhnQLYZZ3lpkELB16QeCx9HT2vnyZTfz9uene\nPebpdOVuV61OZXz8egYHd6KfXwPeubOUeXnGT46ny9UxZU8Kr425xou1LvLGhBtMP55OQVtxEttl\nZ2fzxIkTfO+999ilSxfTJDUzFCWd0Q/9fSjGthqL+d3mm0AqMxAWJk7Rjx4FevQo8W3Xr4vR+YcO\nAb17G088Y3AzLw+jr1/Hay4u+KJx44eCdpJzkzHxwETYVrXFby//9mzESvybMO2dd4BOnZA39xtE\nb1AjLywPTVc0hdMEJ1hYVj47nJ9SidXx8fBTKrGgfn0sqF+/VP74JKFQnENCwkYoFN5wdByDunXf\ngL19f1hYmD4PjjZTi7R9aUjemYyCuwVwfs0ZdafVNfkKS6VSQS6X4/z58zh//jxu3LiBbt26oX//\n/ujfvz/69u37bM3oz9w5w+YbmlOjM38aXqOQkUE2a0bu3Fmm20+dIp2dyevXDSyXEfkrI4NOcjl/\nS05+4jUanYb/O/U/NlrXiAHxASaUzrhoU3MZ2eN3yi0OM27Iduqzno1VanheHmfdusU6Pj5cHBnJ\nuPz8p16v1xcwKekXBgV1YGBgGyYkbKNWm20iaUtG3q08Rn8cTT83PwZ7BDNubRzVqWqj9ZeWlsaf\nfvqJo0ePpp2dHXv37s1PP/2U586dY/4jz7MkurPSKHpBENh1W1fuub7HRBKZGK2WHDSIfPfdcjWz\nezfZoAF5966B5DIiG+/dY11fX8oVihJdfyjsEJ1WOXFj4MZKX28g/WQ6/dz8GD49nJor0eSrr5KN\nG5MHD1bI/PdlIaGggO9FRbGOjw9nhIfzVl7eQ+c1mnTevfsVfX1deeXKYGZk/F3h/18FvcDMs5kM\nmxpGn9o+vPHKDaafTKegK7/csbGx9PLyoqenJ2vVqsVx48bxt99+Y2Zm5lPve6YU/b4b+9h5a+dn\nx1b7KEuWiLZbAxSN8PIiW7YkU1MNIJcR0AoCF0RGsk1gIO+oVKW6Nyojih5bPDhh/wRmF1SsWV9J\nUKeqGfZ6GP2b+DPjn4yHT549S7ZtKw74JdyfqQxkaDT8PCaGTnI5x9+4weD0cEZEvEUfH3uGh89g\nTs41c4tYJrQKLRN+SGBI1xD6NfBj9CfRVN0p3fdZoVBw69at7NGjBx0dHTl9+nQeOXKEqlL8Lp4Z\nRa/RadhiQwv+E/WPCSUyIT/9RLZoQRYzcpeGjz8mu3YlsyuYLlRotRxy5QqHXr1KRRkHNZVGxTlH\n57DVxla8nlI57FSCIDD592T6uvjy9ru3qct9woalRkOuX0/KZOLqroSrncpApiqJey/P5rHzdvzG\nbxrPp96q8DP4kpJzNYeRiyMpl8kZOiCUKXtSqC8oelKq1+t59uxZTpkyhbVr1+a4ceN47NgxaspY\nGe6ZUfRbgrdw4M6BJpTGhPj5kU5OBp/BCQI5Z444OVQbz5RYKpLVarYPCuKCyEhqDfAD33llJ2Wr\nZPwl9BcDSGc8Cu4V8OrwqwzqEERlkLJkN6WkkDNnit5XP/1E6ivvSlarVTA6+lP6+DgwMnIBs1X3\nuD0xkc0DAvji5cs8mZ7+zCh8fYGeKX+kMHRAKOVOcka9F8W8CNFkFR8fz2XLlrFx48bs0KED169f\nz7S0tHL3+Uwo+jxNHuutqcfghGATS2QC4uPJevXIEyeM0rxWS44dS06caH49EV9QwFaBgfw8Jsag\nP+rrKdfpvsmd0/6cxhx1jsHaNRTpx9Pp6+LLmOUx1GvK8J8QGEh2706+8AIZULk2onW6XMbGrqRc\nLmN4+HTm58c8dF4rCNydnMx2QUHsFBzM/ampxdfzrUTkReYx6v0o/ljnRw5zHkZ7W3u+Ne8tXrp0\nyaC/gWdC0a+4uIKv7nvVxNKYAJWK7NKFXLnSqN3k55P9+pELF5pvjy9apWJTf3+uio01Svu56lxO\nPzydrTa24pWkK0bpo7To1Xrefvc2/dz8mHWxnD7xer3oieXqSk6bJgZOVGAEQWBKyh/082vAGzfG\nMzf36atVvSDwSFoaXwgJoXtgIHcmJVFj7plJOdHpdDx06BB79+5NNzc3Lp+6nD79fMRZ/vtRVN0u\nnS3/aVQ6Rb948WLu2rWLUVFRFASBygIlHb91ZER6hLnFMzxvvUVOmGAS7atQkB4e5Icfml7ZR+Tl\nsaGfHzfdu2f0vn67+htlq2TcHLTZrKYA1W0VQ7qE8PpL16nJMKArsFJJvv8+6ehIrlpVcWxyD5Cb\ne4Ohof0ZFNSBCoVPqe4VBIGnMzPpGRrKxv7+/CEhgfmVTOHn5ubSy8uLTZs2Zffu3bl3715qH9iL\nyovMY9R7UZTL5Lwy+ApTD6aWbaX3AJVO0a9atYqvvPIK69evT5lMRvde7mw/qT1v375tbvEMy59/\niq50JtxoS0sj27cXN2lNpQOv5+aynq8vdyQmmqZDkhHpEey0pRPH7R3HTJXhNrdLSvLuZMplct7b\neM94g01EBDlihLiBf/RohXDH1GqVvH37XcrlMt67t5GCUD7vMV+FgiOuXmU9X1+uiYtjrgGibY2J\nSqXi2rVrWbduXY4bN45+fn5PvV6fr2fy78m83PsyfV19Gf1pNPPjnh5v8CQqnaJ/kKi7UbSfZs/X\n57xOJycnDh48mH/++edDo2OlJD5ejGoq5otgDFJTyXbtyM8+M35fl7Kz6eLry91PCYQyFgXaAi46\nuYiN1jWiX5xpnrNOpWP4zHAGtAxgTqiJ9gr++ot0dycHDyZv3DBNn48gCAKTk3+nr289hofPoFqd\nYtD2L2dnc/yNG3SSy/nl3bvMqmC///z8fG7YsIH16tXjyy+/zKtXr5a6jdzruYxcGEmfOj68NuYa\nM/7KoKAv+eBdEkVfYVMgbAnZgmORx3DitRMoKCjAgQMH8P333yM+Ph5vvvkmZs+eDdciMjqWh7w8\nIDYWyMoCMjPFv/8eCgVgZwc0aAA0bPjfX3v7UmSN1OvFPAWDB4uJrcxAairQvz8wcSLw2WfG6SMw\nOxtjrl/HlpYt8bKTk3E6KQGHbx3G3ONzMb/rfHzS9xNUsTROgip1gho3Xr6BGs1qoNX2VrCqacJw\nfa0W+OEHsTjBhAnA558/ls7aWBQUxCIiYha02ky0aLEZtWs/XjTGUITn5eHb+HgcS0/Hm/XqYUmD\nBnCxNl+WSbVajR07duCbb75Bp06dsHz5cnTu3Llcbepz9Uj5IwWJPyRCp9Sh3rx6cJ3hiqqyp6eR\nqLRJzbR6LZusb0J5rPyx60JDQ/nmm2/S3t6eEyZMKJdZJztbnBR9+CHZowdpa0u2aiW+HjGCfP11\ncRPz00/JNWvI5cvJWbPIoUPFuJZatUgbG3FSNXs2eeAAmfW0fbcvvyQ9PUkzL0OTk8nWrUVxDM3V\nnBw6y+U8kZ5u+MbLQEJ2Agf/Opg9fuzBqIwog7evDFTSr74f735917wugunp5IIFoquul5foj28k\nBEFgQsI2yuUyxsZ+W24zTWmIyc/nWxERrOPjw4WRkbxbTHoFQyMIAnft2kU3NzcOHz6cgYGBRulD\nGaBk+LRw+tj7MGxKGBW+iid+v0qixiukot91bRf7/NTnqdcrFAquWLGCjo6O/Pjjj5mbW7I8ISEh\n4n5Wt26iYu/XTzRlnD1LPhKhXSKUSvLqVfG3NWwYWbMm2bs3+dVXYl+Fe0m+vqLJxgSbkiUhKUkc\n1FasMFybkXl5rOfry30phl2+lxe9oOc6/3WUrZLx59CfDaaQk3clU+4kZ9rh8vtCG4zr10VTTqtW\n5JEjBrff5+fH8cqVIQwJ6cLcXPOYi0gySa3mB1FRdPDx4fQi0isYg4CAAPbo0YNdunThxYsXjd4f\nSWoyNIxbE8eAFgEM6hDEhB8SqM1+eGAtiaKvcKYbkui4pSO+HfQthrcYXux9CQkJeP/99+Hr64vv\nvvsO48ePfyxHtUYDHDgAbNwIJCUB06YBAwYA3bsD1Q1cWCY/X0wh//ff4qFQAG++UYC3/ugDl42f\nAC+9ZND+MvMzcTP1JsLSwhCeHg6lWgmBAvSCHnrqC18DQP1a9dG8TnM0d2iOFo4tUFXVCIMHVMWs\nWWLlu/JwT61Gn9BQfNyoEWYb2KRmKK6nXMdrh16Du8wdW0ZuKXMmTApEzMcxSN2binZH2qFm+wqW\nL54Uv3zvvQc4O4t1bMtpViCJ5ORfEB39ARo0WIKGDT+ApaX5SwpmabXYlJCAjQkJ6Gdvjw/d3NDF\nwAXN7927h6VLl+LcuXNYsWIFpk6dCksTF8OhQGSdzULiD4lQeCvgPMkZ9ebXQ832NStnKcHjkcfx\n6flPcfnNy6UqKnDhwgUsXLgQzs7O2LhxI9q0aYOkJGDrVmDbNrGI9qJFYoEOKxOaUMPDCK/RZ7A3\n4UWMnWyDd94BOnQoW1vKAiVO3D4B/3v+hco9X5ePNk5t0MapDVrLWsOhhgOsLKxgaWEJK0urwtcA\nEJ8dj6jMqMIjIScB9WwbIi3cHb1cB2LDwhFoJWtZ6mIO6Vot+oaGYqarK95r2LBsH85EFOgKsPTs\nUhwIO4CfxvyEwc0Gl+p+XbYO4VPCoVPq0PZAW1g7VeBqRDodsGMHsHw5MHQo8PXXQP36pW5GrU5C\nRMRsaDSJcHffiZo1y/gFNiK5ej1+TErCmvh4tLaxwYdubuWufKVSqbB69Wps2LAB8+fPx4cffoia\nRij2XlrUCWok/ZiEpO1JqN64Ojr7dq5cNnpBENhrR68yZ6jUarX08vJinTrd2Lr1JdrbC5w3z2wO\nCSI7dpDt2jE9XsWvvxYDYQcOFGuLlMRFODU3ldsvbefw34fTboUdR+0exbV+a3kq6hTjlfHlMkMU\naAt4K+0Wd/gdoGz6m7T9tAGbrG/CBScW8ETkCeZpil8OK7VadgkJ4Ud37pRZDnPwT9Q/dFvnxjeP\nvVni5GgF8QUMahfEiLkR1KsrkX+3UkkuXUo6OIgbTqVIgJSR8Td9fesyOvpT6vUVPz24Wq/nz0lJ\ndA8MZLeQEB4sY7Tt0aNH6ebmxokTJ/JuBU0FK2gFph1Jq3w2+gt3L7D5hubU6cu2WZmbS370Eeng\noGfr1jvZqVN/RkdHG1jSUhAVJQa3PDDSqNXkb7+RnTqJRYZOnXr8ttTcVHoFeLHfz/1Y+5vanLB/\nAvdc32PUbI1KJdnPU+DQN67xa++V7PdzP9ZcUZOjdo/iicgTRWYNVel07BcayrciIiplrhJFvoKz\njsxio3WNeObOmademxuWSz83P8Z+G1spPytJMjaWnDqVdHEhN258asCVIGh5586H9POrz6ys86aT\n0UDoBYGHUlPZLSSErQID+WNiIgtKMLNKTEzk+PHj2bx5c549e9YEkpafSqfoh/42lNsvbS/1vYIg\npvF2cyMnTyYTEsSd6zVr1tDJyYmHDx82gsTFoNeLHjbffVfkaUEQ98qaNhXz0URHk7GKWC46uYh1\nVtbh1ENTefTWUeZrTedVkJ8vyjJkiDhoZuVn8afLP7Hz1s5s5tWMa/3WMitfdCvS6PUcde0aX7t5\ns9LnJzkZeZIN1jbg/OPzi8yXowxQ0tfFl0k/V+zUAyXmyhXRc6BZM3LPnseWlvn5cbx8+UVevTrM\n4H7xpkYQBJ7NzOSwq1fp6uvLb2Jji/TF1+v13LJlC2UyGT/++ONSpQk2N5VO0ddfU58F2oJS3RcR\n8V8JzvPnHz/v5+dHNzc3vvvuu2VOA1omfvhBTERVjCtlfj65+MswWk+YxhrLHLjkxPtMyE4wkZCP\no9WSM2aILqYZ99OlC4JAvzg/Tj4wmfYr7Tn32Fy+HHCUI69dq/Q5Sf4lKz+LMw7PYJP1TXgu+lzh\nv6efTKdcJmf6sYrhLmpQzp4Vc1l36VJYvzYt7SjlcmfGxq6k8IzVfriSk8MpYWF08PHhu7dvF1a+\nunnzJl988UX27NmT1ytTebb7VDpFv8ZvTYmvV6tFM42jo+jj/jQdnp6ezhEjRrBnz56Mi4szgLTF\ncPeumE/85s2nXhZ4L5Av73mZzqud+d7RL/ny5Ey6uZH795s3ql0QRBfUtm0f9wZNzE7koMPvsMo3\nMg76dQhDk0LNI6SROBF5gvXX1OfcY3N556c7lDvLqfB9dnLCP4YgkHv3Ut+yKW+vbEQ/77pUKHzN\nLZVRic3P5zu3b9P+/Hl2WLCAdRwd+f3331NfSSctlU7RlzTN7N274mR5zBjRTFMS9Ho9V65cSWdn\nZ/7111/lkLQYBEFcYnz99RMvScxO5KQDk9hgbQN6BXgxV/1fDIC3t5iTZuhQ0oQpYork229Fc9iV\nBxJC7k9NZQM/P0bnZXNz0Ga6rHbhG3++wViFcTJTmoOs/CyunbWW++338+CRg5XXJl9C1OoUXr7U\nm9eOtqempatov6uEM9vSEBYWRo/Ondmqf3+6HD7MQVeu8GR6eqU0Q1Y6RV8Sjh8X447WrCnbrPfi\nxYt0cXHhjz/+WPqbS8JPP4k7rUUsMXR6HTcGbqRslYwfnvnwiV4tWi25bJlYc+LYMeOIWVL++ENc\nnBw+TAYqlZTJ5bz0gNeGskDJj89+TIdvHfjB6Q8KbfiVFUEQeOfDOwxsHUh5gJxtN7flyF0jeTer\nYnpelJfs7Ev083NjdPSnoqlGpRJ/XC4u5GuvkZGR5hbRoOj1eq5fv54ymYxbt26lIAhU6/X8NSmJ\nHsHBbB0YyG0JCVRV8CRqD2ISRX/hwgW6u7uzefPm3LBhw2Pnf//9d3bo0IEdOnTg5MmTGRFRdMrh\n4oTVasVUBQ0bkvLHMyOUioiICDZp0oRffPGFYWdr9+6JWjH0cXNGcEIwu2ztwr4/9+WNlJL5e/r4\nkI0aiWkYTBzp/RCBgaRLh3zWOuXLP1OLjgK9p7zHWUdm0Xm1M9f7r6daV/FS6BaHIAi8/e5tBncK\npiZdHKjVOjW/uvAVHb915Bq/NdTqK1ZSrfKQnLybcrmMqan7Hz+ZnS2Gd8tkYt4PI9USMCWxsbEc\nMGAAe/XqVWTqFEEQeC4zk6OuXaOzXM7PoqOZVAFTQT+KSRS9h4cHL1y4wLt377JVq1aPlcby8/Oj\n4n463l9++YVTpkwptbCJiWTfvqJFxFAFr5OSktipUyfOnTuXOkOM3oJAjhol+ik/gCJfwYUnF9Jl\ntQt/Cf2l1ANLVpaYtr5dO/OtppVaLd19g1h/SRzfeOPpg8615Gsc9vswtt3cloH3DJ8HxFgIgsDb\nb99mSJcQajIfX41Fpkey/y/92XlrZwbEV65KT48iCDreufN/9PdvwpycYgq1ZGb+67NMvvkmGRNj\nEhkNiSAI/PXXX+nk5MQVK1aU6PcenpfHeRERtPfx4ZSwMAYpS1gC0gwYXdErFAp6eHgUvl+0aBGP\nHz/+xOvT0tLYsGHDogV5grBnz4qFdT7/3PC5wJRKJQcNGsSXXnqp/O5Uu3aJ2viBGcDZ6LOsv6Y+\n5xydw/S8snttCIJoEZLJyM2bTbtRqxUEDr96lXMjIpibK3D8eLJnTzEx2pPlFfjH9T/ovNqZH5z+\nwKQuomVBEARGLopkSLcQarOePGMXBIG/XvmVrt+5cvrh6UzOMX0K5vKi1Wbx6tXhDA3tT42mFDl6\n0tPFYgYODuIMv5IEyCmVSk6cOJFt27ZlaBEr7eLI1Gi4Oi6Ojfz92ePSJe5OTqa6gm3aGl3Rnz59\nmpMmTSp8/8MPP/CTTz554vVff/0133rrraIFKULYnTtFe/zp0+WR8umo1Wq+/vrr7NWrFzP+9Scs\nLcnJoqBBQSRFW/zy88vp+p0rT98xnPAREaIn3Pjxop+7KVgYGcnBV64UulHq9WISuEaNHt6kLYrk\nnGSO3zeerTa2Mlle+NIi6AVGvBXBS90vUasomVlGWaDke/+8R9kqGdf6raVGV/EjRklSpbrNgICW\njIxcVPYo14wMcdXq6EhOn16hbfghISFs1qwZ582bV+6JnE4Q+GdaGvuHhrKery+/iImpMGadCqXo\nT58+zdatWzPrCXl8AXDZsmWFx7x55+nmRoY9vdykQdDr9fzggw/o7u7O2LLYIl99lfzgA5JkUk4S\nB+wcQM9fPJmYbXi3mYIC8o03xP3e+HiDN/8QWxMS2DowsMgAk383abdvL36Fsf/mftb9ri7fPfVu\nidIqmApBLzBibgQv9bxErbL0tvfwtHAO+W0IW29qbdAB3RgoFH709XVhQsIWwzSYlSXm7XZ0FDdt\ny1Bww1gIgsCNGzdSJpNx7969Bm//Wk4O59y6RXsfH068eZPeWVkm9cw6f/78Q7rS5KabhQsXFmm6\nuXr1Kps1a/bU3PH/CqvXk//7nxgAZQqX9wdZt24dmzRpUrrcFidPihGGKhXP3DlD1+9c+dn5z8qc\nxqEkCIJYMrRePTLASOZif6WSTnI5I56S/jUsTLRWvfZa8elT0vLSOPnAZDbf0LxC2LgFvcBbs2/x\n8ouXH0v7Wqp2BIF/hv/Jxusb8+U9LzMyveLNcFNTD1AulzE9/YThG1coRD9cV1exiMPFi2YNAsnK\nyuK4cePYuXNno5cgVWi13BAfT/fAQLYJDOSme/eoNEMFLJNuxsbExBS5GRsbG8vmzZszoBiNBIAa\njZiKo1ev/6IyTY2XlxebNGlSspm9SkU2bUrdiWP87PxnBjfVFMfRo2KdiV27DNtuslrNBn5+PJJW\nvA03L08sutKyZfGmHJI8GHaQTqucuN5/vdn80wVB4K05t3i5T/mU/IOoNCp+ffFrOn7ryIUnFzI1\n10BeA+UkPn4dfX3rMTv7knE7ys8nt24VJz29eolfThPbsoOCgtikSRMuXLiQBQWli7AvD4Ig8HxW\nFl+9cYP2Pj6cGxHBkFIkjisrqankzJkmUvTe3t50d3dns2bN6OXlRZLcsmULt2wRl4izZs2ig4MD\nPTw86OHhwW7duhUtCMDhw8mRI8tWAMSQrFu3js2aNWN8cbaRZcuY+eooDtw5kP1/6W8UU01xXLsm\n1hn/6CPD/K40ej37Xr7MT0uZDG7XLtGU88MPxU/o7mTeYZetXThu7ziT+90LgsDb79zmpR6XqMsx\n/KorNTeVi04uouO3jvz64tdmM1UJgo6RkYsZGNiG+fkmjAHQ6ci9e0XbYtu2oheBkX2D/zXVODk5\ncf/+IlxFTUhiQQG/vHuXjf392Sk4mN/fu0eFEWb5J0+Ki6j33quEAVPTpxu1AlqpWLNmDZs3b857\nT+evzjoAACAASURBVKoIdfs2o5vY031dc77919tGNdUUR2oq2aePGNCYU8661Etu3+aIq1fLFCEY\nEUF27Ci6gxbnjVagLeCCEwvY1KspLyUaebb5ADHLYxjUIahIF0pDcjvjNl/d9yrrr6nPHy/9aNLv\nh06Xx+vXxzI0tD+1WjMFsAmCmJp12DAx+Gr58qe7apURlUrFadOmsX379oyKMnypyLKiFwSeysjg\n+Puz/Onh4fRVPLkcYEnJyyPfekuMJzp3PyVTpVP0FS36ePXq1WzRosXjyl4QGPhKD7p+XoteAV7m\nEe4R1GrRCaJ7d9ETrizsSk5ms4AAZpZjtFWpyHnzRK+cf/4p/vq9N/ZStkrGH4J/MLopJ25NHANa\nBlCdbDpviYD4APb5qQ/bbG7DvTf2Fpnu2ZBoNOm8dKkHw8KmUK+vGF4hvHmTnDOHtLcXM+Zdu2aQ\nZmNjY9mlSxdOnDixxKVEzUGKWs1VsbFsGRDA1oGB/DY2lgllMC0FB4sVIl977eHa1JVO0VdEVq5c\nyZYtWzLxgcQzh3/6gLIPrXj4xgEzSvY4giA6/7RpU/rStFdyciiTy3m1vEuC+/z9t5gnZ86c4mf3\nEekR7PBDB046MKnE+Y5KS8K2BPo38md+nOl9+gVB4MnIk+y2rRvbfd+O+2/uN4rCLyhIYFBQW0ZF\nvVcx8/OkpYnRtq6uYvWdw4fFkPcycP78edatW5erV6+umJ+1CARBoI9CwVn3PXaGX73KvSkpzC/G\n5qrVio/NyUn0dnsUSdEbiBUrVrBVq1ZMSkqi14VVdH3fkkFHDeSmZgS+/Va02z8h28RjZGg0bOrv\nz90GXlorlWIwpZubqPifhkqj4vTD0+mxxYNxCsO6W6X8kULfer7MizTv5o8gCDwWcYxdtnZhhx86\n8FDYIYMpKZXqNv39mzA2dqVB2jMq/1bf6dlTtEF8+aVYrb4ECILAdevW0cXFhaeNGWBjZHJ1Ov6W\nnMyBV67QwceH8yMi6K9UPvZ9iIsje/cmBwx4sheipOgNyGfLP6NsioytPnVgzIyXzS1Osfz4ozhx\nunz56dfp70e+vmNEV7R//hFNObNmid54T0IQBK72Xc16a+oZzAUz7Wga5c5y5lwzzkqhLAiCwCO3\njrDTlk702OLBQ2GHyjXDz8m5Sl/fekxI2GpAKU3E5cv/mXUmTiQvXHjibr5KpeLrr79ODw8P81aO\nMzB38/P5RUwMWwYEsKm/Pz+JjmZ4Xh6PHhXjML/55umOFpKiNxBqnZqv7H2F9T9wZi+7KsyvoDUk\nH+XgQXG55+395Gu+vnuXfS5fptbIy9/sbNF236ABeejQ0z1zjt46StkqGf+4XsQ6tRRknc+i3ElO\nZWDFzFPyrw9+121d2WpjK26/tL3UhXcUCl/K5c5MSSlbneUKQ1YWuWED6e4u2h7XrhVNPfdJTEzk\nCy+8wEmTJjHP3G55RkIQBIZkZ3Pxzdu0nZhA67oFXHQouVh7fqVT9KmpFcvmTZL52nyO3DWSY/8Y\ny7y+L3JC584cN26cYRKhmYCzZ0Vlf+TI4+cuZmXRxdeX8Sb0OT53TvS6GzTo6XVZriZfZaN1jfjZ\n+c/KNNvNuZpDuZOcmWczyyGtaRAEgedjznPY78Po+p0rV/qspCK/+GInGRl/Uy53YkaGEesrmBpB\nEEvFTZ1K1q5Njh/P0E2b6ObmZvhssxWQqCix6NfoMQIP3sni9PBw2vv40DM0lN/fu8fkItIuVDpF\nL5c7MS+vhIZlE5CnyePgXwdzwv4J1Oz8iezShQV5eRw4cCDffPPNSvOlCw4Wc9vv3v3fv6VpNGzo\n9//snXd4U+X7xu8Wyiyre0BbWkaZZU8VUBAZsgUHQxFBxYU//SrKcLNkKQoCyhJRVJCtIDuddNDd\n0tJJd9Pd7Jz798dhWOlI06RJsZ/req+TJifveZImd97xDD+e0tdFpw6oVOTWraLf/VtvVfQg+CfZ\npdkcvns4Z/86u1b+6PJUOf06+jHnUMOrdxqeHc65R+bSZp0N3z37LtOLK4/lyM39lRKJA4uK6piz\n25wpKuKxl1+mXdOm/MXGhlyxosEkU9OHX34RB2VbtlSc8cq1Wv6Rl8dno6PZ7upVjvmX6Dc4oc/I\n2M6goN7UaEzvKlWqLOWoPaM478g8qosKxAXv29G9JSUlHDhwIFf+KyWxORMZKYr9wYPiuvykiAi+\na2K/49xccXnWyUncU6hsHVKulnPukbkctHOQTtkiVVIVA3sEMm1TPefPMDAphSl888yb7LC2A2cd\nnsVLyZfuDiyysw/Q19e55hTDDRhBELh+/Xq6uLgwMDBQzKXz5pvi6GDkSDEyzwSDFGOgUIi+8V5e\n4qCsOmQaDY/m5fGZ26L/aFhYwxN6QRAYEzOPMTHzTDpaLpIXcfju4Vx0fJEY6LJ8uZhJ7B/k5OSw\na9eu/Prrr01kZe2JihJ/r57Zks9hISFmU9g7OFh0wPhHjeoKCILAjy5+RK+tXkyQVr1prJFpGDoy\nlIn/Zz6BM3WlWFHMbYHb6L3Nm72/7c2f/BZQ4uvCsrLq6xE3ZJRKJRcuXEgfH5/7azyrVGLZtTlz\nyLZtxXqihw+LARwNkLQ0sSzq9OnVOypUxh3Rb3BCT4pRfUFBvQ2XZa+WSGVSDto5iEtPLRXXhpOS\nxAx9lTimJyUl0dXV1SgZ8ozFT4GltLRVctP3ZhJMcxtBEJeWunQhR48Wq2v9m53BO+n8pTOvZdw/\n7BE0AiOnRTL6mWgK2oaxpFYbBEHg+fBlPP53S/be2o5vnnmTMbn1kNq1npFKpRw1ahSnTJnC0ppi\nOoqLyb17xQ2fDh3IBQvEWqNmkj64Js6dE2ez69bVLQ9cgxR6kiwvj6dEYseSkhrmMQYmtyyXPtt9\n+PZfb9+bUcycKfr5VkF4eDgdHBx44U48shlToFLR3d+fX/sW0MVF/I6YG2q1mB7F3V0skH47xf9d\njsUdo/16e/6ZcM8xXxDEnPJhj4ZRqzCPWYqhuXVrG/383CiTJTClMIXv//0+nb504vDdw7krZBeL\nFebpWVQbkpOT6e3tzbfffrv2zg4ZGeLi9siRoujPny+O/OvR0UBXtFry88/F2bUhZKPBCj0pbjb5\n+7tTpaqfdTipTMq+2/ty+d/L74n8pUui4tQwLTx//jwdHBwYGxtrfEP1RBAETo2M5Ju3/eVjY8U0\nx3v2mNauqlAqyW+/JV1dxdn5PzNj+qb50nGDI/df30+STPk8hdd8rumVU74hkJa2if7+nSmTVfQd\nV2vVPBF/gtN/ns52a9pxwdEFvJxyucE4CfyTkJAQuri43E2MWCdu3RJ3+x96SBT9efPIo0frr1pP\nNRQWkk8+KS5V1jZ6vSoatNCTZELC2wwPf0KsTm9EShQlHLJrSMWRvEZD9utH/qybf/KePXvo6enJ\nnBzz9PTYmp7OQcHBFcqgxcaKQvr99yY0rAZkMnLzZnGK+8QTYvCVIJAxuTF02+zGlV+vpJ+7HxUZ\n5jdyMwSpqesYEOBFubz6tNk5ZTnc6LeRPb/pyS5fdeGqi6sYm2e+A49/cubMGdrb2/P33383fOcZ\nGaJ//mOPkW3aiHWdd+4UC1HXM+Hh4obr668bdnWpwQu9VqtiaOhIpqR8YbTrlqvK+cieR7jkxJKK\nI6Fdu8QRQS1GRytWrOCwYcPqXn/WwITdzmOTWIldcXGi2O/fbwLDaoFcLv4g9epF9ukjzkTCT0bT\n83VPLj241OjJwkxBSsrnDAjoRoVC96GfIAgMuhXEt/58i85fOrPfjn5ce3UtUwrNM8hv9+7ddHR0\npK+vr/EvVlAgbgQ9/bQYiTtkiJhEJizM6MVSDh8WHYZ+/NHwfTd4oSdJuTzVaP7CCrWCT/z4BOce\nmVtRKIqLxSFkcHCt+hMEgc8++yxnzpxJrZl4tJRrNOwRGMgD1eSxiY4WX66JU3nrhCCIeXPmjCzn\nUUtfrluYxKHfjeTzfzxPtfbBWbpJTV17W+T1H3lqtBpeTL7IxScW03adLUd8P4JbA7YaPJeQPgiC\nwFWrVtHT05PxuiZlMiRKpeji9frrZNeuYirl+fPFHwIdCu7oikYj1opwdydDjJSNWxeht7h9osmx\nsLBAVabk5x9HQsLrGDQoDFZWNga5nkbQYPavswEAh586jKaWTe89+L//AXl5wJ49te5XqVRi7Nix\nGDFiBNatW2cQW+vC0hs3UKjR4GCPHrCwsKjyvOvXgfHjgR9+ACZNqkcD9UAtVSN0WCgsn+uE7Wku\n+P14OVotnI5u7u3w1+KDaGHVzNQm1on09I3IzNyBfv0uoXlzV4P0qdaqcS7pHH6J/gWnbpyCR3sP\nTO0+FdO8p6G3Q+9qPxuGRq1WY/HixYiOjsbJkyfh4OBQb9eukps3gb/+Av78E7h8GejeXfxCjB0L\nDBsGNG9e6y6Li4HnngNKS4FffwWM9TKr0867GOc3pvbUZEpCwpuMjJxmkI0mraDl3CNzOf7A+Ptz\niyQkkDY2dVrDy8/PZ9euXfndd6ZNMnUiP5/u/v6VFveujIAAMTLPnJMCahVahj4cysR37/nK5+eT\nG7co2Pal6Wz50hNc9Wm5wTa66pv09C309/ekXG68Ubdaq+bF5It888yb9Njiwc5bOnPZn8t4Mfki\nVRrjFmQpLy/npEmTOHHiRPPNIa9Uiu4w771HDh5MWluLa/yff076++uUWjkuTswdv3Sp8Ysp6SLj\nDUbotVoFr10bwPT0r+p0HUEQuOTEEj6y55HKw+qnTSO/qPueQEJCAh0dHXnmjGnykGQplXTy9eWV\nqvILVMHly+JaYmV+7KZGEATGzI1h1MyoSn3lVRo1J+6aR6flD7O9YxEnThTXRhtKDqxbt7bR39+j\nXkv/CYLA61nX+fGljzlo5yC2W9OOUw9N5bdB3/JmgWHTDUilUg4fPpzz58+nylxKyelCYaFYA/et\nt8QSam3bkhMmiDpx5cp9pRJPnBAHTLt21Y95D5TQk2LObdG/Xv/FrvfOvcchu4awRFFJ8d7z58VE\n7gaqcSmRSGhvb8/IyEiD9KcrWkHg+PBwrtAzletff4kf1H/7sJua5I+TGTwkmJryqn2stYKWr556\nlf23D+TX3+dx7FjxezlnDvnbb+Yr+hkZO277yZs2/W5uWS4PRhzk/KPz6bjBkV2/6srXTr/GY3HH\nWCDTP0Fceno6e/bsyXfeecds9q/0Ji9PTA27bJk44m/dmhw+nMI773Lt/Gi6OGno51d/5jxwQk+S\n2dk/MSCgK9Xq2ldZ3+y/md7bvJlfXolvvlYrulMaOMr1xx9/ZOfOnZmbm2vQfqtja3o6h9YxxcGd\nXNjh4QY0rA5kH8ymv7s/lVk1+6UJgsDlfy9nz296MqMkg7m55HffibPvdu1E0f/9d/MR/czM3fTz\n60iZzHg1AfRBK2gZlhXGNVfX8LF9j9H6C2v239Gfb/35Fv+I/YNSmVSnfmJiYujm5sb169cb2WIT\nUVZG+Z+XOM8nnAPa3GC6tTfp6Sl692zaRPr6GjVFwwMp9CQZF/ciY2Keq9V6/U8RP7Hjpo5MLarC\nH3nfPnLYMKO4WX344YccOXIkFfUQpRdRjStlbfnlFzF6zxROEf+kyLeIEnsJyyJrt6a75uoaem31\nquBamJND7tghVuyxthajb7duJW/cMLTVupGVtY9+fq5mlbW1KpQaJX3TfPn5lc85bv84Wn9hTZ/t\nPnzt9Gs8GHGQNwtu3vedDAgIoKOjI/eaYxi2gcjOFqVj1qzbgwetloyJEUPPX31VTOLUsiXZv7+Y\nxW/7dnFDzEAjjQdW6DWacgYG9mRm5g86nX828SwdNjgwMqeKJRSZTCxpJjFOyletVssZM2Zw/vz5\nRo1alGk07B0UxD06lmXThd27RdewqsqYGRt5ipy+zr7MP61fhPTWgK103+zOROn9ic6KisTlnIUL\nxR+0O8Esp0/XTxBlTs5h+vo6saysYeasuSP8G3w3cMYvM+j8pTMdNjhwyqEpXHN1DdftXUdbO1ue\nOHHC1KYajbAwsVTmqlXVV4GiXC5u5H79tfiB699fFP+ePcnnniO//FL0gsjOrvVg84EVepIsK4ui\nRGJb45ckOCOYduvteCXlStUnrVkjpo8zImVlZezfvz/XrVtntGu8ceMGn4qKMviPycaNogdBfQf9\nako1DOobVOeUwzuu7WDHTR0ZlxdX5TmCIKZZ+OIL8uGHxWXXYcNEx4tTp2qfWbAm8vKOUyJxeKBS\nDQuCwNSiVP4S9QsnLJ/Apm2asvni5uz+dXc+89sz3OC7geeTztdprd+cOHJEdFzQMXj+fpRKsZTi\n99+Tr71GPvKImLLBzk7M7Pfaa+Kao6+vGOxVBbpoZ4Pwo6+KzMydyMz8FgMGBMDSssV9jydIEzBq\n7yh8O+lbTPOeVnkneXlAjx6Anx/QrZs+puvMrVu3MGzYMHzzzTeYOnWqQfs+V1CAhfHxCB80CDZW\nVgbtGwBWrgROnQIuXgTatTN49/dBgYieGY2mNk3RfXf3Ovt5772+Fx9e+BB/zf0LvR1613i+XA4E\nBABXrohu1deuiR+PUaOAoUOBwYOBzp0BfcwqLPwbMTHPok+fk2jbdoger8a82blzJz7++GOcOXMG\nPXr1QFx+HEKzQhGaHYrQrFBcz74O+1b26OvYF70det9t3Wy7oVkT84+BIIG1a4FvvwWOHgUGDTJw\n59nZQFQUEBl57xgXB7RqBXh739csPD1r1M4GLfQkERPzFJo1c0HXrl9VeCy7LBsjfxiJ90e+j5cG\nvlR1J2+8AQgCsG2bPmbXmmvXrmHixIk4d+4c+vXrZ5A+C9Vq+AQH4/vu3THOxjABZf+GFN+q8HAx\npqRVK6Nc5i5JHyShWFIMn799YNnM0iB9Hoo8hLfPvo3Tz55Gf+f+tXquSgUEB4vCHxQkNoVC/JIP\nHnyvOTlVL/7FxRJERU1Hr15H0L79w3V8RebHunXrsGPHDpw7dw5dunSp9ByBAhILEhGZE4mo3ChE\n5orH1OJUeHXwQm+H3uhu1x3dbcXWzbYb2jRvU8+vpHKUSuCll4CYGODYMcDVMPFsNUMCmZmi4MfH\ni8fbzSI9/cEWegBQqwsRHNwPXbtug53dkwCAEmUJRu0dhRneM7By1Mqqn5yQAAwfDsTGAvb2+ppe\naw4fPox3330XgYGBcHJyqnN/z8XEwMbKCl937WoA66pGEIAFC4CCAnEk08xIg6+cH3OQvCoZAwIH\noJm9YS9yJPYIXjn1Ck4+cxKDXQfXqa+sLHGkf6cFB4si36dPxdarF2BtDZSUXENk5CT06HEQNjbj\nDPSKzAOSWL58OU6cOIGzZ8/CVQ8FVGgUiMuPQ1RuFOKl8YjPj0e8NB4J0gR0aNkB3Wy7oZttN3h1\n8IJnB8+7rX2L9kZ4RfeTnw9Mny5GuO7fD7RuXS+XrRFdtLPBCz0AFBf7Ijp6JgYODIFlUwdM+mkS\nvGy88O3Eb6uf8s+aBQwYAHzwgZ5W68+dqe2lS5fQosX9y0668ktuLlanpCB04EC0atLEgBZWjlot\nvm2tWgE//ggY+pIlASWIfDIS/S72Q+vexvkmnbxxEguPLcTROUcx0m2kwfq9M+uOjKzYYmOBgQMj\n8P774xAevgtt2kxB167iUpC7u+Hfw/pGq9Vi6dKlCA0NxZkzZ2Bra2vQ/gUKuFVyC/H58bghvYHk\nomQkFSYhqTAJNwtvwsrSCp4dPNG5Q2d0atsJbu3c7rZObTvBobVDnZf+4uLE1CBPPQV88QVgaZhJ\npkH4zwg9AKSkfIrCwgvYmuqGAnkhjsw5UjF/zb/x8wPmzBGnQcZeh6gEknj66adhZWWFAwcO6PVB\nzFAqMSA4GCf79MHgtm2NYGXlKBTAxImiUG3frt86daX9pikQOiwU3Xd2h+1kw4rFvzl78yzmHpmL\nX5/6FaM8Rhn1WqWl8QgLGwOZbDPi4ubgxg3gxg1xQpmTA3h4iILv4XH/bScn8xKVf6NSqTB//nzk\n5ubi2LFjaNOmfpdYSEIqlyKpMAnJhclIL0lHWnFahVamKoNrW1e4tHG516zFo3MbZzhZO8GhtQNs\nWtrA0uL+N/vvv4FnnwXWrQNeeKFeX55O1IvQX7lyBUuWLIFGo8Ebb7yB119//b5zli9fjl9++QUd\nOnTAwYMH4e3trZex1UFq8fLPnggsEOD7UhxaN6tmNEgCI0cCixcDzz+v9zXrikwmw6hRozBjxgws\nX768Vs8liQmRkRjeti1We3gYx8BqKC0FHntMzPn0xRd1709brkXYQ2FweNYBbu+61b1DHbiQfAFP\n//Y0Ds08hMc8HzPKNRSKVISFPQwPj4/h7Hy/SshkQHIykJoKpKTcO95phYWAo6O4FuziUvHo5CQu\nIzg4AHZ2xltKqwq5XI5Zs2bBysoKP//8c51mpsakXFWOzNLMuy2rLOvu7YzSDOSW5yKnLAelqlLY\ntbKDY2tHOLR2gENrB2RdfhKBByZh8Zq/MfwhNWxb2cKulR1sW9qiQ8sOaNm0Zb0mhKuMehH6/v37\nY+vWrXB3d8f48eMhkUhgZ2d39/GgoCC8/fbbOH78OP766y8cPHgQJ0+e1MvY6tgduhtfXP0MX/Ut\nx8MDjqFduxFVn/z778AnnwChoSafN2dkZGDo0KHYtm0bpk2rwjOoEr7NyMDe7Gz49u8PKxMN+fLz\ngUceEUc5776rfz8kETMnBpYtLeG917tevzhXU69i5uGZ2D99P57o8oRB+1apshEW9jBcXV9Hx45v\n6NWHUinuBWRmAhkZ4vHO7ZwcIDdXbPn5QJs2oujb2wO2tmKzsbm/tWtXsemRmBElJSWYMmUKOnbs\niD179sDKCJ5e9Y1Kq0JeeR5yy3ORVZKLr7/oiJCLLpj52R7Q5gbyZfmQyqXiUSZFoaIQAgV0aNEB\nHVp2QPsW7e/ebtu8Ldo1b1fx2EI8WjezhnUza7Rp1gbWzazRulnr6lcfasDoQl9cXIzRo0cjLCwM\nAPDGG29g/PjxmPSPPLdff/01tFot3nrrLQCAl5cXbt68qZexVXEm4QxeOPYCrrxwBTaMRWLiWxg0\nKAxNm1aySaNSibtj33wDPP64XtczNHc8cf7++2/4+PjUeP4NmQwjwsLg278/uptg2emf3LoFPPww\n8OGHwKJF+vWR+lkqpCel6HepHyxb1P+Pll+6H6b9PA0/TP0Bk7tNNkifanUBrl8fBXv72fDwqMYh\nwEAIgjj6z8sTfwAKCsQmld5/u7i4YmvSBGjfHmjbVvyxsLa+/2htLa5wtmoFkFJ8/fUEdO06EG+9\n9Q2srS3RogUqtJYtxWPz5kBT/TXMJJSXi+mFi4qAI0fEH8eqUGgUKJQXokhRhEJFIQrlhShUFKJE\nWYISZQmKlcXiUVF8974yVRlKVaUoU5Xdbc2aNIN1M2u0smqF1lat0bpZ6wq3WzZtiVZWrdDSqiVa\nNr3drMT7lg5ZWqN21ulfcO3atQrLMD179kRAQEAFoQ8KCsK8efPu/m1vb4+bN2/Cy8urLpe+S0hm\nCOb/MR/Hnj6GbrbdAHRDYeE5xMcvRs+ev9w/Oty5E/D0NBuRB4DBgwdj27ZtmDp1KgIDA+Ho6Fjl\nuRoS82Jj8bGHh8lFHgA6dgTOnhX9y9u3Fzdqa0P+sXxkfpeJAYEDTCLyADCi0wicfPYknjz0JHZM\n2oHpPabXqT+NphQRERNgYzMe7u4rDGRl9Vha3hvFV7IyWiWkGDNwR/TLysRWWlrxWFYmPp6YmIWj\nRx+Hk9NENG++Fhs3WkChEPtQKFDhtlwuzkgAUfCbNROPd1qzZmKzsrr/aGUl/kDcOf77dpMm999u\n0qT6ZmkptqpuW1qKP5Zr14r7JG++KcZSWFiIzdKy4lFsLWBp6QwLC2dYWADtLYAOdx5rClhYARZt\n/nl+xXb7vwClIINcWw65tly8rSmHQlsOuVYGhbYcCq0MSq0cSoUcMq0chVo5lNoiKLRynf7PRv+t\npRh9W+G+qqbmH3300d3bo0ePxujRo6vtO6UoBVN+noLvJn+HEZ3uLdV4eX2JkJChyMraDReXf/jQ\nl5YCn30mFhgwM+bMmYOYmBjMmDEDFy5cQPMq5tNrUlPRvmlTvOriUs8WVk3XrsDp02KdhnbtgHE6\neg6WR5UjflE8+pzug+YueqwfGJAhrkNw5rkzmHhwItSCGrN7zdarH61WjqioKbC29oGn5waTr9/W\nhIXFvZG6s3P156ampmLs2LF4550XsHz5cp1fm0YjCr5KJR7vNJVK9OJSq+/d/ud9Gk3lR61WvH3n\neOe2SiUeK2uCILZ/39ZqxR+7OzMiPz9R5Fu1AnbvvvcYWfH2P++r7G9dGnDntgXI1gBaV7j/3uMV\n7ysvvwS5/BLINgB03PzWJVK3KoqKitivX7+7f7/22ms8efJkhXO++uorbtq06e7fnp6elfZVW1Ok\nMim9t3lza0DlVePLymIokdixrCzq3p2rV5Nz59bqOvWJVqvlrFmzqsyJE1JSQgeJhLfqITmaPly9\nKqY31iVFqypfRX9Pf2YfqLrEoSm4nnWdTl868cfw2hf31GpVjIiYzOjopykIVadSbojExcWxU6dO\n/OqrutWDMFfOnBE/u4cOmdqS2qOLdtY5102/fv14+fJlJicns3v37sz7V73FwMBAjhw5kvn5+Tx4\n8CAnTZqkt7F3kKvlfPiHh/n2X29Xe15m5vcMCupFjUYmJguysSGTk3W+jimoKieOXKtlr6Ag/lhN\n7Vdz4PRpMb1xRETV52hVWoaNCatQJcqciMqJostGF34f+r3OzxEEDaOjn2ZExGRqtQ2oqIYOXL9+\nnc7OztyzZ4+pTTEK334r1kyuj/rkxqBehP7SpUv09vaml5cXt24VR9c7duzgjh077p7z3nvv0cPD\ngwMGDGBMTOVJyHQVeq2g5Zxf53DW4VkVC3pXgiAIjI5+hvHxS8SaXm+9peOrMi3p6el0dXXl5kbn\npgAAIABJREFU0aNH7973TmIiZxohYZkxOHSIdHERqzJWxo3XbjB8QjgFjfm+lvj8eHba1InfBn1b\n47mCIDAu7iWGhY0WBxUPEH5+fnRwcODhw4dNbYrB0WjE2iHe3mSieY45dKJehN5Q6Cr07559lyO/\nH0m5WrcqUGp1MQOuuDFnsrVBq7sbm2vXrtHOzo6hoaG8UlhIZ19f5iprLrphLuzcKRbr+nd648xd\nmQzsHkh1kW51bE3JzYKb9NjiwU1+m6o8RxAEJia+w+DgIXoVwzFnzp8/T3t7e54+fdrUphic0lJy\nyhRyzJhqE0M2CB44od8WuI3dv+5eeYWoaihZOpaSs60plyfraZ1p+PXXX+nasSPdjh/nsQb0I3WH\nL78ku3W7l9646KpYQKQ83kxKO+lAalEqvbZ6cc3VNZU+npLyGYOCelOl0q3aUkPh+PHjtLe356VL\nl0xtisHJyBDTwS9cKGYKbug8UEL/R+wfdP7SmUkFtaypGRREurgwLXENQ0KGNbj108HLltG2Vy+W\nm0vdu1qycqVYoTErQiwgIv2z4QliRkkGvbd5c/XF1RWWztLTv2JAQBcqFJkmtM7wHDp0iI6Ojgwy\nt6LBBuD6dbHG0BdfGKWYnEl4YIQ+ID2A9uvteS3jWu06FQRxbvbddxQELcPDJ/DmzffraGn9cTo/\nn25+fnx67lzOmjWrQRZVFgTyjaVa9mldytjP001tjt7klOWwz7d9+N659ygIArOy9tLPr1ODmyXW\nxK5du+ji4sKI6nbTGygnT4qeNQYuC21yHgihT5Qm0ulLJ56I16Mc2Z9/imsHanE9WKnMoZ+fK6XS\nv+piar0gVano6ufHCwUFVCgUHDlyJD/88ENTm1VrBEFgxFNRnO5VyLFjBcp121oxS/LL8znguwF8\n8fcJvCpxZHl5rKlNMiibNm2iu7s7b5iqgK4R+eor0bPG39/UlhieBi/0uWW57PpVV26/tr32HWq1\npI8P+fvvFe4uKLhAX19nKhQZ+ppaLzwTHc03/vGFy83NZefOnbl//34TWlV7Uj5LYfCQYKrKtHzq\nKXLqVFLVsFbPKpCceZR9t1jxmcOTqdaa/4ayLgiCwNWrV7Nbt25MM1VxYCOhVot1gHv0IJNquerb\nENAK2oYt9KXKUg7eOZgrLqzQr8MDB8Sin5UsxCUnf8LQ0EcoCOb5RT2ck8NuAQEs11QMuomKiqK9\nvT2vXr1qIstqR96xPPq5+lGRIQZ4KZXkhAnk00+Lrm0NjaIiCSUSe2bmnePjBx7njF9mUKE2z+A1\nXdFqtXzzzTfp4+PDbDOP0agtxcXi523cOLKw0NTWGJ6I7Aj6bPdpuEKv0qg44ccJXHhsoX5+4wqF\n6Nt3+XKlDwuCltevP26W6/WZCgUdJBIGFhdX+vhff/1FR0dHxsfH17NltaMsqowSOwmLAyq+DpmM\nfOwxcsECcdLVUCgpCaZEYk+p9CxJUqFWcMYvMzj+wHiWqxrmRrlarebzzz/PkSNHsvABU8LkZLJX\nL/Lllxv2DLIq9l/fT7v1dtx3fV/DFHpBELjg6AJOOjhJ/6nx5s1kFRG4d1Aqc+nn15H5+SerPa8+\nEQSBE8PDubKGOebu3bvp6enJnDt+i2aGKl/FAK8AZu3LqvTx8nKx4P1LLzUMsS8ri6KvrxPz8v6o\ncL9aq+aCowv40A8PsUheZCLr9EOhUHD69Ol8/PHHWVZWZmpzDIqfH+nsTG7d+uB41txBoVbw5ZMv\ns+tXXRmRLW6YN0ihX/73cg7dNZRlSj0/fEVFYgx+ZKQOp16lROJAuTxFv2sZmJ0ZGRxw7RqVOqjf\nypUrOWTIELNzu9SqtLz+2HUmvF1FWOxtSkrI4cPFgGVz/jLKZIn083NldvbBSh/XClq+dvo1Dvhu\nAPPKG0asQ2lpKceNG8eZM2dSYaZ5k/Tlp59IOzvRw+ZBI7kwmYN2DuKMX2awWHFvptzghP6rgK/Y\n7etudfvCfPAB+cILOp+emrqeISFDqdWaNnLipkxGO4mEUTqOrgRB4Lx58zht2jRqzGjBO/7VeJ3T\nGxQVkYMHk2+/bZ5iL5en0d/fgxkZO6s9TxAEfnD+A/bY1oNpRea9mVlQUMBhw4Zx4cKFVKvNc49K\nHwSB/Ogj0t2dDA83tTWG59SNU3TY4MCNfhvvW85ucELvutGVyYXJ+ndy65aYuKwWngOCIDAi4kkm\nJJguD45GEPhQaCg31tLjQalUcsyYMXzjjTeMZFntuPXNLQb2qF16g4ICMaBq+XLzEnulMpsBAd2Y\nllZ1+oN/s9FvIztt6sSonKiaTzYBmZmZ7Nu3L5ctW9YgcibpSnk5OWcOOXQomVX5amGDRaPVcMWF\nFXTd6MqrqZU7YTQ4ob+edb1unbz0Evm//9X6aSpVAf39PZib+3vNJxuB9ampHBUWRq0eX77CwkL2\n6tWLmzdvNoJlulNwvoASBwllCbVP6pWXR/buLY7IzAGVSsqgoD5MTv641s/9MfxHOmxwoCRVYgTL\n9CcxMZGenp789NNPHyiRT08nBw4kn3tO3Oh/kMgsyeTovaP52L7HmF1atUdUgxP6OhETIy7O6Zmh\nqLg4iBKJPWWy6teWDU1kWRntJBIm1yGSKDU1la6urvztt98MaJnuyBJklDhIWHBB/+xQ2dmir/NH\nH5l2ZK9WFzE4eDATE9/RWxD/TPiTduvteCzumIGt04+wsDA6OztXyCj7IBAQIGZJXbvWvGaDhuDc\nzXN0/tKZH138iBpt9Uuz/y2hnzaNXL++Tl3curWNQUF9qNHUjxeCUqtlv2vX+H1m3XOlhIaG0t7e\nnhJJ/Y4k1UVqBnoHMmN73QPQsrPFkf0HH5jmi6tWlzAkZARv3HitzqPeoFtBdPrSibtCdhnIOv24\ndOkS7e3t+euvv5rUDkNz4IA4rjt+3NSWGBaNVsNVF1fR+Utn/n3zb52e898ReolEzFRUx/h6QRAY\nG7uAUVGz62V6+2FSEp+MiDDYtf766y86ODgwvJ52owS1wPAnwnljqeFC5vPyxDX7//u/+hV7jaaM\noaGPMC5uMYUa6hzoSnx+PDtv6cxPL5tmueTo0aO0t7fn+fPn6/3axkKjId97j+zcWSfHugZFVmkW\nx+wdwzF7xzCrVPfNhv+G0AsCOXIkaaDqN1qtnMHBg5mautYg/VWFX1ERHX19mWXgPKk///wzXVxc\nmFgPlRQSliXw+tjrFNSGFTGplBw0SAxdrw991GhkDAt7lLGxzxtM5O+QWZJJn+0+fOXkK/WaMmH3\n7t10cnJicHBwvV3T2BQXk5Mnk6NGNajSEjrx982/6fylM1ddXFXjUs2/+W8I/bFj4nzfgC6GCkU6\nfX2dKZX+abA+/0mJWk1Pf38eNdKndceOHfT09GRGhvHy+WTuymRA1wCqCowTdlhUJGawWLLEuEFV\nWq2c4eHjGR39rNHqvBbJizhu/zhO+HFCBf9nYyAIAtesWUMPDw+zj56uDbGxZPfuYqTrg5BD/g4q\njYrvnXuPLhtdeO7mOb36ePCFXq0Wd/CMEB1RWHiFEokDZTLDj4xfiI3lorg4g/f7Tz7//HP27t2b\nBUYon1NwTvSwMXYBkZIS8qGHxLAIY4QKaLVKRkRMZlTUU0bPe6TSqLjkxBL2/rY3UwqNE6Cn0Wj4\n6quvsk+fPrx165ZRrmEKjh4V0wt/r3sJ3wZBojSRg3cO5qSDk5hblqt3Pw++0O/eLcbSG2l+L27O\n9qZGU2qwPn/LzWWXgACWGjnISRAELlu2jMOHDzdoiHtZdBkl9hIWXqqf3ChlZWJJgblz72abNgha\nrYqRkdMZGTm13orRCILATX6b6PylMwPSAwzad3l5OadOncrHHnuMRUUNKx1DVWg05IoV4vZbYKCp\nrTEsd3LVfBXwVZ33bx5soS8vJ11dRR8rIyFuzi5kVNQsg2ym3bqdsCygioRlhkar1XLBggUcP348\nlQaY7yqzlfT38K8yh42xKC8XsxBOnizeritarYpRUU8xPHwitdr6TwFwPO447dbb8Zcow1TAyM3N\n5dChQzlv3jyD/J/NgYIC8X8+atS9UpQPAsWKYj73+3Pssa0Hw7MN4zShi3ZaoqGyeTMwfDgwdKjR\nLmFhYYFu3b6BQpGG9PR1depLIPF8XBxec3XF0LZtDWRh9VhaWmL37t1o0aIF5s+fD61Wq3dfWrkW\nUVOj4DjPEU7znQxoZc20agUcOwZ06ACMGwcUFOjflyCoEBMzB4IgQ+/ev8PSsrnhDNWRJ7s/iXPz\nzuGds+/g8yufQ/yu6kdCQgKGDx+OsWPHYt++fWjWrJkBLTUNUVHA4MFAt27AuXOAg4OpLTIM/un+\n6P9df1g3s0bw4mD0dexbfxc3yE+KAaiVKdnZYqqDevAsIUmF4hZ9fV2Yn69HlavbbE5P54iQEKpN\n4GYnl8v56KOPcv78+XrlxRG0AqOeimL0M9EmjarUasl33iF79hQjImv/fAUjIqYwImKKSUby/yaz\nJJODdg7ic78/p1eqY39/fzo5OfG7774zgnWm4Y5//IEDprbEcCg1Si7/ezkdNzjySMwRg/evi3Y2\nTKF/+WVy2TLjGVMJxcUBlEjsWVJSe3e1iNJS2kkkvGnCGO2ysjKOGTNGL7G/ufwmQ0eGUis3j5zC\nGzaQbm5iMLSuaLVyRkRMYmTkdJMnsPsn5apyzj0yl32392WiVPeByx0f+VOnThnRuvpDJiMXLRIr\nfz5IScnCs8Pps92HUw9NrTaNQV14MIU+Olr8yZdKjWtQJeTmHqGvr0ut0hrLtVr2CQriHjPItqSP\n2Gd+n8kArwAqc81HHEly/37S0VG3GqCiC+UTjIp6qt42XmuDIAjcFriNDhscaqyNLAgC165dS1dX\nV167dq2eLDQu8fFk375i5bGSElNbYxg0Wg3XXl1Lu/V23BO2x6gz4QdT6CdPJjduNK4x1ZCevpmB\ngT2pVuvmdbIsIYGzoqLMJpFUeXk5x4wZw3nz5tUo9tKzUtGNMta8ct7f4fRp0e2uukGtRlPO69fH\nMTr6abMtHXkHvzQ/dtzUkSsvrKw0aEahUHD+/PkcMGAA0/VZuzJDfv5ZHLft2PHg5KtJkCZwxPcj\nOGbvGKO50v6TB0/oz58XY59NWCxBEATeuPE6w8IerXEJ4IxUyo5+fsw3s1pmuoh9SXAJJXYSFl4x\n7xJzAQGkkxO5Zcv9QqHRlDEs7FHGxMw1e5G/Q3ZpNkftGcUnfnyCUtm9WWtOTg5HjBjBWbNmPRAV\noeRy8pVXSC8vMjTU1NYYBo1Wwy3+W2i33o5bA7ZSa+Ao66p4sIReqyX79yd/MYxLWl0QBA0jI6cy\nJmZ+lSP1DIWCTr6+vGymtTirE3tZooy+zr7MPaJ/EEd9kpIiTv1ffPFe1KRKVcCQkBG30xqYT2EW\nXVBr1Xzn7Dv02OLBaxnXGB4eTnd3d65cuZLahlB7sQZiYsSv8qxZYgT0g0BEdgSH7BrCUXtGMT6/\nfiOSHyyh37dPrCxgJvM7jaacwcGDmZy8+v7HBIGjw8L4SXJyvdtVG+6I/dy5c+9WG1JmKxngFcCM\nHcZLn2AMSkvFBKYPPUSmpWUzKKgPExLeMnjumvrk1+hf2e6zdmw9vjUP/lR5KcOGhCCQ27Y9WEs1\ncrWcH57/kPbr7bkrZFe9jeL/iS5C3zD86GUy4MMPgY0bAQsLU1sDAGjSpBX69DmB7Oz9yM7eW+Gx\nz1JTYQngA3d3k9imK61atcLJkyeRl5eH6dOnoySnBBETI+A41xEuS1xMbV6tsLYGfv8deOihQgwd\nqoJU+hq8vDbBwqJhfMT/jSAISDiWgBb7W8B7kje2K7YjpSjF1GbpTXY2MGkSsG8f4OsLLFliNl9l\nvbmcchk+O3wQlx+H8JfDsWjAIlia6+dN31+RkpISTpkyhZ06deLUqVNZWnp/moC0tDSOHj2aPXv2\n5KhRo3jwYNWjEgDM+6OKJF+ff07OnKmvqUalrCyGEokD8/PFfDuXCgvp5OvLzAZUdFmlUnHuc3PZ\nt11f+s/3N5uN49pSWhpBPz9XfvPNWdrbk0cM77JcLxQWFnLKlCkcPnw409PTqRW03OC7gXbr7bj/\n+v4G9/85elT0kFq5kjSz7Sq9yC/P5+ITi+m60ZVHY4+a2hzjLt2sW7eOr732GhUKBZcuXcoNGzbc\nd05WVhbDwsJIknl5eezcuTNLqvCfAkCJfSWJsu4ERyXUb+Wn2nDHxz4p5xQ7+vnxjAlcP+uCoBUY\n+XQkF3ZZyO7duzMlxfieAoamqMiXEokDs7N/Ikleu0Z27ChWrDKj2uk1EhYWRi8vL77xxhv3pTMI\nywpjz296cvavs1kgM3yyOkNTWirum3h6kr6+pram7qi1an4T9A3t19tz6amlLJKbxwaDUYV+5syZ\nd0U8JCSEs2bNqvE5kydP5oULFyo3BGDGjgwG9QqipvQf38xXXiHffFNfM+uNgsIrPHmpA9dENay1\nVEEQmPB2AkMfCqVGpuHmzZvp6upab8VLDIFU+iclEjvm55+ucH9mppgQbfRosW68ubNnzx7a2dnx\n0KFDVZ4jU8n4+unX2WlTJ566Yb7BUmfPig5yL7zwYPjGX0q+xL7b+3L03tEGy1FjKIwq9G5ubpTf\nruhUXl5ONze3as9PSEhg586dq3QNAyAmEXshllGzb/udR0SIjtL5+fqaWW9sSEvjs4E7eFVix6Ki\nhjN8Sf4omUG9gyrklT906BDt7e158eJF0xmmI1lZ+yiROLCoqPISihoN+dln4tLBCf0zWBgVuVzO\nl156id7e3oyOjtbpOWcTz9JrqxdnHZ7FW8Xm8yuWn08uWEC6u4txDg2d1KJUzv51Nt02u/HX6F/N\nctmszkI/duxY9u7d+7527NgxdurUSWehLykp4YABA/jHH39Ua+zq1au56sNVXOy8mL+88rM4FNu2\nrcYXYWoCiotpL5EwRS6/Pbq0Z3FxkKnNqpHUNakM9A6kMvv+eIDz58/T3t6ehw8fNoFlNSMIWiYl\nfUh//84sK6tZHCUSMW3CG2+YNAzjPm7evMmBAwfyqaeeqnJZsypkKhlXXFhB23W23OK/pV4rWP0b\nQRCDn5ycxPe4ki27BkWJooQfXfyItutsufriar1yERmLixcvcvXq1XebUUf0M2bMYOjtSIfg4GDO\nrGKzVKVScdy4cdy8eXP1hvzDWHmKnL7tz7Ow83TDJiE3AvkqFT38/fl77j2f87y845RIHFhaGmZC\ny6onbVMaA7oEUJFRteqFhYWxU6dO/OCDD/RKhmYsNBoZo6JmMyRkOJVK3XPYFhSQM2aINWmNXPel\nRgRB4A8//EA7Oztu2bKlTiPF2LxYjt47mgO+G8CgW/U/wEhLEwPWe/XSLSWFOSNXy7nJbxMdNjjw\nmd+eqZfI1rpSL5uxMpmMr776aqWbsYIgcN68eVymQwKyCsaWl1NqP4G+NhepSDej4de/UAsCx16/\nzncryaKZm/sbfX2dWFZmfhWMb227RX8Pf8pTay6mnpOTwzFjxvDxxx9nvhksoSmV2QwJGcro6Kep\n1da+GLwgkNu33/PlNkX8UV5eHqdPn84+ffowIiLCIH0KgsD91/fTcYMjXz31KvPKjV9UVaUSI5Lt\n7MhPPmnYJf5UGhV3XNvBjps6cuqhqYzINsz/pT4wqtBX5V6ZkZHBiRMnkiSvXr1KCwsL+vj4sF+/\nfuzXrx/PnDlTs7GrV5OzZzN1TSpDhoaYTdbEf/O/xESOvX69ytTD2dk/0dfXmSUl5hPjnbkrk36d\n/ChL0j2Tplqt5jvvvEMPDw+GhIQY0brqKSuLpL+/B5OSVtV5rTQyUqxJO3KkmCevvjhz5gxdXFz4\nzjvvUGGENSSpTMpXT71Km3U2/OjiRyxRGH4nVBDE6p3du5OPP167LKLmhkar4YHwA/Ta6sWx+8ca\nvPJXfWBUoTc0d41NThbdKVNTKQgCo2ZHMWpWFAWNeW2C/JKTQw9//xrz2OTm/k6JxJ5S6dl6sqxq\nsvZl0c/Vj+U39FtvPHz4MO3s7PjDDz8Y2LKaubP3kZ1tuETlGg35zTfiiHTFCjH/irEoLy/n0qVL\n2alTpyo9zwxJojSRc4/MpcMGB27020iZyjApsiMjyXHjSG9vMZmcGe5N6oRcLefO4J303ubN4buH\n80KS8f8nxqJhCv3MmeI88DZahZZhY8J4Y+kNs9nxvpNfPkzHHac7hcYNKVK1JefnHPo6+bIsum4J\nsaKjo9mtWzcuWbLEKCPSfyMIWqakfEFfX0cWFV01yjUyMsS8K126kH//bfj+fX196e3tzWeeecYo\nxdqrIzInktN+nsaOmzpyZ/BOqjT6RSzl5oplIOztya++ariBT7llufzo4kd03ODIiQcn8nzSebPR\nFX1peEL/99+kh4dYheAfqIvUvOZzjSmfmn5jRKpS0SsggAeza1dEoKwsin5+bkxNXVfvH6zM7zPp\n6+TL0nDDuEIUFxdz+vTpHDBggFH97VWqfIaHT2RIyAjK5WlGu84dTpwQPXPmzycNUT4gPz+fixYt\noouLC38xcTK+gPQAjt0/ll5bvbg1YCuLFbrVLS4qIj/9VJz1vPmmScpAGIS4vDguPrGY7de256Lj\nixidW4/rdUam4Ql9r15Vxq0rMhX09/Rn5q7MerbsHhpB4BPh4VymZ5SuQpHOoKDevHHj9XrLqJj2\nZRr93PxYHmdY9zBBELh7927a2dnx448/psrAQ7zi4gD6+7szMfH/6rVYSGkp+e674urh//6nXwiH\nIAjcu3cvHR0d+frrr7PIjFI0SlIlnPPrHHZY24GvnnqVMbmVL7BLpWLKAltbct4803sp6UO5qpw/\nRfzE8QfG0369PVddXGW0Kk+mpOEJ/dix1S76ld8op6+zb9U5cYzMBzdvcnRYWJ3qvqrVhQwLG82o\nqFl6eY3oiiAIvLn8JgO9AylPM9510tPTOWHCBPr4+Nx1t60LgiAwPX0LJRJ75uVVHXdhbNLTxaUK\nGxty1Srd0+lGR0fzkUce4aBBgxgcXPuyk/XFreJbXHlhJR03OHLs/rH8I/YParQa5uSQ770nvu5F\ni+qtLLPBEASBV1Ku8MVjL7LD2g4cf2A8D0YcNNgehTnS8IReB/eHkmsllNhLWHS1fkdJv+Xm0s3P\njzkG8CHTahWMiprN0NCRVCgMH9UoaATGL4ln8MDgeikBeGcEa29vzxUrVui9dq9WFzEqaiaDgwdS\nJrtpYCv1IymJfP55cW16zRqyqpofRUVFfP/992lnZ8dt27aZVdxBdSjUCh4IP8B+24bSelVHNp/6\nJqe9eZlJyQ3DflL8/EXlRHH1xdXsvKUze37Tk+sk68wqYtiYNDyh15E7Je7KIuun0o5/cTHtJBIG\nGzBph7jJ+Cl9fR2Zn2+4nCVapZZRs6MYNiaM6uL6DTbLyMjgk08+yV69elEiqTwlQVUUFl6kv78n\n4+NfNepMR1/i4sSapo6O5Icfis5hpFiHd+3atbS3t+eCBQuYmWm6pcXaolSShw+LE2k7O3LBu1F8\n98Qn9NnuQ4cNDlx8YjH/TPiTSo35OcgXK4p5JOYIXzr+Ejtt6kT3ze58/fTrvJZxrcFvrtYWXbTT\n4vaJJsfCwgK1MSXnUA6S/peEvmf7onWP1kazK0EmwyPXr2N39+6YZGtr8P6Liq4gNvY5ODg8jc6d\nv4ClpZXefWnLtYieGQ3LFpbo+XNPWLao/9zYJHHo0CG8//778PHxweeff46+fftWeb5GU4KkpP9B\nKj2Frl2/hZ3dk/Vobe2JjQV27gQOHCDs7dOQnf0xHntMjk8/XYUePXqY2jyduHED2LUL2L8f6NUL\neOklYPp0oEWLe+fcLLiJo3FH8Xvs74jPj8dYz7EY3nE4hnUchv7O/dGiaYuqL2AESpQluJ59Hf7p\n/jiTeAYhWSEY0WkEnvB6AhO6TkB32+6waOgJ7vVEF+1ssEIPANn7s5H0XhJ6H+uNtkPaGtymHJUK\nI0JD8b6bG15yMV4hDrU6H3Fxz0OtzkfPnj+jRQuPWvehzFAianoUWvdsje67u8OiqWk/9AqFAjt2\n7MCaNWswduxYfPLJJ/Dy8qpwjlR6GjduvAwbmyfg5bUBTZu2M5G1uqNWq7Fv3z589NE62NsvgYXF\ny8jOtsYLLwAvvgh4eprawsq5eRM4dUoszhIXBzz/PLBoEdC1a83PzSjJwPnk8wjMCETArQDE5ceh\nl30vDO04FMNch6GXQy90atsJNi1t6iy2AgVkl2UjPDscYdlhYssKQ3ZZNvo49sFgl8EY7zUeoz1G\no3Uz4w3wGhIPvNADQP6JfMS/GI8eB3vAZpyNwewp02ox5vp1TLCxwSedOxus36ogBdy6tQVpaWvR\nrdsO2NvP0Pm5xZJiRM+OhuvrrnB7382sRjalpaXYvHkzvvrqK8yePRsrV66EnV0zJCa+heJiX3Tv\nvhsdOjxqajNrJD8/H3v37sX27dvh4eGBzz77DMOHDwcgjvJ37QIOHAAcHYEnngDGjwcefrjiKLk+\n0WgAPz/g5EmxFRSIFZ6efBKYOBFo1kz/vmVqGUKzQhF4KxABGQG4Ib2B9OJ0KDQKdGzb8W7r1K4T\nWlu1hqWFJSwtLGEBi7u3AUAqlyK7LBvZZdnIKstCdlk28srz0L5Fe/Rx7IMBzgPQ36k/+jv1Rzfb\nbmhi2cRA786DxX9C6AGg6GoRomdGo+u2rnCY7VBnWzQkpkZGwrFZM3zfvX6nhCUlQYiJeRodOoyF\np+cXsLKyq/Jcksj6LgvJq5Lhvc8bthMMv7RkKPLz87F27Rr88MNOPPKIgPnzp2DKlF1o2tTa1KZV\nCUn4+/tj+/btOHHiBKZMmYJXXnnlrsD/G60WCA4G/voL+PNPICoKeOghUfgffRTo1q1uAlsdeXnA\n9etAWJhow99/A507A5Mni23gQMDSyCt55apy3Cq5hfSSdPFYnA65Rg6Bwt1GUDySsG1M3PmeAAAN\nsklEQVRpCydrJzi3cYaTtROcrJ3g0NoBzZoY6U16QPnPCD0AlIWXIWJiBNxXuMP1FVe9+yGJl27c\nQIZSieO9e8PK2N+OStBoipCcvAq5uT/D3X0FXFxeuW/tXlAKSHg9AcW+xej9R2+06tqq3u3UFZIo\nLDyHpKTlkEo18PUdjoMHz6F169ZYtGgR5s6dCxsbw83G6kppaSkOHjyI7du3QyaT4eWXX8bzzz8P\n21ru0RQUAOfPi6J/5QqQng54eAA9eojN21s8ursDrVoBLVsCTaoYtCoUQH7+vZaXJ84kwsLEVlYG\n9OsH9O8vtsceA1z1/xo00oD4Twk9AMiT5Ih4PAKO8x3hvtJdr5H4xykpOJ6fj8v9+8O6qm9dPVFe\nHo3ExLegVGaiS5ctsLEZBwBQZioRPSsazZyawXufN5q2aWpSO6ujpCQQSUnLoVJlonPnz2FnNwMW\nFhYQBAGXL1/G7t27cerUKUyYMAEvvvgiRo0aBSsr/Tek9eXmzZs4deoUTp06BT8/P4wbNw6vvPIK\nHnvsMVga6MdeoQASE0WBjo0V18pjY4FbtwC5HJDJxBF/q1b3mkolCrtaDdjZ3Wu2tuIM4Y6wd+7c\n8IttN6If/zmhBwBVtgoRT0Sg7Yi26LKlCyyb6f4l/S4zE+vS0uA3YACcjDXHriUkIZUeR2Li22jd\nujccClcj6VklXF52gdsHbrCwNM9vd3l5NJKTV6C0NBgeHh/ByWkBLCwq/0EqLCzEwYMHsW/fPsTH\nx2PYsGEYPXo0Ro0ahcGDB6OZEf4XCoUCvr6+d8W9uLgYEydOxKRJkzBu3Di0bWv4zf2aIAGlUhR8\nmQwoLwesrAB7e8DaulHIG6mc/6TQA4CmSIPYBbFQ3lKi50890ap7zcsa2zIysD4tDed9fNC1lfkt\ng6hLZYjcvxolbrtg02IGvEaIwm9OkAKKii4iM/M7FBVdgpvbe3BxeRVNmrTUuY/CwkJcvXoVly5d\nwuXLl3Hjxg0MHToUDz30EDp37gxXV1d07NgRrq6uaNOmTY39yWQyxMfHIyYmBtHR0YiJiUFMTAzS\n0tLg4+ODSZMmYdKkSejfv7/BRu6NNFKf/GeFHhBHwpk7MpGyKgWeazzh9KJTlUs5G9PT8U1GBs77\n+KBzS91Fqb4ovFiI+EXxaDeyHdzWWyNP8T0yM3ehZUsvuLq+Cju7GbC0NN0MRKXKRlbWHmRl7UaT\nJtZwcXkJjo7zDOIuWVRUBIlEAn9/f6SlpeHWrVvIyMhARkYGmjRpgo4dO8LW1hYqlQoKheK+plKp\n0KVLF/Ts2RM9e/ZEr1690LNnT3Tp0sUoM4VGGqlv/tNCf4fy6HLEPBuDVl1bodvObrCyqbj++3lq\nKvZmZ+OCjw86mcoXrgo0pRok/S8J0pNSdNveDbaT720GCoIaUulxZGR8C5ksGk5OC+HisgQtWrjX\ni22kBgUF55CVtQtFRRdhbz8Lzs4voU2bwfXipUQSRUVFyMjIgFQqRfPmzdGiRYv7mrW1NZo2Nd89\njEYaqSuNQn8bQSEg6f0k5B3JQ48DPdB+VHuQxKqUFPyel4fzPj5wbt7cKNfWl4K/ChC/OB4242zg\n9aUXmravWqxksjhkZu5AdvYBtGzphfbtH0G7do+gXbuHYGVlGG8WQVCjrCwERUWXUVR0CcXFfmjV\nqjucnRfBweEZNG1a8zJKI400Yngahf5fSM9IEf9iPByedsCeZwScRDHO+fjAwYym8GXXy5DySQrK\nQsvQbWc32Dyuu1ALggIlJUEoLr6CoqIrKCkJQIsWHreF/yE0b+4OKysbWFnZomnTDrCwqOhVRBIa\nTRHU6hyoVDlQqbIhl99EcfEVFBf7oUWLzmjffjTatx+F9u0fqdbHv5FGGqkfGoW+EpTZShx8OwKO\np8vh8UpHdHvX/b7lHFNQGlKKlE9SUHqtFG7/c4PzYmc0aVU3905xFB52V6hVqiyo1VKo1VJotcVo\n0qQNrKxs0aRJm9v358LCojmaNXNEs2ZOaNbMEc2bu6F9+4fRrt3DsLIy34CsRhr5r9Io9P+iVKPB\novh4pCmVONa2GwrXZSDvSB5cX3NFp2Wdql0eMRYl10qQ+kkqSkNL4faeG5xfckaTlsb33ye10GiK\nb4t+CaysbGFl5VgrD5lGGmnE9DQK/T+Ik8kwIyoKI9q1w7auXdHitiud/KYcqZ+lQnpSio5vdoTL\nUhdYdTDuCF9bpkXBnwXI+iEL5ZHlcHvfDc4vOpsk22QjjTTSsGkU+tv8lpeHV27cwBpPTyxydq70\nHNkNGVI/S0X+H/mw7m8N28m2sJ1si1berQziRaLKU0F6Qor8o/koulyEtsPbwmG2AxznOsKyeaPA\nN9JII/rxnxd6DYn3k5Lwe14efuvVCwN1CLDRyrQoulgE6SkppCelsGhqIYr+JFu07t0aVvZWNUbb\nako0UKQqoExVQhYnQ/6JfJRdL4PN4zawm24H24m2JlkmaqSRRh48/tNCn6NSYU5MDFpYWuJgjx6w\n1SN/CkmUR5VDelKKgtMFkN+UQ52nRpPWTWDlYAUreys0c2iGpjZNoc5XQ5mqhCJVAUEloIV7C7Rw\nb4GWXi1h84QNOozt0Lg000gjjRic/6TQk8TR/Hy8mZiIF5ycsNrDA00MGMBDEpoiDdS5aqjz1FDl\nqqCWqmFla3VX3JvaNjWrnPCNNNLIg8t/TuiDS0vxdmIiCjUabO3SBY926GAg6xpppJFGzBNdtPOB\nWCi+pVTiw6QknC0sxCceHljo7GzQUXwjjTTSSEOmQQt9uVaL9Wlp2JaRgZddXHBjyBC0acxr0kgj\njTRSAb13B0tLSzF16lS4ublh2rRpKCsrq/JcrVaL/v3748knn9T3cvf6InGlqAhvJiSgS2AgEuVy\nhA4ahM89PR8Ykb906ZKpTTAbGt+LezS+F/dofC9qh95Cv337dri5uSEhIQEdO3bEjh07qjx369at\n6Nmzp94blCpBwF8FBVgSHw8XPz+8kZgIOysrXPDxwcGePeFuZlkn60rjh/geje/FPRrfi3s0vhe1\nQ+8hcFBQEFasWIHmzZtj4cKFWLNmTaXn3bp1C6dPn8aHH36ITZs2Vdvn4dxcFGk0FVquWo0LhYXo\n3qoVZtjZwW/AAHiZYc74RhpppBFzRW+hv3btGry9vQEA3t7eCAoKqvS8ZcuWYcOGDSgpKamxz1/z\n8tC+adO7zbV5czzUtCm2dOmCjmaWRriRRhpppMHAahg7dix79+59Xzt27Bg7depEuVxOkiwvL6eb\nm9t9zz9x4gRfffVVkuTFixc5efLkKq8FoLE1tsbW2BqbHq0mqh3Rnzt3rsrH9u3bh9jYWPTv3x+x\nsbEYPHjwfef4+fnh+PHjOH36NBQKBUpKSjB//nzs37//vnPNxJ2/kUYaaeSBQ+/N2KFDh+KHH36A\nXC7HDz/8gGHDht13zhdffIH09HQkJyfj559/xqOPPlqpyDfSSCONNGI89Bb6V155BWlpaejevTsy\nMjLw8ssvAwAyMzMxadKkSp/TmBagkUYaaaT+MXkKhCtXrmDJkiXQaDR444038Prrr5vSHJOxcOFC\nnDp1Cg4ODoiMjDS1OSYlPT0d8+fPR25uLuzt7bF48WI8++yzpjbLJCgUCowaNQpKpRItWrTAnDlz\nsGzZMlObZVK0Wi0GDRqEjh074sSJE6Y2x2R4eHigbdu2aNKkCaysrKp0iAHMQOj79++PrVu3wt3d\nHePHj4dEIoGd3X+vFunVq1dhbW2N+fPn/+eFPjs7G9nZ2ejXrx/y8/MxZMgQhIeHo40OaaYfRGQy\nGVq1agWlUomBAwfijz/+QJcuXUxtlsnYtGkTQkJCUFpaiuPHj5vaHJPRuXNnhISEwMam5rrSJs2b\nW1xcDAB45JFH4O7ujscffxyBgYGmNMlkPPzww+jQmIQNAODk5IR+/foBAOzs7NCrVy8EBweb2CrT\n0apVKwBAWVkZNBoNmv+HXY3vxOUsWrSo0YEDujuxmFTo/+mLDwA9e/ZEQECACS1qxNxITExEdHQ0\nhgwZYmpTTIYgCPDx8YGjoyNee+01dOrUydQmmYw7cTmWlo21HSwsLPDoo49i2rRpNc5sGt+tRsyW\n0tJSzJkzB5s3b0br1q1NbY7JsLS0RHh4OBITE/Htt98iLCzM1CaZhJMnT8LBwQH9+/dvHM0D8PX1\nRXh4ONasWYO3334b2dnZVZ5rUqEfPHgw4uLi7v4dHR1dqZtmI/891Go1Zs6ciXnz5mHq1KmmNscs\n8PDwwMSJE/+zy5t34nI6d+6MZ555BhcuXMD8+fNNbZbJcL5d/7pHjx6YMmVKtRvTJhX6du3aAf/f\nzh2jOAhEYRz/38HGxhtIIFWuYGtpJZIinQT0BDa2HiKX0FQpvIddCCoIQhqRpFjYrTbdMsv4/eop\nXjF8M/DeDF+TN13Xcb1eORwOJkuSf+D1enE8HvF9n/P5bLoco4ZhYJomAMZxpGmazR58epfz4/l8\nMs8zAH3fU9c1QRD8ut74v75VVXE6nViWhTRNNzlxAxBFEbfbjXEc8TyPoihIksR0WUa0bcvlcmG3\n27Hf7wEoy/LjRrbV/X4njmPWdcV1XfI8/77Jbd2W3+U8Hg/CMATAcRyyLPvYuzE+XikiIn9LzVgR\nEcsp6EVELKegFxGxnIJeRMRyCnoREcsp6EVELPcGkQPsdA5FLVsAAAAASUVORK5CYII=\n",
190 "text": [
190 "text": [
191 "<matplotlib.figure.Figure at 0x1082fcbd0>"
191 "<matplotlib.figure.Figure at 0x1082fcbd0>"
192 ]
192 ]
193 }
193 }
194 ],
194 ],
195 "prompt_number": 5
195 "prompt_number": 5
196 }
196 }
197 ],
197 ],
198 "metadata": {}
198 "metadata": {}
199 }
199 }
200 ]
200 ]
201 } No newline at end of file
201 }
@@ -1,1421 +1,1421 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "name": "Cell Magics"
3 "name": "Cell Magics"
4 },
4 },
5 "nbformat": 3,
5 "nbformat": 3,
6 "nbformat_minor": 0,
6 "nbformat_minor": 0,
7 "worksheets": [
7 "worksheets": [
8 {
8 {
9 "cells": [
9 "cells": [
10 {
10 {
11 "cell_type": "heading",
11 "cell_type": "heading",
12 "level": 1,
12 "level": 1,
13 "metadata": {},
13 "metadata": {},
14 "source": [
14 "source": [
15 "The cell magics in IPython"
15 "The cell magics in IPython"
16 ]
16 ]
17 },
17 },
18 {
18 {
19 "cell_type": "markdown",
19 "cell_type": "markdown",
20 "metadata": {},
20 "metadata": {},
21 "source": [
21 "source": [
22 "IPython has a system of commands we call 'magics' that provide effectively a mini command language that is orthogonal to the syntax of Python and is extensible by the user with new commands. Magics are meant to be typed interactively, so they use command-line conventions, such as using whitespace for separating arguments, dashes for options and other conventions typical of a command-line environment.\n",
22 "IPython has a system of commands we call 'magics' that provide effectively a mini command language that is orthogonal to the syntax of Python and is extensible by the user with new commands. Magics are meant to be typed interactively, so they use command-line conventions, such as using whitespace for separating arguments, dashes for options and other conventions typical of a command-line environment.\n",
23 "\n",
23 "\n",
24 "Magics come in two kinds:\n",
24 "Magics come in two kinds:\n",
25 "\n",
25 "\n",
26 "* Line magics: these are commands prepended by one `%` character and whose arguments only extend to the end of the current line.\n",
26 "* Line magics: these are commands prepended by one `%` character and whose arguments only extend to the end of the current line.\n",
27 "* Cell magics: these use *two* percent characters as a marker (`%%`), and they receive as argument *both* the current line where they are declared and the whole body of the cell. Note that cell magics can *only* be used as the first line in a cell, and as a general principle they can't be 'stacked' (i.e. you can only use one cell magic per cell). A few of them, because of how they operate, can be stacked, but that is something you will discover on a case by case basis.\n",
27 "* Cell magics: these use *two* percent characters as a marker (`%%`), and they receive as argument *both* the current line where they are declared and the whole body of the cell. Note that cell magics can *only* be used as the first line in a cell, and as a general principle they can't be 'stacked' (i.e. you can only use one cell magic per cell). A few of them, because of how they operate, can be stacked, but that is something you will discover on a case by case basis.\n",
28 "\n",
28 "\n",
29 "The `%lsmagic` magic is used to list all available magics, and it will show both line and cell magics currently defined:"
29 "The `%lsmagic` magic is used to list all available magics, and it will show both line and cell magics currently defined:"
30 ]
30 ]
31 },
31 },
32 {
32 {
33 "cell_type": "code",
33 "cell_type": "code",
34 "collapsed": false,
34 "collapsed": false,
35 "input": [
35 "input": [
36 "%lsmagic"
36 "%lsmagic"
37 ],
37 ],
38 "language": "python",
38 "language": "python",
39 "metadata": {},
39 "metadata": {},
40 "outputs": [
40 "outputs": [
41 {
41 {
42 "output_type": "stream",
42 "output_type": "stream",
43 "stream": "stdout",
43 "stream": "stdout",
44 "text": [
44 "text": [
45 "Available line magics:\n",
45 "Available line magics:\n",
46 "%alias %alias_magic %autocall %automagic %bookmark %cd %clear %colors %config %connect_info %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %lsmagic %macro %magic %man %more %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %run %save %sc %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n",
46 "%alias %alias_magic %autocall %automagic %bookmark %cd %clear %colors %config %connect_info %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %lsmagic %macro %magic %man %more %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %run %save %sc %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n",
47 "\n",
47 "\n",
48 "Available cell magics:\n",
48 "Available cell magics:\n",
49 "%%! %%bash %%capture %%file %%perl %%prun %%python3 %%ruby %%script %%sh %%sx %%system %%timeit\n",
49 "%%! %%bash %%capture %%file %%perl %%prun %%python3 %%ruby %%script %%sh %%sx %%system %%timeit\n",
50 "\n",
50 "\n",
51 "Automagic is ON, % prefix IS NOT needed for line magics.\n"
51 "Automagic is ON, % prefix IS NOT needed for line magics.\n"
52 ]
52 ]
53 }
53 }
54 ],
54 ],
55 "prompt_number": 1
55 "prompt_number": 1
56 },
56 },
57 {
57 {
58 "cell_type": "markdown",
58 "cell_type": "markdown",
59 "metadata": {},
59 "metadata": {},
60 "source": [
60 "source": [
61 "Since in the introductory section we already covered the most frequently used line magics, we will focus here on the cell magics, which offer a great amount of power.\n",
61 "Since in the introductory section we already covered the most frequently used line magics, we will focus here on the cell magics, which offer a great amount of power.\n",
62 "\n",
62 "\n",
63 "Let's load the pylab support so we can use numerics/plotting at will later on."
63 "Let's load the pylab support so we can use numerics/plotting at will later on."
64 ]
64 ]
65 },
65 },
66 {
66 {
67 "cell_type": "code",
67 "cell_type": "code",
68 "collapsed": false,
68 "collapsed": false,
69 "input": [
69 "input": [
70 "%pylab inline"
70 "%pylab inline"
71 ],
71 ],
72 "language": "python",
72 "language": "python",
73 "metadata": {},
73 "metadata": {},
74 "outputs": [
74 "outputs": [
75 {
75 {
76 "output_type": "stream",
76 "output_type": "stream",
77 "stream": "stdout",
77 "stream": "stdout",
78 "text": [
78 "text": [
79 "\n",
79 "\n",
80 "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
80 "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.kernel.zmq.pylab.backend_inline].\n",
81 "For more information, type 'help(pylab)'.\n"
81 "For more information, type 'help(pylab)'.\n"
82 ]
82 ]
83 }
83 }
84 ],
84 ],
85 "prompt_number": 8
85 "prompt_number": 8
86 },
86 },
87 {
87 {
88 "cell_type": "heading",
88 "cell_type": "heading",
89 "level": 2,
89 "level": 2,
90 "metadata": {},
90 "metadata": {},
91 "source": [
91 "source": [
92 "<!--====-->\n",
92 "<!--====-->\n",
93 "Some simple cell magics"
93 "Some simple cell magics"
94 ]
94 ]
95 },
95 },
96 {
96 {
97 "cell_type": "markdown",
97 "cell_type": "markdown",
98 "metadata": {},
98 "metadata": {},
99 "source": [
99 "source": [
100 "Timing the execution of code; the 'timeit' magic exists both in line and cell form:"
100 "Timing the execution of code; the 'timeit' magic exists both in line and cell form:"
101 ]
101 ]
102 },
102 },
103 {
103 {
104 "cell_type": "code",
104 "cell_type": "code",
105 "collapsed": false,
105 "collapsed": false,
106 "input": [
106 "input": [
107 "%timeit np.linalg.eigvals(np.random.rand(100,100))"
107 "%timeit np.linalg.eigvals(np.random.rand(100,100))"
108 ],
108 ],
109 "language": "python",
109 "language": "python",
110 "metadata": {},
110 "metadata": {},
111 "outputs": [
111 "outputs": [
112 {
112 {
113 "output_type": "stream",
113 "output_type": "stream",
114 "stream": "stdout",
114 "stream": "stdout",
115 "text": [
115 "text": [
116 "10 loops, best of 3: 20.5 ms per loop\n"
116 "10 loops, best of 3: 20.5 ms per loop\n"
117 ]
117 ]
118 }
118 }
119 ],
119 ],
120 "prompt_number": 13
120 "prompt_number": 13
121 },
121 },
122 {
122 {
123 "cell_type": "code",
123 "cell_type": "code",
124 "collapsed": false,
124 "collapsed": false,
125 "input": [
125 "input": [
126 "%%timeit a = np.random.rand(100, 100)\n",
126 "%%timeit a = np.random.rand(100, 100)\n",
127 "np.linalg.eigvals(a)"
127 "np.linalg.eigvals(a)"
128 ],
128 ],
129 "language": "python",
129 "language": "python",
130 "metadata": {},
130 "metadata": {},
131 "outputs": [
131 "outputs": [
132 {
132 {
133 "output_type": "stream",
133 "output_type": "stream",
134 "stream": "stdout",
134 "stream": "stdout",
135 "text": [
135 "text": [
136 "10 loops, best of 3: 17.8 ms per loop\n"
136 "10 loops, best of 3: 17.8 ms per loop\n"
137 ]
137 ]
138 }
138 }
139 ],
139 ],
140 "prompt_number": 14
140 "prompt_number": 14
141 },
141 },
142 {
142 {
143 "cell_type": "markdown",
143 "cell_type": "markdown",
144 "metadata": {},
144 "metadata": {},
145 "source": [
145 "source": [
146 "The `%%capture` magic can be used to capture the stdout/err of any block of python code, either to discard it (if it's noise to you) or to store it in a variable for later use:"
146 "The `%%capture` magic can be used to capture the stdout/err of any block of python code, either to discard it (if it's noise to you) or to store it in a variable for later use:"
147 ]
147 ]
148 },
148 },
149 {
149 {
150 "cell_type": "code",
150 "cell_type": "code",
151 "collapsed": false,
151 "collapsed": false,
152 "input": [
152 "input": [
153 "%%capture capt\n",
153 "%%capture capt\n",
154 "from __future__ import print_function\n",
154 "from __future__ import print_function\n",
155 "import sys\n",
155 "import sys\n",
156 "print('Hello stdout')\n",
156 "print('Hello stdout')\n",
157 "print('and stderr', file=sys.stderr)"
157 "print('and stderr', file=sys.stderr)"
158 ],
158 ],
159 "language": "python",
159 "language": "python",
160 "metadata": {},
160 "metadata": {},
161 "outputs": [],
161 "outputs": [],
162 "prompt_number": 30
162 "prompt_number": 30
163 },
163 },
164 {
164 {
165 "cell_type": "code",
165 "cell_type": "code",
166 "collapsed": false,
166 "collapsed": false,
167 "input": [
167 "input": [
168 "capt.stdout, capt.stderr"
168 "capt.stdout, capt.stderr"
169 ],
169 ],
170 "language": "python",
170 "language": "python",
171 "metadata": {},
171 "metadata": {},
172 "outputs": [
172 "outputs": [
173 {
173 {
174 "output_type": "pyout",
174 "output_type": "pyout",
175 "prompt_number": 33,
175 "prompt_number": 33,
176 "text": [
176 "text": [
177 "('Hello stdout\\n', 'and stderr\\n')"
177 "('Hello stdout\\n', 'and stderr\\n')"
178 ]
178 ]
179 }
179 }
180 ],
180 ],
181 "prompt_number": 33
181 "prompt_number": 33
182 },
182 },
183 {
183 {
184 "cell_type": "code",
184 "cell_type": "code",
185 "collapsed": false,
185 "collapsed": false,
186 "input": [
186 "input": [
187 "capt.show()"
187 "capt.show()"
188 ],
188 ],
189 "language": "python",
189 "language": "python",
190 "metadata": {},
190 "metadata": {},
191 "outputs": [
191 "outputs": [
192 {
192 {
193 "output_type": "stream",
193 "output_type": "stream",
194 "stream": "stdout",
194 "stream": "stdout",
195 "text": [
195 "text": [
196 "Hello stdout\n"
196 "Hello stdout\n"
197 ]
197 ]
198 },
198 },
199 {
199 {
200 "output_type": "stream",
200 "output_type": "stream",
201 "stream": "stderr",
201 "stream": "stderr",
202 "text": [
202 "text": [
203 "and stderr\n"
203 "and stderr\n"
204 ]
204 ]
205 }
205 }
206 ],
206 ],
207 "prompt_number": 34
207 "prompt_number": 34
208 },
208 },
209 {
209 {
210 "cell_type": "markdown",
210 "cell_type": "markdown",
211 "metadata": {},
211 "metadata": {},
212 "source": [
212 "source": [
213 "The `%%file` magic is a very useful tool that writes the cell contents as a named file:"
213 "The `%%file` magic is a very useful tool that writes the cell contents as a named file:"
214 ]
214 ]
215 },
215 },
216 {
216 {
217 "cell_type": "code",
217 "cell_type": "code",
218 "collapsed": false,
218 "collapsed": false,
219 "input": [
219 "input": [
220 "%%file foo.py\n",
220 "%%file foo.py\n",
221 "print('Hello world')"
221 "print('Hello world')"
222 ],
222 ],
223 "language": "python",
223 "language": "python",
224 "metadata": {},
224 "metadata": {},
225 "outputs": [
225 "outputs": [
226 {
226 {
227 "output_type": "stream",
227 "output_type": "stream",
228 "stream": "stdout",
228 "stream": "stdout",
229 "text": [
229 "text": [
230 "Overwriting foo.py\n"
230 "Overwriting foo.py\n"
231 ]
231 ]
232 }
232 }
233 ],
233 ],
234 "prompt_number": 44
234 "prompt_number": 44
235 },
235 },
236 {
236 {
237 "cell_type": "code",
237 "cell_type": "code",
238 "collapsed": false,
238 "collapsed": false,
239 "input": [
239 "input": [
240 "%run foo"
240 "%run foo"
241 ],
241 ],
242 "language": "python",
242 "language": "python",
243 "metadata": {},
243 "metadata": {},
244 "outputs": [
244 "outputs": [
245 {
245 {
246 "output_type": "stream",
246 "output_type": "stream",
247 "stream": "stdout",
247 "stream": "stdout",
248 "text": [
248 "text": [
249 "Hello world\n"
249 "Hello world\n"
250 ]
250 ]
251 }
251 }
252 ],
252 ],
253 "prompt_number": 45
253 "prompt_number": 45
254 },
254 },
255 {
255 {
256 "cell_type": "heading",
256 "cell_type": "heading",
257 "level": 2,
257 "level": 2,
258 "metadata": {},
258 "metadata": {},
259 "source": [
259 "source": [
260 "<!--====-->\n",
260 "<!--====-->\n",
261 "Magics for running code under other interpreters"
261 "Magics for running code under other interpreters"
262 ]
262 ]
263 },
263 },
264 {
264 {
265 "cell_type": "markdown",
265 "cell_type": "markdown",
266 "metadata": {},
266 "metadata": {},
267 "source": [
267 "source": [
268 "IPython has a `%%script` cell magic, which lets you run a cell in\n",
268 "IPython has a `%%script` cell magic, which lets you run a cell in\n",
269 "a subprocess of any interpreter on your system, such as: bash, ruby, perl, zsh, R, etc.\n",
269 "a subprocess of any interpreter on your system, such as: bash, ruby, perl, zsh, R, etc.\n",
270 "\n",
270 "\n",
271 "It can even be a script of your own, which expects input on stdin."
271 "It can even be a script of your own, which expects input on stdin."
272 ]
272 ]
273 },
273 },
274 {
274 {
275 "cell_type": "markdown",
275 "cell_type": "markdown",
276 "metadata": {},
276 "metadata": {},
277 "source": [
277 "source": [
278 "To use it, simply pass a path or shell command to the program you want to run on the `%%script` line,\n",
278 "To use it, simply pass a path or shell command to the program you want to run on the `%%script` line,\n",
279 "and the rest of the cell will be run by that script, and stdout/err from the subprocess are captured and displayed."
279 "and the rest of the cell will be run by that script, and stdout/err from the subprocess are captured and displayed."
280 ]
280 ]
281 },
281 },
282 {
282 {
283 "cell_type": "code",
283 "cell_type": "code",
284 "collapsed": false,
284 "collapsed": false,
285 "input": [
285 "input": [
286 "%%script python\n",
286 "%%script python\n",
287 "import sys\n",
287 "import sys\n",
288 "print 'hello from Python %s' % sys.version"
288 "print 'hello from Python %s' % sys.version"
289 ],
289 ],
290 "language": "python",
290 "language": "python",
291 "metadata": {},
291 "metadata": {},
292 "outputs": [
292 "outputs": [
293 {
293 {
294 "output_type": "stream",
294 "output_type": "stream",
295 "stream": "stdout",
295 "stream": "stdout",
296 "text": [
296 "text": [
297 "hello from Python 2.7.3 (default, Apr 20 2012, 22:39:59) \n",
297 "hello from Python 2.7.3 (default, Apr 20 2012, 22:39:59) \n",
298 "[GCC 4.6.3]\n"
298 "[GCC 4.6.3]\n"
299 ]
299 ]
300 }
300 }
301 ],
301 ],
302 "prompt_number": 46
302 "prompt_number": 46
303 },
303 },
304 {
304 {
305 "cell_type": "code",
305 "cell_type": "code",
306 "collapsed": false,
306 "collapsed": false,
307 "input": [
307 "input": [
308 "%%script python3\n",
308 "%%script python3\n",
309 "import sys\n",
309 "import sys\n",
310 "print('hello from Python: %s' % sys.version)"
310 "print('hello from Python: %s' % sys.version)"
311 ],
311 ],
312 "language": "python",
312 "language": "python",
313 "metadata": {},
313 "metadata": {},
314 "outputs": [
314 "outputs": [
315 {
315 {
316 "output_type": "stream",
316 "output_type": "stream",
317 "stream": "stdout",
317 "stream": "stdout",
318 "text": [
318 "text": [
319 "hello from Python: 3.2.3 (default, May 3 2012, 15:51:42) \n",
319 "hello from Python: 3.2.3 (default, May 3 2012, 15:51:42) \n",
320 "[GCC 4.6.3]\n"
320 "[GCC 4.6.3]\n"
321 ]
321 ]
322 }
322 }
323 ],
323 ],
324 "prompt_number": 47
324 "prompt_number": 47
325 },
325 },
326 {
326 {
327 "cell_type": "markdown",
327 "cell_type": "markdown",
328 "metadata": {},
328 "metadata": {},
329 "source": [
329 "source": [
330 "IPython also creates aliases for a few common interpreters, such as bash, ruby, perl, etc.\n",
330 "IPython also creates aliases for a few common interpreters, such as bash, ruby, perl, etc.\n",
331 "\n",
331 "\n",
332 "These are all equivalent to `%%script <name>`"
332 "These are all equivalent to `%%script <name>`"
333 ]
333 ]
334 },
334 },
335 {
335 {
336 "cell_type": "code",
336 "cell_type": "code",
337 "collapsed": false,
337 "collapsed": false,
338 "input": [
338 "input": [
339 "%%ruby\n",
339 "%%ruby\n",
340 "puts \"Hello from Ruby #{RUBY_VERSION}\""
340 "puts \"Hello from Ruby #{RUBY_VERSION}\""
341 ],
341 ],
342 "language": "python",
342 "language": "python",
343 "metadata": {},
343 "metadata": {},
344 "outputs": [
344 "outputs": [
345 {
345 {
346 "output_type": "stream",
346 "output_type": "stream",
347 "stream": "stdout",
347 "stream": "stdout",
348 "text": [
348 "text": [
349 "Hello from Ruby 1.8.7\n"
349 "Hello from Ruby 1.8.7\n"
350 ]
350 ]
351 }
351 }
352 ],
352 ],
353 "prompt_number": 48
353 "prompt_number": 48
354 },
354 },
355 {
355 {
356 "cell_type": "code",
356 "cell_type": "code",
357 "collapsed": false,
357 "collapsed": false,
358 "input": [
358 "input": [
359 "%%bash\n",
359 "%%bash\n",
360 "echo \"hello from $BASH\""
360 "echo \"hello from $BASH\""
361 ],
361 ],
362 "language": "python",
362 "language": "python",
363 "metadata": {},
363 "metadata": {},
364 "outputs": [
364 "outputs": [
365 {
365 {
366 "output_type": "stream",
366 "output_type": "stream",
367 "stream": "stdout",
367 "stream": "stdout",
368 "text": [
368 "text": [
369 "hello from /bin/bash\n"
369 "hello from /bin/bash\n"
370 ]
370 ]
371 }
371 }
372 ],
372 ],
373 "prompt_number": 49
373 "prompt_number": 49
374 },
374 },
375 {
375 {
376 "cell_type": "heading",
376 "cell_type": "heading",
377 "level": 2,
377 "level": 2,
378 "metadata": {},
378 "metadata": {},
379 "source": [
379 "source": [
380 "Exercise: write your own script that numbers input lines"
380 "Exercise: write your own script that numbers input lines"
381 ]
381 ]
382 },
382 },
383 {
383 {
384 "cell_type": "markdown",
384 "cell_type": "markdown",
385 "metadata": {},
385 "metadata": {},
386 "source": [
386 "source": [
387 "Write a file, called `lnum.py`, such that the following cell works as shown (hint: don't forget about the executable bit!): "
387 "Write a file, called `lnum.py`, such that the following cell works as shown (hint: don't forget about the executable bit!): "
388 ]
388 ]
389 },
389 },
390 {
390 {
391 "cell_type": "code",
391 "cell_type": "code",
392 "collapsed": false,
392 "collapsed": false,
393 "input": [
393 "input": [
394 "%%script lnum.py\n",
394 "%%script lnum.py\n",
395 "my first line\n",
395 "my first line\n",
396 "my second\n",
396 "my second\n",
397 "more"
397 "more"
398 ],
398 ],
399 "language": "python",
399 "language": "python",
400 "metadata": {},
400 "metadata": {},
401 "outputs": [
401 "outputs": [
402 {
402 {
403 "output_type": "stream",
403 "output_type": "stream",
404 "stream": "stdout",
404 "stream": "stdout",
405 "text": [
405 "text": [
406 "1 : my first line\n",
406 "1 : my first line\n",
407 "2 : my second\n",
407 "2 : my second\n",
408 "3 : more \n",
408 "3 : more \n",
409 "---- END ---\n"
409 "---- END ---\n"
410 ]
410 ]
411 }
411 }
412 ],
412 ],
413 "prompt_number": 97
413 "prompt_number": 97
414 },
414 },
415 {
415 {
416 "cell_type": "heading",
416 "cell_type": "heading",
417 "level": 2,
417 "level": 2,
418 "metadata": {},
418 "metadata": {},
419 "source": [
419 "source": [
420 "Capturing output"
420 "Capturing output"
421 ]
421 ]
422 },
422 },
423 {
423 {
424 "cell_type": "markdown",
424 "cell_type": "markdown",
425 "metadata": {},
425 "metadata": {},
426 "source": [
426 "source": [
427 "You can also capture stdout/err from these subprocesses into Python variables, instead of letting them go directly to stdout/err"
427 "You can also capture stdout/err from these subprocesses into Python variables, instead of letting them go directly to stdout/err"
428 ]
428 ]
429 },
429 },
430 {
430 {
431 "cell_type": "code",
431 "cell_type": "code",
432 "collapsed": false,
432 "collapsed": false,
433 "input": [
433 "input": [
434 "%%bash\n",
434 "%%bash\n",
435 "echo \"hi, stdout\"\n",
435 "echo \"hi, stdout\"\n",
436 "echo \"hello, stderr\" >&2\n"
436 "echo \"hello, stderr\" >&2\n"
437 ],
437 ],
438 "language": "python",
438 "language": "python",
439 "metadata": {},
439 "metadata": {},
440 "outputs": [
440 "outputs": [
441 {
441 {
442 "output_type": "stream",
442 "output_type": "stream",
443 "stream": "stdout",
443 "stream": "stdout",
444 "text": [
444 "text": [
445 "hi, stdout\n"
445 "hi, stdout\n"
446 ]
446 ]
447 },
447 },
448 {
448 {
449 "output_type": "stream",
449 "output_type": "stream",
450 "stream": "stderr",
450 "stream": "stderr",
451 "text": [
451 "text": [
452 "hello, stderr\n"
452 "hello, stderr\n"
453 ]
453 ]
454 }
454 }
455 ],
455 ],
456 "prompt_number": 98
456 "prompt_number": 98
457 },
457 },
458 {
458 {
459 "cell_type": "code",
459 "cell_type": "code",
460 "collapsed": false,
460 "collapsed": false,
461 "input": [
461 "input": [
462 "%%bash --out output --err error\n",
462 "%%bash --out output --err error\n",
463 "echo \"hi, stdout\"\n",
463 "echo \"hi, stdout\"\n",
464 "echo \"hello, stderr\" >&2"
464 "echo \"hello, stderr\" >&2"
465 ],
465 ],
466 "language": "python",
466 "language": "python",
467 "metadata": {},
467 "metadata": {},
468 "outputs": [],
468 "outputs": [],
469 "prompt_number": 99
469 "prompt_number": 99
470 },
470 },
471 {
471 {
472 "cell_type": "code",
472 "cell_type": "code",
473 "collapsed": false,
473 "collapsed": false,
474 "input": [
474 "input": [
475 "print(error)\n",
475 "print(error)\n",
476 "print(output)"
476 "print(output)"
477 ],
477 ],
478 "language": "python",
478 "language": "python",
479 "metadata": {},
479 "metadata": {},
480 "outputs": [
480 "outputs": [
481 {
481 {
482 "output_type": "stream",
482 "output_type": "stream",
483 "stream": "stdout",
483 "stream": "stdout",
484 "text": [
484 "text": [
485 "hello, stderr\n",
485 "hello, stderr\n",
486 "\n",
486 "\n",
487 "hi, stdout\n",
487 "hi, stdout\n",
488 "\n"
488 "\n"
489 ]
489 ]
490 }
490 }
491 ],
491 ],
492 "prompt_number": 100
492 "prompt_number": 100
493 },
493 },
494 {
494 {
495 "cell_type": "heading",
495 "cell_type": "heading",
496 "level": 2,
496 "level": 2,
497 "metadata": {},
497 "metadata": {},
498 "source": [
498 "source": [
499 "Background Scripts"
499 "Background Scripts"
500 ]
500 ]
501 },
501 },
502 {
502 {
503 "cell_type": "markdown",
503 "cell_type": "markdown",
504 "metadata": {},
504 "metadata": {},
505 "source": [
505 "source": [
506 "These scripts can be run in the background, by adding the `--bg` flag.\n",
506 "These scripts can be run in the background, by adding the `--bg` flag.\n",
507 "\n",
507 "\n",
508 "When you do this, output is discarded unless you use the `--out/err`\n",
508 "When you do this, output is discarded unless you use the `--out/err`\n",
509 "flags to store output as above."
509 "flags to store output as above."
510 ]
510 ]
511 },
511 },
512 {
512 {
513 "cell_type": "code",
513 "cell_type": "code",
514 "collapsed": false,
514 "collapsed": false,
515 "input": [
515 "input": [
516 "%%ruby --bg --out ruby_lines\n",
516 "%%ruby --bg --out ruby_lines\n",
517 "for n in 1...10\n",
517 "for n in 1...10\n",
518 " sleep 1\n",
518 " sleep 1\n",
519 " puts \"line #{n}\"\n",
519 " puts \"line #{n}\"\n",
520 " STDOUT.flush\n",
520 " STDOUT.flush\n",
521 "end"
521 "end"
522 ],
522 ],
523 "language": "python",
523 "language": "python",
524 "metadata": {},
524 "metadata": {},
525 "outputs": [
525 "outputs": [
526 {
526 {
527 "output_type": "stream",
527 "output_type": "stream",
528 "stream": "stdout",
528 "stream": "stdout",
529 "text": [
529 "text": [
530 "Starting job # 0 in a separate thread.\n"
530 "Starting job # 0 in a separate thread.\n"
531 ]
531 ]
532 }
532 }
533 ],
533 ],
534 "prompt_number": 22
534 "prompt_number": 22
535 },
535 },
536 {
536 {
537 "cell_type": "markdown",
537 "cell_type": "markdown",
538 "metadata": {},
538 "metadata": {},
539 "source": [
539 "source": [
540 "When you do store output of a background thread, these are the stdout/err *pipes*,\n",
540 "When you do store output of a background thread, these are the stdout/err *pipes*,\n",
541 "rather than the text of the output."
541 "rather than the text of the output."
542 ]
542 ]
543 },
543 },
544 {
544 {
545 "cell_type": "code",
545 "cell_type": "code",
546 "collapsed": false,
546 "collapsed": false,
547 "input": [
547 "input": [
548 "ruby_lines"
548 "ruby_lines"
549 ],
549 ],
550 "language": "python",
550 "language": "python",
551 "metadata": {},
551 "metadata": {},
552 "outputs": [
552 "outputs": [
553 {
553 {
554 "output_type": "pyout",
554 "output_type": "pyout",
555 "prompt_number": 23,
555 "prompt_number": 23,
556 "text": [
556 "text": [
557 "<open file '<fdopen>', mode 'rb' at 0x2ed8ed0>"
557 "<open file '<fdopen>', mode 'rb' at 0x2ed8ed0>"
558 ]
558 ]
559 }
559 }
560 ],
560 ],
561 "prompt_number": 23
561 "prompt_number": 23
562 },
562 },
563 {
563 {
564 "cell_type": "code",
564 "cell_type": "code",
565 "collapsed": false,
565 "collapsed": false,
566 "input": [
566 "input": [
567 "print(ruby_lines.read())"
567 "print(ruby_lines.read())"
568 ],
568 ],
569 "language": "python",
569 "language": "python",
570 "metadata": {},
570 "metadata": {},
571 "outputs": [
571 "outputs": [
572 {
572 {
573 "output_type": "stream",
573 "output_type": "stream",
574 "stream": "stdout",
574 "stream": "stdout",
575 "text": [
575 "text": [
576 "line 1\n",
576 "line 1\n",
577 "line 2\n",
577 "line 2\n",
578 "line 3\n",
578 "line 3\n",
579 "line 4\n",
579 "line 4\n",
580 "line 5\n",
580 "line 5\n",
581 "line 6\n",
581 "line 6\n",
582 "line 7\n",
582 "line 7\n",
583 "line 8\n",
583 "line 8\n",
584 "line 9\n",
584 "line 9\n",
585 "\n"
585 "\n"
586 ]
586 ]
587 }
587 }
588 ],
588 ],
589 "prompt_number": 24
589 "prompt_number": 24
590 },
590 },
591 {
591 {
592 "cell_type": "heading",
592 "cell_type": "heading",
593 "level": 1,
593 "level": 1,
594 "metadata": {},
594 "metadata": {},
595 "source": [
595 "source": [
596 "Cython Magic Functions Extension"
596 "Cython Magic Functions Extension"
597 ]
597 ]
598 },
598 },
599 {
599 {
600 "cell_type": "heading",
600 "cell_type": "heading",
601 "level": 2,
601 "level": 2,
602 "metadata": {},
602 "metadata": {},
603 "source": [
603 "source": [
604 "Loading the extension"
604 "Loading the extension"
605 ]
605 ]
606 },
606 },
607 {
607 {
608 "cell_type": "markdown",
608 "cell_type": "markdown",
609 "metadata": {},
609 "metadata": {},
610 "source": [
610 "source": [
611 "IPtyhon has a `cythonmagic` extension that contains a number of magic functions for working with Cython code. This extension can be loaded using the `%load_ext` magic as follows:"
611 "IPtyhon has a `cythonmagic` extension that contains a number of magic functions for working with Cython code. This extension can be loaded using the `%load_ext` magic as follows:"
612 ]
612 ]
613 },
613 },
614 {
614 {
615 "cell_type": "code",
615 "cell_type": "code",
616 "collapsed": false,
616 "collapsed": false,
617 "input": [
617 "input": [
618 "%load_ext cythonmagic"
618 "%load_ext cythonmagic"
619 ],
619 ],
620 "language": "python",
620 "language": "python",
621 "metadata": {},
621 "metadata": {},
622 "outputs": [],
622 "outputs": [],
623 "prompt_number": 1
623 "prompt_number": 1
624 },
624 },
625 {
625 {
626 "cell_type": "markdown",
626 "cell_type": "markdown",
627 "metadata": {},
627 "metadata": {},
628 "source": [
628 "source": [
629 "The `%%cython_pyximport` magic allows you to enter arbitrary Cython code into a cell. That Cython code is written as a `.pyx` file in the current working directory and then imported using `pyximport`. You have the specify the name of the module that the Code will appear in. All symbols from the module are imported automatically by the magic function."
629 "The `%%cython_pyximport` magic allows you to enter arbitrary Cython code into a cell. That Cython code is written as a `.pyx` file in the current working directory and then imported using `pyximport`. You have the specify the name of the module that the Code will appear in. All symbols from the module are imported automatically by the magic function."
630 ]
630 ]
631 },
631 },
632 {
632 {
633 "cell_type": "code",
633 "cell_type": "code",
634 "collapsed": false,
634 "collapsed": false,
635 "input": [
635 "input": [
636 "%%cython_pyximport foo\n",
636 "%%cython_pyximport foo\n",
637 "def f(x):\n",
637 "def f(x):\n",
638 " return 4.0*x"
638 " return 4.0*x"
639 ],
639 ],
640 "language": "python",
640 "language": "python",
641 "metadata": {},
641 "metadata": {},
642 "outputs": [],
642 "outputs": [],
643 "prompt_number": 4
643 "prompt_number": 4
644 },
644 },
645 {
645 {
646 "cell_type": "code",
646 "cell_type": "code",
647 "collapsed": false,
647 "collapsed": false,
648 "input": [
648 "input": [
649 "f(10)"
649 "f(10)"
650 ],
650 ],
651 "language": "python",
651 "language": "python",
652 "metadata": {},
652 "metadata": {},
653 "outputs": [
653 "outputs": [
654 {
654 {
655 "output_type": "pyout",
655 "output_type": "pyout",
656 "prompt_number": 5,
656 "prompt_number": 5,
657 "text": [
657 "text": [
658 "40.0"
658 "40.0"
659 ]
659 ]
660 }
660 }
661 ],
661 ],
662 "prompt_number": 5
662 "prompt_number": 5
663 },
663 },
664 {
664 {
665 "cell_type": "heading",
665 "cell_type": "heading",
666 "level": 2,
666 "level": 2,
667 "metadata": {},
667 "metadata": {},
668 "source": [
668 "source": [
669 "The %cython magic"
669 "The %cython magic"
670 ]
670 ]
671 },
671 },
672 {
672 {
673 "cell_type": "markdown",
673 "cell_type": "markdown",
674 "metadata": {},
674 "metadata": {},
675 "source": [
675 "source": [
676 "Probably the most important magic is the `%cython` magic. This is similar to the `%%cython_pyximport` magic, but doesn't require you to specify a module name. Instead, the `%%cython` magic uses manages everything using temporary files in the `~/.cython/magic` directory. All of the symbols in the Cython module are imported automatically by the magic.\n",
676 "Probably the most important magic is the `%cython` magic. This is similar to the `%%cython_pyximport` magic, but doesn't require you to specify a module name. Instead, the `%%cython` magic uses manages everything using temporary files in the `~/.cython/magic` directory. All of the symbols in the Cython module are imported automatically by the magic.\n",
677 "\n",
677 "\n",
678 "Here is a simple example of a Black-Scholes options pricing algorithm written in Cython:"
678 "Here is a simple example of a Black-Scholes options pricing algorithm written in Cython:"
679 ]
679 ]
680 },
680 },
681 {
681 {
682 "cell_type": "code",
682 "cell_type": "code",
683 "collapsed": false,
683 "collapsed": false,
684 "input": [
684 "input": [
685 "%%cython\n",
685 "%%cython\n",
686 "cimport cython\n",
686 "cimport cython\n",
687 "from libc.math cimport exp, sqrt, pow, log, erf\n",
687 "from libc.math cimport exp, sqrt, pow, log, erf\n",
688 "\n",
688 "\n",
689 "@cython.cdivision(True)\n",
689 "@cython.cdivision(True)\n",
690 "cdef double std_norm_cdf(double x) nogil:\n",
690 "cdef double std_norm_cdf(double x) nogil:\n",
691 " return 0.5*(1+erf(x/sqrt(2.0)))\n",
691 " return 0.5*(1+erf(x/sqrt(2.0)))\n",
692 "\n",
692 "\n",
693 "@cython.cdivision(True)\n",
693 "@cython.cdivision(True)\n",
694 "def black_scholes(double s, double k, double t, double v,\n",
694 "def black_scholes(double s, double k, double t, double v,\n",
695 " double rf, double div, double cp):\n",
695 " double rf, double div, double cp):\n",
696 " \"\"\"Price an option using the Black-Scholes model.\n",
696 " \"\"\"Price an option using the Black-Scholes model.\n",
697 " \n",
697 " \n",
698 " s : initial stock price\n",
698 " s : initial stock price\n",
699 " k : strike price\n",
699 " k : strike price\n",
700 " t : expiration time\n",
700 " t : expiration time\n",
701 " v : volatility\n",
701 " v : volatility\n",
702 " rf : risk-free rate\n",
702 " rf : risk-free rate\n",
703 " div : dividend\n",
703 " div : dividend\n",
704 " cp : +1/-1 for call/put\n",
704 " cp : +1/-1 for call/put\n",
705 " \"\"\"\n",
705 " \"\"\"\n",
706 " cdef double d1, d2, optprice\n",
706 " cdef double d1, d2, optprice\n",
707 " with nogil:\n",
707 " with nogil:\n",
708 " d1 = (log(s/k)+(rf-div+0.5*pow(v,2))*t)/(v*sqrt(t))\n",
708 " d1 = (log(s/k)+(rf-div+0.5*pow(v,2))*t)/(v*sqrt(t))\n",
709 " d2 = d1 - v*sqrt(t)\n",
709 " d2 = d1 - v*sqrt(t)\n",
710 " optprice = cp*s*exp(-div*t)*std_norm_cdf(cp*d1) - \\\n",
710 " optprice = cp*s*exp(-div*t)*std_norm_cdf(cp*d1) - \\\n",
711 " cp*k*exp(-rf*t)*std_norm_cdf(cp*d2)\n",
711 " cp*k*exp(-rf*t)*std_norm_cdf(cp*d2)\n",
712 " return optprice"
712 " return optprice"
713 ],
713 ],
714 "language": "python",
714 "language": "python",
715 "metadata": {},
715 "metadata": {},
716 "outputs": [],
716 "outputs": [],
717 "prompt_number": 6
717 "prompt_number": 6
718 },
718 },
719 {
719 {
720 "cell_type": "code",
720 "cell_type": "code",
721 "collapsed": false,
721 "collapsed": false,
722 "input": [
722 "input": [
723 "black_scholes(100.0, 100.0, 1.0, 0.3, 0.03, 0.0, -1)"
723 "black_scholes(100.0, 100.0, 1.0, 0.3, 0.03, 0.0, -1)"
724 ],
724 ],
725 "language": "python",
725 "language": "python",
726 "metadata": {},
726 "metadata": {},
727 "outputs": [
727 "outputs": [
728 {
728 {
729 "output_type": "pyout",
729 "output_type": "pyout",
730 "prompt_number": 7,
730 "prompt_number": 7,
731 "text": [
731 "text": [
732 "10.327861752731728"
732 "10.327861752731728"
733 ]
733 ]
734 }
734 }
735 ],
735 ],
736 "prompt_number": 7
736 "prompt_number": 7
737 },
737 },
738 {
738 {
739 "cell_type": "code",
739 "cell_type": "code",
740 "collapsed": false,
740 "collapsed": false,
741 "input": [
741 "input": [
742 "%timeit black_scholes(100.0, 100.0, 1.0, 0.3, 0.03, 0.0, -1)"
742 "%timeit black_scholes(100.0, 100.0, 1.0, 0.3, 0.03, 0.0, -1)"
743 ],
743 ],
744 "language": "python",
744 "language": "python",
745 "metadata": {},
745 "metadata": {},
746 "outputs": [
746 "outputs": [
747 {
747 {
748 "output_type": "stream",
748 "output_type": "stream",
749 "stream": "stdout",
749 "stream": "stdout",
750 "text": [
750 "text": [
751 "1000000 loops, best of 3: 821 ns per loop\n"
751 "1000000 loops, best of 3: 821 ns per loop\n"
752 ]
752 ]
753 }
753 }
754 ],
754 ],
755 "prompt_number": 8
755 "prompt_number": 8
756 },
756 },
757 {
757 {
758 "cell_type": "markdown",
758 "cell_type": "markdown",
759 "metadata": {},
759 "metadata": {},
760 "source": [
760 "source": [
761 "Cython allows you to specify additional libraries to be linked with your extension, you can do so with the `-l` flag (also spelled `--lib`). Note that this flag can be passed more than once to specify multiple libraries, such as `-lm -llib2 --lib lib3`. Here's a simple example of how to access the system math library:"
761 "Cython allows you to specify additional libraries to be linked with your extension, you can do so with the `-l` flag (also spelled `--lib`). Note that this flag can be passed more than once to specify multiple libraries, such as `-lm -llib2 --lib lib3`. Here's a simple example of how to access the system math library:"
762 ]
762 ]
763 },
763 },
764 {
764 {
765 "cell_type": "code",
765 "cell_type": "code",
766 "collapsed": false,
766 "collapsed": false,
767 "input": [
767 "input": [
768 "%%cython -lm\n",
768 "%%cython -lm\n",
769 "from libc.math cimport sin\n",
769 "from libc.math cimport sin\n",
770 "print 'sin(1)=', sin(1)"
770 "print 'sin(1)=', sin(1)"
771 ],
771 ],
772 "language": "python",
772 "language": "python",
773 "metadata": {},
773 "metadata": {},
774 "outputs": [
774 "outputs": [
775 {
775 {
776 "output_type": "stream",
776 "output_type": "stream",
777 "stream": "stdout",
777 "stream": "stdout",
778 "text": [
778 "text": [
779 "sin(1)= 0.841470984808\n"
779 "sin(1)= 0.841470984808\n"
780 ]
780 ]
781 }
781 }
782 ],
782 ],
783 "prompt_number": 9
783 "prompt_number": 9
784 },
784 },
785 {
785 {
786 "cell_type": "markdown",
786 "cell_type": "markdown",
787 "metadata": {},
787 "metadata": {},
788 "source": [
788 "source": [
789 "You can similarly use the `-I/--include` flag to add include directories to the search path, and `-c/--compile-args` to add extra flags that are passed to Cython via the `extra_compile_args` of the distutils `Extension` class. Please see [the Cython docs on C library usage](http://docs.cython.org/src/tutorial/clibraries.html) for more details on the use of these flags."
789 "You can similarly use the `-I/--include` flag to add include directories to the search path, and `-c/--compile-args` to add extra flags that are passed to Cython via the `extra_compile_args` of the distutils `Extension` class. Please see [the Cython docs on C library usage](http://docs.cython.org/src/tutorial/clibraries.html) for more details on the use of these flags."
790 ]
790 ]
791 },
791 },
792 {
792 {
793 "cell_type": "heading",
793 "cell_type": "heading",
794 "level": 1,
794 "level": 1,
795 "metadata": {},
795 "metadata": {},
796 "source": [
796 "source": [
797 "Rmagic Functions Extension"
797 "Rmagic Functions Extension"
798 ]
798 ]
799 },
799 },
800 {
800 {
801 "cell_type": "markdown",
801 "cell_type": "markdown",
802 "metadata": {},
802 "metadata": {},
803 "source": [
803 "source": [
804 "IPython has an `rmagic` extension that contains a some magic functions for working with R via rpy2. This extension can be loaded using the `%load_ext` magic as follows:"
804 "IPython has an `rmagic` extension that contains a some magic functions for working with R via rpy2. This extension can be loaded using the `%load_ext` magic as follows:"
805 ]
805 ]
806 },
806 },
807 {
807 {
808 "cell_type": "code",
808 "cell_type": "code",
809 "collapsed": true,
809 "collapsed": true,
810 "input": [
810 "input": [
811 "%load_ext rmagic "
811 "%load_ext rmagic "
812 ],
812 ],
813 "language": "python",
813 "language": "python",
814 "metadata": {},
814 "metadata": {},
815 "outputs": [],
815 "outputs": [],
816 "prompt_number": 101
816 "prompt_number": 101
817 },
817 },
818 {
818 {
819 "cell_type": "markdown",
819 "cell_type": "markdown",
820 "metadata": {},
820 "metadata": {},
821 "source": [
821 "source": [
822 "A typical use case one imagines is having some numpy arrays, wanting to compute some statistics of interest on these\n",
822 "A typical use case one imagines is having some numpy arrays, wanting to compute some statistics of interest on these\n",
823 " arrays and return the result back to python. Let's suppose we just want to fit a simple linear model to a scatterplot."
823 " arrays and return the result back to python. Let's suppose we just want to fit a simple linear model to a scatterplot."
824 ]
824 ]
825 },
825 },
826 {
826 {
827 "cell_type": "code",
827 "cell_type": "code",
828 "collapsed": false,
828 "collapsed": false,
829 "input": [
829 "input": [
830 "import numpy as np\n",
830 "import numpy as np\n",
831 "import pylab\n",
831 "import pylab\n",
832 "X = np.array([0,1,2,3,4])\n",
832 "X = np.array([0,1,2,3,4])\n",
833 "Y = np.array([3,5,4,6,7])\n",
833 "Y = np.array([3,5,4,6,7])\n",
834 "pylab.scatter(X, Y)"
834 "pylab.scatter(X, Y)"
835 ],
835 ],
836 "language": "python",
836 "language": "python",
837 "metadata": {},
837 "metadata": {},
838 "outputs": [
838 "outputs": [
839 {
839 {
840 "output_type": "pyout",
840 "output_type": "pyout",
841 "prompt_number": 102,
841 "prompt_number": 102,
842 "text": [
842 "text": [
843 "<matplotlib.collections.PathCollection at 0x49f83d0>"
843 "<matplotlib.collections.PathCollection at 0x49f83d0>"
844 ]
844 ]
845 },
845 },
846 {
846 {
847 "output_type": "display_data",
847 "output_type": "display_data",
848 "png": "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\nKyutYcOG2T2lSzQ0NFhVVVWWZVlWY2OjNXTo0Lj672dZltXc3GxZlmVdvnzZys3NtXbv3m3zouj6\ny1/+Ys2YMcMqKiqye0rUpaWlWT/88ENEx0blR70zMjI0dOjQaJzKCBUVFbrrrruUlpamxMRETZs2\nTRs3brR7VtTk5eXplltusXtGl+kO79/v2bOnJCkQCCgYDCo5OdnmRdFz/Phxbd26VXPmzInbNyFE\nel38WxxXceLECaWmpl75/ZAhQ3TixAkbF+F6xev799va2pSdna2BAwdq7Nixcrvddk+Kmvnz52vF\nihVKSIjPPDkcDuXn5ysnJ0dr164NeWzYt9n9v4KCAp06dep3ny8pKYm750S8tzs+NDU1aerUqVq1\napWSkpLsnhNVCQkJqq6u1vnz51VYWCifzyev12v3rE7bsmWLBgwYII/HE7c/6l1WVqbBgwfrzJkz\nKigoUEZGhvLy8q56bMSB3rFjR9QGmi4lJUX19fVXfl9fX68hQ4bYuAgdFe79+/GiT58+mjhxovbt\n2xcXgd67d682bdqkrVu3qqWlRRcuXNCsWbO0fv16u6dFzeDBgyVJ/fv31+TJk1VRUXHNQEf9zxDx\n8MwoJydHR48eVV1dnQKBgD788EM99thjds9ChCzL0rPPPiu326158+bZPSfqzp49q3PnzkmSLl68\nqB07dsjj8di8KjpKSkpUX1+v2tpabdiwQePGjYurOPv9fjU2NkqSmpubtX379pDvpopKoD/77DOl\npqaqvLxcEydO1IQJE6JxWtu4XC6tWbNGhYWFcrvdeuKJJ5SZmWn3rKiZPn26Ro8erSNHjig1NVXr\n1q2ze1JUlZWV6b333tPOnTvl8Xjk8Xi0bds2u2dFTUNDg8aNG6fs7Gzl5uaqqKhI48ePt3tWl4i3\nx42nT59WXl7elf92jz76qB566KFrHh/Rv8UBAIi9+PxrUgCIAwQaAAxFoAHAUAQaAAxFoAHAUAQa\nAAz1vw0tF27Rt+wZAAAAAElFTkSuQmCC\n"
848 "png": "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\nKyutYcOG2T2lSzQ0NFhVVVWWZVlWY2OjNXTo0Lj672dZltXc3GxZlmVdvnzZys3NtXbv3m3zouj6\ny1/+Ys2YMcMqKiqye0rUpaWlWT/88ENEx0blR70zMjI0dOjQaJzKCBUVFbrrrruUlpamxMRETZs2\nTRs3brR7VtTk5eXplltusXtGl+kO79/v2bOnJCkQCCgYDCo5OdnmRdFz/Phxbd26VXPmzInbNyFE\nel38WxxXceLECaWmpl75/ZAhQ3TixAkbF+F6xev799va2pSdna2BAwdq7Nixcrvddk+Kmvnz52vF\nihVKSIjPPDkcDuXn5ysnJ0dr164NeWzYt9n9v4KCAp06dep3ny8pKYm750S8tzs+NDU1aerUqVq1\napWSkpLsnhNVCQkJqq6u1vnz51VYWCifzyev12v3rE7bsmWLBgwYII/HE7c/6l1WVqbBgwfrzJkz\nKigoUEZGhvLy8q56bMSB3rFjR9QGmi4lJUX19fVXfl9fX68hQ4bYuAgdFe79+/GiT58+mjhxovbt\n2xcXgd67d682bdqkrVu3qqWlRRcuXNCsWbO0fv16u6dFzeDBgyVJ/fv31+TJk1VRUXHNQEf9zxDx\n8MwoJydHR48eVV1dnQKBgD788EM99thjds9ChCzL0rPPPiu326158+bZPSfqzp49q3PnzkmSLl68\nqB07dsjj8di8KjpKSkpUX1+v2tpabdiwQePGjYurOPv9fjU2NkqSmpubtX379pDvpopKoD/77DOl\npqaqvLxcEydO1IQJE6JxWtu4XC6tWbNGhYWFcrvdeuKJJ5SZmWn3rKiZPn26Ro8erSNHjig1NVXr\n1q2ze1JUlZWV6b333tPOnTvl8Xjk8Xi0bds2u2dFTUNDg8aNG6fs7Gzl5uaqqKhI48ePt3tWl4i3\nx42nT59WXl7elf92jz76qB566KFrHh/Rv8UBAIi9+PxrUgCIAwQaAAxFoAHAUAQaAAxFoAHAUAQa\nAAz1vw0tF27Rt+wZAAAAAElFTkSuQmCC\n"
849 }
849 }
850 ],
850 ],
851 "prompt_number": 102
851 "prompt_number": 102
852 },
852 },
853 {
853 {
854 "cell_type": "markdown",
854 "cell_type": "markdown",
855 "metadata": {},
855 "metadata": {},
856 "source": [
856 "source": [
857 "We can accomplish this by first pushing variables to R, fitting a model and returning the results. The line magic %Rpush copies its arguments to variables of the same name in rpy2. The %R line magic evaluates the string in rpy2 and returns the results. In this case, the coefficients of a linear model."
857 "We can accomplish this by first pushing variables to R, fitting a model and returning the results. The line magic %Rpush copies its arguments to variables of the same name in rpy2. The %R line magic evaluates the string in rpy2 and returns the results. In this case, the coefficients of a linear model."
858 ]
858 ]
859 },
859 },
860 {
860 {
861 "cell_type": "code",
861 "cell_type": "code",
862 "collapsed": false,
862 "collapsed": false,
863 "input": [
863 "input": [
864 "%Rpush X Y\n",
864 "%Rpush X Y\n",
865 "%R lm(Y~X)$coef"
865 "%R lm(Y~X)$coef"
866 ],
866 ],
867 "language": "python",
867 "language": "python",
868 "metadata": {},
868 "metadata": {},
869 "outputs": [
869 "outputs": [
870 {
870 {
871 "output_type": "pyout",
871 "output_type": "pyout",
872 "prompt_number": 103,
872 "prompt_number": 103,
873 "text": [
873 "text": [
874 "array([ 3.2, 0.9])"
874 "array([ 3.2, 0.9])"
875 ]
875 ]
876 }
876 }
877 ],
877 ],
878 "prompt_number": 103
878 "prompt_number": 103
879 },
879 },
880 {
880 {
881 "cell_type": "markdown",
881 "cell_type": "markdown",
882 "metadata": {},
882 "metadata": {},
883 "source": [
883 "source": [
884 "It is also possible to return more than one value with %R."
884 "It is also possible to return more than one value with %R."
885 ]
885 ]
886 },
886 },
887 {
887 {
888 "cell_type": "code",
888 "cell_type": "code",
889 "collapsed": false,
889 "collapsed": false,
890 "input": [
890 "input": [
891 "%R resid(lm(Y~X)); coef(lm(X~Y))"
891 "%R resid(lm(Y~X)); coef(lm(X~Y))"
892 ],
892 ],
893 "language": "python",
893 "language": "python",
894 "metadata": {},
894 "metadata": {},
895 "outputs": [
895 "outputs": [
896 {
896 {
897 "output_type": "pyout",
897 "output_type": "pyout",
898 "prompt_number": 104,
898 "prompt_number": 104,
899 "text": [
899 "text": [
900 "array([-2.5, 0.9])"
900 "array([-2.5, 0.9])"
901 ]
901 ]
902 }
902 }
903 ],
903 ],
904 "prompt_number": 104
904 "prompt_number": 104
905 },
905 },
906 {
906 {
907 "cell_type": "markdown",
907 "cell_type": "markdown",
908 "metadata": {},
908 "metadata": {},
909 "source": [
909 "source": [
910 "One can also easily capture the results of %R into python objects. Like R, the return value of this multiline expression (multiline in the sense that it is separated by ';') is the final value, which is \n",
910 "One can also easily capture the results of %R into python objects. Like R, the return value of this multiline expression (multiline in the sense that it is separated by ';') is the final value, which is \n",
911 "the *coef(lm(X~Y))*. To pull other variables from R, there is one more magic."
911 "the *coef(lm(X~Y))*. To pull other variables from R, there is one more magic."
912 ]
912 ]
913 },
913 },
914 {
914 {
915 "cell_type": "markdown",
915 "cell_type": "markdown",
916 "metadata": {},
916 "metadata": {},
917 "source": [
917 "source": [
918 "There are two more line magics, %Rpull and %Rget. Both are useful after some R code has been executed and there are variables\n",
918 "There are two more line magics, %Rpull and %Rget. Both are useful after some R code has been executed and there are variables\n",
919 "in the rpy2 namespace that one would like to retrieve. The main difference is that one\n",
919 "in the rpy2 namespace that one would like to retrieve. The main difference is that one\n",
920 " returns the value (%Rget), while the other pulls it to self.shell.user_ns (%Rpull). Imagine we've stored the results\n",
920 " returns the value (%Rget), while the other pulls it to self.shell.user_ns (%Rpull). Imagine we've stored the results\n",
921 "of some calculation in the variable \"a\" in rpy2's namespace. By using the %R magic, we can obtain these results and\n",
921 "of some calculation in the variable \"a\" in rpy2's namespace. By using the %R magic, we can obtain these results and\n",
922 "store them in b. We can also pull them directly to user_ns with %Rpull. They are both views on the same data."
922 "store them in b. We can also pull them directly to user_ns with %Rpull. They are both views on the same data."
923 ]
923 ]
924 },
924 },
925 {
925 {
926 "cell_type": "code",
926 "cell_type": "code",
927 "collapsed": false,
927 "collapsed": false,
928 "input": [
928 "input": [
929 "b = %R a=resid(lm(Y~X))\n",
929 "b = %R a=resid(lm(Y~X))\n",
930 "%Rpull a\n",
930 "%Rpull a\n",
931 "print(a)\n",
931 "print(a)\n",
932 "assert id(b.data) == id(a.data)\n",
932 "assert id(b.data) == id(a.data)\n",
933 "%R -o a"
933 "%R -o a"
934 ],
934 ],
935 "language": "python",
935 "language": "python",
936 "metadata": {},
936 "metadata": {},
937 "outputs": [
937 "outputs": [
938 {
938 {
939 "output_type": "stream",
939 "output_type": "stream",
940 "stream": "stdout",
940 "stream": "stdout",
941 "text": [
941 "text": [
942 "[-0.2 0.9 -1. 0.1 0.2]\n"
942 "[-0.2 0.9 -1. 0.1 0.2]\n"
943 ]
943 ]
944 }
944 }
945 ],
945 ],
946 "prompt_number": 6
946 "prompt_number": 6
947 },
947 },
948 {
948 {
949 "cell_type": "heading",
949 "cell_type": "heading",
950 "level": 2,
950 "level": 2,
951 "metadata": {},
951 "metadata": {},
952 "source": [
952 "source": [
953 "Plotting and capturing output"
953 "Plotting and capturing output"
954 ]
954 ]
955 },
955 },
956 {
956 {
957 "cell_type": "markdown",
957 "cell_type": "markdown",
958 "metadata": {},
958 "metadata": {},
959 "source": [
959 "source": [
960 "R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files like the notebook with arguments --pylab inline. As a call to %R may produce a return value (see above) we must ask what happens to a magic like the one below. The R code specifies that something is published to the notebook. If anything is published to the notebook, that call to %R returns None."
960 "R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files like the notebook with arguments --pylab inline. As a call to %R may produce a return value (see above) we must ask what happens to a magic like the one below. The R code specifies that something is published to the notebook. If anything is published to the notebook, that call to %R returns None."
961 ]
961 ]
962 },
962 },
963 {
963 {
964 "cell_type": "code",
964 "cell_type": "code",
965 "collapsed": false,
965 "collapsed": false,
966 "input": [
966 "input": [
967 "from __future__ import print_function\n",
967 "from __future__ import print_function\n",
968 "v1 = %R plot(X,Y); print(summary(lm(Y~X))); vv=mean(X)*mean(Y)\n",
968 "v1 = %R plot(X,Y); print(summary(lm(Y~X))); vv=mean(X)*mean(Y)\n",
969 "print('v1 is:', v1)\n",
969 "print('v1 is:', v1)\n",
970 "v2 = %R mean(X)*mean(Y)\n",
970 "v2 = %R mean(X)*mean(Y)\n",
971 "print('v2 is:', v2)"
971 "print('v2 is:', v2)"
972 ],
972 ],
973 "language": "python",
973 "language": "python",
974 "metadata": {},
974 "metadata": {},
975 "outputs": [
975 "outputs": [
976 {
976 {
977 "output_type": "display_data",
977 "output_type": "display_data",
978 "text": [
978 "text": [
979 "\n",
979 "\n",
980 "Call:\n",
980 "Call:\n",
981 "lm(formula = Y ~ X)\n",
981 "lm(formula = Y ~ X)\n",
982 "\n",
982 "\n",
983 "Residuals:\n",
983 "Residuals:\n",
984 " 1 2 3 4 5 \n",
984 " 1 2 3 4 5 \n",
985 "-0.2 0.9 -1.0 0.1 0.2 \n",
985 "-0.2 0.9 -1.0 0.1 0.2 \n",
986 "\n",
986 "\n",
987 "Coefficients:\n",
987 "Coefficients:\n",
988 " Estimate Std. Error t value Pr(>|t|) \n",
988 " Estimate Std. Error t value Pr(>|t|) \n",
989 "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n",
989 "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n",
990 "X 0.9000 0.2517 3.576 0.0374 *\n",
990 "X 0.9000 0.2517 3.576 0.0374 *\n",
991 "---\n",
991 "---\n",
992 "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1 \n",
992 "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1 \n",
993 "\n",
993 "\n",
994 "Residual standard error: 0.7958 on 3 degrees of freedom\n",
994 "Residual standard error: 0.7958 on 3 degrees of freedom\n",
995 "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n",
995 "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n",
996 "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739 \n",
996 "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739 \n",
997 "\n"
997 "\n"
998 ]
998 ]
999 },
999 },
1000 {
1000 {
1001 "output_type": "display_data",
1001 "output_type": "display_data",
1002 "png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAMAAABKCk6nAAACo1BMVEUAAAABAQECAgIDAwMEBAQF\nBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQWFhYXFxcZGRka\nGhobGxsdHR0eHh4fHx8hISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKystLS0uLi4vLy8x\nMTEyMjIzMzM2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFDQ0NERERFRUVGRkZH\nR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJUVFRVVVVWVlZXV1dYWFhZWVlaWlpb\nW1tcXFxeXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxubm5vb29w\ncHBxcXFycnJ0dHR1dXV2dnZ3d3d4eHh6enp7e3t8fHx9fX1+fn6AgICBgYGDg4OFhYWGhoaHh4eI\niIiJiYmKioqLi4uNjY2Ojo6Pj4+QkJCRkZGUlJSVlZWXl5eYmJiZmZmampqbm5ucnJyenp6fn5+g\noKCioqKjo6OkpKSlpaWoqKipqamqqqqrq6uurq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi6urq7u7u8vLy9vb2/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fJycnKysrLy8vMzMzNzc3P\nz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi\n4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT1\n9fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///9dYsGyAAALXElEQVR4nO3c+5uUdRnH8TtI\nRZTAU0lQSpoHEhUE3TQVMkpkMUEBxVILTxlZZqFoJOrioRPYQTNTCBURoUwT1BRXWU/sbgKisMgy\n3z+l2f1h2Z1hcWaf556b/Vzv1w+jPDN8n4+8L2d3YS8sQZpFD4Avix4AXxY9AL4segB8WfQA+LLo\nAfBl0QPgy6IHwJdFD4Avix4AXxY9AL4segB8WfQA+LLoAfBl0QPgy6IHwJdFD4Avix4AXxY9AL4s\n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\nrkJggg==\n"
1002 "png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAMAAABKCk6nAAACo1BMVEUAAAABAQECAgIDAwMEBAQF\nBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQWFhYXFxcZGRka\nGhobGxsdHR0eHh4fHx8hISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKystLS0uLi4vLy8x\nMTEyMjIzMzM2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFDQ0NERERFRUVGRkZH\nR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJUVFRVVVVWVlZXV1dYWFhZWVlaWlpb\nW1tcXFxeXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxubm5vb29w\ncHBxcXFycnJ0dHR1dXV2dnZ3d3d4eHh6enp7e3t8fHx9fX1+fn6AgICBgYGDg4OFhYWGhoaHh4eI\niIiJiYmKioqLi4uNjY2Ojo6Pj4+QkJCRkZGUlJSVlZWXl5eYmJiZmZmampqbm5ucnJyenp6fn5+g\noKCioqKjo6OkpKSlpaWoqKipqamqqqqrq6uurq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi6urq7u7u8vLy9vb2/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fJycnKysrLy8vMzMzNzc3P\nz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi\n4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT1\n9fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///9dYsGyAAALXElEQVR4nO3c+5uUdRnH8TtI\nRZTAU0lQSpoHEhUE3TQVMkpkMUEBxVILTxlZZqFoJOrioRPYQTNTCBURoUwT1BRXWU/sbgKisMgy\n3z+l2f1h2Z1hcWaf556b/Vzv1w+jPDN8n4+8L2d3YS8sQZpFD4Avix4AXxY9AL4segB8WfQA+LLo\nAfBl0QPgy6IHwJdFD4Avix4AXxY9AL4segB8WfQA+LLoAfBl0QPgy6IHwJdFD4Avix4AXxY9AL4s\n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\nrkJggg==\n"
1003 },
1003 },
1004 {
1004 {
1005 "output_type": "stream",
1005 "output_type": "stream",
1006 "stream": "stdout",
1006 "stream": "stdout",
1007 "text": [
1007 "text": [
1008 "v1 is: [ 10.]\n",
1008 "v1 is: [ 10.]\n",
1009 "v2 is: [ 10.]\n"
1009 "v2 is: [ 10.]\n"
1010 ]
1010 ]
1011 }
1011 }
1012 ],
1012 ],
1013 "prompt_number": 105
1013 "prompt_number": 105
1014 },
1014 },
1015 {
1015 {
1016 "cell_type": "heading",
1016 "cell_type": "heading",
1017 "level": 2,
1017 "level": 2,
1018 "metadata": {},
1018 "metadata": {},
1019 "source": [
1019 "source": [
1020 "Cell level magic"
1020 "Cell level magic"
1021 ]
1021 ]
1022 },
1022 },
1023 {
1023 {
1024 "cell_type": "markdown",
1024 "cell_type": "markdown",
1025 "metadata": {},
1025 "metadata": {},
1026 "source": [
1026 "source": [
1027 "Often, we will want to do more than a simple linear regression model. There may be several lines of R code that we want to \n",
1027 "Often, we will want to do more than a simple linear regression model. There may be several lines of R code that we want to \n",
1028 "use before returning to python. This is the cell-level magic.\n",
1028 "use before returning to python. This is the cell-level magic.\n",
1029 "\n",
1029 "\n",
1030 "\n",
1030 "\n",
1031 "For the cell level magic, inputs can be passed via the -i or --inputs argument in the line. These variables are copied \n",
1031 "For the cell level magic, inputs can be passed via the -i or --inputs argument in the line. These variables are copied \n",
1032 "from the shell namespace to R's namespace using rpy2.robjects.r.assign. It would be nice not to have to copy these into R: rnumpy ( http://bitbucket.org/njs/rnumpy/wiki/API ) has done some work to limit or at least make transparent the number of copies of an array. This seems like a natural thing to try to build on. Arrays can be output from R via the -o or --outputs argument in the line. All other arguments are sent to R's png function, which is the graphics device used to create the plots.\n",
1032 "from the shell namespace to R's namespace using rpy2.robjects.r.assign. It would be nice not to have to copy these into R: rnumpy ( http://bitbucket.org/njs/rnumpy/wiki/API ) has done some work to limit or at least make transparent the number of copies of an array. This seems like a natural thing to try to build on. Arrays can be output from R via the -o or --outputs argument in the line. All other arguments are sent to R's png function, which is the graphics device used to create the plots.\n",
1033 "\n",
1033 "\n",
1034 "We can redo the above calculations in one ipython cell. We might also want to add some output such as a summary\n",
1034 "We can redo the above calculations in one ipython cell. We might also want to add some output such as a summary\n",
1035 " from R or perhaps the standard plotting diagnostics of the lm."
1035 " from R or perhaps the standard plotting diagnostics of the lm."
1036 ]
1036 ]
1037 },
1037 },
1038 {
1038 {
1039 "cell_type": "code",
1039 "cell_type": "code",
1040 "collapsed": false,
1040 "collapsed": false,
1041 "input": [
1041 "input": [
1042 "%%R -i X,Y -o XYcoef\n",
1042 "%%R -i X,Y -o XYcoef\n",
1043 "XYlm = lm(Y~X)\n",
1043 "XYlm = lm(Y~X)\n",
1044 "XYcoef = coef(XYlm)\n",
1044 "XYcoef = coef(XYlm)\n",
1045 "print(summary(XYlm))\n",
1045 "print(summary(XYlm))\n",
1046 "par(mfrow=c(2,2))\n",
1046 "par(mfrow=c(2,2))\n",
1047 "plot(XYlm)"
1047 "plot(XYlm)"
1048 ],
1048 ],
1049 "language": "python",
1049 "language": "python",
1050 "metadata": {},
1050 "metadata": {},
1051 "outputs": [
1051 "outputs": [
1052 {
1052 {
1053 "output_type": "display_data",
1053 "output_type": "display_data",
1054 "text": [
1054 "text": [
1055 "\n",
1055 "\n",
1056 "Call:\n",
1056 "Call:\n",
1057 "lm(formula = Y ~ X)\n",
1057 "lm(formula = Y ~ X)\n",
1058 "\n",
1058 "\n",
1059 "Residuals:\n",
1059 "Residuals:\n",
1060 " 1 2 3 4 5 \n",
1060 " 1 2 3 4 5 \n",
1061 "-0.2 0.9 -1.0 0.1 0.2 \n",
1061 "-0.2 0.9 -1.0 0.1 0.2 \n",
1062 "\n",
1062 "\n",
1063 "Coefficients:\n",
1063 "Coefficients:\n",
1064 " Estimate Std. Error t value Pr(>|t|) \n",
1064 " Estimate Std. Error t value Pr(>|t|) \n",
1065 "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n",
1065 "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n",
1066 "X 0.9000 0.2517 3.576 0.0374 *\n",
1066 "X 0.9000 0.2517 3.576 0.0374 *\n",
1067 "---\n",
1067 "---\n",
1068 "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1 \n",
1068 "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1 \n",
1069 "\n",
1069 "\n",
1070 "Residual standard error: 0.7958 on 3 degrees of freedom\n",
1070 "Residual standard error: 0.7958 on 3 degrees of freedom\n",
1071 "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n",
1071 "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n",
1072 "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739 \n",
1072 "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739 \n",
1073 "\n"
1073 "\n"
1074 ]
1074 ]
1075 },
1075 },
1076 {
1076 {
1077 "output_type": "display_data",
1077 "output_type": "display_data",
1078 "png": "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\n"
1078 "png": "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\n"
1079 }
1079 }
1080 ],
1080 ],
1081 "prompt_number": 16
1081 "prompt_number": 16
1082 },
1082 },
1083 {
1083 {
1084 "cell_type": "heading",
1084 "cell_type": "heading",
1085 "level": 1,
1085 "level": 1,
1086 "metadata": {},
1086 "metadata": {},
1087 "source": [
1087 "source": [
1088 "octavemagic: Octave inside IPython"
1088 "octavemagic: Octave inside IPython"
1089 ]
1089 ]
1090 },
1090 },
1091 {
1091 {
1092 "cell_type": "markdown",
1092 "cell_type": "markdown",
1093 "metadata": {},
1093 "metadata": {},
1094 "source": [
1094 "source": [
1095 "The `octavemagic` extension provides the ability to interact with Octave. It depends on the `oct2py` and `h5py` packages,\n",
1095 "The `octavemagic` extension provides the ability to interact with Octave. It depends on the `oct2py` and `h5py` packages,\n",
1096 "which may be installed using `easy_install`. It has been closely modeled after the R extension, so many of its names and usage patterns are the same.\n",
1096 "which may be installed using `easy_install`. It has been closely modeled after the R extension, so many of its names and usage patterns are the same.\n",
1097 "\n",
1097 "\n",
1098 "To enable the extension, load it as follows:"
1098 "To enable the extension, load it as follows:"
1099 ]
1099 ]
1100 },
1100 },
1101 {
1101 {
1102 "cell_type": "code",
1102 "cell_type": "code",
1103 "collapsed": false,
1103 "collapsed": false,
1104 "input": [
1104 "input": [
1105 "%load_ext octavemagic"
1105 "%load_ext octavemagic"
1106 ],
1106 ],
1107 "language": "python",
1107 "language": "python",
1108 "metadata": {},
1108 "metadata": {},
1109 "outputs": [],
1109 "outputs": [],
1110 "prompt_number": 109
1110 "prompt_number": 109
1111 },
1111 },
1112 {
1112 {
1113 "cell_type": "heading",
1113 "cell_type": "heading",
1114 "level": 2,
1114 "level": 2,
1115 "metadata": {},
1115 "metadata": {},
1116 "source": [
1116 "source": [
1117 "Overview"
1117 "Overview"
1118 ]
1118 ]
1119 },
1119 },
1120 {
1120 {
1121 "cell_type": "markdown",
1121 "cell_type": "markdown",
1122 "metadata": {},
1122 "metadata": {},
1123 "source": [
1123 "source": [
1124 "Loading the extension enables three magic functions: `%octave`, `%octave_push`, and `%octave_pull`.\n",
1124 "Loading the extension enables three magic functions: `%octave`, `%octave_push`, and `%octave_pull`.\n",
1125 "\n",
1125 "\n",
1126 "The first is for executing one or more lines of Octave, while the latter allow moving variables between the Octave and Python workspace.\n",
1126 "The first is for executing one or more lines of Octave, while the latter allow moving variables between the Octave and Python workspace.\n",
1127 "Here you see an example of how to execute a single line of Octave, and how to transfer the generated value back to Python:"
1127 "Here you see an example of how to execute a single line of Octave, and how to transfer the generated value back to Python:"
1128 ]
1128 ]
1129 },
1129 },
1130 {
1130 {
1131 "cell_type": "code",
1131 "cell_type": "code",
1132 "collapsed": false,
1132 "collapsed": false,
1133 "input": [
1133 "input": [
1134 "x = %octave [1 2; 3 4];\n",
1134 "x = %octave [1 2; 3 4];\n",
1135 "x"
1135 "x"
1136 ],
1136 ],
1137 "language": "python",
1137 "language": "python",
1138 "metadata": {},
1138 "metadata": {},
1139 "outputs": [
1139 "outputs": [
1140 {
1140 {
1141 "output_type": "pyout",
1141 "output_type": "pyout",
1142 "prompt_number": 110,
1142 "prompt_number": 110,
1143 "text": [
1143 "text": [
1144 "array([[ 1., 2.],\n",
1144 "array([[ 1., 2.],\n",
1145 " [ 3., 4.]])"
1145 " [ 3., 4.]])"
1146 ]
1146 ]
1147 }
1147 }
1148 ],
1148 ],
1149 "prompt_number": 110
1149 "prompt_number": 110
1150 },
1150 },
1151 {
1151 {
1152 "cell_type": "code",
1152 "cell_type": "code",
1153 "collapsed": false,
1153 "collapsed": false,
1154 "input": [
1154 "input": [
1155 "a = [1, 2, 3]\n",
1155 "a = [1, 2, 3]\n",
1156 "\n",
1156 "\n",
1157 "%octave_push a\n",
1157 "%octave_push a\n",
1158 "%octave a = a * 2;\n",
1158 "%octave a = a * 2;\n",
1159 "%octave_pull a\n",
1159 "%octave_pull a\n",
1160 "a"
1160 "a"
1161 ],
1161 ],
1162 "language": "python",
1162 "language": "python",
1163 "metadata": {},
1163 "metadata": {},
1164 "outputs": [
1164 "outputs": [
1165 {
1165 {
1166 "output_type": "pyout",
1166 "output_type": "pyout",
1167 "prompt_number": 111,
1167 "prompt_number": 111,
1168 "text": [
1168 "text": [
1169 "array([[2, 4, 6]])"
1169 "array([[2, 4, 6]])"
1170 ]
1170 ]
1171 }
1171 }
1172 ],
1172 ],
1173 "prompt_number": 111
1173 "prompt_number": 111
1174 },
1174 },
1175 {
1175 {
1176 "cell_type": "markdown",
1176 "cell_type": "markdown",
1177 "metadata": {},
1177 "metadata": {},
1178 "source": [
1178 "source": [
1179 "When using the cell magic, `%%octave` (note the double `%`), multiple lines of Octave can be executed together. Unlike\n",
1179 "When using the cell magic, `%%octave` (note the double `%`), multiple lines of Octave can be executed together. Unlike\n",
1180 "with the single cell magic, no value is returned, so we use the `-i` and `-o` flags to specify input and output variables."
1180 "with the single cell magic, no value is returned, so we use the `-i` and `-o` flags to specify input and output variables."
1181 ]
1181 ]
1182 },
1182 },
1183 {
1183 {
1184 "cell_type": "code",
1184 "cell_type": "code",
1185 "collapsed": false,
1185 "collapsed": false,
1186 "input": [
1186 "input": [
1187 "%%octave -i x -o y\n",
1187 "%%octave -i x -o y\n",
1188 "y = x + 3;"
1188 "y = x + 3;"
1189 ],
1189 ],
1190 "language": "python",
1190 "language": "python",
1191 "metadata": {},
1191 "metadata": {},
1192 "outputs": [],
1192 "outputs": [],
1193 "prompt_number": 116
1193 "prompt_number": 116
1194 },
1194 },
1195 {
1195 {
1196 "cell_type": "code",
1196 "cell_type": "code",
1197 "collapsed": false,
1197 "collapsed": false,
1198 "input": [
1198 "input": [
1199 "y"
1199 "y"
1200 ],
1200 ],
1201 "language": "python",
1201 "language": "python",
1202 "metadata": {},
1202 "metadata": {},
1203 "outputs": [
1203 "outputs": [
1204 {
1204 {
1205 "output_type": "pyout",
1205 "output_type": "pyout",
1206 "prompt_number": 117,
1206 "prompt_number": 117,
1207 "text": [
1207 "text": [
1208 "array([[ 4., 5.],\n",
1208 "array([[ 4., 5.],\n",
1209 " [ 6., 7.]])"
1209 " [ 6., 7.]])"
1210 ]
1210 ]
1211 }
1211 }
1212 ],
1212 ],
1213 "prompt_number": 117
1213 "prompt_number": 117
1214 },
1214 },
1215 {
1215 {
1216 "cell_type": "heading",
1216 "cell_type": "heading",
1217 "level": 2,
1217 "level": 2,
1218 "metadata": {},
1218 "metadata": {},
1219 "source": [
1219 "source": [
1220 "Plotting"
1220 "Plotting"
1221 ]
1221 ]
1222 },
1222 },
1223 {
1223 {
1224 "cell_type": "markdown",
1224 "cell_type": "markdown",
1225 "metadata": {},
1225 "metadata": {},
1226 "source": [
1226 "source": [
1227 "Plot output is automatically captured and displayed, and using the `-f` flag you may choose its format (currently, `png` and `svg` are supported)."
1227 "Plot output is automatically captured and displayed, and using the `-f` flag you may choose its format (currently, `png` and `svg` are supported)."
1228 ]
1228 ]
1229 },
1229 },
1230 {
1230 {
1231 "cell_type": "code",
1231 "cell_type": "code",
1232 "collapsed": false,
1232 "collapsed": false,
1233 "input": [
1233 "input": [
1234 "%%octave -f svg\n",
1234 "%%octave -f svg\n",
1235 "\n",
1235 "\n",
1236 "p = [12 -2.5 -8 -0.1 8];\n",
1236 "p = [12 -2.5 -8 -0.1 8];\n",
1237 "x = 0:0.01:1;\n",
1237 "x = 0:0.01:1;\n",
1238 "\n",
1238 "\n",
1239 "polyout(p, 'x')\n",
1239 "polyout(p, 'x')\n",
1240 "plot(x, polyval(p, x));"
1240 "plot(x, polyval(p, x));"
1241 ],
1241 ],
1242 "language": "python",
1242 "language": "python",
1243 "metadata": {},
1243 "metadata": {},
1244 "outputs": [
1244 "outputs": [
1245 {
1245 {
1246 "output_type": "display_data",
1246 "output_type": "display_data",
1247 "text": [
1247 "text": [
1248 "12*x^4 - 2.5*x^3 - 8*x^2 - 0.1*x^1 + 8"
1248 "12*x^4 - 2.5*x^3 - 8*x^2 - 0.1*x^1 + 8"
1249 ]
1249 ]
1250 },
1250 },
1251 {
1251 {
1252 "output_type": "display_data",
1252 "output_type": "display_data",
1253 "svg": [
1253 "svg": [
1254 "<svg height=\"240px\" viewBox=\"0 0 400 240\" width=\"400px\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
1254 "<svg height=\"240px\" viewBox=\"0 0 400 240\" width=\"400px\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
1255 "\n",
1255 "\n",
1256 "<desc>Produced by GNUPLOT 4.4 patchlevel 3 </desc>\n",
1256 "<desc>Produced by GNUPLOT 4.4 patchlevel 3 </desc>\n",
1257 "\n",
1257 "\n",
1258 "<defs>\n",
1258 "<defs>\n",
1259 "\n",
1259 "\n",
1260 "\t<circle id=\"gpDot\" r=\"0.5\" stroke-width=\"0.5\"/>\n",
1260 "\t<circle id=\"gpDot\" r=\"0.5\" stroke-width=\"0.5\"/>\n",
1261 "\t<path d=\"M-1,0 h2 M0,-1 v2\" id=\"gpPt0\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1261 "\t<path d=\"M-1,0 h2 M0,-1 v2\" id=\"gpPt0\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1262 "\t<path d=\"M-1,-1 L1,1 M1,-1 L-1,1\" id=\"gpPt1\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1262 "\t<path d=\"M-1,-1 L1,1 M1,-1 L-1,1\" id=\"gpPt1\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1263 "\t<path d=\"M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1\" id=\"gpPt2\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1263 "\t<path d=\"M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1\" id=\"gpPt2\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1264 "\t<rect height=\"2\" id=\"gpPt3\" stroke=\"currentColor\" stroke-width=\"0.222\" width=\"2\" x=\"-1\" y=\"-1\"/>\n",
1264 "\t<rect height=\"2\" id=\"gpPt3\" stroke=\"currentColor\" stroke-width=\"0.222\" width=\"2\" x=\"-1\" y=\"-1\"/>\n",
1265 "\t<rect fill=\"currentColor\" height=\"2\" id=\"gpPt4\" stroke=\"currentColor\" stroke-width=\"0.222\" width=\"2\" x=\"-1\" y=\"-1\"/>\n",
1265 "\t<rect fill=\"currentColor\" height=\"2\" id=\"gpPt4\" stroke=\"currentColor\" stroke-width=\"0.222\" width=\"2\" x=\"-1\" y=\"-1\"/>\n",
1266 "\t<circle cx=\"0\" cy=\"0\" id=\"gpPt5\" r=\"1\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1266 "\t<circle cx=\"0\" cy=\"0\" id=\"gpPt5\" r=\"1\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1267 "\t<use fill=\"currentColor\" id=\"gpPt6\" stroke=\"none\" xlink:href=\"#gpPt5\"/>\n",
1267 "\t<use fill=\"currentColor\" id=\"gpPt6\" stroke=\"none\" xlink:href=\"#gpPt5\"/>\n",
1268 "\t<path d=\"M0,-1.33 L-1.33,0.67 L1.33,0.67 z\" id=\"gpPt7\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1268 "\t<path d=\"M0,-1.33 L-1.33,0.67 L1.33,0.67 z\" id=\"gpPt7\" stroke=\"currentColor\" stroke-width=\"0.222\"/>\n",
1269 "\t<use fill=\"currentColor\" id=\"gpPt8\" stroke=\"none\" xlink:href=\"#gpPt7\"/>\n",
1269 "\t<use fill=\"currentColor\" id=\"gpPt8\" stroke=\"none\" xlink:href=\"#gpPt7\"/>\n",
1270 "\t<use id=\"gpPt9\" stroke=\"currentColor\" transform=\"rotate(180)\" xlink:href=\"#gpPt7\"/>\n",
1270 "\t<use id=\"gpPt9\" stroke=\"currentColor\" transform=\"rotate(180)\" xlink:href=\"#gpPt7\"/>\n",
1271 "\t<use fill=\"currentColor\" id=\"gpPt10\" stroke=\"none\" xlink:href=\"#gpPt9\"/>\n",
1271 "\t<use fill=\"currentColor\" id=\"gpPt10\" stroke=\"none\" xlink:href=\"#gpPt9\"/>\n",
1272 "\t<use id=\"gpPt11\" stroke=\"currentColor\" transform=\"rotate(45)\" xlink:href=\"#gpPt3\"/>\n",
1272 "\t<use id=\"gpPt11\" stroke=\"currentColor\" transform=\"rotate(45)\" xlink:href=\"#gpPt3\"/>\n",
1273 "\t<use fill=\"currentColor\" id=\"gpPt12\" stroke=\"none\" xlink:href=\"#gpPt11\"/>\n",
1273 "\t<use fill=\"currentColor\" id=\"gpPt12\" stroke=\"none\" xlink:href=\"#gpPt11\"/>\n",
1274 "</defs>\n",
1274 "</defs>\n",
1275 "<g style=\"fill:none; color:white; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1275 "<g style=\"fill:none; color:white; stroke:currentColor; stroke-width:1.00; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1276 "</g>\n",
1276 "</g>\n",
1277 "<g style=\"fill:none; color:white; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1277 "<g style=\"fill:none; color:white; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1278 "</g>\n",
1278 "</g>\n",
1279 "<g style=\"fill:none; color:black; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1279 "<g style=\"fill:none; color:black; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1280 "\t<path d=\"M52.0,213.6 L64.5,213.6 M361.9,213.6 L349.4,213.6 \"/>\n",
1280 "\t<path d=\"M52.0,213.6 L64.5,213.6 M361.9,213.6 L349.4,213.6 \"/>\n",
1281 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,218.1)\">\n",
1281 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,218.1)\">\n",
1282 "\t\t<text><tspan>6</tspan>\n",
1282 "\t\t<text><tspan>6</tspan>\n",
1283 "\t\t</text>\n",
1283 "\t\t</text>\n",
1284 "\t</g>\n",
1284 "\t</g>\n",
1285 "\t<path d=\"M52.0,185.7 L64.5,185.7 M361.9,185.7 L349.4,185.7 \"/>\n",
1285 "\t<path d=\"M52.0,185.7 L64.5,185.7 M361.9,185.7 L349.4,185.7 \"/>\n",
1286 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,190.2)\">\n",
1286 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,190.2)\">\n",
1287 "\t\t<text><tspan>6.5</tspan>\n",
1287 "\t\t<text><tspan>6.5</tspan>\n",
1288 "\t\t</text>\n",
1288 "\t\t</text>\n",
1289 "\t</g>\n",
1289 "\t</g>\n",
1290 "\t<path d=\"M52.0,157.7 L64.5,157.7 M361.9,157.7 L349.4,157.7 \"/>\n",
1290 "\t<path d=\"M52.0,157.7 L64.5,157.7 M361.9,157.7 L349.4,157.7 \"/>\n",
1291 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,162.2)\">\n",
1291 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,162.2)\">\n",
1292 "\t\t<text><tspan>7</tspan>\n",
1292 "\t\t<text><tspan>7</tspan>\n",
1293 "\t\t</text>\n",
1293 "\t\t</text>\n",
1294 "\t</g>\n",
1294 "\t</g>\n",
1295 "\t<path d=\"M52.0,129.8 L64.5,129.8 M361.9,129.8 L349.4,129.8 \"/>\n",
1295 "\t<path d=\"M52.0,129.8 L64.5,129.8 M361.9,129.8 L349.4,129.8 \"/>\n",
1296 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,134.3)\">\n",
1296 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,134.3)\">\n",
1297 "\t\t<text><tspan>7.5</tspan>\n",
1297 "\t\t<text><tspan>7.5</tspan>\n",
1298 "\t\t</text>\n",
1298 "\t\t</text>\n",
1299 "\t</g>\n",
1299 "\t</g>\n",
1300 "\t<path d=\"M52.0,101.9 L64.5,101.9 M361.9,101.9 L349.4,101.9 \"/>\n",
1300 "\t<path d=\"M52.0,101.9 L64.5,101.9 M361.9,101.9 L349.4,101.9 \"/>\n",
1301 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,106.4)\">\n",
1301 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,106.4)\">\n",
1302 "\t\t<text><tspan>8</tspan>\n",
1302 "\t\t<text><tspan>8</tspan>\n",
1303 "\t\t</text>\n",
1303 "\t\t</text>\n",
1304 "\t</g>\n",
1304 "\t</g>\n",
1305 "\t<path d=\"M52.0,74.0 L64.5,74.0 M361.9,74.0 L349.4,74.0 \"/>\n",
1305 "\t<path d=\"M52.0,74.0 L64.5,74.0 M361.9,74.0 L349.4,74.0 \"/>\n",
1306 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,78.5)\">\n",
1306 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,78.5)\">\n",
1307 "\t\t<text><tspan>8.5</tspan>\n",
1307 "\t\t<text><tspan>8.5</tspan>\n",
1308 "\t\t</text>\n",
1308 "\t\t</text>\n",
1309 "\t</g>\n",
1309 "\t</g>\n",
1310 "\t<path d=\"M52.0,46.0 L64.5,46.0 M361.9,46.0 L349.4,46.0 \"/>\n",
1310 "\t<path d=\"M52.0,46.0 L64.5,46.0 M361.9,46.0 L349.4,46.0 \"/>\n",
1311 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,50.5)\">\n",
1311 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,50.5)\">\n",
1312 "\t\t<text><tspan>9</tspan>\n",
1312 "\t\t<text><tspan>9</tspan>\n",
1313 "\t\t</text>\n",
1313 "\t\t</text>\n",
1314 "\t</g>\n",
1314 "\t</g>\n",
1315 "\t<path d=\"M52.0,18.1 L64.5,18.1 M361.9,18.1 L349.4,18.1 \"/>\n",
1315 "\t<path d=\"M52.0,18.1 L64.5,18.1 M361.9,18.1 L349.4,18.1 \"/>\n",
1316 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,22.6)\">\n",
1316 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:end\" transform=\"translate(43.7,22.6)\">\n",
1317 "\t\t<text><tspan>9.5</tspan>\n",
1317 "\t\t<text><tspan>9.5</tspan>\n",
1318 "\t\t</text>\n",
1318 "\t\t</text>\n",
1319 "\t</g>\n",
1319 "\t</g>\n",
1320 "\t<path d=\"M52.0,213.6 L52.0,201.1 M52.0,18.1 L52.0,30.6 \"/>\n",
1320 "\t<path d=\"M52.0,213.6 L52.0,201.1 M52.0,18.1 L52.0,30.6 \"/>\n",
1321 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(52.0,236.1)\">\n",
1321 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(52.0,236.1)\">\n",
1322 "\t\t<text><tspan>0</tspan>\n",
1322 "\t\t<text><tspan>0</tspan>\n",
1323 "\t\t</text>\n",
1323 "\t\t</text>\n",
1324 "\t</g>\n",
1324 "\t</g>\n",
1325 "\t<path d=\"M114.0,213.6 L114.0,201.1 M114.0,18.1 L114.0,30.6 \"/>\n",
1325 "\t<path d=\"M114.0,213.6 L114.0,201.1 M114.0,18.1 L114.0,30.6 \"/>\n",
1326 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(114.0,236.1)\">\n",
1326 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(114.0,236.1)\">\n",
1327 "\t\t<text><tspan>0.2</tspan>\n",
1327 "\t\t<text><tspan>0.2</tspan>\n",
1328 "\t\t</text>\n",
1328 "\t\t</text>\n",
1329 "\t</g>\n",
1329 "\t</g>\n",
1330 "\t<path d=\"M176.0,213.6 L176.0,201.1 M176.0,18.1 L176.0,30.6 \"/>\n",
1330 "\t<path d=\"M176.0,213.6 L176.0,201.1 M176.0,18.1 L176.0,30.6 \"/>\n",
1331 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(176.0,236.1)\">\n",
1331 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(176.0,236.1)\">\n",
1332 "\t\t<text><tspan>0.4</tspan>\n",
1332 "\t\t<text><tspan>0.4</tspan>\n",
1333 "\t\t</text>\n",
1333 "\t\t</text>\n",
1334 "\t</g>\n",
1334 "\t</g>\n",
1335 "\t<path d=\"M237.9,213.6 L237.9,201.1 M237.9,18.1 L237.9,30.6 \"/>\n",
1335 "\t<path d=\"M237.9,213.6 L237.9,201.1 M237.9,18.1 L237.9,30.6 \"/>\n",
1336 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(237.9,236.1)\">\n",
1336 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(237.9,236.1)\">\n",
1337 "\t\t<text><tspan>0.6</tspan>\n",
1337 "\t\t<text><tspan>0.6</tspan>\n",
1338 "\t\t</text>\n",
1338 "\t\t</text>\n",
1339 "\t</g>\n",
1339 "\t</g>\n",
1340 "\t<path d=\"M299.9,213.6 L299.9,201.1 M299.9,18.1 L299.9,30.6 \"/>\n",
1340 "\t<path d=\"M299.9,213.6 L299.9,201.1 M299.9,18.1 L299.9,30.6 \"/>\n",
1341 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(299.9,236.1)\">\n",
1341 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(299.9,236.1)\">\n",
1342 "\t\t<text><tspan>0.8</tspan>\n",
1342 "\t\t<text><tspan>0.8</tspan>\n",
1343 "\t\t</text>\n",
1343 "\t\t</text>\n",
1344 "\t</g>\n",
1344 "\t</g>\n",
1345 "\t<path d=\"M361.9,213.6 L361.9,201.1 M361.9,18.1 L361.9,30.6 \"/>\n",
1345 "\t<path d=\"M361.9,213.6 L361.9,201.1 M361.9,18.1 L361.9,30.6 \"/>\n",
1346 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(361.9,236.1)\">\n",
1346 "\t<g style=\"stroke:none; fill:rgb(0,0,0); font-family:Arial; font-size:12.00pt; text-anchor:middle\" transform=\"translate(361.9,236.1)\">\n",
1347 "\t\t<text><tspan>1</tspan>\n",
1347 "\t\t<text><tspan>1</tspan>\n",
1348 "\t\t</text>\n",
1348 "\t\t</text>\n",
1349 "\t</g>\n",
1349 "\t</g>\n",
1350 "\t<path d=\"M52.0,18.1 L52.0,213.6 L361.9,213.6 L361.9,18.1 L52.0,18.1 Z \"/>\n",
1350 "\t<path d=\"M52.0,18.1 L52.0,213.6 L361.9,213.6 L361.9,18.1 L52.0,18.1 Z \"/>\n",
1351 "</g>\n",
1351 "</g>\n",
1352 "\t<a xlink:title=\"Plot #1\">\n",
1352 "\t<a xlink:title=\"Plot #1\">\n",
1353 "<g style=\"fill:none; color:red; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1353 "<g style=\"fill:none; color:red; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1354 "\t<path d=\"M52.0,101.9 L55.1,102.0 L58.2,102.2 L61.3,102.5 L64.4,102.8 L67.5,103.3 L70.6,103.9 L73.7,104.5 L76.8,105.2 L79.9,106.1 L83.0,107.0 L86.1,108.0 L89.2,109.1 L92.3,110.3 L95.4,111.6 L98.5,112.9 L101.6,114.4 L104.7,115.9 L107.8,117.5 L110.9,119.2 L114.0,120.9 L117.1,122.8 L120.2,124.7 L123.3,126.6 L126.4,128.7 L129.5,130.8 L132.6,132.9 L135.7,135.2 L138.8,137.4 L141.9,139.8 L145.0,142.1 L148.1,144.5 L151.2,147.0 L154.3,149.5 L157.4,152.0 L160.5,154.5 L163.6,157.1 L166.7,159.6 L169.8,162.2 L172.9,164.8 L176.0,167.4 L179.1,170.0 L182.2,172.5 L185.3,175.1 L188.4,177.6 L191.5,180.1 L194.6,182.6 L197.7,185.0 L200.8,187.4 L203.9,189.7 L207.0,192.0 L210.0,194.1 L213.1,196.2 L216.2,198.3 L219.3,200.2 L222.4,202.0 L225.5,203.8 L228.6,205.4 L231.7,206.8 L234.8,208.2 L237.9,209.4 L241.0,210.5 L244.1,211.4 L247.2,212.1 L250.3,212.6 L253.4,213.0 L256.5,213.2 L259.6,213.2 L262.7,212.9 L265.8,212.4 L268.9,211.7 L272.0,210.8 L275.1,209.5 L278.2,208.1 L281.3,206.3 L284.4,204.3 L287.5,201.9 L290.6,199.3 L293.7,196.3 L296.8,193.0 L299.9,189.3 L303.0,185.3 L306.1,180.9 L309.2,176.1 L312.3,170.9 L315.4,165.4 L318.5,159.4 L321.6,152.9 L324.7,146.0 L327.8,138.7 L330.9,130.9 L334.0,122.6 L337.1,113.8 L340.2,104.5 L343.3,94.6 L346.4,84.3 L349.5,73.3 L352.6,61.8 L355.7,49.7 L358.8,37.0 L361.9,23.7 \" stroke=\"rgb( 0, 0, 255)\"/>\n",
1354 "\t<path d=\"M52.0,101.9 L55.1,102.0 L58.2,102.2 L61.3,102.5 L64.4,102.8 L67.5,103.3 L70.6,103.9 L73.7,104.5 L76.8,105.2 L79.9,106.1 L83.0,107.0 L86.1,108.0 L89.2,109.1 L92.3,110.3 L95.4,111.6 L98.5,112.9 L101.6,114.4 L104.7,115.9 L107.8,117.5 L110.9,119.2 L114.0,120.9 L117.1,122.8 L120.2,124.7 L123.3,126.6 L126.4,128.7 L129.5,130.8 L132.6,132.9 L135.7,135.2 L138.8,137.4 L141.9,139.8 L145.0,142.1 L148.1,144.5 L151.2,147.0 L154.3,149.5 L157.4,152.0 L160.5,154.5 L163.6,157.1 L166.7,159.6 L169.8,162.2 L172.9,164.8 L176.0,167.4 L179.1,170.0 L182.2,172.5 L185.3,175.1 L188.4,177.6 L191.5,180.1 L194.6,182.6 L197.7,185.0 L200.8,187.4 L203.9,189.7 L207.0,192.0 L210.0,194.1 L213.1,196.2 L216.2,198.3 L219.3,200.2 L222.4,202.0 L225.5,203.8 L228.6,205.4 L231.7,206.8 L234.8,208.2 L237.9,209.4 L241.0,210.5 L244.1,211.4 L247.2,212.1 L250.3,212.6 L253.4,213.0 L256.5,213.2 L259.6,213.2 L262.7,212.9 L265.8,212.4 L268.9,211.7 L272.0,210.8 L275.1,209.5 L278.2,208.1 L281.3,206.3 L284.4,204.3 L287.5,201.9 L290.6,199.3 L293.7,196.3 L296.8,193.0 L299.9,189.3 L303.0,185.3 L306.1,180.9 L309.2,176.1 L312.3,170.9 L315.4,165.4 L318.5,159.4 L321.6,152.9 L324.7,146.0 L327.8,138.7 L330.9,130.9 L334.0,122.6 L337.1,113.8 L340.2,104.5 L343.3,94.6 L346.4,84.3 L349.5,73.3 L352.6,61.8 L355.7,49.7 L358.8,37.0 L361.9,23.7 \" stroke=\"rgb( 0, 0, 255)\"/>\n",
1355 "</g>\n",
1355 "</g>\n",
1356 "\t</a>\n",
1356 "\t</a>\n",
1357 "<g style=\"fill:none; color:black; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1357 "<g style=\"fill:none; color:black; stroke:currentColor; stroke-width:0.50; stroke-linecap:butt; stroke-linejoin:miter\">\n",
1358 "</g>\n",
1358 "</g>\n",
1359 "</svg>"
1359 "</svg>"
1360 ]
1360 ]
1361 }
1361 }
1362 ],
1362 ],
1363 "prompt_number": 118
1363 "prompt_number": 118
1364 },
1364 },
1365 {
1365 {
1366 "cell_type": "markdown",
1366 "cell_type": "markdown",
1367 "metadata": {},
1367 "metadata": {},
1368 "source": [
1368 "source": [
1369 "The plot size is adjusted using the `-s` flag:"
1369 "The plot size is adjusted using the `-s` flag:"
1370 ]
1370 ]
1371 },
1371 },
1372 {
1372 {
1373 "cell_type": "code",
1373 "cell_type": "code",
1374 "collapsed": false,
1374 "collapsed": false,
1375 "input": [
1375 "input": [
1376 "%%octave -s 500,500\n",
1376 "%%octave -s 500,500\n",
1377 "\n",
1377 "\n",
1378 "# butterworth filter, order 2, cutoff pi/2 radians\n",
1378 "# butterworth filter, order 2, cutoff pi/2 radians\n",
1379 "b = [0.292893218813452 0.585786437626905 0.292893218813452];\n",
1379 "b = [0.292893218813452 0.585786437626905 0.292893218813452];\n",
1380 "a = [1 0 0.171572875253810];\n",
1380 "a = [1 0 0.171572875253810];\n",
1381 "freqz(b, a, 32);"
1381 "freqz(b, a, 32);"
1382 ],
1382 ],
1383 "language": "python",
1383 "language": "python",
1384 "metadata": {},
1384 "metadata": {},
1385 "outputs": [
1385 "outputs": [
1386 {
1386 {
1387 "output_type": "display_data",
1387 "output_type": "display_data",
1388 "png": "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\nFaCsDL6+YG8PPJfzQBBeyMN3p7W1VSLekZa1Hb2iZtw4CAqCsLDa6GhoboavvoKICOC8GCVqRs7n\nLFmv2JCH4F5WViYR70jL2o5esXnpdJg/H7Zvh7g40NSEHTsgMhJSUoDFEq1XhK2jV+zgmDuCyAAE\nATduwB9/QEcH6OvD3Lkwbpyk+4S8irQFIhxzRxAZgEL5Z2i+qQny8uD4cejshGnTwMMDZ80jbwCD\nO4LIGFpasGQJAACbDSUlsHs3NDWBvj4sXgxjx0q6c4jUIA9j7vn5+RLxjrSs7eiVNq+CAtjaQmQk\nxMWBlxf8+it89RXEx0NJiWi9wmWkecWGPIy5R0ZG7ty5U/xeucnajl558ra1QU4OkJMM3nsP3NzA\nwEAcXoGRGy+OuQsfOp0uEe9Iy9qOXpnwqqnB4sWweDEAAIsFRUVQUQHt7TB+PPj4/PMerNC9AjPS\nvGJDHoI7giBvREcHlix5MUBfVQVZWVBVBQQB06aBlxcMtiIfItvIw5j7oAu+i4hz586hF72y4jUx\ngaAgiIuDmBjQ0oLvvoOYGNi9G27cgP5+EXoHZaR5xYY83Ll3dHRIxDvSsrajVz68NBq4uoKrKwBA\nRwdcugTffAP9/XDz5hgGA2bOBCUlkfoHIq+fs8SRhweq0vYcA0FkkefP4fJl+OsvaG8HbW2YMwem\nTMHFbYaAtAUiIf/T1dfXr1u3zs7OTkVFhUKh1NTUcNfm5uZSXmXAMw0Wi7VixQotLS0Gg+Hl5VVZ\nWSnc7iEI8jZUVcHNDb78EuLiIDAQbt+GrVshJgYOHYI7dyTdOWToCHlYpqqqKj09ffr06XZ2dgUF\nBW88JiEhwfDlqqbKXK/W9fb2enh4sFis+Ph4BoMRGxvr7OxcVlamq6sr3E4iCMIbfX0IDHyx/ewZ\n/Pe/kJEBfX1ApcKMGTBrFqioSLR/CD8IN/cHm80mNxITEwGgurqauzYnJwcAbt68+cZzU1NTASA/\nP58sPnr0iEqlbtiwYVCpra3tsDotKHKTtR296OXT295O5OQQ27YRGzcSGzcSP/9MPHkiDq8oELpX\n2jIxiWrM/dtvvw0NDa2urjY2NubszM3NdXd3v3nzpomJCTluw32Kn5/flStX6urqOHvmzZt39+7d\nQSfDSNtQF4KMBNrb4dIluHwZWlpAWRlsbMDeHoyMJN0tySFtgUgCs2UcHBxaW1vpdLqnp+euXbtM\n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\n3r33339fXV3dxsampKREQ0PD2NgYAFpaWkpLS52cnMjDioqKrK2tyUuoqalpaWmxsbEhqzIzMxcs\nWEBuD2ghIyNDWVl5OC0I1oeKigrSK5Sr4L8FgiBIr9A/Sd4t1NTUkF6hf5K8WygsLFRWVhb1v+br\nLWRnZysrK4vzG0W2kJ2d3dnZKc5vFNlCdnZ2ZWWlOL9RZAvZ2dnnzp0bUgslJSUPHz58PcKQ25Ja\nmP6tEIJy+fLlt7XT1dXl6emprq7+999/c+8fP368p6cn956IiAgKhdLR0TFoLYIgCMI/gt+5W1hY\nFBcXv76/p6fnww8/vHjx4h9//DFlypQBp1y9epV7T3l5uYmJiYqKyqC1CIIgCP8IPuaupqbmwAW5\ns6+vb9myZXl5eVlZWXZ2dgNO8fX1raurKyoqIot1dXV5eXmcn0W8axEEQRD+EfJ67p988smBAweC\ngoLc3d05O83MzMhBrt7eXltb26dPn27fvl1VVTU2NrahoaG0tFRPT2/QWgRBEGQICHeUZ8BcRpLg\n4GDOAY8fPw4ICNDQ0KDT6R4eHhUVFdyn865FEARB+EQeMjEhCIIgA8BVIREEQeQQDO4IgiByCAZ3\nBEEQOQSDO4IgiByCwR1BEEQOweCOIAgih8hwcBdDTj7+FfX19evWrbOzs1NRUaFQKDU1NeLxDprX\nUETeixcv+vj4jB07lkaj6enp+fr6Dlg6QkRebvz8/CgUyscffywGb25uLuVVhrNK1FCv9+zZs46O\njgwGQ11d3c7OjvMWt+i8CxcupLzGjBkzRO0FgKKiIldX13feeWf06NHTp08/fvy4YNKheouLi52c\nnOh0uqam5rJlyzhZKGQYSU+0F5Cenh5ra2s9Pb0DBw6kp6dbWVnp6Og8fvxYUori4mIdHR1vb28y\n2Uh1dbV4vE5OTjY2Nlu3bk1NTY2MjKTT6e+9996zZ89E7T169OiHH364c+fO1NTUuLg4ExMTKpU6\nYJ04UXg5ZGZmamlpUanUjz76SADpUL05OTkAkJCQkPGS06dPi8FLEMS+ffsAwN3dPTExMTk5OTg4\n+MSJE6L2Xrp0KYOLuLg4AIiKihK19+rVq1Qqddq0aWlpaSdPniRXC09LSxO196+//lJSUpoxY8ax\nY8d+/PFHQ0NDMzOztrY2AbzSg6wG99TUVADIz88ni48ePaJSqRs2bJCUgs1mkxuJiYnDDO5D8t6+\n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\nY2RHRMr/A5YdmP24XbLsAAAAAElFTkSuQmCC\n"
1388 "png": "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\nFaCsDL6+YG8PPJfzQBBeyMN3p7W1VSLekZa1Hb2iZtw4CAqCsLDa6GhoboavvoKICOC8GCVqRs7n\nLFmv2JCH4F5WViYR70jL2o5esXnpdJg/H7Zvh7g40NSEHTsgMhJSUoDFEq1XhK2jV+zgmDuCyAAE\nATduwB9/QEcH6OvD3Lkwbpyk+4S8irQFIhxzRxAZgEL5Z2i+qQny8uD4cejshGnTwMMDZ80jbwCD\nO4LIGFpasGQJAACbDSUlsHs3NDWBvj4sXgxjx0q6c4jUIA9j7vn5+RLxjrSs7eiVNq+CAtjaQmQk\nxMWBlxf8+it89RXEx0NJiWi9wmWkecWGPIy5R0ZG7ty5U/xeucnajl558ra1QU4OkJMM3nsP3NzA\nwEAcXoGRGy+OuQsfOp0uEe9Iy9qOXpnwqqnB4sWweDEAAIsFRUVQUQHt7TB+PPj4/PMerNC9AjPS\nvGJDHoI7giBvREcHlix5MUBfVQVZWVBVBQQB06aBlxcMtiIfItvIw5j7oAu+i4hz586hF72y4jUx\ngaAgiIuDmBjQ0oLvvoOYGNi9G27cgP5+EXoHZaR5xYY83Ll3dHRIxDvSsrajVz68NBq4uoKrKwBA\nRwdcugTffAP9/XDz5hgGA2bOBCUlkfoHIq+fs8SRhweq0vYcA0FkkefP4fJl+OsvaG8HbW2YMwem\nTMHFbYaAtAUiIf/T1dfXr1u3zs7OTkVFhUKh1NTUcNfm5uZSXmXAMw0Wi7VixQotLS0Gg+Hl5VVZ\nWSnc7iEI8jZUVcHNDb78EuLiIDAQbt+GrVshJgYOHYI7dyTdOWToCHlYpqqqKj09ffr06XZ2dgUF\nBW88JiEhwfDlqqbKXK/W9fb2enh4sFis+Ph4BoMRGxvr7OxcVlamq6sr3E4iCMIbfX0IDHyx/ewZ\n/Pe/kJEBfX1ApcKMGTBrFqioSLR/CD8IN/cHm80mNxITEwGgurqauzYnJwcAbt68+cZzU1NTASA/\nP58sPnr0iEqlbtiwYVCpra3tsDotKHKTtR296OXT295O5OQQ27YRGzcSGzcSP/9MPHkiDq8oELpX\n2jIxiWrM/dtvvw0NDa2urjY2NubszM3NdXd3v3nzpomJCTluw32Kn5/flStX6urqOHvmzZt39+7d\nQSfDSNtQF4KMBNrb4dIluHwZWlpAWRlsbMDeHoyMJN0tySFtgUgCs2UcHBxaW1vpdLqnp+euXbtM\n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\n3r33339fXV3dxsampKREQ0PD2NgYAFpaWkpLS52cnMjDioqKrK2tyUuoqalpaWmxsbEhqzIzMxcs\nWEBuD2ghIyNDWVl5OC0I1oeKigrSK5Sr4L8FgiBIr9A/Sd4t1NTUkF6hf5K8WygsLFRWVhb1v+br\nLWRnZysrK4vzG0W2kJ2d3dnZKc5vFNlCdnZ2ZWWlOL9RZAvZ2dnnzp0bUgslJSUPHz58PcKQ25Ja\nmP6tEIJy+fLlt7XT1dXl6emprq7+999/c+8fP368p6cn956IiAgKhdLR0TFoLYIgCMI/gt+5W1hY\nFBcXv76/p6fnww8/vHjx4h9//DFlypQBp1y9epV7T3l5uYmJiYqKyqC1CIIgCP8IPuaupqbmwAW5\ns6+vb9myZXl5eVlZWXZ2dgNO8fX1raurKyoqIot1dXV5eXmcn0W8axEEQRD+EfJ67p988smBAweC\ngoLc3d05O83MzMhBrt7eXltb26dPn27fvl1VVTU2NrahoaG0tFRPT2/QWgRBEGQICHeUZ8BcRpLg\n4GDOAY8fPw4ICNDQ0KDT6R4eHhUVFdyn865FEARB+EQeMjEhCIIgA8BVIREEQeQQDO4IgiByCAZ3\nBEEQOQSDO4IgiByCwR1BEEQOweCOIAgih8hwcBdDTj7+FfX19evWrbOzs1NRUaFQKDU1NeLxDprX\nUETeixcv+vj4jB07lkaj6enp+fr6Dlg6QkRebvz8/CgUyscffywGb25uLuVVhrNK1FCv9+zZs46O\njgwGQ11d3c7OjvMWt+i8CxcupLzGjBkzRO0FgKKiIldX13feeWf06NHTp08/fvy4YNKheouLi52c\nnOh0uqam5rJlyzhZKGQYSU+0F5Cenh5ra2s9Pb0DBw6kp6dbWVnp6Og8fvxYUori4mIdHR1vb28y\n2Uh1dbV4vE5OTjY2Nlu3bk1NTY2MjKTT6e+9996zZ89E7T169OiHH364c+fO1NTUuLg4ExMTKpU6\nYJ04UXg5ZGZmamlpUanUjz76SADpUL05OTkAkJCQkPGS06dPi8FLEMS+ffsAwN3dPTExMTk5OTg4\n+MSJE6L2Xrp0KYOLuLg4AIiKihK19+rVq1Qqddq0aWlpaSdPniRXC09LSxO196+//lJSUpoxY8ax\nY8d+/PFHQ0NDMzOztrY2AbzSg6wG99TUVADIz88ni48ePaJSqRs2bJCUgs1mkxuJiYnDDO5D8t6+\n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\nY2RHRMr/A5YdmP24XbLsAAAAAElFTkSuQmCC\n"
1389 }
1389 }
1390 ],
1390 ],
1391 "prompt_number": 119
1391 "prompt_number": 119
1392 },
1392 },
1393 {
1393 {
1394 "cell_type": "code",
1394 "cell_type": "code",
1395 "collapsed": false,
1395 "collapsed": false,
1396 "input": [
1396 "input": [
1397 "%%octave -s 600,200 -f png\n",
1397 "%%octave -s 600,200 -f png\n",
1398 "\n",
1398 "\n",
1399 "subplot(121);\n",
1399 "subplot(121);\n",
1400 "[x, y] = meshgrid(0:0.1:3);\n",
1400 "[x, y] = meshgrid(0:0.1:3);\n",
1401 "r = sin(x - 0.5).^2 + cos(y - 0.5).^2;\n",
1401 "r = sin(x - 0.5).^2 + cos(y - 0.5).^2;\n",
1402 "surf(x, y, r);\n",
1402 "surf(x, y, r);\n",
1403 "\n",
1403 "\n",
1404 "subplot(122);\n",
1404 "subplot(122);\n",
1405 "sombrero()"
1405 "sombrero()"
1406 ],
1406 ],
1407 "language": "python",
1407 "language": "python",
1408 "metadata": {},
1408 "metadata": {},
1409 "outputs": [
1409 "outputs": [
1410 {
1410 {
1411 "output_type": "display_data",
1411 "output_type": "display_data",
1412 "png": "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\nFhMTs2bNmrCwsIiIiA0bzCthiQAAEHhJREFUNtTI10Z1R5jaCNLWKKjuP4gavvI3b94cNGhQYGDg\nj08zWz7+9ebNmwcOHPjBDajAkydPvLy8pk+fXkHmPjExcdu2bWFhYatWrQoPD9fguqIaWkK/Or8N\nYa1QxRBWoPIcQigUxsXFBQYGfnMULJVKk5KSJkyYoGKnlEql4eHh5etU2xBKJBI/P7/yM7DHjx+r\n7iauOm/evFmwYMGECRPkLrUBAQE+Pj7qrfBUprrMzLUUpFUjqO4/hXpBYzKZ7ObNm0FBQX/99ZcG\n1c6qJCIi4psi7IWFhT9mXbRKcnNzw8LCvL29g4OD58yZM2fOnGHDhml8MFol/4Vlj99eoz+a7t27\nm5mZ3bp1a9q0aUlJSampqQKB4N27d2vWrLl165ajo2PXrl0XLlxYPiHfhw8fVqxYUa9ePQqF0rZt\n29DQUCMjI1WuRaFQ/P395a9Jkrx7926NmvrmzZuTJ0/OmjULAJVK3bhxY/lPbWxsFOkeCwsL5Qsp\ntUEikcTHx9+6dSszM7O4uNjc3DwgIKCWdVbg9u3bAFq2bFnhuiNGjLhy5UpsbGznzp2/2Uga7f/f\nNefPn//06dP48eM1285/GXp6egUFBeWP5OfnEwShPLUnQRBdu3bt2rXrmzdvfHx86HR6eHi4np6e\nplq1dOnSOXPmMBgMANOmTftm+ZcvX757927YsGGaaoDq3L9/Pz4+vrCw8P3795aWljNmzPiR6R7l\nj6ykpKQfdsUfz78nMe8/wvr16/39/d+9e9ewYUPVzzIxMTEyMsrIyOjQoQOfz7927Vr5GlJTUw8d\nOsTj8QwNDbOzsyUSiaGhobGxceV4xBohlUqPHj368uVL5Yl579279/XrVzc3txpVvmrVqvj4+LCw\nsFatWtW0YRkZGbGxsRcuXDAxMRk4cKCFhcX69evLDxGU/LbynLHljxgYGFQX+FFdZmZvb+9du3b5\n+PiUr6pJkyatW7cGcOnSJRcXl/37948aNQpA3759jY2NbW1teTze/fv3d+7caWhoeP/+/RqFE/zX\nGDJkSFJSUkZGhuKIi4vLy5cvX79+rXolmZmZe/fuLS0t9fPzMzY2VqMZBQUFt2/fdnV1lb/Ny8tT\nhE/UlOzsbB6PVyH/s2bJz8+/fPnyqVOnhELhiBEjevXqVV1C4Ozs7MDAwPPnzyvSLKudhro6TExM\n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\n"
1412 "png": "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\nFhMTs2bNmrCwsIiIiA0bzCthiQAAEHhJREFUNtTI10Z1R5jaCNLWKKjuP4gavvI3b94cNGhQYGDg\nj08zWz7+9ebNmwcOHPjBDajAkydPvLy8pk+fXkHmPjExcdu2bWFhYatWrQoPD9fguqIaWkK/Or8N\nYa1QxRBWoPIcQigUxsXFBQYGfnMULJVKk5KSJkyYoGKnlEql4eHh5etU2xBKJBI/P7/yM7DHjx+r\n7iauOm/evFmwYMGECRPkLrUBAQE+Pj7qrfBUprrMzLUUpFUjqO4/hXpBYzKZ7ObNm0FBQX/99ZcG\n1c6qJCIi4psi7IWFhT9mXbRKcnNzw8LCvL29g4OD58yZM2fOnGHDhml8MFol/4Vlj99eoz+a7t27\nm5mZ3bp1a9q0aUlJSampqQKB4N27d2vWrLl165ajo2PXrl0XLlxYPiHfhw8fVqxYUa9ePQqF0rZt\n29DQUCMjI1WuRaFQ/P395a9Jkrx7926NmvrmzZuTJ0/OmjULAJVK3bhxY/lPbWxsFOkeCwsL5Qsp\ntUEikcTHx9+6dSszM7O4uNjc3DwgIKCWdVbg9u3bAFq2bFnhuiNGjLhy5UpsbGznzp2/2Uga7f/f\nNefPn//06dP48eM1285/GXp6egUFBeWP5OfnEwShPLUnQRBdu3bt2rXrmzdvfHx86HR6eHi4np6e\nplq1dOnSOXPmMBgMANOmTftm+ZcvX757927YsGGaaoDq3L9/Pz4+vrCw8P3795aWljNmzPiR6R7l\nj6ykpKQfdsUfz78nMe8/wvr16/39/d+9e9ewYUPVzzIxMTEyMsrIyOjQoQOfz7927Vr5GlJTUw8d\nOsTj8QwNDbOzsyUSiaGhobGxceV4xBohlUqPHj368uVL5Yl579279/XrVzc3txpVvmrVqvj4+LCw\nsFatWtW0YRkZGbGxsRcuXDAxMRk4cKCFhcX69evLDxGU/LbynLHljxgYGFQX+FFdZmZvb+9du3b5\n+PiUr6pJkyatW7cGcOnSJRcXl/37948aNQpA3759jY2NbW1teTze/fv3d+7caWhoeP/+/RqFE/zX\nGDJkSFJSUkZGhuKIi4vLy5cvX79+rXolmZmZe/fuLS0t9fPzMzY2VqMZBQUFt2/fdnV1lb/Ny8tT\nhE/UlOzsbB6PVyH/s2bJz8+/fPnyqVOnhELhiBEjevXqVV1C4Ozs7MDAwPPnzyvSLKudhro6TExM\n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\n"
1413 }
1413 }
1414 ],
1414 ],
1415 "prompt_number": 120
1415 "prompt_number": 120
1416 }
1416 }
1417 ],
1417 ],
1418 "metadata": {}
1418 "metadata": {}
1419 }
1419 }
1420 ]
1420 ]
1421 } No newline at end of file
1421 }
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
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