{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0d7f3737",
   "metadata": {},
   "source": [
    "# Meta-Analytic Functional Decoding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d8790823",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:17:42.100013Z",
     "iopub.status.busy": "2026-09-30T12:17:42.099625Z",
     "iopub.status.idle": "2026-09-30T12:17:44.405109Z",
     "shell.execute_reply": "2026-09-30T12:17:44.404770Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": "# First, import the necessary modules and functions\nimport os\n\nimport matplotlib.pyplot as plt\nfrom myst_nb import glue\nfrom nilearn import plotting\nfrom repo2data.repo2data import Repo2Data\n\n# Install the data if running locally, or points to cached data if running on neurolibre\nDATA_REQ_FILE = os.path.abspath(\"../binder/data_requirement.json\")\nrepo2data = Repo2Data(DATA_REQ_FILE)\ndata_path = repo2data.install()\ndata_path = os.path.join(data_path[0], \"data\")"
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "537a733b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:17:44.412592Z",
     "iopub.status.busy": "2026-09-30T12:17:44.412193Z",
     "iopub.status.idle": "2026-09-30T12:17:47.928070Z",
     "shell.execute_reply": "2026-09-30T12:17:47.927030Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "95 features selected.\n"
     ]
    }
   ],
   "source": "\nfrom nimare import dataset, meta\n\nneurosynth_dset = dataset.Dataset.load(os.path.join(data_path, \"neurosynth_dataset.pkl.gz\"))\n\nkern = meta.kernel.MKDAKernel(memory_limit=\"500mb\")\nneurosynth_dset_first500 = dataset.Dataset.load(\n    os.path.join(data_path, \"neurosynth_dataset_first500_with_mkda_ma.pkl.gz\"),\n)\n\n# Collect features for decoding\n# We use any features that appear in >10% of studies and <90%.\nid_cols = [\"id\", \"study_id\", \"contrast_id\"]\nfrequency_threshold = 0.001\ncols = neurosynth_dset_first500.annotations.columns\ncols = [c for c in cols if c not in id_cols]\ndf = neurosynth_dset_first500.annotations.copy()[cols]\nn_studies = df.shape[0]\nfeature_counts = (df >= frequency_threshold).sum(axis=0)\ntarget_features = feature_counts.between(n_studies * 0.1, n_studies * 0.9)\ntarget_features = target_features[target_features]\ntarget_features = target_features.index.values\nprint(f\"{len(target_features)} features selected.\", flush=True)\n\ncontinuous_map = os.path.join(data_path, \"map_to_decode.nii.gz\")\namygdala_roi = os.path.join(data_path, \"amygdala_roi.nii.gz\")\namygdala_ids = neurosynth_dset_first500.get_studies_by_mask(amygdala_roi)"
  },
  {
   "cell_type": "markdown",
   "id": "24d40ac3",
   "metadata": {},
   "source": [
    "Functional decoding performed with meta-analytic data, refers to methods which attempt to predict mental states from neuroimaging data using a large-scale meta-analytic database {cite:p}`Smith2009-wk`.\n",
    "Such analyses may also be referred to as \"informal reverse inference\" {cite:p}`Poldrack2011-zp`, \"functional characterization analysis\" {cite:p}`Bzdok2013-gc,Cieslik2013-kz,Rottschy2013-cd`, \"open-ended decoding\" {cite:p}`Rubin2017-rd`, or simply \"functional decoding\" {cite:p}`Amft2015-kw,Bzdok2013-jv,Nickl-Jockschat2015-rg`.\n",
    "While the terminology is far from standardized, we will refer to this method as **meta-analytic functional decoding** in order to distinguish it from alternative methods like multivariate decoding and model-based decoding {cite:p}`Poldrack2011-zp`.\n",
    "Meta-analytic functional decoding is often used in conjunction with MACM, meta-analytic clustering, meta-analytic parcellation, and meta-ICA, in order to characterize resulting brain regions, clusters, or components.\n",
    "Meta-analytic functional decoding models have also been extended for the purpose of **meta-analytic functional encoding**, wherein text is used to generate statistical images {cite:p}`Dockes2018-ug,Nunes2018-du,Rubin2017-rd`.\n",
    "\n",
    "Four common approaches are correlation-based decoding, dot-product decoding, weight-sum decoding, and chi-square decoding.\n",
    "We will first discuss continuous decoding methods (i.e., correlation and dot-product), followed by discrete decoding methods (weight-sum and chi-square)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52a76e45",
   "metadata": {},
   "source": [
    "(content:decoding:continuous)=\n",
    "## Decoding continuous inputs\n",
    "\n",
    "When decoding unthresholded statistical maps (such as {numref}`figure_map_to_decode`), the most common approaches are to simply correlate the input map with maps from the database, or to compute the dot product between the two maps.\n",
    "In Neurosynth, meta-analyses are performed for each label (i.e., term or topic) in the database and then the input image is correlated with the resulting unthresholded statistical map from each meta-analysis.\n",
    "Performing statistical inference on the resulting correlations is not straightforward, however, as voxels display strong spatial correlations, and the true degrees of freedom are consequently unknown (and likely far smaller than the nominal number of voxels).\n",
    "In order to interpret the results of this decoding approach, users typically select some arbitrary number of top correlation coefficients ahead of time, and use the associated labels to describe the input map.\n",
    "However, such results should be interpreted with great caution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b36592b9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:17:48.004473Z",
     "iopub.status.busy": "2026-09-30T12:17:47.938873Z",
     "iopub.status.idle": "2026-09-30T12:17:52.304696Z",
     "shell.execute_reply": "2026-09-30T12:17:52.305093Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/srv/conda/envs/notebook/lib/python3.7/site-packages/nilearn/plotting/img_plotting.py:348: FutureWarning: Default resolution of the MNI template will change from 2mm to 1mm in version 0.10.0\n",
      "  anat_img = load_mni152_template()\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/srv/conda/envs/notebook/lib/python3.7/site-packages/nilearn/_utils/niimg.py:62: UserWarning: Non-finite values detected. These values will be replaced with zeros.\n",
      "  \"Non-finite values detected. \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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RDv55JM39CkAALBxGaPaSWLWE2YGBwAAANB2VDQAAACAIfTlL39ZO+20kyZOnKgpU6bowAMP1G9+85vcbS688ELNmTNH3d3dmj59ug477DA9+uijrZ1AV5P/WkRFAwAAABhCO+64oy677DI9/PDDuvfeezV79mwddNBBWrJkSeY2d999tz71qU/p17/+te68806tXr1aBx10kJYvX978CYxt8l+LRg1YKhYAAAAAQ27ZsmXq6enRz3/+cx1wwAGFtlmyZImmT5+uu+++W3vvvXdTx9GhvdLYycVObvUy6Uc96u3t1eTJBbdJMBgcAAAA2ED6+/t1xRVXqKenR2984xsLb2eTzU6dOrX5gw4yUlEUFQ0AAABgiN1666066qijtGLFCm255Za68847tfnmmxfadt26dTrllFO0xx576PWvf/16PtPWMUYDAAAAWE++853vaNKkSdV/99xzjyRpv/3200MPPaT77rtPhxxyiI488kgtXry40D4/9alP6X/+5390ww03tHZSlt62yL9BhCUYowEAAACsJ319fVq0aFH1+axZszR+/Pi6cjvssINOOOEEnXnmmbn7O+mkk/SjH/1I//Vf/6XtttuuqXOpjtE4plfqKjjeon+Z9G3GaAAAAAAble7ubnV3dzcst27dOq1atSrz9YGBAZ188sn6wQ9+oPnz5zddydgQ6DoFAAAADJHly5frrLPO0q9//Ws99dRTevDBB3XCCSdo4cKFOuKII6rlDjjgAF122WXV55/61Kd03XXX6frrr1d3d7eef/55Pf/883rllVeaP4khSm9LRAMAAAAYIqNHj9Yjjzyia665Ri+88II222wzzZkzR/fcc49e97rXVcs98cQTeuGFF6rP582bJ0nad999a/Z31VVX6bjjjmvuJGyMRhHrmtu1PwwAAACAITBu3DjdfPPNDcstWLCg5vlwHFZNRQMAAADoJM10iRpERIMxGgAAAADajogGAAAA0Em6kn9FDKLHFhUNAAAAoJPQdQoAAADAcEVEAwAAAOgkzaS3Xdv6YYhoAAAAAGg7IhoAAABAJ2lmjMYgIhpUNAAAAIBO0kzWKQaDAwAAANiYENEAAAAAOkkzg8HXDO4wAAAAADpFM2M0BlHRoOsUAAAAgLYjogEAAAB0EiIaAAAAAIYrIhoAAABAJxmiiAYVDQAAAKCTjFXxeTToOgUAAABgY0JEAwAAAOgkzXSdKlougogGAAAAgLYjogEAAAB0kiGKaFDRAAAAADrJGBWvQAyitkDXKQAAAABtR0QDAAAA6CRdKp7ednXrhyGiAQAAAKDtiGgAAAAAnYTB4AAAAADajnk0AAAAAAxXRDQAAACATjJE6W2paAAAAACdpJmsU0XLRdB1CgAAAEDbEdEAAAAAOgmDwQEAAAAMV0Q0AAAAgE7CYHAAAAAAbUfXKQAAAADDFRENAAAAoJOQ3hYAAADAcEVEAwAAAOgkQzRGg4oGAAAA0EmGKOsUXacAAAAAtB0RDQAAAKCT0HUKAAAAQNuRdQoAAADAcEVEAwAAAOggm4yWRo0uVnZgtLSu1eO0uB0AAAAAZCKiAQAAAHSQcZJGFSw7IGlFi8ehogEAAAB0kE1VvFvTOrVe0aDrFAAAAIC2I6IBAAAAdJBxai6i0SoiGgAAAADajogGAAAA0EGaHaPRKioaAAAAQAfZVFLBaTS0dhDHoesUAAAAgLYjogEAAAB0kHEiogEAAABgmCKiAQAAAHSQTVW8ErBmEMehogEAAAB0kHEamooGXacAAAAAtB0RDQAAAKCDbCppbMGyqwdxHCoaAAAAQAcZp+IVjaLZqWLoOgUAAACg7YhoAAAAAB2EiAYAAACAYYuIBgAAANBBupJ/RYwaxHGoaAAAAAAdZJyKVzQG0/2JrlMAAAAA2o6IBgAAANBBNk3+FTGYrlNENAAAAAC0HRENAAAAoIOM09BENKhoAAAAAB1kU1UqG+sbXacAAAAAtB0RDQAAAKCDjNPQRDSoaAAAAAAdZKgqGnSdAgAAANB2RDQAAACADtLMYPCBQRyHiAYAAACAtiOiAQAAAHSQZmYGXzeI41DRAAAAADpIM12nBlPRoOsUAAAAgLYjogEAAAB0kGbS2xLRAAAAALBRIaIBAAAAdJBmxmisHcRxqGgAAAAAHaSZrlODqWjQdQoAAABA2xHRAAAAADrIUEU0qGgAAAAAHaSZMRprBnEcuk4BAAAAaDsiGgAAAEAHaabrFBENAAAAABsVIhoAAABAB+lSZZxGEf2DOA4VDQAAAKCDNNN1avUgjkPXKQAAAABtR0UDAAAAGGJ//vOf9b73vU89PT2aOHGi5syZo6effrrQtjfccINGjRqlww47rKVjW3rbIv+KdrGKoaIBAAAADKEnnnhCe+65p3baaSfNnz9f//3f/61zzjlH48Y17tC0YMECfe5zn9Nee+01BGc6OKMGBgYGNvRJAAAAAJ3iqKOO0tixY3Xttdc2td3atWu1995764QTTtA999yjcrmsH/7wh4W3X7ZsmXp6erSot1eTJ08uvM2Mnh71NrGNIaIBAAAADJF169bptttu04477qiDDz5Y06dP19y5cwtVGM477zxNnz5dH/3oRwd1DkW7TTUzaDyGrFMAAADAEFm8eLFefvllXXTRRTr//PP1ta99Tbfffrve//7366677tI+++wT3e7ee+/Vf/zHf+ihhx4a9DksW7ZsvZT1qGgAAAAA68l3vvMdfeITn6g+v+222yRJhx56qE499VRJ0q677qr77rtPl19+ebSi0dfXp4985CO68sortfnmm7d8Ll1dXdpiiy209dZbN7XdFltsoa6urqaPR0UDAAAAWE/e9773ae7cudXn06ZN05gxY7TzzjvXlHvta1+re++9N7qPJ554QgsWLNB73/ve6rp169ZJksaMGaNHH31U22+/fcNzGTdunP7yl7+ov7+5afi6uroKDVT3qGgAAAAA60l3d7e6u7tr1s2ZM0ePPvpozbrHHntM2267bXQfO+20kx5++OGadWeffbb6+vr0T//0T01FKMaNG9dSpaEVVDQAAACAIfT5z39eH/zgB7X33ntrv/320+23365bbrlF8+fPr5Y55phjNGvWLF144YUaN26cXv/619fso1QqSVLd+o0JFQ0AAABgCP3N3/yNLr/8cl144YX69Kc/rde85jW66aabtOeee1bLPP3009pkk+GdIJZ5NAAAAAC03fCuJgEAAADYKFHRAAAAANB2VDQAAAAAtB0VDQAAAABtR0UDAAAAQNtR0QAAAADQdlQ0AAAAALQdFQ0AAAAAbUdFAwAAAEDbUdEAAAAA0HZUNAAAAAC0HRUNAAAAAG1HRQMAAABA21HRAAAAANB2VDQAAAAAtB0VDQAAAABtR0UDAAAAQNtR0QAAAADQdlQ0AAAAALQdFQ0AAAAAbUdFAwAAAEDbUdEAAAAA0HZUNAAAAAC0HRUNAAAAAG1HRQMAAABA21HRAAAAANB2VDQAAAAAtN3/B7ADpi5HrYKCAAAAAElFTkSuQmCC\n",
      "text/plain": "<Figure size 1000x600 with 5 Axes>"
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "application/papermill.record/",
       "name": "figure_map_to_decode"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": "#| label: figure_map_to_decodecell\nfig, ax = plt.subplots(figsize=(10, 6))\nplotting.plot_stat_map(continuous_map, axes=ax, figure=fig, annotate=False, draw_cross=False)\nglue(\"figure_map_to_decode\", fig, display=False)"
  },
  {
   "cell_type": "markdown",
   "id": "1958b3ed",
   "metadata": {},
   "source": "```{glue:figure} figure_map_to_decode\n:name: figure_map_to_decode-notebook\n:align: center\n\nThe unthresholded statistical map that will be used for continuous decoding.\n```\n\nThis approach can also be applied to an image-based database like NeuroVault, either by correlating input data with meta-analyzed statistical maps, or by deriving distributions of correlation coefficients by grouping statistical maps in the database according to label.\nUsing these distributions, it is possible to statistically compare labels in order to assess label significance.\nNiMARE includes methods for both correlation-based decoding and correlation distribution-based decoding, although the correlation-based decoding is better established and should be preferred over the correlation distribution-based decoding.\nAs such, we will only show the {py:class}`~nimare.decode.continuous.CorrelationDecoder` here.\n\n```{important}\n{py:class}`~nimare.decode.continuous.CorrelationDecoder` currently runs _very_ slowly.\nWe strongly recommend running it on a subset of labels within the `Dataset`.\nIt is also quite memory-intensive.\n\nIn this example, we have only run the decoder using features appearing in >10% and <90% of the first 500 studies in the `Dataset`.\nAdditionally, we have pre-generated the results and will simply show the code that _would_ generate\nthose results, as the decoder requires too much memory for NeuroLibre's servers.\n```\n\n```python\nfrom nimare import decode, meta\n\ncorr_decoder = decode.continuous.CorrelationDecoder(\n    frequency_threshold=0.001,\n    meta_estimator=meta.MKDADensity(kernel_transformer=kern, memory_limit=None),\n    target_image=\"z\",\n    features=target_features,\n    memory_limit=\"500mb\",\n)\ncorr_decoder.fit(neurosynth_dset_first500)\ncorr_df = corr_decoder.transform(continuous_map)\n```"
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a886e6fb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:17:52.309506Z",
     "iopub.status.busy": "2026-09-30T12:17:52.309114Z",
     "iopub.status.idle": "2026-09-30T12:17:52.329349Z",
     "shell.execute_reply": "2026-09-30T12:17:52.329065Z"
    }
   },
   "outputs": [],
   "source": "import pandas as pd\n\ncorr_df = pd.read_table(\n    os.path.join(data_path, \"correlation_decoder_results.tsv\"),\n    index_col=\"feature\",\n)"
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "21690f55",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:17:52.335498Z",
     "iopub.status.busy": "2026-09-30T12:17:52.335174Z",
     "iopub.status.idle": "2026-09-30T12:17:52.341184Z",
     "shell.execute_reply": "2026-09-30T12:17:52.341534Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>r</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>feature</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__cingulate</th>\n",
       "      <td>0.448665</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__anterior cingulate</th>\n",
       "      <td>0.415396</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__anterior</th>\n",
       "      <td>0.391049</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__auditory</th>\n",
       "      <td>0.343746</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__conditions</th>\n",
       "      <td>0.338773</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__cortices</th>\n",
       "      <td>0.331308</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__information</th>\n",
       "      <td>0.330473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__role</th>\n",
       "      <td>0.326022</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__level</th>\n",
       "      <td>0.322515</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__healthy</th>\n",
       "      <td>0.319750</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                 r\n",
       "feature                                           \n",
       "terms_abstract_tfidf__cingulate           0.448665\n",
       "terms_abstract_tfidf__anterior cingulate  0.415396\n",
       "terms_abstract_tfidf__anterior            0.391049\n",
       "terms_abstract_tfidf__auditory            0.343746\n",
       "terms_abstract_tfidf__conditions          0.338773\n",
       "terms_abstract_tfidf__cortices            0.331308\n",
       "terms_abstract_tfidf__information         0.330473\n",
       "terms_abstract_tfidf__role                0.326022\n",
       "terms_abstract_tfidf__level               0.322515\n",
       "terms_abstract_tfidf__healthy             0.319750"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "table_corr"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": "#| label: table_corrcell\ncorr_df = corr_df.reindex(corr_df[\"r\"].abs().sort_values(ascending=False).index)\ncorr_df = corr_df.iloc[:10]\nglue(\"table_corr\", corr_df)"
  },
  {
   "cell_type": "markdown",
   "id": "994e6e1a",
   "metadata": {},
   "source": "```{glue:figure} table_corr\n:name: \"tbl:table_corr-notebook\"\n:align: center\n\nThe top ten terms, sorted by absolute correlation coefficient, from the correlation decoding method.\n```"
  },
  {
   "cell_type": "markdown",
   "id": "862b107b",
   "metadata": {},
   "source": [
    "(content:decoding:discrete)=\n",
    "## Decoding discrete inputs\n",
    "\n",
    "Decoding regions of interest (ROIs) requires a different approach than decoding unthresholded statistical maps.\n",
    "One simple approach, used by GCLDA and implemented in the function {py:func}`~nimare.decode.discrete.gclda_decode_roi`, simply sums the `P(topic|voxel)` distribution across all voxels in the ROI in order to produce a value associated with each topic for the ROI.\n",
    "These **weight sum** values are arbitrarily scaled and cannot be compared across ROIs.\n",
    "We will not show this method because of its simplicity and the fact that it can only currently be applied to a GCLDA model.\n",
    "\n",
    "Before we dig into the other decoding methods are are available, let's take a look at the ROI we want to decode."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "dba441c9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:17:52.407647Z",
     "iopub.status.busy": "2026-09-30T12:17:52.406403Z",
     "iopub.status.idle": "2026-09-30T12:17:54.211776Z",
     "shell.execute_reply": "2026-09-30T12:17:54.211356Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": "<Figure size 1000x600 with 4 Axes>"
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "application/papermill.record/",
       "name": "figure_roi_to_decode"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": "#| label: figure_roi_to_decodecell\nfig, ax = plt.subplots(figsize=(10, 6))\nplotting.plot_roi(amygdala_roi, axes=ax, figure=fig, annotate=False, draw_cross=False)\nglue(\"figure_roi_to_decode\", fig, display=False)"
  },
  {
   "cell_type": "markdown",
   "id": "13044b64",
   "metadata": {},
   "source": "```{glue:figure} figure_roi_to_decode\n:name: figure_roi_to_decode-notebook\n:align: center\n\nThe amygdala region of interest mask that will be used for discrete decoding.\n```\n\nOne method which relies on correlations, much like the continuous correlation decoder, is the **ROI association** decoding method ({py:class}`~nimare.decode.discrete.ROIAssociationDecoder`), originally implemented in the Neurosynth Python library.\nIn this method, each study with coordinates in the dataset is convolved with a kernel transformer to produce a modeled activation map.\nThe resulting modeled activation maps are then masked with a region of interest (i.e., the target of the decoding), and the values are averaged within the ROI.\nThese averaged modeled activation values are then correlated with the term weights for all labels in the dataset.\nThis decoding method produces a single correlation coefficient for each of the dataset's labels.\n\n```{important}\nBecause the `ROIAssociationDecoder` generates modeled activation maps for all of the experiments in the `Dataset`, we will only fit this decoder to the first 500 studies.\n```"
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "ace77872",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:17:54.215144Z",
     "iopub.status.busy": "2026-09-30T12:17:54.214781Z",
     "iopub.status.idle": "2026-09-30T12:18:04.516787Z",
     "shell.execute_reply": "2026-09-30T12:18:04.515997Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:nimare.base:Retaining 2941/(3228 features.\n"
     ]
    }
   ],
   "source": "from nimare import decode\n\nassoc_decoder = decode.discrete.ROIAssociationDecoder(\n    amygdala_roi,\n    kernel_transformer=kern,\n    u=0.05,\n    correction=\"fdr_bh\",\n)\nassoc_decoder.fit(neurosynth_dset_first500)\nassoc_df = assoc_decoder.transform()"
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "e8f9c328",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:18:04.524567Z",
     "iopub.status.busy": "2026-09-30T12:18:04.524195Z",
     "iopub.status.idle": "2026-09-30T12:18:04.598056Z",
     "shell.execute_reply": "2026-09-30T12:18:04.597675Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>r</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>feature</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__amygdala</th>\n",
       "      <td>0.627186</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__fear</th>\n",
       "      <td>0.334112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__reinforcement</th>\n",
       "      <td>0.329516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__neutral faces</th>\n",
       "      <td>0.320801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__appraisal</th>\n",
       "      <td>0.317214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__conditioning</th>\n",
       "      <td>0.286165</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__age sex</th>\n",
       "      <td>0.273753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__neutral</th>\n",
       "      <td>0.272666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__amygdala response</th>\n",
       "      <td>0.267777</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__olfactory</th>\n",
       "      <td>0.265687</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                r\n",
       "feature                                          \n",
       "terms_abstract_tfidf__amygdala           0.627186\n",
       "terms_abstract_tfidf__fear               0.334112\n",
       "terms_abstract_tfidf__reinforcement      0.329516\n",
       "terms_abstract_tfidf__neutral faces      0.320801\n",
       "terms_abstract_tfidf__appraisal          0.317214\n",
       "terms_abstract_tfidf__conditioning       0.286165\n",
       "terms_abstract_tfidf__age sex            0.273753\n",
       "terms_abstract_tfidf__neutral            0.272666\n",
       "terms_abstract_tfidf__amygdala response  0.267777\n",
       "terms_abstract_tfidf__olfactory          0.265687"
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "table_assoc"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": "#| label: table_assoccell\nassoc_df = assoc_df.reindex(assoc_df[\"r\"].abs().sort_values(ascending=False).index)\nassoc_df = assoc_df.iloc[:10]\nglue(\"table_assoc\", assoc_df)"
  },
  {
   "cell_type": "markdown",
   "id": "4b7f6881",
   "metadata": {},
   "source": "```{glue:figure} table_assoc\n:name: \"tbl:table_assoc-notebook\"\n:align: center\n\nThe top ten terms, sorted by absolute correlation coefficient, from the ROI association decoding method.\n```"
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "4a1f6753",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:18:04.610089Z",
     "iopub.status.busy": "2026-09-30T12:18:04.609426Z",
     "iopub.status.idle": "2026-09-30T12:18:04.611487Z",
     "shell.execute_reply": "2026-09-30T12:18:04.611009Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": "# Here we delete the recent variables for the sake of reducing memory usage\ndel assoc_decoder, assoc_df"
  },
  {
   "cell_type": "markdown",
   "id": "233834bc",
   "metadata": {},
   "source": [
    "A more theoretically driven approach to ROI decoding is to use **chi-square-based** methods.\n",
    "The two methods which use chi-squared tests are the BrainMap decoding method and an adaptation of Neurosynth's meta-analysis method.\n",
    "\n",
    "In both chi-square-based methods, studies are first selected from a coordinate-based database according to some criterion.\n",
    "For example, if decoding a region of interest, users might select studies reporting at least one coordinate within 5 mm of the ROI.\n",
    "Metadata (such as ontological labels) for this subset of studies are then compared to those of the remaining, unselected portion of the database in a confusion matrix.\n",
    "For each label in the ontology, studies are divided into four groups: selected and label-positive (SS+L+), selected and label-negative (SS+L-), unselected and label-positive (SS-L+), and unselected and label-negative (SS-L-).\n",
    "Each method then compares these groups in order to evaluate both consistency and specificity of the relationship between the selection criteria and each label, which are evaluated in terms of both statistical significance and effect size."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94019331",
   "metadata": {},
   "source": [
    "### BrainMap method\n",
    "\n",
    "The BrainMap discrete decoding method, implemented in {py:class}`~nimare.decode.discrete.BrainMapDecoder`, compares the distributions of studies with each label within the sample against those in a larger database while accounting for the number of foci from each study.\n",
    "Broadly speaking, this method assumes that the selection criterion is associated with one peak per study, which means that it is likely only appropriate for selection criteria based around foci, such as regions of interest.\n",
    "One common analysis, meta-analytic clustering, involves dividing studies within a database into meta-analytic groupings based on the spatial similarity of their modeled activation maps (i.e., study-wise pseudo-statistical maps produced by convolving coordinates with a kernel).\n",
    "The resulting sets of studies are often functionally decoded in order to build a functional profile associated with each meta-analytic grouping.\n",
    "While these groupings are defined as subsets of the database, they are not selected based on the location of an individual peak, and so weighting based on the number of foci would be inappropriate.\n",
    "\n",
    "This decoding method produces four outputs for each label.\n",
    "First, the distribution of studies in the sample with the label are compared to the distributions of other labels within the sample.\n",
    "This consistency analysis produces both a measure of statistical significance (i.e., a p-value) and a measure of effect size (i.e., the likelihood of being selected given the presence of the label).\n",
    "Next, the studies in the sample are compared to the studies in the rest of the database.\n",
    "This specificity analysis produces a p-value and an effect size measure of the posterior probability of having the label given selection into the sample.\n",
    "A detailed algorithm description is presented in [](appendices/brainmap_decoding)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "f6ed26c2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:18:04.616831Z",
     "iopub.status.busy": "2026-09-30T12:18:04.616402Z",
     "iopub.status.idle": "2026-09-30T12:59:24.597451Z",
     "shell.execute_reply": "2026-09-30T12:59:24.596500Z"
    }
   },
   "outputs": [],
   "source": "brainmap_decoder = decode.discrete.BrainMapDecoder(\n    frequency_threshold=0.001,\n    u=0.05,\n    correction=\"fdr_bh\",\n)\nbrainmap_decoder.fit(neurosynth_dset)\nbrainmap_df = brainmap_decoder.transform(amygdala_ids)"
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "1cb04838",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:59:24.607254Z",
     "iopub.status.busy": "2026-09-30T12:59:24.606839Z",
     "iopub.status.idle": "2026-09-30T12:59:24.618668Z",
     "shell.execute_reply": "2026-09-30T12:59:24.618911Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pForward</th>\n",
       "      <th>zForward</th>\n",
       "      <th>likelihoodForward</th>\n",
       "      <th>pReverse</th>\n",
       "      <th>zReverse</th>\n",
       "      <th>probReverse</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Term</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__magnetic</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.627342</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.011441</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__magnetic resonance</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.569942</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.010827</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__resonance</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.560855</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.010815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__amygdala</th>\n",
       "      <td>6.176744e-07</td>\n",
       "      <td>4.985607</td>\n",
       "      <td>6.407830</td>\n",
       "      <td>2.152100e-18</td>\n",
       "      <td>8.749022</td>\n",
       "      <td>0.010609</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__functional magnetic</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.664782</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.010540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__using</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.205627</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.007210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__response</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.902148</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.007039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__stimuli</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.087218</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.006286</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__human</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.128483</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.005356</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__neutral</th>\n",
       "      <td>5.556739e-03</td>\n",
       "      <td>2.772852</td>\n",
       "      <td>5.502956</td>\n",
       "      <td>2.753866e-06</td>\n",
       "      <td>4.688372</td>\n",
       "      <td>0.005320</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                               pForward  zForward  \\\n",
       "Term                                                                \n",
       "terms_abstract_tfidf__magnetic             1.000000e+00  0.000000   \n",
       "terms_abstract_tfidf__magnetic resonance   1.000000e+00  0.000000   \n",
       "terms_abstract_tfidf__resonance            1.000000e+00  0.000000   \n",
       "terms_abstract_tfidf__amygdala             6.176744e-07  4.985607   \n",
       "terms_abstract_tfidf__functional magnetic  1.000000e+00  0.000000   \n",
       "terms_abstract_tfidf__using                1.000000e+00  0.000000   \n",
       "terms_abstract_tfidf__response             1.000000e+00  0.000000   \n",
       "terms_abstract_tfidf__stimuli              1.000000e+00  0.000000   \n",
       "terms_abstract_tfidf__human                1.000000e+00  0.000000   \n",
       "terms_abstract_tfidf__neutral              5.556739e-03  2.772852   \n",
       "\n",
       "                                           likelihoodForward      pReverse  \\\n",
       "Term                                                                         \n",
       "terms_abstract_tfidf__magnetic                      1.627342  1.000000e+00   \n",
       "terms_abstract_tfidf__magnetic resonance            1.569942  1.000000e+00   \n",
       "terms_abstract_tfidf__resonance                     1.560855  1.000000e+00   \n",
       "terms_abstract_tfidf__amygdala                      6.407830  2.152100e-18   \n",
       "terms_abstract_tfidf__functional magnetic           1.664782  1.000000e+00   \n",
       "terms_abstract_tfidf__using                         1.205627  1.000000e+00   \n",
       "terms_abstract_tfidf__response                      1.902148  1.000000e+00   \n",
       "terms_abstract_tfidf__stimuli                       2.087218  1.000000e+00   \n",
       "terms_abstract_tfidf__human                         2.128483  1.000000e+00   \n",
       "terms_abstract_tfidf__neutral                       5.502956  2.753866e-06   \n",
       "\n",
       "                                           zReverse  probReverse  \n",
       "Term                                                              \n",
       "terms_abstract_tfidf__magnetic             0.000000     0.011441  \n",
       "terms_abstract_tfidf__magnetic resonance   0.000000     0.010827  \n",
       "terms_abstract_tfidf__resonance            0.000000     0.010815  \n",
       "terms_abstract_tfidf__amygdala             8.749022     0.010609  \n",
       "terms_abstract_tfidf__functional magnetic  0.000000     0.010540  \n",
       "terms_abstract_tfidf__using                0.000000     0.007210  \n",
       "terms_abstract_tfidf__response             0.000000     0.007039  \n",
       "terms_abstract_tfidf__stimuli              0.000000     0.006286  \n",
       "terms_abstract_tfidf__human                0.000000     0.005356  \n",
       "terms_abstract_tfidf__neutral              4.688372     0.005320  "
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "table_brainmap"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": "#| label: table_brainmapcell\nbrainmap_df = brainmap_df.reindex(\n    brainmap_df[\"probReverse\"].abs().sort_values(ascending=False).index\n)\nbrainmap_df = brainmap_df.iloc[:10]\nglue(\"table_brainmap\", brainmap_df)"
  },
  {
   "cell_type": "markdown",
   "id": "eeee0824",
   "metadata": {},
   "source": "```{glue:figure} table_brainmap\n:name: \"tbl:table_brainmap-notebook\"\n:align: center\n\nThe top ten terms, sorted by reverse-inference posterior probability, from the BrainMap chi-squared decoding method.\n```"
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "44af0c31",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:59:25.804136Z",
     "iopub.status.busy": "2026-09-30T12:59:25.803646Z",
     "iopub.status.idle": "2026-09-30T12:59:25.807253Z",
     "shell.execute_reply": "2026-09-30T12:59:25.806829Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": "# Here we delete the recent variables for the sake of reducing memory usage\ndel brainmap_decoder, brainmap_df"
  },
  {
   "cell_type": "markdown",
   "id": "4444d385",
   "metadata": {},
   "source": [
    "### Neurosynth method\n",
    "\n",
    "The implementation of the MKDA Chi-squared meta-analysis method used by Neurosynth is quite similar to BrainMap's method for decoding, if applied to annotations instead of modeled activation values.\n",
    "This method, implemented in {py:class}`~nimare.decode.discrete.NeurosynthDecoder`, compares the distributions of studies with each label within the sample against those in a larger database, but, unlike the BrainMap method, does not take foci into account.\n",
    "For this reason, the Neurosynth method would likely be more appropriate for selection criteria not based on regions of interest (e.g., for characterizing meta-analytic groupings from a meta-analytic clustering analysis).\n",
    "However, the Neurosynth method requires user-provided information that BrainMap does not.\n",
    "Namely, in order to estimate probabilities for the consistency and specificity analyses with Bayes' Theorem, the Neurosynth method requires a prior probability of a given label.\n",
    "Typically, a value of 0.5 is used (i.e., the estimated probability that an individual is undergoing a given mental process described by a label, barring any evidence from neuroimaging data, is predicted to be 50%).\n",
    "This is, admittedly, a poor prediction, which means that probabilities estimated based on this prior are not likely to be accurate, though they may still serve as useful estimates of effect size for the analysis.\n",
    "\n",
    "Like the BrainMap method, this method produces four outputs for each label.\n",
    "For the consistency analysis, this method produces both a p-value and a conditional probability of selection given the presence of the label and the prior probability of having the label.\n",
    "For the specificity analysis, the Neurosynth method produces both a p-value and a posterior probability of presence of the label given selection and the prior probability of having the label.\n",
    "A detailed algorithm description is presented in [](appendices/neurosynth_decoding)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "610881a8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T12:59:25.812272Z",
     "iopub.status.busy": "2026-09-30T12:59:25.811854Z",
     "iopub.status.idle": "2026-09-30T13:10:03.910385Z",
     "shell.execute_reply": "2026-09-30T13:10:03.911063Z"
    }
   },
   "outputs": [],
   "source": "neurosynth_decoder = decode.discrete.NeurosynthDecoder(\n    frequency_threshold=0.001,\n    u=0.05,\n    correction=\"fdr_bh\",\n)\nneurosynth_decoder.fit(neurosynth_dset)\nneurosynth_df = neurosynth_decoder.transform(amygdala_ids)"
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "4fcb2793",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T13:10:03.921948Z",
     "iopub.status.busy": "2026-09-30T13:10:03.921361Z",
     "iopub.status.idle": "2026-09-30T13:10:03.992970Z",
     "shell.execute_reply": "2026-09-30T13:10:03.934904Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pForward</th>\n",
       "      <th>zForward</th>\n",
       "      <th>probForward</th>\n",
       "      <th>pReverse</th>\n",
       "      <th>zReverse</th>\n",
       "      <th>probReverse</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Term</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__neutral faces</th>\n",
       "      <td>6.163179e-12</td>\n",
       "      <td>6.875826</td>\n",
       "      <td>0.024702</td>\n",
       "      <td>4.685748e-31</td>\n",
       "      <td>11.588999</td>\n",
       "      <td>0.971583</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__conditioning</th>\n",
       "      <td>1.026669e-16</td>\n",
       "      <td>8.301660</td>\n",
       "      <td>0.022543</td>\n",
       "      <td>1.221816e-32</td>\n",
       "      <td>11.897339</td>\n",
       "      <td>0.970346</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__olfactory</th>\n",
       "      <td>1.482800e-02</td>\n",
       "      <td>2.436553</td>\n",
       "      <td>0.021075</td>\n",
       "      <td>2.058612e-12</td>\n",
       "      <td>7.030455</td>\n",
       "      <td>0.961833</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__conditioned</th>\n",
       "      <td>7.813282e-05</td>\n",
       "      <td>3.950056</td>\n",
       "      <td>0.017439</td>\n",
       "      <td>2.697558e-13</td>\n",
       "      <td>7.308692</td>\n",
       "      <td>0.955737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__reinforcement</th>\n",
       "      <td>7.813282e-05</td>\n",
       "      <td>3.950056</td>\n",
       "      <td>0.016397</td>\n",
       "      <td>2.058612e-12</td>\n",
       "      <td>7.030455</td>\n",
       "      <td>0.952900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__unpleasant</th>\n",
       "      <td>7.813282e-05</td>\n",
       "      <td>3.950056</td>\n",
       "      <td>0.015924</td>\n",
       "      <td>4.616361e-12</td>\n",
       "      <td>6.916899</td>\n",
       "      <td>0.951487</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__amygdala</th>\n",
       "      <td>1.953150e-123</td>\n",
       "      <td>23.628732</td>\n",
       "      <td>0.006013</td>\n",
       "      <td>2.152100e-18</td>\n",
       "      <td>8.749022</td>\n",
       "      <td>0.947992</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__amygdala response</th>\n",
       "      <td>1.482800e-02</td>\n",
       "      <td>2.436553</td>\n",
       "      <td>0.014081</td>\n",
       "      <td>1.526484e-07</td>\n",
       "      <td>5.249336</td>\n",
       "      <td>0.942719</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__differentiated</th>\n",
       "      <td>1.482800e-02</td>\n",
       "      <td>2.436553</td>\n",
       "      <td>0.014081</td>\n",
       "      <td>1.526484e-07</td>\n",
       "      <td>5.249336</td>\n",
       "      <td>0.942719</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>terms_abstract_tfidf__pleasant</th>\n",
       "      <td>1.482800e-02</td>\n",
       "      <td>2.436553</td>\n",
       "      <td>0.013307</td>\n",
       "      <td>5.206710e-07</td>\n",
       "      <td>5.018535</td>\n",
       "      <td>0.939358</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              pForward   zForward  \\\n",
       "Term                                                                \n",
       "terms_abstract_tfidf__neutral faces       6.163179e-12   6.875826   \n",
       "terms_abstract_tfidf__conditioning        1.026669e-16   8.301660   \n",
       "terms_abstract_tfidf__olfactory           1.482800e-02   2.436553   \n",
       "terms_abstract_tfidf__conditioned         7.813282e-05   3.950056   \n",
       "terms_abstract_tfidf__reinforcement       7.813282e-05   3.950056   \n",
       "terms_abstract_tfidf__unpleasant          7.813282e-05   3.950056   \n",
       "terms_abstract_tfidf__amygdala           1.953150e-123  23.628732   \n",
       "terms_abstract_tfidf__amygdala response   1.482800e-02   2.436553   \n",
       "terms_abstract_tfidf__differentiated      1.482800e-02   2.436553   \n",
       "terms_abstract_tfidf__pleasant            1.482800e-02   2.436553   \n",
       "\n",
       "                                         probForward      pReverse   zReverse  \\\n",
       "Term                                                                            \n",
       "terms_abstract_tfidf__neutral faces         0.024702  4.685748e-31  11.588999   \n",
       "terms_abstract_tfidf__conditioning          0.022543  1.221816e-32  11.897339   \n",
       "terms_abstract_tfidf__olfactory             0.021075  2.058612e-12   7.030455   \n",
       "terms_abstract_tfidf__conditioned           0.017439  2.697558e-13   7.308692   \n",
       "terms_abstract_tfidf__reinforcement         0.016397  2.058612e-12   7.030455   \n",
       "terms_abstract_tfidf__unpleasant            0.015924  4.616361e-12   6.916899   \n",
       "terms_abstract_tfidf__amygdala              0.006013  2.152100e-18   8.749022   \n",
       "terms_abstract_tfidf__amygdala response     0.014081  1.526484e-07   5.249336   \n",
       "terms_abstract_tfidf__differentiated        0.014081  1.526484e-07   5.249336   \n",
       "terms_abstract_tfidf__pleasant              0.013307  5.206710e-07   5.018535   \n",
       "\n",
       "                                         probReverse  \n",
       "Term                                                  \n",
       "terms_abstract_tfidf__neutral faces         0.971583  \n",
       "terms_abstract_tfidf__conditioning          0.970346  \n",
       "terms_abstract_tfidf__olfactory             0.961833  \n",
       "terms_abstract_tfidf__conditioned           0.955737  \n",
       "terms_abstract_tfidf__reinforcement         0.952900  \n",
       "terms_abstract_tfidf__unpleasant            0.951487  \n",
       "terms_abstract_tfidf__amygdala              0.947992  \n",
       "terms_abstract_tfidf__amygdala response     0.942719  \n",
       "terms_abstract_tfidf__differentiated        0.942719  \n",
       "terms_abstract_tfidf__pleasant              0.939358  "
      ]
     },
     "metadata": {
      "scrapbook": {
       "mime_prefix": "",
       "name": "table_neurosynth"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": "#| label: table_neurosynthcell\nneurosynth_df = neurosynth_df.reindex(\n    neurosynth_df[\"probReverse\"].abs().sort_values(ascending=False).index\n)\nneurosynth_df = neurosynth_df.iloc[:10]\nglue(\"table_neurosynth\", neurosynth_df)"
  },
  {
   "cell_type": "markdown",
   "id": "6c791870",
   "metadata": {},
   "source": "```{glue:figure} table_neurosynth\n:name: \"tbl:table_neurosynth-notebook\"\n:align: center\n\nThe top ten terms, sorted by reverse-inference posterior probability, from the Neurosynth chi-squared decoding method.\n```"
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "353e5119",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-30T13:10:05.330538Z",
     "iopub.status.busy": "2026-09-30T13:10:05.329256Z",
     "iopub.status.idle": "2026-09-30T13:10:05.331695Z",
     "shell.execute_reply": "2026-09-30T13:10:05.331165Z"
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": "# Here we delete the recent variables for the sake of reducing memory usage\ndel neurosynth_decoder, neurosynth_df"
  },
  {
   "cell_type": "markdown",
   "id": "33b0dc20",
   "metadata": {},
   "source": [
    "In both methods, the database acts as an estimate of the underlying distribution of labels in the real world, such that the probability of having a peak in an ROI given the presence of the label might be interpreted as the probability of a brain activating a specific brain region given that the individual is experiencing a given mental state.\n",
    "This is a very poor interpretation, given that any database of neuroimaging results will be skewed more toward the interests of the field than the distribution of mental states or processes experienced by humans, which is why decoding must be interpreted with extreme caution.\n",
    "It is important not to place too much emphasis on the results of functional decoding analyses, although they are very useful in that they can provide a quantitative estimate behind the kinds of interpretations generally included in discussion sections that are normally only backed by informal literature searches or prior knowledge.\n",
    "\n",
    "The meta-analytic functional decoding methods in NiMARE provide a very rudimentary approach for open-ended decoding (i.e., decoding across a very large range of mental states) that can be used with resources like NeuroVault.\n",
    "However, standard classification methods have also been applied to datasets from NeuroVault (e.g., {cite:t}`Varoquaux2018-lo`), although these methods do not fall under NiMARE's scope."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
