Skip to content

Add the sist Python package and remove Perl - #54

Merged
harryswift01 merged 5 commits into
mainfrom
50-feature-add-the-sist-python-package
Sep 24, 2026
Merged

harryswift01 merged 5 commits into
mainfrom
50-feature-add-the-sist-python-package

Conversation

@harryswift01

Copy link
Copy Markdown
Member

Summary

This PR adds a Python sist package that replaces the existing Perl pipeline (master.pl, IR_finder.pl), then cuts the whole project over to it: Conda packaging, test fixtures, docs, and the release workflow now install and run sist instead of Perl, and the Perl scripts and runtime dependency are removed. Calculation behaviour is unchanged, the new package is verified bit-for-bit against the existing scientific regression baselines.

Changes

Add the sist Python package

  • New src/sist/ package: CLI and argument spec (cli.py, argspec.py), orchestration that dispatches to the qsidd binaries (runner.py, binaries.py), and the ported IRF report parsing and energy calculations (ir_finder.py, energetics.py)
  • Console-script entry point (sist = sist.cli:main) wired into pyproject.toml; package version resolved from src/sist/__init__.py
  • Unit tests for the ported energy and parsing logic (tests/test_energetics.py, tests/test_ir_finder.py)

Cut over Conda packaging and test fixtures to sist

  • conda-recipe/build.sh now installs sist via pip install . instead of writing a Perl-wrapper script
  • conda-recipe/meta.yaml runtime dependencies switched from perl to python, biopython, beautifulsoup4 (irf unchanged)
  • tests/conftest.py's sist_command fixture now runs the installed/python -m sist command instead of perl master.pl

Remove Perl

  • Deleted master.pl and IR_finder.pl
  • Removed tests/test_python_cli.py its Python/Perl parity-checking purpose is now covered directly by test_cli.py/test_regression.py running the sole sist command
  • Updated docs (installation.rst, source-usage.rst, development.rst, example/README.txt) to describe the sist command instead of the Perl scripts
  • Updated the release workflow to also patch src/sist/__init__.py's version alongside the Conda recipe and CITATION.cff

Impact

  • No user-facing or behavioural change to SIST's calculations, verified bit-for-bit against tests/reference/v1.0.0/ for all four algorithms (melting, Z-DNA, cruciform, competition)
  • Perl is fully removed from the codebase and its runtime dependency
  • Verified via conda build conda-recipe --override-channels -c conda-forge -c bioconda --no-anaconda-upload: package builds and all tests pass

@harryswift01 harryswift01 self-assigned this Sep 24, 2026
@harryswift01 harryswift01 added the enhancement New feature or request label Sep 24, 2026
@harryswift01 harryswift01 linked an issue Sep 24, 2026 that may be closed by this pull request
@harryswift01 harryswift01 linked an issue Sep 24, 2026 that may be closed by this pull request

@jimboid jimboid left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like a great first pass at adding the python interface and removing the perl language. Though I think it looks like the perl entrypoints have totally been removed, I thought at first we were going to maintain the entrypoints named the same but forward them through the python interface before eventually removing them.

@harryswift01

Copy link
Copy Markdown
Member Author

Looks like a great first pass at adding the python interface and removing the perl language. Though I think it looks like the perl entrypoints have totally been removed, I thought at first we were going to maintain the entrypoints named the same but forward them through the python interface before eventually removing them.

Thank you for spotting this, I've now added aliases so that anyone still using the Perl script names gets routed through the new Python interface, with a deprecation warning that they'll be removed in a future release. Hope this is all looking ok now?

@jimboid jimboid left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for sorting this out Harry. All looks like it is there.

@harryswift01
harryswift01 merged commit 6c20ebf into main Sep 24, 2026
2 checks passed
@harryswift01
harryswift01 deleted the 50-feature-add-the-sist-python-package branch September 24, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Cut over to sist and remove Perl [Feature]: Add the sist Python package alongside Perl

2 participants