Repository files navigation

Extracting interpretable signatures of whole-brain dynamics through systematic comparison

DOI

Five statistical representations depicted schematically

This repository contains code to accompany our preprint, "Extracting interpretable signatures of whole-brain dynamics through systematic comparison". Users may follow this repo to reproduce all analyses and visualizations contained in the preprint -- broadly, this includes extracting time-series features from functional magnetic resonance imaging (fMRI) data to serve as the basis for a series of linear support vector machine (SVM) classifiers for case--control comparisons.

All code is a mixture of R and python, with shell scripts used to execute operations. Please note that the repository is structured such that some steps are designed to be run on a high-performance computing (HPC) cluster for parallelization with a PBS job scheduler.

Data availability

All resting-state fMRI data used in this study is freely accessible to the public via open sharing platforms.

  • UCLA Consortium for Neuropsychiatric Phenomics (CNP) LA5c study: raw imaging volumes were accessed from OpenfMRI, accession number ds000030.
  • Autism Brain Imaging Data Exchange (ABIDE) I/II study: preprocessed fMRI time series (with the Harvard-Oxford parcellation atlas) were accessed from Zenodo at Traut et al. (2020).

❗ All intermediate data files needed to replicate analysis and visuals in this repo (including those >100MB) are provided in this Zenodo repository.

Usage

Installation

First, clone this repository to your local machine:

```bash
git clone https://github.com/DynamicsAndNeuralSystems/fMRI_FeaturesDisorders.git
```

Parts of this project are in R (v4.3.0), and parts are in Python (v3.9.0). We recommend that users create a conda environment for this project, which can be accomplished as follows:

```bash
conda create -n fMRI_FeaturesDisorders python=3.9.0
conda activate fMRI_FeaturesDisorders
```

From this conda environment, install the required Python packages:

```bash
pip install -r python_requirements.txt
```

R packages required for feature extraction and classification analysis can be installed from R_requirements.txt as follows:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Data visualization

Additional R packages will be needed to reproduce visualizations for the manuscript in generate_all_figures.ipynb, which can be installed with the following:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Preparing data

After downloading the prepared data files from Zenodo as listed above, create a data folder in this repository and place the downloaded files within that folder. This will get all files into their needed locations for feature extraction, classification, and visualization described in following.

Extracting time-series features

Schematic depiction of extracting time-series features from resting-state fMRI data

Please refer to the extract_time_series_features.ipynb Jupyter notebook for a walkthrough of how to extract intra-regional and inter-regional time series features from each participant's blood oxygen level dependent (BOLD) time series. You can interactively click through each code chunk with a Jupyter notebook reader like VSCode (with the Jupyter extension installed) or the Jupyter Notebook app from Anaconda.

Alternatively, to run the notebook from the command line, you can use the following code:

jupyter nbconvert --to notebook --execute extract_time_series_features.ipynb --allow-errors

The --allow-errors flag allows the whole file to execute even if an error occurs, which can be helpful for debugging (and is optional if you prefer to omit the flag). This will yield the file extract_time_series_features.nbconvert.ipynb that includes all code output from the notebook.

Performing case--control classification

Once all intra- and inter-regional time-series features have been computed across all participants, we can fit linear support vector machine (SVM) classifiers for each of the five statistical representations evaluated in the manuscript:

Five statistical representations depicted schematically

  1. Aregion: represents each fMRI time series using a set of features capturing 25 dynamical properties of an individual brain region.
  2. Afeature: represents each fMRI time series using a set of features that captures a single dynamical property from all brain regions (82 for SCZ, BP, and ADHD, and 48 for ASD).
  3. Auni_combo: represents each fMRI time series using a set of features combining the 25 time-series properties of each individual brain region.
  4. AFC: represents each fMRI time series using a set of features that capture all pairs of inter-regional coupling strengths computed using a single statistic of pairwise interactions (SPI).
  5. AFC_combo: represents each fMRI dataset as a set of features that capture all pairs of inter-regional coupling from a given SPI (as AFC) as well as 25 time-series properties of all individual brain regions (as Auni_combo).

These representations are all evaluated using fit_classifiers.ipynb, which can also be run interactively in a Jupyter notebook viewer or run from the command line using:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Data visualization

All figures included in the manuscript can be recreated using the Jupyter notebook generate_all_figures.ipynb. You can run this from the command line and view outputs with the following:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Contact

If you have any questions or need further assistance, please contact annie.bryant@sydney.edu.au.

About

Code and data to reproduce Bryant et al. 2024 preprint "Extracting interpretable signatures of whole-brain dynamics through systematic comparison"

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Extracting interpretable signatures of whole-brain dynamics through systematic comparison

DOI

Five statistical representations depicted schematically

This repository contains code to accompany our preprint, "Extracting interpretable signatures of whole-brain dynamics through systematic comparison". Users may follow this repo to reproduce all analyses and visualizations contained in the preprint -- broadly, this includes extracting time-series features from functional magnetic resonance imaging (fMRI) data to serve as the basis for a series of linear support vector machine (SVM) classifiers for case--control comparisons.

All code is a mixture of R and python, with shell scripts used to execute operations. Please note that the repository is structured such that some steps are designed to be run on a high-performance computing (HPC) cluster for parallelization with a PBS job scheduler.

Data availability

All resting-state fMRI data used in this study is freely accessible to the public via open sharing platforms.

  • UCLA Consortium for Neuropsychiatric Phenomics (CNP) LA5c study: raw imaging volumes were accessed from OpenfMRI, accession number ds000030.
  • Autism Brain Imaging Data Exchange (ABIDE) I/II study: preprocessed fMRI time series (with the Harvard-Oxford parcellation atlas) were accessed from Zenodo at Traut et al. (2020).

❗ All intermediate data files needed to replicate analysis and visuals in this repo (including those >100MB) are provided in this Zenodo repository.

Usage

Installation

First, clone this repository to your local machine:

```bash
git clone https://github.com/DynamicsAndNeuralSystems/fMRI_FeaturesDisorders.git
```

Parts of this project are in R (v4.3.0), and parts are in Python (v3.9.0). We recommend that users create a conda environment for this project, which can be accomplished as follows:

```bash
conda create -n fMRI_FeaturesDisorders python=3.9.0
conda activate fMRI_FeaturesDisorders
```

From this conda environment, install the required Python packages:

```bash
pip install -r python_requirements.txt
```

R packages required for feature extraction and classification analysis can be installed from R_requirements.txt as follows:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Data visualization

Additional R packages will be needed to reproduce visualizations for the manuscript in generate_all_figures.ipynb, which can be installed with the following:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Preparing data

After downloading the prepared data files from Zenodo as listed above, create a data folder in this repository and place the downloaded files within that folder. This will get all files into their needed locations for feature extraction, classification, and visualization described in following.

Extracting time-series features

Schematic depiction of extracting time-series features from resting-state fMRI data

Please refer to the extract_time_series_features.ipynb Jupyter notebook for a walkthrough of how to extract intra-regional and inter-regional time series features from each participant's blood oxygen level dependent (BOLD) time series. You can interactively click through each code chunk with a Jupyter notebook reader like VSCode (with the Jupyter extension installed) or the Jupyter Notebook app from Anaconda.

Alternatively, to run the notebook from the command line, you can use the following code:

jupyter nbconvert --to notebook --execute extract_time_series_features.ipynb --allow-errors

The --allow-errors flag allows the whole file to execute even if an error occurs, which can be helpful for debugging (and is optional if you prefer to omit the flag). This will yield the file extract_time_series_features.nbconvert.ipynb that includes all code output from the notebook.

Performing case--control classification

Once all intra- and inter-regional time-series features have been computed across all participants, we can fit linear support vector machine (SVM) classifiers for each of the five statistical representations evaluated in the manuscript:

Five statistical representations depicted schematically

  1. Aregion: represents each fMRI time series using a set of features capturing 25 dynamical properties of an individual brain region.
  2. Afeature: represents each fMRI time series using a set of features that captures a single dynamical property from all brain regions (82 for SCZ, BP, and ADHD, and 48 for ASD).
  3. Auni_combo: represents each fMRI time series using a set of features combining the 25 time-series properties of each individual brain region.
  4. AFC: represents each fMRI time series using a set of features that capture all pairs of inter-regional coupling strengths computed using a single statistic of pairwise interactions (SPI).
  5. AFC_combo: represents each fMRI dataset as a set of features that capture all pairs of inter-regional coupling from a given SPI (as AFC) as well as 25 time-series properties of all individual brain regions (as Auni_combo).

These representations are all evaluated using fit_classifiers.ipynb, which can also be run interactively in a Jupyter notebook viewer or run from the command line using:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Data visualization

All figures included in the manuscript can be recreated using the Jupyter notebook generate_all_figures.ipynb. You can run this from the command line and view outputs with the following:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Contact

If you have any questions or need further assistance, please contact annie.bryant@sydney.edu.au.

About

Code and data to reproduce Bryant et al. 2024 preprint "Extracting interpretable signatures of whole-brain dynamics through systematic comparison"

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Extracting interpretable signatures of whole-brain dynamics through systematic comparison

DOI

Five statistical representations depicted schematically

This repository contains code to accompany our preprint, "Extracting interpretable signatures of whole-brain dynamics through systematic comparison". Users may follow this repo to reproduce all analyses and visualizations contained in the preprint -- broadly, this includes extracting time-series features from functional magnetic resonance imaging (fMRI) data to serve as the basis for a series of linear support vector machine (SVM) classifiers for case--control comparisons.

All code is a mixture of R and python, with shell scripts used to execute operations. Please note that the repository is structured such that some steps are designed to be run on a high-performance computing (HPC) cluster for parallelization with a PBS job scheduler.

Data availability

All resting-state fMRI data used in this study is freely accessible to the public via open sharing platforms.

  • UCLA Consortium for Neuropsychiatric Phenomics (CNP) LA5c study: raw imaging volumes were accessed from OpenfMRI, accession number ds000030.
  • Autism Brain Imaging Data Exchange (ABIDE) I/II study: preprocessed fMRI time series (with the Harvard-Oxford parcellation atlas) were accessed from Zenodo at Traut et al. (2020).

❗ All intermediate data files needed to replicate analysis and visuals in this repo (including those >100MB) are provided in this Zenodo repository.

Usage

Installation

First, clone this repository to your local machine:

```bash
git clone https://github.com/DynamicsAndNeuralSystems/fMRI_FeaturesDisorders.git
```

Parts of this project are in R (v4.3.0), and parts are in Python (v3.9.0). We recommend that users create a conda environment for this project, which can be accomplished as follows:

```bash
conda create -n fMRI_FeaturesDisorders python=3.9.0
conda activate fMRI_FeaturesDisorders
```

From this conda environment, install the required Python packages:

```bash
pip install -r python_requirements.txt
```

R packages required for feature extraction and classification analysis can be installed from R_requirements.txt as follows:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Data visualization

Additional R packages will be needed to reproduce visualizations for the manuscript in generate_all_figures.ipynb, which can be installed with the following:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Preparing data

After downloading the prepared data files from Zenodo as listed above, create a data folder in this repository and place the downloaded files within that folder. This will get all files into their needed locations for feature extraction, classification, and visualization described in following.

Extracting time-series features

Schematic depiction of extracting time-series features from resting-state fMRI data

Please refer to the extract_time_series_features.ipynb Jupyter notebook for a walkthrough of how to extract intra-regional and inter-regional time series features from each participant's blood oxygen level dependent (BOLD) time series. You can interactively click through each code chunk with a Jupyter notebook reader like VSCode (with the Jupyter extension installed) or the Jupyter Notebook app from Anaconda.

Alternatively, to run the notebook from the command line, you can use the following code:

jupyter nbconvert --to notebook --execute extract_time_series_features.ipynb --allow-errors

The --allow-errors flag allows the whole file to execute even if an error occurs, which can be helpful for debugging (and is optional if you prefer to omit the flag). This will yield the file extract_time_series_features.nbconvert.ipynb that includes all code output from the notebook.

Performing case--control classification

Once all intra- and inter-regional time-series features have been computed across all participants, we can fit linear support vector machine (SVM) classifiers for each of the five statistical representations evaluated in the manuscript:

Five statistical representations depicted schematically

  1. Aregion: represents each fMRI time series using a set of features capturing 25 dynamical properties of an individual brain region.
  2. Afeature: represents each fMRI time series using a set of features that captures a single dynamical property from all brain regions (82 for SCZ, BP, and ADHD, and 48 for ASD).
  3. Auni_combo: represents each fMRI time series using a set of features combining the 25 time-series properties of each individual brain region.
  4. AFC: represents each fMRI time series using a set of features that capture all pairs of inter-regional coupling strengths computed using a single statistic of pairwise interactions (SPI).
  5. AFC_combo: represents each fMRI dataset as a set of features that capture all pairs of inter-regional coupling from a given SPI (as AFC) as well as 25 time-series properties of all individual brain regions (as Auni_combo).

These representations are all evaluated using fit_classifiers.ipynb, which can also be run interactively in a Jupyter notebook viewer or run from the command line using:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Data visualization

All figures included in the manuscript can be recreated using the Jupyter notebook generate_all_figures.ipynb. You can run this from the command line and view outputs with the following:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Contact

If you have any questions or need further assistance, please contact annie.bryant@sydney.edu.au.

About

Code and data to reproduce Bryant et al. 2024 preprint "Extracting interpretable signatures of whole-brain dynamics through systematic comparison"

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Extracting interpretable signatures of whole-brain dynamics through systematic comparison

DOI

Five statistical representations depicted schematically

This repository contains code to accompany our preprint, "Extracting interpretable signatures of whole-brain dynamics through systematic comparison". Users may follow this repo to reproduce all analyses and visualizations contained in the preprint -- broadly, this includes extracting time-series features from functional magnetic resonance imaging (fMRI) data to serve as the basis for a series of linear support vector machine (SVM) classifiers for case--control comparisons.

All code is a mixture of R and python, with shell scripts used to execute operations. Please note that the repository is structured such that some steps are designed to be run on a high-performance computing (HPC) cluster for parallelization with a PBS job scheduler.

Data availability

All resting-state fMRI data used in this study is freely accessible to the public via open sharing platforms.

  • UCLA Consortium for Neuropsychiatric Phenomics (CNP) LA5c study: raw imaging volumes were accessed from OpenfMRI, accession number ds000030.
  • Autism Brain Imaging Data Exchange (ABIDE) I/II study: preprocessed fMRI time series (with the Harvard-Oxford parcellation atlas) were accessed from Zenodo at Traut et al. (2020).

❗ All intermediate data files needed to replicate analysis and visuals in this repo (including those >100MB) are provided in this Zenodo repository.

Usage

Installation

First, clone this repository to your local machine:

```bash
git clone https://github.com/DynamicsAndNeuralSystems/fMRI_FeaturesDisorders.git
```

Parts of this project are in R (v4.3.0), and parts are in Python (v3.9.0). We recommend that users create a conda environment for this project, which can be accomplished as follows:

```bash
conda create -n fMRI_FeaturesDisorders python=3.9.0
conda activate fMRI_FeaturesDisorders
```

From this conda environment, install the required Python packages:

```bash
pip install -r python_requirements.txt
```

R packages required for feature extraction and classification analysis can be installed from R_requirements.txt as follows:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Data visualization

Additional R packages will be needed to reproduce visualizations for the manuscript in generate_all_figures.ipynb, which can be installed with the following:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Preparing data

After downloading the prepared data files from Zenodo as listed above, create a data folder in this repository and place the downloaded files within that folder. This will get all files into their needed locations for feature extraction, classification, and visualization described in following.

Extracting time-series features

Schematic depiction of extracting time-series features from resting-state fMRI data

Please refer to the extract_time_series_features.ipynb Jupyter notebook for a walkthrough of how to extract intra-regional and inter-regional time series features from each participant's blood oxygen level dependent (BOLD) time series. You can interactively click through each code chunk with a Jupyter notebook reader like VSCode (with the Jupyter extension installed) or the Jupyter Notebook app from Anaconda.

Alternatively, to run the notebook from the command line, you can use the following code:

jupyter nbconvert --to notebook --execute extract_time_series_features.ipynb --allow-errors

The --allow-errors flag allows the whole file to execute even if an error occurs, which can be helpful for debugging (and is optional if you prefer to omit the flag). This will yield the file extract_time_series_features.nbconvert.ipynb that includes all code output from the notebook.

Performing case--control classification

Once all intra- and inter-regional time-series features have been computed across all participants, we can fit linear support vector machine (SVM) classifiers for each of the five statistical representations evaluated in the manuscript:

Five statistical representations depicted schematically

  1. Aregion: represents each fMRI time series using a set of features capturing 25 dynamical properties of an individual brain region.
  2. Afeature: represents each fMRI time series using a set of features that captures a single dynamical property from all brain regions (82 for SCZ, BP, and ADHD, and 48 for ASD).
  3. Auni_combo: represents each fMRI time series using a set of features combining the 25 time-series properties of each individual brain region.
  4. AFC: represents each fMRI time series using a set of features that capture all pairs of inter-regional coupling strengths computed using a single statistic of pairwise interactions (SPI).
  5. AFC_combo: represents each fMRI dataset as a set of features that capture all pairs of inter-regional coupling from a given SPI (as AFC) as well as 25 time-series properties of all individual brain regions (as Auni_combo).

These representations are all evaluated using fit_classifiers.ipynb, which can also be run interactively in a Jupyter notebook viewer or run from the command line using:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Data visualization

All figures included in the manuscript can be recreated using the Jupyter notebook generate_all_figures.ipynb. You can run this from the command line and view outputs with the following:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Contact

If you have any questions or need further assistance, please contact annie.bryant@sydney.edu.au.

About

Code and data to reproduce Bryant et al. 2024 preprint "Extracting interpretable signatures of whole-brain dynamics through systematic comparison"

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Extracting interpretable signatures of whole-brain dynamics through systematic comparison

DOI

Five statistical representations depicted schematically

This repository contains code to accompany our preprint, "Extracting interpretable signatures of whole-brain dynamics through systematic comparison". Users may follow this repo to reproduce all analyses and visualizations contained in the preprint -- broadly, this includes extracting time-series features from functional magnetic resonance imaging (fMRI) data to serve as the basis for a series of linear support vector machine (SVM) classifiers for case--control comparisons.

All code is a mixture of R and python, with shell scripts used to execute operations. Please note that the repository is structured such that some steps are designed to be run on a high-performance computing (HPC) cluster for parallelization with a PBS job scheduler.

Data availability

All resting-state fMRI data used in this study is freely accessible to the public via open sharing platforms.

  • UCLA Consortium for Neuropsychiatric Phenomics (CNP) LA5c study: raw imaging volumes were accessed from OpenfMRI, accession number ds000030.
  • Autism Brain Imaging Data Exchange (ABIDE) I/II study: preprocessed fMRI time series (with the Harvard-Oxford parcellation atlas) were accessed from Zenodo at Traut et al. (2020).

❗ All intermediate data files needed to replicate analysis and visuals in this repo (including those >100MB) are provided in this Zenodo repository.

Usage

Installation

First, clone this repository to your local machine:

```bash
git clone https://github.com/DynamicsAndNeuralSystems/fMRI_FeaturesDisorders.git
```

Parts of this project are in R (v4.3.0), and parts are in Python (v3.9.0). We recommend that users create a conda environment for this project, which can be accomplished as follows:

```bash
conda create -n fMRI_FeaturesDisorders python=3.9.0
conda activate fMRI_FeaturesDisorders
```

From this conda environment, install the required Python packages:

```bash
pip install -r python_requirements.txt
```

R packages required for feature extraction and classification analysis can be installed from R_requirements.txt as follows:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Data visualization

Additional R packages will be needed to reproduce visualizations for the manuscript in generate_all_figures.ipynb, which can be installed with the following:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Preparing data

After downloading the prepared data files from Zenodo as listed above, create a data folder in this repository and place the downloaded files within that folder. This will get all files into their needed locations for feature extraction, classification, and visualization described in following.

Extracting time-series features

Schematic depiction of extracting time-series features from resting-state fMRI data

Please refer to the extract_time_series_features.ipynb Jupyter notebook for a walkthrough of how to extract intra-regional and inter-regional time series features from each participant's blood oxygen level dependent (BOLD) time series. You can interactively click through each code chunk with a Jupyter notebook reader like VSCode (with the Jupyter extension installed) or the Jupyter Notebook app from Anaconda.

Alternatively, to run the notebook from the command line, you can use the following code:

jupyter nbconvert --to notebook --execute extract_time_series_features.ipynb --allow-errors

The --allow-errors flag allows the whole file to execute even if an error occurs, which can be helpful for debugging (and is optional if you prefer to omit the flag). This will yield the file extract_time_series_features.nbconvert.ipynb that includes all code output from the notebook.

Performing case--control classification

Once all intra- and inter-regional time-series features have been computed across all participants, we can fit linear support vector machine (SVM) classifiers for each of the five statistical representations evaluated in the manuscript:

Five statistical representations depicted schematically

  1. Aregion: represents each fMRI time series using a set of features capturing 25 dynamical properties of an individual brain region.
  2. Afeature: represents each fMRI time series using a set of features that captures a single dynamical property from all brain regions (82 for SCZ, BP, and ADHD, and 48 for ASD).
  3. Auni_combo: represents each fMRI time series using a set of features combining the 25 time-series properties of each individual brain region.
  4. AFC: represents each fMRI time series using a set of features that capture all pairs of inter-regional coupling strengths computed using a single statistic of pairwise interactions (SPI).
  5. AFC_combo: represents each fMRI dataset as a set of features that capture all pairs of inter-regional coupling from a given SPI (as AFC) as well as 25 time-series properties of all individual brain regions (as Auni_combo).

These representations are all evaluated using fit_classifiers.ipynb, which can also be run interactively in a Jupyter notebook viewer or run from the command line using:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Data visualization

All figures included in the manuscript can be recreated using the Jupyter notebook generate_all_figures.ipynb. You can run this from the command line and view outputs with the following:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Contact

If you have any questions or need further assistance, please contact annie.bryant@sydney.edu.au.

About

Code and data to reproduce Bryant et al. 2024 preprint "Extracting interpretable signatures of whole-brain dynamics through systematic comparison"

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Extracting interpretable signatures of whole-brain dynamics through systematic comparison

DOI

Five statistical representations depicted schematically

This repository contains code to accompany our preprint, "Extracting interpretable signatures of whole-brain dynamics through systematic comparison". Users may follow this repo to reproduce all analyses and visualizations contained in the preprint -- broadly, this includes extracting time-series features from functional magnetic resonance imaging (fMRI) data to serve as the basis for a series of linear support vector machine (SVM) classifiers for case--control comparisons.

All code is a mixture of R and python, with shell scripts used to execute operations. Please note that the repository is structured such that some steps are designed to be run on a high-performance computing (HPC) cluster for parallelization with a PBS job scheduler.

Data availability

All resting-state fMRI data used in this study is freely accessible to the public via open sharing platforms.

  • UCLA Consortium for Neuropsychiatric Phenomics (CNP) LA5c study: raw imaging volumes were accessed from OpenfMRI, accession number ds000030.
  • Autism Brain Imaging Data Exchange (ABIDE) I/II study: preprocessed fMRI time series (with the Harvard-Oxford parcellation atlas) were accessed from Zenodo at Traut et al. (2020).

❗ All intermediate data files needed to replicate analysis and visuals in this repo (including those >100MB) are provided in this Zenodo repository.

Usage

Installation

First, clone this repository to your local machine:

```bash
git clone https://github.com/DynamicsAndNeuralSystems/fMRI_FeaturesDisorders.git
```

Parts of this project are in R (v4.3.0), and parts are in Python (v3.9.0). We recommend that users create a conda environment for this project, which can be accomplished as follows:

```bash
conda create -n fMRI_FeaturesDisorders python=3.9.0
conda activate fMRI_FeaturesDisorders
```

From this conda environment, install the required Python packages:

```bash
pip install -r python_requirements.txt
```

R packages required for feature extraction and classification analysis can be installed from R_requirements.txt as follows:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Data visualization

Additional R packages will be needed to reproduce visualizations for the manuscript in generate_all_figures.ipynb, which can be installed with the following:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Preparing data

After downloading the prepared data files from Zenodo as listed above, create a data folder in this repository and place the downloaded files within that folder. This will get all files into their needed locations for feature extraction, classification, and visualization described in following.

Extracting time-series features

Schematic depiction of extracting time-series features from resting-state fMRI data

Please refer to the extract_time_series_features.ipynb Jupyter notebook for a walkthrough of how to extract intra-regional and inter-regional time series features from each participant's blood oxygen level dependent (BOLD) time series. You can interactively click through each code chunk with a Jupyter notebook reader like VSCode (with the Jupyter extension installed) or the Jupyter Notebook app from Anaconda.

Alternatively, to run the notebook from the command line, you can use the following code:

jupyter nbconvert --to notebook --execute extract_time_series_features.ipynb --allow-errors

The --allow-errors flag allows the whole file to execute even if an error occurs, which can be helpful for debugging (and is optional if you prefer to omit the flag). This will yield the file extract_time_series_features.nbconvert.ipynb that includes all code output from the notebook.

Performing case--control classification

Once all intra- and inter-regional time-series features have been computed across all participants, we can fit linear support vector machine (SVM) classifiers for each of the five statistical representations evaluated in the manuscript:

Five statistical representations depicted schematically

  1. Aregion: represents each fMRI time series using a set of features capturing 25 dynamical properties of an individual brain region.
  2. Afeature: represents each fMRI time series using a set of features that captures a single dynamical property from all brain regions (82 for SCZ, BP, and ADHD, and 48 for ASD).
  3. Auni_combo: represents each fMRI time series using a set of features combining the 25 time-series properties of each individual brain region.
  4. AFC: represents each fMRI time series using a set of features that capture all pairs of inter-regional coupling strengths computed using a single statistic of pairwise interactions (SPI).
  5. AFC_combo: represents each fMRI dataset as a set of features that capture all pairs of inter-regional coupling from a given SPI (as AFC) as well as 25 time-series properties of all individual brain regions (as Auni_combo).

These representations are all evaluated using fit_classifiers.ipynb, which can also be run interactively in a Jupyter notebook viewer or run from the command line using:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Data visualization

All figures included in the manuscript can be recreated using the Jupyter notebook generate_all_figures.ipynb. You can run this from the command line and view outputs with the following:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Contact

If you have any questions or need further assistance, please contact annie.bryant@sydney.edu.au.

About

Code and data to reproduce Bryant et al. 2024 preprint "Extracting interpretable signatures of whole-brain dynamics through systematic comparison"

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Extracting interpretable signatures of whole-brain dynamics through systematic comparison

DOI

Five statistical representations depicted schematically

This repository contains code to accompany our preprint, "Extracting interpretable signatures of whole-brain dynamics through systematic comparison". Users may follow this repo to reproduce all analyses and visualizations contained in the preprint -- broadly, this includes extracting time-series features from functional magnetic resonance imaging (fMRI) data to serve as the basis for a series of linear support vector machine (SVM) classifiers for case--control comparisons.

All code is a mixture of R and python, with shell scripts used to execute operations. Please note that the repository is structured such that some steps are designed to be run on a high-performance computing (HPC) cluster for parallelization with a PBS job scheduler.

Data availability

All resting-state fMRI data used in this study is freely accessible to the public via open sharing platforms.

  • UCLA Consortium for Neuropsychiatric Phenomics (CNP) LA5c study: raw imaging volumes were accessed from OpenfMRI, accession number ds000030.
  • Autism Brain Imaging Data Exchange (ABIDE) I/II study: preprocessed fMRI time series (with the Harvard-Oxford parcellation atlas) were accessed from Zenodo at Traut et al. (2020).

❗ All intermediate data files needed to replicate analysis and visuals in this repo (including those >100MB) are provided in this Zenodo repository.

Usage

Installation

First, clone this repository to your local machine:

```bash
git clone https://github.com/DynamicsAndNeuralSystems/fMRI_FeaturesDisorders.git
```

Parts of this project are in R (v4.3.0), and parts are in Python (v3.9.0). We recommend that users create a conda environment for this project, which can be accomplished as follows:

```bash
conda create -n fMRI_FeaturesDisorders python=3.9.0
conda activate fMRI_FeaturesDisorders
```

From this conda environment, install the required Python packages:

```bash
pip install -r python_requirements.txt
```

R packages required for feature extraction and classification analysis can be installed from R_requirements.txt as follows:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Data visualization

Additional R packages will be needed to reproduce visualizations for the manuscript in generate_all_figures.ipynb, which can be installed with the following:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Preparing data

After downloading the prepared data files from Zenodo as listed above, create a data folder in this repository and place the downloaded files within that folder. This will get all files into their needed locations for feature extraction, classification, and visualization described in following.

Extracting time-series features

Schematic depiction of extracting time-series features from resting-state fMRI data

Please refer to the extract_time_series_features.ipynb Jupyter notebook for a walkthrough of how to extract intra-regional and inter-regional time series features from each participant's blood oxygen level dependent (BOLD) time series. You can interactively click through each code chunk with a Jupyter notebook reader like VSCode (with the Jupyter extension installed) or the Jupyter Notebook app from Anaconda.

Alternatively, to run the notebook from the command line, you can use the following code:

jupyter nbconvert --to notebook --execute extract_time_series_features.ipynb --allow-errors

The --allow-errors flag allows the whole file to execute even if an error occurs, which can be helpful for debugging (and is optional if you prefer to omit the flag). This will yield the file extract_time_series_features.nbconvert.ipynb that includes all code output from the notebook.

Performing case--control classification

Once all intra- and inter-regional time-series features have been computed across all participants, we can fit linear support vector machine (SVM) classifiers for each of the five statistical representations evaluated in the manuscript:

Five statistical representations depicted schematically

  1. Aregion: represents each fMRI time series using a set of features capturing 25 dynamical properties of an individual brain region.
  2. Afeature: represents each fMRI time series using a set of features that captures a single dynamical property from all brain regions (82 for SCZ, BP, and ADHD, and 48 for ASD).
  3. Auni_combo: represents each fMRI time series using a set of features combining the 25 time-series properties of each individual brain region.
  4. AFC: represents each fMRI time series using a set of features that capture all pairs of inter-regional coupling strengths computed using a single statistic of pairwise interactions (SPI).
  5. AFC_combo: represents each fMRI dataset as a set of features that capture all pairs of inter-regional coupling from a given SPI (as AFC) as well as 25 time-series properties of all individual brain regions (as Auni_combo).

These representations are all evaluated using fit_classifiers.ipynb, which can also be run interactively in a Jupyter notebook viewer or run from the command line using:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Data visualization

All figures included in the manuscript can be recreated using the Jupyter notebook generate_all_figures.ipynb. You can run this from the command line and view outputs with the following:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Contact

If you have any questions or need further assistance, please contact annie.bryant@sydney.edu.au.

About

Code and data to reproduce Bryant et al. 2024 preprint "Extracting interpretable signatures of whole-brain dynamics through systematic comparison"

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Extracting interpretable signatures of whole-brain dynamics through systematic comparison

DOI

Five statistical representations depicted schematically

This repository contains code to accompany our preprint, "Extracting interpretable signatures of whole-brain dynamics through systematic comparison". Users may follow this repo to reproduce all analyses and visualizations contained in the preprint -- broadly, this includes extracting time-series features from functional magnetic resonance imaging (fMRI) data to serve as the basis for a series of linear support vector machine (SVM) classifiers for case--control comparisons.

All code is a mixture of R and python, with shell scripts used to execute operations. Please note that the repository is structured such that some steps are designed to be run on a high-performance computing (HPC) cluster for parallelization with a PBS job scheduler.

Data availability

All resting-state fMRI data used in this study is freely accessible to the public via open sharing platforms.

  • UCLA Consortium for Neuropsychiatric Phenomics (CNP) LA5c study: raw imaging volumes were accessed from OpenfMRI, accession number ds000030.
  • Autism Brain Imaging Data Exchange (ABIDE) I/II study: preprocessed fMRI time series (with the Harvard-Oxford parcellation atlas) were accessed from Zenodo at Traut et al. (2020).

❗ All intermediate data files needed to replicate analysis and visuals in this repo (including those >100MB) are provided in this Zenodo repository.

Usage

Installation

First, clone this repository to your local machine:

```bash
git clone https://github.com/DynamicsAndNeuralSystems/fMRI_FeaturesDisorders.git
```

Parts of this project are in R (v4.3.0), and parts are in Python (v3.9.0). We recommend that users create a conda environment for this project, which can be accomplished as follows:

```bash
conda create -n fMRI_FeaturesDisorders python=3.9.0
conda activate fMRI_FeaturesDisorders
```

From this conda environment, install the required Python packages:

```bash
pip install -r python_requirements.txt
```

R packages required for feature extraction and classification analysis can be installed from R_requirements.txt as follows:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Data visualization

Additional R packages will be needed to reproduce visualizations for the manuscript in generate_all_figures.ipynb, which can be installed with the following:

```bash
while IFS=" " read -r package version; do Rscript -e "devtools::install_version('"$package"', version='"$version"')"; done < "R_requirements.txt"
```

Preparing data

After downloading the prepared data files from Zenodo as listed above, create a data folder in this repository and place the downloaded files within that folder. This will get all files into their needed locations for feature extraction, classification, and visualization described in following.

Extracting time-series features

Schematic depiction of extracting time-series features from resting-state fMRI data

Please refer to the extract_time_series_features.ipynb Jupyter notebook for a walkthrough of how to extract intra-regional and inter-regional time series features from each participant's blood oxygen level dependent (BOLD) time series. You can interactively click through each code chunk with a Jupyter notebook reader like VSCode (with the Jupyter extension installed) or the Jupyter Notebook app from Anaconda.

Alternatively, to run the notebook from the command line, you can use the following code:

jupyter nbconvert --to notebook --execute extract_time_series_features.ipynb --allow-errors

The --allow-errors flag allows the whole file to execute even if an error occurs, which can be helpful for debugging (and is optional if you prefer to omit the flag). This will yield the file extract_time_series_features.nbconvert.ipynb that includes all code output from the notebook.

Performing case--control classification

Once all intra- and inter-regional time-series features have been computed across all participants, we can fit linear support vector machine (SVM) classifiers for each of the five statistical representations evaluated in the manuscript:

Five statistical representations depicted schematically

  1. Aregion: represents each fMRI time series using a set of features capturing 25 dynamical properties of an individual brain region.
  2. Afeature: represents each fMRI time series using a set of features that captures a single dynamical property from all brain regions (82 for SCZ, BP, and ADHD, and 48 for ASD).
  3. Auni_combo: represents each fMRI time series using a set of features combining the 25 time-series properties of each individual brain region.
  4. AFC: represents each fMRI time series using a set of features that capture all pairs of inter-regional coupling strengths computed using a single statistic of pairwise interactions (SPI).
  5. AFC_combo: represents each fMRI dataset as a set of features that capture all pairs of inter-regional coupling from a given SPI (as AFC) as well as 25 time-series properties of all individual brain regions (as Auni_combo).

These representations are all evaluated using fit_classifiers.ipynb, which can also be run interactively in a Jupyter notebook viewer or run from the command line using:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Data visualization

All figures included in the manuscript can be recreated using the Jupyter notebook generate_all_figures.ipynb. You can run this from the command line and view outputs with the following:

jupyter nbconvert --to notebook --execute fit_classifiers.ipynb --allow-errors

Contact

If you have any questions or need further assistance, please contact annie.bryant@sydney.edu.au.

About

Code and data to reproduce Bryant et al. 2024 preprint "Extracting interpretable signatures of whole-brain dynamics through systematic comparison"

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages