openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
725 stars 38 forks source link

[REVIEW]: SlicerSPECTRecon: A 3D Slicer Extension for SPECT Image Reconstruction #7399

Open editorialbot opened 1 month ago

editorialbot commented 1 month ago

Submitting author: !--author-handle-->@ObedDzik<!--end-author-handle-- (Obed Dzikunu) Repository: https://github.com/PyTomography/slicer_spect_recon.git Branch with paper.md (empty if default branch): j_paper Version: v1.0.0 Editor: !--editor-->@mstimberg<!--end-editor-- Reviewers: @zapaishchykova, @cnmy-ro Archive: Pending

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/1140f85a0a6206a6739284f9b22a2150"><img src="https://joss.theoj.org/papers/1140f85a0a6206a6739284f9b22a2150/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/1140f85a0a6206a6739284f9b22a2150/status.svg)](https://joss.theoj.org/papers/1140f85a0a6206a6739284f9b22a2150)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@zapaishchykova & @cnmy-ro, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review. First of all you need to run this command in a separate comment to create the checklist:

@editorialbot generate my checklist

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @mstimberg know.

✨ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest ✨

Checklists

πŸ“ Checklist for @zapaishchykova

πŸ“ Checklist for @cnmy-ro

editorialbot commented 1 month ago

Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks.

For a list of things I can do to help you, just type:

@editorialbot commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@editorialbot generate pdf
editorialbot commented 1 month ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

βœ… OK DOIs

- 10.1109/42.363108 is OK
- 10.1109/42.52985 is OK
- 10.1016/0169-2607(89)90111-9 is OK
- 10.1109/TNS.2002.998681 is OK
- 10.1109/NSSMIC.2006.354345 is OK
- 10.1088/1361-6560/aa6911 is OK
- 10.1097/MNM.0000000000001675 is OK
- 10.1088/1361-6560/aadac1 is OK
- 10.1109/TMI.2003.812251 is OK
- 10.1007/978-1-4614-7657-3_19 is OK
- 10.48550/arXiv.2309.01977 is OK
- 10.1109/NSS/MIC42677.2020.9507966 is OK
- 10.21037/atm-20-5988 is OK

🟑 SKIP DOIs

- None

❌ MISSING DOIs

- None

❌ INVALID DOIs

- None
editorialbot commented 1 month ago

Software report:

github.com/AlDanial/cloc v 1.90  T=0.03 s (1041.3 files/s, 142358.6 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Qt                               1              0              0           1753
Python                          15            105            150           1607
Markdown                         4             94              0            190
TeX                              1             14              0            146
JSON                             3              0              0             64
CMake                            5             12             17             51
YAML                             1              1              4             25
Bourne Shell                     1              0              0              5
-------------------------------------------------------------------------------
SUM:                            31            226            171           3841
-------------------------------------------------------------------------------

Commit count by author:

    84  Obed Dzikunu
    13  Luke Polson
     2  Carlos F. Uribe
     1  pearsomark
editorialbot commented 1 month ago

Paper file info:

πŸ“„ Wordcount for paper.md is 1070

βœ… The paper includes a Statement of need section

editorialbot commented 1 month ago

License info:

βœ… License found: MIT License (Valid open source OSI approved license)

editorialbot commented 1 month ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

mstimberg commented 1 month ago

πŸ‘‹πŸΌ @ObedDzik, @zapaishchykova, @cnmy-ro this is the review thread for the paper. All of our communications will happen here from now on.

As a reviewer, the first step is to create a checklist for your review by entering

@editorialbot generate my checklist

as the top of a new comment in this thread.

There are additional guidelines in the message at the start of this issue.

Please feel free to ping me (@mstimberg) if you have any questions/concerns.

lukepolson commented 1 month ago

@mstimberg we'll be merging the development branch with main soon, I hope this doesn't cause any issues during the review process. If possible, it may be better to check out the development branch when testing the software. Let us know however if there are any issues with this.

mstimberg commented 1 month ago

There is no general issue with this, but please make it clear for the reviewers how to best test/install the software.

zapaishchykova commented 1 month ago

Review checklist for @zapaishchykova

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

zapaishchykova commented 4 weeks ago

Hello! I downloaded the example (- url to sample SPECT file https://drive.google.com/file/d/1bCz_hLgASAiQ38QrRlgrJ3lH_lOlqQb1/view?usp=sharing) and trying to reconstruct, see below the error log that I'm seeing:

Traceback (most recent call last):
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/SlicerSPECTRecon.py", line 474, in onReconstructButton
    print(recon_volume_node.GetID())
AttributeError: 'NoneType' object has no attribute 'GetID'
[Python] Please select a photopeak energy window

Traceback (most recent call last):
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/SlicerSPECTRecon.py", line 453, in onReconstructButton
    recon_volume_node = self.logic.reconstruct( 
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/Logic/SlicerSPECTReconLogic.py", line 128, in reconstruct
    volume_node = self.create_volume_node_from_recon(reconstructed_image_multibed, files_NM)
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/Logic/SlicerSPECTReconLogic.py", line 170, in create_volume_node_from_recon
    saveFilesInBrowser(temp_file_path)
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/Logic/VolumeUtils.py", line 11, in saveFilesInBrowser
    dicomBrowser = slicer.modules.DICOMWidget.browserWidget.dicomBrowser
AttributeError: module 'modules' has no attribute 'DICOMWidget'

FYI using the dev brunch

Minor suggestion is to make errors not "silent" in the python log only, but also guide users that it won't work without photopeak selected

lukepolson commented 4 weeks ago

Thanks for the good suggestion @zapaishchykova : ) . What are your thoughts on us providing some sort of youtube tutorial demonstrating how to use the software, and being explicit about the instructions/required fields to fill in?

zapaishchykova commented 4 weeks ago

@lukepolson - this is a great suggestion, it could be also as simple as instructions in the Readme

lukepolson commented 4 weeks ago

Sounds good, we also have a user manual file as well, but maybe it is difficult to find, so we can make it more explicit in the README.

lukepolson commented 3 weeks ago

@zapaishchykova just wanted to check,

zapaishchykova commented 3 weeks ago

Hi @lukepolson,

No I was not able to reconstruct the image, I used the dev brach, copying the error trace again below:

Traceback (most recent call last):
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/SlicerSPECTRecon.py", line 453, in onReconstructButton
    recon_volume_node = self.logic.reconstruct( 
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/Logic/SlicerSPECTReconLogic.py", line 128, in reconstruct
    volume_node = self.create_volume_node_from_recon(reconstructed_image_multibed, files_NM)
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/Logic/SlicerSPECTReconLogic.py", line 170, in create_volume_node_from_recon
    saveFilesInBrowser(temp_file_path)
  File "/Users/anna/Downloads/slicer_spect_recon-development/SlicerSPECTRecon/Logic/VolumeUtils.py", line 11, in saveFilesInBrowser
    dicomBrowser = slicer.modules.DICOMWidget.browserWidget.dicomBrowser
AttributeError: module 'modules' has no attribute 'DICOMWidget'

Let me know if thats something that I'm clicking wrong or whether I should re-pull the dev brunch again

lukepolson commented 3 weeks ago

Hi @zapaishchykova , are you able to meet for a brief 10 min google meet call right now so I can see the options you've selected? It could be a weird bug that has to do with not selecting something.

lukepolson commented 3 weeks ago

https://meet.google.com/zpz-whbf-ocq

zapaishchykova commented 3 weeks ago

Hi, just to keep a paper trail, we met yesterday with @lukepolson discussed a couple of improvements that they will implement into the repo ( loading CT and then switching to other type, more detailed Readme) and I will resume the review once its ready. Thanks!

lukepolson commented 3 weeks ago

@zapaishchykova I've updated the user manual here, let me know if there are any issues.

cnmy-ro commented 2 weeks ago

Review checklist for @cnmy-ro

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

zapaishchykova commented 2 weeks ago

Hi @lukepolson, great job on the manual! What do you think about adding links to the demo data into the manual?

lukepolson commented 1 week ago

I will do so (and probably move them to zenodo as well). @cnmy-ro how is the review going?

cnmy-ro commented 1 week ago

Hi @lukepolson,

I went though the paper, tested the extension partially, and have some comments.

Docs (User_Manual.md):

  1. Content-wise, the manual seems complete. Though, I think the structure could be improved. For example, moving Installation to the top as the first section.
  2. Regarding installation, it would be helpful to mention the specific name of the extension as it appears in the Slicer package manager. I could not find it there and had to install via downloading the repo.
  3. Perhaps the disclaimer on the academic usage of the software could be moved to the very top of the file where it is distinctly visible and maybe also to the README.md.

Code:

  1. Installation was successful (on Slicer 5.6.2) and I managed to test on sample data, specifically the in vivo SPECT/CT DICOM files and the jaszak_simind_data DICOM files. Though, in the latter sample, the amplitude map wasn't recognized as a valid CT due to missing DICOM tags (e.g. RescaleIntercept).

Paper (paper/paper.md):

  1. I managed to reproduce the result in the figure, though the UI menu I see (below) differs slightly from the figure. Consider updating it.

image

  1. Math typesetting is not rendered in Overview of SlicerSPECTRecon section, first paragraph. The citations and the figure autoref are not rendered properly as well.
  2. Reference list seems to be missing in / not linked to paper.md.
lukepolson commented 5 days ago

Hi @mstimberg @cnmy-ro , we recently made some changes to the library given your comments, so please pull the latest main from the main repo. In addition, I have updated the user manual and created the following youtube demo:

https://www.youtube.com/watch?v=DzV1soWTzEA

The corresponding tutorial data can be found at

https://zenodo.org/records/14172228

Please let us know if there are any other concerns, we hope that both of these will be able to help expedite the review process : )

cnmy-ro commented 4 days ago

Thanks for the informative tutorial video, @lukepolson! I finished testing the data conversion and uncertainty quantification features now.

Regarding my previous comments, kindly ignore comments Docs #2 and Paper #2 and #3, which were not valid as I had missed a few things.

@mstimberg I have checked all the items in my checklist and have thus concluded the review.

mstimberg commented 4 days ago

@lukepolson thanks for your update. @cnmy-ro Many thanks for your review!

@lukepolson, did you also already address the points discussed with @zapaishchykova?

ObedDzik commented 4 days ago

@mstimberg we have made the change to the readme file and moved the data to zenodo. We have also ensured that only the volumes of the required types show up in the drop down of the respective buttons to avoid confusion. We are currently running some tests on this specific change before merging. So we will update @zapaishchykova once we merge our changes.

ObedDzik commented 1 day ago

@zapaishchykova we have merged the changes now to the main branch. We have also updated the paper as requested by @cnmy-ro. Please do let us know if everything works well.

lukepolson commented 23 hours ago

@cnmy-ro I should also note that although the references don't appear explicitly in the markdown file as you commented, running the compile code to generate the PDF of the paper does add them to the file. @zapaishchykova don't hesitate to contact if you have any issues, and be sure to checkout the youtube tutorial linked in the User_Manual : )

cnmy-ro commented 23 hours ago

@lukepolson Yes, checking the PDF version was precisely one of the things I had missed earlier. Hence my comment regarding the references and math typesetting was invalid :)

zapaishchykova commented 23 hours ago

Hi @lukepolson @ObedDzik would you please let me know whether I should take dev or main brunch? Thanks

lukepolson commented 23 hours ago

@zapaishchykova main branch. For brunch, depends how hungry you are...

zapaishchykova commented 2 hours ago

Screenshot 2024-11-22 at 10 27 19β€―AM

Hello @lukepolson, qq: I don't see n.6 from https://github.com/PyTomography/slicer_spect_recon/blob/main/User_Manual.md (see attached screenshot).

Also, what photopeak settings I should use for the example data? Please add that to manual as well

lukepolson commented 52 minutes ago

Hi @zapaishchykova , good catch! : ) I've updated the manual to consider the case for "Joint Multi-Photopeak Reconstruction." For the example data, I go over that in the youtube tutorial I've linked in the user manual. I don't really specify any of the parameters for the example data in the user manual as it's meant to be more of a general reference, but rather defer to the video for tutorial specifics. The reasoning for this is that we reconstruct the data using many different possible configurations in the video tutorial, so there is no one correct way to do it. However, if you have a strong objection to this, then I can pursue adding this to the user manual.