Skip to content
11 changes: 5 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
Changelog
=========

[2026.2.0](https://github.com/openbiosim/ghostly/compare/2026.1.0...2026.2.0) - ********
-------------------------------------------------------------------------------------
[2026.2.0](https://github.com/openbiosim/ghostly/compare/2026.1.0...2026.2.0) - Sep 2026
----------------------------------------------------------------------------------------

* Please add an item to this CHANGELOG for any new features or bug fixes when creating a PR.
* Revert auto-zeroing of anchor dihedrals for ring-constrained immediate ghosts: a singly-attached ring still has one unconstrained rotational degree of freedom about the bridge-ghost bond, so removing the anchor reintroduces flapping risk.

[2026.1.0](https://github.com/openbiosim/ghostly/compare/2025.2.0...2026.1.0) - Jun 2026
-------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------

* Add linear spacer modification for ring-breaking ghost bridges.
* Fixed missing removal of bridge-extension dihedrals (`real–ghost–ghost–ghost`) that arise when a ghost group contains a ring, e.g. cyclopropyl, where the ring topology creates spurious torsional coupling between the real scaffold and the ghost ring interior.
* Auto-zero anchor dihedrals when the immediate ghost atom lies on a ring within the ghost subgraph. The ring topology already constrains the ghost orientation relative to the bridge, making the anchor redundant.

[2025.2.0](https://github.com/openbiosim/ghostly/compare/2025.1.0...2025.2.0) - Mar 2026
-------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------

* Ensure that there are independent, per-state, physical neighbours. This removes the spurious cross-state ghost filter that resulted in a downgrading of junction types when multiple junctions were present in the molecule.
* Added a fallback for failed angle optimisation to ensure that the original equilibrium value is preserved when convergence fails.
Expand All @@ -29,6 +28,6 @@ Changelog
* Changed the default for ``--optimise-angles`` to ``False``. Angle optimisation is conformer-dependent: different input geometries can yield different equilibrium angles for the same perturbation, adding variability to the resulting force field. The original force field theta0 is sufficient given the small ``k_soft`` value. Optimisation can still be enabled explicitly to follow Boresch et al. (JCTC 2021) strictly.

[2025.1.0](https://github.com/OpenBioSim/ghostly/releases/tag/2025.1.0) - Nov 2025
-------------------------------------------------------------------------------
----------------------------------------------------------------------------------

* Initial public release.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ ghostly --system system.bss --log-level debug
When finished, the program will output a [BioSimSpace](https://biosimspace.openbiosim.org)
stream file for the perturbable molecule, or AMBER or GROMACS files for the two end states.
The format can be specified using the the `--output-format` option. If you require input
for a free-energy perturbation simulation, e.g. a hybrid GROMACS toplogy file, the you can
for a free-energy perturbation simulation, e.g. a hybrid GROMACS topology file, then you can
use the stream file with [BioSimSpace](https://biosimspace.openbiosim.org) to generate the
required input files. Additionally, the program will output a JSON file summarising the
modifications that were made.
Expand Down
12 changes: 6 additions & 6 deletions pixi.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,25 @@ loguru = "*"

[target.linux-64.dependencies]
# main
biosimspace = ">=2026.1.0,<2026.2.0"
biosimspace = ">=2026.2.0,<2026.3.0"
# devel
#biosimspace = "==2026.2.0.dev"
#biosimspace = "==2026.3.0.dev"

[target.linux-aarch64.dependencies]
# biosimspace/sire not available as conda packages on linux-aarch64;
# build from source first

[target.osx-arm64.dependencies]
# main
biosimspace = ">=2026.1.0,<2026.2.0"
biosimspace = ">=2026.2.0,<2026.3.0"
# devel
#biosimspace = "==2026.2.0.dev"
#biosimspace = "==2026.3.0.dev"

[target.win-64.dependencies]
# main
biosimspace = ">=2026.1.0,<2026.2.0"
biosimspace = ">=2026.2.0,<2026.3.0"
# devel
#biosimspace = "==2026.2.0.dev"
#biosimspace = "==2026.3.0.dev"

[feature.test.dependencies]
pytest = "*"
Expand Down
8 changes: 6 additions & 2 deletions recipes/ghostly/recipe.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,20 @@ requirements:
- versioningit
run:
# main
- biosimspace >=2026.1.0,<2026.2.0
- biosimspace >=2026.2.0,<2026.3.0
# devel
#- biosimspace ==2026.2.0.dev
#- biosimspace ==2026.3.0.dev
- loguru
- python

tests:
- python:
imports:
- ghostly
# AmberTools can be pulled in transitively, and installs tools into
# site-packages whose metadata still pins numpy <2, so 'pip check'
# fails even though nothing here uses them.
pip_check: false
- script:
- pytest -vvv --color=yes --import-mode=importlib ./tests
files:
Expand Down
8 changes: 0 additions & 8 deletions src/ghostly/_ghostly.py
Original file line number Diff line number Diff line change
Expand Up @@ -2584,14 +2584,6 @@ def _check_rotamer_anchors(

which has a single minimum at phi = 0 (trans) and a barrier of 2k.

.. note::

Stiffening is not currently enabled. When wiring in, add
``stiffen_rotamers`` and ``k_rotamer`` parameters to ``modify()``
and expose them through the CLI. The ``modifications`` dict will
also need a ``"stiffened_dihedrals"`` key initialised to an empty
list for each end state.

Parameters
----------

Expand Down
Loading