|
| 1 | +ITKModuleTemplate |
| 2 | +================= |
| 3 | + |
| 4 | +[](https://dev.azure.com/InsightSoftwareConsortium/ITKModules/_build/latest?definitionId=19&branchName=master) |
| 5 | + |
| 6 | +Overview |
| 7 | +-------- |
| 8 | + |
| 9 | +This is a module for the [Insight Toolkit (ITK)](http://itk.org) for |
| 10 | +segmentation and registration. It is designed to work with the ITK |
| 11 | +modular system. |
| 12 | + |
| 13 | +This module is a template to be used as a starting point for a new ITK |
| 14 | +module. |
| 15 | + |
| 16 | +Getting Started |
| 17 | +--------------- |
| 18 | + |
| 19 | +The following will get an external module started in a new repository: |
| 20 | + |
| 21 | + python -m pip install cookiecutter |
| 22 | + python -m cookiecutter gh:InsightSoftwareConsortium/ITKModuleTemplate |
| 23 | + # Fill in the information requested at the prompts |
| 24 | + |
| 25 | +Reasonable defaults will be provided for all of the parameters. The |
| 26 | +parameters are: |
| 27 | + |
| 28 | +<dl> |
| 29 | +<dt>full_name</dt> |
| 30 | +<dd>Your full name.</dd> |
| 31 | + |
| 32 | +<dt>email</dt> |
| 33 | +<dd>Your email.</dd> |
| 34 | + |
| 35 | +<dt>project_name</dt> |
| 36 | +<dd>This is a name for the project, which is <i>ITK</i> followed by the module |
| 37 | +name, by convention. Examples include <i>ITKIsotropicWavelets</i> or |
| 38 | +<i>ITKBoneMorphometry</i>.<dd> |
| 39 | + |
| 40 | +<dt>module_name</dt> |
| 41 | +<dd>This is the name of the module. Since this is an external module, it |
| 42 | +does not start with the <i>ITK</i> prefix. It is in CamelCase, by convention. |
| 43 | +Examples include <i>IsotropicWavelets</i> and <i>BoneMorphometry</i>.<dd> |
| 44 | + |
| 45 | +<dt>filter_name</dt> |
| 46 | +<dd>The skeleton of an <code>itk::ImageToImageFilter</code> will be created by default. |
| 47 | +Optionally specify this value, if you will be adding an |
| 48 | +<code>itk::ImageToImageFilter</code> to your module.</dt> |
| 49 | + |
| 50 | +<dt>python_package_name</dt> |
| 51 | +<dd>This is the name of the Python package that will be created from the |
| 52 | +module. By convention, this is <i>itk-<project_name in lower case></i> |
| 53 | +For example, <i>itk-isotropicwavelets</i> or <i>itk-bonemorphometry</i>.</dd> |
| 54 | + |
| 55 | +<dt>download_url</dt> |
| 56 | +<dd>This is the download url added to the Python package metadata. This can |
| 57 | +be the GitHub repository URL.</dd> |
| 58 | + |
| 59 | +<dt>project_short_description</dt> |
| 60 | +<dd>A short description to use in the project README, module Doxygen |
| 61 | +documentation, and Python package documentation.</dd> |
| 62 | + |
| 63 | +<dt>project_long_description</dt> |
| 64 | +<dd>A long description to use in the project README, module Doxygen |
| 65 | +documentation, and Python package documentation.</dd> |
| 66 | +</dl> |
| 67 | + |
| 68 | +The output of the cookiecutter is a buildable ITK external module with |
| 69 | +example classes. Remove or replace the classes with your new classes. |
| 70 | +Push your new module to GitHub, and enable builds on |
| 71 | +[CircleCI](https://circleci.com/), [TravisCI](https://travis-ci.org/), |
| 72 | +and [AppVeyor](https://www.appveyor.com/). |
| 73 | + |
| 74 | +Documentation on [how to populate the |
| 75 | +module](https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1ch9.html#x50-1430009) |
| 76 | +can be found in the [ITK Software |
| 77 | +Guide](https://itk.org/ITKSoftwareGuide/html/). |
| 78 | + |
| 79 | +To improve the discoverability of your module on GitHub, first push the |
| 80 | +associated repository, then add |
| 81 | +[itk-module](https://github.com/topics/itk-module) to the project's |
| 82 | +[GitHub Topics](https://help.github.com/articles/about-topics/) . |
| 83 | + |
| 84 | +Remote Module |
| 85 | +------------- |
| 86 | + |
| 87 | +After an [Insight Journal](http://www.insight-journal.org/) article has |
| 88 | +been submitted, the module can be included in ITK as a [remote |
| 89 | +module](https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1ch9.html#x55-1640009.7). |
| 90 | +Add a file in "ITK/Modules/Remote" called "YourModule.remote.cmake", for |
| 91 | +this module it would be "ExternalExample.remote.cmake" with the |
| 92 | +followlowing contents: |
| 93 | + |
| 94 | + itk_fetch_module(MyModule |
| 95 | + "A description of the a module." |
| 96 | + GIT_REPOSITORY http://github.com/myuser/ITKMyModule.git |
| 97 | + GIT_TAG abcdef012345 |
| 98 | + ) |
| 99 | + |
| 100 | +Python Packages |
| 101 | +--------------- |
| 102 | + |
| 103 | +Continuous integration service configurations are included to build |
| 104 | +Python packages for Linux, macOS, and Windows. These packages can be |
| 105 | +[downloaded](https://itkpythonpackage.readthedocs.io/en/latest/Build_ITK_Module_Python_packages.html#github-automated-ci-package-builds) |
| 106 | +and [uploaded to the Python Package Index |
| 107 | +(PyPI)](https://itkpythonpackage.readthedocs.io/en/latest/Build_ITK_Module_Python_packages.html#upload-the-packages-to-pypi). |
| 108 | + |
| 109 | +ITKv4 Branch |
| 110 | +------------ |
| 111 | + |
| 112 | +In the transition to the major release of ITKv5 your module might want |
| 113 | +to be compatible with both versions: ITKv4 and ITKv5. In order to do |
| 114 | +that, keep the master branch for development with ITKv5, and create |
| 115 | +another branch, named `ITKv4`, or `release`, that is compatible with the |
| 116 | +version 4.13 of ITK. For examples and updated information on how to do |
| 117 | +this: please [check the discourse |
| 118 | +conversation](https://discourse.itk.org/t/itk-external-module-github-builds-for-4-x-and-5-x/900). |
| 119 | + |
| 120 | +License |
| 121 | +------- |
| 122 | + |
| 123 | +This software is distributed under the Apache 2.0 license. Please see |
| 124 | +the *LICENSE* file for details. |
| 125 | + |
| 126 | +Authors |
| 127 | +------- |
| 128 | + |
| 129 | +- Bradley Lowekamp |
| 130 | +- Matt McCormick |
| 131 | +- Jean-Baptiste VIMORT |
0 commit comments