graphfragments.jl

Implementation of Graph Fragmentation in serial and in parallel.

https://github.com/jcsyme/graphfragments.jl

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.0%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Implementation of Graph Fragmentation in serial and in parallel.

Basic Info
  • Host: GitHub
  • Owner: jcsyme
  • License: mit
  • Language: Julia
  • Default Branch: main
  • Size: 22.5 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed 11 months ago
Metadata Files
Readme License Citation

README.md

GraphFragments.jl

Introduction

GraphFragments.jl implements the fragmentation metric introduced by Borgatti. The package includes standard implementation, distance-based fragmentation, and serial and distributed approaches.

Use

The fragmentation of the graph can be calculated using the fragmentation function. This function will automatically try to run in parallel if the keyword argument parallel_approach = true (default) is set; this can be fixed to run serially if desired or in parallel (if a script is setup to automatically run in parallel).

Fragmentation relies on the calculation of shortest paths across the graph from each starting node; if parallelized, the calculation will use synchronous data parallelization to distribute each source node on an available compute node. A dictionary of DistributedArrays.DArray objects for use by the distance algorithm can be passed using the dict_arrays argument, though the user should ensure these arrays match those necessary for the algorithm specificed by distance_algorithm. These arrays can include intermediate algorithmic vectors as well as any applicable heap cache arrays.

The user can access information about these arguments using the docstrings for fragmentation in Julia.

fragmentation( graph::Union{AbstractGraph, Nothing}, dict_arrays::Union{Dict{Symbol, Vector}, Dict{Symbol, DArray}, Nothing} = nothing; D_invs::Union{Matrix{Int64}, Matrix{Float64}, Nothing} = nothing, distance_algorithm::Symbol = :auto, parallel_approach::Symbol = :auto, use_distance_weighting::Bool = true, kwargs... )

fragmentation( adj::Union{SparseMatrixCSC{Float64, Int64}, Matrix{Float64}}; kwargs... )

Data

The code only needs a Graph to work off of. This can be loaded in a Julia session using Graphs.jl. If using DiscreteGraphAlgorithms.jl, then the graph property of a GraphWrapper can be used.

Project information

The authors are grateful to RAND Center for Global Risk and Security Advisory Board members Michael Munemann and Paul Cronson for funding this project. All code was developed between April 2023 and October 2024.

References/Bibliography

Borgatti, Steve, The Key Player Problem (September 21, 2002). Available at SSRN: https://ssrn.com/abstract=1149843 or http://dx.doi.org/10.2139/ssrn.1149843

Copyright and License

Copyright (C) <2024> RAND Corporation. This code is made available under the MIT license.

Authors and Reference

James Syme, 2024.

@misc{GDA2024, author = {Syme, James}, title = {GraphFragments.jl: Distributed implementation of Key-Player Problem negative (KPP-Negative) metric.}, year = 2024, url = {URLHERE} }

Owner

  • Login: jcsyme
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
title: GraphFragments.jl
message: Suggested Citation
type: software
authors:
  - email: jsyme@rand.org
    given-names: James
    family-names: Syme
    affiliation: RAND
repository-code: >-
  MISSING
url: MISSING
abstract: >-
  Implement the Distance-based Fragmentation for Key Player Problem Negative
  (KPP-Neg) metrics from Borgatti (2006). Inlcudes serial and parallel 
  implementations, where the parallel implementation allows for distributed
  computation of betweenness centralities across compute cores.
license: MIT

GitHub Events

Total
  • Push event: 7
Last Year
  • Push event: 7