Skip to main content

A scalable framework for fMRI dataset aggregation and modeling of human vision

Project description

mosaic-dataset banner

Open In Colab test mosaic

Load the mosaic dataset (Lahner et al.) and the associated pre-trained models

pip install mosaic-dataset
import mosaic

dataset = mosaic.load(
    names_and_subjects={
        "NaturalScenesDataset": [1], ## set this to "all" if you want to download data for all subjects
        # "THINGS": "all"
    },
    folder="./MOSAIC",
    # if set to False, dataset[i]["betas"] will return a tensor containing the betas for all ROIs concatenated together
    parse_betas=True
)

print(dataset[0].keys())

Visualization

import mosaic
from mosaic.utils import visualize

visualize(
    betas=dataset[0]["betas"],
    ## set rois to None if you want to visualize all of the rois
    rois=[
        "L_FFC",
        "R_FFC",
        "L_PHA2",
        "R_PHA2",
        "L_V1",
        "R_V1",

    ],
    ## other modes are: 'white', 'midthickness', 'pial', 'inflated', 'very_inflated', 'flat', 'sphere'
    mode = "inflated",
    save_as = "plot.html",
)

Loading pre-trained models

import mosaic

model = mosaic.from_pretrained(
    backbone_name='ResNet18', 
    framework='multihead', 
    subjects='all', 
    vertices='visual', 
    folder='./mosaic_models/'
)

## or load a single subject model
single_subject_model = mosaic.from_pretrained(
    backbone_name="CNN8",
    framework="singlehead",
    subjects="sub-05_NSD",
    vertices="visual",
)

Running inference with pre-trained models:

from mosaic.utils.inference import MosaicInference

inference = MosaicInference(
    model=model,
    batch_size=32,
    device="cpu"
)

results = inference.run(
    images = [
        Image.open("face.jpg").convert("RGB"),
    ],
    names_and_subjects={"NaturalScenesDataset": "all"}
)

Visualizing model predictions

#note responses to the face are highest in the ventral stream
inference.plot(
    image=Image.open("face.jpg").convert("RGB"),
    save_as="predicted_voxel_responses.html",
    dataset_name="NaturalScenesDataset",
    subject_id=1,
    ## other modes are: 'white', 'midthickness', 'pial', 'inflated', 'very_inflated', 'flat', 'sphere'
    mode="inflated"
)

Loading up stimulus info:

stim_info = mosaic.get_stiminfo(
    dataset_name="deeprecon",
    folder="./MOSAIC"
)

print(stim_info.head())

Merging files for easier loading

from mosaic.utils.merging import merge_hdf5_files
from mosaic.datasets import MergedDataset

merge_hdf5_files(
    files=[
        './MOSAIC/NSD/sub-01_NSD.hdf5',
        './MOSAIC/deep_recon/sub-01_deeprecon.hdf5'
    ],
    save_as="./merged-test.hdf5"
)

dataset = MergedDataset(
    filename="./merged-test.hdf5"
)

print(len(dataset))

Downloading resting state data

from mosaic.datasets.resting_state import download_resting_state_data

download_resting_state_data(
    dataset="BMD", ## or "NSD" or "THINGS"
    subject=1,
    session=1,
    run=1,
    folder="./MOSAIC"
)

Downloading time series data

from mosaic.datasets.timeseries import download_timeseries_data

download_timeseries_data(
    folder = "./mosaic-timeseries",
    dataset_name = "deeprecon"
)

Dev Setup

git clone git+https://github.com/Mayukhdeb/mosaic-dataset.git
cd mosaic-dataset
python setup.py develop

Running tests

Note: Before you start running tests, open tests/tesing_config.json and make the following changes

  1. Rename the dataset_folder and models_folder to wherever you already have the files or where you'd like to download them
  2. set download_pretrained_models to true if you want to test the models with their actual trained weights. It's set to false by default to avoid spamming the AWS bucket with requests.
pytest -vvx tests/

And to make the tests more verbose (with the prints displayed)

pytest -vvx --capture=no tests/

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

mosaic_dataset-0.0.6.tar.gz (44.0 kB view details)

Uploaded Source

Built Distribution

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

mosaic_dataset-0.0.6-py3-none-any.whl (47.1 kB view details)

Uploaded Python 3

File details

Details for the file mosaic_dataset-0.0.6.tar.gz.

File metadata

  • Download URL: mosaic_dataset-0.0.6.tar.gz
  • Upload date:
  • Size: 44.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for mosaic_dataset-0.0.6.tar.gz
Algorithm Hash digest
SHA256 2bfc2ee16515f7045163ddeb08e185ff92146f4cb12e8f50dadf07ebb8a0ff4f
MD5 68d11362d63e202b07a3a47782cd5864
BLAKE2b-256 976417d252a1129c4b10e6144968712de73f5a7e03f28498f9ffe100895a1a7f

See more details on using hashes here.

File details

Details for the file mosaic_dataset-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: mosaic_dataset-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 47.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for mosaic_dataset-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 286e74d9ea8af1b20a98716eaf6642698477c83bd41a4c27af40a6252ddc4fcb
MD5 bca9a854464d6f968b271d061e6bfc11
BLAKE2b-256 18e88cbd0de1a321b1cc5f3134ff26f7746ac8a0d1f4942ee03238cadd8a8f32

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