.. 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:: default 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:: default 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:: default atlas_destrieux = nilearn.datasets.fetch_atlas_destrieux_2009() image = nib.load(atlas_destrieux['maps']) image_data = image.get_data() .. GENERATED FROM PYTHON SOURCE LINES 47-48 Load the regions into Voxel-style regions .. GENERATED FROM PYTHON SOURCE LINES 48-66 .. code-block:: default 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.decode('utf8')] = 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:: default 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:: default 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:: default 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:: default 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:: default 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 11.245 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-python :download:`Download Python source code: plot_load_destrieux_datalog_ir.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_load_destrieux_datalog_ir.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_