Fast Shared Response Model
Project description
FastSRM
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
-
In the
experimentsfolder runipython synthetic.py -
Go in the
plottingfolder and runipython plot_synthetic_gradients.py
The figure is now available in the figures folder under the name
synthetic_gradient.pdf
Timesegment matching experiment
-
Go in the experiments folder and download the sherlock dataset by running:
ipython get_sherlock.py -
Go in the
experimentsfolder and runbash timesegment.bashif you have access to a cluster with slurm otherwise runbash timesegment_local.bash -
Go in the
plottingfolder and runipython plot_timesegment.py
The figure is now available in the figures folder under the name
timesegment_matching_sherlock.pdf
Identifiability experiment
-
Go in the experiments folder and download the sherlock dataset by running:
ipython get_sherlock.py -
Download and install Brainiak (see https://github.com/brainiak/brainiak)
-
Go in the
experimentsfolder and runbash identifiability.bashif you have access to a cluster with slurm otherwise runbash identifiability_local.bash -
Go in the
plottingfolder and runipython plot_identifiability.py
The figure is now available in the figures folder under the name
identifiability.pdf
Documentation
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca50d7222fd8328ace3c616084c2e1aa7e25668ec6b2fcbcc46567e5b81ec01d
|
|
| MD5 |
fd9fd8079c43cf06f717165f7a0810c2
|
|
| BLAKE2b-256 |
49194a76d71f31c980a4dc971d10a9f24c00553d34ff5b5f5257c7aff18432bf
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f883acde8ac94421486a4b6a739b89a77330f0a063cf4a46221eae3f4e013d4
|
|
| MD5 |
0981dfeb981bef313cc769b52038b712
|
|
| BLAKE2b-256 |
1673877693c830f912699f59677d78cc29dbfe48e9cabff941f56040dd820984
|