Nothing
## Basic Graph Tests
## Each test has:
## - an input graph specified as an edge list
## - an operation name (or should it be the function?
## - an expected result. If the result is a graph object, it will
## be expressed as an edge list.
##
## Do we need a way to indicate nodes with no edges?
##
makeFT <- function(from, to) {
ord <- order(from)
from <- from[ord]
to <- to[ord]
cbind(from, to)
}
basicDirected <- function() {
from <- c("b", "b", "b", "i", "o", "c", "c", "e")
to <- c("e", "i", "s", "o", "c", "i", "o", "c")
w <- seq_len(length(to))
list(nodes = letters[1:20],
edges = makeFT(from, to),
weights = w,
edgemode = "directed")
}
basicUndirected <- function() {
from <- c("b", "b", "b", "i", "c", "e")
to <- c("e", "i", "s", "o", "o", "c")
w <- seq_len(length(to))
list(nodes = letters[1:20],
edges = makeFT(from, to),
weights = w,
edgemode = "undirected")
}
basic_to_ft <- function(g) {
from <- match(g$edges[, 1L], g$nodes)
to <- match(g$edges[, 2L], g$nodes)
ft <- cbind(from, to)
ft
}
create <-
list(
"graphAM" = function(gDesc) {
ft <- basic_to_ft(gDesc)
numNodes <- length(gDesc$nodes)
mat <- matrix(0L, nrow = numNodes, ncol = numNodes,
dimnames = list(NULL, gDesc$nodes))
coord <- graph:::coordToIndex(ft[, 1L], ft[, 2L], numNodes)
w <- gDesc$weights
if (gDesc$edgemode == "undirected") {
coord <- c(coord,
graph:::coordToIndex(ft[, 2L], ft[, 1L], numNodes))
w <- c(w, w)
}
mat[coord] <- w
graphAM(adjMat = mat, edgemode = gDesc$edgemode,
values = list(weight = 1L))
},
"graphNEL" = function(gDesc) {
edgeL <- split(gDesc$edges[ , 2L], gDesc$edges[ , 1L])
if (gDesc$edgemode == "undirected") {
f <- gDesc$edges[, 1L]
t <- gDesc$edges[, 2L]
ft <- c(f, t)
tf <- c(t, f)
edgeL <- split(tf, ft)
}
g <- graphNEL(nodes = gDesc$nodes,
edgeL = edgeL, edgemode = gDesc$edgemode)
edgeDataDefaults(g, attr = "weight") <- 1L
edgeData(g, from = gDesc$edges[, 1L],
to = gDesc$edges[, 2L],
attr = "weight") <- gDesc$weights
g
})
graph2desc <- function(g) {
nms <- nodes(g)
ft <- t(edgeMatrix(g))
from <- nms[ft[, 1L]]
to <- nms[ft[, 2L]]
list(nodes = nms,
edges = makeFT(from, to),
weights = unlist(edgeWeights(g), use.names = FALSE),
edgemode = edgemode(g))
}
toGraphDesc <- list("graphAM" = graph2desc,
"graphNEL" = graph2desc)
gam <- create$graphAM(basicDirected())
gnel <- create$graphNEL(basicDirected())
gam0 <- toGraphDesc$graphAM(gam)
gnel0 <- toGraphDesc$graphNEL(gnel)
ugam <- create$graphAM(basicUndirected())
ugnel <- create$graphNEL(basicUndirected())
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.