Added
- Use `lightning` framework as back end, replaces
`vak.engine.Model`
[598](https://github.com/vocalpy/vak/pull/598).
Fixes [597](https://github.com/vocalpy/vak/issues/597).
See discussion in [359](https://github.com/vocalpy/vak/issues/359).
- Make it easier to make an instance of a model
[605](https://github.com/vocalpy/vak/pull/605).
Fixes [362](https://github.com/vocalpy/vak/issues/362).
- Add ways to define models and families of models
[605](https://github.com/vocalpy/vak/pull/605).
Fixes [406](https://github.com/vocalpy/vak/issues/406),
[536](https://github.com/vocalpy/vak/issues/536), and
[603](https://github.com/vocalpy/vak/issues/603).
- Add built-in TweetyNet model
[605](https://github.com/vocalpy/vak/pull/605).
Fixes [596](https://github.com/vocalpy/vak/issues/596).
- Add logging of training time
[628](https://github.com/vocalpy/vak/pull/628).
Fixes [2](https://github.com/vocalpy/vak/issues/2).
- Prepare datasets as directories, so they are portable
and have a more standardized format
[658](https://github.com/vocalpy/vak/pull/658).
Fixes [649](https://github.com/vocalpy/vak/issues/649) and
[650](https://github.com/vocalpy/vak/issues/650).
- Add concept of "dataset type" and "input type",
where a dataset type maps to the task that a family of models is used for,
and the input type denotes the domain of the data that becomes the input
for the neural network model.
E.g., a frame classification model requires a frame classification dataset,
and its input type can be either audio or spectrograms
[670](https://github.com/vocalpy/vak/pull/670).
Fixes [667](https://github.com/vocalpy/vak/issues/667)
and [652](https://github.com/vocalpy/vak/issues/652).
- Add decorators to register models and model families
[676](https://github.com/vocalpy/vak/pull/676).
Fixes [623](https://github.com/vocalpy/vak/issues/623).
- Add initial parametric UMAP implementation
[688](https://github.com/vocalpy/vak/pull/688).
Fixes [631](https://github.com/vocalpy/vak/issues/631).
- Add `trainer` table to configuration file that makes it possible to
directly specifies arguments to `lightning.Trainer`: the `accelerator`
and the `devices`
[752](https://github.com/vocalpy/vak/pull/752).
Fixes [691](https://github.com/vocalpy/vak/issues/691),
[687](https://github.com/vocalpy/vak/issues/687),
[742](https://github.com/vocalpy/vak/issues/742), and
[745](https://github.com/vocalpy/vak/issues/745).
- Add `datasets` module (after renaming existing `datasets` to `datapipes`)
with class for BioSoundSegBench dataset
[755](https://github.com/vocalpy/vak/pull/755).
Fixes [754](https://github.com/vocalpy/vak/issues/754).
Changed
- Rename config file option `csv_path` to `dataset_path`,
since it is more specific and allows for the possibility
that a dataset is not always a csv file
[632](https://github.com/vocalpy/vak/pull/632).
Fixes [549](https://github.com/vocalpy/vak/issues/549).
- Use [crowsetta 5.0](https://github.com/vocalpy/crowsetta/releases/tag/5.0.0), version released after
[pyOpenSci review](https://github.com/pyOpenSci/software-submission/issues/68).
[628](https://github.com/vocalpy/vak/pull/628).
Fixes [522](https://github.com/vocalpy/vak/issues/526).
- Splits for learning curves are now generated by prep
and stored in the directory that represents the dataset,
instead of being generated by learncurve and saved in
the results directory
[658](https://github.com/vocalpy/vak/pull/658).
Fixes [651](https://github.com/vocalpy/vak/issues/651).
- Refactor API so it's more clear what the top-level "public" API should be,
and to clean up spaghetti code that slows down adding new functionality.
Move functions from core up to top-level: eval, learncurve, predict, prep, train.
Move `vak.io` into prep, rename `prep_spectrogram_dataset`. Also move `vak.spect` in there.
Move `vak.split` into `vak.prep` since that's the only place it's used.
Make various other minor clean-ups.
[666](https://github.com/vocalpy/vak/pull/666).
Fixes [663](https://github.com/vocalpy/vak/issues/663).
- Have distance metrics return tensors
[702](https://github.com/vocalpy/vak/pull/702).
Fixes [701](https://github.com/vocalpy/vak/issues/701).
- Rename metric `SegmentErrorRate` to `CharacterErrorRate`
to make it clearer that this is an edit distance computed on
the segment *labels*
[723](https://github.com/vocalpy/vak/pull/723).
Fixes [721](https://github.com/vocalpy/vak/issues/721).
- Change to version 1.0 of config file format
[750](https://github.com/vocalpy/vak/pull/750).
Fixes [685](https://github.com/vocalpy/vak/issues/685),
[345](https://github.com/vocalpy/vak/issues/345), and
[748](https://github.com/vocalpy/vak/issues/748).
- Re-factor model abstraction: replace `vak.models.base.Model` class
with `vak.models.factory.ModelFactory`
[753](https://github.com/vocalpy/vak/pull/753).
Fixes [737](https://github.com/vocalpy/vak/issues/737) and
[726](https://github.com/vocalpy/vak/issues/726).
- Rename `datasets` module to `datapipes`,
so we can add another `datasets` module with built-in pre-prepped
static datatsets, and to indicate that these "pipes" are for
datasets prepared by `vak.prep`. Then refactor these datapipes
so they have default transforms that are configured via
arguments to the class
[755](https://github.com/vocalpy/vak/pull/755).
Fixes [574](https://github.com/vocalpy/vak/issues/574)
and [724](https://github.com/vocalpy/vak/issues/724).
Removed
- Remove entry points since they are not being used
outside the project but require maintenance and testing
[621](https://github.com/vocalpy/vak/pull/621).
Fixes [601](https://github.com/vocalpy/vak/issues/601).
- Remove unused/incomplete functionality for training multiple models
[625](https://github.com/vocalpy/vak/pull/625).
Fixes [538](https://github.com/vocalpy/vak/issues/538).
- Remove `engine` with `Model` class
[627](https://github.com/vocalpy/vak/pull/627).
No longer used after switching to Lightning as backend in
[598](https://github.com/vocalpy/vak/pull/598).
- Remove config option 'previous_run_path' for learning curves.
This is no longer needed now that `vak.prep` generates splits
for learning curves and saves them in the dataset directory;
to re-run a learning curve experiment, use the same `dataset_path`
as the previous experiment
[658](https://github.com/vocalpy/vak/pull/658).
Fixes [651](https://github.com/vocalpy/vak/issues/651).
Fixed
- Fix functionality to evaluate model with and without
post-processing transform that was added in
[621](https://github.com/vocalpy/vak/pull/621).
Fixed in [626](https://github.com/vocalpy/vak/pull/626).
- Change label mapping to use single characters
for the validation step of WindowedFrameClassificationModel *only*,
to avoid affecting the edit distance metric,
instead of modifying the mapping inside the top-level eval function,
which can cause a crash because the mapping is used in other places
[665](https://github.com/vocalpy/vak/pull/665).
Fixed in [664](https://github.com/vocalpy/vak/pull/664).
- Fix bug that caused crash on Apple M1 / MPS accelerator
[700](https://github.com/vocalpy/vak/issues/700).
Fixed in [702](https://github.com/vocalpy/vak/pull/702).
- Fix models so they log training loss on each step
[720](https://github.com/vocalpy/vak/issues/720).
Fixed in [722](https://github.com/vocalpy/vak/pull/722).