Python-EasyGraph 1.5__tar.gz → 1.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_easygraph-1.5/Python_EasyGraph.egg-info → python_easygraph-1.5.2}/PKG-INFO +38 -24
- {python_easygraph-1.5 → python_easygraph-1.5.2/Python_EasyGraph.egg-info}/PKG-INFO +38 -24
- {python_easygraph-1.5 → python_easygraph-1.5.2}/Python_EasyGraph.egg-info/SOURCES.txt +2 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/Python_EasyGraph.egg-info/requires.txt +9 -9
- python_easygraph-1.5.2/Python_EasyGraph.egg-info/top_level.txt +2 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/README.md +28 -15
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/common/utils.cpp +3 -3
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/centrality/betweenness.cpp +20 -20
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/centrality/closeness.cpp +10 -10
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/cores/k_cores.cpp +2 -2
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/path/path.cpp +16 -16
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/__init__.py +1 -0
- python_easygraph-1.5.2/easygraph/functions/community/localsearch.py +629 -0
- python_easygraph-1.5.2/easygraph/functions/community/tests/test_LS.py +48 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/pyproject.toml +8 -2
- {python_easygraph-1.5 → python_easygraph-1.5.2}/setup.py +12 -13
- python_easygraph-1.5/Python_EasyGraph.egg-info/top_level.txt +0 -2
- {python_easygraph-1.5 → python_easygraph-1.5.2}/CMakeLists.txt +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/LICENSE +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/MANIFEST.in +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/Python_EasyGraph.egg-info/dependency_links.txt +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/README.rst +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/CMakeLists.txt +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/coo_graph.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/csr_graph.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/directed_graph.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/directed_graph.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/graph.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/graph.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/linkgraph.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/operation.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/operation.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/classes/segment_tree.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/common/common.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/common/common.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/common/utils.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/cpp_easygraph.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/basic/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/basic/avg_degree.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/basic/avg_degree.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/basic/cluster.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/basic/cluster.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/centrality/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/centrality/centrality.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/centrality/katz_centrality.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/components/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/components/biconnected.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/components/biconnected.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/components/connected.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/components/connected.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/components/strongly_connected.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/components/strongly_connected.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/cores/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/cores/k_cores.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/pagerank/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/pagerank/pagerank.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/pagerank/pagerank.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/path/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/path/mst.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/path/mst.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/path/path.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/structural_holes/__init__.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/structural_holes/evaluation.cpp +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/structural_holes/evaluation.h +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/_global.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/base.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/directed_graph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/directed_multigraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/graph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/graphviews.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/hypergraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/multigraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/operation.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/test_base_graph_class.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/test_base.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/test_directed_graph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/test_graph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/test_graphV2.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/test_hypergraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/test_multidigraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/test_multigraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/classes/tests/test_operation.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/convert.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datapipe/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datapipe/common.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datapipe/loader.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datapipe/normalize.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/amazon_photo.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/arxiv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/citation_graph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/coauthor.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/dynamic/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/dynamic/email_enron.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/dynamic/email_eu.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/dynamic/hospital_lyon.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/dynamic/load_dataset.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/facebook_ego.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/flickr.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/get_sample_graph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/github.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/gnn_benchmark.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/graph_dataset_base.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/House_Committees.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/Yelp.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/_global.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/cat_edge_Cooking.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/coauthorship.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/cocitation.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/contact_primary_school.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/cooking_200.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/hypergraph_dataset_base.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/loadDeepSetDatasets.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/mathoverflow_answers.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/senate_committees.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/trivago_clicks.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/hypergraph/walmart_trips.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/karate.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/ppi.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/reddit.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/roadnet.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/twitter_ego.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/utils.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/web_google.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/datasets/wiki_topcats.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/exception.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/experiments/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/experiments/base.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/experiments/hypergraphs/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/experiments/hypergraphs/hypergraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/experiments/vertex_classification.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/avg_degree.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/cluster.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/localassort.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/predecessor_path_based.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/tests/test_avg_degree.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/tests/test_cluster.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/tests/test_localassort.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/basic/tests/test_predecessor.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/betweenness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/closeness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/degree.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/ego_betweenness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/flowbetweenness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/katz_centrality.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/laplacian.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/pagerank.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/tests/test_betweenness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/tests/test_closeness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/tests/test_degree.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/tests/test_egobetweenness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/tests/test_flowbetweenness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/tests/test_laplacian.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/centrality/tests/test_pagerank.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/LPA.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/ego_graph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/louvain.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/modularity.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/modularity_max_detection.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/motif.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/tests/test_LPA.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/tests/test_ego_graph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/tests/test_louvian.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/tests/test_modularity.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/tests/test_modularity_max_detection.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/community/tests/test_motif.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/biconnected.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/connected.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/strongly_connected.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/tests/test_biconnected.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/tests/test_connected.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/tests/test_strongly_connected.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/tests/test_weakly_connected.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/components/weakly_connected.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/core/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/core/k_core.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/core/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/core/tests/test_k_core.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/defaults.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/drawing.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/geometry.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/layout.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/plot.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/positioning.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/simulator.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/tests/test_drawing.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/tests/test_geometry.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/tests/test_plot.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/tests/test_positioning.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/drawing/utils.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/NOBE.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/deepwalk.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/line.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/net_emb_example_citeseer.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/node2vec.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/sdne.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/tests/test_deepwalk.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/tests/test_line.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/tests/test_nobe.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/tests/test_node2vec.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_embedding/tests/test_sdne.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_generator/RandomNetwork.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_generator/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_generator/classic.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_generator/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_generator/tests/test_Random_Network.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/graph_generator/tests/test_classic.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/assortativity.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/centrality/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/centrality/cycle_ratio.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/centrality/degree.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/centrality/hypercoreness.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/centrality/s_centrality.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/centrality/vector_centrality.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/hypergraph_clustering.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/hypergraph_operation.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/hypergraph_classic.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/lattice.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/random.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/simple.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/tests/test_classic.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/tests/test_lattice.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/tests/test_simple.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/null_model/uniform.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/tests/test_assortativity.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/tests/test_centrality.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/tests/test_hypergraph_clustering.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/hypergraph/tests/test_hypergraph_operation.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/isolate.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/average_shortest_path_length.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/bridges.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/diameter.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/mst.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/path.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/tests/test_average_shortest_path_length.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/tests/test_bridges.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/tests/test_diameter.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/tests/test_mst.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/path/tests/test_path.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/AP_Greedy.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/HAM.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/HIS.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/ICC.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/MaxD.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/NOBE.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/SHII_metric.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/evaluation.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/maxBlock.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/metrics.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/structural_holes/weakTie.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/functions/tests/test_isolate.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/ml_metrics/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/ml_metrics/base.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/ml_metrics/classification.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/ml_metrics/hypergraphs/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/ml_metrics/hypergraphs/hypergraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/dhcf.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/dhne.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/hgnn.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/hgnnp.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/hnhn.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/hwnn.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/hypergcn.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/setgnn.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/model/hypergraphs/unignn.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/common.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/dhcf_conv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/halfnlh_conv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/hgnn_conv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/hgnnp_conv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/hnhn_conv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/hwnn_conv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/hypergcn_conv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/hypergraphs/unignn_conv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/convs/pma.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/loss.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/regularization.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/tests/test_gatconv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/tests/test_gcnconv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/tests/test_graphsageconv.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/nn/tests/test_regularization.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/edgelist.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/gexf.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/gml.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/graphml.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/graphviz.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/json_graph/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/json_graph/node_link.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/pajek.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/pickle.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/test_edgelist.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/test_gexf.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/test_gml.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/test_graphml.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/test_graphviz.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/test_pajek.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/test_pickle.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/tests/test_ucinet.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/readwrite/ucinet.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/tests/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/tests/script_test_cpp_easygraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/tests/teddy_test_cpp_easygraph_sanity_check.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/tests/test_convert.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/tests/test_cpp_easygraph.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/__init__.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/alias.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/convert_class.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/convert_to_matrix.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/decorators.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/download.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/exception.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/index_of_node.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/logging.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/mapped_queue.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/misc.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/relabel.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/sparse.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/easygraph/utils/type_change.py +0 -0
- {python_easygraph-1.5 → python_easygraph-1.5.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Python-EasyGraph
|
|
3
|
-
Version: 1.5
|
|
3
|
+
Version: 1.5.2
|
|
4
4
|
Summary: Easy Graph
|
|
5
5
|
Home-page: https://github.com/easy-graph/Easy-Graph
|
|
6
6
|
Author: Fudan DataNET Group
|
|
@@ -11,27 +11,28 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
14
15
|
Classifier: License :: OSI Approved :: BSD License
|
|
15
16
|
Classifier: Operating System :: OS Independent
|
|
16
|
-
Requires-Python: >=3.8, <3.
|
|
17
|
+
Requires-Python: >=3.8, <3.15
|
|
17
18
|
Description-Content-Type: text/markdown
|
|
18
19
|
License-File: LICENSE
|
|
19
|
-
Requires-Dist: numpy>=1.23
|
|
20
|
-
Requires-Dist: numpy>=
|
|
20
|
+
Requires-Dist: numpy>=1.23; python_version < "3.14"
|
|
21
|
+
Requires-Dist: numpy>=2.0; python_version >= "3.14"
|
|
21
22
|
Requires-Dist: tqdm>=4.49.0
|
|
22
23
|
Requires-Dist: joblib>=1.2.0
|
|
23
24
|
Requires-Dist: six>=1.16.0
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist: gensim>=4.2.0; python_version >= "3.8"
|
|
25
|
+
Requires-Dist: gensim>=4.3.3; python_version < "3.14"
|
|
26
26
|
Requires-Dist: progressbar33>=2.4
|
|
27
27
|
Requires-Dist: scikit-learn<=1.0.2,>=0.24.0; python_version == "3.7"
|
|
28
|
-
Requires-Dist: scikit-learn>=0.24.0; python_version >= "3.8"
|
|
28
|
+
Requires-Dist: scikit-learn>=0.24.0; python_version >= "3.8" and python_version < "3.14"
|
|
29
29
|
Requires-Dist: scipy<=1.7.3,>=1.5.0; python_version == "3.7"
|
|
30
|
-
Requires-Dist: scipy>=1.8.0; python_version >= "3.8"
|
|
31
|
-
Requires-Dist: statsmodels>=0.12.0; python_version >= "3.7"
|
|
30
|
+
Requires-Dist: scipy>=1.8.0; python_version >= "3.8" and python_version < "3.14"
|
|
31
|
+
Requires-Dist: statsmodels>=0.12.0; python_version >= "3.7" and python_version < "3.14"
|
|
32
32
|
Requires-Dist: progressbar>=2.5
|
|
33
33
|
Requires-Dist: nose>=0.10.1
|
|
34
34
|
Requires-Dist: pandas<=1.1.5,>=1.0.1; python_version <= "3.7"
|
|
35
|
+
Requires-Dist: pandas>=1.1.0; python_version >= "3.8" and python_version < "3.14"
|
|
35
36
|
Requires-Dist: matplotlib
|
|
36
37
|
Requires-Dist: requests
|
|
37
38
|
Requires-Dist: optuna
|
|
@@ -99,20 +100,33 @@ It bridges the gap between EasyGraph and higher-order relationships. EasyHypergr
|
|
|
99
100
|
|
|
100
101
|
👉 For more details, please refer to its [documentation](https://easy-graph.github.io/docs/eggpu.html) page.
|
|
101
102
|
|
|
102
|
-
# News
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- [
|
|
106
|
-
- [
|
|
107
|
-
- [
|
|
108
|
-
- [
|
|
109
|
-
- [
|
|
110
|
-
- [
|
|
111
|
-
- [
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
- [
|
|
115
|
-
- [
|
|
103
|
+
# 📢 EasyGraph News
|
|
104
|
+
|
|
105
|
+
## 📣 Media & Press
|
|
106
|
+
- [08-09-2025] [EasyHypergraph: Fast, Efficient Higher-Order Network Analysis](https://scienmag.com/easyhypergraph-fast-efficient-higher-order-network-analysis/)
|
|
107
|
+
- [01-15-2025] [开放原子大赛OpenRank开源数字生态分析与应用创新大赛全国一等奖 (in Chinese)](https://mp.weixin.qq.com/s/e54JHaP2AAEUN3S8RZ-Y2g)
|
|
108
|
+
- [01-07-2025] [计算机科学技术学院教授陈阳入选“2024中国开源先锋33人” (in Chinese)](https://news.fudan.edu.cn/2025/0107/c2463a143932/page.htm)
|
|
109
|
+
- [12-04-2024] [国际开源基准委员会的"顶级开源证书" (in Chinese)](https://chenyang03.wordpress.com/wp-content/uploads/2025/07/image.png?w=1024)
|
|
110
|
+
- [10-16-2024] [2023年度上海开源创新卓越成果奖 (in Chinese)](https://mp.weixin.qq.com/s/kO6Dpyolf74dlDvKuoLlJA)
|
|
111
|
+
- [11-06-2023] [复旦大学陈阳Patterns:EasyGraph——面向多学科的高性能网络结构分析工具箱|Cell Press论文速递 (in Chinese)](https://mp.weixin.qq.com/s/f2LCyQv1dYuquM_EfGX6Ow?poc_token=HBV092ijI2L534IrD0Jl_fnf3VjhX8UudcPFLH6b)
|
|
112
|
+
- [11-04-2023] [EasyGraph:多功能、跨平台、高效率的跨学科网络分析库 (in Chinese)](https://swarma.org/?p=46252)
|
|
113
|
+
|
|
114
|
+
## 🚀 Releases & Milestones
|
|
115
|
+
- [10-11-2025] EasyGraph **v1.5.1** released (Python 3.14 supported)
|
|
116
|
+
- 🎉 **[09-29-2025] 900K+ Downloads! Thanks to our amazing community!**
|
|
117
|
+
- [07-27-2025] EasyGraph **v1.5** released (This version integrates the HWNN model and supports 11 representative network datasets)
|
|
118
|
+
- 🎉 **[06-29-2025] 800K+ Downloads!**
|
|
119
|
+
- [11-22-2024] EasyGraph **v1.4.1** released (Python 3.13 supported)
|
|
120
|
+
- [09-20-2024] EasyGraph **v1.4** released (GPU-powered functions for large network analysis)
|
|
121
|
+
- [05-27-2024] EasyGraph **v1.3** released (issues related to hypergraph analysis and visualization resolved)
|
|
122
|
+
- [04-09-2024] EasyGraph **v1.2** released (Python 3.12 supported)
|
|
123
|
+
- [02-05-2024] EasyGraph **v1.1** released (hypergraph analysis and learning for higher-order networks)
|
|
124
|
+
- [08-17-2023] EasyGraph **v1.0** released
|
|
125
|
+
- [07-22-2020] EasyGraph **first public release**
|
|
126
|
+
|
|
127
|
+
## 📈 Publications
|
|
128
|
+
- [05-30-2025] 🎉 Our paper "EasyHypergraph: an open-source software for fast and memory-saving analysis and learning of higher-order networks" was accepted by Humanities and Social Sciences Communications (Nature Portfolio)! [[PDF](https://www.nature.com/articles/s41599-025-05180-5)]
|
|
129
|
+
- [08-08-2023] 🎉 Our paper "EasyGraph: A Multifunctional, Cross-Platform, and Effective Library for Interdisciplinary Network Analysis" was accepted by Patterns (Cell Press)! [[PDF](https://www.sciencedirect.com/science/article/pii/S2666389923002180)]
|
|
116
130
|
|
|
117
131
|
# Stargazers
|
|
118
132
|
|
|
@@ -125,7 +139,7 @@ It bridges the gap between EasyGraph and higher-order relationships. EasyHypergr
|
|
|
125
139
|
|
|
126
140
|
## Supported Versions
|
|
127
141
|
|
|
128
|
-
``3.8 <= Python <= 3.
|
|
142
|
+
``3.8 <= Python <= 3.14`` is required.
|
|
129
143
|
|
|
130
144
|
## Installation With pip
|
|
131
145
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Python-EasyGraph
|
|
3
|
-
Version: 1.5
|
|
3
|
+
Version: 1.5.2
|
|
4
4
|
Summary: Easy Graph
|
|
5
5
|
Home-page: https://github.com/easy-graph/Easy-Graph
|
|
6
6
|
Author: Fudan DataNET Group
|
|
@@ -11,27 +11,28 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
14
15
|
Classifier: License :: OSI Approved :: BSD License
|
|
15
16
|
Classifier: Operating System :: OS Independent
|
|
16
|
-
Requires-Python: >=3.8, <3.
|
|
17
|
+
Requires-Python: >=3.8, <3.15
|
|
17
18
|
Description-Content-Type: text/markdown
|
|
18
19
|
License-File: LICENSE
|
|
19
|
-
Requires-Dist: numpy>=1.23
|
|
20
|
-
Requires-Dist: numpy>=
|
|
20
|
+
Requires-Dist: numpy>=1.23; python_version < "3.14"
|
|
21
|
+
Requires-Dist: numpy>=2.0; python_version >= "3.14"
|
|
21
22
|
Requires-Dist: tqdm>=4.49.0
|
|
22
23
|
Requires-Dist: joblib>=1.2.0
|
|
23
24
|
Requires-Dist: six>=1.16.0
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist: gensim>=4.2.0; python_version >= "3.8"
|
|
25
|
+
Requires-Dist: gensim>=4.3.3; python_version < "3.14"
|
|
26
26
|
Requires-Dist: progressbar33>=2.4
|
|
27
27
|
Requires-Dist: scikit-learn<=1.0.2,>=0.24.0; python_version == "3.7"
|
|
28
|
-
Requires-Dist: scikit-learn>=0.24.0; python_version >= "3.8"
|
|
28
|
+
Requires-Dist: scikit-learn>=0.24.0; python_version >= "3.8" and python_version < "3.14"
|
|
29
29
|
Requires-Dist: scipy<=1.7.3,>=1.5.0; python_version == "3.7"
|
|
30
|
-
Requires-Dist: scipy>=1.8.0; python_version >= "3.8"
|
|
31
|
-
Requires-Dist: statsmodels>=0.12.0; python_version >= "3.7"
|
|
30
|
+
Requires-Dist: scipy>=1.8.0; python_version >= "3.8" and python_version < "3.14"
|
|
31
|
+
Requires-Dist: statsmodels>=0.12.0; python_version >= "3.7" and python_version < "3.14"
|
|
32
32
|
Requires-Dist: progressbar>=2.5
|
|
33
33
|
Requires-Dist: nose>=0.10.1
|
|
34
34
|
Requires-Dist: pandas<=1.1.5,>=1.0.1; python_version <= "3.7"
|
|
35
|
+
Requires-Dist: pandas>=1.1.0; python_version >= "3.8" and python_version < "3.14"
|
|
35
36
|
Requires-Dist: matplotlib
|
|
36
37
|
Requires-Dist: requests
|
|
37
38
|
Requires-Dist: optuna
|
|
@@ -99,20 +100,33 @@ It bridges the gap between EasyGraph and higher-order relationships. EasyHypergr
|
|
|
99
100
|
|
|
100
101
|
👉 For more details, please refer to its [documentation](https://easy-graph.github.io/docs/eggpu.html) page.
|
|
101
102
|
|
|
102
|
-
# News
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- [
|
|
106
|
-
- [
|
|
107
|
-
- [
|
|
108
|
-
- [
|
|
109
|
-
- [
|
|
110
|
-
- [
|
|
111
|
-
- [
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
- [
|
|
115
|
-
- [
|
|
103
|
+
# 📢 EasyGraph News
|
|
104
|
+
|
|
105
|
+
## 📣 Media & Press
|
|
106
|
+
- [08-09-2025] [EasyHypergraph: Fast, Efficient Higher-Order Network Analysis](https://scienmag.com/easyhypergraph-fast-efficient-higher-order-network-analysis/)
|
|
107
|
+
- [01-15-2025] [开放原子大赛OpenRank开源数字生态分析与应用创新大赛全国一等奖 (in Chinese)](https://mp.weixin.qq.com/s/e54JHaP2AAEUN3S8RZ-Y2g)
|
|
108
|
+
- [01-07-2025] [计算机科学技术学院教授陈阳入选“2024中国开源先锋33人” (in Chinese)](https://news.fudan.edu.cn/2025/0107/c2463a143932/page.htm)
|
|
109
|
+
- [12-04-2024] [国际开源基准委员会的"顶级开源证书" (in Chinese)](https://chenyang03.wordpress.com/wp-content/uploads/2025/07/image.png?w=1024)
|
|
110
|
+
- [10-16-2024] [2023年度上海开源创新卓越成果奖 (in Chinese)](https://mp.weixin.qq.com/s/kO6Dpyolf74dlDvKuoLlJA)
|
|
111
|
+
- [11-06-2023] [复旦大学陈阳Patterns:EasyGraph——面向多学科的高性能网络结构分析工具箱|Cell Press论文速递 (in Chinese)](https://mp.weixin.qq.com/s/f2LCyQv1dYuquM_EfGX6Ow?poc_token=HBV092ijI2L534IrD0Jl_fnf3VjhX8UudcPFLH6b)
|
|
112
|
+
- [11-04-2023] [EasyGraph:多功能、跨平台、高效率的跨学科网络分析库 (in Chinese)](https://swarma.org/?p=46252)
|
|
113
|
+
|
|
114
|
+
## 🚀 Releases & Milestones
|
|
115
|
+
- [10-11-2025] EasyGraph **v1.5.1** released (Python 3.14 supported)
|
|
116
|
+
- 🎉 **[09-29-2025] 900K+ Downloads! Thanks to our amazing community!**
|
|
117
|
+
- [07-27-2025] EasyGraph **v1.5** released (This version integrates the HWNN model and supports 11 representative network datasets)
|
|
118
|
+
- 🎉 **[06-29-2025] 800K+ Downloads!**
|
|
119
|
+
- [11-22-2024] EasyGraph **v1.4.1** released (Python 3.13 supported)
|
|
120
|
+
- [09-20-2024] EasyGraph **v1.4** released (GPU-powered functions for large network analysis)
|
|
121
|
+
- [05-27-2024] EasyGraph **v1.3** released (issues related to hypergraph analysis and visualization resolved)
|
|
122
|
+
- [04-09-2024] EasyGraph **v1.2** released (Python 3.12 supported)
|
|
123
|
+
- [02-05-2024] EasyGraph **v1.1** released (hypergraph analysis and learning for higher-order networks)
|
|
124
|
+
- [08-17-2023] EasyGraph **v1.0** released
|
|
125
|
+
- [07-22-2020] EasyGraph **first public release**
|
|
126
|
+
|
|
127
|
+
## 📈 Publications
|
|
128
|
+
- [05-30-2025] 🎉 Our paper "EasyHypergraph: an open-source software for fast and memory-saving analysis and learning of higher-order networks" was accepted by Humanities and Social Sciences Communications (Nature Portfolio)! [[PDF](https://www.nature.com/articles/s41599-025-05180-5)]
|
|
129
|
+
- [08-08-2023] 🎉 Our paper "EasyGraph: A Multifunctional, Cross-Platform, and Effective Library for Interdisciplinary Network Analysis" was accepted by Patterns (Cell Press)! [[PDF](https://www.sciencedirect.com/science/article/pii/S2666389923002180)]
|
|
116
130
|
|
|
117
131
|
# Stargazers
|
|
118
132
|
|
|
@@ -125,7 +139,7 @@ It bridges the gap between EasyGraph and higher-order relationships. EasyHypergr
|
|
|
125
139
|
|
|
126
140
|
## Supported Versions
|
|
127
141
|
|
|
128
|
-
``3.8 <= Python <= 3.
|
|
142
|
+
``3.8 <= Python <= 3.14`` is required.
|
|
129
143
|
|
|
130
144
|
## Installation With pip
|
|
131
145
|
```
|
|
@@ -162,12 +162,14 @@ easygraph/functions/centrality/tests/test_pagerank.py
|
|
|
162
162
|
easygraph/functions/community/LPA.py
|
|
163
163
|
easygraph/functions/community/__init__.py
|
|
164
164
|
easygraph/functions/community/ego_graph.py
|
|
165
|
+
easygraph/functions/community/localsearch.py
|
|
165
166
|
easygraph/functions/community/louvain.py
|
|
166
167
|
easygraph/functions/community/modularity.py
|
|
167
168
|
easygraph/functions/community/modularity_max_detection.py
|
|
168
169
|
easygraph/functions/community/motif.py
|
|
169
170
|
easygraph/functions/community/tests/__init__.py
|
|
170
171
|
easygraph/functions/community/tests/test_LPA.py
|
|
172
|
+
easygraph/functions/community/tests/test_LS.py
|
|
171
173
|
easygraph/functions/community/tests/test_ego_graph.py
|
|
172
174
|
easygraph/functions/community/tests/test_louvian.py
|
|
173
175
|
easygraph/functions/community/tests/test_modularity.py
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
tqdm>=4.49.0
|
|
2
2
|
joblib>=1.2.0
|
|
3
3
|
six>=1.16.0
|
|
4
|
-
numpy<2.0,>=1.18.5
|
|
5
4
|
progressbar33>=2.4
|
|
6
5
|
progressbar>=2.5
|
|
7
6
|
nose>=0.10.1
|
|
@@ -9,6 +8,10 @@ matplotlib
|
|
|
9
8
|
requests
|
|
10
9
|
optuna
|
|
11
10
|
|
|
11
|
+
[:python_version < "3.14"]
|
|
12
|
+
numpy>=1.23
|
|
13
|
+
gensim>=4.3.3
|
|
14
|
+
|
|
12
15
|
[:python_version <= "3.7"]
|
|
13
16
|
pandas<=1.1.5,>=1.0.1
|
|
14
17
|
|
|
@@ -16,16 +19,13 @@ pandas<=1.1.5,>=1.0.1
|
|
|
16
19
|
scikit-learn<=1.0.2,>=0.24.0
|
|
17
20
|
scipy<=1.7.3,>=1.5.0
|
|
18
21
|
|
|
19
|
-
[:python_version >= "3.
|
|
20
|
-
numpy>=
|
|
22
|
+
[:python_version >= "3.14"]
|
|
23
|
+
numpy>=2.0
|
|
21
24
|
|
|
22
|
-
[:python_version >= "3.7"]
|
|
25
|
+
[:python_version >= "3.7" and python_version < "3.14"]
|
|
23
26
|
statsmodels>=0.12.0
|
|
24
27
|
|
|
25
|
-
[:python_version >= "3.
|
|
26
|
-
numpy>=1.19.5
|
|
27
|
-
|
|
28
|
-
[:python_version >= "3.8"]
|
|
29
|
-
gensim>=4.2.0
|
|
28
|
+
[:python_version >= "3.8" and python_version < "3.14"]
|
|
30
29
|
scikit-learn>=0.24.0
|
|
31
30
|
scipy>=1.8.0
|
|
31
|
+
pandas>=1.1.0
|
|
@@ -51,20 +51,33 @@ It bridges the gap between EasyGraph and higher-order relationships. EasyHypergr
|
|
|
51
51
|
|
|
52
52
|
👉 For more details, please refer to its [documentation](https://easy-graph.github.io/docs/eggpu.html) page.
|
|
53
53
|
|
|
54
|
-
# News
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- [
|
|
58
|
-
- [
|
|
59
|
-
- [
|
|
60
|
-
- [
|
|
61
|
-
- [
|
|
62
|
-
- [
|
|
63
|
-
- [
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- [
|
|
67
|
-
- [
|
|
54
|
+
# 📢 EasyGraph News
|
|
55
|
+
|
|
56
|
+
## 📣 Media & Press
|
|
57
|
+
- [08-09-2025] [EasyHypergraph: Fast, Efficient Higher-Order Network Analysis](https://scienmag.com/easyhypergraph-fast-efficient-higher-order-network-analysis/)
|
|
58
|
+
- [01-15-2025] [开放原子大赛OpenRank开源数字生态分析与应用创新大赛全国一等奖 (in Chinese)](https://mp.weixin.qq.com/s/e54JHaP2AAEUN3S8RZ-Y2g)
|
|
59
|
+
- [01-07-2025] [计算机科学技术学院教授陈阳入选“2024中国开源先锋33人” (in Chinese)](https://news.fudan.edu.cn/2025/0107/c2463a143932/page.htm)
|
|
60
|
+
- [12-04-2024] [国际开源基准委员会的"顶级开源证书" (in Chinese)](https://chenyang03.wordpress.com/wp-content/uploads/2025/07/image.png?w=1024)
|
|
61
|
+
- [10-16-2024] [2023年度上海开源创新卓越成果奖 (in Chinese)](https://mp.weixin.qq.com/s/kO6Dpyolf74dlDvKuoLlJA)
|
|
62
|
+
- [11-06-2023] [复旦大学陈阳Patterns:EasyGraph——面向多学科的高性能网络结构分析工具箱|Cell Press论文速递 (in Chinese)](https://mp.weixin.qq.com/s/f2LCyQv1dYuquM_EfGX6Ow?poc_token=HBV092ijI2L534IrD0Jl_fnf3VjhX8UudcPFLH6b)
|
|
63
|
+
- [11-04-2023] [EasyGraph:多功能、跨平台、高效率的跨学科网络分析库 (in Chinese)](https://swarma.org/?p=46252)
|
|
64
|
+
|
|
65
|
+
## 🚀 Releases & Milestones
|
|
66
|
+
- [10-11-2025] EasyGraph **v1.5.1** released (Python 3.14 supported)
|
|
67
|
+
- 🎉 **[09-29-2025] 900K+ Downloads! Thanks to our amazing community!**
|
|
68
|
+
- [07-27-2025] EasyGraph **v1.5** released (This version integrates the HWNN model and supports 11 representative network datasets)
|
|
69
|
+
- 🎉 **[06-29-2025] 800K+ Downloads!**
|
|
70
|
+
- [11-22-2024] EasyGraph **v1.4.1** released (Python 3.13 supported)
|
|
71
|
+
- [09-20-2024] EasyGraph **v1.4** released (GPU-powered functions for large network analysis)
|
|
72
|
+
- [05-27-2024] EasyGraph **v1.3** released (issues related to hypergraph analysis and visualization resolved)
|
|
73
|
+
- [04-09-2024] EasyGraph **v1.2** released (Python 3.12 supported)
|
|
74
|
+
- [02-05-2024] EasyGraph **v1.1** released (hypergraph analysis and learning for higher-order networks)
|
|
75
|
+
- [08-17-2023] EasyGraph **v1.0** released
|
|
76
|
+
- [07-22-2020] EasyGraph **first public release**
|
|
77
|
+
|
|
78
|
+
## 📈 Publications
|
|
79
|
+
- [05-30-2025] 🎉 Our paper "EasyHypergraph: an open-source software for fast and memory-saving analysis and learning of higher-order networks" was accepted by Humanities and Social Sciences Communications (Nature Portfolio)! [[PDF](https://www.nature.com/articles/s41599-025-05180-5)]
|
|
80
|
+
- [08-08-2023] 🎉 Our paper "EasyGraph: A Multifunctional, Cross-Platform, and Effective Library for Interdisciplinary Network Analysis" was accepted by Patterns (Cell Press)! [[PDF](https://www.sciencedirect.com/science/article/pii/S2666389923002180)]
|
|
68
81
|
|
|
69
82
|
# Stargazers
|
|
70
83
|
|
|
@@ -77,7 +90,7 @@ It bridges the gap between EasyGraph and higher-order relationships. EasyHypergr
|
|
|
77
90
|
|
|
78
91
|
## Supported Versions
|
|
79
92
|
|
|
80
|
-
``3.8 <= Python <= 3.
|
|
93
|
+
``3.8 <= Python <= 3.14`` is required.
|
|
81
94
|
|
|
82
95
|
## Installation With pip
|
|
83
96
|
```
|
|
@@ -32,7 +32,7 @@ Graph_L graph_to_linkgraph(Graph &G, bool if_directed, std::string weight_key, b
|
|
|
32
32
|
const std::vector<graph_edge>& edges = G._get_edges(if_directed);
|
|
33
33
|
int edges_num = edges.size();
|
|
34
34
|
Graph_L G_l(node_num, if_directed, is_deg);
|
|
35
|
-
for(
|
|
35
|
+
for(int i = 0; i < edges_num; i++){
|
|
36
36
|
graph_edge e = edges[i];
|
|
37
37
|
edge_attr_dict_factory& edge_attr = e.attr;
|
|
38
38
|
weight_t edge_weight = edge_attr.find(weight_key) != edge_attr.end() ? edge_attr[weight_key] : 1;
|
|
@@ -42,7 +42,7 @@ Graph_L graph_to_linkgraph(Graph &G, bool if_directed, std::string weight_key, b
|
|
|
42
42
|
G_l.add_weighted_edge(e.u, e.v, edge_weight);
|
|
43
43
|
if (!if_directed){
|
|
44
44
|
G_l.add_weighted_edge(e.v, e.u, edge_weight);
|
|
45
|
-
}
|
|
45
|
+
}
|
|
46
46
|
}
|
|
47
47
|
return G_l;
|
|
48
|
-
}
|
|
48
|
+
}
|
{python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/centrality/betweenness.cpp
RENAMED
|
@@ -25,11 +25,11 @@ void betweenness_dijkstra(const Graph_L& G_l, const int &S, std::vector<double>&
|
|
|
25
25
|
std::vector<double> delta(N+1, 0);
|
|
26
26
|
std::vector<LinkEdge> E_path(edges_num+1);
|
|
27
27
|
head_path[S] = 0;
|
|
28
|
-
dis[S] = 0;
|
|
29
|
-
count_path[S] = 1;
|
|
28
|
+
dis[S] = 0;
|
|
29
|
+
count_path[S] = 1;
|
|
30
30
|
segment_tree_zkw.change(S, 0);
|
|
31
31
|
int cnt_St = 0;
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
while(segment_tree_zkw.t[1] != dis_inf) {
|
|
34
34
|
int u = segment_tree_zkw.num[1];
|
|
35
35
|
if(u==0) break;
|
|
@@ -37,15 +37,15 @@ void betweenness_dijkstra(const Graph_L& G_l, const int &S, std::vector<double>&
|
|
|
37
37
|
if (cutoff >= 0 && dis[u] > cutoff){
|
|
38
38
|
continue;
|
|
39
39
|
}
|
|
40
|
-
St[cnt_St++] = u;
|
|
40
|
+
St[cnt_St++] = u;
|
|
41
41
|
for(int p = head[u]; p != -1; p = E[p].next) {
|
|
42
42
|
int v = E[p].to;
|
|
43
43
|
if(cutoff >= 0 && (dis[u] + E[p].w) > cutoff){
|
|
44
44
|
continue;
|
|
45
45
|
}
|
|
46
46
|
if (dis[v] > dis[u] + E[p].w) {
|
|
47
|
-
dis[v] = dis[u] + E[p].w;
|
|
48
|
-
segment_tree_zkw.change(v, dis[v]);
|
|
47
|
+
dis[v] = dis[u] + E[p].w;
|
|
48
|
+
segment_tree_zkw.change(v, dis[v]);
|
|
49
49
|
count_path[v] = count_path[u];
|
|
50
50
|
head_path[v] = 0;
|
|
51
51
|
E_path[++edge_number_path].next = head_path[v];
|
|
@@ -57,7 +57,7 @@ void betweenness_dijkstra(const Graph_L& G_l, const int &S, std::vector<double>&
|
|
|
57
57
|
E_path[++edge_number_path].next = head_path[v];
|
|
58
58
|
E_path[edge_number_path].to = u;
|
|
59
59
|
head_path[v] = edge_number_path;
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -105,8 +105,8 @@ static double calc_scale(int len_V, int is_directed, int normalized, int endpoin
|
|
|
105
105
|
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
static py::object invoke_cpp_betweenness_centrality(py::object G, py::object weight,
|
|
109
|
-
py::object cutoff, py::object sources,
|
|
108
|
+
static py::object invoke_cpp_betweenness_centrality(py::object G, py::object weight,
|
|
109
|
+
py::object cutoff, py::object sources,
|
|
110
110
|
py::object normalized, py::object endpoints){
|
|
111
111
|
Graph& G_ = G.cast<Graph&>();
|
|
112
112
|
int cutoff_ = -1;
|
|
@@ -134,7 +134,7 @@ static py::object invoke_cpp_betweenness_centrality(py::object G, py::object wei
|
|
|
134
134
|
if(!sources.is_none()){
|
|
135
135
|
py::list sources_list = py::list(sources);
|
|
136
136
|
int sources_list_len = py::len(sources_list);
|
|
137
|
-
for(
|
|
137
|
+
for(int i = 0; i < sources_list_len; i++){
|
|
138
138
|
if(G_.node_to_id.attr("get")(sources_list[i],py::none()).is_none()){
|
|
139
139
|
printf("The node should exist in the graph!");
|
|
140
140
|
return py::none();
|
|
@@ -163,7 +163,7 @@ static py::object invoke_cpp_betweenness_centrality(py::object G, py::object wei
|
|
|
163
163
|
|
|
164
164
|
|
|
165
165
|
#ifdef EASYGRAPH_ENABLE_GPU
|
|
166
|
-
static py::object invoke_gpu_betweenness_centrality(py::object G, py::object weight,
|
|
166
|
+
static py::object invoke_gpu_betweenness_centrality(py::object G, py::object weight,
|
|
167
167
|
py::object py_sources, py::object normalized, py::object endpoints) {
|
|
168
168
|
Graph& G_ = G.cast<Graph&>();
|
|
169
169
|
if (weight.is_none()) {
|
|
@@ -174,12 +174,12 @@ static py::object invoke_gpu_betweenness_centrality(py::object G, py::object wei
|
|
|
174
174
|
auto csr_graph = G_.csr_graph;
|
|
175
175
|
std::vector<int>& E = csr_graph->E;
|
|
176
176
|
std::vector<int>& V = csr_graph->V;
|
|
177
|
-
std::vector<double> *W_p = weight.is_none() ? &(csr_graph->unweighted_W)
|
|
177
|
+
std::vector<double> *W_p = weight.is_none() ? &(csr_graph->unweighted_W)
|
|
178
178
|
: csr_graph->W_map.find(weight_to_string(weight))->second.get();
|
|
179
179
|
auto sources = G_.gen_CSR_sources(py_sources);
|
|
180
180
|
std::vector<double> BC;
|
|
181
181
|
bool is_directed = G.attr("is_directed")().cast<bool>();
|
|
182
|
-
int gpu_r = gpu_easygraph::betweenness_centrality(V, E, *W_p, *sources,
|
|
182
|
+
int gpu_r = gpu_easygraph::betweenness_centrality(V, E, *W_p, *sources,
|
|
183
183
|
is_directed, normalized.cast<py::bool_>(),
|
|
184
184
|
endpoints.cast<py::bool_>(), BC);
|
|
185
185
|
|
|
@@ -196,7 +196,7 @@ static py::object invoke_gpu_betweenness_centrality(py::object G, py::object wei
|
|
|
196
196
|
#endif
|
|
197
197
|
|
|
198
198
|
|
|
199
|
-
py::object betweenness_centrality(py::object G, py::object weight, py::object cutoff, py::object sources,
|
|
199
|
+
py::object betweenness_centrality(py::object G, py::object weight, py::object cutoff, py::object sources,
|
|
200
200
|
py::object normalized, py::object endpoints) {
|
|
201
201
|
#ifdef EASYGRAPH_ENABLE_GPU
|
|
202
202
|
return invoke_gpu_betweenness_centrality(G, weight, sources, normalized, endpoints);
|
|
@@ -212,7 +212,7 @@ py::object betweenness_centrality(py::object G, py::object weight, py::object cu
|
|
|
212
212
|
// std::vector<double> dis(N+1, INFINITY);
|
|
213
213
|
// std::vector<bool> vis(N+1, false);
|
|
214
214
|
// std::vector<int> head_path(N+1, 0);
|
|
215
|
-
|
|
215
|
+
|
|
216
216
|
// const std::vector<int>& head = G_l.head;
|
|
217
217
|
// const std::vector<LinkEdge>& E = G_l.edges;
|
|
218
218
|
// int edges_num = E.size();
|
|
@@ -220,10 +220,10 @@ py::object betweenness_centrality(py::object G, py::object weight, py::object cu
|
|
|
220
220
|
// std::vector<long long> count_path(N+1, 0);
|
|
221
221
|
// std::vector<double> delta(N+1, 0);
|
|
222
222
|
// std::vector<LinkEdge> E_path(edges_num+1);
|
|
223
|
-
|
|
223
|
+
|
|
224
224
|
// head_path[S] = 0;
|
|
225
|
-
// dis[S] = 0;
|
|
226
|
-
// count_path[S] = 1;
|
|
225
|
+
// dis[S] = 0;
|
|
226
|
+
// count_path[S] = 1;
|
|
227
227
|
// q.push(compare_node(S, 0));
|
|
228
228
|
// int cnt_St = 0;
|
|
229
229
|
// while(!q.empty()) {
|
|
@@ -250,14 +250,14 @@ py::object betweenness_centrality(py::object G, py::object weight, py::object cu
|
|
|
250
250
|
// E_path[++edge_number_path].next = head_path[v];
|
|
251
251
|
// E_path[edge_number_path].to = u;
|
|
252
252
|
// head_path[v] = edge_number_path;
|
|
253
|
-
|
|
253
|
+
|
|
254
254
|
// }
|
|
255
255
|
// else if (dis[v] == dis[u] + E[p].w) {
|
|
256
256
|
// count_path[v] += count_path[u];
|
|
257
257
|
// E_path[++edge_number_path].next = head_path[v];
|
|
258
258
|
// E_path[edge_number_path].to = u;
|
|
259
259
|
// head_path[v] = edge_number_path;
|
|
260
|
-
|
|
260
|
+
|
|
261
261
|
// }
|
|
262
262
|
// }
|
|
263
263
|
// }
|
{python_easygraph-1.5 → python_easygraph-1.5.2}/cpp_easygraph/functions/centrality/closeness.cpp
RENAMED
|
@@ -18,7 +18,7 @@ double closeness_dijkstra(const Graph_L& G_l, const int &S, int cutoff, Segment_
|
|
|
18
18
|
const std::vector<int>& head = G_l.head;
|
|
19
19
|
int number_connected = 0;
|
|
20
20
|
long long sum_dis = 0;
|
|
21
|
-
dis[S] = 0;
|
|
21
|
+
dis[S] = 0;
|
|
22
22
|
segment_tree_zkw.change(S, 0);
|
|
23
23
|
while(segment_tree_zkw.t[1] != dis_inf) {
|
|
24
24
|
int u = segment_tree_zkw.num[1];
|
|
@@ -26,17 +26,17 @@ double closeness_dijkstra(const Graph_L& G_l, const int &S, int cutoff, Segment_
|
|
|
26
26
|
segment_tree_zkw.change(u, dis_inf);
|
|
27
27
|
if (cutoff >= 0 && dis[u] > cutoff){
|
|
28
28
|
continue;
|
|
29
|
-
}
|
|
29
|
+
}
|
|
30
30
|
number_connected += 1;
|
|
31
31
|
sum_dis += dis[u];
|
|
32
|
-
for(
|
|
32
|
+
for(int p = head[u]; p != -1; p = E[p].next) {
|
|
33
33
|
int v = E[p].to;
|
|
34
34
|
if(cutoff >= 0 && (dis[u] + E[p].w) > cutoff){
|
|
35
35
|
continue;
|
|
36
36
|
}
|
|
37
37
|
if (dis[v] > dis[u] + E[p].w) {
|
|
38
38
|
dis[v] = dis[u] + E[p].w;
|
|
39
|
-
segment_tree_zkw.change(v, dis[v]);
|
|
39
|
+
segment_tree_zkw.change(v, dis[v]);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -44,10 +44,10 @@ double closeness_dijkstra(const Graph_L& G_l, const int &S, int cutoff, Segment_
|
|
|
44
44
|
return 0.0;
|
|
45
45
|
else
|
|
46
46
|
return 1.0 * (number_connected - 1) * (number_connected - 1) / ((N - 1) * sum_dis);
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
static py::object invoke_cpp_closeness_centrality(py::object G, py::object weight,
|
|
50
|
+
static py::object invoke_cpp_closeness_centrality(py::object G, py::object weight,
|
|
51
51
|
py::object cutoff, py::object sources) {
|
|
52
52
|
Graph& G_ = G.cast<Graph&>();
|
|
53
53
|
int N = G_.node.size();
|
|
@@ -63,7 +63,7 @@ static py::object invoke_cpp_closeness_centrality(py::object G, py::object weigh
|
|
|
63
63
|
if(!sources.is_none()){
|
|
64
64
|
py::list sources_list = py::list(sources);
|
|
65
65
|
int sources_list_len = py::len(sources_list);
|
|
66
|
-
for(
|
|
66
|
+
for(int i = 0; i < sources_list_len; i++){
|
|
67
67
|
if(G_.node_to_id.attr("get")(sources_list[i],py::none()).is_none()){
|
|
68
68
|
printf("The node should exist in the graph!");
|
|
69
69
|
return py::none();
|
|
@@ -74,7 +74,7 @@ static py::object invoke_cpp_closeness_centrality(py::object G, py::object weigh
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
else{
|
|
77
|
-
for(
|
|
77
|
+
for(int i = 1; i <= N; i++){
|
|
78
78
|
float res = closeness_dijkstra(G_l, i, cutoff_,segment_tree_zkw);
|
|
79
79
|
CC.push_back(res);
|
|
80
80
|
}
|
|
@@ -96,7 +96,7 @@ static py::object invoke_gpu_closeness_centrality(py::object G, py::object weigh
|
|
|
96
96
|
auto csr_graph = G_.csr_graph;
|
|
97
97
|
std::vector<int>& E = csr_graph->E;
|
|
98
98
|
std::vector<int>& V = csr_graph->V;
|
|
99
|
-
std::vector<double> *W_p = weight.is_none() ? &(csr_graph->unweighted_W)
|
|
99
|
+
std::vector<double> *W_p = weight.is_none() ? &(csr_graph->unweighted_W)
|
|
100
100
|
: csr_graph->W_map.find(weight_to_string(weight))->second.get();
|
|
101
101
|
auto sources = G_.gen_CSR_sources(py_sources);
|
|
102
102
|
std::vector<double> CC;
|
|
@@ -120,4 +120,4 @@ py::object closeness_centrality(py::object G, py::object weight, py::object cuto
|
|
|
120
120
|
#else
|
|
121
121
|
return invoke_cpp_closeness_centrality(G, weight, cutoff, sources);
|
|
122
122
|
#endif
|
|
123
|
-
}
|
|
123
|
+
}
|
|
@@ -51,7 +51,7 @@ py::object invoke_cpp_core_decomposition(py::object G) {
|
|
|
51
51
|
for(int i = 1; i <= N; ++i){
|
|
52
52
|
int v = vert[i];
|
|
53
53
|
core[v] = deg[v];
|
|
54
|
-
for(
|
|
54
|
+
for(int p = head[v]; p!=-1; p = edges[p].next){
|
|
55
55
|
int u = edges[p].to;
|
|
56
56
|
if (deg[u] > deg[v]) {
|
|
57
57
|
int w = vert[bin[deg[u]]];
|
|
@@ -98,4 +98,4 @@ py::object core_decomposition(py::object G) {
|
|
|
98
98
|
#else
|
|
99
99
|
return invoke_cpp_core_decomposition(G);
|
|
100
100
|
#endif
|
|
101
|
-
}
|
|
101
|
+
}
|