Create nnInteractiveSlicer.json
Adds nnInteractive, a deep learning-based framework for interactive segmentation of 3D images, to Slicer.
New extension
Tier 1
Any extension that is listed in the Extensions Catalog must fulfill these requirements.
- [ ] Repository name is Slicer+ExtensionName (except if the repository that hosts the extension can be also used without Slicer)
- [x] Repository is associated with
3d-slicer-extensionGitHub topic so that it is listed here. To edit topics, click the settings icon in the right side of "About" section header and enter3d-slicer-extensionin "Topics" and click "Save changes". To learn more about topics, read https://help.github.com/en/articles/about-topics - [x] Extension description summarizes in 1-2 sentences what the extension is usable (should be understandable for non-experts)
- [x] Any known related patents must be mentioned in the extension description.
- [x] LICENSE.txt is present in the repository root and the name of the license is mentioned in extension homepage. We suggest you use a permissive license that includes patent and contribution clauses. This will help protect developers and ensure the code remains freely available. MIT (https://choosealicense.com/licenses/mit/) or Apache (https://choosealicense.com/licenses/apache-2.0/) license is recommended. Read here to learn more about licenses. If source code license is more restrictive for users than MIT, BSD, Apache, or 3D Slicer license then describe the reason for the license choice and include the name of the used license in the extension description.
- [x] Extension URL and revision (scmurl, scmrevision) is correct, consider using a branch name (main, release, ...) instead of a specific git hash to avoid re-submitting pull request whenever the extension is updated
- [x] Extension icon URL is correct (do not use the icon's webpage but the raw data download URL that you get from the download button - it should look something like this: https://raw.githubusercontent.com/user/repo/main/SomeIcon.png)
- [x] Screenshot URLs (screenshoturls) are correct, contains at least one
- [x] Content of submitted json file is consistent with the top-level CMakeLists.txt file in the repository (dependencies, etc. are the same)
- Homepage URL points to valid webpage containing the following:
- [x] Extension name
- [x] Short description: 1-2 sentences, which summarizes what the extension is usable for
- [x] At least one nice, informative image, that illustrates what the extension can do. It may be a screenshot.
- [x] Description of contained modules: at one sentence for each module
- [x] Publication: link to publication and/or to PubMed reference (if available)
- Hide unused github features (such as Wiki, Projects, and Discussions, Releases, Packages) in the repository to reduce noise/irrelevant information:
- [x] Click
Settingsand in repository settings uncheckWiki,Projects, andDiscussions(if they are currently not used). - [x] Click the settings icon next to
Aboutin the top-right corner of the repository main page and uncheckReleasesandPackages(if they are currently not used)
- [x] Click
- The extension is safe:
- [x] Does not include or download binaries from unreliable sources
- [x] Does not send any information anywhere without user consent (explicit opt-in is required)
Tier 3
Community-supported extensions.
- [x] Extension has a reasonable name (not too general, not too narrow, suggests what the extension is for)
- [x] Documentation, tutorial, and test data are provided for most modules. A tutorial provides step-by-step description of at least the most typical use case, include a few screenshots. Any sample data sets that is used in tutorials must be registered with the Sample Data module to provide easy access to the user.
- [x] Follows programming and user interface conventions of 3D Slicer (e.g., GUI and logic are separated, usage of popups is minimized, no unnecessary custom GUI styling, etc.)
- [x] The extension can be successfully built and packaged on all supported platforms (Windows, macOS, Linux)
- [x] Maintainers respond to issues and pull request submitted to the extension's repository.
- [x] Maintainers respond to questions directly addressed to him/her via @mention on the Slicer Forum.
- [x] Permissive license is used for the main functions of the extension (recommended Apache or MIT). The extension can provide additional functionality in optional components that are distributed with non-permissive license, but the user has to explicitly approve those before using them (e.g., a pop-up can be displayed that explains the licensing terms and the user has to acknowledge them to proceed).
- All requirements of tiers < 3.
Tier 5
Critically important extensions, supported by Slicer core developers. New Slicer Stable Release is released only if all Tier 5 extension packages are successfully created on all supported platforms.
- [ ] Slicer core developers accept the responsibility of fixing any issues caused by Slicer core changes; at least one Slicer core developer (anyone who has commit right to Slicer core) must be granted commit right to the extension's repository.
- [ ] Automated tests for all critical features.
- [ ] Maintainers respond to questions related to the extension on the Slicer Forum.
- All requirements of tiers < 5.
- [ ] Repository name is Slicer+ExtensionName (except if the repository that hosts the extension can be also used without Slicer)
The argument for why not to do this: In SlicernnInteractive there's a the "clash" of lower case letters between Slicer and nn, which doesn't look nice to me and also makes it a bit hard to read. An alternative would be to call it something like SlicerNnInteractive or SlicerNNInteractive, but this leads to an inconsistency with how nnInteractive is originally spelled. Anyway, it's no dealbreaker for me to go with one of these two alternatives, but if others agree, I'd prefer to keep the name as it is.
To be consistent with naming of other extensions, such as SlicerNNUnet, the extension name would be SlicerNNInteractive, but there are exceptions to the naming conventions for various reasons, so nnInteractive-Slicer may be acceptable as well. Let's hear from others, too.
@jcfr @pieper what do you think? Which repository name would you vote for: SlicerNNInteractive or nnInteractive-Slicer?
SlicerNNInteractive seems good to go along with SlicerNNUnet which I assume will be an extension dependency as part of consistently installing nnUNet for various Slicer extensions that use it along with PyTorch further downstream. Otherwise SlicerNNUnet could be renamed something like nnUNet-Slicer to go along with nnInteractive-Slicer to maintain the lowercase n styling of the underlying package.
Whatever it ends up being called, we need this merged - it's too cool! 🚀
SlicerNNInteractive seems good to go along with SlicerNNUnet [...]
SlicerNNInteractive ✅
@coendevente it seems that we are leaning towards using SlicerNNInteractive as repository name. If you agree then it would be great if you could update it. I know it is a hassle, but it is still easier to do it now than later when we start advertising it and people have started to use it (and in the long term, sticking to consistent naming conventions pays off). Thank you!
Okay, no problem. Thanks for everyone's input. It makes sense indeed to be consistent with other Slicer extensions. I'll update the name in the repo and the PR here.
After fixing up the extension description .json file name yesterday, the extension is now available in the latest Slicer Preview Release!
I've submitted https://github.com/coendevente/SlicerNNInteractive/pull/34 to make the capitalization of the extension name consistent and update installation instructions. If this gets merged then we I'll submit the extension to the Slicer Stable Release, too.
Awesome, thanks! I've merged the PR.
Thank you. I've updated the extension name in the main branch and submitted it to the Slicer Stable Release as well.
From tomorrow, the extension should be available both in the latest Slicer Stable Release (5.8.1) and the latest Slicer Preview Release.
We need a nice announcement on the Slicer Forum early next week. Would you like to write it or you prefer if I do it (or work on it together)?
From tomorrow, the extension should be available both in the latest Slicer Stable Release (5.8.1) and the latest Slicer Preview Release.
Great! I don't see it yet in my Slicer installation. I'm on version 5.8.1. Will it become available later today?
We need a nice announcement on the Slicer Forum early next week. Would you like to write it or you prefer if I do it (or work on it together)?
That'd be really nice. Feel free to just write it up and post it. But if you need any input from me, I'd also be happy to work on it together.
You can see the build status on the dashboard: https://slicer.cdash.org/index.php?project=SlicerStable
The package has just been created for Linux and Windows (15 mintues ago). On macOS you may need to wait a bit more, maybe an hour.
The extensions manager check for updates and new extensions about once a day, so you may need to click "Check for updates" to make the extension show up. It showed up for me now on Windows.
FYI, I haven't posted anything about the extension yet because I'm waiting for my questions about license to be answered.