## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>",
    message = FALSE,
    warning = FALSE
)

## ----setup--------------------------------------------------------------------
library(igraph)
library(signnet)

## ----projection_example-------------------------------------------------------
# construct network
el <- matrix(c(1, "a", 1, "b", 1, "c", 2, "a", 2, "b"), ncol = 2, byrow = TRUE)
g <- graph_from_edgelist(el, directed = FALSE)
E(g)$sign <- c(1, 1, -1, 1, -1)
V(g)$type <- c(FALSE, TRUE, TRUE, TRUE, FALSE)

# vertex duplication
gu <- as_unsigned_2mode(g, primary = TRUE)

# project and binarize
pu <- bipartite_projection(gu, which = "true")
pu <- delete_edge_attr(pu, "weight")

# vertex contraction
ps <- as_signed_proj(pu)
igraph::as_data_frame(ps, "edges")

## ----complex_adj,eval=FALSE---------------------------------------------------
# as_adj_complex(ps, attr = "type")

## ----sneaky_show,echo=FALSE---------------------------------------------------
structure(c(
    0 + 0i, 0.5 - 0.5i, 0 - 1i, 0.5 + 0.5i, 0 + 0i, 0 - 1i, 0 + 1i,
    0 + 1i, 0 + 0i
), .Dim = c(3L, 3L), .Dimnames = list(c("a", "b", "c"), c("a", "b", "c")))

## ----complex_lapl, eval=FALSE-------------------------------------------------
# laplacian_matrix_complex(ps, attr = "type")

## ----sneaky_show1,echo=FALSE--------------------------------------------------
structure(c(
    1.70710678118655 + 0i, -0.5 + 0.5i, 0 + 1i, -0.5 - 0.5i,
    1.70710678118655 + 0i, 0 + 1i, 0 - 1i, 0 - 1i, 2 + 0i
), .Dim = c(3L, 3L), .Dimnames = list(c("a", "b", "c"), c("a", "b", "c")))

## ----ambi_net-----------------------------------------------------------------
g <- graph.full(5)
E(g)$type <- c(rep("P", 3), rep("N", 3), rep("A", 4))

count_complex_triangles(g, attr = "type")