Extraindo sequências de um FASTA usando o R - lmigueel/Bioinformatica GitHub Wiki

1. Sobre

Extrair sequências em um arquivo FASTA acaba sendo necessário mesmo para aqueles que não são especialistas em Bioinformática. Imagina que você tem o genoma viral e deseja extrair sequencias montadas a partir de uma lista de proteínas/genes de interesse. E, para isso, vamos utilizar o R!

Além disso, vamos verificar algumas opções de manipulações de arquivos FASTA. Um arquivo FASTA é composto por um sinmbolo '>' seguido de uma descrição, e, logo abaixo, a sua sequência, podendo ela ser em DNA ou AA. Por exemplo:

>Seq1
ATATGCAGCGATTCTACTCAGAGCGCAACTCATCACAGCAGCAC
>Seq2
ATCTATATCGGACATCATCTTACTACATCATTCAGCGAGGACTTATCAGCCAGAGC
>Seq3
ATCAGCGACTACTATCACGGCAGCAGCATCATCTCTCAGACGC
>Seq4
ATCTACGAGCAGCGACATTA

2. Instalação

Para tais análises, vamos utilizar o pacote seqinr no R. Você pode instalá-lo diretamente no RStudio.

#install.packages("seqinr")
library("seqinr")

3. Manipulações

Vamos a algumas manipulações e, no final, como extrair sequências de um FASTA. Estou supondo que você quer carregar um arquivo chamado sequencias_genoma.fasta, e ele está no seu diretório atual (verificar com o getwd()).

#carrega o fasta
yeast <- read.fasta(file = "sequencias_genoma.fasta")

Você pode buscar pelo nome indexado da sequência. A sequencia retornada vai estar separa por nucleotídeo, e você pode filtrá-la. Segue abaixo:

#primeira sequencia fasta pelo indexador ou pelo indice 
yeastseq <- getSequence(yeast$Seq1)
yeastseq <- getSequence(yeast['Seq1'])
yeastseq <- yeast[1](/lmigueel/Bioinformatica/wiki/1)

Caso você queira retornar a sequência em uma string diretamente, use:

#Como string
yeastseq2 <- getSequence(yeast$Seq1,as.string = TRUE)
yeastseq2

Agora vamos a algumas manipulações, e vou usar a sequência quebrada por nucletídeo:

#tamanho
length(yeastseq)

#frequencia
table(yeastseq)

#conteudo GC (vindo de yeastseq <- yeast[1](/lmigueel/Bioinformatica/wiki/1))
GC(yeastseq)

#numero de dinucleotideos
count(yeastseq,2)

# subset
yeastseq[c(1:100)]

#procurar o nome das sequencias
getName(yeast)

Agora vamos extrair sequências de um FASTA. Para isso vou criar um arquivo chamado list.txt que contém os IDs de interesse que quero extrair. O header também existe e deixarei como genes. Tomando como base o FASTA na Seção 1, o arquivo list.txt será:

genes
Seq2
Seq4

Here we go:

## Subset de sequencias por uma lista
myfasta <- read.fasta(file = "sequencias_genoma.fasta", seqtype = "DNA",as.string = TRUE, set.attributes = FALSE)
subsetlist <- read.table("list.txt", header=TRUE)

#faz a interseccao entre os nomes no FASTA e sua lista
my_fasta_sub <- myfasta[names(myfasta) %in% subsetlist$genes]

#salva arquivo
write.fasta(sequences = my_fasta_sub, names = names(my_fasta_sub), nbchar = 80, file.out = "subset_list.fasta")