Dear OpenMS-Users,
We are proud to announce the release of OpenMS 3.5. Grab it here.
A couple of things are different this time:
- This will be the last release for MacOS Intel. We will continue providing docker images for AMD64 processors here: https://github.com/OpenMS/OpenMS/pkgs/container/openms-tools-thirdparty. If that doesn’t work, and you desperately need continued MacOS Intel support, please reach out to us at info@openms.de
- We now have ARM64 Linux support! Both for OpenMS and pyOpenMS. These also run on MacOS silicon.
- We will be using Github as opposed to our traditional archive as the primary repository of installers.
- We are now a 501c3! For any nonprofit nerds out there, we’ve put together a legal entity to ensure the long term stability of OpenMS.
In the following you find all important changes to the previous version:
NOTICE: 3.5.0 is going to be the last official release for MacOS on Intel processors. If you need support for OpenMS on that platform moving forward, please contact us.
General
Speed improvements:
- Loading .gz files is about 7% faster (#8069)
- Loading of mzML files with more than m/z+intensity (e.g. ion mobility) is 20-40% faster (#8074)
- Loading of mzML files is 7-25% faster in general (SIMD ASCII conversion) (#8105)
Linux arm64 support:
- OpenMS releases now include a .deb for arm64 machines
Dependencies
- PyOpenMS now depends on Autowrap 0.24.0
- PyOpenMS now supports Cython 3.1
- CMake now accepts Eigen 5 in addition to Eigen 3.4+ (#8366)
- Apache Arrow/Parquet integration for high-performance columnar data export (#8091, #8145)
PyOpenMS
- PyOpenMS now has wheels for arm64 linux machines
- PyOpenMS wheels are now available for Python 3.14 on all supported operating systems
- Parquet support enabled in pyopenms wheels (#8422)
- BREAKING: DataFrame column names standardized to lowercase snake_case for PEP 8 compliance. Affected methods:
MSSpectrum.get_df(),MSChromatogram.get_df(),ConsensusMap.get_metadata_df(),FeatureMap.get_df(). Example changes:RT→rt,MZ→mz,nativeID→native_id,precursorMZ→precursor_mz. Update code that references old column names. - Pythonic convenience methods added:
__len__()for MSSpectrum, MSChromatogram, MSExperiment, AASequence (#8151, #8415, #8417)__str__()and__repr__()for core classes (#8429)- Python accessors for drift time on MSSpectrum and OpenSwathSpectrum (#8423)
- New Python bindings for Mobilogram and MobilityPeak1D classes (#8377)
- DataFrame wrapper for MSSpectrum with
get_df()method (#8435) - Enum class support in Python bindings with IntEnum (#8405)
- Static methods to query enum names for METADATA classes (#8353)
- Fix: PyOpenMS import no longer affects Python locale settings (#8322)
- Improved pyOpenMS documentation for Feature, MRMFeature, FeatureMap classes (#8247)
TOPP Tools
Changes
FileFilter:
- Filter RT by blocks of MS levels (#8239)
SageAdapter:
- Improved parameter documentation and tolerance validation (#8259)
- Now correctly passes threads parameter via RAYON_NUM_THREADS (#8260)
CometAdapter:
- All enzymes now available by adding CometIDs to database (#8280)
DecoyDatabase:
- Added repeated shuffle option for improved decoy generation (#8339)
MassTraceExtractor:
- Support for Bruker Ion Mobility (experimental). Note: requires IM peak picked data.
FeatureFinderCentroided, FeatureFinderMetabo, FeatureFinderMultiplex:
- FAIMS support (experimental): Automatic detection and separate processing of FAIMS compensation voltage (CV) groups. Features from different CVs representing the same analyte are merged by default.
FeatureFinderMetaboIdent, FeatureFinderIdentification:
- FAIMS support (experimental): Automatic detection and separate processing of FAIMS compensation voltage (CV) groups. Features from different CVs representing the same analyte are merged by default.
- Bruker TimsTOF ion mobility support (experimental): Requires concatenated IM spectra in mzML format (use msconvert with
--combineIonMobilitySpectraoption). IM values can be specified in the input TSV/idXML.
NucleicAcidSearchEngine:
- Add support for global fixed modifications as a search parameter
Digestor:
- Supports replacing ambiguous amino acids (X,B,J,Z) in the FASTA input with random unambiguous amino acids in the output (#8167)
All:
- Show load/store progress for files in all TOPP tools (#8041)
IonMobilityBinning:
- Detect FAIMS data automatically and split output per FAIMS compensation voltage (CV)
FLASHDeconv:
- Major update with improved scoring, FDR estimation, and isobaric quantification support (#8257)
- Automatic mass tolerance estimation from data
- Per-MS-level deconvolved spectrum outputs
- TopFD version 1.7 compatible feature and TSV export formats
- Improved precursor mass assignment for MSn spectra
Added Tools
- OpenNuXL - A peptide-RNA/DNA cross-linking search engine
- PeptideDataBaseSearchFI - Experimental peptide database search engine using a fragment index (FI) and the new PeptideSearchEngineFIAlgorithm
- FeatureFinderLFQ (experimental) - Feature detection for label-free proteomics DDA-LFQ based on the Biosaur2 algorithm with support for FAIMS and TimsTOF ion mobility
- PeakPickerIM - Ion mobility peak picker for TimsTOF and other IM data. Supports three methods: mobilogram-based, clustering, and elution profile-based picking. Supports both in-memory and low-memory streaming modes. (#8177)
- IsobaricWorkflow (experimental) - Simple, targeted, fast workflow for isobaric quantification (#7298)
Removed Tools
- OpenPepXLLF - Experimental search for cross-linked peptide pairs in tandem MS spectra (showed inferior performance in benchmarks)
- IDMassAccuracy - Calculates a distribution of the mass error from given mass spectra and IDs
- SpecLibCreator - Creates an MSP formatted spectral library
- SpecLibSearcher - Identifies peptide MS/MS spectra by spectral matching with a searchable spectral library
GUI Tools
- Fix TOPPAS crash when using TOPP tools with multiple output formats (#8120)
OpenMS Library
Added
- PeakPickerIM (experimental): New algorithm for ion mobility peak picking with three methods (mobilogram, cluster, elution profiles). (#8177)
- IMFormat: Added CENTROIDED and UNKNOWN format types for ion mobility data. (#8177)
- MSSpectrum/SpectrumSettings: Added
setIMFormat()/getIMFormat()API for per-spectrum ion mobility format tracking. (#8177) - FeatureFinderAlgorithmBiosaur2 (experimental): Feature detection algorithm for label-free proteomics DDA-LFQ based on the Biosaur2 algorithm with support for FAIMS and TimsTOF ion mobility.
- PeptideHit: Added TargetDecoyType (TARGET, DECOY, TARGET_DECOY, UNKNOWN) and
setTargetDecoyType()/getTargetDecoyType(); supports target+decoy peptide hits. - IDScoreSwitcherAlgorithm: Added
findScoreType()method for generic score type detection. Checks if main score matches requested ScoreType (PEP, QVAL, FDR, etc.) or finds it in meta values. - ProteinHit: Added TargetDecoyType (TARGET, DECOY, UNKNOWN) and
setTargetDecoyType()/getTargetDecoyType(). - Both: Added
isDecoy(). - Unify isotopic distributions (coarse vs. fine) for EmpiricalFormulas with charge (#8099)
- FragmentIndex (experimental): New fragment index for fast peptide fragment lookup supporting FI-based peptide database search.
- PeptideSearchEngineFIAlgorithm (experimental): Library algorithm leveraging FragmentIndex for peptide database search; used by the PeptideDataBaseSearchFI TOPP tool.
- AhoCorasick: Improved high-performance string matching algorithm with path compression (#8269, #8304)
- HashGrid: Exposed cellIndexAtClusterCenter method (#8318)
Changes
- Removed
assignRanksandsortByRanksin PeptideIdentifications and sort and filter by score instead. Also removedupdateHitRanksin IDFilter (#7991) - Remove rank member in PeptideHit and store ranks as meta value (for backwards compatibility). (#7997)
std::vector<PeptideIdentification>now is encapsulated in a class PeptideIdentificationList.- Zlibcompression using zlib (not Qt) and Base64 decoding for zlib-compressed data using SIMD (not Qt) (#8161)
- Exception::InvalidSize now includes mandatory context message (#8437)
- Matrix::operator== no longer throws assert when comparing different-sized matrices (#8305)
- Removed boost::smart_ptr dependency, using std::shared_ptr instead (#8405)
- C++20 modernization: std::erase_if, range-based for loops, default constructors (#8229, #8230, #8233)
New Features
- FAIMSHelper: dataset-wide FAIMS detection; ignore DRIFTTIME_NOT_SET sentinel; improved warning
- IMDataConverter::splitByFAIMSCV: retain MS2 without explicit FAIMS CV by assigning to prior FAIMS CV
- Added
EnzymaticDigestion.semiSpecificDigestion_() - ProteaseDigestion: Add support for semi-specific digestion (#8130)
- TransformationModelLowess: Add option to automate span selection via cross-validation (#8166)
- OpenSwath:
- Added automated iRT calibration using input transition list (#8146)
- Added automated RT, m/z, and IM extraction window estimation based on iRT calibration (#8188)
- Added lowess span grid search params and updated documentation for OpenSwathWorkflow TOPP tool (#8297)
- Added priority inclusion list for iRT sampling from PQP when using automated iRT calibration (#8373)
Fixes
- Fix overlap test in crowded FAIMS data (#8418)
- Fix window estimation when no MS1 maps available in OpenSwath (#8308)
- Fix column header filenames for all maps in Decharger/MetaboliteAdductDecharger (#8265)
- Fix ternary operator misuse in FileMerger append_method logic (#8263)
- Fix Qt6 deprecation warnings (#8248)
- Fix FileNotFound exception misuse for file access errors (#8274)
- Fix peaks being skipped in OpenSwath wide boundary selection method (#8316)
- Fix mzTab-M validation errors for missing identification and database metadata (#8363)
- Fix negative offset handling in mzML readers (#8336)
Documentation
- Build instructions rewritten for macOS and Linux (#8042)
- Comprehensive documentation added to DeMeanderize tool (#8264)
Best regards,
The OpenMS-Developers