Entendendo a sopa de letrinha dos formatos de arquivos de exames genéticos: FASTA e FAI

Olá, amigos, como estão? Tranquilos?

Quem está iniciando nos estudos da genômica e da bioinformática muitas vezes se sente perdido com a grande quantidade de formatos de arquivos que existem e o que significa cada um. Há uma grande variedade de formatos, de padronizações e algumas vezes o mesmo formato de arquivo possui vários padrões diferentes (o que geralmente irá gerar mais preocupação para quem está lidando com a bioinformática diretamente).

Vamos começar do mais simples. O arquivo .FASTA, também visto como .FA, .FAS ou .FAA (este último muitas vezes é mais utilizado para sequências de aminoácidos). É um formato cujo propósito é armazenar sequências com um identificador individual.

Um exemplo de arquivo FASTA válido seria:

>SEQUÊNCIA 1 [organism=Homo sapiens]
ATATTATTACGATAGCATA

O identificador é precedido por um sinal de '>' (maior que) e na linha seguinte temos a sequência. É possível que hajam atributos específicos na linha de identificação, o que irá depender do software que utilizará esse arquivo na pipeline. O formato .FASTA é muito utilizado quando é necessário acessar uma sequência genética ou protéica sem a necessidade de dados adicionais no mesmo arquivo. Um exemplo seria apara armazenar um genoma de referência: Teremos um arquivo .FA enorme (na ordem de gigabytes) em que cada sequência irá representar um contig da montagem do genoma (geralmente o contig irá ser equivalente a um cromossomo da espécie, porém é possível também que represente uma região alternativa ou de posicionamento desconhecido no genoma em questão). Não há dados sobre a qualidade do sequenciamento no arquivo FASTA. 

Na genômica aplicada à genética médica, geralmente os arquivos FASTA será utilizado para armazenar o genoma de referência que será utilizado para a pipeline. Caso queira saber mais sobre este tema, eu escrevi uma série de posts a respeito cuja primeira parte você pode acessar aqui. Uma última observação é que os arquivos .FA com nucleotídeos podem ter símbolos definidos pela IUPAC(aqui) que fogem do A,T,C,G. Em geral, para genomas de referência, veremos apenas o símbolo N, que representa que há um nucleotídeo qualquer na posição (seja A, T, C ou G), porém que não foi possível de ser resolvido. 

Os arquivos .fasta terão muitas vezes companheiros chamados de .fai (um padrão que irá se repetir com outros formatos). Este arquivo que acompanha o .fa é um índice que permite maior eficiência ao acessar os dados do arquivo de forma aleatória. Caso o arquivo não seja indexado, é provável que o software que o utilize teria que realizar operações computacionais dispendiosas para acessar qualquer informação. 

O formato do arquivo .fai também pode ser visto em um editor de textos convencional e é organizado em algumas colunas separadas por indentação (aperte a tecla tab uma vez e você irá indentar o seu texto):


Este arquivo se refere ao genoma de referência GRCh38. Observe que existem cinco colunas:
  • Coluna 1 com o nome do contig: o cromossomo 1 seria NC_000001.11
  • Coluna 2 com o número total de bases na sequência do contig
  • Coluna 3 indica em qual byte do arquivo .FA a sequência do contig se inicia
  • Coluna 4 indica quantas bases há por linha no arquivo fasta
  • Coluna 5 indica quantos bytes há por linha no arquivo. 
Aqui é interessante observar que um byte é composto por 8 bits (cada bit é um dígito binário: 0 ou 1) e é possível codificar uma base por byte através de o uso de algum padrão. Muitas vezes o padrão utilizado é o ASCII, que permite codificar 128 diferentes caracteres em um byte. Cada caractere será representado por um número único. Quando trabalhamos com numerações em binário, um conjunto de N bits poderá representar até 2 elevado a N símbolos. Para 8 bits, isso é equivalente a 256 símbolos possíveis. A verdade é que um código ASCII ocupa 7 bits. Em muitas linguagens de programação, o byte tem um bit que representa o sinal (positivo ou negativo) do número, e irá armazenar núemeros de -128 a 127 (lembrando que 0 também conta como um número). 

E por fim, se cada linha tem 80 bases, por que elas também tem 81 bytes? O caractere especial para a quebra de linha também conta, e está no fim de cada uma dessas linhas. Assim, podemos fazer um pequeno cálculo para avaliar se as informações estão batendo. Se iniciamos no byte 65, temos 248956422 bases no contig do cromossomo 1 - isso quer dizer 3.111.956 linhas, sendo a última incompleta com 22 bases e uma quebra de linha. Ou seja, teremos 3.111.956 quebras de linhas e 248.956.422 bases, totalizando 252.068.378 bytes de dados (o equivalente a 252.06 megabytes apenas para o cromossomo 1). O próximo contig se inicia na posição 252.068.560. Há um intervalo de 117 bytes entre os dois. O que há nesses bytes? Para quem está se lembrando bem do formato fasta, esses bits são o conteúdo do identificador do próximo contig.

Um último detalhe interessante é que pode haver uma diferença entre letras maiúsculas e minúsculas no arquivo FASTA (ou seja, a representação dos dados pode ser case sensitive). Não há uma padronização dessa utilização e não faz parte da nomenclatura IUPAC, porém foi popularizado um padrão que é mais comum em genomas de referência por um software chamado repeatmasker (aqui). 

É fato notório que o genoma humano é composto por uma grande quantidade de regiões de baixa complexidade e altamente repetitivas. Algumas delas podem ser resolvidas pelas metodologias de sequenciamento convencionais utilizadas para a compilação do genoma humano até o hg38, outras não. Neste caso, opta-se por fazer um masking (em tradução literal, mascaramento) de regiões de baixa complexidade. O processo de soft masking significa escrever essas repetições em letras minúsculas, enquanto o hard masking envolve substituir os nucleotídeos por N (que significa qualquer nucleotídeo). 

Esse processo de soft masking pode ser especialmente importante para a comparação de homologia entre espécies, por exemplo. Regiões de homopolímero (como um AAAAAAAAAAA) ou de repetição (como um GTGTGTGTGT) podem ser encontradas em diferentes espécies, mas é pouco provável que representem uma homologia. O soft masking pode permitir que as pipelines utilizadas ignorem estas regiões durante a análise. 

Por fim, é interessante lembrar que o formato .FASTA pode ser utilizado para outros tipos de sequências: RNA ou aminoácidos, por exemplo. No caso da representação da sequência de aminoácidos, utilizam-se os símbolos de uma letra da IUPAC (referência). Neste caso, quando um aminoácido não é conhecido, utiliza-se a letra X no lugar do N, que significa asparagina (ou ácido 2-amino-3-carbamoilpropanóico, de acordo com a nomenclatura sistemática). 

Obrigado por terem lido até aqui. Espero que tenha sido proveitoso. Na próxima parte, pretendo abordar sobre formatos utilizados no sequenciamento genômico efetivamente: .FASTQ, .BAM e .BAI - Fiquem de olho para atualizações. 




Comentários

Postagens mais visitadas deste blog

Entendendo o genoma de referência (parte 1)

Entendendo o genoma de referência (Introdução)

O Brasil, a genética e a eugenia: a aquiropodia como um estudo de caso