Skip to content

Releases: CompOmics/psm_utils

v1.5.0.post1

28 Oct 20:51
19a657d

Choose a tag to compare

Fixed

  • 🐛 io.cbor: Fixed lazy import of optional cbor2 package.

v1.5.0

27 Oct 22:05

Choose a tag to compare

Added

  • io: Read/write support for JSON and CBOR formats. (#129)
  • io.percolator: Added support for Comet-style N- and C-terminal modifications (#121 and #131 by @ATPs)

Changed

  • ♻️ stats.qvalues: Set the regular target–decoy formula explicitly in Pyteomics when remove_decoy=False and apply the +1 correction (probability that the first excluded decoy out-scores the threshold PSM). This produces less overly conservative q-values (e.g., on example_files/msms.txt). (#128)
  • ♻️ io.pepxml: Refactor spectrum naming logic to prefer spectrumNativeID when available (#122 by @julianu)
  • 🏷️ Typing: Adopted full MyPy typing across the codebase. (#125)
  • 👷 CI: Replaced file-hash–based tests for io.idxml with unit tests; added formatting checks. (#125)

Removed

  • 💥 Dropped support for Python 3.9. (#125)

Fixed

  • 🐛 io.mzid: Treat MS:1001460 “unknown modification” as a delta-mass–designated modification in peptidoforms so mass calculations remain possible. Previously rendered as [unknown modification]. (#126 by @levitsky)
  • 🐛 io.fragpipe: Build more comprehensive ProForma strings using “Assigned Modifications” from FragPipe output. (fixes #123; #124 by @levitsky)
  • 🐛 peptidoform: Allow residue X with a MassModification to indicate a gap of known mass per ProForma §4.2.7; resolves failures computing theoretical mass for non-natural residues (fixes #127). (#130)

Full Changelog: v1.4.1...v1.5.0

v1.4.1

15 Apr 16:13
95e8218

Choose a tag to compare

Fixed

  • Restored compatibility with older Sage versions that have no ion mobility columns (introduced in v1.4.0) (by @rodvrees in #120)

Full Changelog: v1.4.0...v1.4.1

v1.4.0

06 Mar 14:57
eaa27c3

Choose a tag to compare

Added

  • io.sage: Add parsing of ion mobility values (PR #113)

Fixed

  • 🐛 io.percolator: Fix bug in PercolatorTabWriter where style parameter was not propagated (fixes #114, PR #117)
  • 📝 Docs: Explicitly set Sphinx configuration path for Read the Docs (fixes #115, PR #118)

New Contributors

Full Changelog: v1.3.0...v1.4.0

v1.3.0

20 Jan 10:29
224f401

Choose a tag to compare

Added

  • io.idxml: Parse ion mobility from idXML files if present.
  • 🐍 Added support for Python 3.12 and 3.13

Removed

  • 🐍 Removed support for Python 3.7

Fixed

  • 🐛 Fix bug introduced in #102 where dtypes were not coerced anymore by Numpy, which lead to unexpected behavior downstream (e.g., psm_list["is_decoy"] would return an array of objects instead of bools)
  • 🩹 Fix potential downstream issues because pepxml-read PSM had rescoring_features=None (partially fixes #108)

Full Changelog: v1.2.0...v1.3.0

v1.2.0

20 Nov 06:48

Choose a tag to compare

Added

  • io.alphadia: Read support for AlphaDIA precursors.tsv (#103 by @rodvrees)
  • io.fragpipe: Read support for FragPipe psm.tsv (#103 by @rodvrees)
  • io.diann: Read support for DIA-NN TSV (#103 by @rodvrees)

Changed

  • 💥 psm_list: When returning a PSM property across the full PSMList (e.g. psm_list["peptidoform"]), np.fromiter is now used instead of np.array. This fixes an issue where if all peptidoforms have the same length, a 3D array of parsed sequences (amino acids and modifications) was be returned instead of an array of Peptidoform object. However, this does mean that all resulting arrays will have the object dtype instead of the previously coerced dtypes. This might lead to issues downstream. (#102)
  • io.idxml: Make pyOpenMS an optional dependency, working around OpenMS/OpenMS#7600 for now. For idxml support, install psm_utils with the idxml extra dependencies. (#107 by @paretje)

Fixed

  • 🐛 io.pepxml: Fix modification location and mass parsing. Position had an off-by-one error and the reported mass was the sum of the residue and modification instead of the modification alone. (fixes #100, #104)

New Contributors

Full Changelog: v1.1.1...v1.2.0

v1.1.1

01 Oct 13:47

Choose a tag to compare

Fixed

  • io: Fix Sage filename pattern for automatic file type inference by @RalfG in #98
  • io.flashlfq: Fix writing PSMs without protein accession by @RalfG in #98
  • io.flashlfq: Fix column names Peptide Monoisotopic Mass and Protein Accession by @RalfG in #97
  • io.idxml: Fix parsing if spectra file name not present by @jonasscheid in #99

Full Changelog: v1.1.0...v1.1.1

v1.1.0

05 Sep 09:39
565934a

Choose a tag to compare

Added

  • Peptidoform: Add modified_sequence property to return the modified sequence in ProForma format, but without charge state.
  • io: Add support for reading and writing FlashLFQ generic TSV files.

v1.0.1

28 Aug 15:10
5e42ace

Choose a tag to compare

Fixed

  • io.percolator: Fix and improve ScanNr inferring and writing
  • io.percolator: Infer style from file extension if not provided (enables dynamic style determination in, for instance, convert function).

v1.0.0

14 Aug 13:59
50f9a9c

Choose a tag to compare

Added

  • peptidoform: Allow comparison between a peptidoform and a peptidoform string; allow direct indexing with square brackets, which indexes or slices parsed_sequence (in #89)

Fixed

  • io.tsv: Avoid flooding logs when reading a different file format by raising exception when three consecutive rows could not be parsed (in #88)