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