我正在尝试写一段代码,它将打开一个fasta文件,并从一个不同的fastq文件中提取读取名称(标题)、序列(seq)和质量分数(qual),然后将该fastq信息写入一个新的fastq文件中。然而,我在如何写这最后一部分时遇到了问题(我在代码中有问题的地方加了粗体)。有没有人知道如何写这部分,或者我在哪里可以找到关于如何在python中输入这部分的信息?
到目前为止,我有:
from sys import argv
from Bio.SeqIO.QualityIO import FastqGeneralIterator
script, merged_seqs, raw_seqs = argv
merged_from_raw = "merged_only.fastq"
merged_names = set()
for line in open(merged_seqs):
if line[0] == ">":
read_name = line.split()[0][1:]
merged_names.add(read_name)
raw_fastq = raw_seqs
temp_handle = open(merged_from_raw, "w")
for title, seq, qual in FastqGeneralIterator(open(raw_fastq)) :
if title in merged_names:
**handle.write() #this is where I don't know how to write what I need in python**发布于 2014-07-11 11:06:35
除非您有特殊的原因需要自己实现文件解析,否则最好使用SeqIO解析器来处理输入和输出文件。也许如下所示(注意:我以前从未使用过Bio,也没有测试过这段代码):
from sys import argv
from Bio import SeqIO
output_filename = 'merged_only.fastq'
merged_seqs, raw_seqs = argv[1:2]
# Get fasta iterator, and read source fastq file into a dict-like object
merged_names = SeqIO.parse(merged_seqs, 'fasta')
source_seqs = SeqIO.index(raw_seqs, 'fastq')
filtered_seqs = (source_seqs[record.id] for record in merged_names if record.id in source_seqs)
SeqIO.write(filtered_seqs, output_filename, 'fastq')https://stackoverflow.com/questions/24688885
复制相似问题