2016-10-12 2 views
0

각 프레임의 첫 번째 start_codon 만 찾는 방법. 아래 코드에서 모든 start_codon 위치를 제공합니다.fasta의 첫 번째 ORF 만 찾아서 인쇄하십시오.

DNA = "ACCACACACCATATAATGATATATAGGAAATG" 

print(DNA.find("ATG")) 

인쇄를 15를 인덱싱 참고 : 당신이 DNA 문자열을 가지고 있고 당신은 "ATG"시퀀스의 첫 번째 항목을 찾으려면

from Bio.SeqRecord import SeqRecord 
from Bio import SeqIO 
def test(seq, start, stop): 
    start = ["ATG"] 
    start_codon_index = 0 
    for frame in range(0,3): 
     for i in range(frame, len(seq), 3): 
      current_codon = seq[i:i+3]        
      if current_codon in start: 
       start_codons.append(start_codon_index) 
    return start_codons 

f = open("a.fa","r") 
start = ["ATG"] 
for record in SeqIO.parse(f,"fasta"): 
    seq=record.seq 
    name=record.id 
    start_codons=test(seq, start, stop) 
    print name, start_codons 
+0

무엇이 당신의 질문입니까? – Humbalan

답변

1

, 가장 쉬운 방법은하는 것입니다 파이썬이 경우 0

에서 시작에서 당신은뿐만 아니라 염기 세 쌍둥이를 고려하십시오

DNA = "ACCACACACCATATAATGATATATAGGAAATG" 
for i in range(0, len(DNA), 3): 
    if DNA[i:i+3] == "ATG": 
     print(i) 
     break 

또한 15을 반환합니다.

+0

고맙습니다. 그러나 3 프레임을 고려해야하므로 고맙습니다. 3 프레임을 의미 할 필요가 있습니다. 프레임 1에서 pos0, 프레임 2에서, pos1에서 3 프레임, pos2에서 프레임 3으로 이동합니다. 좋아요, 범위 (0,3)의 프레임에 대해 추가했습니다. 이름 (start1, start2, start3)과 같이 인쇄해야하는 경우 어떻게해야합니까? – user3224522

+0

모든 시작 위치가 필요하다면 'break'를 내리십시오. –

+0

아니요 ... 각 프레임의 시작 위치는 3 개입니다 ... 위의 코드는 모든 위치를 제공합니다. 좋아, 해결 됐어. 감사 – user3224522

관련 문제