Skip to content

Latest commit

 

History

History
94 lines (66 loc) · 4.86 KB

README.md

File metadata and controls

94 lines (66 loc) · 4.86 KB

Test Lint Doc Codecov Python DOI

Screen Shot 2024-04-05 at 8 50 36 PM

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:

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.

Overview of method to extract geometric features from neural activation manifolds.

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.

🏡 Installation

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]'

🏡 Installation with locks

$ 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.

Dev

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

🌎 Bibtex

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}
}