我有一个培训任务,我必须阅读并过滤大的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的数量。
由于此培训强制您手动编码,并且您拥有将fastQ作为生成器读取的代码,您现在可以使用任何指标(通过phredscore可能?)来确定读取的质量。您可以将每个“好”读取附加到新文件中,这样如果几乎所有读取结果都很好,那么您的工作内存中就没有太多内容。
写入文件是一个缓慢的操作,所以你可以等到50000个好的序列,然后将它们写入文件。
如果你做了很多生物信息学编程,请查看https://bioinformatics.stackexchange.com/。