##################################################
## R script for miRNet
## Description: List data I/O and processing
## Author: Jeff Xia, jeff.xia@mcgill.ca
###################################################
#' Setup miRNA List Data
#' @param mirs A list of miRNAs.
#' @param orgType Organism type.
#' @param idType miRNA ID type.
#' @param tissue Tissue type.
#' @param targetOpt Target options (optional).
#' @return miRNA list data initialized.
#' @export
SetupMirListData <- function(mirs, orgType, idType, tissue, targetOpt=NULL){
dataSet$listData <- TRUE;
data.org <<- dataSet$org <- orgType;
dataSet$idType <- dataSet$mirnaType <- idType;
dataSet$targetOpt <- targetOpt;
dataSet$tissue <- tissue;
current.msg <<- NULL;
mir.mat <- .parseListData(mirs);
mir.vec <- mir.mat[,1];
if(data.type=="xeno.mir" && idType == "mir_id"){
mir.vec <- gsub("mir", "miR", mir.vec);
}
if(idType == "mir_id"){
rownames(mir.mat) <- as.vector(mir.vec);
}else{
rownames(mir.mat) <- mir.vec;
}
mir.mat <- mir.mat[,-1, drop=F];
dataSet$mir.orig <- mir.mat;
dataSet$data[["miRNA"]] <- mir.mat;
dataSet$id.types[["miRNA"]] <- idType;
dataSet$target.types[["miRNA"]] <- targetOpt;
dataSet<<- dataSet;
if(.on.public.web){
return (nrow(mir.mat));
}else{
return (paste("A total of", nrow(mir.mat), "unique items were entered."))
}
}
#' Setup List Data
#' @param listInput List to query.
#' @param orgType Organism type.
#' @param inputType Input type.
#' @param idType ID type.
#' @param tissue Tissue type.
#' @param target Target.
#' @return List data initialized.
#' @export
SetupIndListData <- function(listInput, orgType, inputType, idType, tissue, target){
data.org <<- dataSet$org <- orgType;
dataSet$tissue <- tissue;
current.msg <<- NULL;
dataSet$listData <- TRUE;
in.mat <- .parseListData(listInput);
in.vec <- in.mat[,1];
rownames(in.mat) <- in.vec;
in.mat <- in.mat[,-1, drop=F];
if(is.null(dataSet$data)){
dataSet$data <- dataSet$id.types <- list();
}
dataSet$data[[inputType]] <- in.mat;
dataSet$id.types[[inputType]] <- idType;
dataSet$target.types[[inputType]] <- target;
dataSet <<- dataSet;
if(.on.public.web){
return (nrow(in.mat));
}else{
return (paste("A total of", nrow(in.mat), "unique items were entered."))
}
}
#' Setup Item From Picklist
#' @param orgType Organism type.
#' @param tissue Tissue type.
#' @param idType ID type.
#' @export
SetupItemFromPickList <- function(orgType="hsa", tissue, idType){
if(!exists("picklist.vec")){
print("Could not find user entered disease list!");
return(0);
}
dataSet$org <- orgType;
dataSet$tissue <- tissue;
mir.mat <- .parsePickListItems(picklist.vec);
if(anal.type == "multilist" || anal.type == "dis2mir" ){
dataSet$data[[idType]] <- mir.mat;
}else{
dataSet$data[[idType]] <- mir.mat;
dataSet$mir.orig <- mir.mat;
dataSet$idType <- idType;
}
picklist.vec <<- NULL;
dataSet <<- dataSet;
return(nrow(mir.mat));
}
#' Get Unique Disease Names
#' @export
GetUniqueDiseaseNames <- function(){
db.path <- paste(sqlite.path, "mir2disease.sqlite", sep="");
statement <- "SELECT disease FROM disease";
return(GetUniqueEntries(db.path, statement));
}
#' Get Unique Molecule Names
#' @param orgType Organism type.
#' @export
GetUniqueMoleculeNames <- function(orgType="hsa"){
db.path <- paste(sqlite.path, "mir2molecule.sqlite", sep="");
statement <- paste("SELECT molecule FROM ",orgType, sep="");
return(GetUniqueEntries(db.path, statement));
}
#' Get Unique Epigene Names
#' @param orgType Organism type.
#' @export
GetUniqueEpigeneNames <- function(orgType="hsa"){
db.path <- paste(sqlite.path, "mir2epi.sqlite", sep="");
statement <- paste("SELECT epi_regulator FROM ",orgType, sep="");
return(GetUniqueEntries(db.path, statement));
}
#' Set Current Data Multi
#' @export
SetCurrentDataMulti <- function(){
dataSet$type <- nms.vec;
dataSet <<- dataSet;
if(.on.public.web){
return(1);
}else{
return (paste("Targets were entered!"))
}
}
.init.multilist <- function(){
anal.type <<- "multilist"
net.info <<- list();
mir.mappedu <<- matrix();
mir.resu <<- data.frame();
mirtargetu <<- vector();
mirtableu <<- vector();
seedsu <<- vector();
dataSet$directionInx <-vector()
dataSet$regDirection <-vector()
dataSet$tfTargetType <-vector()
edgeNumU <<- vector();
edgeu.res <<- data.frame();
nodeu.ids <<- vector();
nodeu.nms <<- vector();
mir.nmsu <<- vector();
tf.nms <<- vector();
gene.nms <<- vector()
dataSet<<- dataSet
}
#' Query Multi List
#' @export
QueryMultiList <- function(){
.init.multilist();
for(i in 1:length(dataSet$type)){
if (dataSet$type[i] == "mirna") {
input.type=paste("mir2", dataSet$targetOpt, sep="");
} else{
if(dataSet$type[i] == "protein2protein"){
input.type= "protein2protein"
}else if(grepl("2", dataSet$type[i])){
input.type=dataSet$type[i];
}else{
if(dataSet$type[i] != "tf"){
input.type=paste(dataSet$type[i], "2mir", sep="");
}
}
}
res <- SearchMultiNet(input.type);
if(res != 1) return(0);
net.info <<- .set.net.names(input.type);
}
typesu <<- dataSet$type;
if(length(nodeu.ids) == 0){
current.msg <<- paste("No interactions have been detected the given interaction types");
return(c(0,0,1));
}
node.res <- data.frame(Id=nodeu.ids, Label=nodeu.nms);
un.inx= !duplicated(node.res$Id)
node.res <- node.res[un.inx,];
edgeu.res[edgeu.res== "<NA>"] = 'NA'
edgeu.res = na.omit(edgeu.res);
fast.write.csv(node.res, file="orig_node_list.csv", row.names=FALSE);
fast.write.csv(mir.resu, file="mirnet_mir_target.csv", row.names=FALSE);
dataSet$mir.mapped <- na.omit(mir.mappedu);
dataSet$mir.res <- mir.resu;
dataSet$mirtarget <- mirtargetu;
dataSet$mirtable <- unique(mirtableu);
dataSet$seeds <- seedsu;
dataSet$nodeNumbers <-edgeNumU
dataSet <<- dataSet;
net.info <<- net.info;
multi.net <<- list(
node.data = node.res,
edge.data = edgeu.res
);
if(.on.public.web){
return(1);
}else{
return(current.msg);
}
}
.set.net.names <- function(input.type){
# Check and merge gene names
if (grepl("gene", input.type)) {
if (is.null(net.info$gene.nms)) {
net.info$gene.nms <- gene.nms
} else {
net.info$gene.nms <- unique(c(net.info$gene.nms, gene.nms))
}
}
# Check and merge lnc names
if (grepl("lnc", input.type)) {
if (is.null(net.info$lnc.nms)) {
net.info$lnc.nms <- lnc.nms
} else {
net.info$lnc.nms <- unique(c(net.info$lnc.nms, lnc.nms))
}
}
# Check and merge tf names
if (grepl("tf", input.type)) {
if (is.null(net.info$tf.nms)) {
net.info$tf.nms <- tf.nms
} else {
net.info$tf.nms <- unique(c(net.info$tf.nms, tf.nms))
}
}
# Check and merge dis names
if (grepl("dis", input.type)) {
if (is.null(net.info$dis.nms)) {
net.info$dis.nms <- dis.nms
} else {
net.info$dis.nms <- unique(c(net.info$dis.nms, dis.nms))
}
}
# Check and merge mol names
if (grepl("mol", input.type)) {
if (is.null(net.info$mol.nms)) {
net.info$mol.nms <- mol.nms
} else {
net.info$mol.nms <- unique(c(net.info$mol.nms, mol.nms))
}
}
# Check and merge epi names
if (grepl("epi", input.type)) {
if (is.null(net.info$epi.nms)) {
net.info$epi.nms <- epi.nms
} else {
net.info$epi.nms <- unique(c(net.info$epi.nms, epi.nms))
}
}
# Check and merge circ names
if (grepl("circ", input.type)) {
if (is.null(net.info$circ.nms)) {
net.info$circ.nms <- circ.nms
} else {
net.info$circ.nms <- unique(c(net.info$circ.nms, circ.nms))
}
}
# Check and merge pseudo names
if (grepl("pseudo", input.type)) {
if (is.null(net.info$pseudo.nms)) {
net.info$pseudo.nms <- pseudo.nms
} else {
net.info$pseudo.nms <- unique(c(net.info$pseudo.nms, pseudo.nms))
}
}
# Check and merge snc names
if (grepl("snc", input.type)) {
if (is.null(net.info$snc.nms)) {
net.info$snc.nms <- snc.nms
} else {
net.info$snc.nms <- unique(c(net.info$snc.nms, snc.nms))
}
}
# Check and merge snp names (the specific case you mentioned)
if (grepl("snp", input.type)) {
if (is.null(net.info$snp.nms)) {
net.info$snp.nms <- snp.nms
} else {
net.info$snp.nms <- unique(c(net.info$snp.nms, snp.nms))
}
}
return(net.info)
}
#' Query Multi List miRNA
#' @export
QueryMultiListMir <- function(){
.init.multilist();
for(i in 1:length(dataSet$type)){
if(dataSet$type[i] == "protein2protein"){
input.type=dataSet$type[i]
}else{
input.type=paste("mir2", dataSet$type[i], sep="");
}
res <- SearchMultiNet(input.type);
if(res != 1) return(0);
net.info <<- .set.net.names(dataSet$type[i]);
}
typesu <<- dataSet$type;
if(length(nodeu.ids) == 0){
current.msg <<- paste("No interactions have been detected the given interaction types");
return(c(0,0,1));
}
node.res <- data.frame(Id=nodeu.ids, Label=nodeu.nms);
un.inx= !duplicated(node.res$Id)
node.res <- node.res[un.inx,];
edgeu.res[edgeu.res== "<NA>"] = 'NA'
edgeu.res = na.omit(edgeu.res);
fast.write.csv(node.res, file="orig_node_list.csv", row.names=FALSE);
fast.write.csv(mir.resu, file="mirnet_mir_target.csv", row.names=FALSE);
dataSet$mir.mapped <- na.omit(mir.mappedu);
dataSet$mir.res <- mir.resu;
dataSet$mirtarget <- mirtargetu;
dataSet$mirtable <- mirtableu;
dataSet$seeds <- seedsu;
dataSet$nodeNumbers <-edgeNumU
dataSet <<- dataSet;
net.info <<- net.info;
multi.net <<- list(
node.data = node.res,
edge.data = edgeu.res
);
if(.on.public.web){
return(1);
}else{
return(current.msg);
}
}
.searchMultiNet_mir2gene<-function(input.type){
if (input.type == "mir2gene"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
idVec <- rownames(mir.mat);
db.type <- "mirtarbase";
orgType <- dataSet$org;
}else if(input.type %in% c("mir2gene_mirtarbase", "mir2gene_tarbase", "mir2gene_mirecords", "mir2gene_miranda")){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
idVec <- rownames(mir.mat);
db.type <- gsub("mir2gene_", "", input.type);
orgType <- dataSet$org;
}else if(input.type=="snpmir2gene"){
idType <- "mir_id";
mir.mat <- data.frame(unique(mir.nms))
rownames(mir.mat) = unique(mir.nms)
mir.mat[,1] = 0
idVec <- rownames(mir.mat);
db.type <- "";
orgType <- dataSet$org;
}else{
if(length(dataSet$data[["gene"]])!= 0){
idType <- dataSet$id.types[["gene"]];
mir.mat <- dataSet$data[["gene"]];
idVec <- rownames(mir.mat);
db.type <- "";
orgType <- dataSet$org;
}else{
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
idVec <- rownames(mir.mat);
db.type <- "";
orgType <- dataSet$org;
}
}
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2gene", sep=""), idVec, orgType, idType, db.type);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- paste("No hits found in the", db.type,"miRNA-gene database. Please check your input.", sep = " ");
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- paste("No hits found in the", db.type,"miRNA-gene database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.", sep = " ");
print(current.msg);
return(2);
} else {
fast.write.csv(mir.dic, file="mirnet_mir_gene.csv", row.names=FALSE); # this is just for mir2gene results table to show different db source with 0/1 to indicate present
res <- mir.dic[ , c("mir_id", "mir_acc", "symbol", "entrez", "experiment", "pmid", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-gene targets were identified from", db.type, sep = " ");
# record the mapped queries and change to same IDs used in network
uniq.mat <- unique(mir.dic[, c("mir_id", "symbol", idType)]);
hit.inx <- match(rownames(mir.mat), uniq.mat[, idType]);
if(idType %in% c("mir_id", "mir_acc")){
rownames(mir.mat) <- uniq.mat[hit.inx,"mir_id"];
}else{
rownames(mir.mat) <- uniq.mat[hit.inx,"symbol"];
}
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
# update col names
colnames(res) <- c("ID", "Accession", "Gene", "Entrez", "Experiment", "Literature", "Tissue");
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Entrez"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Entrez"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Gene"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
gene.nms <<- c(gene.nms, as.vector(res[,"Gene"]));
mir.nms <<- res[, "ID"];
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Experiment"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "gene");
if(input.type %in% c("mir2gene", "mir2gene_mirtarbase", "mir2gene_tarbase", "mir2gene_mirecords", "mir2gene_miranda")){
dataSet$mir2gene <<- mir.resu; # save this for network builder and table view
dataSet$tableStats <<- data.frame(Query=length(unique(mir.nms)),Mapped=length(unique(gene.nms)));
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2gene");
} else{
dataSet$gene2mir <<- res;
dataSet$tableStats <<- data.frame(Query=length(unique(gene.nms)),Mapped=length(unique(mir.nms)));
seedsu <<- c(seedsu, gene.nms);
mirtableu <<- c(mirtableu, "gene2mir");
}
}
return(1);
}
.searchMultiNet_molecule2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType %in% c("bta", "dme", "gga","sma", "cel", "ssc")){
curent.msg <<- "This organism is not supported for molecule network research."
print(current.msg);
return(0);
}
if (input.type == "mir2molecule"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
}else{
idType <- "molecule";
mir.mat <- dataSet$data[[idType]];
mir.vec <- rownames(mir.mat);
}
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2molecule", sep=""), mir.vec, orgType, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-small compound database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-small compound database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
res <- mir.dic[, c("mir_id","mir_acc","molecule", "pubchem_id", "method", "pmid", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-gene targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res) <- c("ID","Accession","Molecule", "Pubchem_ID", "Experiment", "Literature", "Tissue");
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Molecule"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Molecule"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Molecule"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
mol.nms <<- res[,"Molecule"];
mir.nms <<- res[, "ID"];
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Molecule"], TargetID=res[,"Pubchem_ID"], Experiment=res[,"Experiment"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "molecule");
if(input.type == "mir2molecule"){
dataSet$mir2mol <<- res; # save this for network builder and table view
dataSet$tableStats <<- data.frame(Query=length(unique(mir.nms)),Mapped=length(unique(mol.nms)));
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2mol");
} else{
dataSet$mol2mir <<- res;
dataSet$tableStats <<- data.frame(Query=length(unique(mol.nms)),Mapped=length(unique(mir.nms)));
seedsu <<- c(seedsu, mol.nms);
mirtableu <<- c(mirtableu, "mol2mir");
}
}
return(1);
}
.searchMultiNet_lncrna2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType != "hsa" ){
curent.msg <<- "Only human supports lncRNA network."
print(current.msg);
return(0);
}
if (input.type == "mir2lncrna"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
}else{
idType <- dataSet$id.types[["lncrna"]];
mir.mat <- dataSet$data[["lncrna"]];
mir.vec <- rownames(mir.mat);
}
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2lncRNA", sep=""), mir.vec, orgType, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-lncRNA database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-lncRNA database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
res <- mir.dic[ , c("mir_id","mir_acc","symbol","entrez", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-lncRNA targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res) <- c("ID", "Accession", "Gene", "Entrez", "Tissue");
res$Experiment <- rep("CLIP-Seq", nrow(res));
res$Literature <- rep("24297251", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez", "Experiment", "Literature", "Tissue")];
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Entrez"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Entrez"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Gene"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
lnc.nms <<- res[,"Gene"];
mir.nms <<- res[, "ID"];
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Experiment"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "lncrna");
if(input.type == "mir2lncrna"){
dataSet$mir2lnc <<- res; # save this for network builder and table view
dataSet$tableStats <<- data.frame(Query=length(unique(mir.nms)),Mapped=length(unique(lnc.nms)));
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2lnc");
} else{
dataSet$lnc2mir <<- res;
dataSet$tableStats <<- data.frame(Query=length(unique(lnc.nms)),Mapped=length(unique(mir.nms)));
seedsu <<- c(seedsu, lnc.nms);
mirtableu <<- c(mirtableu, "lnc2mir");
}
}
return(1);
}
.searchMultiNet_cir2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType != "hsa" ){
curent.msg <<- "Only human supports circRNA network."
print(current.msg);
return(0);
}
if (input.type == "mir2circrna"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
}else{
idType <- dataSet$id.types[["circrna"]];
mir.mat <- dataSet$data[["circrna"]];
mir.vec <- rownames(mir.mat);
}
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2circRNA", sep=""), mir.vec, orgType, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-circRNA database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-circRNA database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
res <- mir.dic[ , c("mir_id","mir_acc","symbol","entrez", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-circRNA targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res) <- c("ID", "Accession", "Gene", "Entrez", "Tissue");
res$Experiment <- rep("CLIP-Seq", nrow(res));
res$Literature <- rep("24297251", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez", "Experiment", "Literature", "Tissue")];
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Entrez"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Entrez"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Gene"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
circ.nms <<- res[,"Gene"];
mir.nms <<- res[, "ID"];
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Experiment"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "circrna");
if(input.type == "mir2circrna"){
dataSet$mir2circ <<- res; # save this for network builder and table view
dataSet$tableStats <<- data.frame(Query=length(unique(mir.nms)),Mapped=length(unique(circ.nms)));
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2circ");
} else{
dataSet$circ2mir <<- res;
dataSet$tableStats <<- data.frame(Query=length(unique(circ.nms)),Mapped=length(unique(mir.nms)));
seedsu <<- c(seedsu, circ.nms);
mirtableu <<- c(mirtableu, "circ2mir");
}
}
return(1);
}
.searchMultiNet_pseudogene2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType != "hsa" ){
curent.msg <<- "Only human supports pseudogene network."
print(current.msg);
return(0);
}
if (input.type == "mir2pseudogene"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
}else{
idType <- dataSet$id.types[["pseudogene"]];
mir.mat <- dataSet$data[["pseudogene"]];
mir.vec <- rownames(mir.mat);
}
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2pseudogene", sep=""), mir.vec, orgType, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-pseudogene database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-pseudogene database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
res <- mir.dic[ , c("mir_id","mir_acc","symbol","entrez", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-pseudogene targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res) <- c("ID", "Accession", "Gene", "Entrez", "Tissue");
res$Experiment <- rep("CLIP-Seq", nrow(res));
res$Literature <- rep("24297251", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez", "Experiment", "Literature", "Tissue")];
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Entrez"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Entrez"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Gene"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
pseudo.nms <<- res[,"Gene"];
mir.nms <<- res[, "ID"];
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Experiment"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "pseudogene");
if(input.type == "mir2pseudogene"){
dataSet$mir2pseudo <<- res; # save this for network builder and table view
dataSet$tableStats <<- data.frame(Query=length(unique(mir.nms)),Mapped=length(unique(pseudo.nms)));
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2pseudo");
} else{
dataSet$pseudo2mir <<- res;
dataSet$tableStats <<- data.frame(Query=length(unique(pseudo.nms)),Mapped=length(unique(mir.nms)));
seedsu <<- c(seedsu, pseudo.nms);
mirtableu <<- c(mirtableu, "pseudo2mir");
}
}
return(1);
}
.searchMultiNet_sncrna2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType != "hsa" ){
curent.msg <<- "Only human supports sncRNA network."
print(current.msg);
return(0);
}
if (input.type == "mir2sncrna"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
}else{
idType <- dataSet$id.types[["sncrna"]];
mir.mat <- dataSet$data[["sncrna"]];
mir.vec <- rownames(mir.mat);
}
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2sncRNA", sep=""), mir.vec, orgType, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-sncRNA database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-sncRNA database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
res <- mir.dic[ , c("mir_id","mir_acc","symbol","entrez", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-sncRNA targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res) <- c("ID", "Accession", "Gene", "Entrez", "Tissue");
res$Experiment <- rep("CLIP-Seq", nrow(res));
res$Literature <- rep("24297251", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez", "Experiment", "Literature", "Tissue")];
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Entrez"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Entrez"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Gene"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
snc.nms <<- res[,"Gene"];
mir.nms <<- res[, "ID"];
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Experiment"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "sncrna");
if(input.type == "mir2sncrna"){
dataSet$mir2snc <<- res; # save this for network builder and table view
dataSet$tableStats <<- data.frame(Query=length(unique(mir.nms)),Mapped=length(unique(snc.nms)));
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2snc");
} else{
dataSet$snc2mir <<- res;
dataSet$tableStats <<- data.frame(Query=length(unique(snc.nms)),Mapped=length(unique(mir.nms)));
seedsu <<- c(seedsu, snc.nms);
mirtableu <<- c(mirtableu, "snc2mir");
}
}
return(1);
}
.searchMultiNet_tf2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType %in% c("bta", "ssc","gga","dme", "sma") ){
current.msg <<- "This organism is not supported for transcription factors network research."
print(current.msg);
return(0);
}
if (input.type == "mir2tf"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
if (convtMat2pre == "TRUE"){
# Modify mir.vec before search if converting mature miR to precursor
conv_res <- convertMat2Pre(mir.vec, idType)
matpre_conversion <- conv_res$mat
unmatched <- conv_res$vec
if (idType == "mir_id"){
mir.vec <- unique(matpre_conversion[,"Precursor"])
unmatched <- gsub("-[35]p$", "", gsub("miR", "mir", unmatched))
} else if (idType == "mir_acc"){
mir.vec <- unique(matpre_conversion[,"Precursor_ACC"])
}
mir.vec <- c(mir.vec, unmatched)
}
}else if(input.type == "gene2tf"){
idType <- dataSet$id.types[["gene"]];
mir.mat <- dataSet$data[["gene"]];
mir.vec <- rownames(mir.mat);
}else if(input.type == "tf2gene"){
idType <- dataSet$id.types[["tf"]];
if(idType=="symbol"){
idType <- "tfname"; # when tf as input, use "tfname" column
}else{
idType <- "tfid";
}
mir.mat <- dataSet$data[["tf"]];
mir.vec <- rownames(mir.mat);
}else{
idType <- dataSet$id.types[["tf"]];
mir.mat <- dataSet$data[["tf"]];
mir.vec <- rownames(mir.mat);
}
if(!input.type %in% c("tf2gene", "gene2tf")){
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2tf", sep=""), mir.vec, orgType, idType);
}else{
if(input.type == "gene2tf"){
targetType <- dataSet$target.types[["gene"]];
}else{
targetType <- dataSet$target.types[["tf"]];
}
dataSet$tfTargetType <<- c(dataSet$tfTargetType, targetType)
table.nm <- paste(dataSet$org,targetType, sep="_");
mir.dic <- QueryTFSQLite(table.nm, mir.vec, idType);
}
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-TF database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-TF database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
if(!input.type %in% c("tf2gene", "gene2tf")){
res <- mir.dic[ , c("mir_id","mir_acc","symbol","entrez", "action_type", "pmid", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-TF targets were identified!");
if (input.type == "mir2tf" && convtMat2pre == "TRUE"){
# Revert pre-miR to queried mature-miR
query_mat <- matpre_conversion[matpre_conversion[, 5] == "mat", ]
matches <- NA
if (idType == "mir_id"){
matches <- match(res[,"mir_id"], query_mat[,"Precursor"])
}
if (idType == "mir_acc"){
matches <- match(res[,"mir_acc"], query_mat[,"Precursor_ACC"])
}
matches_idx <- !is.na(matches)
res[matches_idx, "mir_id"] <- query_mat[matches[matches_idx], "Mature"]
res[matches_idx, "mir_acc"] <- query_mat[matches[matches_idx], "Mature_ACC"]
}
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res) <- c("ID", "Accession", "Gene", "Entrez", "Direction", "Literature", "Tissue");
res$Experiment <- rep("ChIP-seq", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez", "Direction", "Experiment", "Literature", "Tissue")];
direction <- res$Direction;
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Entrez"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Entrez"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Gene"]);
}else{
res <- mir.dic[ ,c("tfname","tfid","symbol","entrez", "Direction", "Literature")]; # "tfname" is TF, "symbol" is target gene
direction <- res$Direction
literature <- res$Literature
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-TF targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res)[c(1:4)] <- c("ID", "Accession", "Gene", "Entrez");
res$Experiment <- rep("ChIP-seq", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez")];
display.res <- res;
edge.res <- data.frame(Source=res[,3],Target=res[,1]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"ID"], ID2=res[,"Gene"]);
node.nms <- c(Name1=res[,"Accession"], Name2=res[,"Entrez"]);
}
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
if(input.type %in% c("tf2mir", "mir2tf")){
tf.nms <<- unique(c(tf.nms, as.vector(res[,"Gene"])));
mir.nms <<- res[,"ID"];
direction <- gsub("Activation[(]feedback[)]", "+", direction);
direction <- gsub("Repression[(]feedback[)]", "-", direction);
direction <- gsub("Activation", "+", direction);
direction <- gsub("Repression", "-", direction);
res$Direction <- direction;
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Direction"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
l = nrow(mir.resu);
dataSet$directionInx =c(dataSet$directionInx, paste0(res[,1],res[,3]));
dataSet$regDirection =c(dataSet$regDirection, res$Experiment);
dataSet<<-dataSet;
}else{
gene.nms <<- unique(c(gene.nms, as.vector(res[,"Gene"])));
tf.nms <<- unique(c(tf.nms, as.vector(res[,"ID"])));
mir.nms <<- "";
direction <- gsub("Activation", "+", direction)
direction <- gsub("Repression", "-", direction)
if(targetType == "encode"){
res$Literature <- gsub("ENCODE", "29126249", literature);
res$Experiment <- rep("ChIP-seq", nrow(res));
res$Direction <- direction
}else if(targetType == "jaspar"){
res$Literature <- gsub("JASPAR", "31701148", literature);
res$Experiment <- rep("Computational", nrow(res));
res$Direction <- direction
}else if(targetType == "chea"){
res$Literature <- gsub("ChEA", "20709693", literature);
res$Experiment <- rep("ChIP-X", nrow(res));
res$Direction <- direction
}else if(targetType == "trrust"){
res$Experiment <- rep("TRRUST", nrow(res));
res$Literature <- literature
res$Direction <- direction
}else if(targetType == "regnetwork"){
res$Experiment <- rep("RegNetwork", nrow(res));
res$Literature <- literature
res$Direction <- direction
}
if(targetType %in% c("trrust", "regnetwork")){
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Direction"], Literature=res[,"Literature"],Tissue=rep("Not Applicable", nrow(res)));
l = nrow(mir.resu)
dataSet$directionInx =c(dataSet$directionInx, paste0(res[,1],res[,3]))
dataSet$regDirection =c(dataSet$regDirection, res$Experiment)
dataSet<<-dataSet
}else{
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Experiment"], Literature=res[,"Literature"],Tissue=rep("Not Applicable", nrow(res)));
}
}
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "tf");
if(input.type == "mir2tf"){
dataSet$mir2tf <<- res; # save this for network builder and table view
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2tf");
} else if(input.type == "tf2gene"){
dataSet$tf2gene <<- res;
seedsu <<- c(seedsu, tf.nms);
mirtableu <<- c(mirtableu, "tf2gene");
} else if(input.type == "gene2tf"){
dataSet$gene2tf <<- res;
seedsu <<- c(seedsu, tf.nms);
mirtableu <<- c(mirtableu, "gene2tf");
} else{
dataSet$tf2mir <<- res;
seedsu <<- c(seedsu, tf.nms);
mirtableu <<- c(mirtableu, "tf2mir");
}
}
return(1);
}
.searchMultiNet_tf2gene2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType %in% c("bta", "ssc","gga","dme", "sma") ){
curent.msg <<- "This organism is not supported for transcription factors network research."
print(current.msg);
return(0);
}
idType <- dataSet$id.types[["tf"]];
if(idType=="symbol"){
idType <- "tfname";
}else{
idType <- "tfid";
}
mir.mat <- dataSet$data[["tf"]];
mir.vec <- rownames(mir.mat);
targetType <- dataSet$target.types[["tf"]];
dataSet$tfTargetType <<- c(dataSet$tfTargetType, targetType)
table.nm <- paste(dataSet$org,targetType, sep="_");
mir.dic <- QueryTFSQLite(table.nm, mir.vec, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-TF database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-TF database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
# map gene2mir
idVec <- as.vector(unique(mir.dic[, c("entrez")]));
mir.dic2 <- Query.miRNetDB(paste(sqlite.path, "mir2gene", sep=""), idVec, dataSet$org, "entrez");
# tf2gene
res <- mir.dic[ ,c("tfname","tfid","symbol","entrez", "Direction", "Literature")]; # "tfname" is TF, "symbol" is target gene
direction <- res$Direction
literature <- res$Literature
rownames(res) <- mir.dic$mirnet;
# gene2mir
res2 <- mir.dic2[ , c("mir_id","mir_acc","symbol","entrez", "experiment", "pmid", "tissue")];
rownames(res2) <- mir.dic2$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-TF targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
#tf2gene
colnames(res)[c(1:4)] <- c("ID", "Accession", "Gene", "Entrez");
res$Experiment <- rep("ChIP-seq", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez")];
display.res <- res;
edge.res <- data.frame(Source=res[,3],Target=res[,1]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"ID"], ID2=res[,"Gene"]);
node.nms <- c(Name1=res[,"Accession"], Name2=res[,"Entrez"]);
#gene2mir
# update col names
colnames(res2) <- c("ID", "Accession", "Gene", "Entrez", "Experiment", "Literature", "Tissue");
edge.res2 <- data.frame(Source=res2[,"Accession"],Target=res2[,"Entrez"]); # IDs
if(nrow(res2)!=0){
row.names(edge.res2) <- 1:nrow(res2);
}
node.ids2 <- c(ID1=res2[,"Accession"], ID2=res2[,"Entrez"]);
node.nms2 <- c(Name1=res2[,"ID"], Name2=res2[,"Gene"]);
# rbind tf2gene and gene2mir network
edge.res3 <- rbind(edge.res,edge.res2);
node.ids3 <- c(node.ids,node.ids2);
node.nms3 <- c(node.nms,node.nms2);
edgeu.res <<- rbind(edgeu.res, edge.res3); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids3);
edgeNumU <<- c(edgeNumU, nrow(edge.res3))
nodeu.nms <<- c(nodeu.nms, node.nms3);
gene.nms <<- unique(c(gene.nms, as.vector(res[,"Gene"])));
tf.nms <<- unique(c(tf.nms, as.vector(res[,"ID"])));
mir.nms <<- res2[,"ID"];
direction <- gsub("Activation", "+", direction)
direction <- gsub("Repression", "-", direction)
if(targetType == "encode"){
res$Literature <- gsub("ENCODE", "29126249", literature);
res$Experiment <- rep("ChIP-seq", nrow(res));
res$Direction <- direction
}else if(targetType == "jaspar"){
res$Literature <- gsub("JASPAR", "31701148", literature);
res$Experiment <- rep("Computational", nrow(res));
res$Direction <- direction
}else if(targetType == "chea"){
res$Literature <- gsub("ChEA", "20709693", literature);
res$Experiment <- rep("ChIP-X", nrow(res));
res$Direction <- direction
}else if(targetType == "trrust"){
res$Experiment <- rep("TRRUST", nrow(res));
res$Literature <- literature
res$Direction <- direction
}else if(targetType == "regnetwork"){
res$Experiment <- rep("RegNetwork", nrow(res));
res$Literature <- literature
res$Direction <- direction
}
if(targetType %in% c("trrust", "regnetwork")){
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Direction"], Literature=res[,"Literature"],Tissue=rep("Not Applicable", nrow(res)));
l = nrow(mir.resu)
dataSet$directionInx =c(dataSet$directionInx, paste0(res[,1],res[,3]))
dataSet$regDirection =c(dataSet$regDirection, res$Experiment)
dataSet<<-dataSet
}else{
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Experiment"], Literature=res[,"Literature"],Tissue=rep("Not Applicable", nrow(res)));
}
res2 <- data.frame(ID=res2[,"ID"], Accession=res2[,"Accession"], Target=res2[,"Gene"], TargetID=res2[,"Entrez"], Experiment=res2[,"Experiment"], Literature=res2[,"Literature"], Tissue=res2[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res, res2);
mirtargetu <<- c(mirtargetu, "tf");
dataSet$tf2gene <<- res;
dataSet$gene2mir <<- res2;
seedsu <<- c(seedsu, tf.nms);
mirtableu <<- c(mirtableu, "tf2gene");
mirtableu <<- c(mirtableu, "gene2mir");
}
return(1);
}
.searchMultiNet_gene2tf2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType %notin% c("hsa", "mmu") ){
curent.msg <<- "This organism is not supported for transcription factors network research."
print(current.msg);
return(0);
}
idType <- dataSet$id.types[["gene"]];
mir.mat <- dataSet$data[["gene"]];
mir.vec <- rownames(mir.mat);
targetType <- dataSet$target.types[["gene"]];
dataSet$tfTargetType <<- c(dataSet$tfTargetType, targetType)
table.nm <- paste(dataSet$org,targetType, sep="_");
mir.dic <- QueryTFSQLite(table.nm, mir.vec, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-TF database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-TF database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
# map tf2mir
idVec <- as.vector(unique(mir.dic[, c("tfid")]));
mir.dic2 <- Query.miRNetDB(paste(sqlite.path, "mir2tf", sep=""), idVec, dataSet$org, "entrez");
# gene2tf
res <- mir.dic[ ,c("tfname","tfid","symbol","entrez", "Direction", "Literature")]; # "tfname" is TF, "symbol" is target gene
direction <- res$Direction
literature <- res$Literature
rownames(res) <- mir.dic$mirnet;
# tf2mir
res2 <- mir.dic2[ , c("mir_id","mir_acc","symbol","entrez", "action_type", "pmid", "tissue")];
rownames(res2) <- mir.dic2$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of gene-TF targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
#gene2tf
colnames(res)[c(1:4)] <- c("ID", "Accession", "Gene", "Entrez");
res$Experiment <- rep("ChIP-seq", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez")];
display.res <- res;
edge.res <- data.frame(Source=res[,3],Target=res[,1]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"ID"], ID2=res[,"Gene"]);
node.nms <- c(Name1=res[,"Accession"], Name2=res[,"Entrez"]);
#tf2mir
# update col names
colnames(res2) <- c("ID", "Accession", "Gene", "Entrez", "Direction", "Literature", "Tissue");
res2$Experiment <- rep("ChIP-seq", nrow(res2));
res2 <- res2[, c("ID", "Accession", "Gene", "Entrez", "Direction", "Experiment", "Literature", "Tissue")];
direction2 <- res2$Direction;
edge.res2 <- data.frame(Source=res2[,"Accession"],Target=res2[,"Entrez"]); # IDs
if(nrow(res2)!=0){
row.names(edge.res2) <- 1:nrow(res2);
}
node.ids2 <- c(ID1=res2[,"Accession"], ID2=res2[,"Entrez"]);
node.nms2 <- c(Name1=res2[,"ID"], Name2=res2[,"Gene"]);
# rbind gene2tf and tf2mir network
edge.res3 <- rbind(edge.res,edge.res2);
node.ids3 <- c(node.ids,node.ids2);
node.nms3 <- c(node.nms,node.nms2);
edgeu.res <<- rbind(edgeu.res, edge.res3); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids3);
edgeNumU <<- c(edgeNumU, nrow(edge.res3))
nodeu.nms <<- c(nodeu.nms, node.nms3);
gene.nms <<- unique(c(gene.nms, as.vector(res[,"Gene"])));
tf.nms <<- unique(c(tf.nms, as.vector(res[,"ID"])));
mir.nms <<- res2[,"ID"];
direction <- gsub("Activation", "+", direction)
direction <- gsub("Repression", "-", direction)
if(targetType == "encode"){
res$Literature <- gsub("ENCODE", "29126249", literature);
res$Experiment <- rep("ChIP-seq", nrow(res));
res$Direction <- direction
}else if(targetType == "jaspar"){
res$Literature <- gsub("JASPAR", "31701148", literature);
res$Experiment <- rep("Computational", nrow(res));
res$Direction <- direction
}else if(targetType == "chea"){
res$Literature <- gsub("ChEA", "20709693", literature);
res$Experiment <- rep("ChIP-X", nrow(res));
res$Direction <- direction
}else if(targetType == "trrust"){
res$Experiment <- rep("TRRUST", nrow(res));
res$Literature <- literature
res$Direction <- direction
}else if(targetType == "regnetwork"){
res$Experiment <- rep("RegNetwork", nrow(res));
res$Literature <- literature
res$Direction <- direction
}
if(targetType %in% c("trrust", "regnetwork")){
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Direction"], Literature=res[,"Literature"],Tissue=rep("Not Applicable", nrow(res)));
l = nrow(mir.resu)
dataSet$directionInx =c(dataSet$directionInx, paste0(res[,1],res[,3]))
dataSet$regDirection =c(dataSet$regDirection, res$Experiment)
dataSet<<-dataSet
}else{
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Experiment"], Literature=res[,"Literature"],Tissue=rep("Not Applicable", nrow(res)));
}
direction2 <- gsub("Activation[(]feedback[)]", "+", direction2);
direction2 <- gsub("Repression[(]feedback[)]", "-", direction2);
direction2 <- gsub("Activation", "+", direction2);
direction2 <- gsub("Repression", "-", direction2);
res2$Direction <- direction2;
res2 <- data.frame(ID=res2[,"ID"], Accession=res2[,"Accession"], Target=res2[,"Gene"], TargetID=res2[,"Entrez"], Experiment=res2[,"Direction"], Literature=res2[,"Literature"], Tissue=res2[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res, res2);
mirtargetu <<- c(mirtargetu, "tf");
dataSet$gene2tf <<- res;
dataSet$tf2mir <<- res2;
seedsu <<- c(seedsu, gene.nms);
mirtableu <<- c(mirtableu, "gene2tf");
mirtableu <<- c(mirtableu, "tf2mir");
}
return(1);
}
.searchMultiNet_mir2tf2gene <- function(input.type){
orgType <- dataSet$org;
if(orgType %notin% c("hsa", "mmu") ){
curent.msg <<- "This organism is not supported for transcription factors network research."
print(current.msg);
return(0);
}
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2tf", sep=""), mir.vec, orgType, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-TF database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-TF database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
# map tf2gene
idVec <- as.vector(unique(mir.dic[, c("entrez")]));
table.nm <- paste(dataSet$org,"trrust", sep="_");
mir.dic2 <- QueryTFSQLite(table.nm, idVec, "tfid");
# mir2tf
res <- mir.dic[ , c("mir_id","mir_acc","symbol","entrez", "action_type", "pmid", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-TF interactions were identified!");
# tf2gene
res2 <- mir.dic2[ ,c("tfname","tfid","symbol","entrez", "Direction", "Literature")]; # "tfname" is TF, "symbol" is target gene
direction2 <- res2$Direction
literature2 <- res2$Literature
rownames(res2) <- mir.dic2$mirnet;
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
#mir2tf
colnames(res) <- c("ID", "Accession", "Gene", "Entrez", "Direction", "Literature", "Tissue");
res$Experiment <- rep("ChIP-seq", nrow(res));
res <- res[, c("ID", "Accession", "Gene", "Entrez", "Direction", "Experiment", "Literature", "Tissue")];
direction <- res$Direction;
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Entrez"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Entrez"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Gene"]);
#tf2gene
# update col names
colnames(res2)[c(1:4)] <- c("ID", "Accession", "Gene", "Entrez");
res2$Experiment <- rep("ChIP-seq", nrow(res2));
res2 <- res2[, c("ID", "Accession", "Gene", "Entrez")];
edge.res2 <- data.frame(Source=res2[,3],Target=res2[,1]); # IDs
if(nrow(res2)!=0){
row.names(edge.res2) <- 1:nrow(res2);
}
node.ids2 <- c(ID1=res2[,"ID"], ID2=res2[,"Gene"]);
node.nms2 <- c(Name1=res2[,"Accession"], Name2=res2[,"Entrez"]);
# rbind mir2tf and tf2gene network
edge.res3 <- rbind(edge.res,edge.res2);
node.ids3 <- c(node.ids,node.ids2);
node.nms3 <- c(node.nms,node.nms2);
edgeu.res <<- rbind(edgeu.res, edge.res3); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids3);
edgeNumU <<- c(edgeNumU, nrow(edge.res3))
nodeu.nms <<- c(nodeu.nms, node.nms3);
gene.nms <<- unique(c(gene.nms, as.vector(res2[,"Gene"])));
tf.nms <<- unique(c(tf.nms, as.vector(res2[,"ID"])));
mir.nms <<- res[,"ID"];
# mir2tf
direction <- gsub("Activation[(]feedback[)]", "+", direction);
direction <- gsub("Repression[(]feedback[)]", "-", direction);
direction <- gsub("Activation", "+", direction);
direction <- gsub("Repression", "-", direction);
res$Direction <- direction;
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Gene"], TargetID=res[,"Entrez"], Experiment=res[,"Direction"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
dataSet$directionInx =c(dataSet$directionInx, paste0(res[,1],res[,3]));
dataSet$regDirection =c(dataSet$regDirection, res$Experiment);
dataSet<<-dataSet;
# tf2gene
res2$Experiment <- rep("TRRUST", nrow(res2));
res2$Literature <- literature2
res2$Direction <- direction2
res2 <- data.frame(ID=res2[,"ID"], Accession=res2[,"Accession"], Target=res2[,"Gene"], TargetID=res2[,"Entrez"], Experiment=res2[,"Direction"], Literature=res2[,"Literature"],Tissue=rep("Not Applicable", nrow(res2)));
dataSet$directionInx =c(dataSet$directionInx, paste0(res2[,1],res2[,3]))
dataSet$regDirection =c(dataSet$regDirection, res2$Experiment)
dataSet<<-dataSet
mir.resu <<- rbind(mir.resu, res, res2);
mirtargetu <<- c(mirtargetu, "tf");
dataSet$tf2gene <<- res2;
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "tf2gene");
}
return(1);
}
.searchMultiNet_epi2mir <- function(input.type){
orgType <- dataSet$org;
if(orgType %in% c("bta", "dme","gga","sma", "cel","dre","rno", "ssc") ){
curent.msg <<- "Only human and mouse are supported for epigene network."
print(current.msg);
return(0);
}
if (input.type == "mir2epigene"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
}else{
idType <- "epi_regulator";
mir.mat <- dataSet$data[[idType]]
mir.vec <- rownames(mir.mat);
}
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2epi", sep=""), mir.vec, orgType, idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-epigenetic modifier database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-epigenetic modifier database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else {
res <- mir.dic[ , c("mir_id", "mir_acc", "epi_regulator", "experiment", "condition", "pmid", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-epigene targets were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res) <- c("ID","Accession","Epigenetics","Experiment", "Condition","Literature", "Tissue");
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Epigenetics"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Epigenetics"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Epigenetics"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
epi.nms <<- res[,"Epigenetics"];
mir.nms <<- res[, "ID"];
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Epigenetics"], TargetID=res[,"Epigenetics"], Experiment=res[,"Experiment"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "epigenetics");
if(input.type == "mir2epigene"){
dataSet$mir2epi <<- res; # save this for network builder and table view
dataSet$tableStats <<- data.frame(Query=length(unique(mir.nms)),Mapped=length(unique(epi.nms)));
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2epi");
} else{
dataSet$epi2mir <<- res;
dataSet$tableStats <<- data.frame(Query=length(unique(epi.nms)),Mapped=length(unique(mir.nms)));
seedsu <<- c(seedsu, epi.nms);
mirtableu <<- c(mirtableu, "epi2mir");
}
}
return(1);
}
.searchMultiNet_disease2mir <-function(input.type){
if(dataSet$org != "hsa" ){
curent.msg <<- "Only human is supported for disease network."
print(current.msg);
return(0);
}
if (input.type == "mir2disease"){
idType <- dataSet$mirnaType;
mir.mat <- dataSet$mir.orig;
mir.vec <- rownames(mir.mat);
}else{
idType <- "disease";
mir.mat <- dataSet$data[[idType]];
mir.vec <- rownames(mir.mat);
}
mir.dic <- Query.miRNetDB(paste(sqlite.path, "mir2disease", sep=""), mir.vec, "disease", idType);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the miRNA-disease database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the miRNA-disease database. The miRNA list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else{
res <- mir.dic[ , c("mir_id", "mir_acc", "disease", "method", "database", "pmid", "tissue")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of miRNA-disease associations were identified!");
# update the data
gd.inx <- rownames(mir.mat) %in% unique(res[, idType]);
mir.mat <- mir.mat[gd.inx,,drop=F];
mir.mappedu <<- rbind(mir.mappedu, mir.mat);
colnames(res) <- c("ID","Accession","Disease","Experiment", "Database", "Literature", "Tissue");
display.res <- res;
edge.res <- data.frame(Source=res[,"Accession"],Target=res[,"Disease"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Accession"], ID2=res[,"Disease"]);
node.nms <- c(Name1=res[,"ID"], Name2=res[,"Disease"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
dis.nms <<- res[,"Disease"];
mir.nms <<- res[, "ID"];
res <- data.frame(ID=res[,"ID"], Accession=res[,"Accession"], Target=res[,"Disease"], TargetID=res[,"Disease"], Experiment=res[,"Experiment"], Literature=res[,"Literature"], Tissue=res[,"Tissue"]);
mir.resu <<- rbind(mir.resu, res);
mirtargetu <<- c(mirtargetu, "disease");
if(input.type == "mir2disease"){
dataSet$mir2dis <<- res; # save this for network builder and table view
dataSet$tableStats <<- data.frame(Query=length(unique(mir.nms)),Mapped=length(unique(dis.nms)));
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "mir2dis");
} else{
dataSet$dis2mir <<- res;
dataSet$tableStats <<- data.frame(Query=length(unique(dis.nms)),Mapped=length(unique(mir.nms)));
seedsu <<- c(seedsu, dis.nms);
mirtableu <<- c(mirtableu, "dis2mir");
}
}
return(1);
}
.searchMultiNet_protein2protein <-function(input.type){
mir.vec <- unique(unname(nodeu.ids))
table.nm = paste(data.org, dataSet$ppiOpts$db.name, sep="_")
require.exp = dataSet$ppiOpts$require.exp
min.score = as.numeric(dataSet$ppiOpts$min.score)
mir.dic <- QueryPpiSQLiteZero(table.nm, mir.vec, require.exp, min.score);
hit.num <- nrow(mir.dic)
if (hit.num == 0 && dataSet$tissue == "na") {
current.msg <<- "No hits found in the PPI database. Please check your input. ";
print(current.msg);
return(0);
} else if (hit.num == 0 && dataSet$tissue != "na") {
current.msg <<- "No hits found in the PPI database. The gene list has not been annotated by this tissue type. Please try NOT to specify the tissue.";
print(current.msg);
return(2);
} else{
res <- mir.dic[ , c("id1", "id2", "name1", "name2")];
rownames(res) <- mir.dic$mirnet;
current.msg <<- paste("A total of unqiue", hit.num, "pairs of protein-protein interactions were identified!");
# update the data
colnames(res) <- c("ID1","ID2","Symbol1","Symbol2");
display.res <- res;
edge.res <- data.frame(Source=res[,"Symbol1"],Target=res[,"Symbol2"]); # IDs
if(nrow(res)!=0){
row.names(edge.res) <- 1:nrow(res);
}
node.ids <- c(ID1=res[,"Symbol1"], ID2=res[,"Symbol2"]);
node.nms <- c(Name1=res[,"ID1"], Name2=res[,"ID2"]);
edgeu.res <<- rbind(edgeu.res, edge.res); #edgeu.res is an empty dataframe defined in QueryNet
edgeu.res <<- edgeu.res[!duplicated(edgeu.res), ];
nodeu.ids <<- c(nodeu.ids, node.ids);
edgeNumU <<- c(edgeNumU, nrow(edge.res))
nodeu.nms <<- c(nodeu.nms, node.nms);
if(table.nm == "hsa_string"){
res$Literature <- rep("25352553", nrow(res));
}else if(table.nm == "hsa_innate"){
res$Literature <- rep("23180781", nrow(res));
}else if(table.nm == "hsa_rolland"){
res$Literature <- rep("25416956", nrow(res));
}else if(table.nm == "hsa_huri"){
res$Literature <- rep("32296183", nrow(res));
}
na.res = rep("Not Applicable", nrow(res))
protein1.nms <<- res[,"Symbol1"];
protein2.nms <<- res[,"Symbol2"];
res <- data.frame(ID=res[,"Symbol1"], Accession=res[,"ID1"], Target=res[,"Symbol2"], TargetID=res[,"ID2"], Experiment=na.res, Literature=res[,"Literature"], Tissue=na.res);
mir.resu <<- rbind(mir.resu, res);
if(input.type == "protein2protein"){
dataSet$protein2protein <<- res; # save this for network builder and table view
seedsu <<- c(seedsu, mir.nms);
mirtableu <<- c(mirtableu, "protein2protein");
}
}
return(1);
}
#' Search Multi-Network Data
#' @param input.type miRNA and target, e.g., mir2gene, mir2molecule, mir2disease.
#' @export
SearchMultiNet <- function(input.type){
cat("input.type ===> ", input.type, "\n")
node.ids <- vector();
res <- 0;
if (input.type %in% c("gene2mir","mir2gene","snpmir2gene", "mir2gene_mirtarbase", "mir2gene_tarbase", "mir2gene_mirecords", "mir2gene_miranda")){
res <- .searchMultiNet_mir2gene(input.type);
}else if (input.type %in% c("molecule2mir","mir2molecule","mol2mir","mir2mol")){
res <- .searchMultiNet_molecule2mir(input.type)
}else if (input.type %in% c("lncrna2mir" ,"mir2lncrna" ,"lnc2mir" ,"mir2lnc")){
res <- .searchMultiNet_lncrna2mir(input.type)
}else if (input.type %in% c("pseudogene2mir", "mir2pseudogene", "pseudo2mir","mir2pseudo")){
res <- .searchMultiNet_pseudogene2mir(input.type)
}else if (input.type %in% c("sncrna2mir" ,"mir2sncrna", "snc2mir","mir2snc")){
res <- .searchMultiNet_sncrna2mir(input.type)
}else if (input.type %in% c("tf2mir", "mir2tf", "tf2gene", "gene2tf")){
res <- .searchMultiNet_tf2mir(input.type)
}else if (input.type %in% c("tf2gene2mir")){
res <- .searchMultiNet_tf2gene2mir(input.type)
}else if (input.type %in% c("gene2tf2mir")){
res <- .searchMultiNet_gene2tf2mir(input.type)
}else if (input.type %in% c("mir2tf2gene")){
res <- .searchMultiNet_mir2tf2gene(input.type)
}else if(input.type %in% c("epi2mir", "mir2epi")){
res <- .searchMultiNet_epi2mir(input.type)
}else if (input.type %in% c("disease2mir", "mir2disease", "dis2mir", "mir2dis")){
res <- .searchMultiNet_disease2mir(input.type)
}else if(input.type == "protein2protein"){
res <- .searchMultiNet_protein2protein(input.type);
}else if(input.type %in% c("circrna2mir" ,"mir2circrna", "circ2mir","mir2circ")){
res <- .searchMultiNet_cir2mir(input.type);
}
if(res !=0){
mir.nmsu <<- unique(c(mir.nmsu, mir.nms));
}
return(res);
}
#' Set Protein-Protein Interaction Db
#' @param db Database name.
#' @param req Logical.
#' @param conf Min score.
#' @export
SetPpiDb <- function(db, req, conf){
dataSet$ppiOpts$db.name=db;
if(req=="true"){
dataSet$ppiOpts$require.exp=TRUE;
}else{
dataSet$ppiOpts$require.exp=FALSE;
}
dataSet$ppiOpts$min.score=as.numeric(conf)
dataSet<<-dataSet
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.