Skip to main content

EEG emotion recognition with CNN-Transformer encoders and three-stage hierarchical classifiers

Project description

DGLZ

EEG emotion recognition with CNN-Transformer encoders and three-stage hierarchical classifiers.

Overview

DGLZ is a Python toolkit for EEG-based emotion recognition. It combines convolutional neural network (CNN) feature extractors with Transformer encoders to model both local and global temporal patterns in EEG signals. A three-stage hierarchical classification pipeline progressively refines emotion predictions.

Key components:

  • Data processing -- EEG I/O, channel selection, band filtering, signal transforms, and index building.
  • Resampling -- Truncated-Gaussian and subject-state-aware resampling strategies for balanced training data.
  • Datasets -- PyTorch-style dataset classes for resampled, subject-state, normal-emotion, and depression-emotion data with configurable collation and splitting.
  • Models -- CNN blocks, Transformer blocks, token embeddings, and specialised encoder architectures for trial-level, subject-state, normal-emotion, and depression-emotion classification.
  • Training -- Loss functions, optimizers, schedulers, early stopping, checkpointing, and metric tracking.
  • Prediction -- Post-processing, prediction aggregation, three-stage inference pipeline, and submission formatting.
  • CLI -- A unified eemo command-line interface built on Typer.

Installation

Requires Python 3.13 or later.

# Clone the repository
git clone https://github.com/SuShuHeng/DGLZ.git
cd DGLZ

# Install in editable (development) mode
pip install -e .

# Or with all optional dependencies (test + packaging tools)
pip install -e ".[all]"

Updating

# Check and update from PyPI, fallback to GitHub Release (default)
eemo update

# Update from GitHub Release only (skip PyPI)
eemo update --dist-repo

# Install a specific version from GitHub Release
eemo update --dist-repo --tag v0.1.2

# Use a custom distribution repository
eemo update --dist-repo --dist-repo-url https://github.com/example/repo.git --tag v0.1.2

# Use a custom wheel filename pattern
eemo update --dist-repo --tag v0.1.2 --asset-pattern "dglz-*.whl"

# Preview without installing
eemo update --dry-run

CLI Usage

After installation the eemo command is available:

# Show available commands
eemo --help

# Prepare raw EEG data for processing
eemo prepare --help

# Resample datasets for balanced training
eemo resample --help

# Train a model
eemo train --help

# Run the three-stage hierarchical inference pipeline
eemo infer-three-stage --help

# Run predictions with a trained model
eemo pred --help

# Display the current version
eemo version

# Manage configuration files
eemo config --help

# Run experiment training sweeps
eemo exp-train --help

# Run experiment prediction sweeps
eemo exp-pred --help

# Manage model checkpoints
eemo ckpt --help

Project Structure

DGLZ/
├── pyproject.toml          # Package metadata and build configuration
├── README.md               # This file
├── .python-version         # Python version pin (3.13)
├── configs/                # Configuration files
├── docs/                   # Documentation
├── src/
│   └── eemoclas/           # Main package
│       ├── __init__.py
│       ├── __version__.py
│       ├── cli/            # Command-line interface
│       │   └── main.py     # Entry point (registers as `eemo`)
│       ├── data/           # EEG I/O, splitting, transforms
│       ├── datasets/       # PyTorch dataset classes
│       ├── model/          # CNN-Transformer architectures
│       ├── prediction/     # Inference and post-processing
│       ├── resampling/     # Data resampling strategies
│       ├── training/       # Training loop utilities
│       └── utils/          # Configuration, logging, metrics, paths
└── tests/                  # Test suite

Running Tests

pip install -e ".[test]"
pytest

License

Licensed under the Apache License 2.0.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

dglz-0.1.23.post8.tar.gz (416.0 kB view details)

Uploaded Source

Built Distribution

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

dglz-0.1.23.post8-py3-none-any.whl (387.7 kB view details)

Uploaded Python 3

File details

Details for the file dglz-0.1.23.post8.tar.gz.

File metadata

  • Download URL: dglz-0.1.23.post8.tar.gz
  • Upload date:
  • Size: 416.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for dglz-0.1.23.post8.tar.gz
Algorithm Hash digest
SHA256 280980d58e15e7ee1ee8ec446927a46ae9c40636d6d96ddd9a3c672ed04232d8
MD5 8c8e6cb60bb7fd21f7661744125d8624
BLAKE2b-256 db5c5771a64b6f511ba9066fbbda1c89def9c4c963fb708c0925824f212ac019

See more details on using hashes here.

File details

Details for the file dglz-0.1.23.post8-py3-none-any.whl.

File metadata

  • Download URL: dglz-0.1.23.post8-py3-none-any.whl
  • Upload date:
  • Size: 387.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for dglz-0.1.23.post8-py3-none-any.whl
Algorithm Hash digest
SHA256 5a26cf2bddc5d3cb69430af8ab3b4a43e09b3e1869a2937f371500363f7f5a86
MD5 c7f725b2d27f79bd6a35662024b95442
BLAKE2b-256 50e8a284583e3d16d166061459d5e1598f11149ebabd39331be7f8d12b2fdb2a

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