# 00a - instalar pacotes CRAN----
#instale apenas caso você ainda não tenha o pacote ----
# DICA: só é preciso instalar cada pacote uma única vez
# lista de pacotes CRAN que você quer garantir instalados
cran_pkgs <- c("pheatmap",
"stringr",
"BiocManager",
"ggseqlogo",
"tidyverse",
"RColorBrewer")
# instala apenas os que não estão presentes
for (pkg in cran_pkgs) {
if (!requireNamespace(pkg, quietly = TRUE)) {
install.packages(pkg)
}
}DNA de vírus: alinhamento e distância
Nota: Este material foi escrito para práticas em R usando o RStudio.
Conceitos fundamentais
Polímeros biológicos como sequências
DNA, RNA e proteínas são polímeros formados por monômeros ordenados:
DNA e RNA: cadeias de nucleotídeos
Proteínas: cadeias de aminoácidos
A ordem dos monômeros codifica informação biológica e determina função e estrutura: a sequência de DNA codifica RNAs e proteínas; a sequência de aminoácidos determina estrutura tridimensional das proteínas e sua atividade; a sequência de nucleotídeos de um RNA, codificador ou não de proteínas, pode determinar regiões de auto pareamentos, que resultam em estruturas secundárias e terciárias com capacidade catalítica, semelhantemente às proteínas.
O formato fasta
O fasta armazena sequências (de DNA, RNA ou proteínas).
Como os nucleotídeos e aminoácidos são moléculas definidas e fácilmente representadas por letras, a International Union of Pure and Applied Chemistry IUPAC padronizou o código de uma letra, que toda a área da Bioinformática de sequências utiliza em suas análises de genética, genômica, transcriptômica, proteômica e outras áras afins.
O arquivo fasta é muito simples, composto por múltiplas linhas que podem ser apenas de 2 tipos:
- Cabeçalho: linha iniciada por > com um identificador único da sequência e, opcionalmente, metadados.
- Sequência: linhas subsequentes com as letras do alfabeto correspondente (aminoácidos ou nucleotídeos).
Exemplo (fasta de DNA):
>seq1 organismo=Homo_sapiens gene=MT-ND1
ATGCCCTCGGCTTCTGGTAATACACCGCGGACATCGGCGTAAAGAGTGGTTAGGAAGTCTTTCAAACTACGGTTACGGAC
ATCGGCGTAAAGAGTGGTTAGGAAGTCTTTCAAACTATACGAATACGGACATCGGCGTAAAGAGTGGTTAGGAAGTCTTT
CAAACTACGGACATCGGCGTAAAGAGTGGTTAGGAAGTCTTTCAAACTAGGCCCAAGTTGATGAACATCGGCGTAAAAAG
TGGTTAGGAACAGAGCTAGATACTAAA
Repositórios de sequências
Muitos Bancos de Dados são dedicados para o armazenamento de sequências de DNA, RNA e proteínas. O principal destes é o NCBI nucleotide. Este banco guarda virtualmente todas sequências biológicas já registradas pela ciência, com livre acesso e possibilidade de download. Todo cientista que realiza algum estudo genético deve depositar os dados genéticos lá, para contribuir para o conhecimento coletivo.
Prática
Vamos conhecer um arquivo fasta? Siga as instruções a seguir no seu Rstudio. Copie, cole e execute os comandos abaixo
Preparativos
Carregando pacotes
Todos pacotes públicos criados para o R são de livre acesso. Qualquer usuário poide baixar e instalar com poucos comandos. Existem vários repositórios de pacotes (packages) e na bioinforática utilizamos práticamente dois:
- CRAN (pacotes “gerais” do R)
Repositório amplo e genérico (estatística, web, gráficos, etc.). Publicação via install.packages(). Ciclo de versões independente entre pacotes; revisão é mais básica e não força integração entre eles. - Bioconductor (instalado/gerenciado via
BiocManager)
Ecossistema focado em bioinformática/ômicas (RNA-seq, ChIP-seq, variantes, anotação, análise de dados de sequenciamento, …). Apresenta larga padronização em formatos de resultados. Possui annotation/data packages (ex.: genomas, bancos de genes) e serviços como AnnotationHub/ExperimentHub. Tem releases semestrais sincronizadas com a versão do R e checagem de compatibilidade entre pacotes, visando reprodutibilidade.
CRAN - Instalando pacotes
Bioconductor - Instalando pacotes
# 00b - instalar pacotes Bioconductor----
#instale apenas caso você ainda não tenha o pacote ----
# DICA: só é preciso instalar cada pacote uma única vez
# lista de pacotes Bioconductor
bio_pkgs <- c("Biostrings", "DECIPHER")
# instala apenas os que faltam
for (pkg in bio_pkgs) {
if (!requireNamespace(pkg, quietly = TRUE)) {
BiocManager::install(pkg, ask = FALSE, update = FALSE)
}
}Carregando pacotes
# 01 - carregando pacotes ----
{
library("tidyverse")
library("Biostrings")
library("stringr")
library("dplyr")
library("DECIPHER")
library("tibble")
library("RColorBrewer")
library("pheatmap")
library("ggseqlogo")
}::: Dica: caso receba alguma mensagem de que o pacote não foi encontrado, você pode instalá-lo com:
install.packages("pacote")::: Dica: Alguns pacotes de bioinformática são fornecidos pelo Bioconductor, e podem ser instalados com o gerenciador de pacotes BiocManager
install.packages("BiocManager")
BiocManager::install("pacote")Definindo seu diretório de trabalho
Para cada projeto, sempre crie uma pasta onde você vai salvar todos arquivos e scripts, assim você mantém seu trabalho sempre organizado. No comando abaixo, coloque dentro das aspas o caminho para o seu diretório de trabalho.
::: Sempre utilize a tecla
TABpara autocompletar os caminhos a partir do ~ ou / (ou ****, caso no windows). Para isso, coloque o cursor (|, a barra onde sua digitação aparece) entre as ” “.
# 02 - diretório de trabalho ----
# verifique onde stamos trabalhando e onde os arquivos estão sendo salvos
getwd()
#caso queira mudar de diretório, você pode usar
# setwd()
#utilize o tab para autocompletar com o cursor entre as aspasObter arquivos
Baixe o arquivo .fasta que utilizaremos.
# 03 - baixar arquivo fasta com sequencias ----
download.file(
"https://raw.githubusercontent.com/heronoh/bioinfo/main/aulas/r/arquivos/seqs_biomed_DNA.fasta",
destfile = "seqs_biomed_DNA.fasta",
mode = "wb", # seguro no Windows/macOS/Linux
method = "libcurl" # segue redirecionamentos HTTPS direitinho
)carregar o .fasta como objeto no R
Agora você vai carregar para o Ambiente (Environment) do R o arquivo que você baixou, o salvando em um objeto. Vamos fazer isso com o pacote Biostrings. O pacote Biostrings é um dos pilares do ecossistema Bioconductor, amplamente usado em bioinformática, genômica e análise de sequências biológicas. Ele fornece estruturas de dados e funções eficientes para representar, manipular e analisar sequências de DNA, RNA e proteínas em R.
# 04 - ler arquivo fasta como objeto no R ----
fasta_seqs <- Biostrings::readDNAStringSet(filepath = "seqs_biomed_DNA.fasta")
fasta_seqsalinhamento de sequências
Vamos explorar esse objeto. As sequências parecem muito diferentes, mas na verdade só estão desorientadas. Como o DNA é dupla fita, você pode usar a informação em qualquer uma das fitas (sempre no sentido 5’ -> 3’) mas, para analisar vários DNAs juntos, é necessário colocar todos na mesma orientação.
O pacote DECIPHER oferece ferramentas para realizar a orientação, alinhamentos e visulização de sequências.
# 05 - alinhamentos ----
### a - orientar seqs ----
# orientar todas sequências na mesma direção (sobrescrevendo o objeto fasta_seqs)
# (se alguma estiver no complemento reverso?)
fasta_seqs <- DECIPHER::OrientNucleotides(fasta_seqs)
DECIPHER::BrowseSeqs(fasta_seqs)
### b - alinhar seqs ----
fasta_seqs_alg <- DECIPHER::AlignSeqs(myXStringSet = fasta_seqs,
refinements = 100,
iterations = 100,
verbose = TRUE)
fasta_seqs_alg
### c - ver seqs ----
#veja seu alinhamento
DECIPHER::BrowseSeqs(fasta_seqs_alg)
# onde começam e terminam as posições compartilhadas entre todos?
# 06 - Core alignment ----
# devemos utilizar apenas a parte comum a todos alinhamentos, jogar o resto fora!
#veja o objeto biostrings
fasta_subseqs_alg <- Biostrings::subseq(fasta_seqs_alg,
start = 1, #substitua pela primeira posição compartilhada
end = 2500) #substitua pela ultima posição compartilhada
DECIPHER::BrowseSeqs(fasta_subseqs_alg)Matriz de distâncias
# 07 - Distâncias ----
### a - calcular a matriz distâncias ----
fasta_seqs_dist <- DECIPHER::DistanceMatrix(myXStringSet = fasta_subseqs_alg,
includeTerminalGaps = FALSE,
correction = "JC",
processors = 20)
# esta é a matriz de distâncias genéticas entre essas sequências
View(fasta_seqs_dist)#Visualizando a matriz de distâncias
# 08 - gráfico de distância ----
# vamos ver como fica a matriz
pheatmap::pheatmap(fasta_seqs_dist,
fontsize = 10,
color = RColorBrewer::brewer.pal(n = 9,name = "Greens"))
## 6 - plotar proporção de bases para uma subsequência (ggseq logo)
### a - selecionar apenas uma pequena região parcialmente conservada# 09 - Gráfico de proporção ----
fasta_sub_char <- Biostrings::subseq(fasta_subseqs_alg,1,99) %>% as.character()
seqs_logo_plot <- ggplot2::ggplot() +
ggseqlogo::geom_logo(data = fasta_sub_char,
method = "probability") +
ggplot2::annotate(geom = "rect",
xmin = 12.5,xmax = 33.5,
ymin = -0.1,ymax = 1.1,
fill = "#3cff00", alpha = 0.25)
seqs_logo_plot
ggplot2::ggsave(filename = "seqs_logo.png",
device = "png",
width = 30, height = 10,
units = "cm")
# Referências ----
# https://www.bioconductor.org/help/course-materials/2016/BioC2016/ConcurrentWorkshops2/Wright/BigBioSeqData.pdf
# https://www.bioconductor.org/packages/release/bioc/vignettes/DECIPHER/inst/doc/DECIPHERing.pdf
# http://www2.decipher.codes/RLessons/RLesson14.html
# https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.12687
# http://www2.decipher.codes/OligoDesign.html
# http://www2.decipher.codes/Bioinformatics/BigBioSeqData/BigBioSeqData2.html
# https://cran.r-project.org/web/packages/ggdendro/vignettes/ggdendro.htmlE por hoje ficamos por aqui!
Voltar para a página inicial