220 likes | 304 Views
Introduction to Python. BCHB524 2013 Lecture 3. Outline. Review Homework #1 Solutions Functions & Methods Defining new functions Control flow: if statement. Outline. Review Hello World (Printing, Execution) Simple Numbers (Variables, Integers) Simple Numbers II (Floats)
E N D
Introduction to Python BCHB5242013Lecture 3 BCHB524 - 2013 - Edwards
Outline • Review • Homework #1 Solutions • Functions & Methods • Defining new functions • Control flow: if statement BCHB524 - 2013 - 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) BCHB524 - 2013 - Edwards
Hello World • Printing, order of execution, comments,blank-lines, syntax errors, various errors # Output Hello World to the terminal print"Hello World!" print"Hello Georgetown!" print'Hello Everyone' BCHB524 - 2013 - Edwards
Simple Numbers # Program input cars = 100 people_per_car = 4 drivers = 30 passengers = 90 # Compute the dependent values cars_not_driven = cars - drivers cars_driven = drivers carpool_capacity = cars_driven * people_per_car average_people_per_car = ( drivers + passengers ) / cars_driven people_in_last_car = ( drivers + passengers - 1 ) % people_per_car + 1 # Output the results print"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." BCHB524 - 2013 - Edwards
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 integer BCHB524 - 2013 - Edwards
Simple Numbers II # Program input cars = 100.0 people_per_car = 4.0 drivers = 30.0 passengers = 80.0 # Compute the dependent values cars_not_driven = cars - drivers cars_driven = drivers carpool_capacity = cars_driven * people_per_car average_people_per_car = ( drivers + passengers ) / cars_driven people_in_last_car = ( drivers + passengers - 1 ) % people_per_car + 1 # Output the results print"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." BCHB524 - 2013 - Edwards
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. BCHB524 - 2013 - Edwards
DNA Sequence # DNA is cool! dna_sequence = 'gcatgacgttattacgactctgtgtggcgtctgctggg' # Compute dependent values first_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 results print"First nucleotide",first_nucleotide print"Last nucleotide",last_nucleotide print"First four nucleotides",first_four_nucs print"Last ten nucleotides",last_ten_nucs print"Sequence length",sequence_length BCHB524 - 2013 - Edwards
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 BCHB524 - 2013 - Edwards
DNA Sequence II # DNA is cool! dna_sequence = 'gcatgacgttattacgactctgtgtggcgtctgctggg' oligo1 = 'ATTCG' oligo2 = 'TCGAT' # Compute dependent values, using arithmetic and string methods ligated_oligos = oligo1 + oligo2 tandem_repeat = oligo1*6 polya = 'A'*20 in_uppercase_symbols = dna_sequence.upper() NumberOfA = dna_sequence.count('a') PositionOfT = dna_sequence.find('t') rna_sequence = dna_sequence.replace('t','u') # Output results print"Ligated oligos",ligated_oligos print"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 BCHB524 - 2013 - Edwards
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. BCHB524 - 2013 - Edwards
Homework Solutions BCHB524 - 2013 - Edwards
Conversion Functions # There are many useful functions built into Python aString = 'abcdefghijkl' anInteger = 10 aFloat = 3.456 integerString = '17' floatString = '1.234' # Conversion print"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) # Errors print"floatString: before", floatString, "after", int(floatString) print"aString: before", aString, "after", int(aString) print"aString: before", aString, "after", float(aString) print"floatString + 1:", floatString + 1 print"integerString + 1:", integerString + 1 # Figure out the internal representation printtype(anInteger), repr(anInteger), anInteger printtype(aFloat), repr(aFloat), aFloat printtype(integerString), repr(integerString), integerString printtype(floatString), repr(floatString), floatString BCHB524 - 2013 - Edwards
More Functions # There are many useful functions built into Python aString = 'abcdefghijkl' anInteger = 10 aFloat = 3.456 negativeInteger = -5 negativeFloat = -7.9999 # Math print"Absolute value:", abs(negativeInteger) print"Absolute value:", abs(negativeFloat) print"Min", min(anInteger,aFloat,negativeInteger,negativeFloat) print"Max", max(anInteger,aFloat,negativeInteger,negativeFloat) # String length printlen(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 BCHB524 - 2013 - Edwards
String Methods # String methods are very useful! seq = 'gcatgacgttattacgactctgtgtggcgtctgctggg' # A few important string methods print"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') BCHB524 - 2013 - Edwards
Defining New Functions # Name and describe a small task (no execution!) defhelloworld(): print"Hello world" # Functions may be parameterized by arguments defhello(to): print"Hello",to # Functions can return values defbytwo(x): y = 2*x return y # Functions can be parameterized by more than one argument defrectangle_area(length,height): return length*height # Continued... BCHB524 - 2013 - Edwards
Defining New Functions # Continuation... # Function execution must occur after its definition helloworld() helloworld() hello("Georgetown") hello("everyone") helloworld() print bytwo(2), bytwo('abcdef'), bytwo(1.23456) x = 3 y = 4 z = 5 print bytwo(x), bytwo(y), bytwo(z) print rectangle_area(x,y) BCHB524 - 2013 - Edwards
Defining New Functions • Saves typing • Reduces errors • Single change, global effect • Conceptual name aids readability • Functions can use other functions! BCHB524 - 2013 - Edwards
Control Flow: if statement • Execution path depends on string in seq. • Make sure you change seq to different values. # The input DNA sequence seq = 'atggcatgacgttattacgactctgtgtggcgtctgctggg' # Remove the initial Met codon if it is there if seq.startswith('atg'): print"Sequence without initial Met:",seq[3:] else: print"Sequence (no initial Met):",seq BCHB524 - 2013 - Edwards
Homework 2 • Due Monday, September 9th. • Complete Rosalind problems 4 and 5. • Submit using Blackboard • Use only the techniques introduced so far. • Make sure you can run the programs demonstrated in lecture. BCHB524 - 2013 - Edwards
Exercise 1 • 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 entire gene. • Write a Python program to print answers 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. BCHB524 - 2013 - Edwards