Skip to content

Releases: wenbostar/PDV

v2.7.0

Choose a tag to compare

@wenbostar wenbostar released this 14 Aug 19:55

PDV 2.7.0

This release adds support for the Sage search engine: open a results.sage.tsv together with its mgf or mzML files and get the usual paged PSM table with annotated spectra, working modifications, and all 40 Sage columns. Along the way the Database Searching dialog learned to read gzipped spectrum files, and seven long-standing bugs affecting the other import formats were fixed — including one that made every mzIdentML import, and every import using an mzML spectrum file, fail outright on Java 16 and newer, and two that stopped mzXML and proBAM/proBed results being displayed at all.

✨ New: Sage support

Pick results.sage.tsv in the Database Searching dialog, choose Sage as the file type, and add the spectrum files the search used.

  • mgf, mgf.gz, mzML and mzML.gz inputs, and several spectrum files per search — each PSM is matched to its own file through the result file's filename column, ignoring a .gz suffix so rows still resolve after decompression.
  • All 40 Sage columns become sortable table columns and can be toggled from View → Column Selection; 13 of the most useful (proteins, filename, charge, rank, label, rt, hyperscore, delta_next, sage_discriminant_score, posterior_error and the three q-values) are shown by default so the table stays readable. Column headers drop the underscores from Sage's names, so delta_next appears as deltanext.
  • Inline modification masses are parsed from the Sage peptide grammar — residue mods (C[+57.0215]), N-terminal ([+229.1629]-PEPTIDE) and C-terminal (PEPTIDE-[+12.34]) — and registered as user PTMs named <mass> of <residue>, so they render in the sequence strip and can be recoloured from the PTM colour dialog.
  • Both scannr dialects are handled: the full mgf TITLE line for mgf input (CSV-quoted by Sage, with doubled quotes and embedded commas) and the controllerType=0 controllerNumber=1 scan=N nativeID for mzML, which is resolved to a scan number through the mzML index.
  • Every spectrum file referenced by the result file is checked before the import starts, and any that were not selected are listed in a single message instead of failing part-way through.

Import filters

A Sage-only filter row (hidden for the other formats) controls what is loaded:

  • Targets only — skips decoy hits (label = -1). On by default.
  • q <= 0.01 only — skips hits above 1% spectrum_q. Off by default.

The two compose independently, so decoys can be inspected on their own when needed.

🗜️ New: gzipped spectrum files

The Database Searching dialog now accepts .mgf.gz, .mzML.gz and .mzXML.gz and decompresses them to the temp folder on import — none of the underlying readers can read gzip directly. This applies to every format in that dialog, not just Sage.

  • The decompressed copy is placed in a folder keyed by the source's path, size and modification time, so two runs holding files of the same name never share one.
  • It is written to a .part file and renamed on success, so an interrupted run never leaves a truncated file that the next import would take for a complete one.
  • An existing decompressed copy is reused across imports, and copies are marked for deletion when PDV exits.

🐞 Bug fixes

  • Every mzIdentML import, and every import using an mzML spectrum file, failed on Java 16+. Both the mzIdentML reader and the mzML run-header reader go through JAXB, whose optimized accessor generation calls ClassLoader.defineClass reflectively. Java 16 made strong encapsulation the default, so that call now throws InaccessibleObjectException from a static initializer and kills the parse with ExceptionInInitializerError (on Java 9–15 it was permitted with a warning). PDV now disables that code generation at startup, so no --add-opens flag is needed. Verified on Java 21 against the mzIdentML and mzML example files linked in the README: both fail before the change and parse after it. The two are independent — an mgf + mzIdentML import was hit by the identification side, and a pepXML or mzTab import from an mzML by the spectrum side. pepXML itself is read with a pull parser and was never affected on its own.
  • mzXML and proBAM/proBed results could not be shown in the PSM table. Only the database import dialog builds one scan collection per spectrum file; the dialog loads a single collection for mzXML, and the proBAM/proBed dialog loads a single one for mzML as well. The table model assumed the per-file map, so filling any row threw ClassCastException and the table came up empty behind a "Table not instantiated" error. It now dispatches on the shape of the object it is given rather than on the format name, which is what every dialog agrees on. Verified on the README mzXML and proBAM examples.
  • Clicking a row of a proBAM or proBed result read from mzML threw. getSpectrum() looked the scan collection up in the per-file map that this path never fills, so every row selection ended in NullPointerException and no spectrum was ever drawn. proBed cannot key such a map anyway — it is not given the spectrum file, and it keys its matches with the file named in the mzIdentML SpectraData — so the collection is now resolved rather than assumed.
  • A spectrum that cannot be drawn is now reported instead of crashing. An identification can name a scan the spectrum file does not hold, or an MS1 (which isolates nothing, so has no precursor), or a scan whose peaks were never parsed — importers load peaks for MS2 scans only. Any of these threw, out of a row click or in the middle of a batch export, with nothing to say which PSM was at fault. The mzML and mzXML readers now return no spectrum for such a match; the window says so in the panel border, naming the PSM, and clears the plot and the match statistics with it, and the two export paths skip the PSM, name it on the console and keep counting it towards the progress bar. MzXMLScanImport also stopped reading the first isolation window unconditionally, which made an mzXML MS1 throw IndexOutOfBoundsException. The headless CLI carried its own copy of the same reader and was given the same treatment.
  • Retention time was 60x too large for Mascot .dat results and for FragPipe results. The two spectrum readers disagree on units — msftbx reports minutes, MSDK seconds — while the compomics Precursor expects seconds, and the FragPipe/Mascot table read that field back as if it were already minutes. FragPipe from mgf and Mascot .dat both store a genuinely seconds-based retention time, so both were 60x out; FragPipe from mzXML was too, through MSDK. MzXMLScanImport.getRt() now returns minutes as the IScan contract states, every Precursor is built in seconds, and the readers of RT (min) convert consistently. The plain database table was already correct for mgf and mzML and is unchanged.
  • Batch export rendered the wrong spectrum for mzML results. getSpectrum(String) read the scan number of an mzML/mzXML spectrum from a mutable field the caller never set, so every exported PSM got whichever scan was last selected in the table. The match is now passed in explicitly.
  • Switching result formats in one session could leave the table blank. The column-visibility map kept the previous format's column names, which the table then looked up on the new format's columns and threw. It is now cleared when the session is reset.

🧪 Tests

  • New SageImportTest (12 tests, offline) covers the peptide grammar — unmodified peptides, residue mods and their 1-based sites, negative masses, N-terminal and C-terminal mods and both together, and an unterminated bracket — plus the CSV unquoting of scannr and the spectrum-file-name matching, including path-qualified and gzipped names.

🔄 Compatibility

  • Existing projects, import formats, and command-line modes continue to work unchanged.
  • Sage is additive: it is a new entry in the result-type dropdown and changes nothing for the existing formats.
  • Gzip support is additive too — uncompressed spectrum files behave exactly as before.
  • The RT (min) column changes value for Mascot .dat and FragPipe results, because it was previously 60x too large there. Every other format's RT (min), including plain mgf and mzML database results, is unchanged.
  • mzIdentML, mzXML and proBAM/proBed results, and anything read from an mzML, become usable again; they were broken by the bugs above rather than by anything in this release.
  • A PSM whose spectrum cannot be found or drawn no longer aborts the view or the export: the panel says so, and exports skip it and carry on.

📦 Full changelog

  • Add Sage search engine support (3ffcb13)
  • Fix the PSM table failing for mzXML and proBAM/proBed results (0b785b4)
  • Fix the row click on proBAM and proBed results read from mzML (90cc2f3)
  • Report a spectrum that cannot be drawn instead of failing on it (c7d8f11)
  • Complete the handling of spectra that cannot be drawn (28ce395)

Full diff: v2.6.0...v2.7.0

v2.6.0

Choose a tag to compare

@wenbostar wenbostar released this 06 Jul 14:26

PDV 2.6.0

This release focuses on predicted-spectrum matching: a new auto-predict mirror mode that fetches a Koina prediction for every PSM on demand, a rebuilt Koina client on the canonical koina.wilhelmlab.org host with three new models and proper test coverage, and a tidier Import-predicted dialog. It also adds a View → Export Window Screenshot action (PNG/TIFF/PDF/SVG at a chosen DPI), a render guard for too-small plot areas, and fixes confidence-track alignment for N-terminally modified residues.

✨ New: auto-predict mirror mode

The Import predicted dialog gains an "Auto-generate for all PSMs" checkbox. Once enabled, PDV fetches a predicted mirror spectrum from Koina on demand for every peptide PSM, reusing the chosen model / instrument / collision energy — no need to import a prediction file per spectrum.

  • The dialog restores this state (checkbox plus model/instrument/CE settings) when reopened.
  • Predicted cache entries are provenance-tracked (autoPredictedKeys) and invalidated when the prediction settings change, while any manual file imports are preserved.
  • The prediction cache is now a ConcurrentHashMap, since it is written from background fetch threads while the EDT reads it.

🔮 Rebuilt Koina predicted-spectra client

The predicted-spectra client now targets the canonical Koina server (koina.wilhelmlab.org) and was reworked to be robust and easy to extend:

  • One base URL — the inference URL is built from the model name instead of a per-model branch.
  • Name-based response parsing — outputs are read by name (mz / intensities) rather than a fixed per-model index, and numbers are cast via Number, so integer-formatted JSON values no longer risk a ClassCastException.
  • Category-driven request bodies — the request body is generated from model-category sets (instrument / fragmentation / charge-only) instead of seven copied per-model JSON blocks, so adding a model needs no new request code.
  • Three new models: UniSpec, ms2pip_Immuno_HCD, and ms2pip_timsTOF2024.
  • The dialog's instrument/fragment combos are driven by the model name, and the instrument dropdown is filtered to the instruments each model supports (e.g. UniSpec accepts only QE and LUMOS).
  • Fixed a malformed instrument list entry (Exploris480:QE) that broke the ": " suffix parse.

🖼️ New: Export Window Screenshot

A new View → Export Window Screenshot action saves the main window as PNG, TIFF, PDF, or SVG via a save dialog.

  • Resolution (DPI) selector (default 300): raster output is re-rendered at dpi/96 scale for genuine high resolution and the DPI is embedded; vector formats (PDF/SVG) are unaffected.
  • Optional border line (default on) and drop shadow (default off) for PNG.
  • The file-name extension stays in sync with the selected format, and a wrong known extension is replaced at save time (no more name.png.pdf).
  • Scaled image dimensions now use floor, so a rounded-up size no longer leaves an unpainted black sliver on the right/bottom edge.

🛡️ Plot-too-small render guard

The underlying compomics GraphicsPanel can hang in its Y-axis tag loop when given too little vertical height (worse in the halved mirror/check views). Below a mode-aware height threshold the spectrum is no longer drawn; a centered "Increase the panel size to show the plot" message is shown instead and the match-stat labels are cleared. The size gate is centralized in gatePlotArea() and applied on render, on resize, and on view switch, rebuilding all panes when the area grows back.

🎨 Import predicted dialog layout

  • Mid-row labels (Precursor Charge, Collision Energy, Fragment Method) size to their natural width so they no longer truncate.
  • The charge and collision-energy spinners are widened (50 → 60) so their values show in full.
  • Leading Model / Instrument labels are narrowed (100 → 80) to cut the gap before the dropdowns while keeping the two dropdown columns aligned.
  • The modification table's preferred height is reduced (300 → 150) so the dialog packs compact instead of leaving a large empty area.

🐞 Bug fixes

  • Confidence track misalignment for N-terminally modified residues. The per-residue confidence track measures the strip's N-terminal prefix (NH2-) to line residue 1 up under the sequence, but it read that width from the raw first layout component, which still carried the modification tag (e.g. NH2-M<Oxidation of M>), inflating the prefix (~36px → ~158px) and shoving the whole track off the panel. The <...> tag is now stripped the same way the strip does at paint time before measuring, so all bars align under their residues. Verified with Casanovo PSMs carrying Oxidation (M), Carbamidomethyl (C), and Deamidated (N/Q).

🧪 Tests

  • New GetPredictedOnlineTest (JUnit 4.13.2) covers URL building, request-body generation, name-based / integer-tolerant response parsing, the model categories, and a network test across all exposed models (skipped when offline).

⬆️ Dependencies

  • Added JUnit 4.13.2 (junit:junit, test scope) for the new predicted-spectra client tests.

🔄 Compatibility

  • Existing projects, import formats, and command-line modes continue to work unchanged.
  • Auto-predict is off until you enable the checkbox; manual prediction-file imports behave exactly as before.
  • The migration to koina.wilhelmlab.org is transparent — existing models still resolve, and the three new models are additive.

🙌 Contributors

  • Bo Wen (@wenbostar) — auto-predict mirror mode, Koina client rebuild and new models, window screenshot export, plot-too-small render guard, Import-predicted layout, confidence-track fix, and tests.

📦 Full changelog

  • Add auto-predict mirror mode and a plot-too-small render guard (e2a655a)
  • Tidy the Import predicted dialog layout (4274bb9)
  • Migrate Koina to wilhelmlab host, add UniSpec / ms2pip_Immuno_HCD / ms2pip_timsTOF2024, and add tests (566aa41)
  • Add Export Window Screenshot to the View menu (f1c1a99)
  • Fix confidence track misalignment for N-terminally modified residues (bde15b6)

Full diff: v2.5.0...v2.6.0

v2.5.0

Choose a tag to compare

@wenbostar wenbostar released this 23 Jun 21:40

PDV 2.5.0

This release focuses on de novo sequencing visualization for Casanovo: a new per-residue confidence track, correct parsing of ProForma peptidoform modifications in mzTab, refined sequence-fragmentation strips, and an optional control server that lets an external launcher (e.g. CasanovoGUI) drive the PDV window. It also ships a rebuilt annotated-spectrum export pipeline on modern Apache Batik/FOP and a number of PSM-table refinements.

✨ New: per-residue confidence track for Casanovo

PDV can now draw a free-floating, draggable confidence bar track above the annotated spectrum for Casanovo de novo results, using the per-residue scores from the mzTab opt_global_aa_scores column.

  • One bar per residue, aligned to the sequence-fragmentation strip: bar height encodes confidence (tall = high), shaded green (high) → red (low) for redundancy, with the score shown above each bar.
  • Shown in all spectrum views (normal, mirror, and check), drawn at 40% transparency so it never obscures peaks.
  • New confidence-track display settings in the Annotation settings dialog: toggle the track, show/hide residues, and set the score font size.

🧬 Correct ProForma peptidoform modifications in mzTab import

mzTab modifications written in the ProForma peptidoform form (e.g. C[Carbamidomethyl]GC[Carbamidomethyl]..., [Acetyl]-PEPTIDE) are now parsed correctly.

  • PDV reads the ProForma peptidoform column when present (header name differs by Casanovo version — opt_global_cv_MS:1003169_proforma_peptidoform_sequence in 5.2, opt_ms_run[1]_proforma in 5.1.x — both are recognized).
  • ProForma/Unimod interim names are mapped to the underlying modification definitions, including N-terminal modifications — Acetyl (+42.010565), Carbamyl (+43.005814), Ammonia-loss (−17.026549), and Casanovo's numeric combined [+25.980265]- label.
  • Verified end-to-end against real Casanovo 5.1.x / 5.2 output: every modification resolves to the correct mass at the correct residue.

This fixes cases where modifications present in the result were previously dropped, so the modified peptide's theoretical fragment ions are now computed correctly.

🔌 New: control server for external launchers (CasanovoGUI)

The denovo-gui command-line mode gains an optional loopback HTTP control server so an external application can drive the open window.

  • --port <p> starts a localhost-only control server; an external launcher can select a PSM by its spectra_ref via /select?ref=....
  • --hide-psm-table opens a spectrum-only view (the PSM table is collapsed and the spectrum fills the window).
  • Both options are optional and off by default; existing denovo-gui usage is unchanged.

🎨 De novo annotation refinements

  • Sequence-fragmentation strips are right-aligned by their painted edge, measured at the actual display scale (correct on HiDPI displays), and re-anchored on spectrum resize.
  • New strip display settings: ion-label font size and a bold amino acids option for both the strip and the confidence track.
  • Fixed mirror/check de novo track and top/bottom strip placement so strips sit flush to the spectrum container.

📊 PSM table refinements

  • Decimal-places dropdown for numeric columns.
  • Fit-columns-to-content toggle (on by default), with improved default column widths.
  • Index column is labeled # with a clearer "Row number (current page)" tooltip; the Selected column header shows a check-mark glyph.
  • The file-detail panel folds away when the window is restored down.

🖨️ Rebuilt annotated-spectrum export

The image/SVG/PDF export pipeline was overhauled for correctness on modern toolchains:

  • Supports fractional sizes and produces a correctly sized PDF.
  • Migrated from the legacy batik-all / pdf-transcoder to Apache FOP (which brings a matching modern Batik) plus batik-svggen.

🐞 Bug fixes

  • Fixed mzTab re-load failing with "table already exists".
  • Fixed an infinite spinner when opening an unsupported de novo identification file; the database connection is now closed and the supported-format list deduplicated.
  • The spectrum panel now refreshes on container resize.

⬆️ Dependencies

  • Replaced legacy batik-all and pdf-transcoder with Apache FOP 2.10 (org.apache.xmlgraphics:fop) and batik-svggen 1.18 for image/SVG/PDF export.

🔄 Compatibility

  • Existing projects, import formats, and command-line modes continue to work unchanged.
  • The new --port and --hide-psm-table options for denovo-gui are optional and off by default.
  • ProForma modification parsing is additive — non-ProForma mzTab files import exactly as before.

🙌 Contributors

  • Bo Wen (@wenbostar) — Casanovo confidence track, ProForma modification parsing, control server, de novo annotation refinements, PSM-table improvements, export overhaul, and dependency updates
  • Jeroen Van Goey (@BioGeek, InstaDeep) — InstaNovo example-file documentation (#109)

📦 Full changelog

  • Add support for ProForma peptidoform modifications in mzTab import (ef45872)
  • Add a spectra_ref→row index map and an optional loopback control server (--port); add --hide-psm-table spectrum-only mode and a PSM-table toggle; anchor the top sequence strip to the pane top (171dd9c)
  • Add per-residue confidence bar track for Casanovo de novo results (a446770) and confidence-track display settings in the Annotation settings dialog (6f44eb5)
  • Right-align sequence strips by the painted edge measured at the display scale (a04deee); fix HiDPI confidence-track alignment and uniform bar width (6968ecd)
  • Add font-size settings for the sequence strip ion labels (061d0cd) and a bold amino acids setting (754d138)
  • Overhaul annotated-spectrum export: fractional sizes, correct PDF size, modern Batik/FOP (511ccc9)
  • PSM table: decimal-places dropdown (343df65), fit-columns-to-content toggle (b2b4c10), # index header (b37c437), check-mark Selected header (f66bbac)
  • Fix mzTab re-load failing with "table already exists" (3328236)
  • Fix infinite spinner on unsupported de novo files and close the DB connection (a39bd36, 74c0e79)
  • Document InstaNovo example files (4611ae7)
  • Bump version to 2.5.0 (7312697)

Full diff: v2.4.0...v2.5.0

v2.4.0

Choose a tag to compare

@wenbostar wenbostar released this 18 Jun 22:12

PDV 2.4.0

This release adds support for InstaNovo de novo sequencing results and ships a modernized user interface built on the FlatLaf light theme with a consistent, centralized font and table style across every PDV window.

✨ New: visualize InstaNovo de novo results

PDV can now import and visualize the CSV prediction output from InstaNovo (tested with v1.0.0+), alongside the existing Casanovo, Novor, DeepNovo, PepNovo+, pNovo, and DirecTag de novo formats.

  • Open the De Novo import dialog and choose an InstaNovo .csv file together with the corresponding spectrum file(s) (mzML / MGF).
Tool Accepted input
InstaNovo CSV prediction output (tested with InstaNovo v1.0.0+)

🎨 Modernized user interface

The entire PDV interface has been refreshed for a cleaner, more consistent look:

  • FlatLaf light theme is now the default Look and Feel across all PDV windows.
  • Centralized fonts (PDVFonts) — PDV's dialogs and windows now derive their fonts from one consistent, modern font family, replacing much of the previous mix of hardcoded Console, Lucida, simsun, and Arial fonts (several of which were not installed on most systems and silently fell back anyway). Spectrum and chart visualization fonts are intentionally left unchanged.
  • Centralized table styling (PDVTableStyle) and consistent row foreground colors across all result tables.
  • Rounded buttons, components, progress bars, and scroll bars; refined tabbed-pane spacing and tooltips.

These changes are purely cosmetic — no result data, import behavior, or file formats are affected.

⬆️ Dependencies

  • Added FlatLaf 3.4 (com.formdev:flatlaf) for the new Look and Feel.
  • Updated commons-lang3 from 3.5 to 3.18.0.

🔄 Compatibility

  • Existing projects, import formats, and command-line modes (including denovo-gui from 2.3.0) continue to work unchanged.
  • InstaNovo import expects the CSV format produced by InstaNovo (tested with v1.0.0+).

🙌 Contributors

  • Jeroen Van Goey (@BioGeek, InstaDeep) — InstaNovo CSV import support (#107)
  • Bo Wen (@wenbostar) — UI modernization, font/table refactor, and dependency updates

📦 Full changelog

  • Add InstaNovo CSV import support (eb21e41)
  • Document InstaNovo de novo support (89bc03a)
  • Refactor font settings and table styles across dialogs to use PDVFonts and PDVTableStyle for consistency (1cf05bd)
  • Enhance row rendering in tables with consistent foreground colors (2b651d5)
  • Set font for loading button to use PDVFonts for consistency (9e5fb4a)
  • Update commons-lang3 to 3.18.0 and remove an unused import (cde1149)
  • Bump version to 2.4.0 (included in 1cf05bd)

Full diff: v2.3.0...v2.4.0

v2.3.0

Choose a tag to compare

@wenbostar wenbostar released this 16 Jun 21:39

PDV 2.3.0

This release adds a command-line launch mode for PDV's De Novo viewer, enabling one-click visualization of de novo sequencing results from external tools — in particular the new CasanovoGUI "Open in PDV" integration — plus a fix to the batch command-line module.

✨ New: launch the De Novo viewer from the command line

PDV can now open its De Novo result viewer directly from the command line, preloaded with a Casanovo mzTab result and the corresponding spectrum file(s) — no manual import steps:

java -jar PDV-2.3.0.jar denovo-gui \
  --mztab result.mztab \
  --spectrum run1.mzML,run2.mzML \
  --tol 0.05 \
  --tol-unit Da
Option Description
--mztab <file> Casanovo mzTab result to visualize (required)
--spectrum <f1[,f2,…]> One or more spectrum files (mzML / MGF), comma-separated (required)
--tol <value> Fragment-ion tolerance for spectrum annotation (default 0.05)
--tol-unit Da|ppm Unit for the fragment tolerance (default Da)

This is the version required by CasanovoGUI — its Open in PDV feature passes exactly these arguments (including --tol-unit), so the GUI's spectrum-annotation tolerance and unit are now honored.

🐛 Fixes

  • Fixed a bug in the batch command-line module (PDVCLIMainClass).

🔄 Compatibility

  • Works with CasanovoGUI's Open in PDV integration out of the box.
  • Earlier PDV releases (≤ 2.2.3) do not include the denovo-gui command; CasanovoGUI users should upgrade to 2.3.0.

📦 Full changelog

  • denovo-gui: support launching the De Novo GUI through the command line (f2de55c)
  • denovo-gui: add --tol-unit (Da/ppm) for fragment tolerance (73b493c)
  • Fix a command-line bug (1e9ea22)
  • Bump version to 2.3.0

Full diff: v2.2.3...v2.3.0

v2.2.3

Choose a tag to compare

@wenbostar wenbostar released this 18 Feb 04:19
  1. Fixed mzID and mzML files import issue related to #99
  2. Improve b ion visualization related to #98

v2.2.1

Choose a tag to compare

@wenbostar wenbostar released this 03 Feb 23:42
  1. Fixed an issue parsing new modification format of Casanovo 5.0.

v2.2.0

Choose a tag to compare

@wenbostar wenbostar released this 16 Apr 22:40
  1. Database searching result visualization: supported multiple mzML files as input;
  2. Casanovo result visualization: supported mzML as input; supported multiple MGF or mzML files as input.

v2.1.0

Choose a tag to compare

@wenbostar wenbostar released this 14 May 21:59

Fixed several bugs and did a few improvements to spectrum prediction:
Full Changelog: v2.0.0...v2.1.0

v2.0.0

Choose a tag to compare

@wenbostar wenbostar released this 27 Mar 18:28

Supported mirror plot to show the spectral similarity between observed spectrum and predicted spectrum using deep learning models. The prediction is done through the koina server in real time. Supported deep learning models include Prosit models and AlphaPeptDeep models:

AlphaPept_ms2_generic
Prosit_2019_intensity
Prosit_2023_intensity_timsTOF
Prosit_2020_intensity_CID
Prosit_2023_intensity_XL_CMS2
Prosit_2020_intensity_TMT
Prosit_2020_intensity_HCD
Prosit_2023_intensity_XL_CMS3