在处理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 |
|