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

からのpythonを開始するにはあなたにもヌクレオチドトリプレットを考えてみます。

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

15も返します。

+0

私は3フレーム、つまりフレーム1を意味する必要があるので、それはそれほど簡単ではありません。フレーム1ではpos0、フレーム2ではpos1、フレーム3ではpos2、トリプレットは変化します。 OK、範囲内のフレーム(0,3)に追加しました。名前のように印刷する必要がある場合はどうすればいいですか(start1、start2、start3)? – user3224522

+0

すべての開始位置が必要な場合は、単に 'break'をドロップしてください。 –

+0

いいえ...各フレームの開始位置は3つのみです。 OK、私は解決しました。ありがとう – user3224522

関連する問題