summaryrefslogtreecommitdiff
path: root/using_python_modules/script.rst
blob: 9f9568269f19cea56c050b9706b15027e4329efb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
.. Objectives
.. ----------

.. At the end of this tutorial, you will be able to 

.. 1. Execute python scripts from command line.
.. #. Use import in scripts.
.. #. Import scipy and pylab modules
.. #. Use python standard modules and 3rd party modules.


.. Prerequisites
.. -------------

..   1. should have ``pylab`` installed. 
..   #. using plot command interactively.
..   #. embellishing a plot.
..   #. saving plots.
     
.. Author              : Anoop Jacob Thomas <anoop@fossee.in>
   Internal Reviewer   : Puneeth
   External Reviewer   :
   Language Reviewer   : Bhanukiran
   Checklist OK?       : <11-11-2010, Anand, OK> [2010-10-05]


====================
Using Python modules
====================

.. L1

{{{ Show the  first slide containing title, name of the production
team along with the logo of MHRD }}}

.. R1

Hello Friends and Welcome to the spoken tutorial on 
'Using Python Modules'.

.. L2

{{{ switch to objectives slide }}}

.. R2

At the end of this tutorial, you will be able to ,

 1. Execute python scripts from command line.
 #. Use import in scripts.
 #. Import scipy and pylab modules.
 #. Use python standard modules and 3rd party modules.

.. L3

{{{ Switch to the pre-requisite slide }}}

.. R3

Before beginning this tutorial,we would suggest you to complete the 
tutorial on "Using plot interactively", "Embellishing a plot" and 
"Saving plots".

.. L4

{{{ switch to next slide on running python scripts from 
command line }}}

.. R5

Let us create a simple python script to print hello world. Open your
text editor and type the following,

.. L6

{{{ open the text editor and type the following }}}
::

    print "Hello world!"
    print

.. R6

.. R7

Now save this script as ``hello.py``,

.. L7

{{{ save the script as hello.py }}}

.. R8

Start the ipython interpreter

.. L8

{{{ Open the terminal }}}
::

    ipython

.. R9

In the previous tutorials,we have seen how to run a script using 
the IPython interpreter using ``%run``

.. L9
::

    %run -i hello.py

.. R10

but this is not the correct way of running a python
script. 

.. L10

{{{ Close the terminal }}}

.. R11

The correct method is to run it using the Python interpreter. Open the
terminal and navigate to the directory where hello.py is,

.. L11

{{{ open terminal and navigate to directory where hello.py was saved }}}

.. R12

now run the Python script as,

.. L12
::

    python hello.py

.. R13

It executed the script and we got the output ``Hello World!``.

.. L13

.. L14

{{{ switch to next slide }}}
{{{ highlight ``python filename`` syntax on slide while narrating }}}

.. R14

The syntax is ``python space filename``.

.. L15

{{{ switch to next slide, four plot problem }}}

.. R15

Now, we have a four plot problem where we have plotted four plots in a 
single figure. Let us run that script from command line.

.. R16

If you don't have the script, then make one with the following set of 
commands

.. L16

{{{ open the four_plot.py file in text editor and show }}}
{{{ Pause for some time and then continue }}}

.. R17

Now let us run four_plot.py as a python script.

.. L17
::

    python four_plot.py

.. R18

Oops! even though it was supposed to work, it didn't. It gave an error
``linspace()`` is not defined, which means that the function
``linspace()`` is not available in the current name-space.

But if you try to run the same script using ``%run -i four_plot.py``
in your IPython interpreter started with the option ``-pylab`` it will
work, because the ``-pylab`` option does some work for us by importing
the required modules to our name-space when ipython interpreter
starts. And thus we don't have to explicitly import modules.

So now let us try to fix the problem and run the script in command
line,

.. L18

.. L19

{{{ switch to next slide, fix ``linspace`` problem }}}

.. R19

add this line as the first line in the script,

.. L20

{{{ add the line as first line in four_plot.py and save }}}
::

    from scipy import *

.. R20

.. R21

Now let us run the script again,

.. L21
::

    python four_plot.py

.. R22

Now it gave another error -- plot not defined, 

.. L22

.. L23

{{{ switch to next slide, fix ``plot`` problem }}}

.. R23

let us edit the file again and add this line as the 
second line in our script and save it,

.. L24

{{{ add the line as second line in four_plot.py and save }}}
::

    from pylab import *

.. R24

.. R25

And now, run the script,

.. L25

{{{ Switch to the terminal }}}
::

    python four_plot.py

.. R26

Yes! it worked. So what did we do?

We actually imported the required modules using the keyword ``import``.
It could also be done as by using,

.. L26

.. L27

{{{ switch to next slide, better way of fixing }}}
{{{ highlight the required line while narrating }}}

.. R27

    from scipy import linspace

instead of,

    from scipy import *

So in practice it is always good to use function names instead of
asterisk or star. If we use asterisk to import from a particular
module then it will replace any existing functions with the same name
in our name-space.

.. L28

{{{ switch to next slide, Instead of ``*`` }}}

.. R28

So let us modify four_plot.py as,
Hence we delete the first two lines of our code which we had added
and add these lines

.. L29

{{{ Switch to script 'four_plot.py' }}}
{{{ delete the first two lines and add the following }}}
::

    from scipy import linspace, pi, sin
    from pylab import plot, legend, annotate
    from pylab import xlim, ylim, title, show

.. R29

.. R30

Now let us try running the code again as,

.. L30
::

    python four_plot.py

.. R31

It works! In this method we actually imported the functions to the
current name-space.There is one more way of doing it. And that
is,

.. L31

.. L32

{{{ switch to slide 'another fix' }}}
{{{ highlight the required line while narrating }}}

.. R32

Notice that we use ``scipy.pi`` instead of just ``pi`` as in the
previous method, and the functions are called as ``pylab.plot()`` and
``pylab.annotate()`` and not as ``plot()`` and ``annotate()``.

Pause the video here, try out the following exercise and resume the video.

.. L33

{{{ Show slide with exercise 1 }}}

.. R33

 Write a script to plot a sine wave from minus two pi to two pi.
<Pause>
It can solved as,

.. L34

{{{ open sine.py and show it }}}

.. R34

The first line we import the required functions ``linspace()`` ,
``sin()`` and constant ``pi`` from the module scipy. The second and
third line we import the functions ``plot()``, ``legend()``,
``show()``, ``title()``, ``xlabel()`` and ``ylabel()``. And the rest
the code to generate the plot.

.. L35

{{{ Pause for sometime and then continue }}}

.. R35

.. R36

We can run it as,

.. L36

{{{ Switch to the terminal }}}
::

    python sine.py

.. R37

As we can see, we our sine plot.Let us move further in our topic.

.. L37

.. L38

{{{ switch to next slide, What is a module? }}}

.. R38

Until now we have been learning about importing modules, now what is a
module?

A module is simply a file containing Python definitions and
statements. Definitions from a module can be imported into other
modules or into the main module.

.. L39

{{{ switch to next slide, Python standard library }}}

.. R39

Python has a very rich standard library of modules. It is very
extensive, offering a wide range of facilities. Some of the standard
modules are,

for Math: math, random
for Internet access: urllib2, smtplib
for System, Command line arguments: sys
for Operating system interface: os
for regular expressions: re
for compression: gzip, zipfile, tarfile
And there are lot more.

Find more information at Python Library reference,
``http://docs.python.org/library/``

There are a lot of other modules like pylab, scipy, Mayavi, etc which
are not part of the standard python library.

.. L40

{{{ switch to next slide, summary }}}

.. R40

This brings us to the end of this tutorial. In this tutorial, we have
learnt to,

 1. Run scripts from command line, 
 #. Import modules by specifying the module name followed by  
    an asterisk. 
 #. Import only the required functions from modules by specifying 
    the function name.
 #. Use python standard library.

.. L41

{{{Show self assessment questions slide}}}

.. R41

Here are some self assessment questions for you to solve

1. Which among this is correct ? 

   - from scipy import plot
   - from numpy import plot
   - from matplotlib import plot
   - from pylab import plot
   
2. Which among these libraries is part of python standard library ?

   - Mayavi
   - scipy
   - matplotlib
   - urllib2

3. Functions ``xlim()`` and ``ylim()`` can be imported to the current
   name-space as,

   - from pylab import xlim, ylim
   - import pylab
   - from scipy import xlim, ylim
   - import scipy

.. L42

{{{solution of self assessment questions on slide}}}

.. R42

And the answers,

1. The option ``from pylab import plot`` is the correct one, since plot 
   is a function of module module.

2. ``urllib2`` is a part of the python standard library.

3. Functions ``xlim()`` and ``ylim()`` can be imported to the current
   name-space as, ``from pylab import xlim, ylim``.

.. L23

{{{ switch to next slide, thank you slide }}}

.. R43

Hope you have enjoyed this tutorial and found it useful.
Thank you!