GithubHelp home page GithubHelp logo

raidionics / raidionics Goto Github PK

View Code? Open in Web Editor NEW
30.0 3.0 4.0 86.58 MB

Software for automatic segmentation and generation of standardized clinical reports of brain tumors from MRI volumes

Home Page: https://raidionics.github.io/

License: BSD 2-Clause "Simplified" License

Python 99.55% NSIS 0.45%
deep-learning medical-imaging mri segmentation brain-tumor raidionics glioblastoma meningioma diffuse-lower-grade-glioma brain-metastasis

raidionics's Introduction

Raidionics

Open software for AI-based pre- and postoperative brain tumor segmentation and standardized reporting

GitHub Downloads License Paper

Raidionics was developed by SINTEF Medical Image Analysis. A paper presenting the software and some benchmarks has been published in Scientific Reports.

  • Please visit the wiki to know more about usage, use-cases, and access tutorials.
  • For any issue, please report them here.
  • Frequently asked questions (FAQs) can be found here.

An installer is provided for the three main Operating Systems: Windows (v10, 64-bit), Ubuntu Linux (>= 18.04), macOS (>= 10.15 Catalina), and macOS ARM (M1/M2 chip). The software can be downloaded from here (see Assets).

NOTE: For reinstallation, it is recommended to manually delete the .raidionics/ folder located inside your home directory.

These steps are only needed to do once:

  1. Download the installer to your Operating System.
  2. Right click the downloaded file, click "open", and follow the instructions to install.
  3. Search for the software "Raidionics" and double click to run.

Very simple demonstrations of the software can be found on YouTube. Tutorials can be found in the wiki.

Watch the video

Operating System Status
Windows CI
Ubuntu CI
macOS_x86-64 CI
macOS_ARM CI

If you are using Raidionics in your research, please cite the following references.

The final software including updated performance metrics for preoperative tumors and introducing postoperative tumor segmentation:

@article{bouget2023raidionics,
    author = {Bouget, David and Alsinan, Demah and Gaitan, Valeria and Holden Helland, Ragnhild and Pedersen, André and Solheim, Ole and Reinertsen, Ingerid},
    year = {2023},
    month = {09},
    pages = {},
    title = {Raidionics: an open software for pre-and postoperative central nervous system tumor segmentation and standardized reporting},
    volume = {13},
    journal = {Scientific Reports},
    doi = {10.1038/s41598-023-42048-7},
}

For the preliminary preoperative tumor segmentation validation and software features:

@article{bouget2022preoptumorseg,
    title={Preoperative Brain Tumor Imaging: Models and Software for Segmentation and Standardized Reporting},
    author={Bouget, David and Pedersen, André and Jakola, Asgeir S. and Kavouridis, Vasileios and Emblem, Kyrre E. and Eijgelaar, Roelant S. and Kommers, Ivar and Ardon, Hilko and Barkhof, Frederik and Bello, Lorenzo and Berger, Mitchel S. and Conti Nibali, Marco and Furtner, Julia and Hervey-Jumper, Shawn and Idema, Albert J. S. and Kiesel, Barbara and Kloet, Alfred and Mandonnet, Emmanuel and Müller, Domenique M. J. and Robe, Pierre A. and Rossi, Marco and Sciortino, Tommaso and Van den Brink, Wimar A. and Wagemakers, Michiel and Widhalm, Georg and Witte, Marnix G. and Zwinderman, Aeilko H. and De Witt Hamer, Philip C. and Solheim, Ole and Reinertsen, Ingerid},
    journal={Frontiers in Neurology},
    volume={13},
    year={2022},
    url={https://www.frontiersin.org/articles/10.3389/fneur.2022.932219},
    doi={10.3389/fneur.2022.932219},
    issn={1664-2295}
}

raidionics's People

Contributors

andreped avatar dbouget avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

raidionics's Issues

DICOM RTstructure segmentation export

Is your feature request related to a problem? Please describe.
Segmentation results are only saved in nifti format, useful for research purposes but not generic enough.

Describe the solution you'd like
Possibility to choose the format in which segmentation results should be stored. Alternatively, there should be an option to export/convert the segmentation results in some other types. A major needed type is the DICOM RTstructure.

AttributeError: 'NoneType' object has no attribute '_fixed_uid'

First off, thank you very much for providing this tool as an open-source solution.
I am a radiologist and must admit that i have little programming knowledge regarding python. Thats why i am struggeling a bit trying to set this up. I already progressed getting the tool to run (didnt want to start segmenting in the beginning) but with this issue i dont seem to make any progress:

Describe the bug
When running the Reporting tool using direct DICOM import of T1, T2, FLAIR and T1-ce i get an error message (see below Nr 1)
When running it with compressed niftii (even the ones provided as test data) i get a different error message (see below Nr 2)

Computer settings (please complete the following information):

  • Operating System : Windows 10
  • CPU: Ryzen 5 3600
  • GPU: Nvidia RTX 2060

Scanner-Data

  • Siemens Espree / Skyra 1.5T/3.0T
  • Syngo MR BR19/ VB30C

Error message 1
20/11/2023 15.50 ; root ; INFO ; LOG: Pipeline - Registration from T1w (T0) to T1CE (T0) - Runtime: 43.97487211227417 seconds.
20/11/2023 15.50 ; root ; INFO ; LOG: Pipeline - Registration from T1w (T0) to T1CE (T0) - End (5/15)
20/11/2023 15.50 ; root ; INFO ; LOG: Pipeline - Apply registration from T1w (T0) to T1CE (T0) - Begin (6/15)
20/11/2023 15.50 ; root ; ERROR ; [RegistrationDeployerStep] Step setup failed with: Traceback (most recent call last):
File "raidionicsrads\Pipelines\RegistrationDeployerStep.py", line 52, in setup
AttributeError: 'NoneType' object has no attribute '_fixed_uid'

Error message 2
20/11/2023 16.42 ; root ; ERROR ; [SegmentationStep] setup failed with: Traceback (most recent call last):
File "raidionicsrads\Pipelines\SegmentationStep.py", line 71, in setup
ValueError: No radiological volume for {'timestamp': 0, 'sequence': 'T1-w', 'labels': None, 'space': {'timestamp': 0, 'sequence': 'T1-w'}}.

my assumption
I assume this is an issue with the DICOM headers but i wasnt really able to trace it down to what.

Thank you very much.
LS

Wrong style sheet on macOS

When running the software on macOS, I observed that the GUI has a completely different style from the two other platforms.

This is unexpected as we have set a fixed style to the main app ("Fusion"), which should transfer across operating systems.

I believe this behaviour might be from overloading classes, where then a style is set, which accidentally removed the style of the parent (somehow).

MicrosoftTeams-image

.raidionics/ directory not removed when uninstalling

Raidionics stores downloaded models and temporary stuff in a directory called .raidionics/, which is created at installation.

However, when uninstalling the software, this directory is not deleted (at least not on Windows).

For Windows this can be solved by adding this into the uninstallation procedure in the NSIS file (.nsi), but this fix does not work across operating systems. There might be something one can specify in the .spec file(s) relevant for building the executables?

Minor UX improvement

The location of the "Import patient" button is an unexpected location. Perhaps it should be moved to the top left corner. Alternatively, there should be an option to import patients from the File menu, as this would be a natural place to look for it (if the user doesn't see the aforementioned button).

Additionally, the "Data", "DICOM", and "Save" buttons could be hidden, until a patient has been imported. So as to not attract the attention of the user from the "Import patient" button.

image
image

.app icon not showing on MacOSX

After spending some time with this today, I believe this is due to us not having a 3rd party mac developer license.

When installing the software, at the top of the certificate file, which will only be generated if you have a license, the linkage between the app and the icon is described.

This was not a problem before, which is why the icon was showing on earlier macOS versions such as High Sierra 10.13. However, on 10.15 and above, which are the versions compatible with Raidionics, it appears that we need a license to have the icons showing. Quite ridiculous if thats the case, honestly...

radionics error

Describe the bug
Radionics gives the following error from the first working phase. I tried to install different versions but it did not fix it. I'm a bit newbie, I'd be glad if you could help me.

Computer settings (please complete the following information):

  • Operating System : [e.g., Windows 10]
  • Processor (CPU) type: [e.g., Intel i7]

Error messages
12/02/2024 08.55 ; urllib3.connectionpool ; DEBUG ; https://objects.githubusercontent.com:443 "GET /github-production-release-asset-2e65be/601122702/f9880a6e-df1d-493c-9888-d61f9ba21d31?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240212%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240212T055511Z&X-Amz-Expires=300&X-Amz-Signature=4defd513959de48174e9140a08566089d33aa94a1fcd1a69a80e82f7bcf8ce83&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=601122702&response-content-disposition=attachment%3B%20filename%3DRaidionics-MRI_Brain-ONNX-v12.zip&response-content-type=application%2Foctet-stream HTTP/1.1" 200 69134888
12/02/2024 08.55 ; root ; ERROR ; Pipeline process for patient 61161, for task Segmentation_Brain_T0 failed with:
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "raidionicsrads\Pipelines\SegmentationStep.py", line 71, in setup
ValueError: No radiological volume for {'timestamp': 0, 'sequence': 'T1-CE', 'labels': None, 'space': {'timestamp': 0, 'sequence': 'T1-CE'}}.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "multiprocessing\pool.py", line 125, in worker
File "multiprocessing\pool.py", line 48, in mapstar
File "utils\backend_logic.py", line 187, in run_pipeline_wrapper
run_rads(params[0], params[1])
File "raidionicsrads\compute.py", line 30, in run_rads
File "raidionicsrads\Pipelines\PipelineStructure.py", line 90, in execute
File "raidionicsrads\Pipelines\SegmentationStep.py", line 147, in setup
ValueError: [SegmentationStep] setup failed.
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "utils\backend_logic.py", line 126, in run_pipeline
ret = result.get()[0]
File "multiprocessing\pool.py", line 771, in get
ValueError: [SegmentationStep] setup failed.
12/02/2024 08.55 ; root ; INFO ; Saving patient results in: C:\Users\monster.raidionics\patients\roy_quintana
Screenshots
If applicable, add screenshots to help explain your problem.
image

Improve wheel sprites

In the latest artefact a wheel has been added showing the progress. Looks great!

However, I observed that the lines separating the steps are unnatural.
Screenshot 2022-08-29 at 14 10 33

You have done vertical cuts and not radial cuts which is what you want, see here:
image

FLAIR images in range [0, 255] cannot be opened

Describe the bug
FLAIR images, with values in the range [0, 255], cannot be opened in Raidionics. The automatic parsing considers them to be annotation masks and not proper radiological volumes at the moment.

Error messages
Unable to load FLAIR.nii.gz. Error message: no MRI volume has been imported yet. Mandatory for important an annotation.

Bug: Automatic models folder deletion after re-installation

On Ubuntu and Mac, the .raidionics is not deleted during the installation process.

An automatic deletion of the Models folder should be performed, based on the software version, to prevent issues due to old models still existing on disk but likely not forward-compatible.

Program crash on Mac

Each time I upload a NIFTI file and select "Run Segmentation" the program crashes and closes. This happens in 1.0 and 1.1

GUI-Tumor sub-compartments

Amazing tool: Just a question: I[m using four MRI modalities for GBM cases. Can you help me out to figure out how I can set up the model to get tumor sub-compartments (necrotic core, enhancing tumor and edema)?

Thanks
Gustavo

Start Menu icon not showing on Windows

Similar to this issue #14.

However, if you restart your computer the icon shows. Hence, there is likely an ordering issue in the installation protocol defined in the NSIS file.

PyInstaller packages ALL local python versions when building

If you have more than one python version, it will bundle all of these into the package. What then happens, is that during runtime, the executable will fail to find the correct on. This results in the software never starting. This is not a problem for the CI build stuff, but for building locally it may be a problem.

A temporary fix is to delete the Python38.dll (and any other PythonX.dll files), except Python37.dll which the correct one. Then the program will open. We should find a better way of catching these dependencies. Probably the hidden_imports solution is too naive.

Circular progressbar not reset when starting new segmentation

Just tried testing the latest artefact on Win10 and I observed that the after the first segmentation task is done, when starting a new one, the circular progress bar keeps the state it had at the end of the old process. You probably want to reset it maybe after inference, or right before.

Pre-operative segmentation not detecting manually-set sequence type (T1-CE)

Describe the bug
Uploading my own T1-CE .nii and performing pre-operative segmentation yields an error "No radiological volume for {'timestamp': 0, 'sequence': 'T1-CE', 'labels': None, 'space': {'timestamp': 0, 'sequence': 'T1-CE'}}" even after manually setting the sequence type to T1-CE. This behaviour does not appear with the approved example data.

Computer settings:

  • Operating System : Windows 11
  • Processor (CPU) type: AMD Ryzen

To Reproduce

  1. Go to "Import patient"
  2. Click on "Other data type (*.nii)
  3. Open T1-CE .nii
  4. Set sequence type to T1-CE in dropdown
  5. Go to "Actions" and then start pre-operative segmentation

Error messages

Note -- filename anonymized in error output below

DEBUG:root:New patient creation requested.
INFO:root:Output patient directory set to: C:\Users\frede.raidionics\patients\temp_patient
INFO:root:Renamed current output folder to: C:\Users\frede.raidionics\patients\melody_montano
DEBUG:root:Active patient uid changed from None to 84275.
DEBUG:root:Loading patient 84275 from memory.
INFO:root:New data file imported: 7065_02216760_2019-06-13_ANON_t1_vibe_tra_p2_FS_STRAIGHT
DEBUG:root:Unsaved changes - Patient object expanded with new volumes.
INFO:root:[MRISeriesLayerWidget] Visibility toggled to True for 7065_02216760_2019-06-13_ANON_t1_vibe_tra_p2_FS_STRAIGHT
DEBUG:root:Unsaved changes - MRI volume sequence changed to T1-CE
INFO:root:Starting pipeline process for task: preop_segmentation.
INFO:root:Starting pipeline process for patient 84275 and task preop_segmentation.
INFO:root:Saving patient results in: C:\Users\frede.raidionics\patients\melody_montano
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): github.com:443
DEBUG:urllib3.connectionpool:https://github.com:443 "GET /raidionics/Raidionics-models/releases/download/1.2.0/raidionics_cloud_models_list_github.csv HTTP/1.1" 302 0
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): objects.githubusercontent.com:443
DEBUG:urllib3.connectionpool:https://objects.githubusercontent.com:443 "GET /github-production-release-asset-2e65be/601122702/e623363f-d633-4134-ad39-0a9a03cdbd92?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240229%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240229T065226Z&X-Amz-Expires=300&X-Amz-Signature=aefbb8d3a2372378dbf32dbc8ca1e6800d641146b8cd16eaea3dfd43cf0dd3b4&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=601122702&response-content-disposition=attachment%3B%20filename%3Draidionics_cloud_models_list_github.csv&response-content-type=application%2Foctet-stream HTTP/1.1" 200 1754
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): github.com:443
DEBUG:urllib3.connectionpool:https://github.com:443 "GET /raidionics/Raidionics-models/releases/download/1.2.0/raidionics_cloud_models_list_github.csv HTTP/1.1" 302 0
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): objects.githubusercontent.com:443
DEBUG:urllib3.connectionpool:https://objects.githubusercontent.com:443 "GET /github-production-release-asset-2e65be/601122702/e623363f-d633-4134-ad39-0a9a03cdbd92?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240229%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240229T065226Z&X-Amz-Expires=300&X-Amz-Signature=aefbb8d3a2372378dbf32dbc8ca1e6800d641146b8cd16eaea3dfd43cf0dd3b4&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=601122702&response-content-disposition=attachment%3B%20filename%3Draidionics_cloud_models_list_github.csv&response-content-type=application%2Foctet-stream HTTP/1.1" 200 1754
C:\Users\frede\anaconda3\Lib\site-packages\paramiko\transport.py:219: CryptographyDeprecationWarning: Blowfish has been deprecated
"class": algorithms.Blowfish,
ERROR:root:Pipeline process for patient 84275, for task preop_segmentation failed with:
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "C:\Users\frede\anaconda3\Lib\site-packages\raidionicsrads\Pipelines\SegmentationStep.py", line 71, in setup
raise ValueError("No radiological volume for {}.".format(input_json))
ValueError: No radiological volume for {'timestamp': 0, 'sequence': 'T1-CE', 'labels': None, 'space': {'timestamp': 0, 'sequence': 'T1-CE'}}.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\frede\anaconda3\Lib\multiprocessing\pool.py", line 125, in worker
result = (True, func(*args, **kwds))
^^^^^^^^^^^^^^^^^^^
File "C:\Users\frede\anaconda3\Lib\multiprocessing\pool.py", line 48, in mapstar
return list(map(*args))
^^^^^^^^^^^^^^^^
File "C:\Research\fgs\segmentation\raidionics\Raidionics-master\utils\backend_logic.py", line 187, in run_pipeline_wrapper
run_rads(params[0], params[1])
File "C:\Users\frede\anaconda3\Lib\site-packages\raidionicsrads\compute.py", line 30, in run_rads
patient_parameters = pip.execute(patient_parameters=patient_parameters)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\frede\anaconda3\Lib\site-packages\raidionicsrads\Pipelines\PipelineStructure.py", line 90, in execute
self._steps[s].setup(patient_parameters)
File "C:\Users\frede\anaconda3\Lib\site-packages\raidionicsrads\Pipelines\SegmentationStep.py", line 147, in setup
raise ValueError("[SegmentationStep] setup failed.")
ValueError: [SegmentationStep] setup failed.
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Research\fgs\segmentation\raidionics\Raidionics-master\utils\backend_logic.py", line 126, in run_pipeline
ret = result.get()[0]
^^^^^^^^^^^^
File "C:\Users\frede\anaconda3\Lib\multiprocessing\pool.py", line 774, in get
raise self._value
File "C:\Users\frede\anaconda3\Lib\multiprocessing\pool.py", line 125, in worker
result = (True, func(*args, **kwds))
^^^^^^^^^^^^^^^^^
File "C:\Users\frede\anaconda3\Lib\multiprocessing\pool.py", line 48, in mapstar
return list(map(*args))
^^^^^^^^^^^^^^^^^
File "C:\Research\fgs\segmentation\raidionics\Raidionics-master\utils\backend_logic.py", line 187, in run_pipeline_wrapper
run_rads(params[0], params[1])
^^^^^^^^^^^^^^^^^
File "C:\Users\frede\anaconda3\Lib\site-packages\raidionicsrads\compute.py", line 30, in run_rads
patient_parameters = pip.execute(patient_parameters=patient_parameters)
^^^^^^^^^^^^^^^^^
File "C:\Users\frede\anaconda3\Lib\site-packages\raidionicsrads\Pipelines\PipelineStructure.py", line 90, in execute
self._steps[s].setup(patient_parameters)
^^^^^^^^^^^^^^^^^
File "C:\Users\frede\anaconda3\Lib\site-packages\raidionicsrads\Pipelines\SegmentationStep.py", line 147, in setup
raise ValueError("[SegmentationStep] setup failed.")
^^^^^^^^^^^^^^^^^
ValueError: [SegmentationStep] setup failed.

INFO:root:Saving patient results in: C:\Users\frede.raidionics\patients\melody_montano

Any assistance would be greatly appreciated!

Options box not working as expected

In the GUI there is an option box which contains two buttons. Those buttons are unresponsive.

This is because they have not been made available in the GUI (yet), as they are not completely ready.

The options box should therefore be removed until this feature is ready for use.

Feature: Interactive prediction thresholding

Describe the solution you'd like
The predictions generated by the model should be available as probabilities with the recommended optimal threshold set by default for binary display. In addition, a slider for adjusting the threshold on-the-fly should be included, for potentially circumventing under/over-segmentation on specific patients.

Feature: 3D renderer support

Currently, it is possible to render the MRI with segmentation overlay in all 2D orthogonal planes.
However, there are numerous scenarios where visualising segmentation structures in 3D would be beneficial.
Having 3D rendering support would therefore be of interest, but finding a solution that works across all operating systems (without OpenGL due to macOS) might be a challenge.

Bug: Unable to kill process when running

This has to do with when inference is started it is performed in the backend. We don't have a simple way to communicate with the backend. A better solution would be to create a process where the backend stuff is processing. When the cancel button is presses, we will kill the entire process, which in effect also should kill the backend processing.

However, as discussed in this issue, creating processes in frozen applications in python is challenging: #20

Improve batch mode widget

Batch mode is currently working, but the widget is not really that user-friendly.

It would be great if it was enhanced, containing more information. A solution could be to create a QTable where each row correspond to a patient, and each patient has a loading bar, giving feedback to the user on progress, also including ETA. Then it is colored green when finished.

AttributeError: 'NoneType' object has no attribute '_fixed_uid' & ValueError: No radiological volume for {xy}

First off, thank you very much for providing this tool as an open-source solution.
I am a radiologist and must admit that i have little programming knowledge regarding python. Thats why i am struggeling a bit trying to set this up. I already progressed getting the tool to run (didnt want to start segmenting in the beginning) but with this issue i dont seem to make any progress:

Describe the bug
When running the Reporting tool using direct DICOM import of T1, T2, FLAIR and T1-ce i get an error message (see below Nr 1)
When running it with compressed niftii (even the ones provided as test data) i get a different error message (see below Nr 2)

Computer settings (please complete the following information):

  • Operating System : Windows 10
  • CPU: Ryzen 5 3600
  • GPU: Nvidia RTX 2060

Scanner-Data

  • Siemens Espree / Skyra 1.5T/3.0T
  • Syngo MR BR19/ VB30C

Error message 1
20/11/2023 15.50 ; root ; INFO ; LOG: Pipeline - Registration from T1w (T0) to T1CE (T0) - Runtime: 43.97487211227417 seconds.
20/11/2023 15.50 ; root ; INFO ; LOG: Pipeline - Registration from T1w (T0) to T1CE (T0) - End (5/15)
20/11/2023 15.50 ; root ; INFO ; LOG: Pipeline - Apply registration from T1w (T0) to T1CE (T0) - Begin (6/15)
20/11/2023 15.50 ; root ; ERROR ; [RegistrationDeployerStep] Step setup failed with: Traceback (most recent call last):
File "raidionicsrads\Pipelines\RegistrationDeployerStep.py", line 52, in setup
AttributeError: 'NoneType' object has no attribute '_fixed_uid'

Error message 2
20/11/2023 16.42 ; root ; ERROR ; [SegmentationStep] setup failed with: Traceback (most recent call last):
File "raidionicsrads\Pipelines\SegmentationStep.py", line 71, in setup
ValueError: No radiological volume for {'timestamp': 0, 'sequence': 'T1-w', 'labels': None, 'space': {'timestamp': 0, 'sequence': 'T1-w'}}.

my assumption
I assume this is an issue with the DICOM headers but i wasnt really able to trace it down to what.

Thank you very much.
LS

Ability to save and load projects

Currently, an analysis can be performed on a set of patients and results will be stored on disk. However, it would be great to be able to save the result and patients into a project, such that it is possible to re-open the results in the software.

Support for different folder structures

Currently, Raidionics supports batch mode by providing a directory tree of patient folders with respective scans.

However, I believe it is just as usual for the user to have a folder with a set of NIfTI files. It would be great if the software supported both.

There are likely different structures that also could be relevant, but I believe these two are the most common ones. Hence, I would stick with these two.

Bug: macOS ARM CI build fails due to dylib not found

Describe the bug
Bug: macOS ARM CI build fails. This happened after adding RT-Struct, which introduced OpenCV, which in-turn depends on ffmpeg. It seems like after installing the latest artifact, the program fails as Raidionics fails to find the necessary *.dylib files that comes with ffmpeg. There is likely a hook issue that needs to be addressed.

Computer settings (please complete the following information):

  • Operating System: [e.g., Windows 10] macOS
  • Processor (CPU) type: [e.g., Intel i5] ARM (M1)
  • Python (version): 3.8.10

Error log:
In the workflow log, the below can be observed:

37735 DEBUG: Collecting submodules for cv2
32 DEBUG: collect_submodules - scanning (sub)package cv2
283 WARNING: Failed to collect submodules for 'cv2' because importing 'cv2' raised: ImportError: dlopen(/Users/medtek/Documents/Raidionics/actions-runner/_work/Raidionics/Raidionics/tmp/venv/lib/python3.8/site-packages/cv2/cv2.cpython-38-darwin.so, 0x0002): Library not loaded: /opt/homebrew/opt/ffmpeg/lib/libavcodec.58.dylib
  Referenced from: /Users/medtek/Documents/Raidionics/actions-runner/_work/Raidionics/Raidionics/tmp/venv/lib/python3.8/site-packages/cv2/cv2.cpython-38-darwin.so
  Reason: tried: '/opt/homebrew/opt/ffmpeg/lib/libavcodec.58.dylib' (no such file), '/usr/local/lib/libavcodec.58.dylib' (no such file), '/usr/lib/libavcodec.58.dylib' (no such file)
38105 DEBUG: collect_submodules - found submodules: []
38105 DEBUG: Collecting data files for cv2
38106 DEBUG: collect_data_files - Found files: []

Windows icon not showing

Seems like there are two situations where the Raidionics icon is not showing: 1) The top-left corner of the GUI and 2) start menu bar (after searching for "Raidionics").

Icons seem to work properly on Ubuntu and macOS.

Feature: Remove ANTs C++ binaries to reduce bloatware

Is your feature request related to a problem? Please describe.
As we are not using the C++ binaries, and it does not even work on Windows and the PyANTs works fine, I say that we should just remove the ANTs C++ binaries all together.

This will greatly reduce the installer size, which was increased by about 3x in size, just to do the ANTs binaries alone.

Update hashtags

If you add "Raidionics" as a hashtag it will more easily show up in google searches.

Suboptimal behaviour of circular progress widget

Number + % is not centered in circular progress widget.

This looks rather strange, especially for 100%. I believe it might be centered around the number, but not "number + %". Is it possible to center this properly?

Also, I liked the other text that was there previously. Could that be added? Perhaps also increase the font size.

See this timepoint for when the centering is off:
https://youtu.be/kU_Mt5tUGTA?t=22

FLAIR segmentation not running for low-grade glioma mode

Is there a specific workaround for FLAIR-based segmentation of low grade glioma? Glioblastoma on T1-ce segmentation now works well, but given FLAIR (or T1ce, or T1w) and running the segmentation mode for low-grade glioma, the segmentation does not appear to want to initialise (red circle, seems to crash, no segmentation produced). Have tried importing just the FLAIR sequence (nifti) which is automatically correctly identified as FLAIR as the Data type; and loading multiple sequences (FLAIR, T1w, T1CE). I've tried via Actions> preoperative segmentation and via Run Segmentation; and have tried multiple different patient datasets. Thanks for advice.
Operating systems tried: Mac M1 Monterey and MacOS Catalina (Intel i7).

Preparing the configuration file for running MRI_GBM_Postop_FV_5p model in Colab Notebook

Hi Could you please get me a quick guidance to update the https://colab.research.google.com/gist/dbouget/f87576cdae559ce2a328f0ba7f60828d/02_run_simple_reporting.ipynb notebook ? as I'm interested in running the post-op model ( MRI_GBM_Postop_FV_5p) and I'd like to know how to set up rightly the respective pipeline.json file in. I've already tried the GUI releases, but I'd like to setup it accordingly for running in another server with better capabilities.
So far, I'm grateful with this great tool.
Best
GP

Feature: Add GUI unit tests with pyautogui

Is your feature request related to a problem? Please describe.
It would be extremely useful to add GUI tests to verify that the software is working as intended.

Describe the solution you'd like
A way to solve this problem is to use pyautogui to enable autoclicks, and make GUI-tests with a robot that essentially performs the workflow pipeline that a human operator might do. This can at least be done to test whether any errors occur (by checking the log) when performing tests.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
A good resource on how to test Qt applications on headless machines (which is the case for GitHub Actions) can be seen here.

Feature: Replace PyANTs with Freesurfer?

Is your feature request related to a problem? Please describe.
As we are having all kinds of fun issues with both ANTs (C++) and PyANTsX (Python), it would make sense to try another atlas registration package. Freesurfer is the likely best candidate.

Describe the solution you'd like
Using freesurfer should not change the user experience at all. It should yield similar (or better) registration results, and runtime should not be greatly affected.

Potential TensorFlow issue

The initial issue was observed for the GSI-RADS sofware which Raidionics is derived from (GSI-RADS, Issue #2).
A user tried to install the latest binary release (v1.2.0) and run diagnosis on a local MRI.
She got the error:

Failed to load the native TensorFlow runtime

In addition, for the Raidionics software, the following ImportError was observed:

ImportError: No module named '_pywrap_tensorflow_internal'

This is likely due to a hidden import issue, which can be solved by adding a hook, but I see that others have tried something similar with no success (for TensorFlow).

Feature: Multiple file selection

Current solution only support selection of multiple files. This supports selection of multiple folders.

file_system_model = QFileSystemModel()

file_list_view = QListView()
file_list_view.setModel(file_system_model)
file_list_view.setSelectionMode(QAbstractItemView.ExtendedSelection)        # Press CTRL to select multiple items, SHIFT for a range
file_list_view.setSelectionMode(QAbstractItemView.MultipleSelection)         # Select/deselect multiple items by clicking on them

Enhance about

Would be neat if you could enlargen the about pop-up widget slightly such that the sentence is on a single line by default.

Skjermbilde 2022-08-31 194019

Bug: Launching latest artifact fails on macOS

Describe the bug
Tried to download the latest artifact, install it, and run. The icon popped up but closed immediantly.

Computer settings (please complete the following information):

  • Operating System : [e.g., Windows 10] macOS 12 Monterey
  • Processor (CPU) type: [e.g., Intel i5] Intel Core i7

To Reproduce
Install the latest artifact, and go to /Applications/Raidionics.app/Contents/MacOS/ and then launch with ./Raidionics.

Error messages

andreped@thomasl-MBP /Applications % cd Raidionics.app/
andreped@thomasl-MBP /Applications % open -a Raidionics.app 
andreped@thomasl-MBP /Applications % cd Raidionics.app/Contents/MacOS 
andreped@thomasl-MBP MacOS % ./Raidionics 
Traceback (most recent call last):
  File "main.py", line 8, in <module>
ImportError: could not import module 'PySide6.QtGui'
[14837] Failed to execute script 'main' due to unhandled exception!

segmentation on Mac M1 vs macOS Catalina

Segmentation mode not running on M1 chip Mac (Monterey) but completes for the same dataset on an older macOS Catalina
No error messages produced, no segmentation result.

Software crashing/freezing when too many patients are sequentially processed

Describe the bug
Potential memory leak making the software freeze or crash after loading and processing multiple patients sequentially.

To Reproduce
The sweet spot seems to be around 8 or 10 patients, I do them one at a time (load new patient, segment, save, close completely (don’t save), load a new patient, etc. At some point (around the 8th or 10th time or so), I find Raidionics crashes. It is either totally crashes (and closes) or it complains about an image when the image is fine (if I close Raidionics and reopen the same image then its fine).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.