Skip to content

Releases: DaymudeLab/assembly-theory

v0.6.1

05 Feb 19:29
4e845d7

Choose a tag to compare

This minor release implements timeout functionality, references our new JOSS publication in the documentation, and fixes some GitHub Actions infrastructure.

Changelog

🚨 Breaking Changes

As part of implementing timeout functionality across all interfaces (by @jdaymude in #133), there are two breaking changes:

  • Adds a new --timeout flag for the CLI, timeout parameter for assembly::index_search in the Rust crate, and timeout parameter for assembly_theory.index_search in the Python package. Assembly index search runs normally if timeout == None and otherwise stops after timeout milliseconds, returning the best upper bound on the assembly index found so far instead.
  • The assembly::index_search function and its Python counterpart now return an Option<usize> for the number of states searched instead of a straight usize. It is either the number of states searched or None if search times out.

📝 JOSS Publication

  • Update READMEs and documentation to reflect new publications by @jdaymude in #136

🤖 GitHub Actions

Full Changelog: v0.6.0...v0.6.1

joss-final

16 Dec 00:17
52aca0c

Choose a tag to compare

This release includes all source files, supporting scripts, and performance evaluations for our Journal of Open Source Software manuscript titled assembly-theory: Open, Reproducible Calculation of Assembly Indices.

It reflects the functionality of assembly-theory v0.6.0 and additionally includes a paper/ directory containing:

  • Source files for our JOSS manuscript.
  • A dedicated README with instructions for compiling the paper and reproducing our performance evaluations.
  • Submodules for assembly_go and assemblycpp-v5, the other open-source methods for computing assembly indices.
  • Benchmark and analysis scripts for the manuscript's performance evaluations.

Below are the raw outputs of those performance evaluations (see the manuscript for details). They have been renamed to avoid ambiguity, but can still be analyzed by paper/benches/bench_stats.py as described in paper/README.md.

v0.6.0

03 Dec 22:57
5c16014

Choose a tag to compare

This release implements a new bounding strategy following that of Seet et al., 2024 (GitHub), many under-the-hood optimizations, and improved documentation and usage instructions.

Changelog

🚨 Breaking Changes

  • Match enumeration modes have been removed from all interfaces in favor of DAG-based enumeration in #121. This used to be listed as --enumerate on the CLI and EnumerateMode in the Rust crate. You may simply drop this option/parameter from any existing code to use the new version.
  • The memoization mode previously listed as --memoize frags-index on the CLI and MemoizeMode::FragsIndex in the Rust crate has been removed, as it is incompatible with the cache key optimization done in #119. Use --memoize canon-index on the CLI or MemoizeMode::CanonIndex in the Rust crate instead.
  • Bounds that were not implemented yet, including Bounds::CoverNoSort, Bounds::CoverSort, and Bounds::CliqueBudget have been removed from all interfaces. Previously, providing any of these options would cause a panic with an informative error message, but after differentiating bound types in #129, this error is no longer straightforward to catch.

⚡ Algorithm Improvements and Optimizations

📝 Documentation

⚖️ Governance

Full Changelog: v0.5.1...v0.6.0

v0.5.1

07 Aug 21:50
ac61c84

Choose a tag to compare

This release contains everything from v0.5.0, plus a hotfix addressing:

  • 🐍 Nondeterministic bound ordering in the Python interface.
  • 🔨 The possibility for the GitHub CI to install the live PyPI version of assembly-theory instead of the local version it's supposed to test.

Full Changelog: v0.5.0...v0.5.1

v0.5.0

06 Aug 20:57
934db70

Choose a tag to compare

This release brings a modular reorganization of our entire codebase; a streamlined Python interface; complete and context-specific documentation across the repo, Rust crate, and Python package; and many new algorithmic features and improvements.

Changelog

🔨 Refactors

  • Modularize top-down algorithm components by @jdaymude in #89
  • Bring documentation up to date, refactor Python package by @jdaymude in #99
  • Directly depend on nauty-Traces-sys instead of modified graph-canon by @AgentElement in #109

✔️ Tests & Benchmarks

  • Split benchmarks into phases enabling granular timing insights by @jdaymude in #103
  • Restore data files from Git LFS to standard git by @jdaymude in #111

⚡ Algorithm Improvements

Full Changelog: v0.4.0...v0.5.0

v0.3.0

14 Jun 02:57
v0.3.0
cf0fc22

Choose a tag to compare

What's Changed

Full Changelog: v0.2.0...v0.3.0

v0.2.0

28 Mar 17:47
v0.2.0
ae7496e

Choose a tag to compare

Initial release

  • Molecular assembly index with bound selection
  • RDKit interop, custom molfile parser
  • Rust and Python libraries available on crates.io and PyPI