Conversation
…on in kernel interpolation
… considered correctly.
… 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.
…ult is false anyway
…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>
Contributor
There was a problem hiding this comment.
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.
- 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release Version
v3.2.3 (patch release)
Release Checklist
[Unreleased]and needs to be renamed to[3.2.3])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_Genericbase data, the MKM biological model (matRad_MKMand z*-based LQ models with RBE tables), and oxygen handling in the particle stf generators and pencil-beam engine.MATRAD_USERDATA.matRad_calcSigmaRashi) is now modeled for heavier ions (helium, carbon, oxygen) in addition to protons.ipopt.mexoct840a64) and Windows (ipopt.mexoct840w64), together with an updated MinGW compilation script.ipopt.mexoct10w64) linked against Octave's OpenBLAS and LAPACK.tools/matRad_photonDosimetry.mhelper for photon dosimetry.Fixed
matRad_calcSigmaRashiwhere the base data range (in mm) was used directly in a cm-based formula, underestimating range shifter scattering for protons (fixes range shifter related bugs in anayltical dose calculation engines: #924).traceCubefunction formatRad_RayTracer.CheckGradientsoption for fmincon dropped due to its removal in MATLAB 2026 (MATLAB2026 removed option CheckGradients #908).dij.axanddij.bxare correctly handled as cell arrays in weight initialization (Fix biological warm start for cell ax bx #911).matRad_GriddedScenariosAbstractnow correctly allows a single grid point (collapse to nominal value) for a specific error type (Fixes GriddedScenario to allow single grid point (i.e., only scenario model) for a certain error type #898).matRad_ParticlePencilBeamEngineAbstract.Changed
photons_Generic.mat) now supports a machine file format version 2 with aversionfield; 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).References
🤖 Generated with Claude Code