pwiz-sharp: added mzPeak format support (read, write, msconvert) - #4311
pwiz-sharp: added mzPeak format support (read, write, msconvert)#4311chambm wants to merge 2 commits into
Conversation
|
@mobiusklein I vibe coded this partly based on MzPeak.NET. Want to try it out? |
|
And I had just reinstalled Visual Studio too.
This looks structurally correct, but I haven't run it yet. I know you're
only prototyping so the null marking, chunked layout and so on aren't there
yet, which is where a lot of the complexity lives. I saw the comments say
something about no async runtime. I had to absorb the async dependency from
ParquetSharp's Arrow interop layer. Is this a no-go scenario for you?
…On Wed, Jun 17, 2026 at 4:34 PM Matt Chambers ***@***.***> wrote:
*chambm* left a comment (ProteoWizard/pwiz#4311)
<#4311 (comment)>
@mobiusklein <https://github.com/mobiusklein> I vibe coded this partly
based on MzPeak.NET. Want to try it out?
—
Reply to this email directly, view it on GitHub
<#4311?email_source=notifications&email_token=AAK4E6NUAMQSMOSH6QKHRCT5AL6GXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINZTGUYDONJUGEY2M4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-4735075411>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAK4E6NVI5OADKNCVH5OOL35AL6GXAVCNFSNUABFKJSXA33TNF2G64TZHMYTENBZGUZDKNZXHNEXG43VMU5TINRYGY4DENZSHE22C5QC>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/AAK4E6NQGGVOJWPW3BHVZNT5AL6GXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINZTGUYDONJUGEY2M4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJKTGN5XXIZLSL5UW64Y>
and Android
<https://github.com/notifications/mobile/android/AAK4E6LKCHKE42SSTAXJW5T5AL6GXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINZTGUYDONJUGEY2M4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLTGN5XXIZLSL5QW4ZDSN5UWI>.
Download it today!
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Right, we don't use async/await in Skyline as a rule due to its tendency to use the system thread pool which makes non-instrumented handle and leak detection annoyingly tricky. I did defer the chunked implementation but I'll kick it off now. This format seems really complicated to me: it'll be interesting to see how much traction it gets in the community. |
|
Thank you for explaining. If the async was isolated to be entirely within a The only reason the original code used Which part is most complicated seeming to you? |
* Read/write mzPeak (Parquet-in-ZIP) as a first-class MSData format * Full-metadata round-trip parity with mzMLb across all 8 vendor readers * Cross-stack reads of mzPeak.NET files (adaptive types, UV/DAD spectra) * Lazy row-group reads; msconvert --mzpeak; vendor harness round-trip gate See ai/todos/active/TODO-20260616_pwiz_sharp_mzpeak.md Co-Authored-By: Claude <noreply@anthropic.com>
… test teardown * MzPeakReader detects mzPeak.NET's chunked layout (one parquet row per m/z chunk vs. one row per point) and routes through new MzPeakChunkCodec * Port of mzPeak.NET's DeltaCodec / NoCompressionCodec / NullInterpolation: cumulative-sum from chunk start; seam nulls filled from per-spectrum mz_delta_model polynomial (or local-median spacing for wider gaps); intensities pass through with null=0 * CrossStackReadTests gains two chunked round-trip tests against a 2.3 MB mzpeaknet_small_chunked.mzpeak fixture; values match mzPeak.NET exactly * MzPeakReaderAdapterTests: every MSData now via `using` so the new MzPeakArchive handle releases at end of test; ClassCleanup retries with GC pump so a stray leak surfaces loudly rather than silently failing Co-Authored-By: Claude <noreply@anthropic.com>
81a344d to
0154405
Compare
Summary
IReader/format plumbing, andmsconvert --mzpeakoutput.TestMzPeakRoundTrip).wavelength_spectra_*(UV/DAD) entries appended after the MS spectra.Test plan
See ai/todos/active/TODO-20260616_pwiz_sharp_mzpeak.md
Co-Authored-By: Claude noreply@anthropic.com