[Neuroimaging] [dipy] Import csd model precomputed by mrtrix

Bago mrbago at gmail.com
Fri May 27 12:31:40 EDT 2016


You, were spot on, we just needed a transpose :).

On Fri, May 27, 2016, 8:44 AM Ariel Rokem <arokem at gmail.com> wrote:

> Hi again,
>
> On Fri, May 27, 2016 at 5:23 AM, Ariel Rokem <arokem at gmail.com> wrote:
>
>> Hi Paolo,
>>
>> Thanks for the update. Sorry to hear it didn't work as hoped.
>>
>> On Fri, May 27, 2016 at 2:07 AM, Paolo Avesani <avesani at fbk.eu> wrote:
>>
>>> Thanks for your replies.
>>> A brief update.
>>>
>>> Samuel is right. I have in mind to manage the multi-shell model from
>>> mrtrix3.
>>> It is clear that up to now it is not viable until the work in progress
>>> from Bago becomes available.
>>>
>>> I tried to follow the example suggested by Ariel, focusing on a single
>>> shell csd model (coming from dwi2fod command of mrtrix3),
>>> and setting the sphere as the one used by mrtrix3 (a 300 points). The
>>> "predict" method raised an issue of disalignment of matrix size.
>>>
>>> The issue is at line 217 of csdecon.py when a product between
>>> "predict_matrix" and "sh_coeff" takes place.
>>> The "predict matrix" has size (90,45): 90 volumes, 45 sh
>>> The "sh_coeff" has size (145, 174, 145, 45): the xyz dimensions of the
>>> volume, 45 sh
>>>
>>> It looks the size of predict matrix is wrong. It should be
>>> (145,174,145,90).
>>>
>>>
>>>
>> Or the predict_matrix should be (45, 90)? Would be useful if you shared a
>> minimal example that raises this error.
>>
>
> I was wrong, of course. Does Bago's fix (
> https://github.com/nipy/dipy/pull/1062) resolve this for you?
>
> Cheers,
>
> Ariel
>
>
>
>> Cheers,
>>
>> Ariel
>>
>>
>>
>>>
>>>
>>> On Thu, May 26, 2016 at 4:07 AM, Samuel St-Jean <stjeansam at gmail.com>
>>> wrote:
>>>
>>>> Indeed, I thought I read the multitissue version was used here, my
>>>> mistake as the question does not directly imply that.
>>>>
>>>> The regular single shell hopefully does the same (at least I can
>>>> personally attest the mrtrix2 version and dipy version give similar fodf up
>>>> to a small rounding factor, but that was before the cholesky decomposition
>>>> step, so now they should behave the same).
>>>> On May 26, 2016 09:37, "Bago" <mrbago at gmail.com> wrote:
>>>>
>>>>> Samuel mrtrix has at least two models implemented. The multi-shell
>>>>> (multi-tissue) model cannot be used with single shell data and the original
>>>>> CSD model cannot be used with multi-shell data.
>>>>>
>>>>> Bago
>>>>>
>>>>> On Wed, May 25, 2016 at 5:13 PM Samuel St-Jean <stjeansam at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Their wiki explains it, a sqrt(2) to normalize is used in mrtrix3, so
>>>>>> multiplying your coefficients with that and using the mrtrix2 functions
>>>>>> should do it.
>>>>>>
>>>>>> Although dipy only does single shell, so conclude with consideration
>>>>>> that the algorithm is different from mrtrix3. Also, csd is a bad signal
>>>>>> predictor (but good for angle estimation), see the sparc dmri challenge
>>>>>> paper for example.
>>>>>> On May 26, 2016 07:55, "Ariel Rokem" <arokem at gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, May 25, 2016 at 4:41 PM, Bago <mrbago at gmail.com> wrote:
>>>>>>>
>>>>>>>> I believe they did change their basis (please correct me if I'm
>>>>>>>> wrong but I believe they went from a non-normalized SH basis to a
>>>>>>>> normalized SH basis).
>>>>>>>>
>>>>>>>>
>>>>>>> So they have the same basis as dipy now, but the coefficients appear
>>>>>>> in a different order? That should make life even easier!
>>>>>>>
>>>>>>>
>>>>>>>> Also projecting onto a sphere is one way to _estimate_ the
>>>>>>>> coefficients in a different basis. The cleaner way is to just re-order the
>>>>>>>> coefficients and apply the appropriate scaling. If both basis are
>>>>>>>> normalized (which dipy is) the scaling should be 1 or -1.
>>>>>>>>
>>>>>>>>
>>>>>>> Fair point, but to be just a little bit facetious: given enough
>>>>>>> points on the sphere and knowledge of the target maximal order of the
>>>>>>> coefficients, wouldn't estimating be the same as transforming? Works for
>>>>>>> the FFT, I believe :-)
>>>>>>>
>>>>>>> Bago
>>>>>>>>
>>>>>>>> On Wed, May 25, 2016 at 3:31 PM Ariel Rokem <arokem at gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> On Wed, May 25, 2016 at 1:09 PM, Bago <mrbago at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Paolo,
>>>>>>>>>>   mrtrix and dipy define the SH basis slightly differently, so
>>>>>>>>>> the precomputed FOD values need to be adjusted if you want to skip the fit
>>>>>>>>>> step and initialize the Fit object directly. IRC we don't currently have
>>>>>>>>>> the code to do that, but it would be something we'd like to incorporate.
>>>>>>>>>>
>>>>>>>>>> Did they change their basis set when they transitioned to
>>>>>>>>> mrtrix3? We do have these functions:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> https://github.com/nipy/dipy/blob/master/dipy/reconst/shm.py#L852-L923
>>>>>>>>>
>>>>>>>>> That should work with the previous version of mrtrix (mrtrix2?).
>>>>>>>>> You can use these to transform between coefficient sets:
>>>>>>>>>
>>>>>>>>>     sf = sh_to_sf(mrtrix_coeffs, sphere, sh_order,
>>>>>>>>> basis_type='mrtrix')
>>>>>>>>>     dipy_coeffs = sf_to_sh(sf, sphere, sh_order, basis_type=None)
>>>>>>>>> # This defaults to the dipy basis set
>>>>>>>>>
>>>>>>>>> and then use the CSD model object to predict:
>>>>>>>>>
>>>>>>>>>     from dipy.reconst.csdeconv import
>>>>>>>>>  ConstrainedSphericalDeconvModel
>>>>>>>>>     csd_model = ConstrainedSphericalDeconvModel(gtab, response,
>>>>>>>>> sh_order=sh_order) # Note: you still need to calculate the response
>>>>>>>>> function!
>>>>>>>>>     pred_signal = csd_model.predict(dipy_coeffs, gtab, S0)
>>>>>>>>>
>>>>>>>>> I think that something like this should work (but I haven't tried
>>>>>>>>> it myself).
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> I have a WIP version of the multi-shell CSD model on a separate
>>>>>>>>>> branch, I plan on merging it but wasn't intending to get to that for a few
>>>>>>>>>> months. If you'd like to look at before then I can push the branch up to
>>>>>>>>>> github.
>>>>>>>>>>
>>>>>>>>>> Sounds interesting! I'd love to see what you have so far!
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>>
>>>>>>>>> Ariel
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Bago
>>>>>>>>>>
>>>>>>>>>> On Wed, May 25, 2016 at 2:31 AM Paolo Avesani <avesani at fbk.eu>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> I would like to take advantage of the "predict" method of
>>>>>>>>>>> reconstruction models in dipy. The goal is to assess the quality of results.
>>>>>>>>>>>
>>>>>>>>>>> I have already computed the reconstruction models using mrtrix3
>>>>>>>>>>> and stored the ODF files. For this reason I would need to initialize the
>>>>>>>>>>> csd model by importing the data from ODF stored by mrtrix3.
>>>>>>>>>>>
>>>>>>>>>>> The questions are manifold:
>>>>>>>>>>> - may I initialize the csd model by providing the precomputed
>>>>>>>>>>> values and skipping the "fit" step?
>>>>>>>>>>> - may I import the value of precomputed model from a file stored
>>>>>>>>>>> by mrtrix3?
>>>>>>>>>>> - is the csd model in dipy compliant with the output of
>>>>>>>>>>> multi-shell csd model computed by mrtrix3?
>>>>>>>>>>>
>>>>>>>>>>> I hope my questions and my goal is formulated clearly.
>>>>>>>>>>> Thanks for your support.
>>>>>>>>>>> Paolo
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Neuroimaging mailing list
>>>>>>>>>>> Neuroimaging at python.org
>>>>>>>>>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Neuroimaging mailing list
>>>>>>>>>> Neuroimaging at python.org
>>>>>>>>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>> Neuroimaging mailing list
>>>>>>>>> Neuroimaging at python.org
>>>>>>>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Neuroimaging mailing list
>>>>>>>> Neuroimaging at python.org
>>>>>>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Neuroimaging mailing list
>>>>>>> Neuroimaging at python.org
>>>>>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>>>>>
>>>>>>> _______________________________________________
>>>>>> Neuroimaging mailing list
>>>>>> Neuroimaging at python.org
>>>>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Neuroimaging mailing list
>>>>> Neuroimaging at python.org
>>>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>>>
>>>>>
>>>> _______________________________________________
>>>> Neuroimaging mailing list
>>>> Neuroimaging at python.org
>>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>>
>>>>
>>>
>>>
>>> --
>>> -------------------------------------------------------
>>> Paolo Avesani
>>> Fondazione Bruno Kessler
>>> via Sommarive 18,
>>> 38050 Povo (TN) - I
>>> phone:   +39 0461 314336
>>> fax:        +39 0461 302040
>>> email:     avesani at fbk.eu
>>> web:       avesani.fbk.eu
>>>
>>>
>>> _______________________________________________
>>> Neuroimaging mailing list
>>> Neuroimaging at python.org
>>> https://mail.python.org/mailman/listinfo/neuroimaging
>>>
>>>
>> _______________________________________________
> Neuroimaging mailing list
> Neuroimaging at python.org
> https://mail.python.org/mailman/listinfo/neuroimaging
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/neuroimaging/attachments/20160527/ccf19905/attachment.html>


More information about the Neuroimaging mailing list