Git Product home page Git Product logo

ctk's Introduction

Common Toolkit

CircleCI Status License

The Common Toolkit (CTK) is a community-driven effort, focused on providing support code for medical image analysis, surgical navigation, and related projects.

Overview

CTK covers topics not addressed by existing toolkits, catering to the mutual interests and needs of the CTK community. The current scope of CTK efforts includes the following topics: DICOM, DICOM Application Hosting, Widgets, Plugin Framework and Command Line Interfaces.

Getting Started

To work with CTK, you need to have a C++ compiler, Qt libraries, and CMake installed.

Configure

Configure the project using CMake by setting the following options:

  • CTK_QT_VERSION: 5
  • Qt5_DIR: C:\Qt\5.15.2\msvc2019_64\lib\cmake\Qt5 (or a similar path, depending on your operating system)

Notes

  • To install the required development environment easily, refer to the "Prerequisites" section of the 3D Slicer build instructions.

  • If you set CTK_LIB_Visualization/VTK/Widgets to ON, make sure to configure VTK by enabling the following modules:

    • VTK_MODULE_ENABLE_VTK_ChartsCore: YES (to enable VTK charts)
    • VTK_MODULE_ENABLE_VTK_GUISupportQt: YES (to enable VTK widgets)
    • VTK_MODULE_ENABLE_VTK_ViewsQt: YES (to enable VTK view widgets)
    • For more information, see the VTK Build Instructions and VTK Modules documentation.
  • Make sure your built toolchain version is compatible with the chosen Qt version. For example if trying to build with Qt-5.12 and Microsoft Visual Studio 2019, then build will fail with the error error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl QLinkedListData::QLinkedListData(void)" while trying to build with Qt 5.12 and Microsoft Visual Studio 2019, the solution is to either change the toolset version to an earlier one (e.g., Visual Studio 2017) or upgrade Qt (e.g., use Qt 5.15 with Visual Studio 2019).

Topics

DICOM

CTK provides high-level classes that support query and retrieve operations from PACS and local databases. It includes Qt widgets for easily setting up a server connection, sending queries, and viewing the results. The underlying toolkit used is DCMTK.

To learn more, refer to the Overview of DICOM functionality in CTK.

DICOM Application Hosting

CTK aims to create a C++ reference implementation of the DICOM Part 19 Application Hosting specifications. It provides an infrastructure to create both hosts and hosted applications. Although the project is still in alpha status, it can be useful for conformance testing and initial experimentation.

To learn more, see the DICOM Application Hosting documentation.

Widgets

CTK offers a collection of Qt Widgets for use in biomedical imaging applications.

To explore the available widgets, visit the Gallery and the associated Widgets wiki page.

Plugin Framework

CTK provides a dynamic component system for C++, modeled after the OSGi specifications. It enables a development model where applications are dynamically composed of many different reusable components, following a service-oriented approach.

To get started with the Plugin Framework, refer to the Plugin Framework documentation.

Command Line Interfaces

CTK supports the usage of algorithms written as self-contained executables in multiple programming languages. It includes a command line interface (CLI) module that simplifies the integration of command line tools into CTK-based applications. The CLI module provides a flexible and extensible framework for defining, executing, and configuring command line interfaces for algorithms.

To learn more about the CLI module, see the Command Line Interfaces documentation.

Supported Qt versions

CTK supports the following versions of Qt:

  • Qt 5
    • CMake options:
      • CTK_QT_VERSION set to 5
      • Qt5_DIR set to C:\Qt\5.15.2\msvc2019_64\lib\cmake\Qt5 (or a similar path, depending on your operating system)
    • Requirements
      • C++11
      • VTK 9 or newer
      • PythonQt patched-9 branch

Unsupported:

  • Qt 4: The last CTK version to support Qt 4, C++98, VTK 8 and ITK v4.13.3 is CTK 2023.07.13.

Supported Python versions

CTK supports the following versions of Python:

  • Python 3

Unsupported:

  • Python 2.7: The last CTK version to support Python 2.7 is CTK 2023.07.13.

Dependency Management

CTK simplifies the process of managing dependencies by automatically handling the download, configuration, and building of required dependencies (except Qt) as part of the build process. This ensures that the necessary dependencies are readily available for building CTK-based applications without manual intervention.

To further support customization of CTK dependencies, you have the option to configure CTK by specifying options for each dependency. These options can include <Package>_DIR or CTK_USE_SYSTEM_<Package>, where <Package> represents the name of the respective dependency. For more details on the available options for each dependency, you can refer to the corresponding CTK/CMakeExternals/<Package>.cmake file.

In achieving this automatic dependency management, CTK internally integrates the Artichoke CMake module, which enhances the built-in ExternalProject CMake module.

By utilizing this integrated approach, CTK facilitates the management and customization of dependencies, providing flexibility and ease of use for developers working with CTK-based applications.

License

CTK code is licensed under Apache 2.0. This means that users of CTK are allowed to use the code for academic, commercial, or other purposes without paying license fees or being restricted in their ability to redistribute their code or keep it private.

ctk's People

Contributors

jcfr avatar finetjul avatar saschazelzer avatar pieper avatar nolden avatar lassoan avatar mattclarkson avatar nherlambang avatar espakm avatar msmolens avatar benoitbleuze avatar trabs avatar benjaminlong avatar mehrtash avatar blezek avatar jamesobutler avatar cpinter avatar ivmartel avatar mayeulchassagnard avatar kislinsk avatar aylward avatar nicolasrannou avatar cjgoch avatar vovythevov avatar mwoehlke-kitware avatar phcerdan avatar lygstate avatar sunderlandkyl avatar mhdiop avatar miluba154 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.