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
eemocommand-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]"
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
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 dglz-0.1.10.post5.tar.gz.
File metadata
- Download URL: dglz-0.1.10.post5.tar.gz
- Upload date:
- Size: 211.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71045e1f9d3faed5cd93bd8f0c259942c00d4d117f86f5a004868751a10442a5
|
|
| MD5 |
a40dffe9ba4b6909d3a72439673221d3
|
|
| BLAKE2b-256 |
eb5f69066b9abfda1021a01150bced12d02a48905049876dd95e4fc334c8ae7f
|
File details
Details for the file dglz-0.1.10.post5-py3-none-any.whl.
File metadata
- Download URL: dglz-0.1.10.post5-py3-none-any.whl
- Upload date:
- Size: 234.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf681fb30b680af22dbd969d9f2436cb4a7af3334c89fdacc9962ea4521ccb74
|
|
| MD5 |
6e98a1c0dde767a6f484145d7be215ce
|
|
| BLAKE2b-256 |
8ffe1d9efac22b328f93160abb6a0755347cd0554a32da18c4a97e90116ef856
|