9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

22
9/11/2015 BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3

description

9/11/2015BCHB 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

Transcript of 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

Page 1: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

9/11/2015 BCHB524 - 2015 - Edwards

Introduction to PythonBCHB524

2015Lecture 3

Page 2: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

9/11/2015 BCHB524 - 2015 - Edwards

Outline Review Homework #1 Solutions Functions & Methods Defining new functions Control flow: if statement

2

Page 3: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 4: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 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

Page 5: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 6: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 7: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 8: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 9: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 10: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 11: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 12: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 13: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

Homework Solutions

9/11/2015 BCHB524 - 2015 - Edwards 13

Page 14: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 15: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 16: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 17: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 18: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 19: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 20: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 21: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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

Page 22: 9/11/2015BCHB524 - 2015 - Edwards Introduction to Python BCHB524 2015 Lecture 3.

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