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

如何统计Fasta文件中每个物种对应序列的字符'1'数量

Fasta按序列条目统计字符'1'个数方案

你已知的grep -c 1 file只能统计整个文件内包含'1'的行数,无法按单个物种对应的序列维度分组计数,用awk一行命令即可实现需求,同时兼容标准Fasta中单条序列拆分为多行的格式:

awk '/^>/ {
    if (exist_id) print count
    print $0
    exist_id = $0
    count = 0
    next
}
{
    gsub(/[^1]/, "")
    count += length($0)
}
END {print count}' 你的fasta文件路径

命令逻辑说明:

  • 匹配到>开头的序列ID行时:如果已经记录过前一个序列的ID,先打印前一个序列的'1'统计值;接着打印当前ID行,重置计数器为0,跳过后续处理读取下一行
  • 匹配到序列行时:删除该行所有非'1'的字符,剩余字符串的长度就是该行包含'1'的个数,累加到计数器
  • 所有行读取完成后,打印最后一个序列的统计值

用你给出的示例文件运行该命令,输出结果完全符合预期:

>111
5
>102
4

如果你的Fasta文件是严格的「1行ID+1行序列」格式(无多行序列),可以用更简短的命令实现:

paste - - < 你的fasta文件路径 | awk -F '\t' '{print $1; gsub(/[^1]/,"",$2); print length($2)}'

该命令通过paste先将每两行合并为一行(第一列为ID,第二列为序列),再直接统计第二列中'1'的个数即可,写法更简洁,但遇到多行序列的Fasta会统计错误。

内容的提问来源于stack exchange,提问作者Alex galvez morante

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 01:01:00