Skip to content

Pin the RawDataHandler build that decodes the last mzML array element - #820

Draft
htsugawa wants to merge 1 commit into
masterfrom
fix/rawdatahandler-mzml-last-element
Draft

htsugawa wants to merge 1 commit into
masterfrom
fix/rawdatahandler-mzml-last-element

Conversation

@htsugawa

@htsugawa htsugawa commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This pins MsdialCore's Release reference to RawDataHandler 1.3.9769.328. That build has the mzML last-element fix from systemsomicslab/msrawdataworkbench#40 (commit 592b6db).

RawDataHandler 1.3.9699.469 never decodes the last element of an mzML binary data array. For data read from mzML, this means:

  • every MS1 and MS/MS spectrum loses its highest-m/z peak, and a spectrum with one peak comes out empty;
  • every chromatogram ends with an RT 0 / intensity 0 point in place of its real last point.

Change

One line in src/MSDIAL5/MsdialCore/MsdialCore.csproj: the Release PackageReference to RawDataHandler goes from 1.3.9699.469 to 1.3.9769.328. The Debug, vendor-unsupported and MS-DIAL 4 references are unchanged.

Must be done before merge

  • The package exists only in a local feed for now. Publish it to the lab package source before merging. Until then, a Release restore on any other machine fails with NU1102.
  • msrawdataworkbench#40 is still open. The package was built from its branch, not from merged master.
  • The package is not obfuscated, unlike the published 1.3.* builds. If it is rebuilt with obfuscation for publication and gets a new version number, this pin has to move to that version.
  • The package is built from RawDataHandler master (b34c857) plus the fix, not from 1.3.9699.469 plus the fix. So it also brings in the master commits that 1.3.9699.469 does not have. The Console output also ships lib/Reifycs/Reifycs.Hive.DataAccess.dll in place of Reifycs.Hive.Reader.dll.

Verification

Build. The Console was built from this commit with:

dotnet build tests/MSDIAL5/MsdialCoreTestApp/MsdialCoreTestApp.csproj --configuration Release --framework net48 --nologo
  • Restore was limited to local sources: the local feed plus the machine's local package folders, with no nuget.org.
  • Result: 0 errors.
  • The output holds RawDataHandler.dll 1.3.9769.328+592b6db.
  • MSDIALCUI.exe --help and --version start, reporting 5.5.260930 and commit f56d447.

Reading real mzML.

  • Method: a small net48 harness reads a copy of MetaboLights MTBLS2207 M3T-Std_neg_DDA_1mz.mzML (2114 spectra) the way MS-DIAL does, with new RawDataAccess(path, 0, false, false, false).GetMeasurement(). It loads RawDataHandler.dll, Common.dll and zlib.net.dll from one Console output folder at a time.
  • Builds compared: (a) the Console built at c471463, which has RawDataHandler 1.3.9699.469, and (b) the Console built from this branch, which has 1.3.9769.328.
  • Reference: an independent Python decode of the same file (base64, zlib, struct).
  • Comparison: per spectrum, the peak count, the last m/z and intensity, and a sha256 over every (m/z, intensity) pair.
spectra (a) 1.3.9699.469 (b) 1.3.9769.328
first 50 (all MS1) 50/50 one peak short; the remaining peaks are identical to Python's 50/50 identical to Python
all 2114: 1753 MS1 + 361 MS2 2114/2114 one peak short, the rest identical 2114/2114 identical
the 2 MS2 spectra with one peak read as empty 1 peak, identical

The first five rows:

index Python n Python last m/z Python last int. (a) n (a) last m/z (a) last int. (b) n (b) last m/z (b) last int.
0 83 764.374512 407.407 82 747.042664 364.495 83 764.374512 407.407
1 51 793.347534 412.876 50 767.866943 401.104 51 793.347534 412.876
2 51 891.572266 424.587 50 824.392517 386.427 51 891.572266 424.587
3 53 652.298889 391.316 52 551.437317 375.022 53 652.298889 391.316
4 60 827.103882 437.434 59 769.841614 392.850 60 827.103882 437.434

No MS-DIAL analysis was run for this check.

🤖 Generated with Claude Code

Do not publish the package this build used

RawDataHandler 1.3.9769.328 in the local feed was built without Eazfuscator, which is not installed on the build machine. Two consequences:

  • License key. The published 1.3.* assemblies are obfuscated, and their string encryption keeps the SCIEX Clearcore2 license key unreadable. In this build the key is readable plain text in RawDataHandler.dll.
  • Where it may go. The package may be used only locally. It must not be copied to the lab package source, and no build that contains it may be distributed.

Before this PR can merge:

  1. Build the release package from msrawdataworkbench master (after msrawdataworkbench#40) through the lab's normal obfuscated release process. That build will take a new version number.
  2. Move this pin to that version.
  3. Rebuild and re-verify.

The package is also msrawdataworkbench master b34c857 plus the fix, not 1.3.9699.469 plus the fix. It therefore includes the eight RawDataHandlerStandard commits since 1.3.9699.469:

  • TSF support;
  • mzML polarity from referenceableParamGroup;
  • the Shimadzu IoModule scope;
  • Hive 0.19 DataAccess in place of Hive 0.18 Reader.

🤖 Generated with Claude Code

RawDataHandler 1.3.9699.469 drops the last element of every mzML binary
data array: each spectrum loses its highest m/z peak and each
chromatogram ends with a 0/0 point. 1.3.9769.328 is built from
systemsomicslab/msrawdataworkbench#40 (592b6db), which fixes the decoder.

Only the Release reference moves. The Debug, vendor-unsupported and
MSDIAL 4 references are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant