.. only:: html
.. note::
:class: sphx-glr-download-link-note
Click :ref:`here ` to download the full example code
.. rst-class:: sphx-glr-example-title
.. _sphx_glr_auto_examples_tensor_plot_0_3D_diff_tensor_mri.py:
Diffusion tensor MRI, 3D{6} dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following is an example of a 3D{6} diffusion tensor MRI dataset with three
spatial dimensions, :math:`d=3`, and one, :math:`p=1`, dependent-variable
with six components. For illustration, we have reduced the size of the dataset.
The complete diffusion tensor MRI dataset, in the CSDM format, is available
`online `_.
The original dataset [#f1]_ is also available.
Let's import the CSDM data-file and look at its data structure.
.. code-block:: default
import csdmpy as cp
filename = "https://osu.box.com/shared/static/x5d1hgqjgo01wguyzwbv6e256erxejtx.csdf"
diff_mri = cp.load(filename)
There are three linear dimensions in this dataset, corresponding to the x, y, and z
spatial dimensions,
.. code-block:: default
x = diff_mri.dimensions
print(x[0].label, x[1].label, x[2].label)
.. rst-class:: sphx-glr-script-out
Out:
.. code-block:: none
x y z
and one six-component dependent variables holding the diffusion tensor components.
Because the diffusion tensor is a symmetric second-rank tensor, we only need six
tensor components. The components of the tensor are ordered as
.. code-block:: default
y = diff_mri.dependent_variables
print(y[0].component_labels)
.. rst-class:: sphx-glr-script-out
Out:
.. code-block:: none
['dxx', 'dxy', 'dxz', 'dyy', 'dyz', 'dzz']
The symmetric matrix information is also found with the
:attr:`~csdmpy.DependentVariable.quantity_type` attribute,
.. code-block:: default
y[0].quantity_type
.. rst-class:: sphx-glr-script-out
Out:
.. code-block:: none
'symmetric_matrix_3'
which implies a 3x3 symmetric matrix.
**Visualize the dataset**
In the following, we visualize the isotropic diffusion coefficient, that is, the
average of the :math:`d_{xx}`, :math:`d_{yy}`, and :math:`d_{zz}` tensor components.
Since it's a three-dimensional dataset, we'll visualize the projections onto the
three dimensions.
.. code-block:: default
# the isotropic diffusion coefficient.
# component at index 0 = dxx
# component at index 3 = dyy
# component at index 5 = dzz
isotropic_diffusion = (y[0].components[0] + y[0].components[3] + y[0].components[5]) / 3
In the following, we use certain features of the csdmpy module.
Please refer to :ref:`generating_csdm_objects` for further details.
.. code-block:: default
# Create a new csdm object from the isotropic diffusion coefficient array.
new_csdm = cp.as_csdm(isotropic_diffusion, quantity_type="scalar")
# Add the dimensions from `diff_mri` object to the `new_csdm` object.
for i, dim in enumerate(x):
new_csdm.dimensions[i] = dim
Now, we can plot the projections of the isotropic diffusion coefficients along
the respective dimensions as
.. code-block:: default
import matplotlib.pyplot as plt
# projection along the x-axis.
plt.figure(figsize=(5, 4))
cp.plot(new_csdm.sum(axis=0), cmap="gray_r", origin="upper")
plt.tight_layout()
plt.show()
.. image:: /auto_examples/tensor/images/sphx_glr_plot_0_3D_diff_tensor_mri_001.png
:alt: plot 0 3D diff tensor mri
:class: sphx-glr-single-img
.. code-block:: default
# projection along the y-axis.
plt.figure(figsize=(5, 4))
cp.plot(new_csdm.sum(axis=1), cmap="gray_r", origin="upper")
plt.tight_layout()
plt.show()
.. image:: /auto_examples/tensor/images/sphx_glr_plot_0_3D_diff_tensor_mri_002.png
:alt: plot 0 3D diff tensor mri
:class: sphx-glr-single-img
.. code-block:: default
# projection along the z-axis.
plt.figure(figsize=(5, 4))
cp.plot(new_csdm.sum(axis=2), cmap="gray_r", origin="upper")
plt.tight_layout()
plt.show()
.. image:: /auto_examples/tensor/images/sphx_glr_plot_0_3D_diff_tensor_mri_003.png
:alt: plot 0 3D diff tensor mri
:class: sphx-glr-single-img
.. rubric:: Citation
.. [#f1] Diffusion tensor MRI `dataset `_; 2000.
.. rst-class:: sphx-glr-timing
**Total running time of the script:** ( 0 minutes 2.879 seconds)
.. _sphx_glr_download_auto_examples_tensor_plot_0_3D_diff_tensor_mri.py:
.. only :: html
.. container:: sphx-glr-footer
:class: sphx-glr-footer-example
.. container:: sphx-glr-download sphx-glr-download-python
:download:`Download Python source code: plot_0_3D_diff_tensor_mri.py `
.. container:: sphx-glr-download sphx-glr-download-jupyter
:download:`Download Jupyter notebook: plot_0_3D_diff_tensor_mri.ipynb `
.. only:: html
.. rst-class:: sphx-glr-signature
`Gallery generated by Sphinx-Gallery `_