Skip to content

Commit 3d98409

Browse files
class based biological models (#756)
* Change release candidate version * rename changelog file to make it markdown * Update dose engine base for class based bio model. Add new properties and assignBioParam function for selection of biological model * add functions for looping through subclasses and struct fields. * minor change in findSubclasses * Update particle ParticlePencilBeamAbstract for class based bio model * Update HongPB engine for class based bio model * Update initDoseCalc of Base engine for class based bio model * Update fluence optimization for class based bio model * Deprecate old Biological Model functions and classes * Main Biological Model class * LET based and RBEminMax models * Kernel based models (LEM) * Tabulated RBE models * Added documentation and function description * minor updates in tabulated model for RBEtable path search ande avoid storage of bixel.energies * chage kernel interpolation from radDepth to radDepth(:), used for 2D kernel interpolation for fine samplng engine * Update fine sampling engine to allow for 2D kernels with mutliple subBixels * iterate fix version * move bioModel from propDoseCalc to separate field in pln, adapt engines * adapt fluence optimmization, move bioModel from propDoseCalc * machine check moved to BiologicalModel * Adapt tabulated models and constRBE to latest changes * Adapt matRad_bioModel to new class structure * Iterate patch version and update changelog * Add brachy as radiation modality to model matRad_None * Add example for biological parameter setup * Update to dev branch and minor bug fixes * minor bug fix * Update bio model testing, initial tests * renaming of none model * Test modified validation function for folders input in matRad_findSubclasses * Test modified validation function for folders input in matRad_findSubclasses * change split to strsplit for octave compatibility * Another test for matRad_findSubclasses * Another test for matRad_findSubclasses * Revert changes to validation function for input folders in matRad_findSubclasses * Changes for error handling and octave compatibility * Update validate function for folders input matRad_findSubclasses * Explicit Abstractc defintion for class matRad_LQKernelBasedModel * Changes in input validation matRad_findSubclasses * Chages in validation input for matRad_findSubclasses * test * test * test: more info for debugging * test: more info for debugging * test: more info for debugging * bioParam to bioModel name changing for pln properties * Add quantityOpt and quantityVis as depreccated quantities * quantityVis handling * folder definition and validation in matRad_findSubclasses * Updates of bioParam naming * Update of bioModel naming for matRad.m * Update test for bioModelling, brachy and Topas * Update tests and example for bioModel compatibility * Update test_biologicalModels testing * change isProp to matRad_ispropCompat * some file reorganization and streamlining of the bioModel function to create a model * New Generic base data for protons, including MC simulated kernels and Fluence/Energy deposition spectra * GUI update for bioModels * Renaming Wedenberg model * correct Generic machine file upload * Replace remaining instances of bioParam to bioModel and do some gui fixes * fix filling of bio model in Plan Widget * static functions to obtain available models and create a model from string / struct * adapt bioModel in new stf generators * some model streamlining using constant properties * consistent naming of constant property to check radiation modes * update base data * fixes to differences in how machine names are requested * fix in machine creator string * new focus spot spacing Lookup name * fixed weights for some energies * some improvements for availability checks * fix some issues regarding optimization with unusual model choices (i.e. none for carbon) * fix some issues in model selection * remove unused and unecessary getSubfolders function * remove commented code from dose engine * changed validation of model to check if engine can compute the quantity from the machine * calcBioCheckConsistency has been moved * some adaptations to dose calculation and display and availability functions (cherry picked from commit 8c6d010840801e3c86dd9be9155a325307de5736) * example cleanup to respect new bioModel and multScen nomenclature * revert version change * some type fixes and quantityOpt fixes * some more fixing for passing the tests * Apply constant properties in TabluatedSpectralKernel * some code cleanup and fixes * small update to example script and standard setting for lateral model in dose calculation * update changelog * manage updates of machine / engine / model combination --------- Co-authored-by: Niklas Wahl <[email protected]>
1 parent 7287144 commit 3d98409

File tree

83 files changed

+2776
-1680
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+2776
-1680
lines changed

CHANGELOG.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Changelog
2+
3+
## Current Development Branch
4+
5+
### Major Changes and New Features
6+
7+
#### File Structure Overhaul
8+
- Major restructuring of files into organized subfolders, such as matRad (core code), thirdParty, examples, etc., to improve clarity and maintainability.
9+
- Introduction of userdata folder to maintain custom data
10+
11+
#### Scenario Management and robust / 4D optimization
12+
- Introduced comprehensive scenario management (scenario models), including support for 4D phase scenarios and automated scenario model instance tests.
13+
- Multiple robust optimization methods (COWC, OWC, VWWC, expected value)
14+
15+
#### Object-Oriented DoseEngines & new Monte Carlo interfaces
16+
- Transitioned from procedural dose calculation to an object-oriented approach, significantly improving the structure and maintainability of the dose engines.
17+
- Added customizable TOPAS interface for ions (and experimental for photons)
18+
- Workflow of the existing Monte Carlo interfaces has been completely overhauled in the new engine format
19+
- New handling of coordinate system (separation into world / cube systems with dedicated transformation functions) to ease readability
20+
- Recalculated proton_Generic machine with stored phase space parameterization to facilitate consistent MC / PB calculations.
21+
22+
#### Helium planning
23+
- matRad now contains a Generic helium dataset including LET
24+
- LET-based Helium model
25+
26+
#### Extended biological modeling
27+
- Multiple variable RBE models for protons and helium added with an Object-oriented Datamodel Architecture
28+
- BED optimization
29+
30+
#### Widget-Based GUI
31+
- Replaced Matlab's GUIDE-based approach with a modern widget-based GUI.
32+
- Large parts of the GUI are now Octave Compatible
33+
- Light & Dark Mode
34+
35+
#### DICOM Exporter and Importer
36+
- added a DICOM exporter for CTs, RTStruct, RTPlan (photons, safeguarded) and RTDose
37+
- Refactored the DICOM importer for better use from scripts
38+
39+
#### Possibly (and probably) Breaking Changes to matRad core workflow and functions
40+
While we try to keep downwards compatibility (and will provide fixes if breaking changes are detected), here are some potential/probable dealbreakers
41+
- The coordinate handling of the isocenter changed. The isocenter is now always given in "world" coordinates (i.e., corresponding to the ct plane coordintes). Before, the isocenter resided in its own "cube" coordinate system (voxel index * resolution)
42+
- Some other coordinate system bug-fixes might induce changes when an existing script is rerun
43+
- Default configuration options now stored in MatRad_Config under "defaults" struct. There is a compatibility layer, but this might break under user changes
44+
- Changed matRad_calcCubes to accept a variety of different fields for Monte Carlo, without changing the current usage
45+
- Biological Models are defined in a completely different way now and downwards compatibility is not guaranteed.
46+
- The object oriented scenario models and biological models could procude issues in old scripts if matRad can not infer the models
47+
- While the old dose calculation functions have been kept in a compatibility / deprecation layer, some configuration options might not work as intended
48+
49+
### Other Enhancements, Documentation, and Testing
50+
51+
#### New unit-testing framework
52+
- Introduced Usage of MOxUnit and MOcov for automated unit tests (and the example tests). They are included as submodules.
53+
- Unit tests now runnig as GitHub Actions on Matlab R2022b, the latest release, and Octave 6
54+
55+
#### Improved Octave Compatibility:
56+
- Compatibility tested for Octave 6 to 9.
57+
- Octave compatibility not always optimal, and IPOPT needs to be compiled individually.
58+
59+
#### Performance Improvements & Code Cleanup
60+
- Performance improvements and updates on interpolation
61+
- Performance improvements in optimization
62+
- Code cleanup for consistent use of MatRad_Config's error / warning / logging mechanism.
63+
64+
### Bug Fixes
65+
- *Compilation Fixes:* Resolved issues with ompMC mex file compilation and Octave compatibility warnings.
66+
- Corrected path issues and file handling, especially for temporary directories and submodules.
67+
- Fixed some bugs in optimization objectives & constraints for special input cases
68+
- Fixed issues in DICOM import expecting non-standard tags
69+
70+
### Semantic Versioning
71+
- Starting from major version 3.*, matRad will follow rigorous semantic versioning in a major.minor.patch style
72+
- **Major:** Major releases include major new features (e.g. a new modality) and/or do not guarantee downwards compatibility of the top-level API, which we consider calls to all functions on the top-level of the "matRad" folder. Since a lot of configuration of these functions can be done per `pln.prop*` and other propertie sin `pln`, this might happen more quickly than one might think.
73+
- **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.
74+
- **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.
75+
76+
## Version 2.10.1 - Patch release for "Blaise"
77+
Release with small updates, clean-ups and bugfixes
78+
- Bugfix in 3D view due to inconsistent angles in pln & stf
79+
- Bugfix for using incorrect dicom UID's and wrong writing order in the dicom export
80+
- Bugfix for weird colormap issue in plotting
81+
- New handling of environment checking with matRad_cfg (old function is still working)
82+
- Code documentation update
83+
- Remove hardcoded penumbra width in photon dose calculation -> can now be stored in machine file (machine.data.penumbraFWHMatIso)
84+
- Update to ompMC to use virtual Gaussian source (uses measured penumbra value) incld precompiled mex files
85+
- Remove useless global statements before matRad_cfg
86+
- Add blue/white/red difference map to colormaps (in the correct way)
87+
- Updated TravisCI testing (Sped up by using pre-compiled mex interfaces and including testing with Matlab (on Ubuntu), Azure DevOps as fallback
88+
- Github gimmicks added: Stalebot, Issue & PR Templates
89+
- Code optimization for jacobian evaluation (x10-100 speedup)
90+
- New option pln.propDoseCalc.useGivenEqDensityCube (default false) to directly use the literal values from ct.cube and omit HU to WEQ conversion from ct.cubeHU
91+
- New option pln.propDoseCalc.ignoreOutsideDensities (default true) to disable/enable inclusion of WEPL outside the patient contour in ray-tracing
92+
93+
## Version 2.10.0 - "Blaise"
94+
Second Release of matRad. Note that despite major incompatibilities with "Alan" we still chose major version number "2" to have a consistent versioning in the future.
95+
We want to thank all new contributing authors (see AUTHORS.txt)
96+
The new release contains:
97+
- Integration tests using TravisCI (with Octave, so no GUI functionalities are tested)
98+
- matRad_rc script to configure matRad paths
99+
- matRad version can now be printed with matRad_version, version correctly shown in GUI and when using matRad_rc
100+
- Seven new Matlab example scripts to demonstrate use of matRad
101+
- Added basic interfaces to the open-source photon/proton MC engines ompMC/MCsquare
102+
- Overhaul of the optimization interface using OOP and integration of the fmincon optimizer from Mathworks' MATLAB Optimization toolbox
103+
- Changes to the cst variable (new script to convert old to new cst structures in tools folder)
104+
- Separation of ct/optimization/dose calculation grids to allow different resolutions
105+
- The graphical user interface can now be started in developer mode (more error information) and a simplified educational mode (some functionalities disabled, less buttons)
106+
- Base data and default phantoms now organized in subfolders
107+
- DICOM export added (only script, dicomImport folder renamed to dicom)
108+
- DICOM import GUI
109+
- Binary import and export functionalities (script & GUI)
110+
- Overhauled the standalone project file
111+
- Standalone toolbox file for matRad
112+
- Dose calculation now uses generalized initialization scripts
113+
- matRad_compareDose tool to compare two dose distributions with difference and gamma analysis
114+
- More tools for visualization and data analysis in the tools folder
115+
- Possibility to define range shifter
116+
- Quality indicator & DVH display wrapper scripts
117+
- Wrapper to allow 3D conformal planning using dij collapsing
118+
- New colormap handling to allow integration of custom colormaps
119+
- Modularization of slice display by dedicated functions in plotting folder including generation of 3D views
120+
- New global configuration object (matRad_cfg <- MatRad_Config.m) to store default values and with logging interface
121+
- Many bug fixes and many new bugs..
122+
123+
## Version 2.1 "Alan"
124+
First official release of matRad including
125+
- New optimizer IPOPT for constrained optimization
126+
- Validated ray tracing
127+
- Validated pencil beam particle dose calculation
128+
- Validated singular value decomposed pencil beam photon dose calculation
129+
- DICOM import including dose and particle pencil beam scanning plan objects
130+
- matRad standalone version
131+
- Improved GUI workflow
132+
- Many bug fixes and many new bugs...

ChangeLog.txt

Lines changed: 0 additions & 94 deletions
This file was deleted.

0 commit comments

Comments
 (0)