fin = open("ecoli_uti89.txt") dna = "" for line in fin.readlines(): dna += line.strip() print dna[-10:] len(dna) funcs = [] def count_for(dna, letter): c = 0 for x in dna: if x == letter: c += 1 return c funcs.append(count_for) def count_builtin(dna, letter): return dna.count(letter) funcs.append(count_builtin) def count_rec(dna, letter): if len(dna) == 0: return 0 if dna[0] == letter: return 1 + count_rec(dna[1:], letter) else: return count_rec(dna[1:], letter) #funcs.append(count_rec) # Mitchell Sharp: def count_diff(dna, letter): start = len(dna) dna2 = dna.replace(letter, "") end = len(dna2) return start - end funcs.append(count_diff) # Bryan Urban: def count_while(dna, letter): c = 0 num = 0 while(c 0 and a != letter: break return num funcs.append(count_sort) dir(count_for) names = [] timings = [] results = [] import time for f in funcs: t0 = time.clock() results.append(f(dna, "C")) t1 = time.clock() cpu_time = t1 - t0 timings.append(cpu_time) names.append(f.func_name[6:]) timings names results import numpy as np import matplotlib.pyplot as plt %matplotlib inline fig, ax = plt.subplots() ind = np.arange(len(funcs)) width = 0.75 rects1 = ax.bar(ind, timings, width, color="r") ax.set_xticks(ind + width / 2) ax.set_xticklabels(names, rotation="vertical") letters = ["A", "T", "G", "C"] counts = [] for let in letters: counts.append(count_builtin(dna, let)) counts plt.pie(counts, labels=letters)