Eleftherios Garyfallidis
@Garyfallidis
Hi @romainviard !
nis02002
@nis02002
DCI (diffusion compartment imaing) is more advanced than DTI
Eleftherios Garyfallidis
@Garyfallidis
@romainviard let me introduce you to @BramshQamar that is working on extending our statistical analysis framework and she can explain all the details to you. In short, we have a strategy for you to start with and happy to collaborate in trying new ideas.
nis02002
@nis02002
Or any other tool could implement compartment study will be great, thanks a lot
Eleftherios Garyfallidis
@Garyfallidis
@nis02002 do you have DCI data?
nis02002
@nis02002
i only have diffusion image data
i wonder can I fit the data into diffusion compartment model
nis02002
@nis02002
How can we calcuate the diffusion tensor D using tersor model?
like Apparent diffusion coefficnet?
Ariel Rokem
@arokem
@romainviard : regarding afq_profile, probably better to include multiple streamlines, rather than the centroid of a cluster (if that's what you meant)
albayenes
@albayenes
@nis02002 You can find information to calculate diffusion tensor in this tutorial https://dipy.org/documentation/1.0.0./examples_built/reconst_dti/#example-reconst-dti
There is also a function which is named as apparent_diffusion_coef(q_form, sphere) to calculate ADC in DT model
Tristan MOREAU
Thank you for this great new version of dipy ! Good job :-) I have a basic question on how can we use fury to plot the spherical deconvolution results. I used the Tractoflow pipeline to preprocess my clinical data set. Using scil_compute_fodf.py with spherical harmorics basis set to 'descoteaux07' and order set to 8. I got a file 'fodf.nii.gz' of shape (133, 161, 144, 45). My question is how can I use fury to plot the fodf on coronal plan using the fodf file ? Best regards, sincerely. Tristan :-)
Ariel Rokem
@arokem
@Tristan2Tzara_twitter : check out the odf_slicer in this example: https://dipy.org/documentation/1.0.0./examples_built/reconst_csd/
Davis Bennett
@d-v-b
Can anyone point to literature / examples of dealing with masked data in a multiresolution framework?
(for registration)
the right approach seems to be to mask the data before generating the scale space, but i'm not sure
Eleftherios Garyfallidis
@Garyfallidis
Makes sense @d-v-b first mask the brain then multires. With nonlinear registration you really have to do that. There should be something about that at Arno Klein's registration comparison paper.
Davis Bennett
@d-v-b
cool, thanks
i'm looking at this in the context of nipy/dipy#1969
Davis Bennett
@d-v-b
this might be out of scope w.r.t. masking for image registration, but I notice that a lot of these registration functions / methods take 4 arguments at a minimum -- moving, fixed, moving_grid2world, fixed_grid2world -- and there are a lot of nearly duplicated code blocks which perform some operation on moving, then the same operation on fixed. Is there any appetite to simplifying this with some lightweight OOP? e.g. an object that has a data property, a mask property, and a grid2world property would save a lot of LOC in the registration codebase
this is looking pretty hairy to me:
Eleftherios Garyfallidis
@Garyfallidis
Yes @skoudoro has a plan to make this more OOP. Let's sync together.
Eleftherios Garyfallidis
@Garyfallidis
I would say more than oop the plan is to simplify some things in the reg API. Not sure yet we can take out these parameters completely at first stage. You may feel this is hairy now but after a while you see that it is quite useful. Also do look into dipy.workflows.align there we have a higher level api. Do you have a suggestion for how to reduce the number of parameters? Be happy to suggest ideas. We are good listeners :)
willi3by
@willi3by
Is there a working implementation of the single shell free water bi tensor model? I found a couple of scripts that are works in progress and have spent two days trying to correct errors so it would be nice to know if there is a working implementation
Davis Bennett
@d-v-b
@Garyfallidis I agree, those parameters are all essential, and it's good if the entry point to registration takes raw numpy arrays. I was thinking more about introducing some data structures (maybe something as simple as a namedtuple that would be used internally by the registration / optimization routines
but I don't have any clear ideas right now
Davis Bennett
@d-v-b
@Garyfallidis i have a question about the scale space code -- it looks like it does not do any downsampling, is this by design?
downsampling images after blurring should greatly reduce memory load + compute time for large images
(for reference, the images I am working with are ~10000 x 10000 pixels, and i have thousands of these images, so performance improvements matter a lot here)
Eleftherios Garyfallidis
@Garyfallidis
I think it does downsampling. This is the factor parameter. Factor of 2 means divides by 2.
Davis Bennett
@d-v-b
yes I found where the downsampling happens -- the scale space does not itself do any downsampling, but the AffineRegistration class uses the scalespace parameters to do the downsampling in the optimization step
Ariel Rokem
@arokem
@willi3by : there is a single-shell free water DTI WIP PR by @mvgolub here: nipy/dipy#1744
willi3by
@willi3by
@arokem @mvgolub thank you for the response. This is actually the file I have been trying to edit but have had trouble editing and troubleshooting. I have made some progress but do not have the expertise to do it efficiently. It looks like the last update was about 4 months ago. Is this still a work in progress?
Ariel Rokem
@arokem
I think so. Maybe @mvgolub or @RafaelNH can say more?
Yaroslav Halchenko
@yarikoptic
AHA -- here is where all the DiPy folks hanging out! Will there be DiPy booth at SfN?
Ariel Rokem
@arokem
@yarikoptic : hello!
Nope. No SfN booth
smasjoodi
@smasjoodi
Hi every body. I analysed a DWI data set using DKI model (just as example code), but outputs are very noisy. DWI data parameters: b-values:0, 500, 1000, 2000 in the same 15 directions. Why AK and RK are so much noisy?
Ariel Rokem
@arokem
QuantumBrain®
Hey, just a general question out of curiosity: What's causing the actual b-values to differ slightly from what I selected in the scanner console? e.g. b0 is actually not zero but around 26. or b=1000 is sometimes 999.34 or 1001.18 etc. Is this measured or calculated somehow from the gradient system? and does it improve the results significantly to use those actual values instead of the theoretical ones?
Ariel Rokem
@arokem
@Quantum_Neuron_twitter : I don't know the answer to this, but if no one here can provide an answer, I think that it would be a great question to ask on https://neurostars.org/
I do know that in some cases b-values also vary spatially
(empirical b-values, that is)
willi3by
@willi3by
@arokem @RafaelNH @mvgolub I was investigating and it seems the post that was linked in a previous response to nipy/dipy#1744 has not been updated since May 7. Is there a dipy work in progress repository where newer files might be stored? Thanks again for the help
Rafael Neto Henriques
@RafaelNH
Hi @willi3by! @mvgolub did sime very nice progress on this code. We didn't push any update because we are testing it offline in deep. At the moment, we already have the same performance when comparing to the state of art of single shell algorithms in the recent literature, however we are still not happy with what single shell algorithms can give us. We are still detecting massive issues with this technique in general, and we are trying the best to overcome its major limitations. By the end of the year, we are planing: 1) to have our advances pushed in dipy; 2) share a manuscript reporting the details of our implementations and tests. Keep posted!
Rafael Neto Henriques
@RafaelNH
Hi @smasjoodi! Actually, considering that you have only 15 directions per shell, your maps looks good. DKI provides you a nice quantification of non-Gaussian diffusion (information that you cannot capture using techniques such as DTI), however its limitation is that is noisy, particularly in perpendicular directions where diffusivities are low (e.g. see chapter 3 of https://core.ac.uk/download/pdf/12428129.pdf). Radial and axial kurtosis can also have a noisier aspect because these estimates are not well define in crossing white matter regions and grey matter, such and axial and radial diffusivity (https://www.sciencedirect.com/science/article/pii/S1053811915000968?via%3Dihub). To improve DKI performance try to Denoise your data, and also Gibbs unring (e.g. see chapter 3 of https://www.repository.cam.ac.uk/handle/1810/281993) - code available in dipy (https://dipy.org/documentation/1.0.0./examples_built/denoise_mppca/#example-denoise-mppca) (https://dipy.org/documentation/1.0.0./examples_built/denoise_gibbs/#example-denoise-gibbs). Also the mean signal DKI might provide you an alternative and more precise non-gaussian diffusion characterisation (https://dipy.org/documentation/1.0.0./examples_built/reconst_msdki/#example-reconst-msdki).
willi3by
@willi3by
@RafaelNH Thank you for the in depth update! I very much look forward to seeing this in Dipy.
Rafael Neto Henriques
@RafaelNH
Hi @Quantum_Neuron_twitter! Actual values consider other sequence parameters that induces extra diffusion weighting (e.g effects of crushers). Using that actual values provides you more accurate diffusion estimates.