Skip to main content

Python-wrapped C/C++ library for degree-preserving network randomization

Project description

XSwap: Fast degree-preserving network permutation

XSwap is an algorithm for degree-preserving network randomization (permutation) [1]. Permuted networks can be used for a number of purposes in network analysis, including for generating counterfactual distributions of features when only the network's degree sequence is maintained or for computing a prior probability of an edge given only the network's degree sequence. Overall, permuted networks allow one to quantify the effects of degree on analysis and prediction methods. Understanding this effect is useful when a network's degree sequence is subject to biases. This implementation is a modified version of the algorithm due to Hanhijärvi et al. with two additional parameters (allow_self_loops and allow_antiparallel), which enable greater generalizability to bipartite, directed, and undirected networks.

  1. Randomization Techniques for Graphs Sami Hanhijärvi, Gemma C. Garriga, Kai Puolamäki Proceedings of the 2009 SIAM International Conference on Data Mining (2009-04-30) https://doi.org/f3mn58 DOI: 10.1137/1.9781611972795.67

Usage examples

Permuting an edge list

>>> edges = [(0, 1), (1, 0)]
>>> permuted_edges, permutation_statistics = xswap.permute_edge_list(
        edges, allow_self_loops=True, allow_antiparallel=True,
        multiplier=10)
>>> permuted_edges
[(0, 0), (1, 1)]
>>> permutation_statistics
{'swap_attempts': 20, 'same_edge': 10, 'self_loop': 0, 'duplicate': 1,
 'undir_duplicate': 0, 'excluded': 0}

Computing degree-sequence based prior probabilities of edges existing

>>> edges = [(0, 1), (1, 0)]
>>> prior_prob_df = xswap.prior.compute_xswap_priors(
        edges, n_permutations=10000, shape=(2, 2), allow_self_loops=True,
        allow_antiparallel=True)
>>> prior_prob_df
   source_id  target_id   edge  source_degree  target_degree  xswap_prior
0          0          0  False              1              1          0.5
1          0          1   True              1              1          0.5
2          1          0   True              1              1          0.5
3          1          1  False              1              1          0.5

Choice of parameters

Bipartite networks

Bipartite networks should be indexed using the bi-adjacency matrix, meaning that the edge (0, 0) is from source node 0 to target node 0, and is not a self-loop. Moreover, bipartite networks should be permuted using allow_self_loops=False and allow_antiparallel=True.

Directed and undirected networks

For non-bipartite networks, the decisions of allow_self_loops and allow_antiparallel are not always the same. For undirected networks, set allow_antiparallel=False, as otherwise the edges (1, 0) and (0, 1), which represent the same edge, will be treated as separate. Antiparallel edges may or may not be allowed for directed networks, depending on context. Similarly, self-loops may or may not be allowed for directed or undirected networks, depending on the specific network being permuted.

Libraries

The XSwap library includes Roaring Bitmaps (https://github.com/RoaringBitmap/CRoaring), available under the Apache 2.0 license (https://github.com/RoaringBitmap/CRoaring/blob/LICENSE).

Acknowledgments

Development of this project has largely taken place in the Greene Lab at the University of Pennsylvania. However, as an open source project under the hetio organization, this repository is grateful for its community of maintainers, contributors, and users.

This work is funded in part by the Gordon and Betty Moore Foundation’s Data-Driven Discovery Initiative through Grants GBMF4552 to Casey Greene, GBMF4560 to Blair Sullivan, and the National Institutes of Health’s National Human Genome Research Institute R01 HG010067.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

xswap-0.0.2-cp37-cp37m-manylinux2010_x86_64.whl (473.6 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

xswap-0.0.2-cp37-cp37m-manylinux1_x86_64.whl (426.1 kB view details)

Uploaded CPython 3.7m

xswap-0.0.2-cp37-cp37m-manylinux1_i686.whl (402.6 kB view details)

Uploaded CPython 3.7m

xswap-0.0.2-cp36-cp36m-manylinux2010_x86_64.whl (471.5 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

xswap-0.0.2-cp36-cp36m-manylinux1_x86_64.whl (471.5 kB view details)

Uploaded CPython 3.6m

xswap-0.0.2-cp36-cp36m-manylinux1_i686.whl (402.6 kB view details)

Uploaded CPython 3.6m

xswap-0.0.2-cp35-cp35m-manylinux2010_x86_64.whl (470.8 kB view details)

Uploaded CPython 3.5m manylinux: glibc 2.12+ x86-64

xswap-0.0.2-cp35-cp35m-manylinux1_x86_64.whl (470.8 kB view details)

Uploaded CPython 3.5m

xswap-0.0.2-cp35-cp35m-manylinux1_i686.whl (402.6 kB view details)

Uploaded CPython 3.5m

File details

Details for the file xswap-0.0.2-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xswap-0.0.2-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 473.6 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 ea2d49e1ae4367e595eaf6ec6c6cd498a8059a2cd7e2337ed2a5764ace0a37ba
MD5 3c4fce450ca173948cf2f989fb7a0214
BLAKE2b-256 d888f159a7895058706f9fdbfe81d12fb2020a1848b75c3b7466451da96956ca

See more details on using hashes here.

File details

Details for the file xswap-0.0.2-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: xswap-0.0.2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 426.1 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 266614df150b830f31cfedf8b68070544b50a213707017ae885554f63f2e7182
MD5 782dcb2f9e37680b886b9a69676cc971
BLAKE2b-256 bb524f269b43e8e1acd18c9a401bf41e55dccfef07434d33b38827abbd2af8df

See more details on using hashes here.

File details

Details for the file xswap-0.0.2-cp37-cp37m-manylinux1_i686.whl.

File metadata

  • Download URL: xswap-0.0.2-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 402.6 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 22b57690c0782d41c0fb93f7d82a3e6858e26f8e1050fc74945e3065e3a6a9da
MD5 a3eb8337b777619018d168bfbf1223cb
BLAKE2b-256 2b7b86929ad64575b0763f3e6f37230bd591242893c291c2a4b149393763036c

See more details on using hashes here.

File details

Details for the file xswap-0.0.2-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xswap-0.0.2-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 471.5 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 69742fcca57e82664924bcb54fa2a16a28461e37d8758e69c9cd70597d977a47
MD5 4cccf2a6ccddc39193428f7c9d9086ca
BLAKE2b-256 45653d4ca9533f18b107917906a09b920b8a8d716772d5fa9c29285256941e89

See more details on using hashes here.

File details

Details for the file xswap-0.0.2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: xswap-0.0.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 471.5 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bec28d2ae24c8fb18b31e5a1fac10b8bc5ab9db70ed1775ac3988a0d59f377dc
MD5 683913523cf9373df76636e7a4579a30
BLAKE2b-256 ec72430ea01d631a003edbad07d50d8972ed774e8533d98bc12e743b3b833eef

See more details on using hashes here.

File details

Details for the file xswap-0.0.2-cp36-cp36m-manylinux1_i686.whl.

File metadata

  • Download URL: xswap-0.0.2-cp36-cp36m-manylinux1_i686.whl
  • Upload date:
  • Size: 402.6 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 be43e4272a901e95eba578fdcb507e4be5123f28f049b05501f24460db26ee57
MD5 6b396775f8c8653f92a578fefb25440a
BLAKE2b-256 836e9da394d99be4d64abee2af2cefbf9bbea28bf2ec44bd4f1213b23eda67fa

See more details on using hashes here.

File details

Details for the file xswap-0.0.2-cp35-cp35m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xswap-0.0.2-cp35-cp35m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 470.8 kB
  • Tags: CPython 3.5m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 895cd4c5bc9e9d8c1ab19de0f08bd5538644839f8f6bf3f6ed593316ddfcc797
MD5 c9ef9aeff7a3cce349f8ad967aa39bee
BLAKE2b-256 66c81ce89c5c1dd07b361100cbbc852c5146dd6efb264618e384a6b89b5f8b2d

See more details on using hashes here.

File details

Details for the file xswap-0.0.2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: xswap-0.0.2-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 470.8 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 613319f79b4a3c8c2068419a80d00f7309850f871e11142b3b4a123d161573cd
MD5 9b96cf8e6f4c4593ed2fbdf3a90ad233
BLAKE2b-256 b65015a95e994b92afeebf5354589cd7fbe8d2b5fc9331951363c83d8cb131a1

See more details on using hashes here.

File details

Details for the file xswap-0.0.2-cp35-cp35m-manylinux1_i686.whl.

File metadata

  • Download URL: xswap-0.0.2-cp35-cp35m-manylinux1_i686.whl
  • Upload date:
  • Size: 402.6 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for xswap-0.0.2-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 84803392629d7968d54903129b6a7f6bfbce9aa66f8593b4fdd0d2caf324cb14
MD5 3fa4aa481ab2c72241c896385bb4321f
BLAKE2b-256 a5fa839a0e146cbf7c5d11c2d2749065290ab6630d108ee613b53c6249b34439

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page