我的程序现在有两个功能。
get_orf(dna)它需要一个名为 dna 的字符串作为输入。如果字符串以起始密码子“ATG”开头,则以get_orf3 的倍数搜索任何终止密码子。
如果找到其中之一,则返回 ORF('ATG' 和直到终止密码子的序列)。
orf_List = []
stopCodons = ["TAG", "TAA", "TGA"]
def get_orf(dna):
#checks to see if the first three amino acids are ATG
if dna[:3] == "ATG":
#if the first three are amino acids,
#it checks the dna string in multiples of 3 uisng the range fucntion
for k in range(0, len(dna), 3):
#checking for stop codons in the dna string
if any(s in dna[k:k+3] for s in stopCodons):
#if a stop codon is found, it returns it
return dna[0:k]
#prints No Orf if there are no stop codons found
else:
print("No ORF.")
#prints No Orf if the dna does not start with ATG
else:
print("No ATG IN BEGINNING.")
并且one_frame(dna)采用一个DNA串作为输入。
one_frame以三的倍数从左到右搜索该字符串。当它遇到一个起始密码子“ATG”时,它会调用get_orf从该起始密码子开始(直到结束)的字符串片段以返回一个 ORF。该 ORF 被添加到一个 ORF 列表中,然后该函数在DNA 串到我们刚找到的 ORF 之后的点,并开始寻找下一个 ORF。重复这个过程,直到我们遍历了整个 DNA 串。
def one_frame(dna):
i = 0
while i < len(dna):
for i in range(0, len(dna), 3):
if "ATG" in dna[i:i+3]:
newOrf = get_orf(dna[i:])
orf_List.append(newOrf)
#i don't know how to skip ahead
print(orf_List)
return(orf_List)
当我调用 时one_frame("ATGCCCATGCCCCCCTAG"),我无法弄清楚如何向前跳到找到的 ORF 的最后一个索引,以便我可以继续我的搜索。有什么帮助吗?
使用此代码,它会打印出“ATGCCCATGCCCCCCTAG”和“ATGCCCCCCTAG”。较小的不应打印,因为它在较大的内部。
繁星coding
相关分类