New Features
- introducing `cryodrgn_utils clean`, a new tool for removing extraneous output files from completed experiments (297)
- `backproject_voxel` now produces half-maps and a half-map FSC by default (329)
- creating `cryodrgn_utils fsc` from the `fsc` analysis script for calculating Fourier shell correlations between two `.mrc` volume files, and likewise `cryodrgn_utils plot_fsc` based on `plotfsc`; making the latter available through the former using `-p`
- creating `cryodrgn_utils gen_mask` based on `cryoem_tools.gen_mask.py`, now with reparametrization in Angstroms
Addressing Issues and Bugs
- fixing 358 and improving the I/O interface in both `cryodrgn_utils flip_hand` and `cryodrgn_utils invert_contrast` so that the name of the output file and any parent directories are created automatically, with more unit tests for each
- making `write_star` use RELION 3.1 format by default with optics groups generated from image size, pixel size, voltage, spherical aberration, and amplitude contrast; `-relion30` to use old format (324)
- updating install setup to prevent use of Python 3.11 (306)
- `abinit_homo` now saves a `config.yaml` with a summary of parameters used, like `abinit_het`, `train_vae`, and `train_nn`
- fixing `filter_star` to accept tilt series as well (335)
- fixing `affinity` bug in `analyze_landscape` (345)
- fixing beta value bug in `train_vae` (356)
- removing references to `scipy.ndimage.morphology` which is deprecated
- fixing `dtype=object` warning message in `TiltSeries.parse_particle_tilt()`
User Interface
- cleaner implementation of command-line interface, defining both `cryodrgn` and `cryodrgn_utils` commands in one file `cryodrgn/command_line.py`, and removing e.g. manually defined lists of modules with commands in them
- better doc strings with some usage examples for commands (e.g. `cryodrgn abinit_homo -h`), with module-level doc strings being included explicitly in the automatically generated help screen
Testing
- using `conftest.py` to define a new setup/teardown routine for experiment output directories created by tests
- writing new tests for `abinit` and `train` methods by applying these routines
- fixing `test_dataset` to account for changes within `make_dataloader`
- updating unit tests that use `argparse.ArgumentParser()` directly for commands in which the `__main__` method was removed
- updating tests for new and updated commands `fsc`, `clean`, `gen_mask`, etc.