title | author | date | output |
---|---|---|---|
Enriquecimento de Vias: integração de CNVs e Expressão na LMA |
Bruno Rodrigo Assunção |
2024-02-14 |
github_document |
Este é um fluxo de análise para investigar o enriquecimento de vias moleculares para os genes envolvidos em vias biológicas da Leucêmia Mielóide Aguda. Genes os quais nesse conjunto experimental possuem alterações no número de cópias gênicas apresentam correlação estatísticas com a expressão gênicas.
O conjunto de dados utilizados para esta análise parte da experimentação prévia realizada por ASSUNCAO B.R (2023) CNeExp. Deste modo, temos dois data frames para filtragem e anotação de vias.
Estes são:
-
anotação de cnvs e os seus genes de um experimento tcga.
-
correlação entre estes cnvs e expressão gênica.
all_cnvs_exp <- read.delim("C:/Users/bruno/Desktop/cnvs_all_annotated.csv")
chr_correlations <- read.csv("C:/Users/bruno/Desktop/Apêndice A - correlação de spearman entre segmentação (CNVs) expressão de rna (RNASeq).csv")
positive_correlations <- read.csv("C:/Users/bruno/Desktop/positive_correlations.csv")
genesAML <- c("KIT", "KITLG", "GRB2", " SOS","RAS","STAT","PI3","RAF", "JAK","PIP","PKB","MTOR","MEK","MAPK","IKK","BAD","ERK","p7026k","PIM","EBP", "CEBP","PU", "RUNX1", "ETO", "PML","TRIM", "MYL", "PML", "RAR","CSF","GMCSF","PER2","CSF","CD14","CD64","CYC","MYC","DUSP","PPAR","TCF","JUP")
genesAML <- unique(genesAML)
Como esses genes possuem diferentes alelos e assim diferentes nomenclaturas, vamos utilizar um grep para buscar todos os genes na tabela de cnvs, utilizando a lista acima como referência. Deste modo, é possível obter todos os símbolos gênicos.
Utilizamos um loop for() e a função grep() em R
# Loop para pegar as diferentes nomenclaturas para os simbolos dos genes no df
genesAML_new <- NULL
for (i in genesAML) {
selected<- grep(pattern = i,x = all_cnvs_exp$SYMBOL ,value = T)
genesAML_new <- c(genesAML_new, selected)
}
Do modo acima, a nossa lista foi atualizada para todas as variações presentes a partir da nossa lista de entrada. Então, podemos finalmente selecionar os cnvs envolvendo os nossos genes de interesse presentes na tabela de cnvs.
selectedGenesCNVs <- all_cnvs_exp[all_cnvs_exp$SYMBOL %in% genesAML_new,]
selectedGenesCorrelation <- chr_correlations[chr_correlations$gene %in% genesAML,]
selectedGenesCNVs <- selectedGenesCNVs[selectedGenesCNVs$type != "neutral",]
selectedGenesCNVs <- selectedGenesCNVs[selectedGenesCNVs$type != "neutral",]
Primeiro devemos modificar os simbólos de genes para entrez id. Visto que esse é o input esperado pelo pacote reactomePA. Para isso vamos utilizar a função criada localmente symbols_to_entrez_id(), a qual esta depositada no pacote CNeEXP.
Função criada:
symbols_to_entrez_id <-function(input){
library(org.Hs.eg.db) # mudar a forma de carregar essa library
entrez_ids=NULL
for (i in input) {
x <-AnnotationDbi::select(x = org.Hs.eg.db,
keys=i,
keytype = "SYMBOL",
columns = "ENTREZID")
entrez_ids=rbind(entrez_ids, x)}
}
Correlações positivas
inputPosCor <- symbols_to_entrez_id(positive_correlations$gene)
inputPosCor[1:5,]
Correlações Negativas
inputNegCor <- symbols_to_entrez_id(negative_correlations$gene)
library(ReactomePA)
reactomePositiveCorrelations <- enrichPathway(
sort(na.omit(inputPosCor$ENTREZID)), ## espera entrez_id
organism = "human",
pvalueCutoff = 0.05,
pAdjustMethod = "BH",
qvalueCutoff = 0.2,
#universe,
minGSSize = 10,
maxGSSize = 500,
readable = FALSE
)
library(ReactomePA)
reactomeNegativeCorrelations <- enrichPathway(
sort(na.omit(inputNegCor$ENTREZID)), ## espera entrez_id
organism = "human",
pvalueCutoff = 0.05,
pAdjustMethod = "BH",
qvalueCutoff = 0.2,
#universe,
minGSSize = 10,
maxGSSize = 500,
readable = FALSE
)
Armazenar os resultados em um data frame
reactomePositiveCorrelations <-as.data.frame(reactomePositiveCorrelations)
reactomeNegativeCorrelations <- as.data.frame(reactomeNegativeCorrelations)
reactomePositiveCorrelations[1:5,-1]