mfroeling / qmritools Goto Github PK
View Code? Open in Web Editor NEWProcessing and visualization tools for quantitative MRI data
Home Page: https://QMRITools.com
License: BSD 3-Clause "New" or "Revised" License
Processing and visualization tools for quantitative MRI data
Home Page: https://QMRITools.com
License: BSD 3-Clause "New" or "Revised" License
I haven't the faintest idea how testable this kind of code is, but at the very least having some basic sanity checks ("has it been installed correctly?" type checks) would be nice.
It looks like Mathematica does have a built-in testing framework: https://reference.wolfram.com/language/tutorial/UsingTheTestingFramework.html
Perhaps a "tests" notebook could be supplied along the with the "demo" notebook?
(Part of openjournals/joss-reviews#1204)
Is your feature request related to a problem? Please describe.
It is generally best practice to avoid committing binary files such as compiled executables and zip files, as they are usually impossible to diff, add significantly to the size of the repository, and are derivable from the contents of the repository anyway. Committing binaries used to be difficult to avoid if one wished to distribute binaries for a release on GitHub.
Describe the solution you'd like
GitHub has recently enabled attaching files to releases: https://help.github.com/articles/creating-releases/. Now, when you create a release for a version tag, you can attach a zip file or any other binary data to the release on GitHub. Here is what it looks like on one of my GitHub repositories: https://github.com/rljacobson/Levenshtein/releases.
Additional context
This is only a suggestion. Feel free to disregard it if you feel it's not the right thing for your project.
Describe the bug
RegisterData
, RegisterDataTransformSplit
, RegisterDataSplit
fail with an import error. It cannot find result-3D.nii.gz
in the temporary directory.
To Reproduce
Steps to reproduce the behavior:
demo.nb
file and initialize.RegisterData
which will fail with an error.Desktop (please complete the following information):
Other functions in the Register*
family fail with the same error. Of course, any demonstration code depending on the output of these functions also fail.
Describe the bug
QMRITools is unable to locate dependencies with GetAssetLocation for Elastix, Transformix, DcmToNii, and pigz.
To Reproduce
In Demonstrations.nb, running the "List of Resources" section results in:
Elastix $Failed
Transformix $Failed
DcmToNii $Failed
pigz $Failed
Directory paths to Demo, DemoData, GradientTool, and ColorData are all successfully found.
I am able to find the elastix, dcm2niix, and transformix applications in the paclet folder in Applications/MacOSX-x86-64/bin/
System information:
๐ ๐ฑ
Describe the bug
See attached screenshot. The labels on the buttons cannot be read.
To Reproduce
Steps to reproduce the behavior:
Under the "Install toolbox" heading, the README states that I need to download some external dependencies and place them in a specific folder. When I unpacked QMRITools itself those dependencies were already included, so I didn't need to download them separately.
I assume they either shouldn't be automatically included, or the instructions in the README are now unnecessary :)
(Part of openjournals/joss-reviews#1204)
Dear Dr. Froeling,
Recently, I am following the paper (Orton MR, Collins DJ, Koh D-M, Leach MO. Improved intravoxel incoherent motion analysis of diffusion weighted imaging by data driven Bayesian modeling. Magn. Reson. Med. 2014;71:411โ20. doi: 10.1002/mrm.24649.) to do the IVIM fitting and is recommended to try your toolbox "DTITools\IVIMTools\BayesianIVIMFit2".
I followed the steps to install the toolbox then to use the toolbox. There are some problems which I have no idea to solve.
Describe the bug
The steps I tried:
Expected behavior
Since I am newcomer to Mathematica and havent find the proper solution to this problem, my purpose is to try BayesianIVIMFit2 function with 3D matrix data (xybvalue) input. I have no clues to use this toolbox, such as how to call the "BayesianIVIMFits2" function. Should I new a *.nb file and then use special or specific codes to call the function? Is there any examples to call "BayesianIVIMFits2" function to do the fitting using DWI images?
Thanks so much and waiting for your reply.
Data
The input data I wanna use is .mat with size 25625616 (xy*bvalue).
Desktop :
Line 78 of the README has some broken markdown: "The toolbox can be loaded by using <<QMRITools". I assume it's supposed to be "The toolbox can be loaded by using
<<QMRITools`"
(Part of openjournals/joss-reviews#1204)
The demo notebook uses SetDirectory["D:\\Werk\\Workspace\\QMRITools\\DemoData"];
- perhaps it could be SetDirectory[FileNameJoin[{NotebookDirectory[], "DemoData"}]];
, which is a better default for people cloning the package via git, with a comment that says to change it if the demo data is somewhere else?
(Part of openjournals/joss-reviews#1204)
Describe the bug
Very similar to Issue #10, but affects (at least) both macOS and Windows
The Register*
family of functions fails with an import error. The file result-3D.nii.gz
is not created in the temporary directory due to an error with StringForm
.
To Reproduce
Steps to reproduce the behavior:
demo.nb
file and initialize.RegisterData
which will fail with an error.System Information :
There is an "out of range" error appearing regarding StringForm which did not appear in Issue #10. This seems to be the issue and would explain why the error occurs across multiple OS.
This is a list of minor issues and suggestions.
CompilebleFunctions
The documentation says it "generates a list of all compilable functions." It generates a table (a list of lists wrapped in TableForm
) of compilable functions, not a List
. The function Compile`CompilerFunctions
generates a list of compilable functions.SegmentMask[mask, n]
It is not clear what SegmentMask
is doing. The docs say, "divides a mask in n equal segments along the slice direction." What does "equal segments" mean? Equal in area? Equal in height? The plot is of a color quantized image, but the legend is continuous and in unknown units.SimulateSliceEPG
, the axes are not labeled.The first one is picking nits. The second one might be my ignorance of the field of application.
Is your feature request related to a problem? Please describe.
Functions and arguments in the libarry tend to be clearly named, but documentation on the underlying implementations used are lacking. For basic manipulations/visualization functions this is not an issue as they are pretty self-explanatory, but for a number of other functions it would be helpful to specify a reference for the implementation. This can be as simple as a single paragraph summary and/or a link to a corresponding publication.
Describe the solution you'd like
It would be helpful to have the following
Describe alternatives you've considered
Additional context
As a concrete example from DixonTools.nb
. A description provided is:
DixonReconstruct \[LongDash] Performs Dixon reconstruction of real and imaginary data.
From the name of that function, I would not know if it is performing basic two-point Dixon, IDEAL fat/water estimation or one of a number of other potential approaches based on graph-cuts, etc.? Inspection of the code reveals that it appears to be IDEAL with support for a multi-peak fat model and involves iterative potentially accounting for off-resonance and T2* decay. A potential user should be able to quickly infer what method is going to be applied without having to read the underlying source code.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.