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