Introduction to Python
Genome 559: Introduction to Statistical
     and Computational Genomics
       Prof. James H. Thomas
  If you have your own PC, download and install a
  syntax-highlighting text editor and Python 2.6.6:
   http://www.flos-freeware.ch/notepad2.html
   http://www.python.org/download/releases/2.6.6/
   If you have your own Mac, download Python
   (same site) and TextWrangler:
http://www.barebones.com/products/TextWrangler/download.html
              Why Python?
• Python
  C is much is faster but much harder to
  learn
   – easyand    use.
           to learn
• Java   is somewhat
   – relatively  fast    faster and harder to
  learn   and use.
   – object-oriented
   – widely
• Perl  is a used
              little slower and not as easy to
   – fairly portable
  learn.
    Getting started on the Mac
• Start a terminal session
• Type “python”
• This should start the Python interpreter
  (often called “IDLE”)
> python
Python 2.6.4 (something something)
details something something
Type "help", "copyright", "credits" or "license"
for more information.
>>> print "Hello, world!"
Hello, world!
              The interpreter
• Try printing various things (in your spare time)
  –   Leave off the quotation marks.
  –   Print numbers, letters and combinations.
  –   Print two things, with a comma between.
  –   Enter a mathematical formula.
  –   Leave off the word “print”.
• The interpreter allows you to try things out
  interactively and quickly.
• Use the interpreter to test syntax, or to try
  commands that you’re not sure will work when
  you run your program.
                       Your first program
 • In your terminal, Ctrl-D out of the python interpreter.
 • Type “pwd” to find your present working directory.
 • Open TextWrangler.
 • Create a file containing one line:
    print “hello, world!”
 • Be sure that you end the line with enter.
 • Save the file as “hello.py” in your present working
   directory.
 • In your terminal, type “python hello.py”
                                                                     Notice that, once you
 > python hello.py                                                   save the file with
 hello, world!                                                       “.py” as the
                                                                     extension,
                                                                     WordWrangler
(This tells the computer "use python to run the program hello.py".
                                                                     automatically colors
                                                                     the text according to
Yes, the result is somewhat anticlimactic.)                          the syntax.
                    Objects and types
•   We use the term object to refer to any entity in a python program.
•   Every object has an associated type, which determines the properties
    of the object.
•   Python defines six main types of built-in objects:
                                                                          notice the different
     Number 10 or 2.71828
                                                                            symbols used to
     String “hello”                                                         define each type
     List         [1, 17, 44] or [“pickle”, “apple”, “scallop”]
     Tuple (4, 5) or (“homework”, “exam”)
     Dictionary {“food” : “something you eat”, “lobster” : “an edible arthropod”}
     File          more on this one later…
•   Each type of object has its own properties, which we will learn about in
    the next few weeks.
•   It is also possible to define your own types, comprised of combinations
    of the six base types.
         Literals and variables
• A variable is simply a name for an object.
• For example, we can assign the name “pi” to the
  Number object 3.14159, as follows:
>>> pi = 3.14159
>>> print pi
3.14159
• When we write out the object directly, it is a literal,
  as opposed to when we refer to it by its variable name.
  Above, 3.14159 is a literal, pi is a variable.
      Assignment operator
 >>> pi = 3.14159
The '=' means assign the value 3.14159 to the variable
pi. (it does NOT assert that pi equals 3.14159)
  >>> pi = 3.14159
  >>> pi = -7.2                          you can see where
                                      "variable" comes from -
  >>> print pi                           pi can be changed
  -7.2
         The import command
• Many python functions are available only via
  “packages” that must be imported (other functions
  are always available - called "built-in").
                                        foo and bar mean
>>> print log(10)                        something-or-
Traceback (most recent call last):      other-goes-here
  File foo, line 1, in bar
NameError: name 'log' is not defined
>>> import math
>>> print math.log(10)
2.30258509299
                                       for now don't worry about
>>> print log(10)                      the details of the error
Traceback (most recent call last):     message - just be aware that
                                       this means there is an error
  File foo, line 1, in bar             in your program.
    print log(10)
NameError: name 'log' is not defined
             The command line
• To get information into a program, we can use the
  command line.
• The command line is the text you enter after the
  word “python” when you run a program.
python my-program.py 17
• The zeroth argument is the name of the program file.
• Arguments larger than zero are subsequent space-
  delimited elements of the command line.
         zeroth       first
        argument    argument
Reading command line arguments
Access in your program like this:
import sys                             zeroth
print sys.argv[0]                     argument
print sys.argv[1]                       first
                                      argument
> python my-program.py 17
my-program.py
17
There can be any number of arguments, accessed
by sequential numbers (sys.argv[2] etc).
               Sample problem #1
• Write a program called “print-two-args.py” that reads
  the first two command line arguments after the
  program name, stores their values as variables, and
  then prints them on the same line with a colon
  between.
• Use the python interpreter for quick syntax tests if
  you want.
> python print-two-args.py hello world
hello : world
Hint – to print multiple things on one line, separate them by commas:
>>> print 7, "pickles"
7 pickles
         Solution #1
import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
print arg1, ":", arg2
                Sample problem #2
• Write a program called “add-two-args.py”
  that reads the first two command line
  arguments after the program name, stores
  their values as variables, and then prints their
  sum.
> python add-two-args.py 1 2
3.0
Hint - to read an argument as a decimal number, use the syntax:
foo = float(sys.argv[1])
                                     The technical name for this is "casting" -
or for an integer number:            the argument starts as a string object
bar = int(sys.argv[1])               and is cast to a float or int object.
          Solution #2
import sys
arg1 = float(sys.argv[1])
arg2 = float(sys.argv[2])
print arg1 + arg2
                        notice that this
                   expression gets evaluated
                      first, then printed
            Challenge problems
Write a program called “circle-area.py” that reads the
  first command line argument as the radius of a circle
  and prints the area of the circle.
> python circle-area.py 15.7
774.371173183
Do the same thing but read a second argument as the
  unit type and include the units in your output.
> python circle-area2.py 3.721 cm
43.4979923683 square cm
            Challenge solutions
import sys
radius = float(sys.argv[1])
print 3.1415 * radius * radius
(or slightly better)
import sys
import math
radius = float(sys.argv[1])
print math.pi * radius * radius
import sys                               recall this is how you
import math                              enter a literal string
radius = float(sys.argv[1])
units = sys.argv[2]
print math.pi * radius * radius, "square", units
                Reading
• Chapter 1 of Think Python by Downey.
• Legal free PDF linked on web site.