Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
57c02e3
vectorized the siddon raytracer and put it in a class
wahln Sep 17, 2021
37e6a1b
fix for single ray tracing
wahln Sep 17, 2021
ee1b8f0
Merge branch 'dev' of https://github.com/e0404/matRad into dev_vector…
wahln Feb 13, 2023
7d329d0
experimental GPU support. So far speed improvements only significant …
wahln Oct 13, 2023
d024ba3
images and initial structure for documentation folder
wahln Apr 4, 2025
3e82ecb
documentation update setup
wahln Apr 28, 2025
78f5572
documentation: some more structure and sites
wahln May 4, 2025
6ee0081
update on documents
wahln May 26, 2025
a79f00b
some more conversion of the documentation
wahln Jun 3, 2025
8b56e35
some more documentation rewrite in dose calculation
wahln Jun 3, 2025
388c44f
further conversion
wahln Jun 4, 2025
4303e98
some matRad syntax changes to remove parsing errors
wahln Jun 4, 2025
9344369
further doc update
wahln Jun 16, 2025
e71e263
add variance computation to calcCubes
wahln Aug 15, 2025
42e92b8
more options to plotSlice
wahln Aug 15, 2025
126d691
update submodules
wahln Jan 19, 2026
39fa2ca
fix empty figure opening in plotSlice due to colormap array request
wahln Jan 19, 2026
378e909
avoid return of empty handles in matRadGUI when GUI is disabled globa…
wahln Jan 20, 2026
b3ca943
Update submodule for MOcov
wahln Jan 22, 2026
cbd12e2
update MOcov submodule to include md5 fix
wahln Jan 22, 2026
ffda21e
Updates to GUI
JenHardt Feb 2, 2026
5a7d07b
Merge pull request #886 from JenHardt/dev_gui_fixes_matlab2025
wahln Feb 2, 2026
aafb65b
small fix for scenario listing
wahln Feb 3, 2026
1ef7b12
small fix to correctly add robustness as a field when turning objecti…
wahln Feb 4, 2026
8797677
fixes typo in addMUdataFromMachine (resolves #882)
wahln Feb 6, 2026
7f6b2b1
Correct DICOM attribute for SliceLocation (resolves #875)
wahln Feb 6, 2026
af603ee
dose engine can now use single precision calculations
wahln Feb 7, 2026
be42d2b
Merge branch 'dev_vectorizedRayTracing' of github.com:wahln/matRad in…
wahln Feb 8, 2026
4219f68
fix issue in matRad_interp1 if multiple single precision datasets whe…
wahln Feb 10, 2026
c0b22ad
ensure double in objective and constraint functions (as well as deriv…
wahln Feb 11, 2026
72a8547
missing plot handle added
JenHardt Feb 16, 2026
d2daafd
Merge pull request #889 from JenHardt/dev_gui_fixes_matlab2025
wahln Feb 17, 2026
33197fe
start for pre-commit configuration
wahln Feb 17, 2026
7e3f357
remove legacy use of old raytracers
wahln Feb 17, 2026
2eb967f
Merge branch 'dev' into feature/single_precision_dosecalc
wahln Feb 17, 2026
3a2ee28
Reworked 3d conformal and sequencing (#885)
JenHardt Feb 18, 2026
573d89b
changed instantiation of optimizer to enable more configuration in pr…
wahln Feb 18, 2026
fbb85a2
use new property assignment function in DoseEngine and Stf Generators
wahln Feb 18, 2026
ed616a7
small viewing widget scrolling fix for Octave due to empty CurrentPoint
wahln Feb 18, 2026
ddc1891
Merge branch 'dev' of https://github.com/e0404/matRad into dev
wahln Feb 20, 2026
aa363b2
FRED interface updated with new test data and improved compatibility …
wahln Feb 20, 2026
20f79b7
fix some further version compatibility issues regarding fred
wahln Feb 20, 2026
2c570d6
further streamlining and performance optimization of FRED engine
wahln Feb 22, 2026
18de67c
fix ordering in updated fred code
wahln Feb 22, 2026
3c64172
update FRED test data
wahln Feb 22, 2026
37a0c26
streamline FRED test
wahln Feb 22, 2026
57cef13
Range shifter positioning for MC and minor bug fixing (#880)
remocristoforetti Feb 23, 2026
df8bb16
Update pre-commit hooks to use miss_hit
wahln Feb 23, 2026
7b81f1c
Merge branch 'devops/precommit' into dev
wahln Feb 23, 2026
ddedca6
fix miss_hit configuration to not indent function bodys
wahln Feb 23, 2026
1508b4d
Merge branch 'devops/precommit' into dev
wahln Feb 23, 2026
eb87e98
codespell configuration file
wahln Feb 25, 2026
d25ade4
Merge branch 'devops/precommit' into dev
wahln Feb 25, 2026
419f82c
adapt configuration for miss_hit to allow longer files and larger fil…
wahln Feb 25, 2026
70eff6d
Merge branch 'devops/precommit' into dev
wahln Feb 25, 2026
902b2b9
allow forcing of ijFormatVersion in FRED and formatting changes
wahln Feb 25, 2026
a16e0a1
Merge branch 'dev' into docs/wiki_conversion
wahln Feb 25, 2026
96dbef4
add GitHub workflow for documentation building
wahln Feb 25, 2026
ef3e2c7
change workflow filter for documentation building to evaluate when do…
wahln Feb 25, 2026
071b635
some adaptations to sphinx environment installation by providing requ…
wahln Feb 25, 2026
4cbfec8
subtle change in about.rst for a change in docs
wahln Feb 25, 2026
c182572
avoid hidden files in documentation building
wahln Feb 25, 2026
d3cd001
remove documentation workflow filter
wahln Feb 25, 2026
c84085e
update formatting rules for some special cases in testing and capital…
wahln Feb 26, 2026
eb28578
FRED merge error fix and format update
wahln Feb 26, 2026
66e2afa
Update coverage report workflow to handle errors
wahln Feb 27, 2026
2478177
slight restructuring of dose engines to incude finalizeDose in top-le…
wahln Feb 27, 2026
8ac53ee
Merge branch 'dev' into feature/single_precision_dosecalc
wahln Feb 27, 2026
7c1b7fe
Changes in Webpage layout, smaller fixes
CheyenneLeize Feb 27, 2026
963eeff
Merge branch 'dev' into gpu
wahln Feb 27, 2026
0574655
Merge branch 'dev' of github.com:e0404/matRad into dev
wahln Feb 27, 2026
1bf763e
Merge branch 'dev' into feature/single_precision_dosecalc
wahln Feb 27, 2026
b149e44
Merge branch 'gpu' into feature/single_precision_dosecalc
wahln Feb 27, 2026
34b4c41
updates to allow translation of matRad data structures to and from GPU
wahln Mar 2, 2026
0ca9a9a
some metric changes and script naming rules to allow for example file…
wahln Mar 2, 2026
8165521
update mis hit naming rules for tests and some special cases
wahln Mar 2, 2026
58e4df8
Merge branch 'devops/precommit' into feature/single_precision_dosecalc
wahln Mar 2, 2026
5caa8cc
Some fixes for single precsision
wahln Mar 2, 2026
88b1ea2
fix renaming of GetStatus to getStatus
wahln Mar 2, 2026
12bac75
add a compatibility function to return the underlying datatype
wahln Mar 2, 2026
134a6af
Implementation of multi alpha/beta for proton plans with TOPAS (#884)
SimonaFa Mar 3, 2026
783438e
Dev mc update (#892)
remocristoforetti Mar 3, 2026
4021f2c
allows DICOM import of passively scattered proton beams
wahln Mar 11, 2026
3653f70
Fixes typo in RBE model for fallback load path (fixes #893)
wahln Mar 17, 2026
0abc8af
Merge branch 'dev' of github.com:e0404/matRad into dev
wahln Mar 17, 2026
b61e4a0
Merge branch 'devops/precommit' into dev
wahln Mar 18, 2026
c36ab6c
Merge branch 'dev' of github.com:e0404/matRad into dev
wahln Mar 19, 2026
bf8adb3
drop numOfbeams as required parameter
wahln Mar 19, 2026
5f31930
Merge branch 'dev' into feature/single_precision_dosecalc
wahln Mar 19, 2026
fbe4958
update on moving cst to GPU and some function adapations to allow GPU…
wahln Mar 19, 2026
9b45cab
Update RayTracer base class
wahln Mar 19, 2026
16e8086
update documentation and formatting of RayTracerSiddon
wahln Mar 19, 2026
3e39e40
fix to make sure to switch back to root folder in fred engine
wahln Mar 20, 2026
be6a316
Merge branch 'dev' into feature/single_precision_dosecalc
wahln Mar 20, 2026
c200b90
add standalone build step to github workflows
wahln Mar 20, 2026
2d65543
move batch token to job environment
wahln Mar 20, 2026
39a12cc
updates to standalone version management
wahln Mar 20, 2026
4eab97a
matrix platform build
wahln Mar 20, 2026
b8aa96d
fix availability statment in DAO example 3 and slight typo
wahln Mar 20, 2026
dd7ea5b
make sure isolevels are passed to contourc as doubles, apply code sty…
wahln Mar 20, 2026
1245c99
fix deprecated raytracer expecting cube coordinates for the isocenter
wahln Mar 20, 2026
3fbf034
adapt raytracer tests
wahln Mar 20, 2026
3a276d5
fix raytracer to correctly return empty rays on miss and adapt tests
wahln Mar 20, 2026
6117a65
Phantom Builder Improvements: allow input sizes as mm and improve com…
wahln Mar 20, 2026
29291d5
some adaptations to raytracer to have more consistent output and allo…
wahln Mar 20, 2026
84f88b1
Merge branch 'dev' into feature/single_precision_dosecalc
wahln Mar 20, 2026
526e46a
small fix to raytracer base class and corresponding tests
wahln Mar 20, 2026
249a3a0
allow to force precision in the raytracer
wahln Mar 20, 2026
6e830ec
performance improvement on matRad_cubeIndex2worldCoords when called w…
wahln Mar 20, 2026
f8f64a4
performance improvements in raytracer
wahln Mar 21, 2026
ddc9824
documentation and minor fixes
wahln Mar 21, 2026
502347f
add faq point
wahln Mar 21, 2026
caf432a
remove propMC properties
wahln Mar 21, 2026
9ebc3cc
Outstanding fix on using gather compat function
wahln Mar 23, 2026
bac9133
enableGPU variable is now a property for each algorithm, cleaned up s…
wahln Mar 23, 2026
a52dc05
fix slight dimension interpretation issue in cubeIndex2worldCoords
wahln Mar 23, 2026
240f91c
make interpolation test octave compatible and reformat according to s…
wahln Mar 23, 2026
f4b0aaa
explicit type cast due to vecnorm seemingly not always returing the i…
wahln Mar 23, 2026
aea98d3
add traceOnDoseGrid to pencil beam engines
wahln Mar 23, 2026
1ba8c56
update and reformt HongPB tests
wahln Mar 23, 2026
6e64e6d
fix if statement for keeping rad depth cubes when traceOnDoseGrid is …
wahln Mar 24, 2026
073bf51
keep default precision setting as double for now until a major release
wahln Mar 24, 2026
d185f63
clean up configuration and add some output
wahln Mar 24, 2026
2ccd0d2
Merge pull request #895 from e0404/feature/single_precision_dosecalc
wahln Mar 24, 2026
63305bc
Merge branch 'dev' into docs/wiki_conversion
wahln Mar 24, 2026
6255798
small cnealups to avoid sphinx parsing errors
wahln Mar 24, 2026
431b98e
fix test function names
wahln Mar 24, 2026
a13a163
update docstrings to be sphinx napoleon compatible
wahln Mar 24, 2026
806f7af
monkeypatch in documentation conf.py to reflect deprecating noindex i…
wahln Mar 24, 2026
67bb206
fix syntax in doc rst files
wahln Mar 25, 2026
b88bdf9
Merge branch 'docs/wiki_conversion' of github.com:CheyenneLeize/matRa…
wahln Mar 25, 2026
cfe143e
Merge branch 'docs/wiki_conversion' of github.com:e0404/matRad into d…
wahln Mar 25, 2026
00e4b30
update version
wahln Mar 25, 2026
b19fd1a
documentation update
wahln Mar 25, 2026
e3f54c6
Update docstrings in compareDijStf and comparePlnStf to not break sph…
wahln Mar 25, 2026
e24a231
update documentation
wahln Mar 25, 2026
adc39de
Merge branch 'devops/build_standalone' into dev
wahln Mar 25, 2026
fc14e11
Further cleanup of new readthedocsdocumentation to remove warnings an…
wahln Mar 25, 2026
69cdc4e
readthedocs yml file
wahln Mar 25, 2026
7dd78b8
Merge branch 'docs/wiki_conversion' into dev
wahln Mar 25, 2026
986021e
Update copyright notice to 2026
wahln Mar 25, 2026
75f4802
Limit sphinx version for doc build to 8.2.3 due to a breaking change …
wahln Mar 25, 2026
2da1de6
Update version number, license and changelog.
wahln Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[codespell]
ignore-words-list = indX, hAx, linIx
2 changes: 2 additions & 0 deletions .github/workflows/coverage-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,15 @@ jobs:

- name: Upload to Coveralls
uses: coverallsapp/github-action@v2
continue-on-error: true
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
file: coverage/coverage.json
format: coveralls

- name: Upload to Codecov
uses: codecov/codecov-action@v5
continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage/coverage.json,coverage/coverage.xml
Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Build Sphinx Documentation

on:
push:
pull_request:

jobs:
build-docs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.13'

- name: Install sphinx and dependencies
run: |
python -m pip install --upgrade pip
pip install -r docs/requirements.txt

- name: Build documentation
run: sphinx-build docs _doc

- name: Upload artifacts
uses: actions/upload-artifact@v6
with:
name: documentation
path: _doc
85 changes: 85 additions & 0 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Build Standalone

on:
push:
branches:
- master
- 'rc/**'
- 'devops/**'
tags:
- '**'
workflow_dispatch:
inputs:
isRelease:
description: 'Build as release'
type: boolean
default: false

env:
MLM_LICENSE_TOKEN: ${{ secrets.MATLAB_BATCH_TOKEN }}

jobs:
build-standalone:
name: Build Standalone (${{ matrix.platform }})
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
platform: linux
- os: windows-latest
platform: windows
- os: macos-latest
platform: macos-silicon
- os: macos-15-intel
platform: macos-intel

steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
submodules: 'false'

- name: Determine build type
id: build-type
shell: bash
run: |
if [[ "${{ github.ref_type }}" == "tag" ]]; then
echo "is_release=true" >> "$GITHUB_OUTPUT"
echo "artifact_name=matRad-standalone-${{ matrix.platform }}-${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
elif [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ inputs.isRelease }}" == "true" ]]; then
echo "is_release=true" >> "$GITHUB_OUTPUT"
echo "artifact_name=matRad-standalone-${{ matrix.platform }}-manual-release" >> "$GITHUB_OUTPUT"
else
echo "is_release=false" >> "$GITHUB_OUTPUT"
echo "artifact_name=matRad-standalone-${{ matrix.platform }}-dev" >> "$GITHUB_OUTPUT"
fi

- name: Install MATLAB with Compiler
uses: matlab-actions/setup-matlab@v2
with:
release: latest
products: MATLAB_Compiler MATLAB_Compiler_SDK Image_Processing_Toolbox Parallel_Computing_Toolbox Optimization_Toolbox Global_Optimization_Toolbox

- name: Build Standalone
uses: matlab-actions/run-command@v2
with:
command: |
matRad_buildStandalone('isRelease',${{ steps.build-type.outputs.is_release }},'verbose',true,'json','build_result.json')

- name: Upload installer artifact
uses: actions/upload-artifact@v7
with:
name: ${{ steps.build-type.outputs.artifact_name }}
path: build/installer/
if-no-files-found: error

- name: Upload build result JSON
if: always()
uses: actions/upload-artifact@v7
with:
name: ${{ steps.build-type.outputs.artifact_name }}-build-info
path: build_result.json
if-no-files-found: warn
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ testresults.xml
coverage.xml
coverage.json
*.asv
build/
.DS_Store
build/
.doc/

35 changes: 35 additions & 0 deletions .miss_hit
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
project_root

# octave: true

exclude_dir: "submodules"

# style guide (https://florianschanda.github.io/miss_hit/style_checker.html)
line_length: 150

# --- Naming rules for matRad ---

# matRad_ + lowerCamelCase
regex_function_name: "^(matRad|test|helper)_([a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*)$"
regex_script_name: "^matRad_((example[1-9][0-9]*_)?([a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*))$"

# methods: plain lowerCamelCase
regex_method_name: "^([a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*)$"

# classes: matRad_ + UpperCamelCase
regex_class_name: "^(matRad|test)_([A-Z]{2,}[a-zA-Z0-9]*|[A-Z][a-zA-Z0-9]*)$"

# parameters / variables: lowerCamelCase
regex_parameter_name: "^(test_functions|test_suite|[a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*)$"
regex_attribute_name: "^([a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*)$"

suppress_rule: "copyright_notice"

tab_width: 4
indent_function_file_body: false

# metrics limit for the code quality (https://florianschanda.github.io/miss_hit/metrics.html)
metric "cnest": limit 6
metric "file_length": limit 1000
metric "cyc": limit 25
metric "parameters": limit 15
51 changes: 51 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- id: check-case-conflict
- id: check-merge-conflict
- id: check-symlinks

- repo: https://github.com/rstcheck/rstcheck
rev: v6.2.5
hooks:
- id: rstcheck
additional_dependencies: ['rstcheck[sphinx,toml]']
args: [--ignore-languages=matlab, '--ignore-directives=automodule,autoclass,autofunction,autodata,autoevent,autointerface,autolabel,autosectionlabel,autostatus,autotoclabel']


- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell

- repo: local
hooks:
# Run the linter.
- id: mmh_style
name: MISS_HIT Style
entry: mh_style
language: python
args: [--fix]
additional_dependencies: [miss_hit_core]
files: \.m$

- id: mh_metric
name: MISS_HIT Metrics
entry: mh_metric
args: [--ci]
files: \.m$
language: python
additional_dependencies: [miss_hit_core]

- id: mh_lint
name: MISS_HIT Lint
entry: mh_lint
files: \.m$
language: python
additional_dependencies: [miss_hit]
22 changes: 22 additions & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

# Set the OS, Python version, and other tools you might need
build:
os: ubuntu-24.04
tools:
python: "3.13"

# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/conf.py

# Optionally, but recommended,
# declare the Python requirements required to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt
60 changes: 51 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,47 @@
# Changelog

## Patch 3.2.1
This (arguably large) patch does fix a multitude of issues with the new >=R2025 MATLAB Desktop and reported minor issues import/export, helper, and other minor functions. Apart from that it introduced some new flexibilities under the hood (single precision, raytracer vectorization) that do not expose changes on the outside, and can thus be sustainably tested before changing behavior in the next major release. Further the license has changed to a 3-Clause-BSD.

### Preliminary new features & Enhancements
- Dose engines can now optionally run calculations in single precision (default remains double). A new `precision` configuration property controls this
- GPU acceleration is available as an opt-in property for optimization. Helper functions for translating matRad data structures to/from GPU arrays were added.
- The Siddon raytracer is now implemented as a class with vectorized ray processing and optional single-precision forcing.
- Pencil beam engines now expose a `traceOnDoseGrid` switch (default `false`) to optionally retain radiological depth cubes on the dose grid.
- Performance improvements in `matRad_cubeIndex2worldCoords`.
- Improvements on the phantom builder to also accept mm coordinates for phantom definition
- Variance calculation from MC statistics can now be computed correctly
- `matRad_plotSlice` input parsing enhancements; fixed empty figure opening due to colormap array request.
- TOPAS now correctly support multiple alpha/beta values.
- Streamlined sequecing and 3D conformal calculations
- FRED interface updated with new test data, improved version compatibility, and the ability to force `ijFormatVersion`.
- DICOM import now imports passively scattered proton beams (gantry/couch angles)
- Optimizer instantiation reworked to allow more configuration options via `propOpt`.
- `finalizeDose` call in DoseEngines moved to `calcDoseForward` and `calcDoseInfluence`

### Bug Fixes
- Fixed range-shifter handling issues in MC dose calculation interfaces
- Fix typo in RBE model fallback load path.
- Fix typo in `addMUdataFromMachine`.
- Correct DICOM attribute for `SliceLocation`.
- Fix slight dimension interpretation issue in `cubeIndex2worldCoords`.
- Fix scenario listing and the robustness field when serializing objectives to structs or displaying them in the CST.
- Multiple GUI fixes for MATLAB 2025 compatibility.
- GUI: fix missing plot handle; fix empty figure handles returned when GUI is globally disabled; fix `plotSlice` colormap issue; fix scrolling in the viewing widget under Octave (empty `CurrentPoint`).
- Drop `numOfbeams` as a required parameter (it can be inferred).

### Documentation
- Full Sphinx / ReadTheDocs documentation build pipeline added (readthedocs.yml, GitHub Actions workflow, `docs/` folder with images and rst structure).
- Docstrings updated to be sphinx-napoleon compatible across many files.
- Copyright notices updated to 2026.

### Development & CI
- Standalone build step added to GitHub Actions workflows with matrix build (windows, linux, macos intel / silicon).
- Preliminary pre-commit hooks configured with `miss_hit` (MATLAB style checker) and `codespell` (not enforced yet)
- GitHub Actions workflow for documentation building (triggered on changes to `docs/`).
- Coverage report workflow made more tolerant to errors.
- MOcov submodule updated to include md5 fix.

## Minor Update 3.2.0

### New Features
Expand All @@ -9,7 +51,7 @@

### Bug Fixes & Performance
- DICOM Import widget allow selection of multiple RTDose files.
- DICOM Import Widget and importer handle selected patient more consistently and robustly.
- DICOM Import Widget and importer handle selected patient more consistently and robustly.
- DICOM Exporter writes quantities beyond dose, importer tries to import them correctly.
- DICOM Exporter now always writes ReferencedRTPlanSequence. Importer can now survive without it.
- DVH widget does not throw a warning in updates, handle scenarios correctly / more robustly and missing xlabel axesHandle parameter.
Expand All @@ -36,15 +78,15 @@

### Major Changes and New Features

#### File Structure Overhaul
#### File Structure Overhaul
- Major restructuring of files into organized subfolders, such as matRad (core code), thirdParty, examples, etc., to improve clarity and maintainability.
- Introduction of userdata folder to maintain custom data

#### Scenario Management and robust / 4D optimization
- Introduced comprehensive scenario management (scenario models), including support for 4D phase scenarios and automated scenario model instance tests.
- Multiple robust optimization methods (COWC, OWC, VWWC, expected value)
- Multiple robust optimization methods (COWC, OWC, VWWC, expected value)

#### Object-Oriented DoseEngines & new Monte Carlo interfaces
#### Object-Oriented DoseEngines & new Monte Carlo interfaces
- Transitioned from procedural dose calculation to an object-oriented approach, significantly improving the structure and maintainability of the dose engines.
- Added customizable TOPAS interface for ions (and experimental for photons)
- Workflow of the existing Monte Carlo interfaces has been completely overhauled in the new engine format
Expand Down Expand Up @@ -85,7 +127,7 @@ While we try to keep downwards compatibility (and will provide fixes if breaking
- Unit tests now runnig as GitHub Actions on Matlab R2022b, the latest release, and Octave 6

#### Improved Octave Compatibility:
- Compatibility tested for Octave 6 to 9.
- Compatibility tested for Octave 6 to 9.
- Octave compatibility not always optimal, and IPOPT needs to be compiled individually.

#### Performance Improvements & Code Cleanup
Expand All @@ -105,8 +147,8 @@ While we try to keep downwards compatibility (and will provide fixes if breaking
- **Minor:** Minor releases incldue minor new features (e.g. a new optimizer, objectives, biomodel or dose calculation algorithm). Downwards compatibility (within the major release) is preserved.
- **Patch:** Patch versions only fix bugs and do not introduce new features. Exceptions could be the exposure of new, minimal configuration options to mitigate a bug occuring in special circumstances.

## Version 2.10.1 - Patch release for "Blaise"
Release with small updates, clean-ups and bugfixes
## Version 2.10.1 - Patch release for "Blaise"
Release with small updates, clean-ups and bugfixes
- Bugfix in 3D view due to inconsistent angles in pln & stf
- Bugfix for using incorrect dicom UID's and wrong writing order in the dicom export
- Bugfix for weird colormap issue in plotting
Expand All @@ -129,7 +171,7 @@ The new release contains:
- Integration tests using TravisCI (with Octave, so no GUI functionalities are tested)
- matRad_rc script to configure matRad paths
- matRad version can now be printed with matRad_version, version correctly shown in GUI and when using matRad_rc
- Seven new Matlab example scripts to demonstrate use of matRad
- Seven new Matlab example scripts to demonstrate use of matRad
- Added basic interfaces to the open-source photon/proton MC engines ompMC/MCsquare
- Overhaul of the optimization interface using OOP and integration of the fmincon optimizer from Mathworks' MATLAB Optimization toolbox
- Changes to the cst variable (new script to convert old to new cst structures in tools folder)
Expand All @@ -150,7 +192,7 @@ The new release contains:
- New colormap handling to allow integration of custom colormaps
- Modularization of slice display by dedicated functions in plotting folder including generation of 3D views
- New global configuration object (matRad_cfg <- MatRad_Config.m) to store default values and with logging interface
- Many bug fixes and many new bugs..
- Many bug fixes and many new bugs..

## Version 2.1 "Alan"
First official release of matRad including
Expand Down
Loading
Loading