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]: Madym: A C++ toolkit for quantitative DCE-MRI analysis #3523

Closed
40 tasks done
whedon opened this issue Jul 22, 2021 · 48 comments
Closed
40 tasks done

[REVIEW]: Madym: A C++ toolkit for quantitative DCE-MRI analysis #3523

whedon opened this issue Jul 22, 2021 · 48 comments
Assignees
Labels
accepted C++ C CMake published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review

Comments

@whedon
Copy link

whedon commented Jul 22, 2021

Submitting author: @michaelberks (Michael Berks)
Repository: https://gitlab.com/manchester_qbi/manchester_qbi_public/madym_cxx/
Version: v4.15.2
Editor: @emdupre
Reviewer: @agahkarakuzu, @matteomancini
Archive: 10.5281/zenodo.5554771

⚠️ JOSS reduced service mode ⚠️

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

Status

status

Status badge code:

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

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

@agahkarakuzu & @matteomancini, 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 @emdupre 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

Review checklist for @agahkarakuzu

Conflict of interest

  • I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

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 (@michaelberks) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
  • Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines

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: Does the paper have a section titled 'Statement of Need' that clearly states 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 @matteomancini

Conflict of interest

  • I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

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 (@michaelberks) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
  • Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines

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: Does the paper have a section titled 'Statement of Need' that clearly states 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 Jul 22, 2021

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

⚠️ JOSS reduced service mode ⚠️

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

⭐ 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 Jul 22, 2021

Wordcount for paper.md is 928

@whedon
Copy link
Author

whedon commented Jul 22, 2021

Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1002/jmri.1880070113 is OK
- 10.1002/mrm.22005 is OK

MISSING DOIs

- 10.1038/nrclinonc.2012.2 may be a valid DOI for title: Dynamic contrast-enhanced MRI in clinical trials of antivascular therapies
- 10.1038/s41467-018-07174-1 may be a valid DOI for title: Plasma Tie2 is a tumor vascular response biomarker for VEGF inhibitors in metastatic colorectal cancer
- 10.1002/mrm.28798 may be a valid DOI for title: A model selection framework to quantify microvascular liver function in gadoxetate-enhanced MRI: Application to healthy liver, diseased tissue, and hepatocellular carcinoma

INVALID DOIs

- https://doi.org/10.1002/mrm.27939 is INVALID because of 'https://doi.org/' prefix

@whedon
Copy link
Author

whedon commented Jul 22, 2021

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@whedon
Copy link
Author

whedon commented Jul 22, 2021

Software report (experimental):

github.com/AlDanial/cloc v 1.88  T=1.90 s (107.6 files/s, 287645.3 lines/s)
-----------------------------------------------------------------------------------
Language                         files          blank        comment           code
-----------------------------------------------------------------------------------
C++                                 94          42358         109983         273968
HTML                                 1           7301              0          45503
C/C++ Header                        73           9705          31461          20891
Qt                                   2              0              0           2302
Python                               9            441            830           1317
CMake                                8            178            161            809
Markdown                             4             56              0            181
YAML                                 2              9              8            152
Dockerfile                           4             28             21            114
TeX                                  1             11              0            114
Bourne Shell                         2              0              0             11
DOS Batch                            2              0              0             10
JSON                                 1              0              0              8
TOML                                 1              0              0              7
Windows Resource File                1              0              0              1
-----------------------------------------------------------------------------------
SUM:                               205          60087         142464         345388
-----------------------------------------------------------------------------------


Statistical information for the repository 'a002dd5ec96a97dd791be651' was
gathered on 2021/07/22.
The following historical commit information, by author, was found:

Author                     Commits    Insertions      Deletions    % of changes
Michael Berks                   23        169135           2774           94.43
michaelberks                    36          6883           3252            5.57
momeemb2                         1             3              1            0.00

Below are the number of rows from each author that have survived and are still
intact in the current revision:

Author                     Rows      Stability          Age       % in comments
Michael Berks                56            0.0          0.4                3.57
michaelberks             469362         6819.1          0.1               34.44

@whedon
Copy link
Author

whedon commented Aug 5, 2021

👋 @agahkarakuzu, please update us on how your review is going (this is an automated reminder).

@whedon
Copy link
Author

whedon commented Aug 5, 2021

👋 @matteomancini, please update us on how your review is going (this is an automated reminder).

@matteomancini
Copy link

I have started working on my revision and I should be done by the 27th of August.

@emdupre
Copy link
Member

emdupre commented Aug 23, 2021

Thank you, @matteomancini ! If you have any difficulties in completing your review this week, please just let me know.

Otherwise, as you're working through the checklist above, please add a pointer to this issue on any issues you may open on the software repo so they are cross-linked.

@emdupre
Copy link
Member

emdupre commented Aug 23, 2021

👋 Hi @agahkarakuzu -- have you had a chance to take a look at the paper and start working through the review checklist ? If you're facing any issues here, please let me know.

@agahkarakuzu
Copy link

Hi @emdupre I'll finish my review this week, sorry for the delay. Thank you for the reminder!

@agahkarakuzu
Copy link

agahkarakuzu commented Aug 23, 2021

Thank you so much @michaelberks for the amazing codebase and your patience as it took me a while to give this review a stab.

My review will follow the principles as they are outlined in the paper.

Ease-of-use

I was able to find everything a user may need quite easily, from this video to a guideline on how to run example scripts. GUI availability makes this tool really attractive for clinical scientists!

Suggestion

I think having an easier to find layman download instructions would make it even more attractive. For example instead of Installing from pre-built binaries, a separate DOWNLOAD MADYM (listing different OS) section appearing earlier would help non-programming users.

Minor issue

  • I cannot access the Doxygen documentation at this link, which I found here.

I was able to successfully build target doxygen API docs, I guess it is a matter of website deployment (or access on my end) issue.

  • I was going through the publications, noticed that the following is a duplicate:
O'connor, J. P. B., et al. "DCE-MRI biomarkers of tumour heterogeneity predict CRC liver metastasis shrinkage following bevacizumab and FOLFOX-6." British journal of cancer 105.1 (2011): 139-145.
  • Pre-built binaries for Windows, MacOS and Linux are available on request. (README)

I was able to find them without requesting, rewording would be helpful.

Reproducible research

Transparency and the organization of fitting configs are laudable! I am yet to test the user experience for dealing with these configurations across interfaces, but this is a really critical issue, nicely addressed by this software. Some other technical aspects of a reproducible codebase are nicely backed up by a through CI/CD pipeline and containers (thank you so much for sharing Dockerfile(s)). I am happy to see MR-Hub credited in the paper and the software is listed there, solving the second half of the reproducibility problem (social) by reaching out to the target crowd.

Suggestion

Nothing to add.


I will add the remaining of my review (Extensibility and Performance) after testing the software both using the pre-compiled binaries and the binaries I compiled. I was not able to pass -D BUILD_QT_GUI=ON due to a cpp17 vs 14 conflict, I will let you know if I can resolve it on osx, so that it can be documented.

Not sure if testing all the wrappers is within the scope of this review, but I'll give it a try anyway.

@michaelberks
Copy link

@agahkarakuzu thank you very much for the kind words, and very helpful review.

I will try to respond fully to some other of the other points in the next couple of weeks (I'm pretty tied up for the next few days, then on leave for a week from Friday), however I've fixed the first minor issue...

The doxygen link in the wiki was pointing to an old link on my university pages, before I worked out how to use GitLab's awesome pages feature to automatically generate doxy docs during CI/CD. The doxygen documentation is now here, and I have corrected the link in the library wiki here

Re the wrappers. I need to update the paper as I have changed how madym interacts with the python wrapper. The python wrapper is now included directly with the C++ source code, with instructions on the wiki how to use. The link in the paper points to an obsolete repository, the contents of which have been moved to a new project QbiPy here. However the user doesn't need to access QbiPy directly because it is available on PyPi and will be automatically installed as a dependency of the included python wrapper.

The Matlab wrapper is as described in its own repo.

I totally understand if trying them is beyond the scope of this review, but if you did try them I'd really appreciate the feedback - they've been used internally in the lab, but I don't think anyone outside the lab has tried them yet so it'd be great to know how easy you find them to set up. Python in particular I've tried to make the installation seamless, but things always seem to go wrong with conda environments, pip install etc!

If you need any further info/help re the Qt/BUILD_QT_GUI=ON issue, please let me know. I've managed to build MacOS 10.13, 10.14 and 11 - but every different combination of OS and Xcode-tools seems to throw up something new!

Thanks again for your time in reviewing the code.

@matteomancini
Copy link

Thank you @michaelberks for working on this very interesting project. This software is an interesting contribution to the landscape of quantitative MRI tools, and for sure the first tool I would consider trying out if I was given DCE-MRI data.

I will follow the JOSS checklist for this review. All the general checks are in place. In terms of functionality, I've compiled Madym on macOS (10.15.7) and on Ubuntu (18.04) without any issue. I also managed without issues to enable the GUI on macOS. I think that the instructions are clear, and especially the detailed ones provide a lot of elements to make sure that dependencies and compilation go well. One minor suggestion I would make is to make each point of the TL;DR instructions an anchor link to the related detailed section: when looking the first time at the README I thought the detailed instructions were all about the dependencies, and only later I realised that there were more details about the actual compilation process. Also, as @agahkarakuzu mentioned, it would make sense to link the pre-built binaries repo (which is already open to everyone - and that's great!) rather than making those available on request (that statement never sounds encouraging!).

In terms of functionality, I managed to immediately run the example analysis on the provided data using the related script for the command-line case. For the GUI, the instructions provided in the wiki are also quite detailed. The testing process is automated and immediate to run as well.
The only functionality bit that would benefit from some documentation is the Python APIs: currently, in the python folder, the related README contains only a link to an empty wiki within a different project, madym_python. However, when navigating to the root of this project, it is mentioned that the Python APIs are now developed as QbiPy. It would be easier to link directly this updated repo.
In any case, I managed to install the Python APIs directly from the python folder of Madym running python setup.py install. I had a couple of minor issues that would good to mention in some related requirements - one was the need for tcltk from brew, and the other the need for gitpython. Weirdly enough, it is already listed in setup.cfg, but I had anyways to install it manually.
One final thing missing in terms of documentation is some guidelines for potential contributions.

In terms of the software paper, it is well written and to the point. The summary should be enough to explain it to a non-specialistic audience, although a general reference (if the reference list length allows it) about DCE-MRI would help an inexperienced reader. The statement of need makes clearly the point of the purpose of this project, but what is currently missing is the current state of the field: from the paper it is not currently clear if Madym is the first of its kind or if there are other open-source alternatives to perform similar analyses. If the length of the paper is already at the limit, it should be possible to shorten the statement of need to save enough words to fill the current state gap.

Once again, I think this is great work and a useful addition to qMRI tools, so once these minor issues are fixed I looked forward to see this features in JOSS!

@agahkarakuzu
Copy link

agahkarakuzu commented Aug 25, 2021

I was able to test the software, so I am moving on with my review following the same structure above:

Performance

Below are the logs from Madym I built from sources (command line):

Fitting mdm_DCEModelETM to 294 voxels
10% voxels fitted.
20% voxels fitted.
30% voxels fitted.
40% voxels fitted.
50% voxels fitted.
60% voxels fitted.
70% voxels fitted.
80% voxels fitted.
90% voxels fitted.
100% voxels fitted.
mdm_VolumeAnalysis: Processed 294 voxels in 46.4153s.
---
Fitting mdm_DCEModelETM to 294 voxels
10% voxels fitted.
20% voxels fitted.
30% voxels fitted.
40% voxels fitted.
50% voxels fitted.
60% voxels fitted.
70% voxels fitted.
80% voxels fitted.
90% voxels fitted.
100% voxels fitted.
mdm_VolumeAnalysis: Processed 294 voxels in 49.1758s.
---
Fitting mdm_DCEModelETM to 294 voxels
10% voxels fitted.
20% voxels fitted.
30% voxels fitted.
40% voxels fitted.
50% voxels fitted.
60% voxels fitted.
70% voxels fitted.
80% voxels fitted.
90% voxels fitted.
100% voxels fitted.
mdm_VolumeAnalysis: Processed 294 voxels in 19.188s.

Following the processing, I obtained the following csv for summary stats:

image

  • The results from CLI (built from src) and GUI (pre-built) were identical and the performance was quite similar.

image

  • Performance matched the description above, for T1 on a scale of a few microseconds and for the extended-TOFTS model (I believe this is named as TOFTS only on GUI) fitting took ~23ms per voxel. So I checked the performance box.

Suggestions

None.

Extensibility & Interoperability

The organization of madym_cxx codebase is easy to follow and the design allows extending functionality without much hurdle for someone familiar with cpp. Thank you for fixing the doxygen API docs page!

Python interface

As this has become a project of its own, I won't incorporate a review on QbiPy here. On a quick note, this link provided in python/README.md file resolves into an empty page (upper directory contains the relevant note).

Matlab interface

I started with Madym usage instructions.docx, run_madym_lite and run_madym_T1 sections are missing. There's also this wiki page for matlab interace, which was better organized.

General comment

Looks like the main project is split between several repos and documentation pages (and other fies). I suggest centralizing the documentation and removing docx etc. documentation resources from individual repositories to make it easier for users to follow.

Comments specific to the Matlab wrapper

If I understood correctly, part of madym_matlab are actually interfacing with the cxx, but part of it is written in matlab, but mirroring the functionality. If so, do you have any tests/reports to compare the outputs between two implementations?

Other than that, I was able to use the matlab wrappers to run madym_cxx binaries easily. I have not tried matlab-native ones.

Regarding configuration/log/protocol files and map units

  • Example config
T1_method = VFA
T1_vols = [FA_1.hdr,FA_2.hdr,FA_3.hdr]
img_fmt_r = ANALYZE
img_fmt_w = ANALYZE
no_audit = 1
output = madym_output/T1
overwrite = 1
roi = ""
  • Example xtr
voxel dimensions:	2.929688 2.929688 4.000000
flip angle:	2.000000
TR:	4.000000
timestamp:	12 32 40.250000 123240.250000
  • Example log
******************************************************
Starting madym_T1...
******************************************************

Log opened at 2021-Aug-25 11:48:46
User: agah;   Host: Agahs-MacBook-Pro-2.local
Ran in: /Users/agah/Desktop/neuropoly/madym_cxx/examples/test_dataset/vfa

Command args: madym_T1_GUI

Config file saved to /Users/agah/Desktop/neuropoly/madym_cxx/examples/test_dataset/vfa/madym_output/T1/madym_T1_GUI_20210825_114846_config.txt
T1 input loaded from /Users/agah/Desktop/neuropoly/madym_cxx/examples/test_dataset/vfa/FA_1.hdr
T1 input loaded from /Users/agah/Desktop/neuropoly/madym_cxx/examples/test_dataset/vfa/FA_2.hdr
T1 input loaded from /Users/agah/Desktop/neuropoly/madym_cxx/examples/test_dataset/vfa/FA_3.hdr
Fitted 30720 voxels in 0.376654s
WARNING in mapT1: 647 voxels returned fit errors
madym_T1_GUI completed successfully.

Log closed at 2021-Aug-25 11:48:47
  1. The toolbox has a flexible I/O framework for working with different data formats and it has its own convention/converters (madym_DicomConvert, madym_makeXtr etc.). Have you considered choosing a community data standard (such as BIDS, now there is a qMRI component) as the default I/O convention for madym? This way picking up files & acquisition protocols would become easier and datasets would be eventually easier to share. I think no action is needed at this stage regarding your JOSS submission, but in the long run having multiple qMRI-centric software sharing the same data convention would boost interoperability.
  2. Can you make log files report which input file is associated with which acquisition parameters? As the filenames do not follow a standard convention to denote which parameter is varying and how they are sorted, this could come in handy for debugging.
  3. For quantitative map units, I would like to suggest BIDS again, unless you have strong reasons not to do so.

from the paper it is not currently clear if Madym is the first of its kind or if there are other open-source alternatives to perform similar analyses.

I agree with @matteomancini, most of the open-source qMRI software has a lot in common with some overlapping functionality, but each differ in application focus, language choice, performance etc.

You can see PyQMRI's JOSS article as an example for a statement on how Madym differs from other existing open-source qMRI software.

It is fascinating that the JOSS is accommodating more and more qMRI software articles (QUIT, qMRLab, PyQMRI) and I am looking forward to seeing Madym added to that list following this revision. Thank you for the great work @michaelberks!

@michaelberks
Copy link

@matteomancini thank-you very much for adding your review and the helpful suggestions, and to @agahkarakuzu for the detailed update.

As previously mentioned, I'm away on leave from tomorrow for a week, but on my return I will:

  1. Put together a summary of points to address from your reviews
  2. Lay out a timetable for making the necessary changes

Thanks again for taking the time to make such helpful feedback, it really is appreciated.

@emdupre
Copy link
Member

emdupre commented Sep 27, 2021

👋 Hi @michaelberks, I just wanted to check-in on this and make sure you weren't facing any logistical blocks. If there's something I can provide to help in the review process, please let me know.

@michaelberks
Copy link

Hi @emdupre apologies for delay, I was off work for a few days when I got back from leave and then had some conference deadlines to meet.

Summarising the main points raised, I will be fixing the following:

Minor fixes

  • Rewording the main repo README (and home page on wiki) to reflect that binaries do not need to be requested as there is now a permanent link where they can be downloaded without request
  • Updating the doxygen docs link (already complete)
  • Fix link in the python source code README from the outdated python repo wiki to the correct page in the main project wiki
  • Tidy up the Matlab documentation (eg removing the out-of-date docs - this was actually a mistake that these made it from the private to the public repo as the referred to old internal processes)
  • Add a comparison to other qMRI/DCE_MRI toolboxes in the text of the JOSS paper
  • Report in the log files where acquisition parameters have been read from. This will need some further thought on how best to do this, as there is deliberate separation between the loading of parameters from files into the internal image objects (handled by the file manager class) and how the processing pipelines make use of these parameters from image objects. I will create this as a specific issue to fix.

Changes requiring more major work

  • Using BIDS to standardise organisation file structures, storing of acquisition parameters and formalising units of parameters. I think this is a great idea, and by coincidence exploring BIDS was recommended to me recently from another colleague for standardising data storage. @agahkarakuzu suggests this is not a modification they see as necessary to complete the JOSS review and it would be a major change. What I propose is adding an entry to the future goals section of the wiki describing plans to incorporate BIDS (linking back to this review), as well as creating a new issue in the main GitLab repo. That way the intention to make this change will be flagged for current users, and there will be traceable trail back to where the suggestion has come from. I can then look to implement the changes properly in a major version update.

I should be able to complete the minor fixes today and will update when done.

Please let me know if you think there is anything I have missed.

@michaelberks
Copy link

I have now completed the above tasks. Some more details below

Program logs

For detailing how acquisition parameters are set from XTR files, the program logs now look something like this:

T1 mapping

C:\isbe\qbi\madym_testing\examples>"%MADYM_ROOT%\madym_T1" --config madym_T1_config.txt --cwd test_dataset
Log opened at 2021-Oct-04 13:16:36
User: momeemb2;   Host: m-uw10s4eq2539
Ran in: C:\isbe\qbi\madym_testing\examples\test_dataset

Command args: C:\isbe\code\manchester_qbi\public\madym_cxx_builds\msvc2019_no_gui\bin\Release\madym_T1 --config madym_T1_config.txt --cwd test_dataset

Config file saved to C:\isbe\qbi\madym_testing\examples\test_dataset\madym_output/T1\madym_T1_20211004_131636_config.txt
Acquisition parameters for T1 mapping input image 1 set from C:\isbe\qbi\madym_testing\examples\test_dataset\vfa/FA_1.xtr:
    TR = 4 ms
    FA = 2 deg (only required for VFA method)
    TI = -nan(ind) ms (only required for inversion recovery method)
T1 input loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\vfa/FA_1.hdr
Acquisition parameters for T1 mapping input image 2 set from C:\isbe\qbi\madym_testing\examples\test_dataset\vfa/FA_2.xtr:
    TR = 4 ms
    FA = 10 deg (only required for VFA method)
    TI = -nan(ind) ms (only required for inversion recovery method)
T1 input loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\vfa/FA_2.hdr
Acquisition parameters for T1 mapping input image 3 set from C:\isbe\qbi\madym_testing\examples\test_dataset\vfa/FA_3.xtr:
    TR = 4 ms
    FA = 20 deg (only required for VFA method)
    TI = -nan(ind) ms (only required for inversion recovery method)
T1 input loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\vfa/FA_3.hdr
Fitted 30720 voxels in 0.277312s
WARNING in mapT1: 647 voxels returned fit errors
C:\isbe\code\manchester_qbi\public\madym_cxx_builds\msvc2019_no_gui\bin\Release\madym_T1 completed successfully.

Log closed at 2021-Oct-04 13:16:36

TK model fitting

"%MADYM_ROOT%\madym_DCE" --config madym_ETM_pop_config.txt --cwd test_dataset
Log opened at 2021-Oct-04 13:22:54
User: momeemb2;   Host: m-uw10s4eq2539
Ran in: C:\isbe\qbi\madym_testing\examples\test_dataset

Command args: C:\isbe\code\manchester_qbi\public\madym_cxx_builds\msvc2019_no_gui\bin\Release\madym_DCE --config madym_ETM_pop_config.txt --cwd test_dataset

Config file saved to C:\isbe\qbi\madym_testing\examples\test_dataset\madym_output/ETM_pop\madym_DCE_20211004_132254_config.txt
error_tracker loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\madym_output/T1/error_tracker.hdr
ROI loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\roi/tumour.hdr
Acquisition parameters for dynamic series set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr:
    TR = 4 ms
    FA = 20 deg
Time t(1) = 754.169 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 1 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1
Time t(2) = 754.252 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 2 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_2
Time t(3) = 754.335 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 3 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_3
Time t(4) = 754.418 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 4 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_4
Time t(5) = 754.501 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 5 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_5
Time t(6) = 754.583 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 6 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_6
Time t(7) = 754.667 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 7 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_7
Time t(8) = 754.749 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 8 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_8
Time t(9) = 754.832 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 9 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_9
Time t(10) = 754.915 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 10 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_10
Time t(11) = 754.998 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 11 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_11
Time t(12) = 755.081 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 12 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_12
Time t(13) = 755.164 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 13 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_13
Time t(14) = 755.247 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 14 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_14
Time t(15) = 755.33 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 15 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_15
Time t(16) = 755.413 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 16 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_16
Time t(17) = 755.496 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 17 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_17
Time t(18) = 755.579 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 18 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_18
Time t(19) = 755.662 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 19 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_19
Time t(20) = 755.745 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 20 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_20
Time t(21) = 755.827 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 21 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_21
Time t(22) = 755.911 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 22 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_22
Time t(23) = 755.993 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 23 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_23
Time t(24) = 756.076 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 24 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_24
Time t(25) = 756.159 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 25 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_25
Time t(26) = 756.242 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 26 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_26
Time t(27) = 756.325 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 27 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_27
Time t(28) = 756.408 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 28 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_28
Time t(29) = 756.491 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 29 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_29
Time t(30) = 756.574 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 30 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_30
Time t(31) = 756.657 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 31 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_31
Time t(32) = 756.74 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 32 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_32
Time t(33) = 756.823 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 33 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_33
Time t(34) = 756.906 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 34 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_34
Time t(35) = 756.989 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 35 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_35
Time t(36) = 757.072 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 36 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_36
Time t(37) = 757.155 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 37 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_37
Time t(38) = 757.237 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 38 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_38
Time t(39) = 757.32 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 39 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_39
Time t(40) = 757.403 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 40 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_40
Time t(41) = 757.486 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 41 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_41
Time t(42) = 757.569 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 42 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_42
Time t(43) = 757.652 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 43 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_43
Time t(44) = 757.735 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 44 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_44
Time t(45) = 757.818 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 45 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_45
Time t(46) = 757.901 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 46 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_46
Time t(47) = 757.984 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 47 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_47
Time t(48) = 758.067 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 48 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_48
Time t(49) = 758.15 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 49 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_49
Time t(50) = 758.233 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 50 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_50
Time t(51) = 758.316 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 51 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_51
Time t(52) = 758.398 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 52 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_52
Time t(53) = 758.482 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 53 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_53
Time t(54) = 758.564 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 54 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_54
Time t(55) = 758.647 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 55 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_55
Time t(56) = 758.73 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 56 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_56
Time t(57) = 758.813 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 57 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_57
Time t(58) = 758.896 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 58 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_58
Time t(59) = 758.979 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 59 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_59
Time t(60) = 759.062 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 60 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_60
Time t(61) = 759.145 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 61 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_61
Time t(62) = 759.228 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 62 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_62
Time t(63) = 759.311 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 63 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_63
Time t(64) = 759.394 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 64 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_64
Time t(65) = 759.477 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 65 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_65
Time t(66) = 759.56 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 66 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_66
Time t(67) = 759.642 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 67 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_67
Time t(68) = 759.726 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 68 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_68
Time t(69) = 759.808 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 69 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_69
Time t(70) = 759.891 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 70 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_70
Time t(71) = 759.974 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 71 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_71
Time t(72) = 760.057 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 72 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_72
Time t(73) = 760.14 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 73 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_73
Time t(74) = 760.223 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 74 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_74
Time t(75) = 760.306 mins set from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_1.xtr
dynamic image 75 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\dynamic\dyn_75
T1 loaded from C:\isbe\qbi\madym_testing\examples\test_dataset\madym_output/T1/T1.hdr
Fitting mdm_DCEModelETM to 294 voxels
10% voxels fitted.
20% voxels fitted.
30% voxels fitted.
40% voxels fitted.
50% voxels fitted.
60% voxels fitted.
70% voxels fitted.
80% voxels fitted.
90% voxels fitted.
100% voxels fitted.
mdm_VolumeAnalysis: Processed 294 voxels in 10.6417s.
0 voxels returned fit errors

IF successfully written to C:\isbe\qbi\madym_testing\examples\test_dataset\madym_output/ETM_pop/AIF.txt
C:\isbe\code\manchester_qbi\public\madym_cxx_builds\msvc2019_no_gui\bin\Release\madym_DCE completed successfully.

Log closed at 2021-Oct-04 13:23:09

Related work

I have added a new Related Work section in the paper.md describing other open-source DCE-MRI packages and Madym's relationship to them.

BIDS

Regarding incorporating BIDS into Madym, I have added the following issue on the main project issue board.

Summary

I have made the above changes on a new branch 61-joss-review-fixes, but have not yet merged this branch with main, and so have not yet triggered new binary builds.

If ok, I will delay the merge until the review is complete, so we don't have unnecessary version increments. Please let me know if there are any other changes you would like to see me make.

@agahkarakuzu
Copy link

@michaelberks thank you for addressing the issues I raised, I have checked all the boxes following your update. I did not know about some of the tools you mentioned in the related work section, discovering that there are more open-source qMRI projects than I knew always cheers me up!

I am glad that BIDS compatibility is now on the to-do list of your project, I hope that it will foster interoperability of publicly available (q)MRI software in the years to come.

🟢 Upon the latest changes @michaelberks made, my review is completed. I give my green light to this article for publication in JOSS. Once again, thank you for the amazing job!

@michaelberks
Copy link

Thank-you again for your very helpful review comments @agahkarakuzu

@matteomancini
Copy link

@michaelberks thanks for addressing most comments. The only things currently missing are the following:

  • (if feasible) make each point of the TL;DR instructions an anchor link to the related detailed section;
  • guidelines for potential contributions (e.g. a CONTRIBUTING.md file?);
  • a general reference about DCE-MRI when mentioned in the summary for the first time (if the reference list length allows it).

@emdupre
Copy link
Member

emdupre commented Oct 5, 2021

Thank you again, @agahkarakuzu and @matteomancini for your thoughtful reviews and @michaelberks for your impressive work on Madym !

At this point could you please:

  • Make a tagged release of your software, and list the version tag of the archived version here.
  • Archive the reviewed software in Zenodo or a similar service (e.g., figshare, an institutional repository)
  • Check the archival deposit (e.g., in Zenodo) has the correct metadata.
  • Please list the DOI of the archived version here.

I can then move forward with accepting the submission 🚀

@openjournals openjournals deleted a comment from whedon Oct 5, 2021
@openjournals openjournals deleted a comment from whedon Oct 5, 2021
@emdupre
Copy link
Member

emdupre commented Oct 5, 2021

@whedon generate pdf from branch 61-joss-review-fixes

@whedon
Copy link
Author

whedon commented Oct 5, 2021

Attempting PDF compilation from custom branch 61-joss-review-fixes. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Oct 5, 2021

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@emdupre
Copy link
Member

emdupre commented Oct 5, 2021

@whedon check references from branch 61-joss-review-fixes

@whedon
Copy link
Author

whedon commented Oct 5, 2021

Attempting to check references... from custom branch 61-joss-review-fixes

@whedon
Copy link
Author

whedon commented Oct 5, 2021

Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1002/mrm.27939 is OK
- 10.1038/nrclinonc.2012.2 is OK
- 10.1038/s41467-018-07174-1 is OK
- 10.1002/jmri.1880070113 is OK
- 10.1002/(SICI)1522-2586(199909)10:3<223::AID-JMRI2>3.0.CO;2-S is OK
- 10.1002/mrm.22005 is OK
- 10.1038/jcbfm.1983.1 is OK
- 10.1002/mrm.28798 is OK
- 10.1186/s12880-015-0062-3 is OK
- 10.1186/1471-2105-14-316 is OK
- 10.7717/peerj.909 is OK
- 10.18637/jss.v044.i05 is OK
- 10.1186/s12859-018-2588-1 is OK
- 10.18637/jss.v044.i03 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@michaelberks
Copy link

Thank you again, @agahkarakuzu and @matteomancini for your thoughtful reviews and @michaelberks for your impressive work on Madym !

At this point could you please:

  • Make a tagged release of your software, and list the version tag of the archived version here.
  • Archive the reviewed software in Zenodo or a similar service (e.g., figshare, an institutional repository)
  • Check the archival deposit (e.g., in Zenodo) has the correct metadata.
  • Please list the DOI of the archived version here.

I can then move forward with accepting the submission rocket

Thanks @emdupre.

I have merged the JOSS fixes branch back with master, and then made a new release v4.15.2. This has been archived at zenodo here, with DOI 10.5281/zenodo.5554771.

@emdupre
Copy link
Member

emdupre commented Oct 7, 2021

@whedon set v4.15.2 as version

@whedon
Copy link
Author

whedon commented Oct 7, 2021

OK. v4.15.2 is the version.

@emdupre
Copy link
Member

emdupre commented Oct 7, 2021

Thank you, @michaelberks !

One confirmation on the Zenodo metadata : The archive (Madym: quantitative analysis software for perfusion-MRI) and the JOSS software paper (Madym: A C++ toolkit for quantitative DCE-MRI analysis) have two slightly different titles. Would it be possible to harmonize these ?

@michaelberks
Copy link

Done. I've updated the archive title to "Madym: A C++ toolkit for quantitative DCE-MRI analysis" to match JOSS.

@emdupre
Copy link
Member

emdupre commented Oct 7, 2021

@whedon set 10.5281/zenodo.5554771 as archive

@whedon
Copy link
Author

whedon commented Oct 7, 2021

OK. 10.5281/zenodo.5554771 is the archive.

@emdupre
Copy link
Member

emdupre commented Oct 7, 2021

@whedon recommend-accept

@whedon whedon added the recommend-accept Papers recommended for acceptance in JOSS. label Oct 7, 2021
@whedon
Copy link
Author

whedon commented Oct 7, 2021

Attempting dry run of processing paper acceptance...

@whedon
Copy link
Author

whedon commented Oct 7, 2021

Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1002/mrm.27939 is OK
- 10.1038/nrclinonc.2012.2 is OK
- 10.1038/s41467-018-07174-1 is OK
- 10.1002/jmri.1880070113 is OK
- 10.1002/(SICI)1522-2586(199909)10:3<223::AID-JMRI2>3.0.CO;2-S is OK
- 10.1002/mrm.22005 is OK
- 10.1038/jcbfm.1983.1 is OK
- 10.1002/mrm.28798 is OK
- 10.1186/s12880-015-0062-3 is OK
- 10.1186/1471-2105-14-316 is OK
- 10.7717/peerj.909 is OK
- 10.18637/jss.v044.i05 is OK
- 10.1186/s12859-018-2588-1 is OK
- 10.18637/jss.v044.i03 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@whedon
Copy link
Author

whedon commented Oct 7, 2021

👋 @openjournals/joss-eics, this paper is ready to be accepted and published.

Check final proof 👉 openjournals/joss-papers#2652

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

@whedon accept deposit=true

@kyleniemeyer
Copy link

@whedon accept deposit=true

@whedon
Copy link
Author

whedon commented Oct 7, 2021

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

@whedon whedon added accepted published Papers published in JOSS labels Oct 7, 2021
@whedon
Copy link
Author

whedon commented Oct 7, 2021

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

@whedon
Copy link
Author

whedon commented Oct 7, 2021

🚨🚨🚨 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.03523 joss-papers#2653
  2. Wait a couple of minutes, then verify that the paper DOI resolves https://doi.org/10.21105/joss.03523
  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...

@kyleniemeyer
Copy link

Congratulations @michaelberks on your article's publication in JOSS!

Many thanks to @agahkarakuzu and @matteomancini for reviewing this, and @emdupre for editing.

@whedon
Copy link
Author

whedon commented Oct 7, 2021

🎉🎉🎉 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.03523/status.svg)](https://doi.org/10.21105/joss.03523)

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

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

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:

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

No branches or pull requests

6 participants