# Functions for exporting networks to various network visualization software
exportNetworkToVisANT = function(
adjMat,
file = NULL,
weighted = TRUE,
threshold = 0.5,
maxNConnections = NULL,
probeToGene = NULL)
{
adjMat = as.matrix(adjMat)
adjMat[is.na(adjMat)] = 0;
nRow = nrow(adjMat);
checkAdjMat(adjMat, min = -1, max = 1);
probes = dimnames(adjMat)[[1]]
if (!is.null(probeToGene))
{
probes2genes = match(probes, probeToGene[,1]);
if (sum(is.na(probes2genes)) > 0)
stop("Error translating probe names to gene names: some probe names could not be translated.");
probes = probeToGene[probes2genes, 2]
}
rowMat = matrix(c(1:nRow), nRow, nRow, byrow = TRUE);
colMat = matrix(c(1:nRow), nRow, nRow);
adjDst = as.dist(adjMat);
dstRows = as.dist(rowMat);
dstCols = as.dist(colMat);
if (is.null(maxNConnections)) maxNConnections = length(adjDst);
ranks = rank(-abs(adjDst), na.last = TRUE, ties.method = "first")
edges = abs(adjDst) > threshold & ranks <= maxNConnections
nEdges = sum(edges)
visAntData = data.frame (
from = probes[dstRows[edges]],
to = probes[dstCols[edges]],
direction = rep(0, nEdges),
method = rep("M0039", nEdges),
weight = if (weighted) adjDst[edges] else rep(1, nEdges)
);
if (!is.null(file))
write.table(visAntData, file = file, quote = FALSE, row.names = FALSE, col.names = FALSE)
invisible(visAntData);
}
exportNetworkToCytoscape = function(
adjMat,
edgeFile = NULL,
nodeFile = NULL,
weighted = TRUE,
threshold = 0.5,
nodeNames = NULL,
altNodeNames = NULL,
nodeAttr = NULL,
includeColNames = TRUE)
{
adjMat = as.matrix(adjMat)
adjMat[is.na(adjMat)] = 0;
nRow = nrow(adjMat);
checkAdjMat(adjMat, min = -1, max = 1);
if (is.null(nodeNames)) nodeNames = dimnames(adjMat)[[1]]
if (is.null(nodeNames))
stop("Cannot determine node names: nodeNames is NULL and adjMat has no dimnames.")
rowMat = matrix(c(1:nRow), nRow, nRow, byrow = TRUE);
colMat = matrix(c(1:nRow), nRow, nRow);
if (!is.null(nodeAttr))
{
if (is.null(dim(nodeAttr))) nodeAttr = data.frame(nodeAttribute = nodeAttr);
nodeAttr = as.data.frame(nodeAttr);
} else nodeAttr = data.frame(nodeAttribute = rep(NA, ncol(adjMat)));
adjDst = as.dist(adjMat);
dstRows = as.dist(rowMat);
dstCols = as.dist(colMat);
edges = abs(adjDst) > threshold
nEdges = sum(edges)
edgeData = data.frame (
fromNode = nodeNames[dstRows[edges]],
toNode = nodeNames[dstCols[edges]],
weight = if (weighted) adjDst[edges] else rep(1, nEdges),
direction = rep("undirected", nEdges),
fromAltName = if (is.null(altNodeNames)) rep("NA", nEdges) else altNodeNames[dstRows[edges]],
toAltName = if (is.null(altNodeNames)) rep("NA", nEdges) else altNodeNames[dstCols[edges]]
);
nodesPresent = rep(FALSE, ncol(adjMat));
nodesPresent[dstRows[edges]] = TRUE;
nodesPresent[dstCols[edges]] = TRUE;
nNodes = sum(nodesPresent);
nodeData = data.frame (
nodeName = nodeNames[nodesPresent],
altName = if (is.null(altNodeNames)) rep("NA", nNodes) else altNodeNames[nodesPresent],
nodeAttr[nodesPresent, ]
);
if (!is.null(edgeFile))
write.table(edgeData, file = edgeFile, quote = FALSE, row.names = FALSE, col.names = includeColNames,
sep = "\t");
if (!is.null(nodeFile))
write.table(nodeData, file = nodeFile, quote = FALSE, row.names = FALSE, col.names = includeColNames,
sep = "\t");
list(edgeData = edgeData, nodeData = nodeData);
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.