Transcript 1 is last

An Introduction to Python and
Its Use in Bioinformatics
Csc 487/687 Computing for
Bioinformatics
What is Python?



A portable, interpretive, object-oriented
programming language
Elegant syntax
Powerful high-level built-in data types


Numbers, strings, lists, dictionaries
Full set of string operations
Why Python?




Previously used C++
Scripting languages useful for
bioinformatics
Perl is “bioinformatics standard”
Python is more “robust” for larger
software projects
Useful Tutorials

DNA from the Beginning


http://www.dnaftb.org/dnaftb/
Python Tutorial

http://www.python.org/doc/current/tut/tut.html
Python Development OpenSource Software

Python interpreter - will run on windows, you need
to download it in two parts:
1. The actual interpreter and core of python
http://www.python.org/2.3.3/ (get the Python2.3.3.exe file. There is a newer release (2.4.2)
that you can download if you’d prefer.)
2. An integrated development environment for
python called pythonwin, by Mark Hammond
http://starship.python.net/crew/mhammond/win32/
Downloads.html
Python Basics - Comments

Python comments
# line comment

Header comments
#Description of program
#Written by:
#Date created:
#Last Modified:
Python Basics - Variables

Python variables are not “declared”.


To assign a variable, just type: identifier=literal
Identifiers

Have the following restrictions:





Must start with a letter or underscore (_)
Case sensitive
Must consist of only letters, numbers or underscore
Must not be a reserved word
Have the following conventions:


All uppercase letters are used for constants
Variable names are meaningful – thus, often multi-word (but not too
long)



Convention 1: alignment_sequence (align_seq)
Convention 2: AlignmentSequence (AlignSeq)
Python specific conventions (Avoid _)
Numbers

Numbers

Normal Integers –represent whole numbers
Ex: 3, -7, 123, 76

Long Integers – unlimited size
Ex: 9999999999999999999999L

Floating-point – represent numbers with decimal
places
Ex: 1.2, 3.14159,3.14e-10

Octal and hexadecimal numbers
Ex: O177, 0x9ff, Oxff

Complex numbers
Ex: 3+4j, 3.0+4.0j, 3J
Python Basics – arithmetic operations
Operators
Example
y=5; z=3
+ add
x=y+z x
- subract
x=y–z x
* multiply
x=y*z x
/ divide
x=y/z x
% modulus/remainder x = y % z x
=
=
=
=
=
8
2
15
1
2
Python Basics – arithmetic operations
Operators
Example
y=5; z=3
<< shift left
>> shift right
| bitwise or
^ bitwise exclusive or
& bitwise and
** raise to power
x = y << 1
x = y >> 2
x=y|z
x=y^z
x=y&z
x = y ** z
x = 10
x=1
x=7
x=6
x=1
x = 125
Python Basics – Relational and
Logical Operators

Relational operators
==
!=, <>
>
>=
<
<=
equal
equal
not equal
greater than
greater than or
equal
less than
less than or

Logical operators
and
or
not
and
or
not
Python Basics – Relational
Operators

Assume x = 1, y = 4, z = 14
Expression
Value
Interpretation
x<y+z
1
True
y == 2 * x + 3
0
False
z <= x + y
0
False
z>x
1
True
x != y
1
True
Python Basics – Logical
Operators

Assume x = 1, y = 4, z = 14
Expression
Value
Interpretation
x<=1 and y==3
0
False
x<= 1 or y==3
1
True
not (x > 1)
1
True
(not x) > 1
0
False
not (x<=1 or y==3)
0
False
Strings

Enclosed in single or double quotes
Ex: ‘Hello!’ , “Hello!”, “3.5”, “a”, ‘a’

Sequence of characters:
mystring=“hello world!”
mystring[0] -> “h”
mystring[1] -> “e”
mystring[2] -> “l”
mystring[-1] -> “!”
-1 is last,
-2 next to last, etc…
String operations
mystring = “Hello World!”
Expression
Value
Purpose
len(mystring)
12
number of characters in
mystring
“hello”+“world”
“helloworld”
Concatenate strings
“%s world”%“hello”
“hello world”
Format strings (like sprintf)
“world” == “hello”
“world” == “world”
0 or False
1 or True
Test for equality
“a” < “b”
“b” < “a”
1 or True
0 or False
Alphabetical ordering
Strings (2)

slicing:
mystring = “spoon!”
mystring[2:] -> “oon!”
mystring[:3] -> “spo” #note last element is never included!
mystring[1:3]-> “po”

Many useful built-in functions


mystring.upper() -> “SPOON!”
mystring.replace(‘o’, ‘O’) -> “spOOn!”
Strings (3)

“%” operator:
sort of “fill in the blanks” operation:
mystring=“%s has %d marbles” % (“John”,35)
“blanks”
mystring -> “John has 35 marbles”



%s
%d,%i
%f
replace with string
replace with integer
replace with float
Values to put
in blanks
Lists
mylist=[“a”,”b”,3.58,”d”,4,0]
mylist[0]
mylist[2]
a
3.58
Indexing
mylist[-1]
mylist[-2]
0
4
Negative indexing
(counts from end)
mylist[1:4]
[“b”,3.58,”d”]
Slicing (like strings)
“b” in mylist
“e” not in mylist
1 or True
1 or True
mylist.append(8)
[“a”,”b”,3.58,”d”,4,0,8]
Add to end of list
Tuples

Tuples – sequence of values
like lists, but cannot be changed after it
is created
mytuple=(1,”a”,”bc”,3,87.2)
mytuple[2] -> “bc”
Error!
mytuple[1]=“3”

Used when you want to pass several
variables around at once
Dictionaries

Dictionaries – map ‘keys’ to ‘values’
like lists, but indices can be of any type
 Also, keys are in no particular order
 Eg:
mydict={‘b’:3, ’a’:4, 75:2.85}
mydict[‘b’] -> 3
mydict[75] -> 2.85
mydict[‘a’] -> 4

Dictionaries
mydict={“r”:1,”g”:2,”y”:3.5,8.5:8,9:”nine”}
mydict.keys()
['y', 8.5, 'r', 'g', 9]
List of the keys
mydict.values()
[3.5, 8, 1, 2, 'nine']
List of the values
mydict[“y”]
3.5
Value lookup
mydict.has_key(“r”)
True or 1
Check for keys
mydict.update({“a”:75})
{8.5: 8, 'a': 75, 'r': 1, 'g': 2, Add pairs to
'y': 3.5, 9: 'nine'}
dictionary
Dictionaries – other
considerations


Slicing not allowed
Referencing invalid key is an error:
>>> mydict={8.5: 8, 'a': 75, 'r': 1, 'g': 2, 'y':
3.5, 9: 'nine'}
>>> mydict["red"]
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
KeyError: 'red‘
Use mydict.get(“red”) instead, it returns None if
key is not found
Input/Output



Function raw_input() designed to read a line of input
from the user
1 optional argument: string to prompt user
If int or float desired, simply convert string:
int(mystring)->convert to int (if possible)
float(mystring)->convert to float (if possible)
>>> mystr=raw_input("Enter a string:")
Enter a string:Hello World!
>>> mystr
'Hello World!'
Output

Function print


Prints each
argument, followed
by space
After all arguments,
prints newline


Put comma after last
arg to prevent
newline
“add” strings to avoid
spaces
print “a”,”b”,”c”
abc
Newline!
print “a”,”b”,”c”,
No
abc
Newline!
print “a”+”b”+”c”
No
abc
spaces!
Output Example
>>> print "hello","world";print "hello","again"
hello world
hello again
>>> print "hello","world",;print "hello","again"
hello world hello again
>>> print "hello %s world" % "cold and cruel"
hello cold and cruel world
>>> print "hello","cold"+ " " + "and","cruel","world"
hello cold and cruel world
Creating a Python Program

Enter your program in the editor

Notice that the editor has a color coding




Comments
Key words
Etc…
Also notice that it automatically indents


Don’t override!! – this is how python tells when block
statements end!
If doesn’t indent to proper location – indicates bug
Running your Program

To build your program

Under File->Run…


Select No Debugging in the drop-down
window
Fix any errors, then run again
Programming Workshop #1

Write a Python program to compute the
hydrophobicity of an amino acid

Program will prompt
the user for an
amino acid and will
display the
hydrophobicity
A m in o A c id
A
C
D
E
F
G
H
I
K
L
M
N
P
Q
R
S
T
V
W
Y
H y d ro p . V A L U E
1 .8
2 .5
- 3 .5
- 3 .5
2 .8
- 0 .4
- 3 .2
4 .5
- 3 .9
3 .8
1 .9
- 3 .5
- 1 .6
- 3 .5
- 4 .5
- 0 .8
- 0 .7
4 .2
- 0 .9
- 1 .3