Skip to content

gvdr/DotProductGraphs.jl

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

DotProductGraphs

Build Status codecov

A Julia Package to work with Random Dot Product Graphs.

It should cover all things RDPG, from SVD embeddings of networks, to more advanced functionalities such as omniembeddings, procrustes alignments, and so on.

Functioning

For now, you can retrieve an embedding of a given size:

# we build a random, silly 1,0 matrix A
# and think of it as a Graph adjacency matrix
A = rand(Bool,100,100)

# we build a pair of 4 dimensional embeddings
Left_embedding, Right_embedding = svd_embedding(A,4)

# or we can let the function identify automatically the optimal embedding dimension

Left_optimal, Right_optimal = svd_embedding(A)

And produce a matrix of interaction probability by dot product:

P = dot_product(Left_embedding, Right_embedding)

TODO

  • Document all the things!
  • Unit Tests All The Things!
  • Include basic embedding and dot product capability relying on LinearAlgebra
  • Allow user to choose the svd "engine" (e.g., KrylovKit.JL, Arpack.JL, LowRankApprox.jl, ...) by defining a unified interface
  • Implement Omniembedding functions
    • Automatic block matrix building
    • Embedding extraction
  • Implement Procrustes Allignment
    • orthogonal
      • Partial: Just getting the min distances (cheating, as we compute the full rotation matrix)
      • Full: Obtaining rotation matrix
    • allowing translations
    • seedless
  • Elbow method to choose dimensionality
    • hard thresholds?
  • Register package.
  • Think how to integrate with Graphs.jl and EcologicalNetworks.jl

Acknowledgement

DotProductGraphs is heavily inspired by graspologic, but it focus on being light (focussing on a narrower set of techniques, as we complement wider ecosystems as Graphs.jl and EcologicalNetworks.jl) and squeezing out performance from being written in Julia.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages