Learn R Programming

rSETSe

An R package for embedding graphs using the SETSe algorithm

This is the R package for the Strain Elevation Tension Spring embeddings (SETSe) algorithm. SETSe is a deterministic graph embeddings algorithm. It converts the node attributes of a graph into forces and the edge attributes into springs. The algorithm finds an equilibrium position when the forces of the nodes are balanced by the forces on the springs. A full description of the algorithm is given in "The spring bounces back: Introduction to Strain Elevation Tension Spring embedding for network representation" (Bourne 2020). There is a website for the package providing documentation and vignettes at https://jonnob.github.io/rSETSe/index.html . This is a very niche package so please feel free to reach out to me on twitter or through email with questions.

Installation instructions

The package is available on CRAN and can be installed by running install.packages("rsetse").Alternatively it can be installed from github using the below method.

  1. Open R/Rstudio and ensure that devtools has been installed
  2. Run the following code library(devtools); install_github("JonnoB/rSETSe")
  3. Load the package normally using library(rsetse)
  4. All functions have help files e.g ?setse_auto

The package can also be downloaded or cloned then installed locally using the install function from devtools.

Basic use

library(rSETSe)

#prepares a graph for embedding using SETSe
set.seed(234) #set the random see for generating the network
g <- generate_peels_network(type = "E") %>%
prepare_edges(k = 500, distance = 1) %>%
#prepare the network for a binary embedding
prepare_categorical_force(., node_names = "name",
                     force_var = "class") 
                       
#Embedds using the bi-connected auto-parametrization algorithm.
#This method is strongly reccomended, it tends to be much faster and almost always converges
embeddings <- setse_bicomp(g,
                           force = "class_A",
                           tol = sum(abs(vertex_attr(g, "class_A")))/1000,
                           hyper_tol = 0.1,
                           hyper_iters = 3000,
                           verbose = T)

Cite

To cite rsetse in publications use: Bourne, J. The spring bounces back: introducing the strain elevation tension spring embedding algorithm for network representation. Appl Netw Sci 5, 88 (2020). https://doi.org/10.1007/s41109-020-00329-4

Copy Link

Version

Install

install.packages('rsetse')

Monthly Downloads

68

Version

0.5.0

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Jonathan Bourne

Last Published

June 11th, 2021

Functions in rsetse (0.5.0)

biconnected_network

A simple network made of three bi-connected components
%>%

Pipe operator
prepare_edges

Prepare network edges
mass_adjuster

Mass adjuster
prepare_continuous_force

Prepare continuous features for embedding
create_node_edge_df

Create dataframe of node and aggregated edge embeddings
prepare_categorical_force

Prepare categorical features for embedding
setse_shift

setse algorithm with automatic timestep adjustment
tidyeval

Tidy eval helpers
create_node_edge_df_hd

Create dataframe of node and aggregated edge embeddings for high dimensional feature networks
setse_bicomp

SETSe embedding on each bi-connected component using setse_auto
setse_expanded

SETSe embedding showing full convergence history
calc_tension_strain_hd

Calculate line tension and strain from the topology and node embeddings for high dimensional feature networks
create_balanced_blocks

Create balanced blocks
setse

Basic SETSe embedding
remove_small_components

Remove small components
calc_tension_strain

Calculate line tension and strain from the topology and node embeddings
setse_auto

SETSe embedding with automatic drag and timestep selection
calc_spring_constant

Calculate the spring constant
setse_auto_hd

SETSe embedding with automatic drag and timestep selection for high-dimensional feature vectors
generate_peels_network

Create a random Peel network
calc_spring_area

Calculate the cross sectional area of the edge