1 Overview
1.1 Introduction
miRNetR is an R package, synchronized with the popular miRNet web server, designed for microRNA (miRNA) centric network analytics and systems-level interpretation. This R package contains the numerous R functions and libraries underlying the web server necessary to perform miRNA data processing and analysis. This package provides support to map from miRNAs to targets (forward mapping), targets to the associated miRNAs (reverse mapping), as well as to generate network files and perform functional enrichment analysis.
Following installation and loading of miRNetR, users will be able to reproduce web server results from their local computers using the corresponding R command history downloaded from miRNet, thereby achieving maximum flexibility and reproducibility.
1.2 Installation
Step 1. Install package dependencies
To use miRNetR , first install all package dependencies. Ensure that you are able to download packages from bioconductor. To install package dependencies, use the pacman R package (for those with >R 3.5.1). Note that some of these packages may require additional library dependencies that need to be installed prior to their own successful installation.
install.packages("pacman")
library(pacman)
pacman::p_load(RSQLite, Cairo, fastmatch, igraph, RJSONIO, foreach, doParallel, preprocessCore, limma, edgeR, HTqPCR, genefilter)
Step 2. Install the package
miRNetR is freely available from GitHub. The package documentation, including the vignettes for each module and user manual is available within the downloaded R package file. If all package dependencies were installed, you will be able to install the miRNetR. Due to issues with Latex, some users may find that they are only able to install miRNetR without any documentation (i.e. vignettes).
Install the package directly from github using the devtools package. Open R and enter:
# Step 1: Install devtools
install.packages("devtools")
library(devtools)
# Step 2: Install miRNetR WITHOUT documentation
devtools::install_github("xia-lab/miRNetR", build = TRUE, build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"))
# Step 2: Install miRNetR WITH documentation
devtools::install_github("xia-lab/miRNetR", build = TRUE, build_opts = c("--no-resave-data", "--no-manual"), build_vignettes = TRUE)
2 Tips for using the miRNetR package
The first function that you will use in every module is the
Init.Data
function, which constructs the dataSet object that stores user’s data for further processing and analysis.The miRNetR package directly creates data files/tables/analysis/networks outputs in your current working directory.
Every command must be run in sequence, please do not skip any commands as this will result in errors downstream.
Each main function in miRNetR is documented. Use the ?Function format to open its documentation. For instance, use
?miRNetR::PerformMirGeneMapping
to find out more about this function.
3 Starting from a list of miRNAs or targets
3.1 Starting from a list of miRNAs
3.1.1 Mapping to single target
library(miRNetR)
#### Step 1. Initiate the dataSet object
Init.Data("mir", "mirlist")
#> "miRNetR init done!"
#### Step 2. Set up the user input data
SetupMirListData(mirs = "hsa-miR-101-3p
hsa-miR-133b
hsa-miR-147a
hsa-miR-3140-3p
hsa-miR-361-5p
hsa-miR-510-5p", orgType = "hsa", idType = "mir_id", tissue = "Kidney")
#> "A total of 6 unique items were entered."
#### Step 3. Set up targets
nms.vec = c("gene")
SetCurrentDataMulti()
#> "Targets were entered!"
#### Step 4. Perform miRNAs to target genes mapping,
#### results are downloaded in your working directory ("mirnet_mir_target.csv" and "mir_tissue.csv")
QueryMultiListMir()
#> "Downloading mir2gene.sqlite from https://www.xialab.ca/rest/sqlite/mir2gene.sqlite"
#> "A total of unqiue 1059 pairs of miRNA-gene targets were identified!"
head(dataSet$mir.res, n = 3L)
#> ID Accession Target TargetID Experiment Literature Tissue
#> 1 hsa-miR-101-3p MIMAT0000099 ACVR2B 93 Sequencing 20371350 Kidney
#> 2 hsa-miR-101-3p MIMAT0000099 AP1G1 164 PAR-CLIP//Sequencing 20371350|23592263 Kidney
#> 3 hsa-miR-101-3p MIMAT0000099 AMD1 262 HITS-CLIP 23313552 Kidney
#### Step 5. Generate miRNA-gene network files
CreateMirNets(net.type = "mir2gene")
#> "Network files are generated!"
#### Step 6. Prepare network files,
#### results are downloaded in your working directory ("node_table_mirnet_0.csv", "mirnet_0.json" and "mirnet.graphml")
PrepareMirNet(mir.nm = "mirnet1", file.nm = "mirnet_0.json")
#> "Network files are downloaded!"
#### Step 7. Perform miRNA family enrichment analysis,
#### results are downloaded in your working directory ("network_enrichment_mirfamily_1.json" and "mirnet_enrichment.csv")
PerformMirTargetEnrichAnalysis(
adjust.type = "NA",
fun.type = "mirfamily",
file.nm = "network_enrichment_mirfamily_1",
IDs = "hsa-miR-101-3p; hsa-miR-147a; hsa-miR-361-5p; hsa-miR-133b; hsa-miR-510-5p; hsa-miR-3140-3p",
algo = "hyp"
)
resTable <- read.csv("mirnet_enrichment.csv", header=T, as.is=T)
head(resTable, n = 3L)
#> Pathway Total Expected Hits Pval stringsAsFactor
#> 1 mir-3140 3 0.00753 1 0.00751 FALSE
#> 2 mir-361 3 0.00753 1 0.00751 FALSE
#> 3 mir-147 4 0.01000 1 0.01000 FALSE
3.1.2 Mapping to multiple targets
library(miRNetR)
#### Step 1. Initiate the dataSet object
Init.Data("mir", "mirlist")
#> "miRNet init done!"
#### Step 2. Set up the user input data
SetupMirListData(mirs = "hsa-miR-16-5p
hsa-miR-424-5p
hsa-miR-29c-3p
hsa-miR-29b-3p
hsa-miR-29a-3p
hsa-miR-148b-3p
hsa-miR-152-3p
hsa-miR-148a-3p
hsa-miR-335-5p", orgType = "hsa", idType = "mir_id", tissue = "na")
#> "A total of 9 unique items were entered."
#### Step 3. Set up targets
nms.vec = c("gene", "lncrna")
SetCurrentDataMulti()
#> "Targets were entered!"
#### Step 4. Perform miRNAs to multiple targets mapping, results are downloaded in your working directory
QueryMultiListMir()
head(dataSet$mir2gene, n = 2L)
#> ID Accession Target TargetID Experiment Literature Tissue
#> 1 hsa-miR-16-5p MIMAT0000069 ABCB7 22 CLASH 23622248 Unspecified
#> 2 hsa-miR-16-5p MIMAT0000069 ABCF1 23 Proteomics 18668040 Unspecified
head(dataSet$mir2lnc, n = 2L)
#> ID Accession Target TargetID Experiment Literature Tissue
#> 1 hsa-miR-148a-3p MIMAT0000243 SNHG3 8420 CLIP-Seq 24297251 Unspecified
#> 2 hsa-miR-148a-3p MIMAT0000243 CYP1B1-AS1 285154 CLIP-Seq 24297251 Unspecified
#### Step 5. Generate network files
CreateMirNets(net.type = "multilist")
#> "Network files are generated!"
#### Step 6. Prepare network files,
#### results are downloaded in your working directory ("node_table_mirnet_0.csv", "mirnet_0.json" and "mirnet.graphml")
PrepareMirNet(mir.nm = "mirnet1", file.nm = "mirnet_0.json")
#> "Network files are downloaded!"
#### Step 7. Perform miRNA function enrichment analysis,
#### results are downloaded in your working directory ("network_enrichment_func_1.json" and "mirnet_enrichment.csv")
PerformMirTargetEnrichAnalysis(
adjust.type = "NA",
fun.type = "func",
file.nm = "network_enrichment_func_1",
IDs = "hsa-miR-16-5p; hsa-miR-424-5p; hsa-miR-29c-3p; hsa-miR-29b-3p; hsa-miR-29a-3p; hsa-miR-148b-3p; hsa-miR-152-3p; hsa-miR-148a-3p; hsa-miR-335-5p",
algo = "hyp"
)
#> "Enrichment files are downloaded!"
resTable <- read.csv("mirnet_enrichment.csv", header=T, as.is=T)
head(resTable, n = 3L)
#> Pathway Total Expected Hits Pval stringsAsFactor
#> 1 Cell Adhesion 24 0.228 3 0.00109 FALSE
#> 2 Neuron Apoptosis 45 0.428 3 0.00692 FALSE
#> 3 Nephrotoxicity 51 0.485 3 0.00986 FALSE
3.2 Starting from a list of targets
3.2.1 Mapping from single target
library(miRNetR)
#### Step 1. Initiate the dataSet object
Init.Data("mir", "gene")
#> "miRNetR init done!"
#### Step 2. Set up the user input data
SetupIndListData("ACAT1
DDX3X
MEGF9
FMR1
HAPLN1
IL12A
OLR1
RNF6
SOD3
ELOVL4
MRAP2", "hsa", "gene", "symbol", "na", "na")
#> "A total of 11 unique items were entered."
#### Step 3. Indicate target type
nms.vec = c("gene")
SetCurrentDataMulti()
#> "Targets were entered!"
#### Step 4. Perform target gene to miRNA mapping,
#### results are downloaded in your working directory ("mirnet_mir_target.csv")
QueryMultiList()
#> "Downloading mir2gene.sqlite from https://www.xialab.ca/rest/sqlite/mir2gene.sqlite"
#> "A total of unqiue 292 pairs of miRNA-gene targets were identified!"
head(dataSet$mir.res, n = 3L)
#> ID Accession Target TargetID Experiment Literature Tissue
#> 1 hsa-miR-15a-5p MIMAT0000068 DDX3X 1654 PAR-CLIP 24398324|23446348|21572407|20371350 Unspecified
#> 2 hsa-miR-16-5p MIMAT0000069 DDX3X 1654 PAR-CLIP//Proteomics 18668040|24398324|23446348|21572407|20371350 Unspecified
#> 3 hsa-miR-19a-3p MIMAT0000073 DDX3X 1654 PAR-CLIP 23446348|21572407|20371350 Unspecified
#### Step 5. Generate miRNA-gene network files
CreateMirNets(net.type = "gene2mir")
#> "Network files are generated!"
#### Step 6. Prepare network files,
#### results are downloaded in your working directory ("node_table_mirnet_0.csv", "mirnet_0.json" and "mirnet.graphml")
PrepareMirNet(mir.nm = "mirnet1", file.nm = "mirnet_0.json")
#> "Network files are downloaded!"
#### Step 7. Perform enrichment analysis,
#### results are downloaded in your working directory ("network_enrichment_kegg_1.json" and "mirnet_enrichment.csv")
PerformMirTargetEnrichAnalysis(
adjust.type = "NA",
fun.type = "kegg",
file.nm = "network_enrichment_kegg_1",
IDs = "DDX3X; ELOVL4; ACAT1; HAPLN1; MEGF9; FMR1; IL12A; OLR1; RNF6; SOD3; MRAP2",
algo = "hyp"
)
#> "Enrichment files are downloaded!"
resTable <- read.csv("mirnet_enrichment.csv", header=T, as.is=T)
head(resTable, n = 3L)
#> Pathway Total Expected Hits Pval stringsAsFactor
#> Synthesis and degradation of ketone bodies 9 0.0115 1 0.0115 FALSE
#> Terpenoid backbone biosynthesis 20 0.0256 1 0.0254 FALSE
#> Propanoate metabolism 22 0.0282 1 0.0279 FALSE
3.2.2 Mapping from multiple targets
library(miRNetR)
#### Step 1. Initiate the dataSet object
Init.Data("mir", "multilist")
#> "miRNet init done!"
#### Step 2a. Set up the user input data (gene)
SetupIndListData("ACAT1
DDX3X
MEGF9
FMR1
HAPLN1
IL12A
OLR1
RNF6
SOD3
ELOVL4
MRAP2", "hsa", "gene", "symbol", "na", "null")
#> "A total of 11 unique items were entered."
#### Step 2b. Set up the user input data (lncRNA)
SetupIndListData("MEG8
XIST
HCG18
TUG1
NEAT1
H19
HCG18
MALAT1
EMX2OS
SNHG7
SNHG1
KCNQ1OT1", "hsa", "lncrna", "symbol", "na", "null")
#> "A total of 12 unique items were entered."
#### Step 3. Indicate target type
nms.vec = c("gene", "lncrna")
SetCurrentDataMulti()
#> "Targets were entered!"
#### Step 4. Perform multiple targets (gene and lncRNA) to miRNA mapping,
#### results are downloaded in your working directory ("mirnet_mir_target.csv")
QueryMultiList()
head(dataSet$gene2mir, n = 2L)
#> ID Accession Target TargetID Experiment Literature Tissue
#> 1 hsa-miR-15a-5p MIMAT0000068 DDX3X 1654 PAR-CLIP 24398324|23446348|21572407|20371350 Unspecified
#> 2 hsa-miR-16-5p MIMAT0000069 DDX3X 1654 PAR-CLIP//Proteomics 18668040|24398324|23446348|21572407|20371350 Unspecified
head(dataSet$lnc2mir, n = 2L)
#> ID Accession Target TargetID Experiment Literature Tissue
#> 1 hsa-let-7a-5p MIMAT0000062 HCG18 414777 CLIP-Seq 24297251 Unspecified
#> 2 hsa-let-7a-5p MIMAT0000062 KCNQ1OT1 10984 CLIP-Seq 24297251 Unspecified
#### Step 5. Generate lncRNA-miRNA-gene network files
CreateMirNets(net.type = "multilist")
#> "Network files are generated!"
#### Step 6. Prepare network files,
#### results are downloaded in your working directory ("node_table_mirnet_0.csv", "mirnet_0.json" and "mirnet.graphml")
PrepareMirNet(mir.nm = "mirnet1", file.nm = "mirnet_0.json")
#> "Network files are downloaded!"
#### Step 7. Perform enrichment analysis,
#### results are downloaded in your working directory ("network_enrichment_kegg_1.json" and "mirnet_enrichment.csv")
PerformMirTargetEnrichAnalysis(
adjust.type = "NA",
fun.type = "kegg",
file.nm = "network_enrichment_kegg_1",
IDs = "DDX3X; ELOVL4; ACAT1; HAPLN1; MEGF9; FMR1; IL12A; OLR1; RNF6; SOD3; MRAP2; HCG18; KCNQ1OT1; NEAT1; MEG8; XIST; MALAT1; SNHG1; H19; SNHG7; TUG1; EMX2OS",
algo = "hyp"
)
#> "Enrichment files are downloaded!"
resTable <- read.csv("mirnet_enrichment.csv", header=T, as.is=T)
head(resTable, n = 3L)
#> Pathway Total Expected Hits Pval stringsAsFactor
#> Synthesis and degradation of ketone bodies 9 0.0115 1 0.0115 FALSE
#> Terpenoid backbone biosynthesis 20 0.0256 1 0.0254 FALSE
#> Propanoate metabolism 22 0.0282 1 0.0279 FALSE
4 Starting from an expression table
4.1 RT-qPCR
library(miRNetR)
#### Step 1. Initiate the dataSet object
Init.Data("mir", "qpcr")
#### Use example data
example.path <- paste("https://www.mirnet.ca/resources/data/test/qpcr_data.txt")
destfile <- "qpcr_data.txt"
download.file(example.path, destfile)
#### Step 2. Read example data
ReadTabExpressData("qpcr_data.txt")
#> "a total of 6 samples and 384 features were found. ; removed 8 features with constant values"
#### Step 3. Annotation
PerformDataAnnot("mmu", "mir_id", "na", "mean")
#> "Annotation was performed successfully!"
miRNetR supports five types of normalization method, including quantile normalization, rank-invariant normalization, acale-invariant normalization, geometric average and delta Ct normalization.
Quantile normalization
will make the distribution of control values more or less identical across samples.
Rank-invariant normalization
computes all rank-invariant sets of features between pairwise comparisons of each sample against a reference, such as a pseudo-mean. The rank-invariant features are used as a reference for generating a smoothing curve, which is then applied to the entire sample.
Geometric average
calculates the average control value for each sample, and scales all control values according to the ratio of these mean Ct values across samples.
deltaCt normalization
calculates the standard deltaCt values, i.e. subtracts the mean of the chosen controls from all other values in the feature set. You must specify endogenous controls!
#### Step 4. Normalization
######## Option 1. Quantile normalization
PerformQpcrDataNormalization("quantile")
#> "Normalization was performed successfully!"
######## Option 2. Rank-invariant normalization
PerformQpcrDataNormalization("norm.rank")
######## Option 3. Scale-invariant normalization
PerformQpcrDataNormalization("scale.rank")
######## Option 4. Geometric average
PerformQpcrDataNormalization("geometric.mean")
######## Option 5. Delta Ct normalization
PerformQpcrDataNormalization("deltaCt")
######## Option 6. No normalization
PerformQpcrDataNormalization("none")
miRNetR supports three types of statistical method, including limma, standard t-test and Mann-Whitney test.
#### Step 5. Specify comparison of interest and statistical method
######## Option 1. Limma
PerformHTqPCR("Ctrl vs. GrpA", "limma")
#> "Differential Analysis was performed successfully!"
######## Option 2. Standard t-test
PerformHTqPCR("Ctrl vs. GrpA", "ttest")
######## Option 3. Mann-Whitney test
PerformHTqPCR("Ctrl vs. GrpA", "mannwhitney")
Set adjusted p-value (p.lvl), fold change (fc.lvl) and direction
#### Step 6. Feature selection
######## Option 1. Both direction
GetSigGenes(p.lvl = 0.2, fc.lvl = 0.0, direction = "both")
#> " A total of 13 significant genes were identified!"
######## Option 2. Up-regulated only
GetSigGenes(p.lvl = 0.2, fc.lvl = 0.0, direction = "up")
######## Option 3. Down-regulated only
GetSigGenes(p.lvl = 0.2, fc.lvl = 0.0, direction = "down")
#### Step 7. Set up the user input data in the dataSet object
SetupMirExpressData();
#> "Setup complete!"
#### Step 8. Perform miRNAs to target genes mapping, results are downloaded in your working directory
PerformMirGeneMapping();
#> "A total of unqiue 2949 pairs of miRNA-gene targets were identified!"
head(dataSet$mir.res, n = 3L)
#> ID Accession Gene Entrez Experiment Literature Tissue
#> mirnet-mmu-000027 mmu-miR-329-3p MIMAT0000567 Klra2 16633 HITS-CLIP 23597149 Unspecified
#> mirnet-mmu-000034 mmu-miR-329-3p MIMAT0000567 Klra2 16633 HITS-CLIP 21258322 Unspecified
#> mirnet-mmu-000036 mmu-miR-329-3p MIMAT0000567 Klra2 16633 HITS-CLIP 25083871 Unspecified
#### Step 9. Generate miRNA-gene network files
CreateMirNets("mir2gene");
#> "Network files are generated!"
#### Step 10. Prepare network files, results are downloaded in your working directory
PrepareMirNet("mirnet1", "mirnet_0.json")
#> "Network files are downloaded!"
#### Step 11. Perform miRNA family enrichment analysis, results are downloaded in your working directory ("network_enrichment_mirfamily_1.json" and "mirnet_enrichment.csv")
PerformMirTargetEnrichAnalysis(
adjust.type = "NA",
fun.type = "mirfamily",
file.nm = "network_enrichment_mirfamily_1",
IDs = "mmu-miR-329-3p; mmu-miR-539-3p; mmu-miR-3087-3p; mmu-miR-466i-5p; mmu-miR-129-2-3p; mmu-miR-466c-3p; mmu-miR-669m-3p; mmu-miR-466e-3p; mmu-miR-325-3p; mmu-miR-3099-3p; mmu-miR-1952; mmu-miR-505-3p; mmu-miR-451a",
algo = "hyp"
)
#> "Enrichment files are downloaded!"
resTable <- read.csv("mirnet_enrichment.csv", header=T, as.is=T)
head(resTable, n = 3L)
#> Pathway Total Expected Hits Pval stringsAsFactor
#> 1 mir-505 3 0.0227 1 0.0225 FALSE
#> 2 mir-3099 3 0.0227 1 0.0225 FALSE
#> 3 mir-325 3 0.0227 1 0.0225 FALSE
4.2 RNAseq
library(miRNetR)
#### Step 1. Initiate the dataSet object
Init.Data("mir", "rnaseq")
#> "miRNet init done!"
#### Use example data
example.path <- paste("https://www.mirnet.ca/resources/data/test/bmdm_data.txt")
destfile <- "bmdm_data.txt"
download.file(example.path, destfile)
#### Step 2. Read example data
ReadTabExpressData("bmdm_data.txt")
#> "a total of 8 samples and 12599 features were found. ; removed 77 features with constant values"
#### Step 3. Annotation
PerformDataAnnot("mmu", "emblgene", "na", "sum")
#> "Annotation was performed successfully!"
miRNetR supports four types of normalization method, including trimmed mean of M-values (TMM), log2 transformation only, quantile normalization only, log2 followed by quantile normalization. In addition, you can choose either tagwise or common dispersion. The expression values should be compared at log2 scales.
#### Step 4. Normalization
######## Option 1. Trimmed mean of M-values (TMM) and tagwise dispersion
PerformCountDataNormalization("tmm", "tagwise")
#> "Normalization was performed successfully!"
######## Option 2. Log2 transformation and common dispersion
PerformCountDataNormalization("log", "common")
######## Option 3. Quantile normalization and common dispersion
PerformCountDataNormalization("quant", "common")
######## Option 4. Log2 followed by quantile normalization and common dispersion
PerformCountDataNormalization("combine", "common")
######## Option 5. No normalization and no dispersion
PerformCountDataNormalization("none", "none")
EdgeR uses negative binomial model is to estimate the dispersion parameter for each tag, a measure of the degree of inter-library variation for that tag. Estimating the common dispersion gives an idea of overall variability across the genome for this dataset. Estimating the tagwise dispersions estimates a distinct, individual dispersion for each gene.
#### Step 5. Specify statistical method and comparison of interest
######## edgeR (RNAseq)
PerformEdgeR("Control vs. Infected")
#> "Differential Analysis was performed successfully!"
Set adjusted p-value (p.lvl), fold change (fc.lvl) and direction
#### Step 6. Feature selection
######## Option 1. Both direction
GetSigGenes(p.lvl = 0.01, fc.lvl = 2.5, direction = "both")
#> " A total of 1407 significant genes were identified!"
######## Option 2. Up-regulated only
GetSigGenes(p.lvl = 0.01, fc.lvl = 2.5, direction = "up")
######## Option 3. Down-regulated only
GetSigGenes(p.lvl = 0.01, fc.lvl = 2.5, direction = "down")
#### Step 7. Set up the user input data in the dataSet object
SetupMirExpressData();
#> "Setup complete!"
#### Step 8. Perform target genes to miRNAs mapping, results are downloaded in your working directory
PerformMirGeneMapping();
#> "A total of unqiue 5130 pairs of miRNA-gene targets were identified!"
head(dataSet$mir.res, n = 3L)
#> ID Accession Gene Entrez Experiment Literature Tissue
#> mirnet-mmu-000021 mmu-miR-692 MIMAT0003471 Mmp14 17387 HITS-CLIP 23597149 Unspecified
#> mirnet-mmu-000022 mmu-miR-466f-3p MIMAT0004882 Klra2 16633 HITS-CLIP 25083871 Unspecified
#> mirnet-mmu-000023 mmu-miR-466m-3p MIMAT0014883 Klra2 16633 HITS-CLIP 23597149 Unspecified
#### Step 9. Generate miRNA-gene network files
CreateMirNets("gene2mir");
#> "Network files are generated!"
#### Step 10. Prepare network files, results are downloaded in your working directory
PrepareMirNet("mirnet1", "mirnet_0.json")
#> "Network files are downloaded!"
#### Step 11. Perform miRNA family enrichment analysis, results are downloaded in your working directory ("network_enrichment_mirfamily_1.json" and "mirnet_enrichment.csv")
PerformMirTargetEnrichAnalysis(
adjust.type = "NA",
fun.type = "mirfamily",
file.nm = "network_enrichment_mirfamily_1",
IDs = "mmu-miR-329-3p; mmu-miR-539-3p; mmu-miR-3087-3p; mmu-miR-466i-5p; mmu-miR-129-2-3p; mmu-miR-466c-3p; mmu-miR-669m-3p; mmu-miR-466e-3p; mmu-miR-325-3p; mmu-miR-3099-3p; mmu-miR-1952; mmu-miR-505-3p; mmu-miR-451a",
algo = "hyp"
)
#> "Enrichment files are downloaded!"
resTable <- read.csv("mirnet_enrichment.csv", header=T, as.is=T)
head(resTable, n = 3L)
#> Pathway Total Expected Hits Pval stringsAsFactor
#> 1 mir-3099 3 0.0185 1 0.0184 FALSE
#> 2 mir-325 3 0.0185 1 0.0184 FALSE
#> 3 mir-466 46 0.2840 2 0.0305 FALSE
4.3 Microarray
library(miRNetR)
#### Step 1. Initiate the dataSet object
Init.Data("mir", "array")
#> "miRNet init done!"
#### Use example data
example.path <- paste("https://www.mirnet.ca/resources/data/test/estrogen_data.txt")
destfile <- "estrogen_data.txt"
download.file(example.path, destfile)
#### Step 2. Read user input
ReadTabExpressData("estrogen_data.txt")
#> "a total of 8 samples and 12625 features were found. "
#### Step 3. Annotation
PerformDataAnnot("hsa", "hgu95av2", "na", "mean")
#> "Annotation was performed successfully!"
miRNetR supports four types of normalization method, including trimmed mean of M-values (TMM), log2 transformation only, quantile normalization only, log2 followed by quantile normalization. In addition, you can choose either tagwise or common dispersion. The expression values should be compared at log2 scales. Quantile normalization is optional and is recommended for microarray data.
#### Step 4. Normalization
######## Option 1. Trimmed mean of M-values (TMM)
PerformArrayDataNormalization("tmm")
#> "No log normalization was performed."
#> "Normalization was performed successfully!"
######## Option 2. Log2 transformation
PerformArrayDataNormalization("log")
######## Option 3. Quantile normalization
PerformArrayDataNormalization("quant")
######## Option 4. Log2 followed by quantile normalization
PerformArrayDataNormalization("combine")
######## Option 5. No normalization
PerformArrayDataNormalization("none")
#### Step 5. Specify statistical method and comparison of interest
######## Limma (microarray)
PerformLimma("absent vs. present");
#> "Differential Analysis was performed successfully!"
Set adjusted p-value (p.lvl), fold change (fc.lvl) and direction
#### Step 6. Feature selection
######## Option 1. Both direction
GetSigGenes(p.lvl = 0.01, fc.lvl = 1.0, direction = "both")
#> " A total of 75 significant genes were identified!"
######## Option 2. Up-regulated only
GetSigGenes(p.lvl = 0.01, fc.lvl = 1.0, direction = "up")
######## Option 3. Down-regulated only
GetSigGenes(p.lvl = 0.01, fc.lvl = 1.0, direction = "down")
#### Step 7. Set up the user input data in the dataSet object
SetupMirExpressData()
#> "Setup complete!"
#### Step 8. #### Step 8. Perform target genes to miRNAs mapping, results are downloaded in your working directory
PerformMirGeneMapping()
#> "A total of unqiue 2906 pairs of miRNA-gene targets were identified!"
head(dataSet$mir.res, n = 3L)
#> ID Accession Gene Entrez Experiment Literature Tissue
#> mirnet-hsa-21 hsa-let-7a-5p MIMAT0000062 CCND1 595 PAR-CLIP 23592263|26701625 Unspecified
#> mirnet-hsa-40 hsa-let-7a-5p MIMAT0000062 CDKN1A 1026 PAR-CLIP//Western blot 19818775|21572407 Unspecified
#> mirnet-hsa-70 hsa-let-7a-5p MIMAT0000062 EZH2 2146 CLASH//Luciferase reporter assay//qRT-PCR//Western blot 23622248|22972404 Unspecified
#### Step 9. Generate miRNA-gene network files
CreateMirNets("gene2mir");
#> "Network files are generated!"
#### Step 10. Prepare network files, results are downloaded in your working directory
PrepareMirNet("mirnet1", "mirnet_0.json")
#> "Network files are downloaded!"
#### Step 11. Perform enrichment analysis, results are downloaded in your working directory ("network_enrichment_kegg_1.json" and "mirnet_enrichment.csv")
PerformMirTargetEnrichAnalysis(
adjust.type = "NA",
fun.type = "kegg",
file.nm = "network_enrichment_kegg_1",
IDs = "CCND1; CDKN1A; EZH2; MTHFD1; RRM1; AURKB; CCNA2; FEN1; MCM4; MCM7; TYMS; BTG2; SLC9A3R1; CHAF1A; TUBA1B; XBP1; FANCI; SLC29A1; RAD51C; SLC7A5; DNAJC9; CTSD; L1CAM; PNP; TFPI; UNG; RND3; MCM5; PCNA; BTG1; GINS1; MYBL2; TMEM97; CDT1; FKBP4; FOXM1; NASP; GREB1; POLA2; BAK1; RNASEH2A; CDC6; IGFBP4; LIG1; MCM3; PMP22; TK1; VTN; GGH; FHL2; TBC1D9; ID3; RAB31; MCM2; EBP; TANC2; BARD1; BLM; MCM6; RFC4; ENC1; TRIP13; GLA; JUNB; CSE1L; EFNA1; TFF1; CELSR2; EFHD1; CDC45",
algo = "hyp"
)
#> "Enrichment files are downloaded!"
resTable <- read.csv("mirnet_enrichment.csv", header=T, as.is=T)
head(resTable, n = 3L)
#> Pathway Total Expected Hits Pval stringsAsFactor
#> 1 Cell cycle 124 0.980 12 7.41e-11 FALSE
#> 2 Pyrimidine metabolism 101 0.799 5 1.07e-03 FALSE
#> 3 Fanconi anemia pathway 39 0.308 3 3.42e-03 FALSE
5 Starting from a list of xeno-miRNAs or target genes
miRNet will automatically search 453 xeno-miRNAs detected in six host organisms based on 15 studies. In addition, there are 1,249 predicted xeno-miRNAs with high potential to be transferred to human circulation according to a study by Shu et al.
You can enter xeno-miRNAs to see if they target any host genes; Or enter host genes to see if they are targeted by any xeno-miRNAs.
5.1 Starting from a list of xeno-miRNAs
#### Step 1. Initiate the dataSet object
Init.Data("xeno.mir", "xenomir-search")
#> "miRNet init done!"
#### Step 2. Set up the user input data
SetupMirListData(mirs = "sja-miR-125b
sja-miR-2162-3p
sja-miR-2b-5p
sja-miR-61
sja-miR-10-5p", orgType = "hsa", idType = "exo_mirna", tissue = "")
#> "A total of 5 unique items were entered."
#### Step 3. Perform xeno-miRNAs to target genes mapping, results are downloaded in your working directory
## You can choose to include ("true") or exclude ("false") predicted xeno-miRNAs in PerformXenoMirGeneMapping()
PerformXenoMirGeneMapping("false")
# "A total of unqiue 5231 pairs of miRNA-gene targets were identified!"
head(dataSet$mir.res, n = 3L)
#> Source Xeno.species miRNA Accession Gene Entrez Literature Expression miRanda TarPmiR
#> 1 ELV S. japonicum (blood fluke) sja-miR-2b-5p MIMAT0016247 CFH 3075 27172881 4215 141 0.846
#> 2 ELV S. japonicum (blood fluke) sja-miR-10-5p MIMAT0016253 NFYA 4800 27172881 347581 147 1.000
#> 3 ELV S. japonicum (blood fluke) sja-miR-125b MIMAT0010179 NIPAL3 57185 27172881 260493 158 0.981
#### Step 4. Generate xeno-miRNA gene network files
CreateMirNets(net.type = "mir2gene")
#> "Network files are generated!"
#### Step 5. Prepare network files, results are downloaded in your working directory
PrepareMirNet(mir.nm = "mirnet1", file.nm = "mirnet_0.json")
#> "Network files are downloaded!"
5.2 Starting from a list of host genes
#### Step 1. Initiate the dataSet object
Init.Data("xeno.mir", "xenomir-search")
#> "miRNet init done!"
#### Step 2. Set up the user input data
SetupMirListData(mirs = "B4galt2
Acox3
Emp2
Gtpbp2
Duox1", orgType = "mmu", idType = "symbol", tissue = "")
#> "A total of 5 unique items were entered."
#### Step 3. Perform xeno-miRNAs to target genes mapping, results are downloaded in your working directory
## You can choose to include ("true") or exclude ("false") predicted xeno-miRNAs in PerformXenoMirGeneMapping()
PerformXenoMirGeneMapping("false")
#> "A total of unqiue 118 pairs of miRNA-gene targets were identified!"
head(dataSet$mir.res, n = 3L)
#> Source Xeno.species miRNA Accession Gene Entrez Literature Expression miRanda TarPmiR
#> 1 immuneorgan B. taurus (cow) bta-miR-6120-3p MIMAT0024591 Emp2 13731 GSM539865 1 145 0.769
#> 2 embryo C. elegans cel-miR-229-5p MIMAT0000284 Gtpbp2 56055 GSM307157 2 168 0.923
#> 3 embryo_stem_cell C. elegans cel-miR-229-5p MIMAT0000284 Gtpbp2 56055 GSM307156 2 168 0.923
#### Step 4. Generate xeno-miRNA gene network files
CreateMirNets(net.type = "mir2gene")
#> "Network files are generated!"
#### Step 5. Prepare network files, results are downloaded in your working directory
PrepareMirNet(mir.nm = "mirnet1", file.nm = "mirnet_0.json")
#> "Network files are downloaded!"