Skip to content

Release/0.5.0-beta, complete rewrite - #68

Open
ryandewolfe33 wants to merge 76 commits into
AleksanderWWW:mainfrom
ryandewolfe33:release/0.5.0-beta
Open

Release/0.5.0-beta, complete rewrite#68
ryandewolfe33 wants to merge 76 commits into
AleksanderWWW:mainfrom
ryandewolfe33:release/0.5.0-beta

Conversation

@ryandewolfe33

@ryandewolfe33 ryandewolfe33 commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Complete re-write for version 0.5.0 to simplify structure and increase speed. Total disregard for backwards compatibility.

  • Main class is ABCD, stores parameters and has a .sample() method to generate a graph Redesign user interface #64
  • Returns an ABCDSample class that contains exporters and parameter measurements
  • New overlap features (ABCDoo) via parameters eta and rho in ABCD
  • All randomness through a global numpy rng Generator Handle seeding process better #65
  • ABCD.fit() to fit the parameters of an observed graph Fit params for observed graph. #66
  • Documentation ready for readthedocs
  • More tests
  • Benchmark tests to check for performance regression
  • Workflows moved entirely to uv
  • dev and docs dependencies moved to dependency-groups in pyproject, may cause problems with package versions.

Anything docker will probably break since I'm not sure how it works.

ryandewolfe33 and others added 25 commits August 23, 2026 09:14
* Fix bug in rewiring and models, faster degree assignments

* Faster (and fixed?) degree assignment

* Can sample 100 000 node graph in 0.5s.
* Start docs with index and API

* Getting started notebook

* Add outliers notebook

* Add overlap notebook

* Run overlap notebook through prek

* Add igraph notebook

* Add networkx benchmark

* Add networkx benchmark to index

* Add sknetwork benchmark

* Fix igraph benchmark import

* Update getting started headers

* Add how it works doc
* Add custom powerlaw exponent estimator and remove powerlaw package

* Fix abcd_sample rho
* Add benchmarks and ci workflow

* Add pytest-benchmark to dev

* Move to dependency-groups in pyproject.toml

* Upgrade packages in lock

* Run everything with uv (and delete custom actions, specify everything in each workflow file)
* Fix doc typos in ABCD

* Add controls for fitting groups of parasm

* Add tests
Hash edges as tuples instead of uint64 in rewire. Set up for general changes to make node dtype dynamic instead of uint32.
* Configuration model inplace option

* Add chung-lu model and update protocol

* Make abcd generate inplace
* Use argpartiton in outlier degree assignment

* Special path for alpha=0
Instead of fixed uint32 (and thus maximum allowable node count), instead pick a dtype dynamically based on the number of nodes. Scipy requires int32/int64 for their pointer arrays, so there's not as much savings as anticipated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant