R para Biologia

[Texto do prof. Robert McDonnell, professor do curso de Programação em R]

Uma das maiores vantagens de usar o R é o grande número de pacotes especializados disponíveis. Um ótimo lugar para ver estes pacotes, agrupados por área, é a página do CRAN Task Views. Aqui você pode encontrar pacotes R que lidam com tudo, desde Quimiometria até Ambientometria e pacotes que lidam com Tecnologias Web e Pesquisa de Reprodução. Neste post, apresentarei pacotes R na área de Biologia, que na verdade pertencem a várias subáreas no CRAN Task View, visto que existem páginas sobre genética, ensaios clínicos, análise de sobrevivência, filogenética e farmacocinética, por exemplo. Já que a biologia é um campo enorme que requer conhecimentos especializados, vou me concentrar apenas em maneiras simples de visualizar dados desse tipo (visto que não sou biólogo). Também é possível encontrar recursos on-line para lidar com Biologia em R, por exemplo: aqui, aqui e aqui.

Uma maneira visualmente impressionante para apresentar seus dados biológicos é usando o phylopics da página phylopic.org, que disponibiliza imagens de silhuetas. Vamos imaginar que queremos representar graficamente o surto do Zika Vírus. No código a seguir, eu carrego as bibliotecas necessárias (que você precisará instalar com install.packages() caso não as tenha), baixamos a imagem de phylopic.org, simulamos o surto de vírus e o plotamos usando ggplot2. O pacote OutbreakTools irá automaticamente gerar um lote semelhante para você, mas aqui eu decidi adicionar o phylopic, então eu mesmo construí o gráfico.

library(dplyr)
library(tidyr)
library(rphylopic)
library(OutbreakTools)

# baixar imagem
mosquito <- image_data("f538aa99-5c08-4f96-97d9-2e094ef5d84f", 
                       size = "512")[[1]]

# simular surto
set.seed(1)
virus <- simuEpi(N = 100, D = 20, beta = 0.01, 
             makePhylo = TRUE, plot = FALSE)

# plotar gráfico
v <- virus$dynamics %>% 
  gather(category, tally, Susceptible:Recovered)

ggplot(v, aes(x = date, y = tally, group = category, 
              colour = category)) +
  add_phylopic(mosquito, alpha = .3, color = "black") +
  geom_line(size = 1, linetype = 1) + 
  scale_color_manual(values = c("#CD2626", "gold", "#FF7F00")) +
  theme_minimal() +
  theme(axis.title = element_blank())

im1

Esse pacote também torna a plotagem de redes de transmissão muito fáceis:

plot(virus$x, "contacts", main="Transmission tree")

 im2

Conheça mais do curso de Programação em R oferecido pelo IBPAD – Inscrições abertas em São Paulo e no Rio de Janeiro!

Podemos também usar esse método de visualização para representar estatísticas descritivas, como o número de espécies observadas em uma determinada área ao longo de um período de trinta dias. Primeiro vamos simular alguns dados, e então podemos criar gráficos como fizemos acima.

# simular dados 
species <- data_frame(animals = rep(c("tarantula", "tiger", "bear"), 
                                    each = 30),
                      days = c(1:30, 1:30, 1:30),
                      count = c(rnorm(30, mean = 15, sd = 2),
                                rnorm(30, 9, 2),
                                rnorm(30, 30, 2))) %>% 
  mutate(count = ceiling(count))


# baixar imagens
tarantula <- get_image("d780fdc0-311f-4bc5-b4fc-1a45f4206d27", 
                  size = "512")[[1]]

lizard <- get_image("9cae2028-126b-416f-9094-250782c5bc22", 
                    size = "512")[[1]]

moth <- get_image("8229756b-82c3-4a9f-a1c6-e88f958e623e", 
                  size = "512")[[1]]

# plotar gráfico

library(gridExtra) # put plots side by side

plot_1 <- ggplot(species[1:30,], aes(x = days, y = count)) +  
  add_phylopic(tarantula, alpha = 0.5) + 
  theme_minimal() + 
  geom_point()

plot_2 <- ggplot(species[31:60,], aes(x = days, y = count)) +  
  add_phylopic(lizard, color = "palegreen4", alpha = 0.5) + 
  theme_minimal() + 
  geom_point(colour = "palegreen4")

plot_3 <- ggplot(species[61:90,], aes(x = days, y = count)) +  
  add_phylopic(moth, color = "firebrick", alpha = 0.5) + 
  theme_minimal() + 
  geom_point(colour = "firebrick")
  
  
grid.arrange(plot_1, plot_2, plot_3, ncol=3)

 

im3

E pronto! Com algumas linhas de código R, você pode criar visualizações impressionantes para a pesquisa nas Ciências Biológicas.

postrelacionados

Comentários

comments

Deixe um comentário