Closed whedon closed 2 years ago
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 :tada:.
:warning: JOSS reduced service mode :warning:
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.
:star: Important :star:
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:
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
Wordcount for paper.md
is 928
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
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
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
:wave: @agahkarakuzu, please update us on how your review is going (this is an automated reminder).
:wave: @matteomancini, please update us on how your review is going (this is an automated reminder).
I have started working on my revision and I should be done by the 27th of August.
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.
:wave: 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.
Hi @emdupre I'll finish my review this week, sorry for the delay. Thank you for the reminder!
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.
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!
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.
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.
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.
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.
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.
@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.
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!
I was able to test the software, so I am moving on with my review following the same structure above:
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:
TOFTS
only on GUI) fitting took ~23ms per voxel. So I checked the performance box.None.
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!
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).
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.
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.
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.
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
******************************************************
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
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. 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!
@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:
Thanks again for taking the time to make such helpful feedback, it really is appreciated.
:wave: 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.
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:
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.
I have now completed the above tasks. Some more details below
For detailing how acquisition parameters are set from XTR files, the program logs now look something like this:
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
"%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
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.
Regarding incorporating BIDS into Madym, I have added the following issue on the main project issue board.
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.
@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!
Thank-you again for your very helpful review comments @agahkarakuzu
@michaelberks thanks for addressing most comments. The only things currently missing are the following:
CONTRIBUTING.md
file?);@matteomancini thank-you.
I've now:
Added anchor links for the dependencies and summary steps of the TL;DR build instructions, both in the main README and the build instructions on the wiki.
Added a CONTRIBUTING.md file to the root of the main repo. To avoid duplicating information (and creating potential sync issues), I refer users from the file to the contribute instructions on the wiki
Added a reference to Tofts et al 1999 paper to the opening paragraph, which I think is probably the canonical reference for quantitative DCE-MRI.
Added/corrected the missing DOIs to the references in paper.bib
I've also checked the updated paper and references compile correctly on Whedon. If everyone is happy, I will merge the the JOSS fixes branch back into master and create new binaries.
@michaelberks thanks for addressing those! I think that only the first anchor link in the README is misbehaving, but apart from that it looks great! Happy to recommend acceptance!
Thank you again, @agahkarakuzu and @matteomancini for your thoughtful reviews and @michaelberks for your impressive work on Madym
!
At this point could you please:
I can then move forward with accepting the submission :rocket:
@whedon generate pdf from branch 61-joss-review-fixes
Attempting PDF compilation from custom branch 61-joss-review-fixes. Reticulating splines etc...
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
@whedon check references from branch 61-joss-review-fixes
Attempting to check references... from custom branch 61-joss-review-fixes
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
Thank you again, @agahkarakuzu and @matteomancini for your thoughtful reviews and @michaelberks for your impressive work on
Madym
!At this point could you please:
- [x] Make a tagged release of your software, and list the version tag of the archived version here.
- [x] Archive the reviewed software in Zenodo or a similar service (e.g., figshare, an institutional repository)
- [x] Check the archival deposit (e.g., in Zenodo) has the correct metadata.
- [x] 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.
@whedon set v4.15.2 as version
OK. v4.15.2 is the version.
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 ?
Done. I've updated the archive title to "Madym: A C++ toolkit for quantitative DCE-MRI analysis" to match JOSS.
@whedon set 10.5281/zenodo.5554771 as archive
OK. 10.5281/zenodo.5554771 is the archive.
@whedon recommend-accept
Attempting dry run of processing paper acceptance...
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
:wave: @openjournals/joss-eics, this paper is ready to be accepted and published.
Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/2652
If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/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
@whedon accept deposit=true
Doing it live! Attempting automated processing of paper acceptance...
π¦π¦π¦ π Tweet for this paper π π¦π¦π¦
π¨π¨π¨ THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! π¨π¨π¨
Here's what you must now do:
Party like you just published a paper! πππ¦ππ»π€
Any issues? Notify your editorial technical team...
Congratulations @michaelberks on your article's publication in JOSS!
Many thanks to @agahkarakuzu and @matteomancini for reviewing this, and @emdupre for editing.
:tada::tada::tada: Congratulations on your paper acceptance! :tada::tada::tada:
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:
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:
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
:warning: JOSS reduced service mode :warning:
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 badge code:
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:
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
Code of Conduct
General checks
Functionality
Documentation
Software paper
Review checklist for @matteomancini
Conflict of interest
Code of Conduct
General checks
Functionality
Documentation
Software paper