SlicerRt / SlicerRT

Open-source toolkit for radiation therapy research, an extension of 3D Slicer. Features include DICOM-RT import/export, dose volume histogram, dose accumulation, external beam planning (TPS), structure comparison and morphology, isodose line/surface generation, etc.
https://slicerrt.org
124 stars 60 forks source link

TROTS dataset #237

Open ferdymercury opened 8 months ago

ferdymercury commented 8 months ago

Feature suggestion @cpinter :

In "main" 3D Slicer, you can download several patient-examples thanks to the "Download Sample" plugin.

It would be nice if SlicerRt had an equivalent module that would download this dataset: https://sebastiaanbreedveld.nl/trots/

There are zenodo permalinks to it, and h5, .dcm versions as well as conversion scripts.

https://github.com/SebastiaanBreedveld/TROTS/blob/master/Scripts%20DICOM/writeTROTSToDICOM.py

cpinter commented 8 months ago

The SampleData module in Slicer supports extensions. SlicerRT already adds a dataset to this module (see before and after installing SlicerRT).

If it's not important to load this sample data from DICOM, then I can add it the same way as the "TinyRTPatient" that is already added.

ferdymercury commented 8 months ago

If it's not important to load this sample data from DICOM, then I can add it the same way as the "TinyRTPatient" that is already added.

Sounds perfect

cpinter commented 8 months ago

I just looked at the dataset. It consists of many patients (145 it seems). The SampleData module is to load a single volume, which is extended with the segmentation in the case of the above mentioned TinyRtPatient dataset. I cannot add the 145 patients to a single "sample dataset", it would load an unreasonable amount of data. I also would like to avoid adding them one button each. All I can think of as reasonable is to choose a few patients and add those as a button each. Did you have something in mind?

ferdymercury commented 8 months ago

Thanks for the reply!

was thinking more of "6 buttons".

If 25 or 30 is still too much, then maybe adding a popup asking how many patients of the group it should load (which by default should only download one)?

cpinter commented 8 months ago

The SampleData module is in Slicer core and adding new options is not that simple. This would mean adding the feature just for the purposes of one extension, which would be an exception unless there is wider use of this.

So you were thinking that clicking a button would load up to 30 patients and use all of them in the same Slicer run? Can you please let me know how such a Slicer run with 30 patients loaded would look like?

@lassoan Do you have any thoughts on this so far? Thank you!

ferdymercury commented 8 months ago

Mmm I was thinking more that it would download them to the local DICOM database, and let you choose which patient to open. Not opening them all at the same time. (Sorry for being unclear hehe)

lassoan commented 8 months ago

I was confused by what @ferdymercury meant by "loading" images (it rarely makes sense to load dozens of images into Slicer at the same time), but now it is more clear.

I agree with @cpinter that the SampleData module has a specific goal of loading a one or few images by a single click and would not be easy (or even appropriate) to make it download large sets of data.

Downloading an entire data set (and automatically indexing in the DICOM database) could be a useful feature, but probably it should be in a separate module. Would you be interested in developing it? It could be a Python scripted module that could download data sets from various sources by a few clicks. It should also allow displaying a data use agreement that comes with many data sets, manage the used disk space (e.g., allow removing downloaded data sets). It could be nice if it also allowed browsing and loading of a selected image. It would be some effort to implement it and it would only save users a couple of clicks, so developing such a module would be quite low on my priority list, but if you can devote some time for it then it would be nice to have such a module.

cpinter commented 8 months ago

Thanks for the clarification @ferdymercury ! I don't have a good idea how to approach this in a good way. What I can think of now is something similar to TCIA browser or SlicerIDCBrowser, but this dataset is not available in a way that is readily queryable.

What @lassoan says makes a lot of sense, but it's a medium sized project in itself. FYI, Fernando and I have been working together for a while on a small project (#218) and recently submitted a CZI so hopefully more RT stuff on the way, fingers crossed.

What I can suggest as an alternative is to create a Slicer module in a separate extension that does just what you described (each button downloads those datasets and imports them in the current database).

ferdymercury commented 8 months ago

Thanks for the suggestions! Maybe let's keep the issue open until we see if there is some funding, and then we can follow the 'long right' way that @lassoan suggested. Otherwise I think it's just easier to download the dataset by hand and import it into the DICOM, rather than getting too many datasets open at the same time.

cpinter commented 8 months ago

I agree with this assessment @ferdymercury . Maybe one thing you can do, given that you want to use the sample data in groups, that you create a separate DICOM database for each, and just change the database if you want to work with a certain group.

lassoan commented 8 months ago

You may also consider submitting the data set to IDC. You can write to Andrey Fedorov via the Slicer Forum at https://discourse.slicer.org/t/sliceridcbrowser-extension-released/32279?u=lassoan