-
Notifications
You must be signed in to change notification settings - Fork 275
Create SlicerBatch.s4ext #1505
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create SlicerBatch.s4ext #1505
Conversation
|
What does this extension do? It would be important to provide at least some minimal documentation. |
|
I agree with Andras. I guess there was some urgency aspect to justify the merge, but I don't know what it was! |
|
SlicerBatch is also a very generic name.
…On Jan 12, 2018 3:58 PM, "Andras Lasso" ***@***.***> wrote:
What does this extension do? It would be important to provide at least
some minimal documentation.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#1505 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AANXo0asMXtxysir83uhXOYMblpscSIYks5tJ8RVgaJpZM4RcxdO>
.
|
|
@pieper helped me to get this module registered as an extension. @lassoan, the purpose of the module is to streamline loading images and labelmaps (and saving new/updates to labelmaps) for a batch of cases. That way the reader only has to worry about making/reviewing the segmentations and not about the loading and saving process. I built this extension first as a sort of hack because I had to segment a lot of cases and hated the time I needed to load and save everything. Steve then asked me if I was also interested in sharing this with the community. |
|
Any suggestions (including maybe a less generic name) are welcome! |
|
I added a README with some instructions in the extension repository, but want to wait with adding the wikipages to leave some time to optionally change the name. |
|
There wasn't any particular urgency, but there was also no obvious reason to delay. It's a simple scripted extension and the sooner @JoostJM can debug and refine it in the context of the nightly builds the better for everyone and no real downsides. |
|
@jcfr, how about "SlicerCaseIterator"? |
|
I like the CaseIterator name. Note that typically we start the extension name with Slicer (to make it obvious that the repository contains a Slicer extension) but the Slicer prefix is redundant when you display the extension in Slicer. So, repository name is "SlicerCaseIterator" and extension name is "CaseIterator". |
|
@lassoan, Thanks! I will update the name as you suggested. I discussed where to add/ not to add the "Slicer" prefix, and decided that for "SlicerBatch" it wouldn't really cover the load any more (and therefore stuck to "SlicerBatch"). With the name change, I will drop the prefix in the extension name though. |
|
The README.md file is really helpful! Now I understand what the extension is for and I really like the concept. A few comments:
|
Done.
Yes, I just finished on the code to also work with the tablenode etc. There is already a screenshot in the repository I believe (although it doesn't show a table loaded, will update this). Tomorrow a fully functional version should be available in the extension manager. |
|
FYI I renamed s4ext and updated the repository pointer: 035dcf3 |
|
I still need to add the wiki pages, but for that I need an account to the slicer wiki (just requested it). Once I have that, I'll add the documentation to the wiki pages as well... |
|
@lassoan, here is the screenshot |
|
Looks nice! |
|
@lassoan, Haha they are there, but are not visible when the iterator is not loaded. Good tip about the shortcuts though, I'll add that. |
|
Now that I have a better idea about this module - we have a conceptually similar module - mpReview:
Just wanted to mention it. I don't think one will replace another, but it's interesting to compare how similar task was addressed in different contexts by different developers. |
|
If I'm correct, SlicerCaseIterator should be built and added to the extension manager. However, I can find it (searching in latest nightly buid). Is there something I have to do to make the extension available? |
|
Looks like it did not build right. You can look on cdash (go to http://slicer.cdash.org/index.php?project=Slicer4 and turn on All nightly extension results and search for iterator). But I'm not sure how to interpret the "could not load cache" result: |
|
@pieper Thanks, although I don't know either. @jcfr, do you have an idea why the build is failing? Build output: |
|
Inner-build directory name was incorrectly set to "inner-build" in the .s4ext file. I've fixed it in master branch. I would recommend to submit the extension to the 4.8 branch of the ExtensionsIndex, too. It may take a while until nightly Slicer version will be fully functional. |
Add the slicer case iterator extension description to the 4.8 branch. Original PR integrating this extension into the nightly build can be found at Slicer#1505
Add the slicer case iterator extension description to the 4.8 branch. Original PR integrating this extension into the nightly build can be found at #1505
|
For this extension we manually made the s4ext file because there was no slicer build available, so that would explain why the field wasn't correct. Do we have a process for people who want to submit pure python extensions that doesn't require having a Slicer build just so they can make a s4ext file automatically? |
Is it an idea to add this to the extension wizard in slicer? |
I think that would be the easiest place, yes. For a scripted extension there shouldn't be any need for a build tree. |
|
At the same time, we should also revisit content and format of the file. I've added this idea to the relevant lab page - https://www.slicer.org/wiki/Documentation/Labs/ExtensionsMetadata. |
|
Agreed with all aspect. |
|
If that new feature is added to ExtensionWizard, I think it would be important to make sure that it uses the same code that generates s4ext when running cmake. |
|
Worth noting that this use case is already supported. The extension wizard is available in the installer version of Slicer and already support creation of the description file and contribution to the extension index. On linux, it can be found in If more people use it, we should be able to fix the remaining issues. |
Agreed. We put care to ensure this is the case. The following file is packaged in the installer: and also correspond to the use used by both the wizard and the CMake code. |
|
Almost forgot to mention the infamous poll that attracted attention of the total of 6 developers! :-D https://discourse.slicer.org/t/poll-how-do-you-re-generate-s4ext-file-for-slicer-extensionsindex/381 |
|
@fedorov Ironically, the current discussion was suggesting improving the extension wizard .. which already support the requested feature. I think there is no need to change anything (especially considering the resources at hand), there are different paths for different people. Copying a existing description file and adapting it is perfectly fine. The dashboard did its work and the issue got fix a day later by a developer different from the one who implemented the system. (thanks @lassoan ) 😄 |
|
it's true that except for few confusing parts the whole process was very smooth and easy. Thanks especially to everyone for helping out! |
If something is not available on the GUI then it's very hard to discover or use it correctly. Does ExtensionWizard use CMake for generating the s4ext file? CMake is not necessary for anything else when developing a Python-based extension, so it would be nice to be able to work without it. Most of the s4ext file content is ignored by the extension build system (only repository and build directory information is used). So, the file could be very easily written in a text editor. We don't really need complex generator code. Actually used content of a .s4ext file: I see two good options to move things forward:
I think Option B is much nicer and not too much work. I'm comfortable with "doing nothing for now" option, too, but we are in good position for implementing Option B, as we do a lot of breaking changes in Slicer 5 infrastructure anyway. |


TODO: