RTToolbox is a software library to support quantitative analysis of treatment outcome for radiotherapy.
The RTToolbox was designed following object-oriented design (OOD) principles and was implemented in the language C++.
Features include:
- import of radiotherapy data (e.g. dose distributions and structure sets) from DICOM-RT format and other standard image processing formats
- DVH calculation
- Dose statistic calculation
- arithmetic operations on dose distributions
- structure relationship analyses (e.g. fully-contained, partially-contained)
- Calculation of dose comparison indices such as Conformity Index (CI), Homogeneity Index (HI) and Conformation Number (CN)
- Calculation of biological models including TCP, NTCP, EUD and BED
Also, the RTToolbox provides apps e.g. for DVH/Dose Statistic calculation or Dose accumulation that provides a convenient access of RT scenarios without computer-science knowledge.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- CMake, version 3.1 or higher
- Visual Studio 2013
- Visual Studio 2015
- Visual Studio 2017
- GCC 5.4
- GCC 7.3
Other compilers may work as well, but are not tested.
Can be changed with advanced option BUILD_SHARED_LIBS
- boost, version 1.64.0 or higher
- DCMTK 3.6.5 or higher
- ITK, version 5.2 or higher (optional)
- for DoseInterpolation support with ITK transformation or ITK File IO support
- MatchPoint, version 0.12 or higher (optional)
- for DoseInterpolation support with MatchPoint registration objects
ℹ️ To make sure everything runs smoothly, please make sure that all libraries and the RTToolbox are either compiled with /MD
or /MT
flags.
In case you work with Windows, we recommend using the pre-build versions of boost.
If you want to build the library yourself, consider the following:
Build (using the same compiler options as RTToolbox, usually STATIC LINKING
and x64
architecture).
The following components are needed:
filesystem
,system
andprogram_options
- if you plan to build the apps (optional)
ℹ️ eventually, it might be needed to add the CMake variable BOOST_LIBRARYDIR
and set it to the respective library path of boost.
For Windows:
To build Boost open a command prompt, change to your boost source directory and copy following command(s):
Debug:
b2 -j12 --with-filesystem --with-system --with-thread --with-program_options --with-date_time --with-atomic --with-chrono toolset=<your toolset identifier> address-model=64 variant=debug threading=multi link=shared define=_BIND_TO_CURRENT_VCLIBS_VERSION
Release:
b2 -j12 --with-filesystem --with-system --with-thread --with-program_options --with-date_time --with-atomic --with-chrono toolset=<your toolset identifier> address-model=64 variant=release threading=multi link=shared
Set the in the commands above accordingly.
If you don´t require program_options
delete --with-program_options
from the command before executing it.
For Windows:
To compile DCMTK with /MD
flags (standard for all other libs), you need to set DCMTK_COMPILE_WIN32_MULTITHREADED_DLL to "ON".
BUILD_APPS
can be switched off.
Then build DCMTK.
For Linux:
install required dependencies (Ubuntu 18.04 and newer): sudo apt-get install libpng-dev libtiff5-dev libxml2-dev libjpeg8-dev zlib1g-dev libwrap0-dev libssl-dev
install required dependencies (Ubuntu 17.10 and older): sudo apt-get install libpng12-dev libtiff5-dev libxml2-dev libjpeg8-dev zlib1g-dev libwrap0-dev libssl-dev
Enable BUILD_SHARED_LIBS
. BUILD_APPS
can be switched off.
Build ITK with default options.
:warning: ensure that compiler enables C++11 features by setting CMAKE_CXX_STANDARD=11
(default for supported compilers)
Configure MatchPoint. Please disable BUILD_TESTING
before building it.
:warning: ensure that compiler enables C++11 features by setting CMAKE_CXX_STANDARD=11
(default for supported compilers)
- Configure with CMake
- Set
BOOST_INCLUDE_DIR
to the main boost directory. Eventually setBOOST_LIBRARYDIR
to the respective path (e.g.<boost_directory>/lib64-msvc-14.1\
for Visual Studio 2017 and 64-bit) - Select all packages you like to build (Parameters
BUILD_*
; e.g.BUILD_IO_Dicom
).BUILD_IO_Dicom
: Reading and writing of DICOM-RT filesBUILD_IO_HELAX
: Reading of Helax DICOM filesBUILD_IO_ITK
: Generic reading/writing with ITKBUILD_Interpolation
: Dose InterpolationBUILD_InterpolationMatchPointTransformation
: Dose Interpolation with Match Point registration support.BUILD_Masks
: Voxelization supportBUILD_Models
: Calculation of dosimetrical models like TCP, NTCP etc.BUILD_Apps
: To build the RTTB command line apps (five available)BioModelCalc
: calculate the radiobiological effect based on doseDoseAcc
: Do dose accumulationDoseMap
: Do dose mappingDoseTool
: Compute Dose statistics and DVHVoxelizerTool
: Voxelize an RTSTRUCT file
Some modules of RT-Toolbox are mandatory (e.g. RTTBCore
) and build automatically.
ℹ️ enabling BUILD_All_Modules
builds all modules (except Apps and Testing modules).
ℹ️ if you build RTTB with VS dynamic, you must ensure that code that uses RTTB DLLs uses the same STL
Set DCMTK_DIR
to your dcmtk binary file directory and DCMTK_SOURCE_DIR
to your dcmtk source directory.
If you want to build RT-Toolbox with ITK and/or MatchPoint set your ITK_DIR
to your itk binary file directory and/or MatchPoint_DIR
to your binary matchpoint directory.
All directory entries left empty do not require a manual input.
Finally, Generate the compilation files for your environment and built it.
Some examples can be found in ´testing/examples´:
RTBioModelExampleTest
: Computation of Biological model indices (TCP/NTCP) from a given DVHRTDoseStatisticsDicomTest
: Computation of dose statistics (max dose/mean dose/min dose/Dx/Vx) based on dose data for a specified structureRTDVHTest
: Computation of statistics (max value/mean value/min value/Dx/Vx) based on a DVH
Other examples include:
DVHCalculatorTest
(testing/core
): Computation of a DVH from dose and structureVoxelizationValidationTest
(testing/validation
): Computation of a voxelizationITKDoseAccessorConverterTest
: (testing/io/itk
): Saving image RTToolbox image data as an ITK fileDoseIndex tests
: (testing/indices
): Computation of different dose indices (e.g. Conformation Number, Conformal Index, Conformity index)
CTest is used as testing framework. See their documentation for general testing questions.
ℹ️ The used testing library Litmus is build automatically.
RTTB-data
repository is mandatory. Please contact rttb(at)dkfz.de for further information.
Enabling testing is done as follows:
- Enable
BUILD_TESTING
- Configure with CMake
- Enable tests of interest
- Generate CMake configuration
- Build RT-Toolbox
- Run tests (build
RUN_TESTS
project or callctest
in commandline) to ensure that everything is correct.
ℹ️ BUILD_Tester_All
builds all test modules.
Please add a github issue and send a pull request if you want to contribute.
We use the Ubuntu Release versioning scheme. v2017.02 was released in February 2017. We aim at releasing stable versions once a year. For the versions available, see the tags on this repository.
See the list of contributors who participated in this project.
This project is licensed under the BSD License - see the LICENSE file for details
Software Development for Integrated Diagnostics and Therapy (SIDT), German Cancer Research Center (DKFZ), Heidelberg, Germany.
Web: https://www.dkfz-heidelberg.de/en/mic/research/SIDT/sidt_projects.html E-mail: rttb(at)dkfz.de
- Billie Thompson - Template of the readme - PurpleBooth