求助:用Python3统计FASTQ文件中不同Phred碱基质量的碱基数
Python3 统计FASTQ文件碱基质量分布
需要编写Python3程序读取FASTQ文件,统计Phred碱基质量在以下区间的碱基数:0、1-10(含)、11-20、21-30、31-40及40以上。基于你已实现的质量字符解码函数,以下是完整实现:
def decode(c): return ord(c) - 33 # 初始化各区间计数器 count_zero = 0 count_1_10 = 0 count_11_20 = 0 count_21_30 = 0 count_31_40 = 0 count_above_40 = 0 # 替换为你的FASTQ文件路径 fastq_path = "your_file.fastq" with open(fastq_path, 'r') as f: lines = f.readlines() # FASTQ格式:每4行一组,第4行是碱基质量数据 for i in range(3, len(lines), 4): quality_line = lines[i].strip() for c in quality_line: q_score = decode(c) if q_score == 0: count_zero += 1 elif 1 <= q_score <= 10: count_1_10 += 1 elif 11 <= q_score <= 20: count_11_20 += 1 elif 21 <= q_score <= 30: count_21_30 += 1 elif 31 <= q_score <= 40: count_31_40 += 1 elif q_score > 40: count_above_40 += 1 # 按指定格式输出统计结果 print(f"碱基质量为0: {count_zero} 个") print(f"碱基质量1-10: {count_1_10} 个") print(f"碱基质量11-20: {count_11_20} 个") print(f"碱基质量21-30: {count_21_30} 个") print(f"碱基质量31-40: {count_31_40} 个") print(f"碱基质量40以上: {count_above_40} 个")
关键说明
- 替换代码中的
fastq_path为你的FASTQ文件实际路径 - 解码函数采用Phred+33编码标准(当前通用格式),若你的文件使用Phred+64编码,需将
ord(c)-33修改为ord(c)-64 - 程序遵循FASTQ文件结构:每4行作为一组序列数据,第4行是碱基质量信息,遍历该行所有字符完成统计
内容的提问来源于stack exchange,提问作者Victoria
相关产品推荐
相关产品推荐

