9/14/2015bchb524 - 2015 - edwards introduction to python bchb524 2015 lecture 4
TRANSCRIPT
9/14/2015 BCHB524 - 2015 - Edwards
Introduction to Python
BCHB5242015
Lecture 4
9/14/2015 BCHB524 - 2015 - Edwards
Outline
Review Homework #1 Notes Control flow: if statement Control flow: for statement Exercises
2
9/14/2015 BCHB524 - 2015 - Edwards
Review
Printing and execution Variables and basic data-types:
integers, floats, strings Arithmetic with, conversion between String characters and chunks, string methods
Functions, using/calling and defining: Use in any expression Parameters as input, return for output Functions calling other functions (oh my!)
If statements – conditional execution
3
Homework #1 Notes
Python programs: Upload .py files Don't paste into comment box Don't paste into your writeup
Writeup: Upload .txt files, Don't paste into comment box Text document preferred
9/14/2015 BCHB524 - 2015 - Edwards 4
Homework #1 Notes
Multiple submissions: OK, but… …I'll ignore all except the last one Make each (re-)submission complete
Grading: Random grading order Comments Grading "curve"
9/14/2015 BCHB524 - 2015 - Edwards 5
Control Flow: if statement
Execution path depends on string in seq. Make sure you change seq to different
values.9/14/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
6
Control Flow: if statement
9/14/2015 BCHB524 - 2015 - Edwards
# The input DNA sequenceseq = 'atggcatgacgttattacgactctgtgtggcgtctgctggg'
# Remove the initial Met codon if it is thereif seq.startswith('atg'): initMet = True newseq = seq[3:]else: initMet = False newseq = seq
# Output the resultsprint "Original sequence:",seqprint "Sequence starts with Met:",initMetprint "Sequence without initial Met:",newseq
7
Control Flow: if statement
9/14/2015 BCHB524 - 2015 - Edwards
# The input DNA sequenceseq = 'atggcatgacgttattacgactctgtgtggcgtctgctggg'
# Remove the initial Met codon if it is thereinitMet = seq.startswith('atg'):if initMet: newseq = seq[3:]else: newseq = seq
# Output the resultsprint "Original sequence:",seqprint "Sequence starts with Met:",initMetprint "Sequence without initial Met:",newseq
8
Control Flow: if statement
9/14/2015 BCHB524 - 2015 - Edwards
# The input DNA sequenceseq = 'atggcatgacgttattacgactctgtgtggcgtctgctggg'
# Remove the initial Met codon if it is thereinitMet = seq.startswith('atg')if initMet: seq = seq[3:]
# Output the resultsprint "Sequence starts with Met:",initMetprint "Sequence without initial Met:",seq
9
Serial if statement
9/14/2015 BCHB524 - 2015 - Edwards
# Determine the complementary nucleotidedef complement(nuc): if nuc == 'A': comp = 'T' if nuc == 'T': comp = 'A' if nuc == 'C': comp = 'G' if nuc == 'G': comp = 'C' return comp
# Use the complement functionprint "The complement of A is",complement('A')print "The complement of T is",complement('T')print "The complement of C is",complement('C')print "The complement of G is",complement('G')
10
Compound if statement
9/14/2015 BCHB524 - 2015 - Edwards
# Determine the complementary nucleotidedef complement(nuc): if nuc == 'A': comp = 'T' elif nuc == 'T': comp = 'A' elif nuc == 'C': comp = 'G' elif nuc == 'G': comp = 'C' else: comp = nuc return comp
# Use the complement functionprint "The complement of A is",complement('A')print "The complement of T is",complement('T')print "The complement of C is",complement('C')print "The complement of G is",complement('G')
11
If statement conditions
Any expression (variable, arithmetic, function call, etc.) that evaluates to True or False
Any expression tested against another expression using: == (equality), != (inequality) < (less than), <= (less than or equal) > (greater than), >= (greater than or equal) in (an element of)
Conditions can be combined using: and, or, not, and parentheses
9/14/2015 BCHB524 - 2015 - Edwards 12
Sequential/Iterative execution
Note use of indentation to define a block!
9/14/2015 BCHB524 - 2015 - Edwards 13
For (each) statements
# Print the numbers 0 through 4for i in range(0,5): print i
# Print the nucleotides in seqseq = 'ATGGCAT'for nuc in seq: print nuc
9/14/2015 BCHB524 - 2015 - Edwards 14
For (each) statements
# Input to programseq = 'AGTAGTTCGCGTAGCTAGCTAGCTATGCG'
# Examine each symbol in seq and count the A'scount = 0for nuc in seq: if nuc == 'A': count = count + 1
# Output the resultprint "Sequence",seq,"contains",count,"A symbols"
9/14/2015 BCHB524 - 2015 - Edwards 15
For (each) statements
# Examine each symbol in seq and count the A'sdef countAs(seq): count = 0 for nuc in seq: if nuc == 'A': count = count + 1 return count
# Input to programinseq = 'AGTAGTTCGCGTAGCTAGCTAGCTATGCG'
# Compute countaCount = countAs(inseq)
# Output the resultprint "Sequence",inseq,"contains",aCount,"A symbols"
9/14/2015 BCHB524 - 2015 - Edwards 16
For (each) statements
# Examine each symbol in seq and count those that match symdef countSym(seq,sym): count = 0 for nuc in seq: if nuc == sym: count = count + 1 return count
# Input to programinseq = 'AGTAGTTCGCGTAGCTAGCTAGCTATGCG'
# Compute countaCount = countSym(inseq,'A')
# Output the resultprint "Sequence",inseq,"contains",aCount,"A symbols"
Exercise 1 Write a Python program to compute the
reverse complement of a codon Use my solution to Homework #1 Exercise #1 as a
starting point Add the “complement” function of this lecture
(slide 12) as provided. Modularize! Place the reverse complement
code in a new function. Call the new function with a variety of codons
Change the complement function to handle upper and lower-case nucleotide symbols. Test your code with upper and lower-case codons.
9/14/2015 BCHB524 - 2015 - Edwards 17
9/14/2015 BCHB524 - 2015 - Edwards 18
Exercise 2 Write a Python program to determine whether or not
a DNA sequence consists of a (integer) number of (perfect) "tandem" repeats. Test it on sequences:
AAAAAAAAAAAAAAAA CACACACACACACAC ATTCGATTCGATTCG GTAGTAGTAGTAGTA TCAGTCACTCACTCAG
Hint: Is the sequence the same as many repetitions of its first character?
Hint: Is the first half of the sequence the same as the second half of the sequence?