首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将fastq信息复制到新的fastq文件

将fastq信息复制到新的fastq文件
EN

Stack Overflow用户
提问于 2014-07-11 09:34:13
回答 1查看 718关注 0票数 1

我正在尝试写一段代码,它将打开一个fasta文件,并从一个不同的fastq文件中提取读取名称(标题)、序列(seq)和质量分数(qual),然后将该fastq信息写入一个新的fastq文件中。然而,我在如何写这最后一部分时遇到了问题(我在代码中有问题的地方加了粗体)。有没有人知道如何写这部分,或者我在哪里可以找到关于如何在python中输入这部分的信息?

到目前为止,我有:

代码语言:javascript
复制
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**
EN

回答 1

Stack Overflow用户

发布于 2014-07-11 11:06:35

除非您有特殊的原因需要自己实现文件解析,否则最好使用SeqIO解析器来处理输入和输出文件。也许如下所示(注意:我以前从未使用过Bio,也没有测试过这段代码):

代码语言:javascript
复制
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')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24688885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档