Skip to content

PySERA Extension#2290

Merged
lassoan merged 3 commits intoSlicer:mainfrom
radiuma-com:main
Feb 1, 2026
Merged

PySERA Extension#2290
lassoan merged 3 commits intoSlicer:mainfrom
radiuma-com:main

Conversation

@yasisama00
Copy link
Copy Markdown
Contributor

PySERA – Radiomics Extension for 3D Slicer

This pull request adds a new extension PySERA for advanced radiomics feature extraction directly inside 3D Slicer.

PySERA integrates the PySERA radiomics extraction library into the 3D Slicer ecosystem, enabling reproducible, configurable, and extensible radiomics analysis workflows for medical imaging research and clinical applications.


Key Features

  • Radiomics Feature Extraction
    Enables extraction of standardized radiomics features from medical images and corresponding segmentations within 3D Slicer.

  • Configurable Parameter Sets
    Supports YAML and JSON-based configuration files to precisely control feature extraction parameters and ensure reproducibility across studies.

  • Seamless 3D Slicer Integration
    Provides a scripted GUI module for interactive use as well as a CLI module suitable for batch processing and automated pipelines.

  • Extensible Python Architecture
    Designed with a modular Python-based architecture, allowing researchers and developers to easily extend or customize radiomics workflows.


Source Code

The source code for this extension is hosted at:
https://github.com/radiuma-com/SlicerPySERA

Tier 1

Any extension that is listed in the Extensions Catalog must fulfill these requirements.

  • Extension has a reasonable name (not too general, not too narrow, suggests what the extension is for). The extension name should not start with Slicer (unless it explicitly provides a bridge between Slicer and a tool or library), because it would make it more difficult to find extensions if the name of many started with the same word.
  • Repository name is Slicer+ExtensionName (except if the repository that hosts the extension can be also used without Slicer)
  • Repository is associated with 3d-slicer-extension GitHub topic so that it is listed here. To edit topics, click the settings icon in the right side of "About" section header and enter 3d-slicer-extension in "Topics" and click "Save changes". To learn more about topics, read https://help.github.com/en/articles/about-topics
  • Extension description summarizes in 1-2 sentences what the extension is usable (should be understandable for non-experts)
  • Any known related patents must be mentioned in the extension description.
  • 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.
  • 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
  • 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://github.com/user/repo/main/SomeIcon.png)
  • Screenshot URLs (screenshoturls) are correct, contains at least one
  • 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:
    • Extension name
    • Short description: 1-2 sentences, which summarizes what the extension is usable for
    • At least one nice, informative image, that illustrates what the extension can do. It may be a screenshot.
    • Description of contained modules: at one sentence for each module
    • 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:
    • Click Settings and in repository settings uncheck Wiki, Projects, and Discussions (if they are currently not used).
    • Click the settings icon next to About in the top-right corner of the repository main page and uncheck Releases and Packages (if they are currently not used)
  • The extension is safe:
    • Does not include or download binaries from unreliable sources
    • Does not send any information anywhere without user consent (explicit opt-in is required)

Tier 3

Community-supported extensions.

  • 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.
  • 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.)
  • The extension can be successfully built and packaged on all supported platforms (Windows, macOS, Linux)
  • Maintainers respond to issues and pull request submitted to the extension's repository.
  • Maintainers respond to questions directly addressed to him/her via @mention on the Slicer Forum.
  • 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.

@MohammadRSalmanpour
Copy link
Copy Markdown

Hi there,
What should I do next to release the extension?

@lassoan
Copy link
Copy Markdown
Contributor

lassoan commented Jan 8, 2026

Thanks for your patience with the review process.

The repository structure does not follow the standard template and it fails with this CMake configuration error:

CMake Error at CMakeLists.txt:17 (install):
  install DIRECTORY given no DESTINATION!

I would recommend to update the repository to follow the standard structure. Most importantly, simply put all additional Python libraries in subfolders of scripted module folders (see for example how MONAIAuto3DSegLib is included here). Specifically, move pysera_lib under the folder PySera_Ext folder and update the CMakeLists.txt files accordingly.

@yasisama00
Copy link
Copy Markdown
Contributor Author

Hi,
we've made the changes. Ready for review.
Thanks.
@lassoan

@yasisama00
Copy link
Copy Markdown
Contributor Author

Hi,
We applied the changes based on the validation report. Please check and let us know if we need more modifications.
Thanks,
Best regards.
@jamesobutler

@MohammadRSalmanpour
Copy link
Copy Markdown

Dear @lassoan Andras Lasso
We applied the changes you mentioned.
Can you please let us know what the next step is?
Best
Mohammad

@lassoan
Copy link
Copy Markdown
Contributor

lassoan commented Feb 1, 2026

Thank you, it looks good, I'll merge this. There are just a couple of improvements that I would recommend for the readme file:

  • Links to images are broken (https://github.com/radiuma-com/SlicerPySERA?tab=readme-ov-file#screenshots)
  • Move all information that is only interesting for developers to a separate section (you can call it Developers or For developers, ...) at the end of the document. Users would give up reading the document when they see that it contains information that they don't need or don't understand at all. Candidates: Repository Structure, Integration Notes (but it has not much useful information, so it is probably better to just remove it), Version History (even better would be to remove it, you don't want to update this section with every update)
  • Ensure image/mask folder structures are mirrored and contain no extra nesting - I can only guess what this could mean. Provide example and more detailed explanation.
  • RTSTRUCT processing uses a temporary cache folder (temporary_files_path). - this should not concern the user. You can get a writable temporary folder path from the application by calling slicer.app.temporaryPath
  • Occurs due to Qt bindings; fixed internally via safe access. - if fixed then delete this row from the table
  • Verify mirrored image/mask structure and writable destination folder. - again, I don't know what this means, provide an example and more detailed description
  • Confirm temporary_files_path is on a writable drive. - use the temp folder that the application provides and if there is an issue display a message that describes what the problem is and what to do about it; once you add this, there is no need to add a note to the documentation
  • Maintenance - you can remove it, as the Support and Contact sections describe what is needed

@lassoan lassoan merged commit 4d710e7 into Slicer:main Feb 1, 2026
8 of 9 checks passed
@yasisama00
Copy link
Copy Markdown
Contributor Author

Dear @lassoan,
We have applied the changes based on your latest comment.
We would appreciate it if you could review it again.
sincerely.

@MohammadRSalmanpour
Copy link
Copy Markdown

Dear @lassoan Andras Lasso
Thank you for your efforts.
We applied all the comments to our extension as we were requested. It seems that our pull request has been successfully merged and closed.
Can you please let us know when users can access our extension?
Best Regards,
Mohammad Salmanpour, Ph.D.,

@yasisama00
Copy link
Copy Markdown
Contributor Author

Dear @jamesobutler,

We have made some changes to the SlicerPysera repository and would appreciate it if you could review them. Additionally, could you please let us know when our extension will appear in the list of extensions? We were unable to find it in either the latest version of 3D Slicer or the current stable release.

Best regards,
Yasaman Salehi, M.Sc.

@lassoan
Copy link
Copy Markdown
Contributor

lassoan commented Feb 17, 2026

See https://slicer.readthedocs.io/en/latest/developer_guide/extensions.html#continuous-integration

The dashboard shows that there is a build error because the CMakeLists.txt dowa not follow the template:

https://github.com/radiuma-com/SlicerPySERA/blob/ebf8ab167f1b75c06c72603a41a372e4aa1075f4/PySERA/CMakeLists.txt#L13

To fix it, replace the full path to the nodule icon by a relative path.

To make the extension available for Slicer-5.10, submit a pull request to the 5.10 branch in this repository.

@yasisama00
Copy link
Copy Markdown
Contributor Author

yasisama00 commented Feb 22, 2026

Dear @lassoan,
We fixed the bug and updated our SlicerPySERA repo. We'll highly appreciate if you could review them again and give us feedback.
Sincerely,
Yasaman.

@MohammadRSalmanpour
Copy link
Copy Markdown

Dear @lassoan and @Kitware
I can see that our pull request has been successfully merged and closed.
I have 3D Slicer version 5.6.2 installed on Windows. When I open the Extensions Manager, I cannot find our extension, PySERA, to install it. Could you please guide me on how to access it?

I also found that the extension appears to be publicly available at the following page:
https://extensions.slicer.org/catalog/All/34457/win?q=pysera

However, I noticed that there is no icon or screenshot displayed for the extension, while we uploaded both of those when we requested.
FigSlicer
FigSlicer1

Best regards,
Mohammad R. Salmanpour, Ph.D.

@pieper
Copy link
Copy Markdown
Member

pieper commented Mar 14, 2026

@MohammadRSalmanpour - extensions are only built for the current release and the current preview builds, so you can try 5.10.0 or the latest preview.

@MohammadRSalmanpour
Copy link
Copy Markdown

Thanks @pieper , @lassoan and @Kitware

Yes, I just double-checked, and it has been added to "Preview Release Version 5.11.0."
Just one issue I found is that there is no Icon or screenshot for this extension. I am pretty sure that we had it on our GitHub when we forked it.
Fig1
Fig2
Fig3

Can you please check and let me know if it still requires more actions?
Best
Mohammad

@jamesobutler
Copy link
Copy Markdown
Contributor

https://github.com/radiuma-com/SlicerPySERA/blob/9c4ad5bc3822d0efffe113dad5bbcd46a03578f9/CMakeLists.txt#L10-L11

^If you try going to the icon url and screenshot url, they are invalid. Looks like the issue was introduced in changes made in radiuma-com/SlicerPySERA@2b51066.

@yasisama00
Copy link
Copy Markdown
Contributor Author

Dear @jamesobutler,
We have updated our GitHub repository. We'll appreciate if you could review it.
Sincerely,
Yasaman Salehi.

@MohammadRSalmanpour
Copy link
Copy Markdown

Dear @lassoan , @pieper , @jamesobutler
As my colleague mentioned, we updated the repository to resolve the icon display issue.

I would appreciate it if you could double-check whether the issue has been resolved and whether the icon is now displayed on the extension page.

Best,
Mohammad Salmanpour, Ph.D.

@jamesobutler
Copy link
Copy Markdown
Contributor

You can confirm if the links are correct by going to the link and seeing if the icon is displayed. Your latest URL link results in a 404 error so it is not working.
https://github.com/radiuma-com/SlicerPySERA/blob/c5f4967dc945809dbf8301e1c7886815af29cd2b/CMakeLists.txt#L10-L11

@yasisama00
Copy link
Copy Markdown
Contributor Author

Dear @jamesobutler,
We have fixed and tested the links.
Thank you for your time.
Sincerely,
Yasaman Salehi.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

6 participants