Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
String Slicing
#1
im trying to enter a string into the one_frame function (one_frame("catatgdaftgaatg")
What i am trying to do is return a list ["atgdaf","atg"]. whenever i find "atg" in the string, i want to grab that "atg" and whatever is after that until i reach either "taa" "tga" "tag". This is what i have so far but it only returns ["atg"].
def get_orf(dna_seq):
 
    for x in dna_seq:
        if("taa" in dna_seq or "tag" in dna_seq or "tga" in dna_seq):
            dna_seq=dna_seq.replace("taa","")
            dna_seq=dna_seq.replace("tga","")
            dna_seq=dna_seq.replace("tag","")
            return dna_seq
        else:
            return dna_seq
        
        
def one_frame(dna):
    c=0
    q=3
    dna_list=[]
    dna_string=""
    while(q<=len(dna)):
        dna_string=dna[c:q]
        c=c+3
        q=q+3
        if(dna_string=="atg"):
                dna_list.append(get_orf(dna_string))
Reply
#2
def get_orf(dna):
    idx = max(dna.find("taa"), dna.find("tag"), dna.find("tga"))
    if idx == -1:
        return ""
    else:
        return dna[:idx]

def one_frame(dna):
    i=0
    dna_list = []
    while (i-3 < len(dna)):
        if dna[i:i+3] == "atg":
            dna_list.append("atg")
            dna_list.append(get_orf(dna[i+3:]))
        i += 1
    return dna_list

print(one_frame("catatgdaftgaatg"))
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  slicing and counting words in a string Rudy 11 6,300 Mar-17-2019, 10:46 PM
Last Post: micseydel
  Using a function: splitting, joining, and slicing a string Drone4four 2 4,789 Dec-27-2018, 07:52 AM
Last Post: perfringo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020