.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/plot_load_destrieux_datalog_ir.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_plot_load_destrieux_datalog_ir.py: Datalog Intermediate Representation Example based on the Destrieux Atlas ======================================================================== Uploading the Destrieux left sulci into NeuroLang and executing some simple queries. .. GENERATED FROM PYTHON SOURCE LINES 10-27 .. code-block:: Python import warnings warnings.filterwarnings("ignore") import nilearn import numpy as np from matplotlib import pyplot as plt from nilearn import plotting import nibabel as nib from neurolang.datalog.chase import Chase from neurolang import expression_walker as ew from neurolang import expressions, region_solver, regions from neurolang.datalog import DatalogProgram from neurolang.datalog.expressions import Fact, Implication, TranslateToLogic .. GENERATED FROM PYTHON SOURCE LINES 28-29 Set up IR shortcuts .. GENERATED FROM PYTHON SOURCE LINES 29-37 .. code-block:: Python C_ = expressions.Constant S_ = expressions.Symbol Imp_ = Implication Fact_ = Fact Eb_ = expressions.ExpressionBlock .. GENERATED FROM PYTHON SOURCE LINES 38-40 Load the Destrieux example from nilearn as a fact list ------------------------------------------------------ .. GENERATED FROM PYTHON SOURCE LINES 40-46 .. code-block:: Python atlas_destrieux = nilearn.datasets.fetch_atlas_destrieux_2009() image = nib.load(atlas_destrieux['maps']) image_data = image.get_fdata().astype(int) .. GENERATED FROM PYTHON SOURCE LINES 47-48 Load the regions into Voxel-style regions .. GENERATED FROM PYTHON SOURCE LINES 48-66 .. code-block:: Python region_dict = {} for label, name in atlas_destrieux['labels']: if label == 0: continue voxels = np.transpose((image_data == label).nonzero()) if voxels.shape[0] == 0: continue r = regions.ExplicitVBR( voxels, image.affine, image_dim=image.shape ) region_dict[name] = r plotting.plot_roi(region_dict['L S_temporal_sup'].spatial_image()) .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_001.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 67-68 Make the fact list .. GENERATED FROM PYTHON SOURCE LINES 68-78 .. code-block:: Python destrieux = S_('Destrieux') destrieux_facts = [ Fact_(destrieux( C_(name), C_(region) )) for name, region in region_dict.items() ] .. GENERATED FROM PYTHON SOURCE LINES 79-81 Set the datalog interpreter with Region-managing builtins and adding lh, lr ----------------------------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 81-96 .. code-block:: Python class Datalog( region_solver.RegionSolver, TranslateToLogic, DatalogProgram, ew.ExpressionBasicEvaluator ): def function_lh(self, x: str) -> bool: return x.startswith('L ') def function_rh(self, x: str) -> bool: return x.startswith('R ') .. GENERATED FROM PYTHON SOURCE LINES 97-102 Construct a query ----------------------------------------------------------------------------- superior_sts_l(name, r) :- destrieux('L S_temporal_sup', superior_sts_l), anatomical_superior_of(r, superior_sts_l), lh(name), destrieux(name, r) .. GENERATED FROM PYTHON SOURCE LINES 102-124 .. code-block:: Python superior_sts_l = S_('region_l_sts') r = S_('r') name = S_('name_') r1 = Imp_( S_('superior_sts_l')(name, r), destrieux(C_('L S_temporal_sup'), superior_sts_l) & S_('anatomical_superior_of')(r, superior_sts_l) & S_('lh')(name) & destrieux(name, r) ) print(r1) datalog_program = Eb_( destrieux_facts + [ r1, ] ) .. rst-class:: sphx-glr-script-out .. code-block:: none Implication{λ{S{superior_sts_l: Unknown}}(S{name_: Unknown}, S{r: Unknown}) ← λ{C{and_: typing.Callable[[neurolang.type_system.Unknown, neurolang.type_system.Unknown], neurolang.type_system.Unknown]}}(λ{C{and_: typing.Callable[[neurolang.type_system.Unknown, neurolang.type_system.Unknown], neurolang.type_system.Unknown]}}(λ{C{and_: typing.Callable[[neurolang.type_system.Unknown, neurolang.type_system.Unknown], neurolang.type_system.Unknown]}}(λ{S{Destrieux: Unknown}}(C{'L S_temporal_sup': str}, S{region_l_sts: Unknown}), λ{S{anatomical_superior_of: Unknown}}(S{r: Unknown}, S{region_l_sts: Unknown})), λ{S{lh: Unknown}}(S{name_: Unknown})), λ{S{Destrieux: Unknown}}(S{name_: Unknown}, S{r: Unknown}))} .. GENERATED FROM PYTHON SOURCE LINES 125-127 Interpreting and running the query ----------------------------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 127-134 .. code-block:: Python dl = Datalog() dl.walk(datalog_program) solution = Chase(dl).build_chase_solution() .. GENERATED FROM PYTHON SOURCE LINES 135-137 Extracting the results from the intermediate representation to a python set and plotting the first element of the result .. GENERATED FROM PYTHON SOURCE LINES 137-145 .. code-block:: Python rsbv = ew.ReplaceExpressionsByValues({}) result = rsbv.walk(solution['superior_sts_l']) for name, region in result.unwrapped_iter(): plt.figure() plotting.plot_roi(region.spatial_image(), title=name) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_002.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_002.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_003.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_003.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_004.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_004.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_005.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_005.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_006.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_006.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_007.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_007.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_008.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_008.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_009.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_009.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_010.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_010.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_011.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_011.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_012.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_012.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_013.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_013.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_014.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_014.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_015.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_015.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_016.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_016.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_017.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_017.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_018.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_018.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_019.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_019.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_020.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_020.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_021.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_021.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_022.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_022.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_023.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_023.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_024.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_024.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_025.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_025.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_026.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_026.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_027.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_027.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_028.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_028.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_029.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_029.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_030.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_030.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_031.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_031.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_032.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_032.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_033.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_033.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_034.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_034.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_035.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_035.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_036.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_036.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_037.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_037.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_038.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_038.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_039.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_039.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_040.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_040.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_041.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_041.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_042.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_042.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_043.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_043.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_044.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_044.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_045.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_045.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_046.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_046.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_047.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_047.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_048.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_048.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_049.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_049.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_050.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_050.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_051.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_051.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_052.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_052.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_053.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_053.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_054.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_054.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_055.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_055.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_056.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_056.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_057.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_057.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_058.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_058.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_059.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_059.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_060.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_060.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_061.png :alt: plot load destrieux datalog ir :srcset: /auto_examples/images/sphx_glr_plot_load_destrieux_datalog_ir_061.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (1 minutes 16.419 seconds) .. _sphx_glr_download_auto_examples_plot_load_destrieux_datalog_ir.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_load_destrieux_datalog_ir.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_load_destrieux_datalog_ir.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_