Added
- Load spectra directly from online resources (ProteomeXchange members, metabolomics resources through GNPS) using the [Universal Spectrum Identifier](https://www.psidev.info/usi) mechanism.
- Full support of the [ProForma 2.0](https://www.psidev.info/proforma) standard based on a formal context-free grammar.
- Retrieve controlled vocabularies used by ProForma from their online sources and (cross-platform) cache locally.
- Annotate different ion types: peptide fragments, internal fragment ions, immonium ions, intact precursor ions.
- Annotate spectrum peaks that include a neutral loss.
- Recommend installing [pyteomics.cythonize](https://pypi.org/project/pyteomics.cythonize/) for faster mass calculations.
- Automatic code style enforcement using [black](https://github.com/psf/black).
- Added contributing guidelines.
- Added code of conduct.
- Added .gitignore.
- Minimum supported Python version bumped to Python 3.8.
- Maximum supported Python version extended to Python 3.10.
Changed
- Annotate spectrum peaks based on the [ProForma 2.0 specification](https://www.psidev.info/proforma) to described (modified) peptides.
- Use `jitclass` instead of multiple `jit` functions to group the Numba spectrum processing functionality.
- Use [MyST](https://myst-parser.readthedocs.io/) instead of recommonmark to generate the documentation from MarkDown files.
- Update runtime benchmark to the latest versions of all libraries.
Removed
- `annotate_molecule_fragment` function to annotate peaks with a molecule string.
- `annotate_mz_fragment` function to annotate peaks with their m/z values. Use the ProForma interface instead.
- Global interface to set a static modification; specify modifications using ProForma directly instead.
Fixed
- Don't crash when plotting empty spectra.
- Use the correct 13C mass difference for isotope precursor removal.