Подсчитайте длину буквенной строки

У меня есть файл, который выглядит так (последовательность ДНК в формате fasta):

>sequence_name1
ATCGTGATNNNNNNNNAGTCGATCGGATTCT
>sequence_name2
NNNNATGTNNATGTCCNNNNNNN

Я хочу посчитать длину пробелов, то есть длину N строк. Например, в первой последовательности длина равна 8. Во второй последовательности у меня есть разрыв 4, еще один из 2 и еще один из 7.

Было бы здорово, если бы я мог получить таблицу с плотностью длины промежутка, которая будет указывать, что у меня есть X промежутков, которые имеют длину 1, X имеют длину 2, и так далее:

1 X
2 X
3 X
...

Есть идеи, как это сделать?

Спасибо!

Му

0
задан 15.05.2020, 00:53

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
0
ответ дан 15.05.2020, 00:54

Теги

Похожие вопросы