options(width  = 999)
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE,
                      cache = FALSE, tidy = FALSE, size = "small")
knitr::opts_chunk$set(collapse = TRUE)

Overview

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.

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, prettydoc)

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"), force = TRUE)

# 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, force = TRUE)

Tips for using the miRNetR package

1) 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.

2) The miRNetR package directly creates data files/tables/analysis/networks outputs in your current working directory.

3) Every command must be run in sequence, please do not skip any commands as this will result in errors downstream.

4) 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.

Starting from a list of miRNAs or targets

Starting from a list of miRNAs

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 (one entry per line as in the web server)
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."

You can also provide a list of vectors as input in SetupMirListData(): mirs = c("hsa-mir-101-3p", "hsa-mir-133b", "hsa-mir-147a", "hsa-mir-3140-3p", "hsa-mir-361-5p", "hsa-mir-510-5p") SetupMirListData(mirs, orgType = "hsa", idType = "mir_id", tissue = "Kidney")

#### 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

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

Starting from a list of targets

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

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

Starting from an expression table

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

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

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

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.

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!"

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!"


xia-lab/miRNetR documentation built on June 15, 2025, 11:38 a.m.