slicerdmri / slicerdmri Goto Github PK
View Code? Open in Web Editor NEWDiffusion MRI analysis and visualization in 3D Slicer open source medical imaging platform.
Home Page: http://dmri.slicer.org
License: Other
Diffusion MRI analysis and visualization in 3D Slicer open source medical imaging platform.
Home Page: http://dmri.slicer.org
License: Other
The organization of SlicerDMRI modules in the menu is unclear and confusing. The user does not understand the abstract logic of organization by input data type. Organization by order of module use would make more sense, with some main modules under Diffusion and others subcategorized.
Also, many module names are also unclear. Tract would be better than fiber bundle, for example. Possible changes:
Module name Suggested improved name
DWIToDTIEstimation DiffusionTensorEstimation
DiffusionTensorScalarMeasurements DiffusionTensorMeasurements
DiffusionWeightedVolumeMasking DiffusionBrainMask
FiberBundleLabelSelect TractSelect
FiberTractMeasurements TractMeasurements
TractographyLabelMapSeeding TractSeeding
TractographyDisplay TractDisplay
TractographyInteractiveSeeding TractInteractiveSeeding
DICOM2FullBrainTractography TractWorkflow ?
FiberBundleToLabelMap TractToLabelMap
FiberEndPointFromLabelMap TractEndPointAnalysis
FiberTractClean TractFilter or TractClean
(Feedback from SP tractography tutorials)
To replace the manual SimpleITK workflow.
From Ron
TRY TO PUT only TOP FOUR and HIDE THE OTHERS
Add other measures, e.g., minimum FA, maximum FA, variance of FA values along fiber tract.
Re-architect to make it easier to plug in different methods.
The current version outputs nothing if there is no tensor data in the vtk. We need to output the information such as NumFiber and NumPoint, with/without tenors.
This can be fixed by moving the following two lines before if( !setTensors(data) ):
computeFiberStats(data, fileName);
computeScalarMeasurements(data, fileName, EMPTY_OP, moreStatistics);
add test for nrrd I/O
test data should include DWI data and multishell data.
Otherwise we will hit the following issue and SlicerDMRI will not build:
Sonia, please check and test the following improved things in SlicerDMRI before you come to Slicer day on Aug 30, 2016. Please share your per-module and overall feedback in a google document.
Improvements to check:
-- Overall module category reorganization for Diffusion.
-- Module changes: names, categories, GUI labels and descriptions (tooltips).
-- All module help pages.
Specific modules to be checked are listed below:
DiffusionTensorEstimation
DiffusionBrainMasking
DiffusionTensorScalarMaps
TractographyMeasurements
Tractography Seeding
Tractography ROI Seeding
Tractography ROI Selection
UKFTractography
Tractography To Mask Image
DiffusionWeightedDICOMImport (DWIConvert)
In the text measurement files output from Slicer, there are many more NAN values for trace than there should be. In many clusters, all three eigenvalues are reported, yet Trace is listed as NAN. This is impossible, because if all three eigenvalues exist their sum should be the trace.
This must be a bug.
More observations: Often the Spherical Measure is NAN as well, indicating an issue. But it is not NAN every time Trace is NAN. Also, when tensor1 trace is NAN, tensor 2 trace may exist, and vice versa. This was seen with 2-tensor UKF tractography.
Hi all,
SlicerDMRI is missing in nightly build (Mac, r25872). Is there a way to install it by cloning the repo?
Best,
Fernando
Rendering of FA volumes and other scalar volumes from dMRI requests from Ron
W/L (Volumes module) and custom transfer function (Volume rendering module) presets for FA images (like in CT and PET), as they are scaled between 0 and 1. Use the same rainbow LUT as the one used for coloring the streamlines
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0ahUKEwjJ-eHwnvnKAhVPSZoKHb_iAusQFgg3MAQ&url=ftp%3A%2F%2Fmedical.nema.org%2Fmedical%2Fdicom%2Ffinal%2Fcp1264_ft.doc&usg=AFQjCNF_EYGr99XHaxjFAmbj-4nL66P24Q&cad=rja contains potentially pertinent information from the DICOM world.
Prerequisite to the previous: Fix Volume rendering transfer function to allow setting thresholds for transfer functions at fractional values Such as 0.15. See bug report http://na-mic.org/Mantis/view.php?id=4152
To do statistics, it's appropriate to focus on one level, like for example subdivisions of the corpus callosum. The hierarchy has a tree structure that can have several levels. However when I read the measurements file into python, the name of each measurement seems to preserve only two levels of the hierarchy it is nested inside, instead of the unique full name. Here's an example from our tests. Looks like there is a possible CC with several levels inside it, and at each level only the current level and the parent are listed. In theory I could try to reconstruct the tree structure, but it would be much better for Slicer to output the full name including parents up to the root node that is being measured.
['Possible CC', 'Possible CC:complete CC medial and later', 'Possible CC:nonhomologue', 'complete CC medial and later:region I', 'complete CC medial and later:region II', 'complete CC medial and later:region III', 'complete CC medial and later:region V', 'complete CC medial and later:region VI', 'nonhomologue:anterior', 'nonhomologue:mid', 'nonhomologue:posterior']
request from Ron
The module only works for vtks on disk, not for a tract file already loaded into Slicer. I think this is due to the CLI nature and using a MRML file as input. Is there a workaround to improve this?
The current NRRD DWI encoding scheme has caused several issues due to misunderstanding of the gradient scaling scheme. The scheme also conflates two different kinds of scaling (scaling by maximum length, and scaling to represent B-value), which makes implementation difficult. We should consider updating the encoding scheme to explicitly encode the gradient directions as Nifti does. It should be possible to do this in a backwards-compatible way by retaining the nominal DWMRI_b-value:=700
tag, and adding a DWMRI_bvalue_0010:=BVAL
tag corresponding to each DWMRI_gradient_0010:=x y z
tag.
Import data:
Listing of dMRI formats known to work by vendor, release and acquisition type
(above from Ron)
I would add also all I/O formats for tractography, and output formats for DWI data
We should include this linked from here: http://slicerdmri.github.io/docs/
Take stock as we separate from Slicer core.
The Slicer "harden" button (in the Transforms module) does not handle the DWI gradients correctly.
This resample functionality "may" be present in the resample scalar/vector/DWI, but this seems to fail currently.
Check if there are any hard-coded things inside the Models module and elsewhere for if it is a FiberBundle node. Apparently nothing links to FiberBundle classes, just tests strings for equality to node type. Is this always safe?
To avoid the workaround introduced in r24863, testing data required by SlicerDMRI tests should either be directly added to the source tree or downloaded using ExternalData.
request from Ron
If the input vtk is empty, the module should generate an empty vtk as well.
Feedback from SP tractography tutorials:
Other tasks:
could update existing tutorial for DICOM to nrrd http://www.na-mic.org/Wiki/images/6/6c/2012-SPIE-1-DICOMToNRRDConversionTutorial.pdf
this should run the module for tensor estimation and check the output is correct (has not changed from previous output)
this should use test data for example the helix dataset, and/or a small real dataset ( a few slices) provided by Isaiah
Hi all,
Lauren and I just noticed that after transforming RAS point to IJK point, the FLOOR operation is used to get the integers of (i, j, k) in the FiberBundleLabelSelect module but ROUND is used in the FiberBundleToLabelMap module. This could generate half voxel difference between the two modules.
The following branches which were most likely for sake of experimentation while setting up the initial layout could be removed:
ddd
master3
master4
master5
from Ron
Tracking issue for this.
Option 1: use existing Python code within Slicer Python. Requires following dependencies:
Option 2: use existing Python code, but call external Python install from Slicer.
Option 3: port expensive parts of code to VTK/ITK. Advantage: potentially faster, and reduces Python dependencies (OTOH, makes WMA dependent on Slicer ecosystem).
Inherits from vtkColorTableNode
, but does not save associated ctbl
for the ColorStorageNode, when writing MRML, leading to load errors.
ERROR opening colour file /tmp/foo/DiffusionTensorDisplayProperties.ctbl
ERROR opening colour file /tmp/foo/DiffusionTensorDisplayProperties_1.ctbl
ERROR opening colour file /tmp/foo/DiffusionTensorDisplayProperties_2.ctbl
Input port 0 of algorithm vtkExtractSelectedPolyDataIds(0x7f82c917cee0) has 0 connections but is not optional.
Input port 0 of algorithm vtkExtractSelectedPolyDataIds(0x7f82c917cee0) has 0 connections but is not optional.
Input port 0 of algorithm vtkExtractSelectedPolyDataIds(0x7f82c917cee0) has 0 connections but is not optional.
Input port 0 of algorithm vtkExtractSelectedPolyDataIds(0x7f82c6459990) has 0 connections but is not optional.
Input port 0 of algorithm vtkExtractSelectedPolyDataIds(0x7f82c6459990) has 0 connections but is not optional.
Input port 0 of algorithm vtkExtractSelectedPolyDataIds(0x7f82c6459990) has 0 connections but is not optional.
Reproduce: open FiberBundle VTK/VTP file (alone), save MRML scene, re-load MRML scene.
(Low priority since it doesn't have an adverse impact, but noting for eventual fix)
Noticed in test MRML file for #19.
These can be listed as individual feature request issues, or one big feature request issue, so we can keep track.
request from Ron
Either in TractographyDisplay or FiberTractMeasurements (possibly both).
Also consider adding some volume measurement (intersected voxels? envelope?)
Currently, tractography goes through the Models Display Manager. To remove this dependency, make a Tractography Display Manager.
The Diffusion Weighted Volume Masking is generating an error message when tested with the DWI tutorial dataset.
Input port 0 of algorithm vtkImageWeightedSum(0x10f70b440) has 0 connections but is not optional.
/Applications/Slicer.app/Contents/lib/Slicer-4.5/cli-modules/DiffusionWeightedVolumeMasking: Error parsing Diffusion information, no B0 images
Diffusion Weighted Volume Masking completed with errors
Steps to reproduce the bug:
This class claims to "Extracts points whose scalar value satisfies threshold criterion. "
https://www.slicer.org/doc/html/classvtkPolyDataTensorToColor.html#details
Also: I'm not sure whether any Slicer code uses this class--is there a path to move it into SlicerDMRI?
Also any other basic testing would be great.
this should run the module for scalar measures and check the output is correct (has not changed from previous output). All measures should be checked (FA, eigenvalues, etc.)
this should use test data for example the helix dataset, and/or a small subset of a real dataset ( a few slices) provided by Isaiah
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.