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

2022-09-21 11:37:06 浏览数 (1)

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

一、awk

代码语言:javascript复制
awk '/^>/{if (l!="") print l; print; l=0; next}{l =length($0)}END{print l}' test.fasta

输出为

代码语言:javascript复制
>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

代码语言:javascript复制
conda install bioawk
bioawk -c fastx '{ print $name, length($seq) }' < test.fasta

得到的结果如下:

代码语言:javascript复制
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

代码语言:javascript复制
#生成.fai文件
samtools faidx test.fasta
#提取前两列
cut -f1-2 test.fasta.fai

生成的.fai文件如下,前两列正好就是fasta序列的名字和长度。

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

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

三、seqkit

代码语言:javascript复制
conda install seqkit
seqkit fx2tab --length --name --header-line  test.fasta

0 人点赞