我构建了一些从 fastq 文件中检索 PHRED 分数的代码,将它们全部放入一个列表中,然后将列表传递给另一个函数。它看起来像这样:
def PHRED_get():
temp_scores = []
all_scores = []
fastq_location
print("Building PHRED score bins...")
for seq_record in SeqIO.parse(fastq_location, "fastq"):
temp_scores = seq_record.letter_annotations
temp_scores = temp_scores['phred_quality']
all_scores.append(temp_scores)
all_scores = list(itertools.chain(*all_scores))
score_bin_maker(all_scores)
问题是这个循环会一直持续到所有的 seq_records 都被搜索并检索到相应的 PHRED 分数。为了更加保守 RAM,我希望有一些代码一次读取较少数量的 seq_records(例如 100 个),然后将它们各自的质量分数弹出到我正在进行的 uberlist 中。然后它将从接下来的 100 个 seq_records 中获取信息并再次执行循环。我无法理解如何完成这项工作。有任何想法吗?