You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用Biopython计算FASTA数据集内所有序列的长度

Python实现FASTA序列长度统计(无需Biopython)

核心逻辑说明

  • 逐行读取FASTA文件,区分头部行和序列行
  • 每次遇到头部行时,先输出上一组已统计的序列ID和长度(如果存在的话)
  • 序列统计时自动去除行首尾的空白字符(包括换行符),避免长度统计错误
  • 循环结束后额外输出最后一组序列的统计结果,避免遗漏末尾序列
  • 大文件场景下直接统计长度不需要存储完整序列,内存占用更低,如果需要保留序列内容可以将长度计数替换为字符串拼接,最后取len(seq)即可

完整实现代码

import re
path = '/home/try.txt'
current_header = ''
seq_length = 0

with open(path, 'r') as f:
    for line in f:
        # 去除行尾换行符
        line = line.strip()
        # 跳过空行
        if not line:
            continue
        # 匹配头部行,匹配你的原有实现思路
        if re.match(r'^>', line):
            # 已有上一个header时先输出上一组统计结果
            if current_header:
                print(f"{current_header} {seq_length}")
            # 提取当前header(去掉开头的>符号)
            current_header = line.lstrip('>')
            # 重置序列长度计数器
            seq_length = 0
        else:
            # 累加当前序列行的长度
            seq_length += len(line)
    # 输出最后一组序列的统计结果
    if current_header:
        print(f"{current_header} {seq_length}")

结果验证

针对你给出的示例FASTA文件,运行上述代码输出结果和预期完全一致:

header1 30
header2 10
header3 16

内容的提问来源于stack exchange,提问作者Andrew Swainskeren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:54:04