library(igraph)
library(tidygraph)
set.seed(27)
##### undirected examples ----------------------------
n <- 100
k <- 5
X <- matrix(rpois(n = n * k, 1), nrow = n)
S <- matrix(runif(n = k * k, 0, .1), nrow = k)
# S will be symmetrized internal here, or left unchanged if
# it is already symmetric
ufm <- undirected_factor_model(
X, S,
expected_density = 0.1
)
ufm
### sampling graphs as edgelists ----------------------
edgelist <- sample_edgelist(ufm)
edgelist
### sampling graphs as sparse matrices ----------------
A <- sample_sparse(ufm)
inherits(A, "dsCMatrix")
isSymmetric(A)
dim(A)
B <- sample_sparse(ufm)
inherits(B, "dsCMatrix")
isSymmetric(B)
dim(B)
### sampling graphs as igraph graphs ------------------
sample_igraph(ufm)
### sampling graphs as tidygraph graphs ---------------
sample_tidygraph(ufm)
##### directed examples ----------------------------
n2 <- 100
k1 <- 5
k2 <- 3
d <- 50
X <- matrix(rpois(n = n2 * k1, 1), nrow = n2)
S <- matrix(runif(n = k1 * k2, 0, .1), nrow = k1, ncol = k2)
Y <- matrix(rexp(n = k2 * d, 1), nrow = d)
fm <- directed_factor_model(X, S, Y, expected_in_degree = 2)
fm
### sampling graphs as edgelists ----------------------
edgelist2 <- sample_edgelist(fm)
edgelist2
### sampling graphs as sparse matrices ----------------
A2 <- sample_sparse(fm)
inherits(A2, "dgCMatrix")
isSymmetric(A2)
dim(A2)
B2 <- sample_sparse(fm)
inherits(B2, "dgCMatrix")
isSymmetric(B2)
dim(B2)
### sampling graphs as igraph graphs ------------------
# since the number of rows and the number of columns
# in `fm` differ, we will get a bipartite igraph here
# creating the bipartite igraph is slow relative to other
# sampling -- if this is a blocker for
# you please open an issue and we can investigate speedups
dig <- sample_igraph(fm)
is_bipartite(dig)
### sampling graphs as tidygraph graphs ---------------
sample_tidygraph(fm)
Run the code above in your browser using DataLab