У меня есть файл, который выглядит так (последовательность ДНК в формате fasta):
>sequence_name1
ATCGTGATNNNNNNNNAGTCGATCGGATTCT
>sequence_name2
NNNNATGTNNATGTCCNNNNNNN
Я хочу посчитать длину пробелов, то есть длину N строк. Например, в первой последовательности длина равна 8. Во второй последовательности у меня есть разрыв 4, еще один из 2 и еще один из 7.
Было бы здорово, если бы я мог получить таблицу с плотностью длины промежутка, которая будет указывать, что у меня есть X промежутков, которые имеют длину 1, X имеют длину 2, и так далее:
1 X
2 X
3 X
...
Есть идеи, как это сделать?
Спасибо!
Му
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