Browse Source
academic/louvain-community: Added (Louvain Detection Library).
academic/louvain-community: Added (Louvain Detection Library).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>pull/223/head
No known key found for this signature in database
GPG Key ID: 3F617144D7238786
4 changed files with 237 additions and 0 deletions
-
98academic/louvain-community/README
-
110academic/louvain-community/louvain-community.SlackBuild
-
10academic/louvain-community/louvain-community.info
-
19academic/louvain-community/slack-desc
@ -0,0 +1,98 @@ |
|||
[License: LGPL v3] [build] |
|||
|
|||
Multi-criteria community detection library |
|||
|
|||
This library makes the Louvain community detection system |
|||
significantly easier to use. Example code: |
|||
|
|||
#include "louvain_communities/louvain_communities.h" #include |
|||
<iostream> |
|||
|
|||
int main(int /*argc*/, char** /*argv*/) { LouvainC::Communities |
|||
graph; |
|||
|
|||
//First community graph.add_edge(1, 2, 2L); |
|||
graph.add_edge(1, 3, 2L); graph.add_edge(1, 4, 2L); |
|||
graph.add_edge(2, 3, 2L); graph.add_edge(2, 4, 2L); |
|||
graph.add_edge(3, 4, 2L); |
|||
|
|||
//Second community graph.add_edge(4, 5, 2L); |
|||
graph.add_edge(4, 6, 2L); graph.add_edge(4, 7, 2L); |
|||
graph.add_edge(5, 6, 2L); graph.add_edge(5, 7, 2L); |
|||
graph.add_edge(6, 7, 2L); |
|||
|
|||
//Weak connection between 1st and 2nd communities |
|||
graph.add_edge(1, 4, 0.1L); |
|||
|
|||
//Calculate communities gplain.calculate(true); |
|||
|
|||
//Get community mapping auto r = gplain.get_mapping(); |
|||
for(auto& vert_to_comm: r) { std::cout << "Vertext " << |
|||
vert_to_comm.first << " is in community " << vert_to_comm.second << |
|||
std::endl; } } |
|||
|
|||
How to build |
|||
|
|||
To build: |
|||
|
|||
git clone https://github.com/meelgroup/louvain-community cd |
|||
louvain-community mkdir build && cd build cmake .. make -j4 sudo |
|||
make install |
|||
|
|||
In case you are going to use the system in another cmake based |
|||
project, you don’t even need to install. In these cases, you can |
|||
look for the library in your CMakeLists.txt file via: |
|||
|
|||
find_package(louvain_communities CONFIG) if |
|||
(louvain_communities_FOUND) message(STATUS "Found Louvain |
|||
Communities library") message(STATUS "Louvain Communities dynamic |
|||
lib: ${LOUVAIN_COMMUNITIES_LIBRARIES}") message(STATUS "Louvain |
|||
Communities include dirs: ${LOUVAIN_COMMUNITIES_INCLUDE_DIRS}") |
|||
else() message(FATAL_ERROR "Cannot find Louvain Communities |
|||
libraries. Please install it! Exiting.") endif() |
|||
|
|||
To compile a static library simply do: |
|||
|
|||
git clone https://github.com/meelgroup/louvain-community cd |
|||
louvain-community mkdir build && cd build cmake -DSTATICCOMPILE=ON |
|||
.. make -j4 sudo make install |
|||
|
|||
Testing |
|||
|
|||
To test: |
|||
|
|||
pip install python-louvain |
|||
|
|||
git clone https://github.com/jlguillaume/louvain cd louvain make |
|||
-j4 |
|||
|
|||
git clone https://github.com/meelgroup/louvain-community cd |
|||
louvain-community mkdir build && cd build ln -s ../scritps/* . ln |
|||
-s ../../louvain/louvain . ./mytest.py 50-10-9-q.cnf.gz.no_w.cnf |
|||
awk '{print "gplain.add_edge(" $1 ", " $2 ", " $3 "L);"}' graph.txt |
|||
> ../src/mygraph.cpp cmake -DENABLE_TESTING=ON .. make -j4 |
|||
> ./test.sh 50-10-9-q.cnf.gz.no_w.cnf |
|||
|
|||
To check how well the communities fit a graph generated via VIG |
|||
(“Variable Incidence Graph”) graph-generation from a DIMACS CNF and |
|||
a layout engine using the spring method: |
|||
|
|||
pip install python-louvain git clone |
|||
https://github.com/meelgroup/louvain-community cd louvain-community |
|||
mkdir build && cd build ln -s ../scritps/* . ./mytest.py |
|||
50-10-9-q.cnf.gz.no_w.cnf --draw |
|||
|
|||
References |
|||
|
|||
Based on Community Detection “Louvain”, version 0.3, from |
|||
SourceForge |
|||
|
|||
Based on the article “Fast unfolding of community hierarchies in |
|||
large networks” Copyright (C) 2008 V. Blondel, J.-L. Guillaume, R. |
|||
Lambiotte, E. Lefebvre |
|||
|
|||
And based on the article Copyright (C) 2013 R. Campigotto, P. Conde |
|||
Céspedes, J.-L. Guillaume |
|||
|
|||
Authors: E. Lefebvre, adapted by J.-L. Guillaume and R. Campigotto, |
|||
Mate Soos |
@ -0,0 +1,110 @@ |
|||
#!/bin/bash |
|||
|
|||
# Slackware build script for louvain-community |
|||
|
|||
# Copyright 2024 Caterino Tommaso, T.O.P. USA |
|||
# All rights reserved. |
|||
# |
|||
# Redistribution and use of this script, with or without modification, is |
|||
# permitted provided that the following conditions are met: |
|||
# |
|||
# 1. Redistributions of this script must retain the above copyright |
|||
# notice, this list of conditions and the following disclaimer. |
|||
# |
|||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED |
|||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
|||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |
|||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
|||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
|||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
|||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
|||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|||
|
|||
cd $(dirname $0) ; CWD=$(pwd) |
|||
|
|||
PRGNAM=louvain-community |
|||
VERSION=${VERSION:-681a711} |
|||
FULLHASH=${FULLHASH:-681a711a530ded0b25af72ee4881d453a80ac8ac} |
|||
BUILD=${BUILD:-1} |
|||
TAG=${TAG:-_SBo} |
|||
PKGTYPE=${PKGTYPE:-tgz} |
|||
|
|||
if [ -z "$ARCH" ]; then |
|||
case "$( uname -m )" in |
|||
i?86) ARCH=i586 ;; |
|||
arm*) ARCH=arm ;; |
|||
*) ARCH=$( uname -m ) ;; |
|||
esac |
|||
fi |
|||
|
|||
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then |
|||
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" |
|||
exit 0 |
|||
fi |
|||
|
|||
TMP=${TMP:-/tmp/SBo} |
|||
PKG=$TMP/package-$PRGNAM |
|||
OUTPUT=${OUTPUT:-/tmp} |
|||
if [ "$ARCH" = "i586" ]; then |
|||
SLKCFLAGS="-O2 -march=i586 -mtune=i686" |
|||
LIBDIRSUFFIX="" |
|||
elif [ "$ARCH" = "i686" ]; then |
|||
SLKCFLAGS="-O2 -march=i686 -mtune=i686" |
|||
LIBDIRSUFFIX="" |
|||
elif [ "$ARCH" = "x86_64" ]; then |
|||
SLKCFLAGS="-O2 -fPIC" |
|||
LIBDIRSUFFIX="64" |
|||
elif [ "$ARCH" = "aarch64" ]; then |
|||
SLKCFLAGS="-O2 -fPIC" |
|||
LIBDIRSUFFIX="64" |
|||
else |
|||
SLKCFLAGS="-O2" |
|||
LIBDIRSUFFIX="" |
|||
fi |
|||
|
|||
set -e |
|||
rm -rf $PKG |
|||
mkdir -p $TMP $PKG $OUTPUT |
|||
cd $TMP |
|||
rm -rf $PRGNAM-$FULLHASH |
|||
tar xvf $CWD/$PRGNAM-$FULLHASH.tar.gz |
|||
cd $PRGNAM-$FULLHASH |
|||
chown -R root:root . |
|||
find -L . \ |
|||
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ |
|||
-o -perm 511 \) -exec chmod 755 {} \+ -o \ |
|||
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ |
|||
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+ |
|||
|
|||
mkdir -p build |
|||
cd build |
|||
cmake \ |
|||
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ |
|||
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ |
|||
-DCMAKE_INSTALL_PREFIX=/usr \ |
|||
-DLIB_SUFFIX=${LIBDIRSUFFIX} \ |
|||
-DCMAKE_BUILD_TYPE=Release .. |
|||
make |
|||
make install/strip DESTDIR=$PKG |
|||
cd .. |
|||
|
|||
rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la |
|||
|
|||
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ |
|||
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true |
|||
|
|||
find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true |
|||
|
|||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION |
|||
cp -a \ |
|||
LICENSE.txt README.md \ |
|||
$PKG/usr/doc/$PRGNAM-$VERSION |
|||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild |
|||
|
|||
mkdir -p $PKG/install |
|||
cat $CWD/slack-desc > $PKG/install/slack-desc |
|||
|
|||
cd $PKG |
|||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE |
@ -0,0 +1,10 @@ |
|||
PRGNAM="louvain-community" |
|||
VERSION="681a711" |
|||
HOMEPAGE="https://github.com/meelgroup/louvain-community" |
|||
DOWNLOAD="https://github.com/meelgroup/louvain-community/archive/681a711.tar.gz" |
|||
MD5SUM="f148a5a439ccf5c47a9795c31350b467" |
|||
DOWNLOAD_x86_64="" |
|||
MD5SUM_x86_64="" |
|||
REQUIRES="" |
|||
MAINTAINER="Caterino Tommaso, T.O.P." |
|||
EMAIL="aNOlan_aversa@lavabiSPAMt.com (remove NO and SPAM)" |
@ -0,0 +1,19 @@ |
|||
# HOW TO EDIT THIS FILE: |
|||
# The "handy ruler" below makes it easier to edit a package description. |
|||
# Line up the first '|' above the ':' following the base package name, and |
|||
# the '|' on the right side marks the last column you can put a character in. |
|||
# You must make exactly 11 lines for the formatting to be correct. It's also |
|||
# customary to leave one space after the ':' except on otherwise blank lines. |
|||
|
|||
|-----handy-ruler------------------------------------------------------| |
|||
louvain-community: louvain-community (Louvain Community Detection Library) |
|||
louvain-community: |
|||
louvain-community: This graph algorithms library finds communities in networks. |
|||
louvain-community: |
|||
louvain-community: It is a requirement for cryptominisat's advanced statistics option. |
|||
louvain-community: |
|||
louvain-community: |
|||
louvain-community: |
|||
louvain-community: |
|||
louvain-community: |
|||
louvain-community: |
Write
Preview
Loading…
Cancel
Save
Reference in new issue