Test combinations of kernels and estimators for coordinate-based meta-analyses.

Collection of NIDM-Results packs downloaded from Neurovault collection 1425, uploaded by Dr. Camille Maumet.

Note

Creation of the Dataset from the NIDM-Results packs was done with custom code. The Results packs for collection 1425 are not completely NIDM-Results-compliant, so the nidmresults library could not be used to facilitate data extraction.

import os

from nilearn.plotting import plot_stat_map

import nimare
from nimare.tests.utils import get_test_data_path

Load Dataset

dset_file = os.path.join(get_test_data_path(), "nidm_pain_dset.json")
dset = nimare.dataset.Dataset(dset_file)

mask_img = dset.masker.mask_img

List possible kernel transformers

MKDA density analysis

for kt_name, kt in kernel_transformers.items():
    try:
        mkda = nimare.meta.MKDADensity(
            kernel_transformer=kt, null_method="empirical", n_iters=100
        )
        mkda.fit(dset)
        corr = nimare.correct.FWECorrector(method="montecarlo", n_iters=10, n_cores=1)
        cres = corr.transform(mkda.results)
        plot_stat_map(
            cres.get_map("logp_level-voxel_corr-FWE_method-montecarlo"),
            cut_coords=[0, 0, -8],
            draw_cross=False,
            cmap="RdBu_r",
            title="MKDA estimator with %s" % kt_name,
        )

    except IndexError:
        print(
            "\nError: the %s does not currently work with the MKDA meta-analysis method\n"
            % kt_name
        )
  • plot cbma combine estimators and kernels
  • plot cbma combine estimators and kernels
  • plot cbma combine estimators and kernels

Out:

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  5.16it/s]
 20%|##        | 2/10 [00:00<00:01,  5.21it/s]
 30%|###       | 3/10 [00:00<00:01,  5.18it/s]
 40%|####      | 4/10 [00:00<00:01,  5.24it/s]
 50%|#####     | 5/10 [00:00<00:00,  5.21it/s]
 60%|######    | 6/10 [00:01<00:00,  5.24it/s]
 70%|#######   | 7/10 [00:01<00:00,  5.29it/s]
 80%|########  | 8/10 [00:01<00:00,  5.30it/s]
 90%|######### | 9/10 [00:01<00:00,  5.32it/s]
100%|##########| 10/10 [00:01<00:00,  5.32it/s]
100%|##########| 10/10 [00:01<00:00,  5.27it/s]

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  5.07it/s]
 20%|##        | 2/10 [00:00<00:01,  5.06it/s]
 30%|###       | 3/10 [00:00<00:01,  4.90it/s]
 40%|####      | 4/10 [00:00<00:01,  4.91it/s]
 50%|#####     | 5/10 [00:01<00:01,  4.99it/s]
 60%|######    | 6/10 [00:01<00:00,  4.99it/s]
 70%|#######   | 7/10 [00:01<00:00,  5.01it/s]
 80%|########  | 8/10 [00:01<00:00,  5.06it/s]
 90%|######### | 9/10 [00:01<00:00,  5.09it/s]
100%|##########| 10/10 [00:01<00:00,  5.10it/s]
100%|##########| 10/10 [00:01<00:00,  5.03it/s]

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  4.51it/s]
 20%|##        | 2/10 [00:00<00:01,  4.63it/s]
 30%|###       | 3/10 [00:00<00:01,  4.65it/s]
 40%|####      | 4/10 [00:00<00:01,  4.64it/s]
 50%|#####     | 5/10 [00:01<00:01,  4.65it/s]
 60%|######    | 6/10 [00:01<00:00,  4.65it/s]
 70%|#######   | 7/10 [00:01<00:00,  4.65it/s]
 80%|########  | 8/10 [00:01<00:00,  4.65it/s]
 90%|######### | 9/10 [00:01<00:00,  4.64it/s]
100%|##########| 10/10 [00:02<00:00,  4.65it/s]
100%|##########| 10/10 [00:02<00:00,  4.64it/s]

MKDA Chi2

for kt_name, kt in kernel_transformers.items():
    try:
        mkda = nimare.meta.MKDAChi2(kernel_transformer=kt)
        dset1 = dset.slice(dset.ids)
        dset2 = dset.slice(dset.ids)
        mkda.fit(dset1, dset2)
        corr = nimare.correct.FWECorrector(method="montecarlo", n_iters=10, n_cores=1)
        cres = corr.transform(mkda.results)
        plot_stat_map(
            cres.get_map("z_desc-consistency_level-voxel_corr-FWE_method-montecarlo"),
            threshold=1.65,
            cut_coords=[0, 0, -8],
            draw_cross=False,
            cmap="RdBu_r",
            title="MKDA Chi2 estimator with %s" % kt_name,
        )

    except IndexError:
        print(
            "\nError: the %s does not currently work with the MKDA Chi2 meta-analysis method\n"
            % kt_name
        )
  • plot cbma combine estimators and kernels
  • plot cbma combine estimators and kernels
  • plot cbma combine estimators and kernels

Out:

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:02,  3.32it/s]
 20%|##        | 2/10 [00:00<00:02,  3.33it/s]
 30%|###       | 3/10 [00:00<00:02,  3.37it/s]
 40%|####      | 4/10 [00:01<00:01,  3.39it/s]
 50%|#####     | 5/10 [00:01<00:01,  3.39it/s]
 60%|######    | 6/10 [00:01<00:01,  3.37it/s]
 70%|#######   | 7/10 [00:02<00:00,  3.38it/s]
 80%|########  | 8/10 [00:02<00:00,  3.38it/s]
 90%|######### | 9/10 [00:02<00:00,  3.37it/s]
100%|##########| 10/10 [00:02<00:00,  3.35it/s]
100%|##########| 10/10 [00:02<00:00,  3.36it/s]
/home/docs/checkouts/readthedocs.org/user_builds/nimare/envs/0.0.4/lib/python3.7/site-packages/nilearn/plotting/displays.py:786: UserWarning: empty mask
  get_mask_bounds(new_img_like(img, not_mask, affine))

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:02,  3.00it/s]
 20%|##        | 2/10 [00:00<00:02,  3.07it/s]
 30%|###       | 3/10 [00:00<00:02,  3.02it/s]
 40%|####      | 4/10 [00:01<00:01,  3.07it/s]
 50%|#####     | 5/10 [00:01<00:01,  3.10it/s]
 60%|######    | 6/10 [00:01<00:01,  3.12it/s]
 70%|#######   | 7/10 [00:02<00:00,  3.12it/s]
 80%|########  | 8/10 [00:02<00:00,  3.13it/s]
 90%|######### | 9/10 [00:02<00:00,  3.15it/s]
100%|##########| 10/10 [00:03<00:00,  3.15it/s]
100%|##########| 10/10 [00:03<00:00,  3.11it/s]
/home/docs/checkouts/readthedocs.org/user_builds/nimare/envs/0.0.4/lib/python3.7/site-packages/nilearn/plotting/displays.py:786: UserWarning: empty mask
  get_mask_bounds(new_img_like(img, not_mask, affine))

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:03,  2.59it/s]
 20%|##        | 2/10 [00:00<00:03,  2.53it/s]
 30%|###       | 3/10 [00:01<00:02,  2.52it/s]
 40%|####      | 4/10 [00:01<00:02,  2.53it/s]
 50%|#####     | 5/10 [00:01<00:01,  2.55it/s]
 60%|######    | 6/10 [00:02<00:01,  2.56it/s]
 70%|#######   | 7/10 [00:02<00:01,  2.56it/s]
 80%|########  | 8/10 [00:03<00:00,  2.56it/s]
 90%|######### | 9/10 [00:03<00:00,  2.56it/s]
100%|##########| 10/10 [00:03<00:00,  2.56it/s]
100%|##########| 10/10 [00:03<00:00,  2.55it/s]
/home/docs/checkouts/readthedocs.org/user_builds/nimare/envs/0.0.4/lib/python3.7/site-packages/nilearn/plotting/displays.py:786: UserWarning: empty mask
  get_mask_bounds(new_img_like(img, not_mask, affine))

KDA

for kt_name, kt in kernel_transformers.items():
    try:
        kda = nimare.meta.KDA(kernel_transformer=kt, null_method="empirical", n_iters=100)
        kda.fit(dset)
        corr = nimare.correct.FWECorrector(method="montecarlo", n_iters=10, n_cores=1)
        cres = corr.transform(kda.results)
        plot_stat_map(
            cres.get_map("logp_level-voxel_corr-FWE_method-montecarlo"),
            cut_coords=[0, 0, -8],
            draw_cross=False,
            cmap="RdBu_r",
            title="KDA estimator with %s" % kt_name,
        )

    except IndexError:
        print(
            "\nError: the %s does not currently work with the KDA meta-analysis method\n" % kt_name
        )
  • plot cbma combine estimators and kernels
  • plot cbma combine estimators and kernels
  • plot cbma combine estimators and kernels

Out:

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  5.81it/s]
 20%|##        | 2/10 [00:00<00:01,  5.80it/s]
 30%|###       | 3/10 [00:00<00:01,  5.79it/s]
 40%|####      | 4/10 [00:00<00:01,  5.81it/s]
 50%|#####     | 5/10 [00:00<00:00,  5.81it/s]
 60%|######    | 6/10 [00:01<00:00,  5.84it/s]
 70%|#######   | 7/10 [00:01<00:00,  5.85it/s]
 80%|########  | 8/10 [00:01<00:00,  5.77it/s]
 90%|######### | 9/10 [00:01<00:00,  5.76it/s]
100%|##########| 10/10 [00:01<00:00,  5.78it/s]
100%|##########| 10/10 [00:01<00:00,  5.80it/s]

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  5.73it/s]
 20%|##        | 2/10 [00:00<00:01,  5.63it/s]
 30%|###       | 3/10 [00:00<00:01,  5.71it/s]
 40%|####      | 4/10 [00:00<00:01,  5.76it/s]
 50%|#####     | 5/10 [00:00<00:00,  5.80it/s]
 60%|######    | 6/10 [00:01<00:00,  5.84it/s]
 70%|#######   | 7/10 [00:01<00:00,  5.83it/s]
 80%|########  | 8/10 [00:01<00:00,  5.72it/s]
 90%|######### | 9/10 [00:01<00:00,  5.71it/s]
100%|##########| 10/10 [00:01<00:00,  5.69it/s]
100%|##########| 10/10 [00:01<00:00,  5.73it/s]

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  5.04it/s]
 20%|##        | 2/10 [00:00<00:01,  5.17it/s]
 30%|###       | 3/10 [00:00<00:01,  5.22it/s]
 40%|####      | 4/10 [00:00<00:01,  5.30it/s]
 50%|#####     | 5/10 [00:00<00:00,  5.22it/s]
 60%|######    | 6/10 [00:01<00:00,  5.26it/s]
 70%|#######   | 7/10 [00:01<00:00,  5.18it/s]
 80%|########  | 8/10 [00:01<00:00,  5.25it/s]
 90%|######### | 9/10 [00:01<00:00,  5.26it/s]
100%|##########| 10/10 [00:01<00:00,  5.30it/s]
100%|##########| 10/10 [00:01<00:00,  5.25it/s]

ALE

for kt_name, kt in kernel_transformers.items():
    try:
        ale = nimare.meta.ALE(kernel_transformer=kt)
        ale.fit(dset)
        corr = nimare.correct.FWECorrector(method="montecarlo", n_iters=10, n_cores=1)
        cres = corr.transform(ale.results)
        plot_stat_map(
            cres.get_map("logp_level-cluster_corr-FWE_method-montecarlo"),
            cut_coords=[0, 0, -8],
            draw_cross=False,
            cmap="RdBu_r",
            title="ALE estimator with %s" % kt_name,
        )

    except IndexError:
        print(
            "\nError: the %s does not currently work with the ALE meta-analysis method\n" % kt_name
        )
  • plot cbma combine estimators and kernels
  • plot cbma combine estimators and kernels
  • plot cbma combine estimators and kernels

Out:

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  5.21it/s]
 20%|##        | 2/10 [00:00<00:01,  5.22it/s]
 30%|###       | 3/10 [00:00<00:01,  5.30it/s]
 40%|####      | 4/10 [00:00<00:01,  5.25it/s]
 50%|#####     | 5/10 [00:00<00:00,  5.23it/s]
 60%|######    | 6/10 [00:01<00:00,  5.18it/s]
 70%|#######   | 7/10 [00:01<00:00,  5.21it/s]
 80%|########  | 8/10 [00:01<00:00,  5.31it/s]
 90%|######### | 9/10 [00:01<00:00,  5.33it/s]
100%|##########| 10/10 [00:01<00:00,  5.31it/s]
100%|##########| 10/10 [00:01<00:00,  5.27it/s]

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  5.18it/s]
 20%|##        | 2/10 [00:00<00:01,  5.16it/s]
 30%|###       | 3/10 [00:00<00:01,  5.12it/s]
 40%|####      | 4/10 [00:00<00:01,  5.13it/s]
 50%|#####     | 5/10 [00:00<00:00,  5.16it/s]
 60%|######    | 6/10 [00:01<00:00,  5.18it/s]
 70%|#######   | 7/10 [00:01<00:00,  5.18it/s]
 80%|########  | 8/10 [00:01<00:00,  5.20it/s]
 90%|######### | 9/10 [00:01<00:00,  5.18it/s]
100%|##########| 10/10 [00:01<00:00,  5.21it/s]
100%|##########| 10/10 [00:01<00:00,  5.18it/s]

  0%|          | 0/10 [00:00<?, ?it/s]
 10%|#         | 1/10 [00:00<00:01,  4.80it/s]
 20%|##        | 2/10 [00:00<00:01,  4.78it/s]
 30%|###       | 3/10 [00:00<00:01,  4.77it/s]
 40%|####      | 4/10 [00:00<00:01,  4.76it/s]
 50%|#####     | 5/10 [00:01<00:01,  4.74it/s]
 60%|######    | 6/10 [00:01<00:00,  4.71it/s]
 70%|#######   | 7/10 [00:01<00:00,  4.77it/s]
 80%|########  | 8/10 [00:01<00:00,  4.73it/s]
 90%|######### | 9/10 [00:01<00:00,  4.75it/s]
100%|##########| 10/10 [00:02<00:00,  4.77it/s]
100%|##########| 10/10 [00:02<00:00,  4.76it/s]

Total running time of the script: ( 1 minutes 37.574 seconds)

Gallery generated by Sphinx-Gallery