/samudaya

Clojure-based Community Detection library

Primary LanguageClojureEclipse Public License 1.0EPL-1.0

Samudāya

Clojure-based Community Detection library.

Noun (english community)

Samudāya (समुदाय) - Sanskrit word meaning community, aggregate, totality or collection of individual members

Samudaya logo

Description

This library provides Community Detection algorithms for small to medium sized networks. It is built on the Loom clojure library for the graph data structure and basic graph algorithms.

So far, the Girvan-Newman algorithm has been implemented.

Usage

Load library core and namescape.

(load "samudaya/core")
(in-ns 'samudaya.core)

Example: Run community detection on the karate club network.

(def karate-club (create-graph "<path-to-edge-list-file>"))
(girvan-newman karate-club)

Output

[["9" "3" "34" "33" "31" "28" "10" "29" "30" "21" "19" "15" "27" "24" "32" "16" "23" "25" "26"]
 ["22" "1" "2" "4" "8" "14" "20" "7" "5" "18" "12" "13" "6" "11" "17"]]

TODO

  • Implement more algorithms like louvain, stochastic block models etc
  • Add more tests
  • Clean up code and API
  • Publish to clojars and maven

License

Copyright © 2019 Saurav Dhungana

Distributed under the Eclipse Public License.