if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
::install("RedeR") BiocManager
7 RedeR Workflow
Instalar o pacote RedeR (caso já tenha instalado, não rodar estas linhas)
7.1 Carregue o pacote RedeR
library(RedeR)
library(igraph)
Este exercício foi feito baseado na vinheta do RedeR. Use-o para tirar dúvidas.
vignette('RedeR')
Inicie o aplicativo RedeR:
# Se sua versão do RedeR for > v. 3.0
::startRedeR()
RedeR
#Se sua versão do RedeR for < 3.0
<- RedPort()
rdp calld(rdp)
Armazene os dados de expressão diferencial ‘ER.limma’ e os dados do interatoma ’hs.inter’em outros objetos
data(ER.limma)
data(hs.inter)
ER.limma
é o resultado de uma análise de expressão diferencial, que veremos adiante nesta disciplina. Basicamente, a análise de expressão visa comparar a expressão de genes em diferentes estados celulares e identificar quais genes tem aumento da expressão e quais genes tem expressão diminuída de uma condição para outra.
Neste experimento, células epiteliais mamárias
foram estimuladas com estrógeno por 3, 6 e 12 horas
. O que buscaremos aqui é a comparação da expressão em uma determinada hora com a hora inicial
(hora 0).
O dataframe ER.limma
possui colunas com os identificadores dos genes (ENTREZ id
e gene symbol
), o fold change
da variação da expressão (valores positivos indicam que o gene está upregulado, enquanto que valores negativos indicam que o gene está downregulado) para cada comparação de tempo, os p-valores
associados a cada inferência e as colunas degenes
, que mostram quais genes estão diferencialmente expressos (1 = gene upregulado, 0 = gene não está diferencialmente expresso, -1 = gene downregulado).
Por exemplo: a coluna ‘logFC.t3’ mostra a mudança na expressão de um determinado gene (as linhas da tabela) da terceira hora com relação à hora 0. A coluna ‘degenes.t3’ mostra qualitativamente se aquele gene em questao é diferencialmente expresso na comparação 3h-0h.
<- ER.limma
dt <- hs.inter gi
Vamos construir subgrafos que representem a expressão dos genes nas comparações 3h-0h, 6h-0h e 12h-0h.
3h
<- subg(g=gi, dat=dt[dt$degenes.t3!=0,], refcol=1)
gt3 <- att.setv(g=gt3, from="Symbol", to="nodeAlias")
gt3 <- att.setv(g=gt3, from="logFC.t3", to="nodeColor", breaks=seq(-2,2,0.4), pal=2) gt3
6h
<- subg(g=gi, dat=dt[dt$degenes.t6!=0,], refcol=1)
gt6 <- att.setv(g=gt6, from="Symbol", to="nodeAlias")
gt6 <- att.setv(g=gt6, from="logFC.t6", to="nodeColor", breaks=seq(-2,2,0.4), pal=2) gt6
12h
<- subg(g=gi, dat=dt[dt$degenes.t12!=0,], refcol=1)
gt12 <- att.setv(g=gt12, from="Symbol", to="nodeAlias")
gt12 <- att.setv(g=gt12, from="logFC.t12", to="nodeColor", breaks=seq(-2,2,0.4), pal=2) gt12
subg()
faz? O que o argumento dat=dt[dt$degenes.t3!=0,]
significa?
A função subg() do pacote RedeR cria subgrafos a partir de um grafo existente, extraindo um subconjunto de nós e conexões com base em critérios específicos. O argumento dat=dt[dt$degenes.t3!=0,] filtra o data frame dt, incluindo apenas as linhas onde a coluna degenes.t3 é diferente de zero (genes diferencialmente expressos).
att.setv()
faz? O que os argumentos g
, from
, to
designam?
A função att.setv()
do pacote RedeR atribui valores a atributos dos vértices (nós) em um grafo. O argumento g
representa o grafo ao qual os atributos serão atribuídos, enquanto from
especifica o nome do atributo a ser modificado e to
define os valores que serão atribuídos a esse atributo para os respectivos nós.
Agora que contruimos os subgráficos, vamos adicioná-los à interface gráfica do RedeR:
# Se a versão do RedeR for > 3.0 a função será addGraphToRedeR()
addGraph(rdp, gt3, gcoord=c(10,25), gscale=20, isNest=TRUE, theme= 'tm1' , zoom=30)
addGraph(rdp, gt6, gcoord=c(20,70), gscale=50, isNest=TRUE, theme= 'tm1' , zoom=30)
addGraph(rdp, gt12, gcoord=c(70,55), gscale=80, isNest=TRUE, theme= 'tm1' , zoom=30)
Vamos construir o subgrafos aninhados, ou seja, vamos sobrepor as séries temporais.
nestNodes(rdp, nodes=V(gt3)$name, parent="N1", theme= 'tm2')
nestNodes(rdp, nodes=V(gt6)$name, parent="N2", theme= 'tm2')
nestNodes(rdp, nodes=V(gt3)$name, parent="N4", theme= 'tm3')
O argumento ‘theme’ determina os temas (‘tm0’,‘tm1’,‘tm2’,‘tm3’,‘tm4’,‘tm5’, ‘tm6’) de apresentação dos ninhos. Experimente mudá-los e rode novamente os comandos acima.
Vamos concatenar as arestas que estão fora dos ninhos.
mergeOutEdges(rdp)
Relaxar a rede
relax(rdp,50,400)
Perceba que temos 3 grandes redes aninhadas: N0, que é um subgrafo mostrando os genes diferencialmente expressos na comparação 3-0h, o N1, que possui os subgrafos das comparações 3-0h e 6h-0h, e a N2 que possui os subgrafos das comparações 3-0h, 6-0h e 12-0h.
Agora vamos adicionar uma legenda:
<- gt3$legNodeColor$scale
scl <- gt3$legNodeColor$legend
leg addLegend.color(rdp, colvec=scl, labvec=leg, title="Downregulated - Upregulated")
Observe a rede formada. O que as cores dos nós representam?
As cores dos nós na rede representam a regulação gênica, onde azul indica genes downregulados e vermelho indica genes upregulados, refletindo sua expressão diferencial.
Para resetar a interface grafica:
resetd(rdp)