2017-02-19 10 views
0

私はfasta DNA配列を逆にすることを試みています。私はfasta DNA配列を逆向きにしようとしています

fastafile=open('sequence (3).fasta','r') 
entries=[] 
reverse="" 
sequence=['A','T','G','C','N'] 
for line in fastafile: 
    if not line.startswith('>'): 
     line = line.split() 
     entries.append(line) 
print entries 
for index in range(0,len(entries[::-1])): 
    if index !=sequence: 
     print "this is not a valid nucleotide" 
     break 
    else: 
     if index=='A': 
      reverse+='T' 
     elif index=='T': 
      reverse+='A' 
     elif index=='C': 
      reverse+='G' 
     elif index=='G': 
      reverse+ 'C' 
     elif index=='N': 
      reverse+='N' 
print reverse 

そして、私は出力を得るたびに、このエントリの私のプリントは、それが配列内の項目を持っていることを示している場合でも、有効な塩基ではありません。ここに私のコードです。ここでは、私がenteriesを印刷するときの出力のサンプルです。

[['GCTCCCCTGAGGTTCGGCACCCACACTCCCTTCCCAGGAGCTCGCGATGCAAGAGCCACAGTCAGAGCTC'], ['AATATCGACCCCCCTCTGAGCCAGGAGACATTTTCAGAATTGTGGAACCTGCTTCCTGAAAACAATGTTC'], ['TGTCTTCGGAGCTGTGCCCAGCAGTGGATGAGCTGCTGCTCCCAGAGAGCGTCGTGAACTGGCTAGACGA'] 

この問題をどのように無効にすることができますか?私はちょうど約2ヶ月前にPythonで真剣にプログラミングを始めたので、まだ学習して改善していると付け加えたいと思います。 ありがとうございました!

答えて

1

あなたのループ文は次のようになります。これは、エントリの長さを反復処理するような

for index in range(0,len(entries[::-1])): 

、つまり、0, 1, 2, 3, ..., len(entries)

if index != sequenceを実行すると、実際には整数とリストを比較しています(たとえばif 3 != ['A', 'C', 'T', 'G'])。私はあなたがそれが意味をなさないことが分かると思います。おそらくあなたがしたいことは、配列中のヌクレオチドが有効なヌクレオチドであるかどうかを見ることです、それはsequenceリストにあります。あなたはこのようにそれを行うことができます。

if entries[::-1][index] in sequence # Will be true if the nucleotide at entries[::-1][index] is inside sequence 

私は二つのことを言ってみましょう:

  • まず1、あなたはそれがlen(entries)

  • と同じで、len(entries[::-1])の範囲にする必要はありません

    第二に、さらに重要なのは、バイオインフォマティクス専用の実際のモジュールビルドがあることです。それはBiopythonと呼ばれます。それは特別なオブジェクトと機能を持っています。たとえば、次のようにあなたの問題を解決することができます。

-

from Bio.Seq import Seq 

dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG") 
print dna.reverse_complement() 

出力:CTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT

+0

をご支援いただきありがとうございます。私はbiopythonモジュールの大部分に精通していませんが、seqでは、私の場合のように、入力としてファイルからfastaシーケンスを使用したい場合は、一連のヌクレオチド配列を入力する必要があります。 –

+0

@KachiNwoguあなたはpythonであなたのfastaファイルを読むことができます! –

関連する問題