Neurometry is a computational framework to quantify geometric intelligence in natural and artificial brains. Neurometry provides functionalities to analyze the geometric structures underlying computation in neural systems - neural representations and neural manifolds.
This repository contains the official PyTorch implementation of the papers:
- Quantifying Extrinsic Curvature in Neural Manifolds. CVPR Workshop on Topology, Algebra and Geometry 2023. Francisco Acosta, Sophia Sanborn, Khanh Dao Duc, Manu Mahdav and Nina Miolane.
- Relating Representational Geometry to Cortical Geometry in the Visual Cortex. NeurIPS Workshop on Unifying Representations in Neural Models 2023. Francisco Acosta, Colin Conwell, Sophia Sanborn, David Klindt and Nina Miolane.
The neural manifold hypothesis postulates that the activity of a neural population forms a low-dimensional manifold within the larger neural state space, whose structure reflects the structure of the encoded task variables. Many dimensionality reduction techniques have been used to study the structure of neural manifolds, but these methods do not provide an explicit parameterization of the manifold, and may not capture the global structure of topologically nontrivial manifolds. Topological data analysis methods can reveal the shared topological structure between neural manifolds and the task variables they represent, but may not to capture much of the geometric information including distance, angles, and curvature.
We introduce a novel approach (see figure above) for studying the geometry of neural manifolds. This approach:
- computes an explicit parameterization of the manifolds, and
- estimates their local extrinsic curvature.
We hope to open new avenues of inquiry exploring geometric neural correlates of perception and behavior, and provide a new means to compare representations in biological and artificial neural systems.
We recommend using Anaconda for easy installation and use of the method. To create the necessary conda environment, run:
conda create -n neurometry python=3.11.3 cmake boost -c conda-forge -y
conda activate neurometry
pip install -e '.[all]'
If cuda is available, run instead:
conda create -n neurometry python=3.11.3 cmake boost -c conda-forge -y
conda activate neurometry
pip install -e '.[all,gpu]'
$ conda create -n neurometry --file conda-linux-64.lock
$ conda activate neurometry
$ poetry install
If you are on Mac, make and use conda-osx-64.lock
instead.
If you have GPU, run poetry install -E gpu
instead.
Only run if changes are made to the environment files.
To recreate the conda lock, after modifying conda.yaml:
pip install conda-lock
make conda-linux-64.lock
Note that you may need to install conda-lock not in your base env.
To recreate the poetry lock, after modifying pyproject.toml:
make poetry.lock
To
If this code is useful to your research, please cite:
@inproceedings{acostaQuantifyingExtrinsicCurvature2023,
title = {Quantifying {{Extrinsic Curvature}} in {{Neural Manifolds}}},
booktitle = {Proceedings of the {{IEEE}}/{{CVF Conference}} on {{Computer Vision}} and {{Pattern Recognition}}},
author = {Acosta, Francisco and Sanborn, Sophia and Duc, Khanh Dao and Madhav, Manu and Miolane, Nina},
year = {2023},
pages = {610--619},
urldate = {2023-07-07},
langid = {english}
}