fastqファイルからPHREDスコアを取得し、それらをすべて1つのリストに入れてから、そのリストを別の関数に渡すコードを作成しました。それはそのように見えます:
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から情報を取得し、ループを再度実行します。これを行う方法を理解するのに苦労しています。何か案は?