I am willing to create a whole module for Internal Dosimetry in Nuclear Medicine, the Module consist on several plugins:
Quality Control of Images (Images loaded from DICOM Node must contain a minimum set of data in headers)
Images are supposed to be Registered by acquisition system and they can be easily registered with the already available Registration plugins here.
CT image Segmentation with Atlas (Its been proposed several models from ICRP but the Idea is to have the ability to enter the Model)
CT Rescaling (not confusing with BRAINS rescaling with is useless in this way)
Geant4 (preferred) or Gate Bridge to perform Dose calculations (currently missing)
Tumor/Health Structures Segmentation (like the PETTumorSegmentation plugin)
Pharmacokinetics per Atlas tissue if possible, otherwise per segmented organ, this leads to a matrix to move from dose rate to absorbed dose
BED calculation
Anything else interesting or missing in the above
Most of this is already done by other plugins available here, but everything its messed up and there are missing parts. This is a long term Project, so it will be implemented by stages. If someone is ready already working in something similar and is willing to accept the challenge just let me know.
Looks like a nice, ambitious roadmap. It is great that you plan to work on these. There are many modules and extensions that can help you and if you have any specific questions or problems then let us know and we’ll be happy to help.
I am preparing the ESMPE course, hopefully we will have something already developed (working) in very early stage by then. I will let you know further when it is finally released. For now I need to be focused on that, after January I will be more active developing.
Hi lassoan! I am having troubles setting properly the vtk environment to be detected by both Slicer and VSCode, the one shipped by Slicer has no sources, so it is useless but when I compile Slicer with my own VTK it does not compile at all (bunch of errors). Hopefully I will have this sorted out eventually
Edit: I am on MacOS 10.4 Mojave, VSCode October 2018 (version 1.29)
Update:
Quality Control of Images (Images loaded from DICOM Node must contain a minimum set of data in headers) -> This will be addressed diferently
Images are supposed to be Registered by acquisition system and they can be easily registered with the already available Registration plugins here. -> This is already available in Slicer but too diluted. A working procedure will be shown in the ESMPE course
CT image Segmentation with Atlas (Its been proposed several models from ICRP but the Idea is to have the ability to enter the Model) -> Not currently available, we stick with RTstruct importation and / or manual segmentation
CT Rescaling (not confusing with BRAINS rescaling with is useless in this way) -> I realize that I can work with transform matrixes directly instead of modifying the images which was a bad idea
Geant4 (preferred) or Gate Bridge to perform Dose calculations (currently missing) -> I already have the goal template for Gate but I need some handler to fill it. The idea of Geant4 is still there but is a lot more difficult path
Tumor/Health Structures Segmentation (like the PETTumorSegmentation plugin) -> I realize that with the combination of PETTumorSegmentation and the rest of segmentation tools this can be achieved, just require a written procedure
Pharmacokinetics per Atlas tissue if possible, otherwise per segmented organ, this leads to a matrix to move from dose rate to absorbed dose -> This is NOT available in SLICER, not even as extension, a module is required!! Basically a module that creates a table with different time points and allows to do a time integral. I am doing this by hand in FIJI.
BED calculation -> I am doing this by hand in FIJI. But theoretical is possible in Slicer, just need an external matrix(table) with BED coefficients per structure.
Anything else interesting or missing in the above -> I really need to understand better how to handle multiple time points SPECT/CT studies, so if anyone has some hint they are greatly appreciated
I don’t know what you mean by this. Normally, you let Slicer build all of its dependencies, including VTK.
You’ve posted a lot of questions/ideas. It is more likely that you get feedback if you post one (or maximum a few questions) at a time, about those topics that you are currently working on, preferably in a new topic. You may reference this topic from the new topics to give some background about what you would like to achieve.
If you let Slicer do this, using the VTK from the system it will crash (at least on my system). I only made it to work with the bundled VTK setup is has, but in this case VSCode does not see the VTK as valid package but the system VTK which is not compatible with Slicer’s one. I have to figure out how to solve this.
At the end I might surrender and do a python module after all, CLI is really not setting up. But as I can see there is another conflict, PythonSlicer is 2.7 and refers to VTK6, while in my system there is python 3.7.1 and VTK9. If I try to compile Slicer with my setup it just gives a bunch of errors.
Edit: I successfully installed the jupyter kernel, maybe this is the way to go! everything runs fine there!!
If you can describe specific problems then we can help solving them or explain what are some common alternative approaches.
If you want to learn about how to implement Python scripted modules for Slicer, I would recommend completing programming tutorials, in particular the “Slicer programming tutorial” and the PerkLab’s “Scripting and module development tutorial”.
Slicer uses Python 2.7 and latest VTK (VTK 8.2). Various VTK versions are available in other Python distributions. You can certainly not mix different versions, so if you want to call a Python3 script from Slicer then you need to use the startup environment as described here.
This is a little piece of code that lets you to install any missing package from within the python interpreter itself, just create a file named slicer_python_package_installer.py inside SlicerPlugins folder in your home folder (create if not exists and add it to modules paths). Then add the following
# import pip main
try:
from pip import main as pipmain
except:
from pip._internal import main as pipmain
import importlib
def install_and_import(package):
try:
importlib.import_module(package)
except:
pipmain(['install', package])
importlib.import_module(package)
pass
def install_package(package):
try:
importlib.import_module(package)
except:
pipmain(['install', package])
pass
Then in the python interpreter write the following:
Hi Alex!
How is your project coming along? Is there already something usable or a documentation about what you have already achieved?
Best regards
Felix
Hello, sorry for late response, I was hospitalised for two weeks!
You have to search for OpenDose3D extension in extension manager. Also you can review the code and user manuals here OpenDose / SlicerOpenDose3D · GitLab