https://github.com/kkloste/diffunity
Variety of local graph diffusion codes for targeted network analysis and community detection
https://github.com/kkloste/diffunity
Last synced: about 1 year ago
JSON representation
Variety of local graph diffusion codes for targeted network analysis and community detection
- Host: GitHub
- URL: https://github.com/kkloste/diffunity
- Owner: kkloste
- Created: 2016-06-30T19:23:50.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2016-11-23T19:46:20.000Z (over 9 years ago)
- Last Synced: 2025-03-02T13:28:01.974Z (over 1 year ago)
- Language: C++
- Size: 22.8 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Diffunity -- diffusion codes and related utilities with applications to community detection
## TO DO
* Implement the Andersen Lang truncated lazy random walk algorithm.
* write special version of `gendiff_mex` designed specifically to compute P^k*s .
* the `reg_power_mex` version is causing misleading results in the AUC plots because repowermex doesn't round entries to zero the way gendiff does
* Improve the AUC experiment by running it from *every* seed in the community, then plotting a curve with 20th percentile lines?
* Experiment to reveal how many terms of random walk are most useful for getting best conductance?
* write test functions for `gendiff`, `gendiff_mex1`
* make sure codes are documented
* designed better "theoretical bound" vs "actual conductance" experiments
* run experiments on more datasets
## `/diffusion_codes`
Contains C, MEX, and matlab codes for computing diffusions, including our general diffusion push algorithm, the ACL ppr push algorithm, a heat kernel push algorithm, and a fast sparse method for computing P^k * v. To use any of these codes, you must first call:
* `compile.m` -- call this function from `[project]/diffusion_codes/` to compile all MEX codes.
Codes for algorithms:
1. `gendiff_mex.cpp` implements our generalized push method.
* `gendiff_grow.m` -- NOT DONE: will be a matlab wrapper for gendiff
2. `pprgrow_mex.cc` and `pprgrow.m` are from [ Gleich & Seshadhri KDD 2012 ]
* adapted to output both the personalized pagerank diffusion and its set of best conductance.
* `reg_power_mex.cpp` -- given sparse input matrix A and vector v, computes A^k*v exactly (i.e. no rounding) but in a sparse manner for an input power k.
* `hkgrow_mex.cpp` -- up-to-date implementation of heat kernel diffusion from [Gleich & Kloster 2014]
* `sweepcut_mex.cpp` -- fast algorithm for sweeping over an input vector.
## `/test`
Contains Matlab test scripts.
* `test_gendiff_mex.m` -- after compiling our diffusion codes, can check that `gendiff_mex.cpp` is working by calling this script. This computes PageRank explicitly, and also using `pprgrow_mex` and `gendiff_mex`, and outputs the error.
### Experiment codes
### Other code:
* `test_gendiff_mex.m` confirms that gendiff_mex outputs a solution vector satisfying the desired accuracy requirement. It also compares the accuracy attained by gendiff with the accuracy attained by running pprgrow with the same parameter settings. confirms that gendiff_mex outputs a solution vector satisfying the desired accuracy requirement. It also compares the accuracy attained by gendiff with the accuracy attained by running pprgrow with the same parameter settings.ow with the same parameter settings.
* `test_sweepcut.m` -- to check that `sweepcut_mex` is operating correctly.