New Features
- Give each temporary directory a unique, 8-character label (e.g. `tmp-abc123XY`) to avoid errors caused by the temporary directory existing beforehand.
- In the `align`, `relate`, `mask`, and `cluster` steps, as well as `+sim relate` (i.e. the steps that generate a report with one or more other output files), first write all output files to a temporary "release" directory; then, once all files have been written, move that directory to its final destination in one atomic operation if possible. This mechanism prevents problems caused by one run partially overwriting the output files of a previous run (e.g. because the second run crashed in the middle) and leaving the output files in an inconsistent, unusable state.
- In `fold` and `+sim fold`, if the `DATAPATH` environment variable has not been set (or has been set improperly), then the correct value can now be guessed as long as the `rnastructure` package has been installed with Conda. Future releases may be able to guess the value with other methods of installation.
- Make it easier to use the `run` functions through the Python API by automatically filling in default values for all arguments where possible, including defaulting to `None` for optional files.
Removed Features
- Writing alignment maps in CRAM format is no longer supported because this feature was already brittle (moving the output directory to a different location would break the CRAM file) and became too complicated with the transition to the temporary directory system. However, the `relate` step still supports reading CRAM files. So, if needed, the BAM files can be compressed into CRAM files after alignment using `samtools view`.
Compatibility
- Constrain the NumPy version to <1.27 to ensure compatibility with Numba. (The recent release of NumPy 2.0 is compatible with Numba 0.60.0 at the binary level only, but `pip` still seems to be okay with installing it; some unit tests fail with NumPy 2.0, so clearly it's not yet sufficiently compatible with either Numba or SEISMIC-RNA.)
**Full Changelog**: https://github.com/rouskinlab/seismic-rna/compare/v0.17.6...v0.18.0