Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REVIEW]: pypulseq: A Python Package for MRI Pulse Sequence Design #1725

Closed
57 tasks done
whedon opened this issue Sep 11, 2019 · 77 comments
Closed
57 tasks done

[REVIEW]: pypulseq: A Python Package for MRI Pulse Sequence Design #1725

whedon opened this issue Sep 11, 2019 · 77 comments
Assignees
Labels
accepted published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review

Comments

@whedon
Copy link

whedon commented Sep 11, 2019

Submitting author: @imr-framework (Sairam Geethanath)
Repository: https://github.com/imr-framework/pypulseq
Version: 1.2.2r1
Editor: @Kevin-Mattheus-Moerman
Reviewers: @grlee77, @mathieuboudreau, @spinicist
Archive: 10.5281/zenodo.3479527

Status

status

Status badge code:

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

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

@grlee77, @mathieuboudreau, and @spinicist, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

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

Please try and complete your review in the next two weeks

Review checklist for @grlee77

Conflict of interest

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@imr-framework) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

Review checklist for @mathieuboudreau

Conflict of interest

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@imr-framework) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

Review checklist for @spinicist

Conflict of interest

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@imr-framework) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?
@whedon
Copy link
Author

whedon commented Sep 11, 2019

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @grlee77, @mathieuboudreau it looks like you're currently assigned to review this paper 🎉.

⭐ Important ⭐

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

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

@whedon commands

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

@whedon generate pdf

@whedon
Copy link
Author

whedon commented Sep 11, 2019

Attempting PDF compilation. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Sep 11, 2019

@Kevin-Mattheus-Moerman
Copy link
Member

@imr-framework, @grlee77, @mathieuboudreau this is where the review takes place. The reviewers each have a set of tick boxes at the top of this issue to guide them through the process. Let me know if you have any questions. Let the reviewing begin!

@Kevin-Mattheus-Moerman
Copy link
Member

@whedon add @spinicist as reviewer

@whedon
Copy link
Author

whedon commented Sep 12, 2019

OK, @spinicist is now a reviewer

@Kevin-Mattheus-Moerman
Copy link
Member

Thanks for joining @spinicist, I've added a checkbox set for you at the top

@grlee77
Copy link

grlee77 commented Sep 13, 2019

I have performed my initial review.

Summary

The Pypulseq software is a port of the Pulseq Matlab package to Python. This makes the Pulseq format for rapid sequence prototyping more readily available to sites without need for a commercial license. The authors also have used Python-based machine learning in combination with Pypulseq for novel sequence design. The overall goal is to have a tool for rapid sequence development without relying on complicated and proprietary vendor-specific pulse sequence development tools. The advantage of such an approach is greatly reduced development time for simple experiments and rapid prototyping.

I verified that Pulseq files are produced by running the examples. The generated files are plain text and appear to conform to the Pulseq specification. I currently work with Philips MR systems, which is not one of the supported vendors, so I did not attempt to verify proper execution of the Pulseq files on a physical MRI scanner.

The software appears to work as advertised. Its main weakness in relation to the JOSS criteria is the lack of automated testing and/or continuous integration to test across platforms. I opened imr-framework/pypulseq#16 regarding this.

Comments regarding the text of the paper

1.) A brief statement on the limitations of the types of sequences that can be designed with this simplified approach is warranted so as not to oversell the capabilities. For example, it seems that scans requiring features such as cardiac or respiratory gating, feedback from real-time image-based navigators, etc. are not going to be possible. I assume that it also presents difficulty for scans that require more complicated planning such as placement of saturation slabs and or localized shim boxes interactively prior to scan start.

2.) Similarly, is offline image reconstruction (i.e. not with the vendor-supplied reconstructor) always required when using this tool?

3.) I would add a reference to J. Nielsen's TOPPE publication as a closely related work (https://doi.org/10.1002/mrm.26990). (It seems that on the GE platform a Pulseq->TOPPE conversion is done to actually play out the sequences on the scanner?).

4.) For the puposes of the "state of the field" JOSS criteria, it should probably also be mentioned how this framework (and TOPPE) are fast and do not require compilation (as compared to C++ frameworks like ODIN or SequenceTree).

5.) Are there any areas that pypulseq currently offers additional functionality (or lacks functionality) relative to the Matlab implementation? This would be good to know for existing Matlab users thinking of making the switch to Python.

Minor typos/suggested phrasing changes

1.) in the summary:
"easy integrability with" -> "easy integration with"

2.) under the "Statement of Need"
"These are aimed at achieving" <- unclear what "these" is referring to

3.) in the section on the Pulseq format:

"A pulse sequence comprises of pulsed, magnetic field gradient, delay or ADC readout events" ->

"A pulse sequence comprises of radiofrequency pulses, magnetic field gradient waveforms, delays or analog-to-digital converter (ADC) readout events"

4.) Please include the meeting names (International Society for Magnetic Resonance in Medicine?) for the fourth reference and last reference.

@sravan953
Copy link

@grlee77 Thank you for your comments, will work on them and revert. Have a nice weekend!

sravan953 added a commit to imr-framework/pypulseq that referenced this issue Sep 18, 2019
@sravan953
Copy link

sravan953 commented Sep 18, 2019

@grlee77 I have addressed your comments in the most recent commit. Please take a look!

More specifically regarding #5 in your comments: our future efforts involve incorporating SAR computation and real-time pulse sequence design.

@mathieuboudreau
Copy link

@whedon generate pdf

@whedon
Copy link
Author

whedon commented Sep 20, 2019

Attempting PDF compilation. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Sep 20, 2019

@mathieuboudreau
Copy link

Contribution and authorship: Has the submitting author (@imr-framework) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

@imr-framework could you clarify what contribution(s) John Thomas Vaughan Jr. made to this project; I checked out the contributors to the source code here, and he doesn't appear on the list (whereas @tonggehua has made some commits and doesn't appear on the paper).

@mathieuboudreau
Copy link

@imr-framework does there exist some kind of validator tool to evaluate if a generated *.seq file is (1) properly formatted, and (2) doesn't exceed vendor-imposed hardware limits. I don't expect that this exists within your software, since *.seq files have been developed previously, I'm wondering if there's an external tool that already does this?

@sravan953
Copy link

@mathieuboudreau
Regarding contributions-
John Thomas Vaughan Jr. has been principally involved in the design and review of this project, like for Virtual Scanner. We have been using PyPulseq internally, and the one commit from @tonggehua was regarding documentation. The authors list was finalised after internal deliberations.

Regarding the formatting-
We utilised a diffcheck tool to ensure that the *.seq files generated by PyPulseq match with Pulseq 1.2.0's files. We performed these checks for the demo scripts that have been bundled. The only difference between *.seq files generated by PyPulseq and Pulseq 1.2.0 is the comment on line 2 in every *.seq file which indicates which tool generated the file.

Regarding an external validator tool-
The check_timing() and test_report() methods can be leveraged to ensure that the designed pulse sequence is in accordance with the specified gradient raster time limits. Subsequently, a successfully generated *.seq file might or might not play on the scanner, depending on whether the hardware limits were violated or not.

@mathieuboudreau
Copy link

Ok great, thanks for all that additional information!

@whedon
Copy link
Author

whedon commented Oct 11, 2019

OK. 1.2.2r1 is the version.

@Kevin-Mattheus-Moerman
Copy link
Member

@whedon set 10.5281/zenodo.3479527 as archive

@whedon
Copy link
Author

whedon commented Oct 11, 2019

OK. 10.5281/zenodo.3479527 is the archive.

@Kevin-Mattheus-Moerman
Copy link
Member

@openjournals/joss-eics I recommend this paper for acceptance in JOSS.

@sravan953 the editor in chief on call will take over now. They might have additional comments on your paper.

@Kevin-Mattheus-Moerman
Copy link
Member

Kevin-Mattheus-Moerman commented Oct 11, 2019

@sravan953 one last point from me. I would recommend that you update your paper title (and also the matched Zenodo archive title) to be a bit more descriptive, e.g.:
PyPulseq: A Python Package for MRI Pulse Sequence Design
Something like that would help make your paper more discoverable.
@arfon is this something that we can change just in the PDF or do we need to propagate the title change anywhere else?

@arfon
Copy link
Member

arfon commented Oct 11, 2019

@arfon is this something that we can change just in the PDF or do we need to propagate the title change anywhere else?

Just the paper.md should do it.

@sravan953
Copy link

@whedon generate pdf

@whedon
Copy link
Author

whedon commented Oct 11, 2019

Attempting PDF compilation. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Oct 11, 2019

@sravan953
Copy link

@Kevin-Mattheus-Moerman @arfon Updated the title on the README.md, Zenodo archive and on paper.md.

@labarba labarba changed the title [REVIEW]: pypulseq [REVIEW]: pypulseq: A Python Package for MRI Pulse Sequence Design Oct 11, 2019
@labarba
Copy link
Member

labarba commented Oct 11, 2019

I fixed in-text citation syntax and a terminology issue in imr-framework/pypulseq#23

@labarba
Copy link
Member

labarba commented Oct 11, 2019

@whedon accept

@whedon
Copy link
Author

whedon commented Oct 11, 2019

Attempting dry run of processing paper acceptance...

@whedon
Copy link
Author

whedon commented Oct 11, 2019


OK DOIs

- 10.1002/mrm.26235 is OK
- 10.1016/j.mri.2018.03.008 is OK
- 10.1016/j.jmr.2004.05.021 is OK
- 10.1002/mrm.25640 is OK
- 10.1002/mrm.26990 is OK
- 10.1615/CritRevBiomedEng.2019029380 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@whedon
Copy link
Author

whedon commented Oct 11, 2019

Check final proof 👉 openjournals/joss-papers#1023

If the paper PDF and Crossref deposit XML look good in openjournals/joss-papers#1023, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true

@labarba
Copy link
Member

labarba commented Oct 12, 2019

@whedon accept deposit=true

@whedon
Copy link
Author

whedon commented Oct 12, 2019

Doing it live! Attempting automated processing of paper acceptance...

@whedon
Copy link
Author

whedon commented Oct 12, 2019

🐦🐦🐦 👉 Tweet for this paper 👈 🐦🐦🐦

@whedon
Copy link
Author

whedon commented Oct 12, 2019

🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited 👉 Creating pull request for 10.21105.joss.01725 joss-papers#1024
  2. Wait a couple of minutes to verify that the paper DOI resolves https://doi.org/10.21105/joss.01725
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! 🎉🌈🦄💃👻🤘

Any issues? notify your editorial technical team...

@labarba
Copy link
Member

labarba commented Oct 12, 2019

Congratulations, @imr-framework, your JOSS paper is published! 🚀

Huge thanks to our editor: @Kevin-Mattheus-Moerman, and the reviewers: @grlee77, @mathieuboudreau, @spinicist — your contributions to JOSS are greatly appreciated 🙏

@labarba labarba closed this as completed Oct 12, 2019
@whedon
Copy link
Author

whedon commented Oct 12, 2019

🎉🎉🎉 Congratulations on your paper acceptance! 🎉🎉🎉

If you would like to include a link to your paper from your README use the following code snippets:

Markdown:
[![DOI](https://joss.theoj.org/papers/10.21105/joss.01725/status.svg)](https://doi.org/10.21105/joss.01725)

HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.01725">
  <img src="https://joss.theoj.org/papers/10.21105/joss.01725/status.svg" alt="DOI badge" >
</a>

reStructuredText:
.. image:: https://joss.theoj.org/papers/10.21105/joss.01725/status.svg
   :target: https://doi.org/10.21105/joss.01725

This is how it will look in your documentation:

DOI

We need your help!

Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:

@sairamgeethanath
Copy link

Congratulations, @imr-framework, your JOSS paper is published! 🚀

Huge thanks to our editor: @Kevin-Mattheus-Moerman, and the reviewers: @grlee77, @mathieuboudreau, @spinicist — your contributions to JOSS are greatly appreciated 🙏

Many thanks to all the reviewers @mathieuboudreau @spinicist @grlee77, the editor @Kevin-Mattheus-Moerman and the associate editor in chief @labarba for the time and inputs to make our work better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review
Projects
None yet
Development

No branches or pull requests

9 participants