.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        Click :ref:`here <sphx_glr_download_auto_examples_utils_plot_roi_voxel_index_volume.py>`     to download the full example code
    .. rst-class:: sphx-glr-example-title

    .. _sphx_glr_auto_examples_utils_plot_roi_voxel_index_volume.py:


====================
Get ROI Index Volume
====================

Create an index volume (similar to the aseg masks in freesurfer) with a different 
integer index for each ROI. ROIs in the left hemisphere will have negative values,
ROIs in the right hemisphere will have positive values.



.. image:: /auto_examples/utils/images/sphx_glr_plot_roi_voxel_index_volume_001.png
    :alt: plot roi voxel index volume
    :class: sphx-glr-single-img


.. rst-class:: sphx-glr-script-out

 Out:

 .. code-block:: none

    /home/travis/build/gallantlab/pycortex/cortex/svgoverlay.py:474: UserWarning: Requested layer in svg file (V3A) contains no splines
      warnings.warn("Requested layer in svg file (%s) contains no splines"%self.name)
    /home/travis/build/gallantlab/pycortex/cortex/utils.py:335: UserWarning: No vertices found in V3A!
      warnings.warn("No vertices found in {}!".format(name))
    /home/travis/build/gallantlab/pycortex/cortex/svgoverlay.py:474: UserWarning: Requested layer in svg file (V3B) contains no splines
      warnings.warn("Requested layer in svg file (%s) contains no splines"%self.name)
    /home/travis/build/gallantlab/pycortex/cortex/utils.py:335: UserWarning: No vertices found in V3B!
      warnings.warn("No vertices found in {}!".format(name))
    /home/travis/build/gallantlab/pycortex/cortex/svgoverlay.py:474: UserWarning: Requested layer in svg file (LO) contains no splines
      warnings.warn("Requested layer in svg file (%s) contains no splines"%self.name)
    /home/travis/build/gallantlab/pycortex/cortex/utils.py:335: UserWarning: No vertices found in LO!
      warnings.warn("No vertices found in {}!".format(name))
    /home/travis/build/gallantlab/pycortex/cortex/svgoverlay.py:474: UserWarning: Requested layer in svg file (V4) contains no splines
      warnings.warn("Requested layer in svg file (%s) contains no splines"%self.name)
    /home/travis/build/gallantlab/pycortex/cortex/utils.py:335: UserWarning: No vertices found in V4!
      warnings.warn("No vertices found in {}!".format(name))
    /home/travis/build/gallantlab/pycortex/cortex/svgoverlay.py:474: UserWarning: Requested layer in svg file (V7) contains no splines
      warnings.warn("Requested layer in svg file (%s) contains no splines"%self.name)
    /home/travis/build/gallantlab/pycortex/cortex/utils.py:335: UserWarning: No vertices found in V7!
      warnings.warn("No vertices found in {}!".format(name))
    /home/travis/build/gallantlab/pycortex/cortex/svgoverlay.py:474: UserWarning: Requested layer in svg file (IFSFP) contains no splines
      warnings.warn("Requested layer in svg file (%s) contains no splines"%self.name)
    /home/travis/build/gallantlab/pycortex/cortex/utils.py:335: UserWarning: No vertices found in IFSFP!
      warnings.warn("No vertices found in {}!".format(name))
    Found 100.00% of S1H
    Found 100.00% of S1M
    Found 100.00% of sPMv
    Found 100.00% of PMvh
    Found 100.00% of M1F
    Found 100.00% of M1H
    Found 100.00% of Broca
    Found 100.00% of SMFA
    Found 100.00% of M1M
    /home/travis/build/gallantlab/pycortex/cortex/utils.py:621: RuntimeWarning: Mean of empty slice.
      pct_coverage[roi] = vert_in_scan.mean() * 100
    /home/travis/virtualenv/python3.8.0/lib/python3.8/site-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars
      ret = ret.dtype.type(ret / rcount)
    Found nan% of V3A
    Found nan% of V3B
    Found 100.00% of FO
    Found 100.00% of PPA
    Found 100.00% of S2F
    Found 100.00% of SEF
    Found nan% of LO
    Found 100.00% of V1
    Found 100.00% of V2
    Found 100.00% of V3
    Found nan% of V4
    Found nan% of V7
    Found 100.00% of FEF
    Found 100.00% of AC
    Found 100.00% of OFA
    Found nan% of IFSFP
    Found 100.00% of S1F
    Found 100.00% of OPA
    Found 100.00% of EBA
    Found 100.00% of RSC
    Found 100.00% of IPS
    Found 100.00% of SMHA
    Found 100.00% of FFA
    Cutting 0 overlapping voxels (should be < ~50)
    Index keys for which ROI is which in `index_volume`:
    {'S1H': 1, 'S1M': 2, 'sPMv': 3, 'PMvh': 4, 'M1F': 5, 'M1H': 6, 'Broca': 7, 'SMFA': 8, 'M1M': 9, 'V3A': 10, 'V3B': 11, 'FO': 12, 'PPA': 13, 'S2F': 14, 'SEF': 15, 'LO': 16, 'V1': 17, 'V2': 18, 'V3': 19, 'V4': 20, 'V7': 21, 'FEF': 22, 'AC': 23, 'OFA': 24, 'IFSFP': 25, 'S1F': 26, 'OPA': 27, 'EBA': 28, 'RSC': 29, 'IPS': 30, 'SMHA': 31, 'FFA': 32}






|


.. code-block:: default


    import cortex
    import numpy as np
    import matplotlib.pyplot as plt

    subject = "S1"
    xfm = "fullhead"

    # Get the map of which voxels are inside of our ROI
    index_volume, index_keys = cortex.utils.get_roi_masks(subject, xfm, 
                                   roi_list=None, # Default (None) gives all available ROIs in overlays.svg
                                   gm_sampler='cortical-conservative', # Select only voxels mostly within cortex
                                   split_lr=True, # Separate left/right ROIs (this occurs anyway with index volumes)
                                   threshold=0.9, # convert probability values to boolean mask for each ROI
                                   return_dict=False # return index volume, not dict of masks
                                   )

    lim = np.max(np.abs(index_volume))
    # Plot the mask for one ROI onto a flatmap
    roi_data = cortex.Volume(index_volume, subject, xfm, 
                             vmin=-lim, # This is a probability mask, so only
                             vmax=lim, # so scale btw zero and one
                             cmap="RdBu_r", # Shades of blue for L hem, red for R hem ROIs
                             )

    cortex.quickflat.make_figure(roi_data,
                                 thick=1, # select a single depth (btw white matter & pia)
                                 sampler='nearest', # no interpolation
                                 with_curvature=True,
                                 with_colorbar=True,
                                 )
    print("Index keys for which ROI is which in `index_volume`:")
    print(index_keys)
    plt.show()


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** ( 0 minutes  9.916 seconds)


.. _sphx_glr_download_auto_examples_utils_plot_roi_voxel_index_volume.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_roi_voxel_index_volume.py <plot_roi_voxel_index_volume.py>`



  .. container:: sphx-glr-download sphx-glr-download-jupyter

     :download:`Download Jupyter notebook: plot_roi_voxel_index_volume.ipynb <plot_roi_voxel_index_volume.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_