Post on 19-Jan-2018
description
9/11/2015 BCHB524 - 2015 - Edwards
Introduction to PythonBCHB524
2015Lecture 3
9/11/2015 BCHB524 - 2015 - Edwards
Outline Review Homework #1 Solutions Functions & Methods Defining new functions Control flow: if statement
2
9/11/2015 BCHB524 - 2015 - Edwards
Outline Review
Hello World (Printing, Execution) Simple Numbers (Variables, Integers) Simple Numbers II (Floats) DNA Sequence (Strings, characters from) DNA Sequence II (String arithmetic, methods)
3
Hello World
Printing, order of execution, comments,blank-lines, syntax errors, various errors
9/11/2015 BCHB524 - 2015 - Edwards
# Output Hello World to the terminal
print "Hello World!"
print "Hello Georgetown!"
print 'Hello Everyone'
4
Simple Numbers
9/11/2015 BCHB524 - 2015 - Edwards
# Program inputcars = 100people_per_car = 4drivers = 30passengers = 90
# Compute the dependent valuescars_not_driven = cars - driverscars_driven = driverscarpool_capacity = cars_driven * people_per_caraverage_people_per_car = ( drivers + passengers ) / cars_drivenpeople_in_last_car = ( drivers + passengers - 1 ) % people_per_car + 1
# Output the resultsprint "There are", cars, "cars available." print "There are only", drivers, "drivers available."print "There will be", cars_not_driven, "empty cars today." print "We can transport", carpool_capacity, "people today." print "We have", passengers, "to carpool today." print "We need to put about", average_people_per_car, "in each car."print "There are", people_in_last_car, "people in the last car."
5
Simple Numbers (Review) Variables (names) to store values Variables to store the result of expressions The variable name itself does not matter, but
should be descriptive Variables must have a value before you use
them Arithmetic operators +, -, *, /, % are available Arithmetic can use variables and values Result of integer division is an integer9/11/2015 BCHB524 - 2015 - Edwards 6
Simple Numbers II
9/11/2015 BCHB524 - 2015 - Edwards
# Program inputcars = 100.0people_per_car = 4.0drivers = 30.0passengers = 80.0
# Compute the dependent valuescars_not_driven = cars - driverscars_driven = driverscarpool_capacity = cars_driven * people_per_caraverage_people_per_car = ( drivers + passengers ) / cars_drivenpeople_in_last_car = ( drivers + passengers - 1 ) % people_per_car + 1
# Output the resultsprint "There are", cars, "cars available." print "There are only", drivers, "drivers available."print "There will be", cars_not_driven, "empty cars today." print "We can transport", carpool_capacity, "people today." print "We have", passengers, "to carpool today." print "We need to put about", average_people_per_car, "in each car."print "There are", people_in_last_car, "people in the last car."
7
Simple Numbers II (Review) Numbers can be fractional (float) or integer
(int). Floats are entered using a decimal place. Variables can store floats or ints Arithmetic operators +, -, *, /, % are available Arithmetic can use variables or values Result of float division is a float Result of arithmetic with mixed floats and ints
is a float.9/11/2015 BCHB524 - 2015 - Edwards 8
DNA Sequence
9/11/2015 BCHB524 - 2015 - Edwards
# DNA is cool!dna_sequence = 'gcatgacgttattacgactctgtgtggcgtctgctggg'
# Compute dependent valuesfirst_nucleotide = dna_sequence[0]last_nucleotide = dna_sequence[-1]first_four_nucs = dna_sequence[0:4]last_ten_nucs = dna_sequence[-10:]sequence_length = len(dna_sequence)
# Output resultsprint "First nucleotide",first_nucleotideprint "Last nucleotide",last_nucleotideprint "First four nucleotides",first_four_nucsprint "Last ten nucleotides",last_ten_nucsprint "Sequence length",sequence_length
9
DNA Sequence (Review) Strings are sequences of symbols (characters) Variables can store strings! (and ints and floats) Access characters from a string stored in a variable using an
index (integer) between [ and ] Positive index from beginning of string 0… Negative index from end of string -1… The index may be stored in a variable The index may be the result of arithmetic
Chunks of the sequence, using [s:e] Chunk starts at index s, ends before index e. If s is missing, start at beginning of string If e is missing, end at end of string.
Function len(…) returns the length of the string
9/11/2015 BCHB524 - 2015 - Edwards 10
DNA Sequence II
9/11/2015 BCHB524 - 2015 - Edwards
# DNA is cool!dna_sequence = 'gcatgacgttattacgactctgtgtggcgtctgctggg'oligo1 = 'ATTCG'oligo2 = 'TCGAT'
# Compute dependent values, using arithmetic and string methodsligated_oligos = oligo1 + oligo2tandem_repeat = oligo1*6polya = 'A'*20in_uppercase_symbols = dna_sequence.upper()NumberOfA = dna_sequence.count('a')PositionOfT = dna_sequence.find('t')rna_sequence = dna_sequence.replace('t','u')
# Output resultsprint "Ligated oligos",ligated_oligosprint "Tandem repeat",tandem_repeat print "Polynucleotide run",polya print "Uppercase",in_uppercase_symbols print "Number of Adenine",NumberOfA print "Position of first Thymine",PositionOfT print "As RNA",rna_sequence
11
DNA Sequence II (Review) Strings can be added (concatenation) Strings can be multiplied by an integer
(concatenated copies) Upper and lower-case characters are not the
same s.find(t) → (integer) position of the string t in
string s, if t is in s. Otherwise, -1. s.count(t) → (integer) count of string t in string s. s.upper() → upper-case version of string s. s.replace(u,v) → string s with string u replaced
by string v. 9/11/2015 BCHB524 - 2015 - Edwards 12
Homework Solutions
9/11/2015 BCHB524 - 2015 - Edwards 13
Conversion Functions
9/11/2015 BCHB524 - 2015 - Edwards
# There are many useful functions built into Python
aString = 'abcdefghijkl'anInteger = 10aFloat = 3.456integerString = '17'floatString = '1.234'
# Conversionprint "anInteger: before", anInteger, "after", float(anInteger)print "aFloat: before", aFloat, "after", int(aFloat)print "integerString: before", integerString, "after", int(integerString)print "floatString: before", floatString, "after", float(floatString)
# Errorsprint "floatString: before", floatString, "after", int(floatString)print "aString: before", aString, "after", int(aString)print "aString: before", aString, "after", float(aString)print "floatString + 1:", floatString + 1print "integerString + 1:", integerString + 1
# Figure out the internal representationprint type(anInteger), repr(anInteger), anIntegerprint type(aFloat), repr(aFloat), aFloatprint type(integerString), repr(integerString), integerStringprint type(floatString), repr(floatString), floatString
14
More Functions
9/11/2015 BCHB524 - 2015 - Edwards
# There are many useful functions built into PythonaString = 'abcdefghijkl'
anInteger = 10aFloat = 3.456negativeInteger = -5negativeFloat = -7.9999
# Mathprint "Absolute value:", abs(negativeInteger)print "Absolute value:", abs(negativeFloat)print "Min", min(anInteger,aFloat,negativeInteger,negativeFloat)print "Max", max(anInteger,aFloat,negativeInteger,negativeFloat)
# String lengthprint len(aString)
# Complicated expressions!print "Also known as 1.0:",abs(-3)*(1/float('3.0'))print "Also known as 5: ",int(float('1.23456'))*5
15
String Methods
9/11/2015 BCHB524 - 2015 - Edwards
# String methods are very useful!seq = 'gcatgacgttattacgactctgtgtggcgtctgctggg'
# A few important string methodsprint "The number of 'a' symbols:",seq.count('a')print "The sequence in uppercase:",seq.upper()print "Does it end with tggg:",seq.endswith('tggg')print "Does it start with atg:",seq.startswith('atg')print "What position is tggg in:",seq.find('tggg')print "After conversion to uppercase?",seq.upper().find('TGGG')
16
Defining New Functions
9/11/2015 BCHB524 - 2015 - Edwards
# Name and describe a small task (no execution!)def helloworld(): print "Hello world"
# Functions may be parameterized by argumentsdef hello(to): print "Hello",to
# Functions can return valuesdef bytwo(x): y = 2*x return y
# Functions can be parameterized by more than one argumentdef rectangle_area(length,height): return length*height
# Continued...
17
Defining New Functions
9/11/2015 BCHB524 - 2015 - Edwards
# Continuation...
# Function execution must occur after its definitionhelloworld()helloworld()hello("Georgetown")hello("everyone")helloworld()
print bytwo(2), bytwo('abcdef'), bytwo(1.23456)x = 3y = 4z = 5print bytwo(x), bytwo(y), bytwo(z)print rectangle_area(x,y)
18
Defining New Functions Saves typing Reduces errors Single change, global effect Conceptual name aids readability
Functions can use other functions!
9/11/2015 BCHB524 - 2015 - Edwards 19
Control Flow: if statement
Execution path depends on string in seq. Make sure you change seq to different
values.9/11/2015 BCHB524 - 2015 - Edwards
# The input DNA sequenceseq = 'atggcatgacgttattacgactctgtgtggcgtctgctggg'
# Remove the initial Met codon if it is thereif seq.startswith('atg'): print "Sequence without initial Met:",seq[3:]else: print "Sequence (no initial Met):",seq
20
Exercises1. Download or copy-and-paste the DNA sequence of the
Anthrax SASP gene from the anthrax_sasp.nuc file in the course data-directory. Treat the provided sequence as the sequence to be translated (no 5' UTR).Write a Python program to print answers to the following questions:
Does the SASP gene start with a Met codon? Does the SASP gene have a frame 1 Met codon? How many nucleotides in the SASP gene? How many amino-acids in the SASP protein? What is the GC content (% G or C nucleotides) of the SASP
gene?
Test your program with other gene sequences.9/11/2015 BCHB524 - 2015 - Edwards 21
9/11/2015 BCHB524 - 2015 - Edwards
Homework 2 Due Wednesday, September 16th. Use only the techniques introduced so far. Make sure you can run the programs
demonstrated in lecture. Submit Exercise 3.1 solution to Blackboard
22