A repository for topological comparisons of dimension reduction algorithms applied to resting-state fMRI data.
This repository houses the code underlying the analysis in [5], preprinted here on the arXiv. It implements an adaption (see interval-matching_bootstrap) of [4] on neuroimaging data, leveraging the computational efficiency of Ripser [2] and Ripser-image [3]. This repository's code is built to compare different "brain representations" (i.e., reduced-data representations) of resting-state fMRI data in the Human Connectome Project (HCP) produced through different algorithms and feature selection choices (see "Data" section). Brain representations are compared by the "metric" embedding they induce on the set of HCP subjects (given some choice of subject-pairwise dissimilarity measure), and the stability of these induced topologies is measured (in part) by the topological bootstrap [1,4]. The brain_representations
repository contains the code necessary to repeat the analysis conducted in [5].
The subdirectories of this repository are listed below, grouped approximately by their role.
Centrally houses code base for project: calculation, visualization, and key scripting functions are found here. Note that all code in these directories enter the pipeline after data reduction and featurization. Each directory and subdirectory contain READMEs with further details.
Python repository: distance and persistent homology calculations, statistical analysis, and visualization
Bash repository: distributed SLURM scripting at problem scale, also contains only direct calls to Ripser [2] and Ripser-image [3]
Submission code and ad-hoc scripts for running experimental analyses.
Analysis conducted without persistent homology; contains CCA experiments.
Persistent homology analysis; contains vast majority of experiments.
Brain representation computation, extraction, and featurization. Note that no subject data of any kind is included in this public repository! Instead, the following directories and their subdirectories contain the extraction/computation/processing code used to standardize brain representations for persistent homology analysis. References for and/or further details of the decomposition method are included in a README of each subdirectory.
code for the computing FC network matrices (correlations between timecourses) and spatial correlation matrices (correlations between maps) from rfMRI data
code for the computing diffusion-network based gradient representations from connectivity data at both the subject and group level and derivative features of these representations
code for computing FC network matrices, partial FC matrices, and amplitude features from extracted ICA-DR data
code for extracting parcellation-level timeseries from data and computing FC network matrices, partial FC matrices, and amplitude features from extracted Glasser-parcellated rfMRI data
code for extracting parcellation-level timeseries from data and computing FC network matrices, partial FC matrices, and amplitude features from Schaefer-parcellated rfMRI data
code for extracting parcellation-level timeseries from data and computing FC network matrices, partial FC matrices, and amplitude features from Yeo-parcellated rfMRI data
Before running the code to perform cycle matching [1] in this repository, one needs to compile the C++ files in the modified ripser
folder. For that
- Install a C++ compiler in your computer. We recommend getting the compiler GCC.
- The relevant Makefiles are included in the corresponding folders, so the compilation can be done by running the command line
make
in a terminal opened in the folder. - The compiled files should be in the same directory than the python scripts/notebooks in which the cycle matching [1] code is invoked.
This repo leverages several Python packages beyond built-ins. These dependencies are listed below, grouped by approximate function and which subdirectories of src_py
rely on that dependency.
- interval-matching_bootstrap (adapted from [4])
This code is available and is fully adaptable for individual user customization. If you clone or fork this repository, please include the following bibtex citation:
@misc{easley2023comparingrepresentationshighdimensionaldata,
title={Comparing representations of high-dimensional data with persistent homology: a case study in neuroimaging},
author={Ty Easley and Kevin Freese and Elizabeth Munch and Janine Bijsterbosch},
year={2023},
eprint={2306.13802},
archivePrefix={arXiv},
primaryClass={cs.CG},
url={https://arxiv.org/abs/2306.13802},
}
If your clone or fork includes the interval-matching_bootstrap submodule, please additionally include the following bibtex citation:
@misc{garcia-redondo_fast_2022,
title = {Fast {Topological} {Signal} {Identification} and {Persistent} {Cohomological} {Cycle} {Matching}},
url = {http://arxiv.org/abs/2209.15446},
urldate = {2022-10-03},
publisher = {arXiv},
author = {García-Redondo, Inés and Monod, Anthea and Song, Anna},
month = sep,
year = {2022},
note = {arXiv:2209.15446 [math, stat]},
keywords = {Mathematics - Algebraic Topology, Statistics - Machine Learning},
}
[1] Reani, Yohai, and Omer Bobrowski. 2021. ‘Cycle Registration in Persistent Homology with Applications in Topological Bootstrap’, January. https://arxiv.org/abs/2101.00698v1.
[2] Bauer, Ulrich. 2021. ‘Ripser: Efficient Computation of Vietoris-Rips Persistence Barcodes’. Journal of Applied and Computational Topology 5 (3): 391–423. https://doi.org/10.1007/s41468-021-00071-5.
[3] Bauer, Ulrich, and Maximilian Schmahl. 2022. ‘Efficient Computation of Image Persistence’. ArXiv:2201.04170 [Cs, Math], January. http://arxiv.org/abs/2201.04170.
[4] I. García-Redondo, A. Monod, and A. Song, “Fast Topological Signal Identification and Persistent Cohomological Cycle Matching.” arXiv, Sep. 30, 2022. doi: 10.48550/arXiv.2209.15446.
[5] T. Easley, K. Freese, E. Munch, and J. Bijsterbosch, “Comparing representations of high-dimensional data with persistent homology: a case study in neuroimaging,” Nov. 23, 2023, arXiv: arXiv:2306.13802. doi: 10.48550/arXiv.2306.13802.