Loading and Querying the Destrieux et al. Atlas’ Left Hemisphere#

Uploading the Destrieux regions NeuroLang and executing a simple query.

import warnings

warnings.filterwarnings("ignore")


from matplotlib import pyplot as plt
import nibabel as nib
from nilearn import datasets, plotting
from neurolang.frontend import NeurolangDL

Initialise the NeuroLang probabilistic engine.

nl = NeurolangDL()

Load the Destrieux example from nilearn as a fact list

atlas_destrieux = datasets.fetch_atlas_destrieux_2009()
atlas_labels = {
    label: str(name)
    for label, name in atlas_destrieux['labels']
}


nl.add_atlas_set('destrieux_atlas', atlas_labels, nib.load(atlas_destrieux['maps']))

Add utility function

@nl.add_symbol
def startswith(prefix: str, s: str) -> bool:
    return s.startswith(prefix)

Query all left hemisphere regions superior to the temporal superior sulucs and anterior to the central sulcus

with nl.scope as e:
    e.on_left_hemisphere[e.x] = (
            e.destrieux_atlas(e.l, e.x) & e.startswith('L S', e.l)
    )

    result = nl.query((e.r,), e.on_left_hemisphere(e.r))

Visualise results

subplots = plt.subplots(
    nrows=len(result), ncols=1,
    figsize=(10, 5 * len(result))
)[1]

for (r, subplot) in zip(result, subplots):
    region = r[0]
    plotting.plot_roi(region.spatial_image(), axes=subplot)

Gallery generated by Sphinx-Gallery