Harvard:Biophysics 101/2007/Notebook:Michael Wang/2007-2-27: Difference between revisions

From OpenWetWare
Jump to navigationJump to search
(New page: Notes: I've decided to make an orf class that indexes to a list of codon classes. The mutation detection will be built into comparators for the class. It's taking me a bit to figure out e...)
(No difference)

Revision as of 11:19, 27 February 2007

Notes: I've decided to make an orf class that indexes to a list of codon classes. The mutation detection will be built into comparators for the class. It's taking me a bit to figure out exactly how these things all work...

#find all orfs within the sequences
import re
class orf:
    span = (0,0)
    sequence = ""

def findORFS(sequence, startpos=0):
    all_orfs = []
    start = re.compile('AUG')
    stop = re.compile('(UAA|UGA|UAG)')
    all_starts = start.finditer(sequence)
    all_stops = stop.finditer(sequence)
    
    print "starts:"
    all_starts_list = []
    for match in all_starts:
        all_starts_list.append(match.span())
        print match.span()
    print "stops:"
    all_stops_list = []
    for stops in all_stops:
        all_stops_list.append(stops.span())
        print stops.span()
    for start in all_starts_list:
        found = 0
        for stop in all_stops_list:
            print "checking", start[0], "and", stop[0]
            diff = (stop[0]-start[0])
            if ((diff>0) and ((diff%3) == 0)):
                print "orf at:", start[0]," ",stop[1]
                all_orfs.append((start[0],stop[1]))
                found = 1
                break
        if found ==0:
            all_orfs.append((start[0],-1))
        
    print all_orfs
          
teststring = "AUG GGG GGG AAU GAU UAA CGT CGT UAA AGT AUG TTT TTU GUA G"
print teststring
teststring = re.sub("\s+", "", teststring)
print 'chomped:',teststring
findORFS(teststring)
#AUG GGG GGG AAU GAU UAA CGT CGT UAA AGT AUG TTT TTU GUA G
#Find the position of all the start codons


#OK.  I quickly learned that iterators don't reset once you get to the end of them    
#all_starts = first_all_starts
#all_stops = first_all_stops
#Well...apparently you can't copy iterators... Great
#This is wasteful, but I'm going to shove all the objects into a tuple
#Ideally I could instead shove all codons into an orf object, but I don't know how to do that in python...
    

#Sequentially go through each start codon and look for stop codons in fram, otherwise store then entire sequen

#now that I have the span for all starts, and all stops if I want, I can match up normalized distances from the first start
#and pair them up without even looking at the strings again.  But i need to make sure its in a triplet search
orf = re.compile( 'AUG[ATUCG]+?(UAA|UGA|UAG)')
te = orf.finditer(teststring)
print "dammit"
for i in te:
    print "found one"
    print i.group()