私はPython 2.6.6を使用していますが、fastq
の読み取りを、file2
で、file1
で重複している(つまり一致しています)を削除しようとしています。ここで私が実装しようとしているコードは次のとおりです。SeqIO.indexによって生成された辞書から項目を削除する
ref_reads = SeqIO.index("file1.fastq", "fastq")
spk_reads = SeqIO.index("file2.fastq", "fastq")
for spk in spk_reads:
if spk in ref_reads:
del ref_reads[spk]
はしかし、私はdel
の私の使用に関連し、このエラーを取得する:
はAttributeError:_IndexedSeqFileDictインスタンスが
です何の属性 '__delitem__' がありません現在の処方を使用してアイテムを削除することは可能ですか? SeqIO.index()
を使用して生成された辞書からアイテムを削除するにはどうすればよいですか?
私も次のことを試してみました:
# import read data
ref_reads = SeqIO.index("main.fastq", "fastq")
spk_reads = SeqIO.index("over.fastq", "fastq")
# note that ref_reads.keys() doesn't return a list but a 'dictionary- keyiterator',
# so we turn it into a set to work with it
ref_keys = set(ref_reads.keys())
spk_keys = set(spk_reads.keys())
# loop to remove overlap reads
for spk in spk_keys:
if spk in ref_keys:
del ref_keys[spk]
# output data
output_handle = open(fname_out, "w")
SeqIO.write(ref_reads[ref_keys], output_handle, "fastq")
output_handle.close()
Thnkあなたに役立つアドバイスをお願いします。最初の解決策は機能しましたが、私が改善しようとしているコードに比べて遅かったです。 2番目のコードブロックに関する追加情報を提供してください。私もfile2.fastqにあるfile1.fastqから読み込みを取り除こうとしています。あなたの2番目の解決策に基づいて、SeqIO.index( "file1.fastq"、 "fastq")からアイテムを削除するという元の問題をもう一度解決するにはどうしたらいいですか?私は最近の試みを反映するために質問を更新しました。 – wa3j
@ wa3j:上記の私の編集を参照してください。 – BioGeek