Giter VIP home page Giter VIP logo

rttb's Introduction

RTToolbox

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.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

Build system

  • CMake, version 3.1 or higher

Compiler

  • 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.

Linking Static/Dynamic library support

Can be changed with advanced option BUILD_SHARED_LIBS

⚠️ building RTToolbox as dynamic library under Windows and as static library under Linux is an experimental feature.

Third party libraries

  • 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.

Boost

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 and
  • program_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.

DCMTK

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.

ITK

Build ITK with default options. :warning: ensure that compiler enables C++11 features by setting CMAKE_CXX_STANDARD=11 (default for supported compilers)

⚠️ Only use one ITK version consistently throughout all libraries and RTToolbox! Otherwise, linker errors will occur.

MatchPoint

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)

⚠️ Only use one ITK version consistently throughout all libraries and RTToolbox! Otherwise, linker errors will occur.

Building RT-Toolbox

  • Configure with CMake
  • Set BOOST_INCLUDE_DIR to the main boost directory. Eventually set BOOST_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 files
    • BUILD_IO_HELAX: Reading of Helax DICOM files
    • BUILD_IO_ITK: Generic reading/writing with ITK
    • BUILD_Interpolation: Dose Interpolation
    • BUILD_InterpolationMatchPointTransformation: Dose Interpolation with Match Point registration support.
    • BUILD_Masks: Voxelization support
    • BUILD_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 dose
      • DoseAcc: Do dose accumulation
      • DoseMap: Do dose mapping
      • DoseTool: Compute Dose statistics and DVH
      • VoxelizerTool: 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.

Examples

Some examples can be found in ´testing/examples´:

  • RTBioModelExampleTest: Computation of Biological model indices (TCP/NTCP) from a given DVH
  • RTDoseStatisticsDicomTest: Computation of dose statistics (max dose/mean dose/min dose/Dx/Vx) based on dose data for a specified structure
  • RTDVHTest: 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 structure
  • VoxelizationValidationTest (testing/validation): Computation of a voxelization
  • ITKDoseAccessorConverterTest: (testing/io/itk): Saving image RTToolbox image data as an ITK file
  • DoseIndex tests: (testing/indices): Computation of different dose indices (e.g. Conformation Number, Conformal Index, Conformity index)

Running the tests

CTest is used as testing framework. See their documentation for general testing questions.

ℹ️ The used testing library Litmus is build automatically.

⚠️ currently, you have access to testing data only with ssh. That means that a phabricator account and access to 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 call ctest in commandline) to ensure that everything is correct.

ℹ️ BUILD_Tester_All builds all test modules.

Contributing

Please add a github issue and send a pull request if you want to contribute.

Versioning

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.

Authors

See the list of contributors who participated in this project.

License

This project is licensed under the BSD License - see the LICENSE file for details

Contact

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

Acknowledgments

  • Billie Thompson - Template of the readme - PurpleBooth

rttb's People

Contributors

cmh-germany avatar gordi avatar herrniffler avatar rfloca avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.