Git Product home page Git Product logo

qmritools's Introduction

Welcome to QRMITools

DOI DOI contributions welcome Hits

MR-Hub MRSHub Open and Reproducible Musculoskeletal Imaging Research OpenSourceImaging

wolfram language wolfram workbench Visual studio code eclipse Wolfram Mathematica Wolfram Community


Content


Introduction

QMRITools is written in Mathematica and contains a collection of tools and functions for processing quantitative MRI data. The toolbox does not provide a GUI and its primary goal is to allow for fast and batch data processing, and facilitate development and prototyping of new functions. The core of the toolbox contains various functions for data manipulation and restructuring.

For more information visit our website

bilateral whole leg diffusion tensor imaging muscle fiber tractography

Installation

The latest release can be found here. The toolbox is best installed via the Mathematica paclet system. For more information visit the website.

Automatic installation:

  1. Download the QMRITools-x.x.x.paclet.
  2. Install the paclet using PacletInstall.

PacletInstall["xxx\\QMRITools-x.x.x.paclet"]

Or alternatively you can directly install it from the latest release page

PacletInstall["https://github.com/mfroeling/QMRITools/releases/download/x.x.x/QMRITools-x.x.x.paclet"]

Quantitative muscle MRI processing of diffusion tensor imaging, T2 mapping and water fat chemical shift imaging.

Citing

When using the toolbox please cite one of the following references:

  1. Froeling M: QMRTools: a Mathematica toolbox for quantitative MRI analysis. J Open Source Softw 2019; 4:1204. link
  2. Froeling M, et al.: Reproducibility of diffusion tensor imaging in human forearm muscles at 3.0 T in a clinical setting. Magn Reson Med 2010; 64:1182-1190. link
  3. Froeling M, et al.: Diffusion-tensor MRI reveals the complex muscle architecture of the human forearm. J Magn Reson Imaging 2012; 36:237-248. link
  4. Schlaffke et al.: Multi‐center evaluation of stability and reproducibility of quantitative MRI measures in healthy calf muscles; NMR Biomed. 2019;32:e4119 link

Media and awards

  • During the 2023 ISMRM in Toronto QMRITools was awarded received the “Best Open Source Tool Award” from the Quantitative MRI study group.
  • If you want to learn more about the workings of QMRITools you can watch a live discussion with the Wolfram academic outreach team about QMRITools and the role of computational Wolfram technology.
  • A more in depth explanation of the paclet functionality was presented to the Wolfram R&D Team.
  • QMRITools is build using Wolfram language for which it was awarded the Wolfram Innovator Award in 2023 during the Wolfram Technology conference.

Best Open Source Tool Award for quantitative MRI.

Documentation

An online version of the full documentation can be found here.

QMRITools package add on

External dependencies

Some functions of QMRITools call on external executables and software. These executables need to be present in “QMRITools” and are included in the release. If for any reason you want to use other (older/newer) versions you can replace them but functionality is not guaranteed. For the latest version of these tools and their user license please visit their website.

Toolboxes

QMRITools contains the following toolboxes:

  • CardiacTools
  • CoilTools
  • DenoiseTools
  • DixonTools
  • ElastixTools
  • FasciculationTools
  • GeneralTools
  • GradientTools
  • ImportTools
  • IVIMTools
  • JcouplingTools
  • LoggingTools
  • MaskingTools
  • MuscleBidsTools
  • NiftiTools
  • PhysiologyTools
  • PlottingTools
  • ProcessingTools
  • ReconstructionTools
  • RelaxometryTools
  • SimulationTools
  • SpectroTools
  • TaggingTools
  • TensorTools
  • TractographyTools
  • VisteTools

License

https://opensource.org/licenses/BSD-3-Clause

Note that restrictions imposed by these patents (and possibly others) exist independently of and may be in conflict with the freedoms granted in BSD-3-Clause license, which refers to copyright of the program, not patents for any methods that it implements. Both copyright and patent law must be obeyed to legally use and redistribute this program and it is not the purpose of this license to induce you to infringe any patents or other property right claims or to contest validity of any such claims. If you redistribute or use the program, then this license merely protects you from committing copyright infringement. It does not protect you from committing patent infringement. So, before you do anything with this program, make sure that you have permission to do so not merely in terms of copyright, but also in terms of patent law.

Some code in the NiiTools packages was based on https://github.com/tomdelahaije/nifti-converter

qmritools's People

Contributors

mfroeling avatar rljacobson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qmritools's Issues

Registration Failing due to StringForm

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:

  1. Open the demo.nb file and initialize.
  2. Scroll to the Registration using Elastix section and import the data.
  3. Continue evaluating the code cells under Affine Transformation until you get to RegisterData which will fail with an error.

System Information :

  • OS: macOS, Windows
  • Mathematica version 13.0
  • QMRITools Version 2.6.4

dataR

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.

Use GitHub's "releases" feature to distribute binaries/zip files

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.

Minor Issues and Suggestions

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.
  • For the ME-SE (TSE) T2 mapping slice profiles, in SimulateSliceEPG, the axes are not labeled.

The first one is picking nits. The second one might be my ignorance of the field of application.

add literature references for the methods used

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

  • A literature reference (ideally including the paper DOI) corresponding to the method implemented.
  • If the implementation differs substantially from what is described, provide a brief summary of the difference and rationale behind it.

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.

How to install and use "DTITools\IVIMTools" package

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:

  1. find user directory using "FileNameJoin[{$UserBaseDirectory,` "Application"}]";
  2. then copy all the files of your toolbox into the above folder;
  3. new *.nb in this folder to run "<<DTITools`", then some error messages showed up:
    111

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 :

  • [Windows 10]
  • Mathematia version
  • [Mathematica 11.3.0.0]

Installation instruction for external dependencies unnecessary?

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)

Better default path for data in demo notebook

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)

Text on buttons obscured in the GradientsGUI

Describe the bug
See attached screenshot. The labels on the buttons cannot be read.

To Reproduce
Steps to reproduce the behavior:

  1. Scroll to the section DTI and IVIM
  2. Evaluate all cells in the Generating diffusion gradients section.

Screenshots
screen shot 2019-02-24 at 3 32 25 pm

Additional context
I have a 27inch high dpi iMac display.
screen shot 2019-02-26 at 6 23 09 pm

"File not found" on $TMP/QMRIToolsReg/result-3D.nii.gz.

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:

  1. Open the demo.nb file and initialize.
  2. Scroll to the Registration using Elastix section and import the data.
  3. Continue evaluating the code cells under Affine Transformation until you get to RegisterData which will fail with an error.

Desktop (please complete the following information):

  • OS: macOS
  • Mathematica version 11.3

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.

screen shot 2019-02-11 at 12 23 47 am

screen shot 2019-02-11 at 12 25 08 am

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.