0

私は、GenBank ファイルと Biopython を使用して GBK ファイルのシーケンス部分から特定の遺伝子のシーケンスを取得するスクリプトを作成しました。これは私の同僚が仕事に使用しています。

新しいデータセットでいくつかの問題が発生し、ダウンロードされた GBK ファイルに配列が含まれていないことが判明しました (これは、NCBI の GenBank Web サイトからダウンロードすると簡単に発生する可能性があります)。を使用すると、エラーをスローする代わりに、Biopython は N の長いシーケンスを返しますrecord.seq[start:end]。その問題を最初から見つけてスクリプトを停止し、エラー メッセージを表示する最も簡単な方法は何ですか?

4

1 に答える 1

0

よし、方法を見つけた。シーケンス内の N を数え、シーケンスの長さと同じ数があるかどうかを確認すると、シーケンスが欠落していることがわかります。

import sys
from Bio import SeqIO    

for seq_record in SeqIO.parse("sequence.gb", "genbank"):
  sequence = seq_record.seq
  if len(sequence) == sequence.count("N"):
    sys.exit("There seems to be no sequence in your GenBank file!")

Bio.Seq.UnknownSeq空のシーケンスは実際のシーケンスではなく であるため、代わりにシーケンスタイプをチェックするソリューションをBio.Seq.Seqお勧めします。誰かがその方向で何かを提案できるとありがたいです。

アップデート

@xbello でもう一度シーケンス タイプを確認してもらいましたが、これも機能するようになりました。

import sys, Bio
from Bio import SeqIO    

for seq_record in SeqIO.parse("sequence.gb", "genbank"):
  sequence = seq_record.seq
  if isinstance(sequence, Bio.Seq.UnknownSeq):
    sys.exit("There seems to be no sequence in your GenBank file!")
于 2014-09-01T11:13:29.323 に答える