Generate modeled activation maps

For coordinate-based data, individual studies’ statistical maps are mimicked by generating “modeled activation” (MA) maps. These MA maps are used in the CBMA algorithms, although the specific method used to generate the MA maps differs by algorithm.

# sphinx_gallery_thumbnail_number = 2

Start with the necessary imports

import os

import matplotlib.pyplot as plt
import numpy as np
from nilearn.plotting import plot_stat_map

from nimare.dataset import Dataset
from nimare.meta.kernel import ALEKernel, KDAKernel, MKDAKernel
from nimare.utils import get_resource_path

Load Dataset

Each kernel can taken certain parameters that control behavior

For example, MKDAKernel kernel accepts an r argument to control the radius of the kernel.

kernel = MKDAKernel(r=2)
mkda_r02 = kernel.transform(dset, return_type="image")
kernel = MKDAKernel(r=6)
mkda_r06 = kernel.transform(dset, return_type="image")
kernel = MKDAKernel(r=10)
mkda_r10 = kernel.transform(dset, return_type="image")
kernel = MKDAKernel(r=14)
mkda_r14 = kernel.transform(dset, return_type="image")

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(20, 10))
plot_stat_map(
    mkda_r02[2],
    cut_coords=[-2, -10, -4],
    title="r=2mm",
    vmax=2,
    axes=axes[0, 0],
    draw_cross=False,
)
plot_stat_map(
    mkda_r06[2],
    cut_coords=[-2, -10, -4],
    title="r=6mm",
    vmax=2,
    axes=axes[0, 1],
    draw_cross=False,
)
plot_stat_map(
    mkda_r10[2],
    cut_coords=[-2, -10, -4],
    title="r=10mm",
    vmax=2,
    axes=axes[1, 0],
    draw_cross=False,
)
plot_stat_map(
    mkda_r14[2],
    cut_coords=[-2, -10, -4],
    title="r=14mm",
    vmax=2,
    axes=axes[1, 1],
    draw_cross=False,
)
fig.show()
06 plot generate ma maps

There are several kernels available

MKDAKernel convolves coordinates with a sphere and takes the union across voxels.

KDAKernel convolves coordinates with a sphere as well, but takes the sum across voxels.

ALEKernel convolves coordinates with a 3D Gaussian, for which the FWHM is determined by the sample size of each study.

kernel = MKDAKernel(r=10)
mkda_res = kernel.transform(dset, return_type="image")
kernel = KDAKernel(r=10)
kda_res = kernel.transform(dset, return_type="image")
kernel = ALEKernel(sample_size=20)
ale_res = kernel.transform(dset, return_type="image")
max_conv = np.max(kda_res[2].get_fdata())

fig, axes = plt.subplots(figsize=(12, 12), nrows=3)
plot_stat_map(
    mkda_res[2],
    cut_coords=[-2, -10, -4],
    title="MKDA",
    vmax=max_conv,
    draw_cross=False,
    axes=axes[0],
    figure=fig,
)
plot_stat_map(
    kda_res[2],
    cut_coords=[-2, -10, -4],
    title="KDA",
    vmax=max_conv,
    draw_cross=False,
    axes=axes[1],
    figure=fig,
)
plot_stat_map(
    ale_res[2],
    cut_coords=[-2, -10, -4],
    title="ALE",
    draw_cross=False,
    axes=axes[2],
    figure=fig,
)
fig.show()
06 plot generate ma maps

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

Gallery generated by Sphinx-Gallery