This is a test version of Biostars. For the public version, visit https://www.biostars.org.
find ORF in sequence python

Hello everyone. I'm working on Python script that find ORF for a sequence. It runs well only for short sequencece. But when I tries to input much longer sequence it gives me wrong answer(according to this server: https://www.ncbi.nlm.nih.gov/orffinder/) Can anybody find what's the problem with my code?

my code:

def codons(seq):

stops = ["TTA","TGA","TAG"]    
lst1 = [] #List for the stars codons
lst2 = [] #List for the stop codons
start = 0 #The start position of the sequence.
counter = 0 #Counter for 3 optional orfs.
#initializes the lists for 3 optional orfs.
for i in range (3):
    lst1.append([])
    lst2.append([])
#Add to the lists the positions of the start and stop codons.
while (seq and counter < 3):

    for i in range(start,len(seq),3):
        codon = seq[i:i+3] #The codon is 3 nucleotides.
        #print codon+ "\t"
        if(codon == "ATG"): #If the codon is  a start codon.
            lst1[start].append(i+1) #The position of the start codon.

        if(codon in stops): #if the codon is a stop codon.
            lst2[start].append(i+1) #The position of the stop codon.


    start += 1 #promotes the starting position.
    counter += 1 #promotes the counter
print lst1
print "------------------"
print lst2
return lst1,lst2

thanks

sequence

Maybe because you miss ORFs on the reverse strand? Maybe other start codons? (GUG, UUG)

No, that's not the problem. I was checking the results only on the leading strand. And the start codon is only ATG.

It does not look like a problem, but your first stop codon is wrong.

stops = ["TTA","TGA","TAG"]

it should be TAA instead of TTA.

Thank you!! I'v changed it, but it still doesn't give correct results. for example: this sequence from the ncbi: https://www.ncbi.nlm.nih.gov/nuccore/58255/ returns me lists with the positions of the starts and stops codons that are different from the results on the ORF finder.

What's the output of your script and what's the expected output? That might help to find out what your problem is.

Thank you for your treatment - i'v found what was the problem (in the ORFfinder the stop codon position was represent by its end) But I'v to find ORF At least 300 nucleotides in length. The the ORFfinder find 3 ORFs on the leading strand. and my script gives me somehow duplicates. Maybe the problem is at another function- I have to check it.

The indentation of your code is unclear in this post. Try to fix it using four spaces per level, or use a github gist

0 answers

No answers yet.

Log in to answer this question.