All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- All prediction, m/z calculation, and spectrum annotation now use ms2rescore-rs (Rust); replaces C/Cython backend
ms2_tolerance_modeparameter ("Da"or"ppm") on all correlation/annotation functions and CLIcorrelatenow accepts preloaded spectra on PSMs (MS2Spectrum/AnnotatedMS2Spectrum)read_psmsacceptslist[PSM]in addition toPSMList,str, andPath- Replaced remaining C-based model files with native XGBoost models (HCD2019, TMT, and HCDch2)
- XGBoost models are now pre-loaded across
predict_librarybatches for improved efficiency rtandimoptional dependency groups for DeepLC and IM2Deep- Min/max length validators on
ProteomeSearchSpace - CUDA_VISIBLE_DEVICES workaround on XGBoost model load (dmlc/xgboost#11283)
- API docs for
ms2pip.resultandms2pip.spectrum
- Minimum Python version raised to 3.11
- Package is now a pure-Python wheel (no compiled extensions)
- Batch processing uses Rayon-parallelized Rust calls instead of Python multiprocessing
- DeepLC integration uses
deeplc.predict()functional API (replaces class-basedDeepLCwrapper) - IM2Deep integration uses
im2deep.predict()functional API (replaces legacyim2deep.im2deep.predict_ccs) predict_librarynow runs RT/IM predictions once on the full filtered PSMList before batching (closes #243)- Invalid peptidoforms (unsupported amino acids, length outside 4–100, missing charge) are skipped with a summarized warning instead of raising
- Bumped ms2rescore-rs requirement to
>=0.5.0a3,<2 - Bumped psm_utils requirement to
>=1.5
- C/Cython components:
_cython_modules/,_models_c/,setup.py,MANIFEST.in - All Python-based multiprocessing (
_Parallelizedclass) _utils/retention_time.pyand_utils/ion_mobility.py(inlined intocore.py)- iRT calibration peptides (DeepLC v4 handles calibration internally)
- Minor breaking change:
ms2pip.constants.MODELSentries no longer containid,peaks_version, orfeatures_versionkeys (C/Cython routing metadata); replaced byfragmentation. Code accessing these keys directly will break.
annotate-spectraCLI crash (.with_suffix()called with no argument)write_correlationsnow acceptsPathobjects_peptidoform_spacesempty check usesis Noneinstead of truthinessSpectrummodel: deprecatedmodel_validator/classmethodcombination, missing serializers fornp.ndarrayfields (brokemodel_dump_json()), and equality comparison crashing on array fields
- Prefer (faster) Genesis for model downloads, with a fallback to Zenodo
- CI: Update build runners for macOS (see actions/runner-images#13046)
- Fix logging for spectral library prediction (by @paretje in #257)
- Fix support for SQLAlchemy v2, keeping backwards compatibility with v1.4 (#249, fixes #250)
- Fix typo of
max_lengthinsearch_spacedocumentation (#245 by @paretje) - CI: Do not build dependencies like pyarrow from source, which can cause failed build workflows
- Support for Thermo raw (requiring dotnet runtime) and gzipped spectrum files, through mobiusklein/mzdata (#226, by @paretje)
- New Python API usage mode
correlate-singleto correlate a singleObservedSpectrumobject with predictions (#232) - Support for Python 3.12 and 3.13, NumPy v2, and newer pandas and XGBoost versions (#228)
- CI: Add integration test for
predict-single(#228)
- Ion mobility is now returned instead of collisional cross section when IM2Deep is used through the
add_ion_mobilityoption (#236, by @rodvrees) - Model files are now downloaded from Zenodo instead of Genesis (#225, by @paretje, fixes #229)
- Docs: Updated README to include
correlate-single; moved webserver API docs from old Wiki (#239)
- Removed support for Python 3.8 (EOL) and for musllinux distributions (#228, #237)
- Removed old conversion scripts, mostly implemented in psm_utils (#239)
- Removed old train script, to be replaced with a page in docs (#239)
Fully refactored and substantially more user-friendly version of MS²PIP:
- More modular Python API
- One consolidated command-line interface with subcommands
- Support for all file formats readable by psm_utils
- Support for MGF, mzML, and Bruker raw spectrum files
- Support for ProForma 2.0 peptide notation (no modification configuration required)
- Support for multiple peptides/PSMs per spectrum
- Detailed documentation on ms2pip.readthedocs.io
- New timsTOF 2024 model (now an alias for
timsTOF) by @ArthurDeclercq in #211
- Add code and figures for 2023 NAR manuscript (@ArthurDeclercq in #196 and #197)
- Backport timsTOF model from 4.0 dev release to 3.12 release (by @RalfG in #206)
fasta2speclib: Improved workflow for generating spectral libraries from a FASTA file, with new configuration options (PR #193, fixes #188)- Support for C-terminal modifications
- Differentiate between peptide and protein termini for variable modifications
- Allow filtering of peptides based on precursor m/z
- Allow semi-specific cleavage
- Allow non-specific cleavage
- Allow setting of a maximum of variable modifications per peptide
- Add tests for modification assignment
- Add figures for 2023 manuscript (PR #194)
- Change logging of model configuration to debug level (PR #193)
fasta2speclib: Removed support for Elude-based RT predictions, RT predictions file, PEPREC filter, and saving temporary PEPREC files (PR #193)
- Remove unsupported argument for
mzml.read(PR #193) spectrum_output: Fix CSV output to always use\nline terminators (PR #193)spectrum_output: Use semicolon separator for Spectronaut CSV output (PR #193)- DeepLC integration: Disable PyGAM for default calibration on iRT peptides (PR #193)
- If precursor charge is not found in the MGF file, the charge from the PeptideRecord file is used instead (#189)
- Add tests for fasta2speclib modification generation (#190)
- Fixed issue in
fasta2speclibwhere fixed modifications were added one residue to the left of the actual site; bug introduced in v3.10.0 (#190)
- Support for mzML spectrum files, both for evaluating models and for extracting feature vectors
- New argument
spectrum_id_pattern: regular expression applied to spectrum titles before matching to peptide file entries - When using MS²PIP as a class instance, the
pred_and_empdataframe can be returned instead of written to file by settingreturn_results=True - If requested, retention time prediction with DeepLC is now also enabled when a spectrum file is provided
- Improved logging: use Rich library for logging with timestamps and message log levels
- MS²PIP now shows a progress bar instead of verbose output during prediction
fasta2speclib: Improved variable modification assignment algorithm; combinatorial explosion is now reduced by setting a maximum number of modified residues per peptide- Switch to Pyteomics MGF reader
- Avoid SciPy dependency
- More optimal use of NumPy in
calc_correlations
- Removed unsupported Tableau output format
- Vastly improved computational speed and reduced memory usage when using XGBoost model files with a spectrum file input
fasta2speclib: Fixed issue where modified versions of peptides were duplicatedspectrum_output: Various fixes in MSP spectral library file writing for DIA-NN compatibility (m/z error of 0.0 per peak, modifications sorted by position, useRetentionTimeinstead ofRTINSECONDS)- Fixed
spectrum_utilsmodification off-by-one bug (fixes #170) - Updated
python_requiresto minimum 3.7
- New CID-TMT prediction model for TMT-labelled peptide spectra acquired on ion trap (trap-type CID), for use in MultiNotch MS3 workflows (PR #157)
- Support for Python 3.9 and 3.10; dropped support for end-of-life Python 3.6 (PR #156, fixes #126)
- Support for alternative cleavage rules (digestion enzymes) in
fasta2speclib(PR #166, fixes #96) model_diroption to set a custom directory for model downloads (CLI and Python API) (PR #169, fixes #165)- Add docstring to
MS2PIPclass and example toREADME.md(PR #167)
- Replaced C model files with XGBoost counterparts (except for HCD2019 and TMT): faster compilation, smaller package (PR #157)
- Various
fasta2speclibimprovements: add DeepLC option to default config, suppress TensorFlow warnings, replace deprecatedpandas.DataFrame.appendwithconcat(PR #166) - Relaxed click version requirements (PR #157)
- Removed XGBoost warnings from CLI output (PR #157)
- Fixed missing support for XGBoost models in single-prediction mode (PR #157, fixes #155)
- New models for non-tryptic peptides and immunopeptides (PR #137); see https://doi.org/10.1101/2021.11.02.466886
- Windows support (PR #151)
- Direct support for
.xgboostmodel files; no dump to C and compilation required (PR #137)
- In DLIB output, a value is now written to the
isDecoycolumn (#140, PR #152)
- Pin NumPy version used during build to fix compatibility with older NumPy versions (PR #148)
- New command to predict and plot a single spectrum (PR #136)
fasta2speclib: Pass through options from config file to DeepLC (PR #135, fixes #138)fasta2speclib: Passnum_cputo DeepLC from the config
- Parse modifications on residue L (#144, PR #145)
- Python 3.9 support (PR #122)
- bioconda package and biocontainers Docker image
- macOS support (PR #95, PR #127); not yet for Python 3.9 (#126)
- MS²PIP now exits on incorrectly configured or unknown modifications, instead of only showing a warning (#100, PR #101)
- Parsing of C-terminal modifications from a txt config file was broken in v3.6.2; now fixed (PR #109)
- Example
fasta2speclibconfiguration erroneously contained average mass shifts; updated to monoisotopic mass shifts (PR #121) - MS²PIP now exits with status code 1 on critical error (#102, PR #123)
- Supported config file extensions are now described in help and error messages (#125, PR #129)
- Fixes in logging formatting (#64, #65)
- Use float formatting in CSV output
- Retention time predictions can be added without writing output to file
- When MS²PIP runs in a daemon process, it will not attempt to use multiprocessing
- Various improvements in
match_spectrafunctionality (e.g. SQLite backend, output handling) - General cleanup of repository (e.g. unused models)
- New option
save_peprecinfasta2speclibto save PEPREC files (including DeepLC predictions, if present)
- Small fix in
fasta2speclibparameter handling
- DeepLC integration for accurate LC retention time prediction, including for modified peptides; enable with the
-rflag or"add_retention_time": trueinfasta2speclibconfig - Support for TOML-based configuration files
- New Skyline
.blibto PEPREC and MGF converter script inconversion_tools
- Add header files to manifest (hotfix)
ProteinIdcolumn added to Spectronaut CSV output
- Major code refactoring
- Improved logging
- Improved exception handling
- Faster compilation
- MS²PIP is now installable from PyPI with
pip install ms2pip(no compilation step) - MS²PIP now uses all available CPUs by default
- Moved to semantic versioning
- Speed improvements after the multiprocessing step, especially for large numbers of predictions
- MS²PIP is now locally installable with pip and conda
- New Spectronaut CSV and Bibliospec/Skyline output formats
- Output formats can now be specified in the config file (e.g.
out=csv,msp,spectronaut) - Slightly faster model compilation
- Add
RetentionTimeMinsto MSP output when an ELUDE model file is provided
- Models for charge 2 fragment ions (CID and HCD)
- Bugfixes
- Updated requirements.txt
First official GitHub release of MS2PIPc (third iteration of MS2PIP).