Git Product home page Git Product logo

mp3's Introduction

MP3

Medical software for Processing multi-Parametric images Pipelines

MP³ is an open source software aimed to support preclinical and clinical researchers for image processing studies. This Matlab toolbox offers a graphical interface that helps to process medical images. Here are the most important tools included in MP³ :

  • Import medical images (e.g. DICOM, NIFTI, Bruker, …) and convert them to nifti/json format
  • Visualize images (2D to 5D data)
  • Process (e.g. registration, model fit, filters, …)
  • Analyze (e.g. ROIs, scatterplots, …) medical images.

Standard processes from SPM or FSL can be called as well as custom fonctions. Complex postprocessing pipelines can be created and applied to mutiparametric (e.g. MRI T1w + MRI T2w,…), multidimensional (e.g. spatial +temporal+echoes,…) or multimodal (e.g. MRI +CT, …) data. Once defined in a single patient, these processes can be stored and applied to a larger database using parallel architectures. MP³ was initially created in the Grenoble Institute of Neurosciences (France) to process multiparametric MRI protocols (anatomy+relaxometry+perfusion) in cohorts of +500 animals.

SUMMARY Poster (ENGLISH) (FRENCH): poster presented at the 4th Congress of the SFRMBM (Strasbourg).

You can find the article linked to MP3 here: https://www.frontiersin.org/articles/10.3389/fninf.2020.594799/full

Do not forget to cite our article if you used MP3 :)

Brossard, C., Montigon, O., Boux, F., Delphin, A., Christen, T., Barbier, E. L., & Lemasson, B. MP3: Medical software for Processing multi-Parametric images Pipelines Frontiers in Neuroinformatics, 2020, 14, 53.

Requirements

In order to fully enjoy MP³, you have to meet the following requirements:

  • Matlab 2017b or higher
  • Toolboxes (Mandatory : Image Processing Toolbox -- Recommended : Statistics and Machine Learning Toolbox ; Parallel Computing Toolbox)
  • Java 8 or higher
  • Data to process in Bruker / DICOM / Philips / Nifti format

Download

You can download MP³ from our GIT repository. Then just add the downloaded file to your Matlab path and type MP3 in Matlab command window. The graphical interface of the Viewer will then be displayed.

Developers guide

In order to push your modifications to the community, please contact [email protected] to get the developer status. Please create on your own branch from the dev one and then ask to merge it in the dev branch.

User Guide: How to...

Please have a look at our tutorials available on our youtube channel : https://www.youtube.com/playlist?list=PL-Tj6Wc9aE9x7i6s-RLetvNE0isnEsFm7

Data test

The documentation found in the wiki page is based on this dataset : https://github.com/nifm-gin/Data_Test_MP3 (MP3 project)

The documentation on video is based on a dataset downloadable her : https://drive.google.com/drive/folders/1xWsNJf3e4auL_WWknvvGbk0UqjcfAY7A?usp=sharing (as Raw MRI data) or here https://drive.google.com/drive/folders/1MImE1AkOOKhOIXreA_jrIcJJloEXFJu1?usp=sharing (as a MP3 Project created with MP3 v1.3)

Modules repository

We provide some modules available at https://github.com/nifm-gin/MP3_Modules_Repository

Other

Brouillon Module Coreg

mp3's People

Contributors

adelphin avatar blemasso avatar brosscle avatar fabienboux avatar gaetandavout avatar ludobroche avatar montigno 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mp3's Issues

impove the Update_MP3_database_After_pipeline_Crash function

Is your feature request related to a problem? Please describe.
Even if there is no files in the Tmp directory, the popup message "It seems that some files from a previous pipeline execution have not been added to your project database. Want to do it now?" appears if the Table_out is present in the Tmp directory.

Describe the solution you'd like
It would be nice to improve this function by checking if files exist in the Tmp directory before the popup message
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

no DICOM files found with Files Manager 20.2.2a

Hello,
I'm having some troubles opening our DICOM (.dcm) sequences from the Files Manager. When the folder is selected from the Dicom button, the program indicates "no Dicom file found" in the Format section.
I am working on Windows 10, Matlab R2019a, Files Manager 20.2.2a

bug in module_Coreg_Est

Describe the bug
This module does not work as it should.
The output file is co-registered to the reference image BUT it is not resliced.
Indeed, the transformation martrix (in the nifti file) are different between the reference and the file moved (they should be exactly the same)

issue with spm_slice_vol

Describe the bug
Contrary to niftiread (from Matlab) spm_slice_vol (used through the read_volume function) does not use the nifti type when loading the data. Therefore, even if the nifti is an 'int16', the data will be loaded as a double.
--> consequence : data space may be multiply by 4

It is especially hassle in Module_Arithmetic or Module_Texture_matlab (and maybe others) because the nifti generated are saved in double instead of 'int16'

Auto-save when importing from another MP3 database

When using the feature "Import data from another database", the "Done" window opens but the database is not saved, and it is easy to forget to manually save it. As a result the files are imported but the database.mat remains empty, the project can't be re-opened and the importation time is lost.

Auto-saving the database at the end of importation would be nice.

Java error when adding two or more series to basket - latest MP3 download, MATLAB 2022a

Describe the bug
I am converting Bruker data using the "MRI FIles Manager". MP2 works brilliantly if I select 1 series and add to basket. If I select 2 or more series, I get this java error.

To Reproduce
Steps to reproduce the behavior:

  1. File, Import Dta, Import Raw Data
  2. Bruker, select folder with "subjects" file
  3. Select 2 or more series
  4. Add to Basket

Expected behavior
No error, just like doing one series

Screenshots
Exception in thread "AWT-EventQueue-0": java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at exportFiles.FillBasketSingle.(FillBasketSingle.java:162)
at brukerParavision.SelectionSeqBruker.fillBasket(SelectionSeqBruker.java:215)
at MRIFileManager.ActionSelectionSeq.fillBasket(ActionSelectionSeq.java:160)
at MRIFileManager.ActionSelectionSeq.keyPressed(ActionSelectionSeq.java:45)
at java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:250)
at java.awt.Component.processKeyEvent(Component.java:6497)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2832)
at java.awt.Component.processEvent(Component.java:6316)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:835)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1103)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:974)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:800)
at java.awt.Component.dispatchEventImpl(Component.java:4760)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Desktop (please complete the following information):

  • OS: win 10
  • Browser: Chrome
  • Version: MATLAB 2022a, MP3 most recent download (2 days ago)

Additional context
Add any other context about the problem here.

Create a function that update the json fields base on a nifti header

Is your feature request related to a problem? Please describe.
A the end of a module, it would be great to update every json fields link to the nifty header (i.e. voxel size, the matrice...)

This function will take as input a filename (.nii) and it will update the json associated to this nifti based on the nifti's header.

Wrong group's name when adding new data to a patient

steps to reproduce the bug
First I change the name of the group for one patient. Let says the new group's name is "treated".
If I add another scan to this patient, this scan will have "Undefined" as group's name instead of "treated"

No more contrast control on scans when using 3D Plot options in viewer

Describe the bug
When loading more than 2 scans and a ROI, it is convenient to have a control on the 3D plot on the right of the viewer. However, if right-click > "activate 3D view" does the work, it removes the control on the contrast of the scans (middle and right-click). There is no way to de-activate the 3D view other than closing and re-opening MP3.

To Reproduce
Steps to reproduce the behavior:

  1. Load a database
  2. Load 1 or more scans
  3. Load a ROI
  4. Right-click > Activate 3d view on the plot on the right side of the viewer
  5. Have control of the plot, but no more control on the contrast of the scans

Expected behavior
Having the possibility to switch from to the other without closing MP3 would be good. The best would be to have both control on the contrast and the 3d plot.

Desktop:

  • Ubuntu 18.04
  • Matlab R2018a

movefile error when importing raw data on SUMOONE

Describe the bug
When importing Bruker data with MRI_conv toward Raw_data on SUMOONE shared project, Matlab crashed when performing the movefile from tmp to Raw_data, even if the user has rw rights.
Commenting the movefile lines (MP3.m lines 4538 & 4539) and replacing them by:

src=fullfile(MP3_tmp_folder, [NAME, '.nii']);
dest=[char(handles.database.Path(end)), char(handles.database.Filename(end)), '.nii'];
cmd = ['mv ' src ' ' dest];
system(cmd);
src=fullfile(MP3_tmp_folder, [NAME, '.json']);
dest=[char(handles.database.Path(end)), char(handles.database.Filename(end)), '.json'];
cmd = ['mv ' src ' ' dest];
system(cmd);

Same thing happens when renaming a sequence, as movefile is used.

To Reproduce
Steps to reproduce the behavior:

  1. Load the common project on SUMOONE
  2. Import bruker data using MRI_conv (e.g. import a raw scan from any animal)
  3. Importation works and the scan is stored in tmp/
  4. Enter animal ID and time point
  5. Observe the red lines stating that "movefile failed: permission denied"

Cannot write to destination: /home_ldap/_PROJECTS/Preclinical_Database/IRM/Raw_data. > Use the 'f' option to override.

(However, 'f' option does not solve the problem)

Expected behavior
The movefile should work as the user has the rights. Using a mv in a terminal works.

Desktop (please complete the following information):

  • OS: CentOS (HYPNOS computer)

Matlab error when using Module_DCE_phenomeno

Describe the bug

Matlab error when using Module_DCE_phenomeno.

To Reproduce

  1. File, Import Data, Import Raw Data => OK
  2. MP3 pipeline Manager => OK
  3. Module_DCE_phenomeno.m selection => OK, BUT : "End of the analysis (in sec)" is displayed as "180", although the "180" is the total number of T1 images (9 slices with 20 repetitions).

Expected behavior

I am performing a DCE experiment on an IN VIVO mouse brain using a T1w sequence : 9 slices, TR : 350ms, 20 repetitions.
The acquisition time of a single T1w scan is 1m29s600ms, so the total scan time for 20 repetitions is 29m52s.

Experiment TIMELINE : 4 baseline repetitions + Gadolinium injection + 16 dynamic repetitions.

I expect to obtain different output files / images : AUC, Pax, TTP, pc_enhanc ...

Screenshots

Here are the MATLAB errors that I obrain after executing the pipeline :

_no parallel-computing toolbox installed. Number of worker = 1
Your pipeline (1 jobs) will be executed in Basic Loop :
Execution Job 1

Error using -
Matrix dimensions must agree.

Error in Module_DCE_phenomeno (line 212)
[~, fin] = min(abs(repetion_time -(debut*TR + opt.End_analysis)));

Error in MP3_pipeline>MP3_pipeline_execute_button_Callback (line 2434)
eval(Module.command);

Error in gui_mainfcn (line 95)
feval(varargin{:});

Error in MP3_pipeline (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)MP3_pipeline('MP3_pipeline_execute_button_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback._

Desktop (please complete the following information):

  • OS: LINUX CentOS 7
  • MATLAB version 2018a

Adapt path in pipeline on importation

Context
When using the feature "Import Data from another MP3 project", the pipelines are not imported. In some cases it could be convenient to import them. This feature would have to be more than a simple copy-paste, as paths in the pipeline structure are absolute.
So far I manually copy/paste my pipelines and modify the paths in each module of the pipeline, which can be tedious. Furthermore, the order of the module is not automatically conserved when doing so, which makes the task more complicated.

Possible Solution
An option to import pipelines that adapts the paths automatically would be great. It should be independent from the "import data" one, as some users might want to import their data only without the pipelines to avoid conflicts.

Use a constant as BVf input in the SO2 module

Is your feature request related to a problem? Please describe.
In PET oxygen analysis, sometimes a constant is used instead of a BVf map to calculate CMRO2 map. In order to compare both, it would be useful to do the same for MRI.

Describe the solution you'd like
Add an option to chose one of the options we want as input. i.e. either map or constant.

Describe alternatives you've considered
Add another module with a constant map as output.

Additional context

add an option to delete ALL derived data (image, ROI, cluster...)

Is your feature request related to a problem? Please describe.
It would be great to have a function which delete all derived data : image (nii, nii.gz, ROI, cluster, .mat ...).
The goal will be to restart a project form scratch but without having to reload every data (and rename them..)

Describe the solution you'd like
This function could be called from the menu Edit or File.

Of couse, due to the consequences of this function, a lot of warning messages have to be presented to the used !!

AIF using ROI for Susceptibility module

Is your feature request related to a problem? Please describe.
searching automatically an AIF in DSC images isn't worth when it comes to primate.

Describe the solution you'd like
A solution would be to add a manual way of choosing AIF with a VOI.

Describe alternatives you've considered
I haven't considered any other alternative.

Additional context

export from convertor failed

I am experiencing some problems with importing several of the scans. Most of the scans are correctly converted from Bruker files to Nifti+JSON files, but for our T2 TurboRARE high resolution files, I get a message that the export failed with an error such as this:

java.lang.NumberFormatException: For input string: "@15*(1)"

I am working in Windows 10, using Matlab R2020b and MRI Files Manager 20.2.2a.

MP3 converter - launch/opening issue

Hi,

After successfully creating a new project, I am not able to import the RAW data, the MP3 converter does not launch - please see the following MATLAB errors :

Warning: MATLAB has disabled some advanced graphics rendering features by switching to software OpenGL. For more information, click here.

Undefined variable "MRIFileManager" or class "MRIFileManager.FileManagerFrame.main".

Error in MP3>MP3_menu_load_data_Callback (line 4671)
MRIFileManager.FileManagerFrame.main({MP3_tmp_folder_for_java, namExport handles.original_Java_LookAndFeel, 'NoExitSystem', '[ExportOptions] 10012'}) %add lookAndFeel option and ExportOption

Error in gui_mainfcn (line 95)
feval(varargin{:});

Error in MP3 (line 45)
gui_mainfcn(gui_State, varargin{:});

Error in matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)MP3('MP3_menu_load_data_Callback',hObject,eventdata,guidata(hObject))

Error while evaluating Menu Callback.

================================================================

FYI, I am using MATLAB R2017a launched via a terminal under macOS Monterey (12.4).

Thanks for your kind help!
Radu

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.