2016-10-24 15 views
0

現在、DNAの相補鎖を見つけるために、TsをAs、TsをCs、Gsを、GsをCs 。私はこれを行う方法を見つけようとしていますが、プログラムが完全に1文字を返すことはなく、私は方法を見つけたと思いますが、今は実行するたびに行をstrに変換するエラーが表示されます。それがあるべきか、なぜ、ここでのコードは、私が現在持っているのですどこで配置することはできません:あなたはそれだけで文字列を取るDNA.replace()の最初の引数として整数に渡しているstr/intエラーを受け取り、理由を理解できない理由がわからない

#open file with DNA strand 
df = open('dnafile.txt','r') 

#function for finding complementary strand 
def encode(code,DNA): 
    for k in code: 
     DNA = DNA.replace(k,code[k]) 
    print('The complementary strand is: ' + DNA) 

#carrying out function 
code = {ord('A'):'T', ord('T'):'A', ord('G'):'C', ord('C'):'G'} 
DNA = df.read() 
encode(code,DNA) 
+0

['biopython'](http://biopython.org/wiki/Biopython)の使用を検討しましたか?割り当てられたアルファベットでシーケンスを作成したら、['reverse_complement()'](http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc23)メソッドを使用してください。 – MattDMo

答えて

1

を。 ord('A')は、整数を生成し、それはあなたがkとして渡すものです:

DNA = DNA.replace(k, code[k]) 

C->G交換はG->Cによって元に戻すことになるだろう、すなわちことを、あなただけの'A'ord('A')を置き換えることができますが、その後、あなたが新しい問題を抱えています交換またはその逆。

あなたが代わりに str.translate() methodを使用して、ループを削除する必要があります

def encode(code,DNA): 
    DNA = DNA.translate(code) 
    print('The complementary strand is: ' + DNA) 

はまた、あなたの前の質問から重複としてにリンクされたSimultaneous .replace functionality(、そしてあなたが唯一の一部は私のアプローチを実施して表示されますを参照してくださいそこ)。

関連する問題