Contagem do comprimento da letra da string

0

Eu tenho um arquivo que se parece com isso (sequência de DNA no formato fasta):

>sequence_name1
ATCGTGATNNNNNNNNAGTCGATCGGATTCT
>sequence_name2
NNNNATGTNNATGTCCNNNNNNN

Eu quero contar o comprimento das lacunas, que é o comprimento de N cordas. Por exemplo, na primeira sequência, o tamanho é 8. Na segunda sequência, tenho um intervalo de 4, outro de 2 e outro de 7.

Seria ótimo se eu conseguisse obter uma tabela com densidade de comprimento de lacuna que seja uma tabela informando que tenho lacunas X com comprimento de 1, X com comprimento de 2 e assim por diante:

1 X
2 X
3 X
...

Alguma ideia de como fazer isso?

Obrigado!

Mu

    
por user236152 04.03.2014 / 11:31

1 resposta

1

Awk OK? Tente algo assim:

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
    
por Scrutinizer 04.03.2014 / 12:52