Skip to content

Release v3.2.3#926

Merged
wahln merged 30 commits into
masterfrom
rc/v3.2.3
Jul 11, 2026
Merged

Release v3.2.3#926
wahln merged 30 commits into
masterfrom
rc/v3.2.3

Conversation

@wahln

@wahln wahln commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Release Version

v3.2.3 (patch release)

Release Checklist

  • Adapted Changelog.md (all changes are documented, but the section is still headed [Unreleased] and needs to be renamed to [3.2.3])
  • All required mex files compiled (new IPOPT mex files for Octave 8.4 Linux/Windows and Octave >= 10 Windows are included in this release)
  • Third Party libraries / scripts up to date
  • Standalone(s) generated and tested
  • Wiki adapted
  • Optional changes to README.md
  • Check license information
  • Version number changed in matRad_version (still set to 3.2.2 in matRad/matRad_version.m)

Summary of Changes

This patch release adds support for oxygen ions, fixes several bugs in the analytical dose calculation engines (most notably missing range shifter lateral scattering), and modernizes the Octave mex file management and CI infrastructure.

Added

  • Oxygen ion support (Feature/oxygen #922): new oxygen_Generic base data, the MKM biological model (matRad_MKM and z*-based LQ models with RBE tables), and oxygen handling in the particle stf generators and pencil-beam engine.
  • Userfolders can now also be set via the environment variable MATRAD_USERDATA.
  • Range shifter lateral scattering (matRad_calcSigmaRashi) is now modeled for heavier ions (helium, carbon, oxygen) in addition to protons.
  • Precompiled IPOPT interface binaries for Octave 8.4.0 on Linux (ipopt.mexoct840a64) and Windows (ipopt.mexoct840w64), together with an updated MinGW compilation script.
  • Octave >= 10 mex file for IPOPT (ipopt.mexoct10w64) linked against Octave's OpenBLAS and LAPACK.
  • New tools/matRad_photonDosimetry.m helper for photon dosimetry.
  • Documentation: userfolder feature, DVH constraints, and other data structures are documented more clearly.
  • CI: dependabot configuration for monthly, grouped GitHub Actions updates.

Fixed

Changed

  • Photon base data (photons_Generic.mat) now supports a machine file format version 2 with a version field; version 2 requires correct kernel normalization without implying a spacing in the convolution integral. The photon dose calculation no longer relies on a hardcoded convolution resolution normalization (old files are assumed to be version 1 for backward compatibility).
  • Improved matching of RTStruct contours to ct slices in DICOM import (Improve RTSTRUCT contour slice matching #910).
  • Octave mex file management reworked: since Octave 10, mex files only link against a dedicated mex library; the mex file checker now checks for the latest available major version build and tries to run it.
  • CI: Octave tests now run with Octave 8.4.0 on ubuntu-24.04 (previously Octave 6.4 on ubuntu-22.04) (Octave CI Update #925); GitHub Actions updated to current major versions.

References

🤖 Generated with Claude Code

wahln and others added 27 commits March 30, 2026 13:37
… in base data and photon dose caluclation (SVDPB).

* New machine file version introduced with version field.
* Downwards compatibility checked (old files are assumed as version 1) and modifies docs and changelog as well.
…ents

MATLAB2026 removed option CheckGradients
…ching

Improve RTSTRUCT contour slice matching
* Fix biological warm start for cell ax bx

* update changelog

---------

Co-authored-by: Niklas Wahl <n.wahl@dkfz-heidelberg.de>
… model) for a certain error type (#898)

* fixes the GriddedScenarios implementation when the number of grid points is 1, which will reduce to the nominal scenario in this dimension. Also provides corresponding tests for this case

* fix scenario index from subscript function and reformat files according to code style guidelines

* update changelog
* devops: pin octave dicom package to 0.7.2 due to a build bug

* add precompiled ipopt binary for octave 8.4.0 (default on ubuntu 24.04)

* update tests to octave 8.4.0

* update actions and add automated dependabot

* rename liboctave-dev to octave-dev for ubuntu-24.04 tests

* update test actions to v7

* add ipopt for octave 8.4.0 on windows

* add missing 8.4.0 ipopt compilation script

* changelog and rename for octave 8.4.0
…es: (#924)

* fixes range shifter related bugs in anayltical dose calculation engines:
- fix missing addition of lateral component variance in kernel convolution
- add missing ions to range shifter calculation
- fix a unit bug in range shifter scatter computation
- reformatting applied to all relevant files

* fix logging output for lateral model

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix typo in string that made it impossible to instantiate analytical engines

* fix empty bixel handling and update changelog

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* add oxygen and mkm

* add oxygen

* added Test

* Delete oxygen_testData.mat

* better test coverage and a merge conflic fix

* some more test coverage

* update changelog

---------

Co-authored-by: Niklas Wahl <n.wahl@dkfz-heidelberg.de>
@read-the-docs-community

read-the-docs-community Bot commented Jul 11, 2026

Copy link
Copy Markdown

Documentation build overview

📚 matRad | 🛠️ Build #33543733 | 📁 Comparing 0692355 against latest (5a43850)

  🔍 Preview build  

19 files changed · + 1 added · ± 18 modified

+ Added

± Modified

@codecov

codecov Bot commented Jul 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 71.56652% with 265 lines in your changes missing coverage. Please review.
✅ Project coverage is 55.39%. Comparing base (5a43850) to head (0692355).

Files with missing lines Patch % Lines
...eEngines/matRad_ParticlePencilBeamEngineAbstract.m 55.60% 111 Missing ⚠️
matRad/MatRad_Config.m 38.20% 55 Missing ⚠️
...dModels/matRad_TabulatedSpectralKernelBasedModel.m 5.55% 17 Missing ⚠️
matRad/util/matRad_checkMexFileExists.m 0.00% 15 Missing ⚠️
...mization/matRad_prepareBiologicalOptimizationDij.m 81.81% 14 Missing ⚠️
matRad/steering/matRad_StfGeneratorParticleIMPT.m 75.00% 14 Missing ⚠️
matRad/scenarios/matRad_ScenarioModel.m 76.92% 9 Missing ⚠️
...lc/+DoseEngines/matRad_PhotonPencilBeamSVDEngine.m 50.00% 7 Missing ⚠️
...teering/matRad_StfGeneratorParticleSingleBeamlet.m 81.08% 7 Missing ⚠️
matRad/dicom/matRad_findRtssContourSlicesInCt.m 77.27% 5 Missing ⚠️
... and 7 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #926      +/-   ##
==========================================
+ Coverage   54.86%   55.39%   +0.53%     
==========================================
  Files         320      324       +4     
  Lines       20527    20731     +204     
==========================================
+ Hits        11262    11484     +222     
+ Misses       9265     9247      -18     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@wahln wahln requested a review from Copilot July 11, 2026 09:38
@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown

Test Results

    3 files  ±  0      3 suites  ±0   32m 12s ⏱️ - 2m 34s
  396 tests + 39    396 ✅ + 39  0 💤 ±0  0 ❌ ±0 
1 284 runs  +117  1 279 ✅ +117  5 💤 ±0  0 ❌ ±0 

Results for commit 0692355. ± Comparison against base commit 5a43850.

♻️ This comment has been updated with latest results.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release PR for v3.2.3 that bundles multiple previously merged features/fixes (notably oxygen-ion support, range-shifter lateral scattering fixes in analytical PB engines, and Octave mex/CI modernization), plus documentation and test updates to validate those changes.

Changes:

  • Adds/extends oxygen support across steering generators, dose engines, biological models, and tests (incl. MKM z*-based model coverage).
  • Fixes and regression-tests range shifter lateral scattering handling (sigmaRashi) and scenario-indexing edge cases.
  • Modernizes Octave mex management and CI workflows; updates docs for DVH constraint Jacobian and base-data formats.

Reviewed changes

Copilot reviewed 66 out of 72 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
tools/matRad_photonDosimetry.m Adds a photon absolute-dosimetry helper script.
thirdParty/IPOPT/compile_ipopt_minGW_octave840.sh Updates MinGW IPOPT build instructions for Octave 8.4.0.
test/testData/helper_testDataCreater.m Extends test-data generation list to include oxygen modality.
test/steering/test_stfGEneratorParticleIMPT.m Adds oxygen STF generator tests and a non-convex target regression.
test/steering/test_stfGeneratorParticleBeamlet.m Adds oxygen single-beamlet STF generator tests and availability checks.
test/scenarios/test_wcScenarios.m Reformats tests; adds grid-point and degenerate scenMask regression coverage.
test/scenarios/test_nominalScenario.m Adds sub2scenIx regression coverage for nominal scenarios; reformats tests.
test/optimization/test_biologicalOptimizationDij.m Adds unit tests for new biological dij preparation helper.
test/helper_rashiLateralBroadening.m Adds shared helper to measure range-shifter broadening end-to-end.
test/doseCalc/test_TopasMCEngine.m Extends TOPAS MC tests to include oxygen RBE model selection.
test/doseCalc/test_sigmaRashi.m Updates sigmaRashi reference values; adds ion-scaling and error-case tests.
test/doseCalc/test_HongPB.m Adds oxygen engine regression tests and range-shifter broadening tests.
test/doseCalc/test_FSPB.m Refactors tests; adds range-shifter broadening regression for SubsamplingPB.
test/doseCalc/test_Analytical.m Refactors tests; adds analytical PB range-shifter broadening regression.
test/dicom/test_rtssContourSliceMatching.m Adds tests for new RTSTRUCT slice-plane matching helper.
test/core/test_matRadConfig.m Adds tests for defaults (oxygen) and MatRad_Config logging behaviors.
test/core/test_generateStf.m Adds STF generation tests for oxygen in TG119 phantom.
test/bioModel/test_biologicalModel.m Adds MKM (z*) model tests and oxygen pipeline coverage.
matRad/util/matRad_checkMexFileExists.m Implements Octave 10+ major-version mex selection logic.
matRad/steering/matRad_StfGeneratorParticleSingleBeamlet.m Adds oxygen to supported radiation modes; refactors formatting.
matRad/steering/matRad_StfGeneratorParticleIMPT.m Adds oxygen to supported radiation modes; refactors formatting.
matRad/scenarios/matRad_WorstCaseScenarios.m Adds setters restricting grid points to {1,3} and triggers updates.
matRad/scenarios/matRad_ScenarioModel.m Fixes sub2scenIx handling for degenerate/squeezed scenMask shapes.
matRad/scenarios/matRad_GriddedScenariosAbstract.m Adds explicit handling for 1 grid-point setup/range (nominal-only).
matRad/rayTracing/matRad_RayTracer.m Fixes nargin checks for optional args in traceCube (voxelIndices/rotCoordsV).
matRad/optimization/matRad_prepareBiologicalOptimizationDij.m Adds helper to normalize/validate ax/bx + compute ixDose/gamma metadata.
matRad/optimization/+DoseConstraints/matRad_MinMaxDVH.m Documents and clarifies adaptive logistic Jacobian approximation.
matRad/matRad_fluenceOptimization.m Centralizes biological dij preparation via new helper.
matRad/doseCalc/matRad_calcSigmaRashi.m Fixes units (mm→cm), adds heavy-ion scaling, adds radiationMode handling.
matRad/doseCalc/+DoseEngines/matRad_PhotonPencilBeamSVDEngine.m Adds photon machine format v2 handling and convolution normalization fixes.
matRad/doseCalc/+DoseEngines/matRad_PencilBeamEngineAbstract.m Fixes minor typos and a bixel emptiness check.
matRad/doseCalc/+DoseEngines/matRad_ParticleHongPencilBeamEngine.m Applies totalInitialSigmaSq (incl. range-shifter) and adds oxygen support.
matRad/dicom/matRad_findRtssContourSlicesInCt.m Adds centralized contour-plane to CT-slice slab matching helper.
matRad/dicom/matRad_convRtssContours2Indices.m Uses new contour-slice matcher; improves omission warning context.
matRad/dicom/@matRad_DicomImporter/matRad_importDicomRtss.m Uses new contour-slice matcher for import sanity checking.
matRad/bioModels/matRad_EmptyBiologicalModel.m Adds oxygen modality support for “none” biological model.
matRad/bioModels/matRad_ConstantRBE.m Adds oxygen modality support for constant RBE model.
matRad/bioModels/LQbasedModels/ZStarBasedModel/matRad_MKM.m Adds MKM model implementation (oxygen-capable).
matRad/bioModels/LQbasedModels/ZStarBasedModel/matRad_LQZStarBasedModel.m Adds z*-based LQ model superclass with zs kernel forwarding.
matRad/bioModels/LQbasedModels/RBEtabulatedModels/matRad_TabulatedSpectralKernelBasedModel.m Adds oxygen modality support and refactors formatting.
matRad/bioModels/LQbasedModels/kernelBasedModels/matRad_KernelBasedLEM.m Adds oxygen modality support and refactors formatting.
examples/matRad_example21_oxygen.m Adds an oxygen example script (currently with outdated header text).
docs/guide/planopt.rst Adds detailed DVH-constraint logistic-Jacobian documentation.
docs/guide/octave.rst Updates recommended/tested Octave version guidance (8.4.0).
docs/guide/gdosecalc.rst Updates photon base-data description and links photon dosimetry tool script.
docs/datastructures/userfolder.rst Documents userfolder mechanism and MATRAD_USERDATA environment variable.
docs/datastructures/basedata/photons.rst Adds photon machine-file format documentation (but intro text needs correction).
docs/datastructures/basedata/particles.rst Fixes meta field naming in docs (machine.meta.name).
.github/workflows/tests.yml Updates Actions versions; moves Octave CI to ubuntu-24.04 / Octave 8.4.0.
.github/workflows/test-results.yml Updates download-artifact action major version.
.github/workflows/stale.yml Updates actions/stale major version.
.github/workflows/package.yml Updates checkout action major version.
.github/workflows/docs.yml Updates checkout/upload-artifact action major versions.
.github/workflows/coverage-report.yml Updates Actions and Codecov/sticky-comment major versions.
.github/dependabot.yml Adds dependabot configuration for grouped monthly GitHub Actions updates.
.github/before_install_linux.sh Pins Octave dicom package to 0.7.2 tarball.
.github/actions/test-octave/action.yml Updates Octave deps (octave-dev) and artifact action major version.
.github/actions/test-matlab/action.yml Updates upload-artifact action major version.
Comments suppressed due to low confidence (1)

thirdParty/IPOPT/compile_ipopt_minGW_octave840.sh:3

  • The Octave version in the "tested for" line wasn't updated (still says 6.4.0) even though the script title is now Octave 8.4.0. This can mislead users following the build instructions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/doseCalc/test_TopasMCEngine.m
Comment thread docs/datastructures/basedata/photons.rst Outdated
Comment thread docs/guide/gdosecalc.rst
Comment thread examples/matRad_example21_oxygen.m Outdated
Comment thread examples/matRad_example21_oxygen.m Outdated
Comment thread matRad/steering/matRad_StfGeneratorParticleSingleBeamlet.m
Comment thread matRad/doseCalc/+DoseEngines/matRad_ParticleHongPencilBeamEngine.m
wahln and others added 3 commits July 11, 2026 12:43
- Remove duplicated 'lem' entry in TOPAS RBE model test lists
- Fix photon base data doc page erroneously describing particle base data
- Link particle base data reference (not photon) in particle dose calc guide
- Fix copy/paste leftovers in oxygen example (proton/helium references, typo)
- Fix class name in matRad_StfGeneratorParticleSingleBeamlet header comment
- Remove stray 'help edit' line from HongPB engine license header
- Correct tested Octave version (8.4.0) in IPOPT MinGW build script

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Code Coverage

Package Line Rate Health
coverage Package 1 55%
Summary 55% (11483 / 20731)

@wahln wahln merged commit 2433339 into master Jul 11, 2026
22 checks passed
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.

4 participants