Giter VIP home page Giter VIP logo

ragibson / modularitypruning Goto Github PK

View Code? Open in Web Editor NEW
16.0 4.0 2.0 2.68 MB

Pruning tool to identify small subsets of network partitions that are significant from the perspective of stochastic block model inference. This method works for single-layer and multi-layer networks, as well as for restricting focus to a fixed number of communities when desired.

License: MIT License

Python 100.00%
community-detection multilayer-networks stochastic-block-model network-graph pruning

modularitypruning's Introduction

Hi! I'm Ryan

I am currently working as a Quantitative Analyst at Wells Fargo, primarily focusing on risk model research, development, maintenance, and monitoring. In much of my free time, I work on mathematical, statistical, and programming hobby projects.

Feel free to reach out with any questions, comments, or ideas and I'll try to respond reasonably quickly!

https://ryanagibson.com

Some Projects

Feel free to look through my repositories list (many are private), but I've linked some projects in the images below!

Steganography illustration ModularityPruning illustration FPGA-Asteroids illustration DRRRT-motion-planning illustration

modularitypruning's People

Contributors

ragibson avatar szhorvat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

wzvera szhorvat

modularitypruning's Issues

Add support for Leiden modularity optimization

Swapping out the Louvain algorithm for Leiden would be relatively simple for single-layer networks.

However, there are serious performance issues in the standard implementation for multi-layer optimization, so we would have to research if it is feasible at all in that case.

Add directed SBM parameter estimation

The SBM equivalence used for gamma estimates assumes drawing from an undirected stochastic block model even when the network is truly directed.

For our work, this only affects the Lazega Law Network experiment where we were comparing our method's performance to that of Roxana et al.'s. They made the same decision to use the undirected form for the gamma estimates, so the apparent mismatch is appropriate.

That said, we should add in the ability to use the directed form of the gamma estimates (seemingly only requiring a tweak of sum(k_c^2) to sum(k_{c,in} * k_{c,out}) in the calculation) which would restore the one-to-one correspondence between modularity hyperplanes and parameter estimates in the directed (single-layer) case.

Consider returning partitions in louvain_utilities

By default, singlelayer_louvain and multilayer_louvain return a tuple community membership vector at the moment.

Some scripts are using the return_partition=True option and we should determine if this functionality should be moved to a different method or if we should change the default behavior.

Add type hints

It may be nice to add type hints to our library where possible.

That said, it appears that igraph, leidenalg, louvain, matplotlib, scipy, and seaborn do not support type hints (yet).

Add support for (single-layer) weighted graphs

It would be nice to officially add support for weighted graphs even though this is outside the scope of our paper. Several parts of the pruning pipeline already handle edge weights and the extension in the single-layer case should be relatively straightforward.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.