Skip to main content

Load and process brain datasets for deep learning

Project description

🍍PNPL Brain Data Deep Learning Library

The current primary use of the PNPL library is for the LibriBrain competition. Click here to learn more and get started!

Welcome to PNPL — a Python toolkit for loading and processing brain datasets for deep learning. The package ships the LibriBrain 2025 dataset family plus shared preprocessing and task utilities.

Features

  • Friendly dataset APIs backed by real MEG recordings
  • Batteries‑included standardization, clipping, and windowing
  • LibriBrain 2025 dataset support with optional on‑demand download
  • Works with PyTorch DataLoader out of the box
  • Clean namespace and lazy imports to keep startup fast

Installation

pip install pnpl

This installs the package and its core dependencies.

Usage

A common entry point uses a task object:

from pnpl.datasets import LibriBrain
from pnpl.tasks import SpeechDetection

dataset = LibriBrain(
    data_path="./data/LibriBrain",
    task=SpeechDetection(tmin=0.0, tmax=0.5),
    partition="train",
)

sample_data, label = dataset[0]
print(sample_data.shape, label.shape)

Dataset-specific wrapper classes are also available:

from pnpl.datasets import LibriBrainSpeech, LibriBrainPhoneme

speech_ds = LibriBrainSpeech(data_path="./data/LibriBrain", partition="train")
phoneme_ds = LibriBrainPhoneme(data_path="./data/LibriBrain", partition="train")

Included Datasets

  • pnpl includes the libribrain2025 dataset family together with shared preprocessing and task utilities.

Support

In case of any questions or problems, please get in touch through our Discord server.

Quickstart

Load a single run of the LibriBrain Speech dataset and iterate samples:

from pnpl.datasets.libribrain2025 import constants
from pnpl.datasets import LibriBrainSpeech

ds = LibriBrainSpeech(
    data_path="./data/LibriBrain",
    preprocessing_str="bads+headpos+sss+notch+bp+ds",
    include_run_keys=[constants.RUN_KEYS[0]],  # pick a single run
    tmin=0.0,
    tmax=0.2,
    standardize=True,
    include_info=True,
)

print(len(ds), "samples")
x, y, info = ds[0]
print(x.shape, y.shape, info["dataset"])  # (channels,time), (time,), "libribrain2025"

Documentation

We publish documentation with Jupyter Book and GitHub Pages.

  • Local preview: pip install -r docs/requirements.txt && jupyter-book build docs/ then open docs/_build/html/index.html.
  • GitHub Pages: when made public, enable Pages via repo settings to publish automatically from the existing workflow.

Contributing

We welcome contributions from the community!

  • Read the Contributor Guide in docs/contributing.md for setup, coding style, and PR workflow.
  • Open issues for bugs and enhancements with clear, minimal repros when possible.
  • Tests: add/update pytest tests for any feature or fix.

Quick dev setup:

git clone https://github.com/neural-processing-lab/pnpl.git
cd pnpl
python -m venv .venv && source .venv/bin/activate
pip install -e .
pip install pytest
pytest -q

Support and Questions

  • Check the FAQ at docs/faq.md.
  • If something is unclear in the docs, please open a documentation issue.

License

BSD‑3‑Clause. See LICENSE for details.

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

pnpl-0.1.0.tar.gz (101.9 kB view details)

Uploaded Source

Built Distribution

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

pnpl-0.1.0-py3-none-any.whl (130.4 kB view details)

Uploaded Python 3

File details

Details for the file pnpl-0.1.0.tar.gz.

File metadata

  • Download URL: pnpl-0.1.0.tar.gz
  • Upload date:
  • Size: 101.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for pnpl-0.1.0.tar.gz
Algorithm Hash digest
SHA256 accfa06b6ce9b8f8d2cfb64eebd52cf2246f7dfc47a5328dab6a88b05579a908
MD5 36d19b6c352e1edc65806290a1dbc0e9
BLAKE2b-256 3e9eb2f322179bd97e6410de5b0dc168f1e2dae5ab01912a051ab649f698cd9e

See more details on using hashes here.

File details

Details for the file pnpl-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pnpl-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 130.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for pnpl-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a541b8eb937f6968f9fd7fe8145b4627deae06951a27940c7015397cfb5c5602
MD5 b0f6687e81ea82166c044f80a27e5f4b
BLAKE2b-256 f719783938891e959a2f781ae91e86fd51dc6b79e244f7e5815d57bc027fefdc

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