四种获取fasta序列长度的方法

在处理fasta序列的时候,我们经常需要获取每一条fasta序列的长度。今天小编就跟大家来分享四种获取fasta序列长度的方法。

一、awk

awk '/^>/{if (l!="") print l; print; l=0; next}{l+=length($0)}END{print l}' test.fasta

输出为

>Chr1
15704606
>Chr10
8327059
>Chr11
8696443
>Chr12
7853492
>Chr13
4340075
>Chr14
6288713
>Chr2
9509017
>Chr3
11222275
>Chr4
7647452
>Chr5
7499939
>Chr6
4872821
>Chr7
8973615
>Chr8
8275968
>Chr9
8318069

二、bioawk

conda install bioawk
bioawk -c fastx '{ print $name, length($seq) }' < test.fasta

得到的结果如下:

Chr1    15704606
Chr10   8327059
Chr11   8696443
Chr12   7853492
Chr13   4340075
Chr14   6288713
Chr2    9509017
Chr3    11222275
Chr4    7647452
Chr5    7499939
Chr6    4872821
Chr7    8973615
Chr8    8275968
Chr9    8318069

三、samtools

#生成.fai文件samtools faidx test.fasta#提取前两列cut -f1-2 test.fasta.fai
生成的.fai文件如下,前两列正好就是fasta序列的名字和长度。

.fai文件的每一列的具体含义

第一列 NAME   :   序列的名称,只保留“>”后,第一个空白之前的内容;
第二列 LENGTH:   序列的长度, 单位为bp;
第三列 OFFSET :   第一个碱基的偏移量, 从0开始计数,换行符也统计进行;
第四列 LINEBASES : 除了最后一行外, 其他代表序列的行的碱基数, 单位为bp;
第五列 LINEWIDTH : 行宽, 除了最后一行外, 其他代表序列的行的长度, 包括换行符

三、seqkit

conda install seqkit
seqkit fx2tab --length --name --header-line  test.fasta

参考资料:
四种获取fasta序列长度的方法

你可能感兴趣的:(四种获取fasta序列长度的方法)