HDX Workbench · Feature summary

Recent Improvements 2026

What is new in the Workbench, written for the people who run the experiments rather than the people who wrote the code.

Instruments Thermo · Waters · Bruker Acquisition DDA and DIA Covers the application and its analysis engine
Headline

DIA experiments now work end to end

A complete data-independent acquisition workflow, from building an undeuterated fragment library to reading deuterium uptake off individual fragments.

Headline

Bruker timsTOF data opens directly

Point the wizard at a .d folder and it is read in place. No conversion step, and no second copy of a multi-gigabyte dataset.

Headline

Differences get a real significance test

A volcano plot that applies the accepted hybrid test, so a peptide counts as changed only when the change is both large enough and reproducible enough.

Instrument support

The three major vendors are now handled by one common reading layer, which means a feature added for one instrument tends to arrive for the others too.

Thermo .raw Waters .raw Bruker .d Common reading layer spectra · chromatograms one interface Peptide detection DIA fragment search Spectra and plots
One reading layer, three vendors. Everything downstream asks the same questions of the data, so support added for one instrument reaches the others without being written twice. Bruker was added by fitting a new reader behind this layer rather than by touching detection.

Bruker timsTOF (.d) data new vendor

Bruker folders are recognised throughout the application: in the experiment wizard, when browsing to a folder, in the project tree, and in the spectra views. Ion mobility is taken into account when spectra are combined.

By default the raw data stays where it is and the project keeps a pointer to it, so a large acquisition is not duplicated into the project folder. There is a checkbox if you would rather copy it, and it checks you have the disk space first.

Where Experiment wizard, raw data step

The wizard tells you which instrument it found

The vendor detected from your files is shown while you set the experiment up, and a batch that mixes vendors is refused with an explanation instead of failing later in the run.

Waters data reads more accurately

Lockmass correction is applied when spectra are read, and profile spectra are converted to peaks at the reading boundary rather than later, which removes a source of small mass errors. Detection defaults were retuned for Waters instruments.

Where Detect dialog defaults, and automatically during any Waters run

Thermo isolation windows come from the file

The instrument's real isolation window boundaries are read out of the raw file instead of being inferred, which matters for assigning fragments in DIA runs.

DIA experiments

Data-independent acquisition was the single largest piece of work in this period. It measures deuterium at the fragment level, so a peptide's uptake can be localised more finely than the peptide itself.

How a DIA run works
  1. The undeuterated samples are searched first to build an anchor library: which fragments belong to which peptide, and when they elute.
  2. The deuterated samples are then searched against that library, confirming each peptide and extracting the fragments that support it.
  3. Fragment deuteration is read off a fitted slope across the fragment series, anchored to the precursor measurement.
PHASE 1 · build the library Undeuterated samples search Match fragments to peptides Anchor library which fragments, and when they elute reused, or rebuilt only if you ask PHASE 2 · measure the deuterium Deuterated samples Confirm peptide, extract fragments fragment mass shift outlier, down-weighted fragment position along the peptide slope = deuteration
Two passes over the data. The undeuterated samples establish which fragments belong to which peptide and when they elute. The deuterated samples are then read against that library, and uptake comes from the slope fitted across the whole fragment series rather than from any single fragment.

OpenSwath is the detection engine, with automatic conversion

Files that need converting to mzML are converted for you. If the required OpenMS tools are not installed, or the data is not actually DIA, the run stops immediately with a dialog that says so rather than quietly producing nothing.

Where Peptide set right-click, DIA Detect

Reuse an existing anchor library

A checkbox skips rebuilding the undeuterated library when you already have one, which saves the longest part of a repeat run.

DIA Quality tab

A cross-cell view: the fragment table across the top and a deuteration scatter below it, for spotting which cells in the whole experiment disagree before you go looking at individual spectra.

Where Spectra window, DIA Quality tab

MS2 tab, one cell at a time

Select a single replicate and you get four stacked panels for it: the precursor chromatogram, one chromatogram per detected fragment shaded by whether the fragment agreed with the others, the labelled fragment spectrum, and the deuteration model fitted through them. A properties sidebar carries the peptide, deuteration and quality numbers.

Where Spectra window, MS2 tab, with exactly one replicate selected
Screenshot of the MS2 tab showing the precursor chromatogram, fragment chromatograms, fragment spectrum and deuteration model.
The MS2 tab, one replicate at one labelling time. From the top: the precursor chromatogram, the fragment chromatograms coloured by ion series, the labelled fragment spectrum, and the deuteration model fitted through the fragments, with that cell's numbers listed alongside.

DIA Diagnostics

A panel for judging confidence across the run: confidence tiers, counts of cleanly matched fragments, whether the charge states agree with each other, and whether the fragment retention time matched the precursor. It also reports how far the DIA evidence would move each retention window if you let it.

Fragment deuteration follows the AutoHX approach

Fragment uptake is fitted as a slope across the fragment series and normalised to the precursor, so a single noisy fragment no longer swings the answer.

Retention time

Most bad HDX numbers come from measuring the right peptide at the wrong moment. Several features were added specifically to find, check and correct retention windows.

declared retention window retention time narrow slice wrong peak true apex, found by searching the whole window other replicates and charge states agree before the window moves
Why a window moves, and why it sometimes should not. Searching only a slice of the declared window can settle on an interfering peak that happens to be nearby. Detection now searches the whole window for the apex, and a correction is only written when the other replicates or charge states of the same peptide point the same way.

Refresh retention times from MS2 identifications

Runs a Sage search over your undeuterated files and updates the peptide set's retention times from the identifications. It offers a dry run first, so you can see what would change before anything is written, and it explains itself and stops if Sage is missing or your files carry no fragment spectra.

Where Protein right-click, Refresh RTs from MS2 (Sage)

Retention time rescue from DIA evidence

Where fragment evidence says a peptide elutes somewhere other than the saved window, the correction can be previewed as a table before being applied, and applying it can be rolled back completely.

Corroboration before a window is moved

A window is only corrected when other charge states of the same peptide, or the other replicates of the same cell, agree with the new position. A single outlying measurement cannot drag the window on its own.

A warning when detection lands far from the identification

Peptide sets are checked against the retention time the peptide was originally identified at, and cells that landed a long way off are flagged for you to look at.

Wider search for the real apex

Detection now searches the full declared retention window for the peak apex rather than a narrow slice of it, with score gates so a wider search does not mean a worse pick. Windows that had to be rescued this way are flagged rather than passed off as ordinary picks.

Detection quality

A group of changes aimed at one failure mode: the software confidently reporting deuteration for a peak that is not your peptide.

ACCEPTED evenly spaced, nothing in the way M0 mass VETOED something else is under the peptide a peak sits before the first isotope half-spaced peaks: another charge state mass
What now blocks a bad measurement. A peak just before the first isotope, or peaks at half the isotope spacing, mean something other than your peptide is contributing intensity. Either one can veto a pick that a good fit score alone would previously have waved through.

Interfering peaks are actively ruled out

Detection now checks for a peak sitting just before the peptide's first isotope, for evenly spaced peaks that suggest a different charge state overlapping, and for peptides whose masses conflict with each other. Any of these can veto a pick that would previously have been accepted on score alone.

Mass accuracy is enforced on the combined spectrum

A parts-per-million ceiling is applied to the combined undeuterated spectrum, so a peak at approximately the right mass is no longer good enough.

The measurement window respects physical limits

The window used to quantify a peptide is capped at the mass it could reach if every exchangeable hydrogen were deuterated. This also fixed a case where the reported centroid could fall outside the very window it was measured in.

Weak but real signals get a second chance

Cells that produced nothing on the first pass can be rescued from the combined spectrum, and cells whose signal only appears in a single scan can be latched onto when the evidence supports it. Every rescue is recorded on the cell rather than hidden.

Missing measurements no longer distort averages

A replicate that was marked usable but produced no measurement used to enter the averages as a placeholder value, quietly pulling means and standard deviations off. Those replicates are now left out and counted separately.

Bimodal analysis

Support for peptides whose isotope envelope splits into two populations, the signature of EX1 exchange or of two conformations in solution.

mass EX2 population less deuterated · 62 % of the signal EX1 population more deuterated · 38 % of the signal A single centroid across both humps would report a deuteration that neither population actually has.
Two populations under one envelope. The fit reports each population's deuteration and its share, and how much better the two-population description is than a single one. You decide which population to assign, and the choice is stored with the peptide and exported.

Fit and assign the two populations by hand

A toggle in the spectra view fits two populations to the displayed envelope and draws both, with each one's deuteration, share of the population and how much better the two-population fit is than a single one. You choose which population to assign, and assigning one the data does not support asks you to confirm first.

The assignment is saved with the peptide, appears in the results grid, and is written to the CSV export.

Where Spectra window, bottom bar of the signal view
Screenshot of the spectra view showing an isotope envelope fitted as two populations.
The bimodal fit on a fully deuterated control. The blue and orange curves are the two fitted populations and the dashed vertical line is the single measured centroid, which falls between them. A peptide like this needs looking at before either population is assigned.

PFNet residue-level results

PFNet models exchange at individual residues. The Workbench can now bring those results back in and show them next to your measured data.

Import a PFNet output archive

Import the zipped output and it is filed under the protein. Re-importing replaces that set and leaves any others alongside it, so several models can coexist.

Where PFNet menu, Import PFNet Results (Zip)

Modelled results in the sequence coverage view

The coverage dropdown gains a consolidated view per state and a state-versus-control view. Under each stretch of sequence sit three aligned tracks: your measured uptake averaged onto residues, the model's residue-level prediction on the same colour scale, and the model's confidence. Residues the model is least sure of are hatched rather than filled.

Because all three share the sequence ruler, you can see where the model reproduces what you measured, where it departs from it, and whether it was confident when it did. Both views export residue-level CSV files and PyMOL scripts for structure figures.

Screenshot of the sequence coverage map showing measured uptake, PFNet modelled uptake and model confidence as three aligned tracks beneath the protein sequence.
The consolidated coverage map for one state, three tracks per residue. The top track is your measured uptake averaged onto residues, the middle is the PFNet model's residue-level prediction on the same colour scale, and the bottom is the model's confidence. Hatching marks residues the model is least sure of, so agreement and doubt can be read off the same row of the sequence.

PFNet Residues panel

Per-residue exchange rates or free energies as bars with uncertainty, a track showing which stretches the model could not resolve to single residues, and low-confidence residues greyed so a prediction is never mistaken for a measurement.

Where Spectra window, PFNet tab

Statistics and differential analysis

Deciding which differences between two states are real, using the method the field has settled on.

The hybrid test, in one paragraph

A t-test alone will flag a tiny difference on a very reproducible peptide. A fixed cutoff alone will flag a large difference on a noisy one. The hybrid test requires both at once: the difference must be statistically significant and larger than a threshold calculated from how reproducible your own replicates actually were. Everything else stays on the plot, greyed, with a note saying which of the two gates it failed.

uptake gate uptake gate p-value gate PROTECTED DEPROTECTED significant but small large but noisy no detectable difference −0.8−0.40 +0.4+0.8 difference in uptake between the two states (Da) 012 34 strength of evidence protected deprotected significant but small large but noisy nothing detectable
One point per peptide, per labelling time. Only the upper corners, past both dashed lines, are reported as changes. The other three groups stay on the plot rather than disappearing, because a peptide that is significant but small and one that is large but noisy fail for opposite reasons and call for different follow-up.

Volcano plot

One point per peptide per labelling time, with the size of the difference across the plot and the strength of the evidence up it. Colour says what the point is: protected, deprotected, significant but small, large but noisy, or nothing detectable.

Both cutoff lines can be dragged. Hovering a point gives the full numbers behind it. Clicking one selects that peptide everywhere else in the Workbench, so its spectra and uptake curve come up. Dragging a box around a group selects them together for marking or export.

Where Spectra window, Volcano tab, and the Volcano menu
Screenshot of the Volcano tab showing the scatter of peptides with both cutoff lines and the class legend.
The Volcano tab, on a ligand against apo comparison. Points past both dashed gates are reported as changes. The classes inside them stay on the plot, so a peptide that is significant but small can be told apart from one that is large but noisy.

Exports that a reviewer can check

The plot exports as an image, the points or just the hits export as CSV, and a settings snapshot records the comparison, the replicates used, the threshold and how it was calculated, and the software version. The full CSV export gains the same verdict columns.

One rule across the views

The sequence coverage map now greys non-significant peptides using the same test as the volcano plot, so two views can no longer disagree about what counts as a change.

Back-exchange and fully deuterated controls

Back-exchange metrics from your DMax samples

When a fully deuterated control is present, the Workbench calculates how much deuterium was actually recovered and how much was lost to back-exchange, per peptide, and reports a quality rating for the control itself.

Recovery in the peptide summary

A recovery column in the results grid, so peptides with poor deuterium recovery are visible while you review rather than only in the exported file.

Speed

Several runs that used to be left overnight now finish while you wait. The results were checked to be identical before and after each change.

Waters HDX job before 5 to 7 hours now 18 minutes Thermo peptide detection before 874 seconds now 326 seconds
Measured on the same data, with the same answers. Each bar pair is its own comparison. The gains come from reading each file once over only the retention range needed, rather than from any change to how deuteration is calculated, and the output was checked to be identical before and after.

Waters HDX jobs finish in minutes rather than hours

Chromatogram extraction was rewritten to read each file once, over only the retention range actually needed, and to pull all isotope channels in a single pass. A job that took most of a working day now takes under twenty minutes.

Thermo detection roughly three times faster

The same windowing applied to Thermo files, plus opening each raw file once per peptide instead of repeatedly, and searching within spectra rather than scanning every peak.

The results grid loads on demand

Statistics are calculated only for the columns you are looking at, the project tree loads a branch when you expand it, and the intensity plots build in the background instead of blocking the window.

Detect and HDX in one pass

One menu item runs the undeuterated detection, writes the peptide set from everything it found, and runs the HDX job from it, reusing the undeuterated results instead of measuring them twice. If any step fails, it cleans up after itself.

Where Protein right-click, Detect + HDX (one pass, reuse 0s results)

Timing reports

Each detection run writes a timing breakdown next to the job, so a slow run can be attributed to a stage rather than guessed at.

Day-to-day work

Drag the retention time and mass windows on the plot

Triangle handles on the chromatogram and the spectrum set the window boundaries directly. The text boxes follow as you drag, and pressing Enter afterwards applies the change. The old mass range slider is gone. Zooming still works; the handles only take over while you are actually holding one.

On a multi-cell view the boxes start empty and each cell keeps its own boundary, so you can move one edge across every loaded cell without flattening the other.

Undo the last recalculation

One level of undo for the Set button, restoring every field that the recalculation changed.

Blue and red as the default plot colours

Matching the convention used in the field, and the same scale the coverage maps use.

Mark and enable peptides straight from the grid

The Marked and Enabled columns are checkboxes you click, instead of a right-click menu, and the change is saved as you go.

The project tree remembers where you were

Expanded and collapsed branches survive closing and reopening a project, and expanding no longer takes two clicks.

Progress while Sage runs

Conversion and search progress is reported instead of the window appearing to hang.

Damaged result files no longer stop a view

A corrupt result file is skipped with a message rather than breaking the whole load, and there is a repair action that regenerates the affected files.

The experiment wizard checks the sample table

Sample assignments are validated before the experiment is created, so mistakes surface while you can still fix them easily.

Create experiments from the command line

A command-line tool builds experiments from a CSV description, for setting up many experiments at once or scripting a reprocessing run.

Grid presentation

Column widths were retuned, the default sort order fixed, and the peptide features column is hidden when nothing populates it.