计算字母串的长度

计算字母串的长度

我有一个看起来像这样的文件(fasta 格式的 DNA 序列):

>sequence_name1
ATCGTGATNNNNNNNNAGTCGATCGGATTCT
>sequence_name2
NNNNATGTNNATGTCCNNNNNNN

我想计算间隙的长度,即 N 个字符串的长度。例如,在第一个序列中,长度为 8。在第二个序列中,我有一个间隙为 4,另一个间隙为 2,另一个间隙为 7。

如果我能获得一个具有间隙长度密度的表格,那就太好了,该表格表明我有 X 个长度为 1 的间隙,X 个长度为 2 的间隙,等等:

1 X
2 X
3 X
...

知道怎样做吗?

谢谢 !

答案1

Awk 没问题吗?试试下面的方法:

awk -F'[^N]*' '
  !/^>/ {
    for(i=1; i<=NF; i++) {
      g=length($i)
      if(g>m)m=g
      A[g]++
    }
  } 
  END {
    for(i=1; i<=m; i++) print i, A[i]+0
  }
' file

相关内容