通过生成器从fastq获取数据

问题描述 投票:1回答:1

我有一个培训任务,我必须阅读并过滤大的fastq文件的'好'读取。它包含一个标题,一个dna字符串,+符号和一些符号(每个dna字符串的质量)。例如:

@hhhhhhhh ATGCGTAGGGG + IIIIIIIIIIIII

我下采样,让代码工作,保存在python字典中。但事实证明原始文件是巨大的,我重写代码给发电机。它确实适用于下采样样本。但我想知道在字典中输出所有数据和过滤是否是一个好主意。这里有人有更好的主意吗?我问,因为我自己这样做。我开始学习python几个月了,我还在学习,但我一个人做。因为这个我在这里寻求提示和帮助而且有时候我会问愚蠢的问题。提前致谢。 Paulo我从Biostar的代码中得到了一些想法:

import sys
import gzip

filename = sys.argv[1]

def parsing_fastq_files(filename):
    with gzip.open(filename, "rb") as infile:
        count_lines = 0
            for line in infile:
            line = line.decode()
            if count_lines % 4 == 0:
                ids = line[1:].strip()
                yield ids
            if count_lines == 1:
                reads = line.rstrip()
                yield reads
        count_lines += 1

total_reads = parsing_fastq_files(filename)
print(next(total_reads))
print(next(total_reads))

我现在需要弄清楚使用'if value.endswith('expression')来过滤数据:'但是如果我使用dict例如,但这是我的疑问,因为键和val的数量。

python bigdata
1个回答
1
投票

由于此培训强制您手动编码,并且您拥有将fastQ作为生成器读取的代码,您现在可以使用任何指标(通过phredscore可能?)来确定读取的质量。您可以将每个“好”读取附加到新文件中,这样如果几乎所有读取结果都很好,那么您的工作内存中就没有太多内容。

写入文件是一个缓慢的操作,所以你可以等到50000个好的序列,然后将它们写入文件。

如果你做了很多生物信息学编程,请查看https://bioinformatics.stackexchange.com/

© www.soinside.com 2019 - 2024. All rights reserved.