knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
MoPc (Multi-omics partial correlation analysis) is software to reveal the miRNA drivers of a biological process in a multi-omics dataset, starting from the expression matrices of mRNA, proteomics, and miRNA.
In the presence of such matrices, the canonical approach to identify miRNA drivers consists in carrying out the mRNA-miRNA correlation (mRNA and miRNA matrices) and proteomics-miRNA (proteomics and miRNA matrices).
Although this approach has proved effective, MoPc introduces the partial correlation measurement between the mRNA and proteomic matrices, conditioned on the expression of miRNAs. In particular, MoPc selects as a driver the miRNAs in which the partial correlation p-value is better (therefore lower) than the bivariate mRNA-proteomic correlation p-value. The tool also verifies the enrichment of the mRNA-miRNA pairs found with what is already available in the literature in three well-known databases: mirDB, TargestScan, mirTarbase.
You can install the development version of MoPc from GitHub with:
# install.packages("devtools") devtools::install_github("martalovino/MoPc")
MoPc identifies the miRNA drivers starting from a multi-omic dataset composed of:
To run MoPc you need:
You can find a sample dataset directly inside the package, which you can easily replace with your data.
The MoPc output consists of:
Please, see the example below.
Below you will find an illustrative example of the input data and the tool's output. The tool consists of several parts:
This part loads the package and set proper hyper-parameters.
library(MoPc) # Parameters corr_method <- "pearson" mat1_name <- "rna" mat2_name <- "prot" mat3_name <- "mirna" ncores = 7 fdr_th <- 0.05 improvement_th <- 0 out_folder <- "results" dir.create(out_folder, showWarnings = FALSE)
This part loads the package and set proper hyper-parameters.
# load breast cancer dataset data(rna) data(prot) data(mirna) # minimalist preprocecessing: selecting only common samples and common genes # between rna and prot d <- minimalist_preproc(rna, prot, mirna) # annotate and sort genes/mirnas by chromosomal order rna <- annotate_genes(d$mat1) prot <- annotate_genes(d$mat2) mirna <- annotate_mirnas(d$mat3) #------------------------------------------------------------------------------- # DEFINING ROWS and COLUMNS of partial correlation matrix # usually genes on the rows and mirnas or CNAs on the columns #------------------------------------------------------------------------------- genes_proteins <- rownames(rna$data) condv <- rownames(mirna$data) gene_annot <- rna$annot condv_annot <- mirna$annot
This part loads the package and set proper hyper-parameters.
#------------------------------------------------------------------------------- # PARTIAL CORRELATION COMPUTAION #------------------------------------------------------------------------------- a <- compute_pc_values(rna$data, prot$data, mirna$data, corr_method, out_folder, ncores) mat <- get_relevant_improvement(rna$data, prot$data, a$pval, corr_method, improvement_th) th <- quantile(unlist(mat[!is.na(mat)]), 0.75) mat <- get_relevant_improvement(rna$data, prot$data, a$pval, corr_method, th) #------------------------------------------------------------------------------- # GET VALIDATION info #------------------------------------------------------------------------------- valid <- validation_info(mat, condv, genes_proteins, 7)
This part loads the package and set proper hyper-parameters.
#------------------------------------------------------------------------------- # PARTIAL CORRELATION PLOT #------------------------------------------------------------------------------- partial_corr_heatmap_plot(valid$to_validate, genes_proteins, condv, gene_annot, condv_annot, mat, out_folder)
This part loads the package and set proper hyper-parameters.
#------------------------------------------------------------------------------- # Computing enrichment significance in mirDB, TargetScan, mirtarBase #------------------------------------------------------------------------------- hyper_test(valid$to_validate, valid$universe, valid$mirDB, valid$ts, valid$tarbase, file.path(out_folder, "hypergeometric_test_results.txt"))
This part loads the package and set proper hyper-parameters.
```r
st_corr_mrna_mirna <- heatmap_corr(rna$data, mirna$data, mat1_name, mat3_name, condv_annot, gene_annot, file.path(out_folder, "mRNA-miRNA"))
st_corr_prot_mirna <- heatmap_corr(prot$data, mirna$data, mat2_name, mat3_name, condv_annot, gene_annot, file.path(out_folder, "prot-miRNA"))
to_validate_mrna <- st_corr_mrna_mirna$table[st_corr_mrna_mirna$table$pvaluefdrcorr < fdr_th,] valid_mrna <- validation_info(to_validate_mrna, condv, genes_proteins, 7, from_cor_mat = FALSE)
hyper_test(valid_mrna$to_validate, valid_mrna$universe, valid_mrna$mirDB, valid_mrna$ts, valid_mrna$tarbase, file.path(out_folder, "mRNA_hypergeometric_test_results.txt"))
to_validate_prot <- st_corr_prot_mirna$table[st_corr_prot_mirna$table$pvaluefdrcorr < fdr_th,] valid_prot <- validation_info(to_validate_prot, condv, genes_proteins, 7, from_cor_mat = FALSE)
hyper_test(valid_prot$to_validate, valid_prot$universe, valid_prot$mirDB, valid_prot$ts, valid_prot$tarbase, file.path(out_folder, "prot_hypergeometric_test_results.txt"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.