Skip to main content

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/

Metadata

Release files for mosaic-dataset 0.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mosaic-dataset 0.0.6
File Size Uploaded
mosaic_dataset-0.0.6.tar.gz 44.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mosaic-dataset 0.0.6
File Interpreter ABI Platform
mosaic_dataset-0.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 91.2 kB

Release files / mosaic_dataset-0.0.6.tar.gz

Download URL mosaic_dataset-0.0.6.tar.gz
Size 44.0 kB
Tags Source
SHA-256 checksum
How to use checksums
2bfc2ee16515f7045163ddeb08e185ff92146f4cb12e8f50dadf07ebb8a0ff4f
BLAKE2b-256 checksum
How to use checksums
976417d252a1129c4b10e6144968712de73f5a7e03f28498f9ffe100895a1a7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release files / mosaic_dataset-0.0.6-py3-none-any.whl

Download URL mosaic_dataset-0.0.6-py3-none-any.whl
Size 47.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
286e74d9ea8af1b20a98716eaf6642698477c83bd41a4c27af40a6252ddc4fcb
BLAKE2b-256 checksum
How to use checksums
18e88cbd0de1a321b1cc5f3134ff26f7746ac8a0d1f4942ee03238cadd8a8f32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page