Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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