Easy-Graph
Easy-Graph copied to clipboard
feat:support eigenvector centrality algorithm
This pull request adds support for calculating eigenvector centrality in EasyGraph, including both Python and C++ implementations, integration with pybind11, and comprehensive unit tests. The changes also update the build system to support Eigen3 and OpenMP for efficient computation.
Eigenvector Centrality Feature
- Added a new
eigenvector_centralityfunction ineasygraph/functions/centrality/eigenvector.py, which computes eigenvector centrality using the power iteration method or ARPACK solver, with support for weighted graphs, custom initial vectors, and handling of isolated nodes. - Registered the new function in the centrality module’s
__init__.pyfor easy import and usage. - Added the C++ interface for eigenvector centrality in
centrality.hand exposed it to Python via pybind11 incpp_easygraph.cppascpp_eigenvector_centrality. [1] [2]
Build System Enhancements
- Updated
cpp_easygraph/CMakeLists.txtto detect and use Eigen3 and OpenMP, enabling efficient linear algebra operations and parallel computation in the C++ backend.
Testing
- Added a comprehensive test suite for eigenvector centrality in
easygraph/functions/centrality/tests/test_eigenvector.py, covering various graph types, parameters, error conditions, and edge cases.