Skip to main content

Fast Shared Response Model

Project description

FastSRM

CircleCI

Implementation of FastSRM algorithms.

The model of probabilistic SRM is given by:

where

  • is the data of subject
  • is the basis of subject
  • is the shared response (or sources) assumed to be sampled from a centered Gaussian with covariance
  • is the noise in subject assumed to be sampled from a centered Gaussian with covariance where is the identity matrix. We call the noise variance of subject .

In practice we observe n samples of . When the number of samples is much lower than the number of features v, the SRM model can be fitted efficiently. This is what this repository provides. We also assume that the covariance of the shared response is diagonal to obtain identifiability.

Install

Clone the repository

git clone https://github.com/hugorichard/FastSRM

In the cloned directory execute

pip install -e .

Requirements:

scipy>=0.18.0
numpy>=1.12
scikit-learn>=0.23
joblib>=1.1.0
matplotlib>=2.0.0
pytest>=6.2.5

To run the experiments on identifiability, brainiak (https://github.com/brainiak/brainiak) and nilearn (https://nilearn.github.io/stable/index.html) are necessary.

Usage

In many neuroscience datasets, the samples are split into sessions. Therefore, for each subject we will have several sessions that can be time-wise concatenated to obtain all samples. In IdentifiableFastSRM

# Input data X: neuroimaging data 
# X is a np array of shape (n_subjects, n_sessions)
# X[i, j] is a path to a np array of shape (n_voxels, n_timeframes)
from fastsrm.identifiable_srm import IdentifiableFastSRM
srm = IdentifiableFastSRM(n_components=5, temp_dir="./", n_jobs=5)
S = srm.fit_transform(X) # Shared response: np array of shape (n_components, n_timeframes)
W = srm.basis_list # Shared response: np array of shape (n_components, n_timeframes)
Sigma = srm.source_covariance # (Diagonal) Covariance of the shared response: np array of shape (n_components,)
sigmas = srm.noise_variance # Variance of the noise: np array of shape (n_subjects)

Run experiments

Synthetic experiment

  1. In the experiments folder run ipython synthetic.py

  2. Go in the plotting folder and run ipython plot_synthetic_gradients.py

The figure is now available in the figures folder under the name synthetic_gradient.pdf

Timesegment matching experiment

  1. Go in the experiments folder and download the sherlock dataset by running: ipython get_sherlock.py

  2. Go in the experiments folder and run bash timesegment.bash if you have access to a cluster with slurm otherwise run bash timesegment_local.bash

  3. Go in the plotting folder and run ipython plot_timesegment.py

The figure is now available in the figures folder under the name timesegment_matching_sherlock.pdf

Identifiability experiment

  1. Go in the experiments folder and download the sherlock dataset by running: ipython get_sherlock.py

  2. Download and install Brainiak (see https://github.com/brainiak/brainiak)

  3. Go in the experiments folder and run bash identifiability.bash if you have access to a cluster with slurm otherwise run bash identifiability_local.bash

  4. Go in the plotting folder and run ipython plot_identifiability.py

The figure is now available in the figures folder under the name identifiability.pdf

Documentation

https://hugorichard.github.io/FastSRM/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastsrm-0.0.5.tar.gz (9.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastsrm-0.0.5-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file fastsrm-0.0.5.tar.gz.

File metadata

  • Download URL: fastsrm-0.0.5.tar.gz
  • Upload date:
  • Size: 9.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for fastsrm-0.0.5.tar.gz
Algorithm Hash digest
SHA256 ca50d7222fd8328ace3c616084c2e1aa7e25668ec6b2fcbcc46567e5b81ec01d
MD5 fd9fd8079c43cf06f717165f7a0810c2
BLAKE2b-256 49194a76d71f31c980a4dc971d10a9f24c00553d34ff5b5f5257c7aff18432bf

See more details on using hashes here.

File details

Details for the file fastsrm-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: fastsrm-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for fastsrm-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9f883acde8ac94421486a4b6a739b89a77330f0a063cf4a46221eae3f4e013d4
MD5 0981dfeb981bef313cc769b52038b712
BLAKE2b-256 1673877693c830f912699f59677d78cc29dbfe48e9cabff941f56040dd820984

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page