Skip to content

CoreMS version 4.1.0

Latest

Choose a tag to compare

@kheal kheal released this 23 Oct 19:31

Highlights

  • LC-MS peak picking, chromatogram extraction, gap fill, and mass-feature rollup are faster and less memory intensive.
  • Molecular networking and MGF export for LC-MS/MS data.
  • Multi-charge molecular formula search, and consensus isotope / singly charged adduct grouping.
  • Direct-infusion noise threshold and LC-MS peak picking default to by_format for profile vs centroid data.
  • Python 3.11+ only. Postgres uses psycopg 3. Atomic weights are pinned to a NIST snapshot.

Features

  • Molecular networking for experimental and library MS2 spectra (entropy and cosine; open, neutral-loss, and identity modes). Optional networking extra (networkx, ipysigma), collection helper, and tutorial.
  • Parquet export for high-resolution spectra, multi-spectrum datasets, GC-MS, and LC-MS collections.
  • Spectraverse MS2 (MGF) library search, with optional parquet caching.
  • Molecular formula search over min_ion_charge…max_ion_charge (default 1…1).
  • Collection-level grouping of consensus LC-MS features into natural-abundance isotope and |z|=1 adduct families.
  • MS2 spectral-similarity settings live on MSParameters.
  • peak_picking_method="by_format" selects persistent homology for profile scans and centroided persistent homology for centroid scans.
  • SIRIUS-compatible MGF export from LCMSBase.to_mgf and LCMSCollection.to_mgf.
  • lc_ms.ph_inten_min_abs (default 0.0) is an optional raw-intensity floor on persistent-homology peak picking.
  • HDF5 mass-spectrum export accepts compression and dtype settings. A stored profile reloads as MassSpecProfile.

Bug fixes

  • Annotation reports keep the MS1 molecular formula separate from MS2 library formulas.
  • Induced EICs are associated before gap-fill features are cleared.
  • Mass-feature de-duplication no longer fails when start_scan or final_scan is missing.
  • Resolving power is reported at the spectrum edges when a half-maximum crossing exists on both sides.
  • Thermo RawFileReader handles are released on close, so a .raw file can be renamed or deleted while Python is still running.
  • Process pools use spawn after pythonnet has started.
  • Profile spectra stored in CoreMS HDF5 keep m/z and abundance in the labeled column order.

Performance

  • Persistent-homology peak picking builds one m/z grid and does not form a distance matrix over every MS1 scan.
  • Gap fill binary-searches a sorted m/z axis and skips building a processed MS1 spectrum for each filled apex.
  • Chromatogram extraction sums intensities directly onto the scan axis.
  • Mass-feature rollup keeps the greedy parent rule and searches a hash grid instead of an all-pairs matrix.

Documentation / packaging

  • Installation guide is docs/user/installation.md and is rendered on the pdoc landing page.
  • Molecular formula confidence score is documented on the public formula API.
  • usedAtoms keys must be element symbols (C, Fe), not isotope labels (13C, 54Fe).
  • Data-model UML diagrams are regenerated as SVGs when the docs are built.
  • The task runner is just (recipe names match the old Makefile).
  • Release formatting is ruff format and ruff check --fix via just lint.
  • FTMS test data is arranged into subfolders.

Breaking changes

  • Python 3.10 is unsupported. CoreMS requires Python >= 3.11.
  • The Postgres driver is psycopg[binary]>=3.2 with SQLAlchemy >= 2.1. Use a postgresql+psycopg:// URL. psycopg2 is no longer a dependency.
  • Settings files are read and written with tomlkit instead of toml.
  • pandas is capped at >=2.2.2,<3.
  • Atomic weights, abundances, and isotope lists are pinned to NIST Coursey et al. Atomic Weights and Isotopic Compositions version 4.1 (retrieved 2026-10-16 and before each release from here on, updating as appropriate).
    • Bare Cd is now mass 113.90336509 (Δ +2.0006022 u). Look up 112Cd for the old mass.
    • Deleted from the library (no mass lookup): 145Pm, 147Pm, 14C, 209Po, 210At, 210Po, 211At, 211Rn, 220Rn, 222Rn, 223Fr, 223Ra, 224Ra, 226Ra, 227Ac, 228Ra, 230Th, 233U, 236Np, 236U, 237Np, 238Pu, 239Pu, 240Pu, 241Am, 241Pu, 242Pu, 243Am, 243Cm, 244Cm, 244Pu, 245Cm, 246Cm, 247Bk, 247Cm, 248Cm, 249Bk, 249Cf, 250Cf, 251Cf, 252Cf, 252Es, 257Fm, 258Md, 259No, 260Md, 262Lr, 267Rf, 268Db, 270Hs, 271Sg, 272Bh, 276Mt, 280Rg, 281Ds, 284Nh, 285Cn, 288Mc, 289Fl, 292Ts, 293Lv, 294Og, T, Tc.
    • New rare formula-string keys expand in IsoSpec when those elements are in usedAtoms. The added-key list is in tools/nist_atoms/CHANGES.md.
    • Lookup aliases that are not in atoms_order do not reimport as mass-list columns (for example 114Cd).