Skip to content

Latest commit

 

History

History
112 lines (98 loc) · 6.1 KB

File metadata and controls

112 lines (98 loc) · 6.1 KB

Changelog

All notable changes to the UWPR fork of Monocle are documented here. The format follows Keep a Changelog.

Release builds are tagged by CI as v<version>.<build number> (for example v0.5.12). The output files written by Monocle record the version together with the short commit hash of the build (for example 0.5+6e08134).

Changed

  • Monocle.UI: ThermoFisher.CommonCore packages bumped 7.1.21 -> 8.0.42 to match the core library; removed the stale, unreferenced 5.0.7 (net471) Thermo and zlib.net 1.0.4.0 package copies under Monocle.UI/packages; dropped the unnecessary Microsoft.CSharp package reference (NU1510).

0.5 - 2026-09-11

First release of the UWPR fork. Based on gygilab/Monocle at commit 14d0135 (leave binaryDataArray blank when there are no peaks).

Added

  • CLI: -f/--File accepts multiple input files and wildcard patterns such as *.raw. Wildcards are expanded in-process on Windows; on Linux the shell expands them and the results arrive as multiple values.
  • CLI: new -p/--NumConcurrent option controls how many files are processed at once (default 4). Files are processed with a parallel loop.
  • CLI: with multiple input files, -o/--OutputFilePath must be an existing directory. With a single input file it may be a directory or a file path.
  • mzXML: <msInstrument> header block with manufacturer, model, ionisation, mass analyzer, and acquisition software name and version, read from the RAW file.
  • mzXML: injectionTime attribute on each <scan> element.
  • mzML: <sourceFileList> inside <fileDescription> with the Thermo nativeID format, Thermo RAW format, and a SHA-1 hash of the source file.
  • mzML: <referenceableParamGroup> carrying the Thermo Electron instrument model (MS:1000492) when the model is known, referenced from <instrumentConfiguration>.
  • ScanFileHeader gains InstrumentIonization, InstrumentMassAnalyzer, AcquisitionSoftwareName, and AcquisitionSoftwareVersion.
  • RawReader maps Thermo ionization mode and mass analyzer enums to standard abbreviations (NSI, ESI, APCI, FTMS, ITMS, and others).
  • README: Linux self-contained publish command and multi-file usage examples.
  • CLAUDE.md with build commands and an architecture overview.

Changed

  • All projects target .NET 10 LTS (net10.0, net10.0-windows for the UI), up from .NET 6. Microsoft.Data.Sqlite updated to 10.0.12 and Microsoft.NET.Test.Sdk to 17.12.0.
  • GitHub Actions workflows and the Docker build images use the .NET 10 SDK. They previously pinned .NET 6.
  • mzXML and mzML software elements report the real informational version with the short commit hash instead of the hardcoded value 1.
  • mzML software element uses the registered HUPO-PSI term for Monocle (MS:1003977) instead of the generic custom unreleased software tool term.
  • mzML: cv name for MS:1000563 corrected to Thermo RAW format.
  • mzXML: precursorMz, lowMz, highMz, and basePeakMz are written with six decimal places and precursorIntensity with four, instead of 17-digit round-trip strings.
  • mzXML: instrument manufacturer is reported as Thermo Scientific.
  • CLI: per-file log messages include the file name, and reader.Close() is called on every code path.
  • Performance: mzXML and mzML readers replace reflection-based property setting with static setter dictionaries.
  • Performance: the isotope scoring loop in Monocle.Run uses a stack-allocated span instead of allocating a sublist for every candidate offset. Vector and PeptideEnvelopeExtractor gain Span<double> overloads.
  • Performance: endian conversion in the mzXML reader and writer uses BinaryPrimitives instead of per-peak byte array allocation and reversal.
  • Performance: nearby-scan selection uses an ordinal case-insensitive comparison instead of lowercasing the filter line.
  • Help text and option descriptions list mzML alongside mzXML and CSV.
  • CI release tags now use the v0.5. prefix.

Fixed

  • mzDB reader tested the intensity flag for the baseline and noise offsets, so baseline and noise values were decoded incorrectly.
  • PeakMatcher.Match crashed when a scan had no centroids. It now returns -1.
  • mzML reader threw on spectra whose binary m/z or intensity arrays were null.
  • RawReader precursor intensity search never ran because the binary search upper bound was initialized to zero. After that fix, the linear scan started from the last midpoint instead of the lower bound and could skip in-window peaks. Both are corrected.
  • RawReader resolves symlinks before passing the path to the Thermo file factory, fixing failures on Linux.
  • CLI leaked the reader handle when run with --header-only.
  • CLI threw an unhandled exception when required arguments were missing. It now exits with a nonzero status.
  • MzXmlWriter.CalculateFileHash opens the source file read-only with shared access, so it no longer conflicts with the writer's exclusive handle.
  • mzDB reader and writer disable SQLite connection pooling and dispose the connection after closing, so file handles release immediately under .NET 8.
  • mzDB writer tests use a class fixture so database setup runs once per class, fixing file-lock races exposed by .NET 8.
  • Trimmed self-contained Linux publish was broken since .NET 7 changed the default trim mode to full. The trimmed binary crashed on startup because the trimmer removed the option property setters CommandLineParser fills through reflection, and --header-only failed because reflection-based JSON serialization is disabled in trimmed builds. The CLI project now sets TrimMode to partial and serializes the header through a source-generated JsonSerializerContext.
  • Publish commands in the README, CI workflows, and deb/rpm scripts name Monocle.CLI.csproj explicitly. Running dotnet publish in the CLI folder picked up the solution file, which applied trimming to the library project and failed with IL1034.