Skip to content

Latest commit

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition (HDGNet)

This repository provides the official implementation of HDGNet, introduced in our paper:

Hanyu Li and Byung Hyung Kim, "Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition," IEEE Transactions on Instrumentation and Measurement, vol.74, 2025. [pdf][link]

HDGNet is a hierarchical dynamic graph learning framework that models local and global brain interactions to capture emotion-related patterns across multiple scales effectively.

Dataset

  • SEED: 3 class (neutral, positive, negative)
  • SEED-IV: 4 class (happiness, sadness, fear, neutral)
  • SEED-V: 5 class (disgust, fear, sad, neutral, happy)
  • DREAMER:2 class (valence, arousal)

Load Dataset (Offline Transform, Feature Extraction ...)

Package:

  • SEEDFeatureDataset()
  • SEEDIVFeatureDataset()
  • SEEDVFeatureDataset()
  • DREAMERDataset()

All Dataset loading method are based and extended on TorchEEG : https://github.com/torcheeg/torcheeg

  • Segmentation (Raw Signal)
  • Segmentation + DE (Differential Entropy)
  • Segmentation + PSD (Power Spectral Density)
dataset objectSeg (channels, window)Seg + DE (channels, bands)Seg + PSD (channels, bands)Feature origin
SEEDSEEDFeatureDataset()-(62, 5)-public
SEED-IVSEEDIVFeatureDataset()-(62, 5)-public
SEED-VSEEDVFeatureDataset()-(62, 5)-public
DREAMERDREAMERDataset()(14, 128)-(14, 3)private

EEG channels(num_electrodes), Segment size(Window size)

Feature origin:public(the public feature provided by dataset) and private (features extracted by this code )

Split Dataset

train and test data are split by nest cross validation method for reliable generalization evaluation.

SEEDSEED-IVSEED-VDREAMER
inner loop2223
outer loop5333

Our Method

Our Method

1) Five local-global-graph definitions

Our Method

For the SEED, SEED-IV, and SEED-V datasets, which are all 62-channel datasets, the same mask matrix and region list are used in the code.The DREAMER dataset uses another set of mask matrix and region list. Let's take the General graph definition as an example

mask matrixregion list
SEEDSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-IVSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-VSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
DREAMERDREAMER_GENERAL_REGION_MASK_MATRIXDREAMER_GENERAL_REGION_LIST

For each graph definition, we need to predefine for each dataset. For example, we run the code on the SEED dataset using the General graph definition method.

python-mHDGNet--dataset_name=SEED--num_classes=3--n_outer=5--n_inner=2--graph_defi=GENERAL

we run the code on the DREAMER dataset using the General graph definition method.

python-mHDGNet--dataset_name=DREAMER--num_classes=2--threshold=4.0--emotion_key=valence--n_outer=3--n_inner=3--graph_defi=GENERAL--num_electrodes=14--in_channels=3--hid_channels=3--out_channels=3

the "GENERAL" in the "graph_defi=GENERAL" can be replaced with "FRONTAL", "HEMISPHERE", "NEIGHBOR", "POSTERIOR", then you can use the other four graph definitions.

2) Required dependencies

create environment

conda create -n eegpython3.7 python=3.7
conda install pytorch==1.11.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch

you can copy follow sentence into a txt file "environment.txt",

h5py==3.7.0
joblib==1.1.1
lmdb==1.3.0
pandas==1.3.5
scikit_learn==1.0.2
scipy==1.7.3
tqdm==4.64.1

Type pip install -r environment.txt at the command line and it will automatically pip install all packages listed in the environment.txt file.

Moreover, you also need to install the pytorch Geometric (Pyg), I recommend you to use conda install pyg -c pyg.

Another thing you need to be aware of is you need to tell the Python interpreter that this directory is the root of your source code by setting the environment variable by follow code:

windows: set PYTHONPATH=your_directory/Affectiv_AI/;%PYTHONPATH%
linux: export PYTHONPATH=your_directory/Affectiv_AI/:$PYTHONPATH

3) Dataset storage

Please place the public dataset in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_in".

4) Code demo

Please make sure you have followed the steps in the 2) and 3) to finsih the installation of required dependencies and datasets storage.

Then, you need to go to the directory where the HDGNet.py file is located.

Some examples.

SEED

python -m HDGNet --dataset_name=SEED --num_classes=3 --n_outer=5 --n_inner=2 --graph_defi=POSTERIOR

SEED-IV

python -m HDGNet --dataset_name=SEED-IV --num_classes=4 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

SEED-V

python -m HDGNet --dataset_name=SEED-V --num_classes=5 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

DREAMER

  • valance
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=valence --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3
  • arousal
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=arousal --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3

Results

ResultsResults

The output result is in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_out".

Cite

Please cite our paper if you use our code in your own work:

@article{li2025hdgnet,
title={Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition},
author={Li, Hanyu and Kim, Byung Hyung},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={74},
year={2025}
}

About

Hierarchical Dynamic Local-Global-Graph Representation Learning

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - affctivai/HDGNet: Hierarchical Dynamic Local-Global-Graph Representation Learning · GitHub
Skip to content

Latest commit

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition (HDGNet)

This repository provides the official implementation of HDGNet, introduced in our paper:

Hanyu Li and Byung Hyung Kim, "Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition," IEEE Transactions on Instrumentation and Measurement, vol.74, 2025. [pdf][link]

HDGNet is a hierarchical dynamic graph learning framework that models local and global brain interactions to capture emotion-related patterns across multiple scales effectively.

Dataset

  • SEED: 3 class (neutral, positive, negative)
  • SEED-IV: 4 class (happiness, sadness, fear, neutral)
  • SEED-V: 5 class (disgust, fear, sad, neutral, happy)
  • DREAMER:2 class (valence, arousal)

Load Dataset (Offline Transform, Feature Extraction ...)

Package:

  • SEEDFeatureDataset()
  • SEEDIVFeatureDataset()
  • SEEDVFeatureDataset()
  • DREAMERDataset()

All Dataset loading method are based and extended on TorchEEG : https://github.com/torcheeg/torcheeg

  • Segmentation (Raw Signal)
  • Segmentation + DE (Differential Entropy)
  • Segmentation + PSD (Power Spectral Density)
dataset objectSeg (channels, window)Seg + DE (channels, bands)Seg + PSD (channels, bands)Feature origin
SEEDSEEDFeatureDataset()-(62, 5)-public
SEED-IVSEEDIVFeatureDataset()-(62, 5)-public
SEED-VSEEDVFeatureDataset()-(62, 5)-public
DREAMERDREAMERDataset()(14, 128)-(14, 3)private

EEG channels(num_electrodes), Segment size(Window size)

Feature origin:public(the public feature provided by dataset) and private (features extracted by this code )

Split Dataset

train and test data are split by nest cross validation method for reliable generalization evaluation.

SEEDSEED-IVSEED-VDREAMER
inner loop2223
outer loop5333

Our Method

Our Method

1) Five local-global-graph definitions

Our Method

For the SEED, SEED-IV, and SEED-V datasets, which are all 62-channel datasets, the same mask matrix and region list are used in the code.The DREAMER dataset uses another set of mask matrix and region list. Let's take the General graph definition as an example

mask matrixregion list
SEEDSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-IVSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-VSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
DREAMERDREAMER_GENERAL_REGION_MASK_MATRIXDREAMER_GENERAL_REGION_LIST

For each graph definition, we need to predefine for each dataset. For example, we run the code on the SEED dataset using the General graph definition method.

python-mHDGNet--dataset_name=SEED--num_classes=3--n_outer=5--n_inner=2--graph_defi=GENERAL

we run the code on the DREAMER dataset using the General graph definition method.

python-mHDGNet--dataset_name=DREAMER--num_classes=2--threshold=4.0--emotion_key=valence--n_outer=3--n_inner=3--graph_defi=GENERAL--num_electrodes=14--in_channels=3--hid_channels=3--out_channels=3

the "GENERAL" in the "graph_defi=GENERAL" can be replaced with "FRONTAL", "HEMISPHERE", "NEIGHBOR", "POSTERIOR", then you can use the other four graph definitions.

2) Required dependencies

create environment

conda create -n eegpython3.7 python=3.7
conda install pytorch==1.11.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch

you can copy follow sentence into a txt file "environment.txt",

h5py==3.7.0
joblib==1.1.1
lmdb==1.3.0
pandas==1.3.5
scikit_learn==1.0.2
scipy==1.7.3
tqdm==4.64.1

Type pip install -r environment.txt at the command line and it will automatically pip install all packages listed in the environment.txt file.

Moreover, you also need to install the pytorch Geometric (Pyg), I recommend you to use conda install pyg -c pyg.

Another thing you need to be aware of is you need to tell the Python interpreter that this directory is the root of your source code by setting the environment variable by follow code:

windows: set PYTHONPATH=your_directory/Affectiv_AI/;%PYTHONPATH%
linux: export PYTHONPATH=your_directory/Affectiv_AI/:$PYTHONPATH

3) Dataset storage

Please place the public dataset in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_in".

4) Code demo

Please make sure you have followed the steps in the 2) and 3) to finsih the installation of required dependencies and datasets storage.

Then, you need to go to the directory where the HDGNet.py file is located.

Some examples.

SEED

python -m HDGNet --dataset_name=SEED --num_classes=3 --n_outer=5 --n_inner=2 --graph_defi=POSTERIOR

SEED-IV

python -m HDGNet --dataset_name=SEED-IV --num_classes=4 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

SEED-V

python -m HDGNet --dataset_name=SEED-V --num_classes=5 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

DREAMER

  • valance
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=valence --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3
  • arousal
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=arousal --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3

Results

ResultsResults

The output result is in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_out".

Cite

Please cite our paper if you use our code in your own work:

@article{li2025hdgnet,
title={Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition},
author={Li, Hanyu and Kim, Byung Hyung},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={74},
year={2025}
}

About

Hierarchical Dynamic Local-Global-Graph Representation Learning

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - affctivai/HDGNet: Hierarchical Dynamic Local-Global-Graph Representation Learning · GitHub
Skip to content

Latest commit

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition (HDGNet)

This repository provides the official implementation of HDGNet, introduced in our paper:

Hanyu Li and Byung Hyung Kim, "Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition," IEEE Transactions on Instrumentation and Measurement, vol.74, 2025. [pdf][link]

HDGNet is a hierarchical dynamic graph learning framework that models local and global brain interactions to capture emotion-related patterns across multiple scales effectively.

Dataset

  • SEED: 3 class (neutral, positive, negative)
  • SEED-IV: 4 class (happiness, sadness, fear, neutral)
  • SEED-V: 5 class (disgust, fear, sad, neutral, happy)
  • DREAMER:2 class (valence, arousal)

Load Dataset (Offline Transform, Feature Extraction ...)

Package:

  • SEEDFeatureDataset()
  • SEEDIVFeatureDataset()
  • SEEDVFeatureDataset()
  • DREAMERDataset()

All Dataset loading method are based and extended on TorchEEG : https://github.com/torcheeg/torcheeg

  • Segmentation (Raw Signal)
  • Segmentation + DE (Differential Entropy)
  • Segmentation + PSD (Power Spectral Density)
dataset objectSeg (channels, window)Seg + DE (channels, bands)Seg + PSD (channels, bands)Feature origin
SEEDSEEDFeatureDataset()-(62, 5)-public
SEED-IVSEEDIVFeatureDataset()-(62, 5)-public
SEED-VSEEDVFeatureDataset()-(62, 5)-public
DREAMERDREAMERDataset()(14, 128)-(14, 3)private

EEG channels(num_electrodes), Segment size(Window size)

Feature origin:public(the public feature provided by dataset) and private (features extracted by this code )

Split Dataset

train and test data are split by nest cross validation method for reliable generalization evaluation.

SEEDSEED-IVSEED-VDREAMER
inner loop2223
outer loop5333

Our Method

Our Method

1) Five local-global-graph definitions

Our Method

For the SEED, SEED-IV, and SEED-V datasets, which are all 62-channel datasets, the same mask matrix and region list are used in the code.The DREAMER dataset uses another set of mask matrix and region list. Let's take the General graph definition as an example

mask matrixregion list
SEEDSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-IVSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-VSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
DREAMERDREAMER_GENERAL_REGION_MASK_MATRIXDREAMER_GENERAL_REGION_LIST

For each graph definition, we need to predefine for each dataset. For example, we run the code on the SEED dataset using the General graph definition method.

python-mHDGNet--dataset_name=SEED--num_classes=3--n_outer=5--n_inner=2--graph_defi=GENERAL

we run the code on the DREAMER dataset using the General graph definition method.

python-mHDGNet--dataset_name=DREAMER--num_classes=2--threshold=4.0--emotion_key=valence--n_outer=3--n_inner=3--graph_defi=GENERAL--num_electrodes=14--in_channels=3--hid_channels=3--out_channels=3

the "GENERAL" in the "graph_defi=GENERAL" can be replaced with "FRONTAL", "HEMISPHERE", "NEIGHBOR", "POSTERIOR", then you can use the other four graph definitions.

2) Required dependencies

create environment

conda create -n eegpython3.7 python=3.7
conda install pytorch==1.11.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch

you can copy follow sentence into a txt file "environment.txt",

h5py==3.7.0
joblib==1.1.1
lmdb==1.3.0
pandas==1.3.5
scikit_learn==1.0.2
scipy==1.7.3
tqdm==4.64.1

Type pip install -r environment.txt at the command line and it will automatically pip install all packages listed in the environment.txt file.

Moreover, you also need to install the pytorch Geometric (Pyg), I recommend you to use conda install pyg -c pyg.

Another thing you need to be aware of is you need to tell the Python interpreter that this directory is the root of your source code by setting the environment variable by follow code:

windows: set PYTHONPATH=your_directory/Affectiv_AI/;%PYTHONPATH%
linux: export PYTHONPATH=your_directory/Affectiv_AI/:$PYTHONPATH

3) Dataset storage

Please place the public dataset in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_in".

4) Code demo

Please make sure you have followed the steps in the 2) and 3) to finsih the installation of required dependencies and datasets storage.

Then, you need to go to the directory where the HDGNet.py file is located.

Some examples.

SEED

python -m HDGNet --dataset_name=SEED --num_classes=3 --n_outer=5 --n_inner=2 --graph_defi=POSTERIOR

SEED-IV

python -m HDGNet --dataset_name=SEED-IV --num_classes=4 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

SEED-V

python -m HDGNet --dataset_name=SEED-V --num_classes=5 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

DREAMER

  • valance
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=valence --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3
  • arousal
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=arousal --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3

Results

ResultsResults

The output result is in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_out".

Cite

Please cite our paper if you use our code in your own work:

@article{li2025hdgnet,
title={Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition},
author={Li, Hanyu and Kim, Byung Hyung},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={74},
year={2025}
}

About

Hierarchical Dynamic Local-Global-Graph Representation Learning

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - affctivai/HDGNet: Hierarchical Dynamic Local-Global-Graph Representation Learning · GitHub
Skip to content

Latest commit

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition (HDGNet)

This repository provides the official implementation of HDGNet, introduced in our paper:

Hanyu Li and Byung Hyung Kim, "Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition," IEEE Transactions on Instrumentation and Measurement, vol.74, 2025. [pdf][link]

HDGNet is a hierarchical dynamic graph learning framework that models local and global brain interactions to capture emotion-related patterns across multiple scales effectively.

Dataset

  • SEED: 3 class (neutral, positive, negative)
  • SEED-IV: 4 class (happiness, sadness, fear, neutral)
  • SEED-V: 5 class (disgust, fear, sad, neutral, happy)
  • DREAMER:2 class (valence, arousal)

Load Dataset (Offline Transform, Feature Extraction ...)

Package:

  • SEEDFeatureDataset()
  • SEEDIVFeatureDataset()
  • SEEDVFeatureDataset()
  • DREAMERDataset()

All Dataset loading method are based and extended on TorchEEG : https://github.com/torcheeg/torcheeg

  • Segmentation (Raw Signal)
  • Segmentation + DE (Differential Entropy)
  • Segmentation + PSD (Power Spectral Density)
dataset objectSeg (channels, window)Seg + DE (channels, bands)Seg + PSD (channels, bands)Feature origin
SEEDSEEDFeatureDataset()-(62, 5)-public
SEED-IVSEEDIVFeatureDataset()-(62, 5)-public
SEED-VSEEDVFeatureDataset()-(62, 5)-public
DREAMERDREAMERDataset()(14, 128)-(14, 3)private

EEG channels(num_electrodes), Segment size(Window size)

Feature origin:public(the public feature provided by dataset) and private (features extracted by this code )

Split Dataset

train and test data are split by nest cross validation method for reliable generalization evaluation.

SEEDSEED-IVSEED-VDREAMER
inner loop2223
outer loop5333

Our Method

Our Method

1) Five local-global-graph definitions

Our Method

For the SEED, SEED-IV, and SEED-V datasets, which are all 62-channel datasets, the same mask matrix and region list are used in the code.The DREAMER dataset uses another set of mask matrix and region list. Let's take the General graph definition as an example

mask matrixregion list
SEEDSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-IVSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-VSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
DREAMERDREAMER_GENERAL_REGION_MASK_MATRIXDREAMER_GENERAL_REGION_LIST

For each graph definition, we need to predefine for each dataset. For example, we run the code on the SEED dataset using the General graph definition method.

python-mHDGNet--dataset_name=SEED--num_classes=3--n_outer=5--n_inner=2--graph_defi=GENERAL

we run the code on the DREAMER dataset using the General graph definition method.

python-mHDGNet--dataset_name=DREAMER--num_classes=2--threshold=4.0--emotion_key=valence--n_outer=3--n_inner=3--graph_defi=GENERAL--num_electrodes=14--in_channels=3--hid_channels=3--out_channels=3

the "GENERAL" in the "graph_defi=GENERAL" can be replaced with "FRONTAL", "HEMISPHERE", "NEIGHBOR", "POSTERIOR", then you can use the other four graph definitions.

2) Required dependencies

create environment

conda create -n eegpython3.7 python=3.7
conda install pytorch==1.11.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch

you can copy follow sentence into a txt file "environment.txt",

h5py==3.7.0
joblib==1.1.1
lmdb==1.3.0
pandas==1.3.5
scikit_learn==1.0.2
scipy==1.7.3
tqdm==4.64.1

Type pip install -r environment.txt at the command line and it will automatically pip install all packages listed in the environment.txt file.

Moreover, you also need to install the pytorch Geometric (Pyg), I recommend you to use conda install pyg -c pyg.

Another thing you need to be aware of is you need to tell the Python interpreter that this directory is the root of your source code by setting the environment variable by follow code:

windows: set PYTHONPATH=your_directory/Affectiv_AI/;%PYTHONPATH%
linux: export PYTHONPATH=your_directory/Affectiv_AI/:$PYTHONPATH

3) Dataset storage

Please place the public dataset in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_in".

4) Code demo

Please make sure you have followed the steps in the 2) and 3) to finsih the installation of required dependencies and datasets storage.

Then, you need to go to the directory where the HDGNet.py file is located.

Some examples.

SEED

python -m HDGNet --dataset_name=SEED --num_classes=3 --n_outer=5 --n_inner=2 --graph_defi=POSTERIOR

SEED-IV

python -m HDGNet --dataset_name=SEED-IV --num_classes=4 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

SEED-V

python -m HDGNet --dataset_name=SEED-V --num_classes=5 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

DREAMER

  • valance
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=valence --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3
  • arousal
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=arousal --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3

Results

ResultsResults

The output result is in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_out".

Cite

Please cite our paper if you use our code in your own work:

@article{li2025hdgnet,
title={Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition},
author={Li, Hanyu and Kim, Byung Hyung},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={74},
year={2025}
}

About

Hierarchical Dynamic Local-Global-Graph Representation Learning

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - affctivai/HDGNet: Hierarchical Dynamic Local-Global-Graph Representation Learning · GitHub
Skip to content

Latest commit

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition (HDGNet)

This repository provides the official implementation of HDGNet, introduced in our paper:

Hanyu Li and Byung Hyung Kim, "Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition," IEEE Transactions on Instrumentation and Measurement, vol.74, 2025. [pdf][link]

HDGNet is a hierarchical dynamic graph learning framework that models local and global brain interactions to capture emotion-related patterns across multiple scales effectively.

Dataset

  • SEED: 3 class (neutral, positive, negative)
  • SEED-IV: 4 class (happiness, sadness, fear, neutral)
  • SEED-V: 5 class (disgust, fear, sad, neutral, happy)
  • DREAMER:2 class (valence, arousal)

Load Dataset (Offline Transform, Feature Extraction ...)

Package:

  • SEEDFeatureDataset()
  • SEEDIVFeatureDataset()
  • SEEDVFeatureDataset()
  • DREAMERDataset()

All Dataset loading method are based and extended on TorchEEG : https://github.com/torcheeg/torcheeg

  • Segmentation (Raw Signal)
  • Segmentation + DE (Differential Entropy)
  • Segmentation + PSD (Power Spectral Density)
dataset objectSeg (channels, window)Seg + DE (channels, bands)Seg + PSD (channels, bands)Feature origin
SEEDSEEDFeatureDataset()-(62, 5)-public
SEED-IVSEEDIVFeatureDataset()-(62, 5)-public
SEED-VSEEDVFeatureDataset()-(62, 5)-public
DREAMERDREAMERDataset()(14, 128)-(14, 3)private

EEG channels(num_electrodes), Segment size(Window size)

Feature origin:public(the public feature provided by dataset) and private (features extracted by this code )

Split Dataset

train and test data are split by nest cross validation method for reliable generalization evaluation.

SEEDSEED-IVSEED-VDREAMER
inner loop2223
outer loop5333

Our Method

Our Method

1) Five local-global-graph definitions

Our Method

For the SEED, SEED-IV, and SEED-V datasets, which are all 62-channel datasets, the same mask matrix and region list are used in the code.The DREAMER dataset uses another set of mask matrix and region list. Let's take the General graph definition as an example

mask matrixregion list
SEEDSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-IVSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-VSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
DREAMERDREAMER_GENERAL_REGION_MASK_MATRIXDREAMER_GENERAL_REGION_LIST

For each graph definition, we need to predefine for each dataset. For example, we run the code on the SEED dataset using the General graph definition method.

python-mHDGNet--dataset_name=SEED--num_classes=3--n_outer=5--n_inner=2--graph_defi=GENERAL

we run the code on the DREAMER dataset using the General graph definition method.

python-mHDGNet--dataset_name=DREAMER--num_classes=2--threshold=4.0--emotion_key=valence--n_outer=3--n_inner=3--graph_defi=GENERAL--num_electrodes=14--in_channels=3--hid_channels=3--out_channels=3

the "GENERAL" in the "graph_defi=GENERAL" can be replaced with "FRONTAL", "HEMISPHERE", "NEIGHBOR", "POSTERIOR", then you can use the other four graph definitions.

2) Required dependencies

create environment

conda create -n eegpython3.7 python=3.7
conda install pytorch==1.11.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch

you can copy follow sentence into a txt file "environment.txt",

h5py==3.7.0
joblib==1.1.1
lmdb==1.3.0
pandas==1.3.5
scikit_learn==1.0.2
scipy==1.7.3
tqdm==4.64.1

Type pip install -r environment.txt at the command line and it will automatically pip install all packages listed in the environment.txt file.

Moreover, you also need to install the pytorch Geometric (Pyg), I recommend you to use conda install pyg -c pyg.

Another thing you need to be aware of is you need to tell the Python interpreter that this directory is the root of your source code by setting the environment variable by follow code:

windows: set PYTHONPATH=your_directory/Affectiv_AI/;%PYTHONPATH%
linux: export PYTHONPATH=your_directory/Affectiv_AI/:$PYTHONPATH

3) Dataset storage

Please place the public dataset in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_in".

4) Code demo

Please make sure you have followed the steps in the 2) and 3) to finsih the installation of required dependencies and datasets storage.

Then, you need to go to the directory where the HDGNet.py file is located.

Some examples.

SEED

python -m HDGNet --dataset_name=SEED --num_classes=3 --n_outer=5 --n_inner=2 --graph_defi=POSTERIOR

SEED-IV

python -m HDGNet --dataset_name=SEED-IV --num_classes=4 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

SEED-V

python -m HDGNet --dataset_name=SEED-V --num_classes=5 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

DREAMER

  • valance
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=valence --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3
  • arousal
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=arousal --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3

Results

ResultsResults

The output result is in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_out".

Cite

Please cite our paper if you use our code in your own work:

@article{li2025hdgnet,
title={Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition},
author={Li, Hanyu and Kim, Byung Hyung},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={74},
year={2025}
}

About

Hierarchical Dynamic Local-Global-Graph Representation Learning

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - affctivai/HDGNet: Hierarchical Dynamic Local-Global-Graph Representation Learning · GitHub
Skip to content

Latest commit

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition (HDGNet)

This repository provides the official implementation of HDGNet, introduced in our paper:

Hanyu Li and Byung Hyung Kim, "Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition," IEEE Transactions on Instrumentation and Measurement, vol.74, 2025. [pdf][link]

HDGNet is a hierarchical dynamic graph learning framework that models local and global brain interactions to capture emotion-related patterns across multiple scales effectively.

Dataset

  • SEED: 3 class (neutral, positive, negative)
  • SEED-IV: 4 class (happiness, sadness, fear, neutral)
  • SEED-V: 5 class (disgust, fear, sad, neutral, happy)
  • DREAMER:2 class (valence, arousal)

Load Dataset (Offline Transform, Feature Extraction ...)

Package:

  • SEEDFeatureDataset()
  • SEEDIVFeatureDataset()
  • SEEDVFeatureDataset()
  • DREAMERDataset()

All Dataset loading method are based and extended on TorchEEG : https://github.com/torcheeg/torcheeg

  • Segmentation (Raw Signal)
  • Segmentation + DE (Differential Entropy)
  • Segmentation + PSD (Power Spectral Density)
dataset objectSeg (channels, window)Seg + DE (channels, bands)Seg + PSD (channels, bands)Feature origin
SEEDSEEDFeatureDataset()-(62, 5)-public
SEED-IVSEEDIVFeatureDataset()-(62, 5)-public
SEED-VSEEDVFeatureDataset()-(62, 5)-public
DREAMERDREAMERDataset()(14, 128)-(14, 3)private

EEG channels(num_electrodes), Segment size(Window size)

Feature origin:public(the public feature provided by dataset) and private (features extracted by this code )

Split Dataset

train and test data are split by nest cross validation method for reliable generalization evaluation.

SEEDSEED-IVSEED-VDREAMER
inner loop2223
outer loop5333

Our Method

Our Method

1) Five local-global-graph definitions

Our Method

For the SEED, SEED-IV, and SEED-V datasets, which are all 62-channel datasets, the same mask matrix and region list are used in the code.The DREAMER dataset uses another set of mask matrix and region list. Let's take the General graph definition as an example

mask matrixregion list
SEEDSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-IVSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-VSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
DREAMERDREAMER_GENERAL_REGION_MASK_MATRIXDREAMER_GENERAL_REGION_LIST

For each graph definition, we need to predefine for each dataset. For example, we run the code on the SEED dataset using the General graph definition method.

python-mHDGNet--dataset_name=SEED--num_classes=3--n_outer=5--n_inner=2--graph_defi=GENERAL

we run the code on the DREAMER dataset using the General graph definition method.

python-mHDGNet--dataset_name=DREAMER--num_classes=2--threshold=4.0--emotion_key=valence--n_outer=3--n_inner=3--graph_defi=GENERAL--num_electrodes=14--in_channels=3--hid_channels=3--out_channels=3

the "GENERAL" in the "graph_defi=GENERAL" can be replaced with "FRONTAL", "HEMISPHERE", "NEIGHBOR", "POSTERIOR", then you can use the other four graph definitions.

2) Required dependencies

create environment

conda create -n eegpython3.7 python=3.7
conda install pytorch==1.11.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch

you can copy follow sentence into a txt file "environment.txt",

h5py==3.7.0
joblib==1.1.1
lmdb==1.3.0
pandas==1.3.5
scikit_learn==1.0.2
scipy==1.7.3
tqdm==4.64.1

Type pip install -r environment.txt at the command line and it will automatically pip install all packages listed in the environment.txt file.

Moreover, you also need to install the pytorch Geometric (Pyg), I recommend you to use conda install pyg -c pyg.

Another thing you need to be aware of is you need to tell the Python interpreter that this directory is the root of your source code by setting the environment variable by follow code:

windows: set PYTHONPATH=your_directory/Affectiv_AI/;%PYTHONPATH%
linux: export PYTHONPATH=your_directory/Affectiv_AI/:$PYTHONPATH

3) Dataset storage

Please place the public dataset in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_in".

4) Code demo

Please make sure you have followed the steps in the 2) and 3) to finsih the installation of required dependencies and datasets storage.

Then, you need to go to the directory where the HDGNet.py file is located.

Some examples.

SEED

python -m HDGNet --dataset_name=SEED --num_classes=3 --n_outer=5 --n_inner=2 --graph_defi=POSTERIOR

SEED-IV

python -m HDGNet --dataset_name=SEED-IV --num_classes=4 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

SEED-V

python -m HDGNet --dataset_name=SEED-V --num_classes=5 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

DREAMER

  • valance
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=valence --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3
  • arousal
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=arousal --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3

Results

ResultsResults

The output result is in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_out".

Cite

Please cite our paper if you use our code in your own work:

@article{li2025hdgnet,
title={Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition},
author={Li, Hanyu and Kim, Byung Hyung},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={74},
year={2025}
}

About

Hierarchical Dynamic Local-Global-Graph Representation Learning

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - affctivai/HDGNet: Hierarchical Dynamic Local-Global-Graph Representation Learning · GitHub
Skip to content

Latest commit

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition (HDGNet)

This repository provides the official implementation of HDGNet, introduced in our paper:

Hanyu Li and Byung Hyung Kim, "Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition," IEEE Transactions on Instrumentation and Measurement, vol.74, 2025. [pdf][link]

HDGNet is a hierarchical dynamic graph learning framework that models local and global brain interactions to capture emotion-related patterns across multiple scales effectively.

Dataset

  • SEED: 3 class (neutral, positive, negative)
  • SEED-IV: 4 class (happiness, sadness, fear, neutral)
  • SEED-V: 5 class (disgust, fear, sad, neutral, happy)
  • DREAMER:2 class (valence, arousal)

Load Dataset (Offline Transform, Feature Extraction ...)

Package:

  • SEEDFeatureDataset()
  • SEEDIVFeatureDataset()
  • SEEDVFeatureDataset()
  • DREAMERDataset()

All Dataset loading method are based and extended on TorchEEG : https://github.com/torcheeg/torcheeg

  • Segmentation (Raw Signal)
  • Segmentation + DE (Differential Entropy)
  • Segmentation + PSD (Power Spectral Density)
dataset objectSeg (channels, window)Seg + DE (channels, bands)Seg + PSD (channels, bands)Feature origin
SEEDSEEDFeatureDataset()-(62, 5)-public
SEED-IVSEEDIVFeatureDataset()-(62, 5)-public
SEED-VSEEDVFeatureDataset()-(62, 5)-public
DREAMERDREAMERDataset()(14, 128)-(14, 3)private

EEG channels(num_electrodes), Segment size(Window size)

Feature origin:public(the public feature provided by dataset) and private (features extracted by this code )

Split Dataset

train and test data are split by nest cross validation method for reliable generalization evaluation.

SEEDSEED-IVSEED-VDREAMER
inner loop2223
outer loop5333

Our Method

Our Method

1) Five local-global-graph definitions

Our Method

For the SEED, SEED-IV, and SEED-V datasets, which are all 62-channel datasets, the same mask matrix and region list are used in the code.The DREAMER dataset uses another set of mask matrix and region list. Let's take the General graph definition as an example

mask matrixregion list
SEEDSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-IVSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-VSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
DREAMERDREAMER_GENERAL_REGION_MASK_MATRIXDREAMER_GENERAL_REGION_LIST

For each graph definition, we need to predefine for each dataset. For example, we run the code on the SEED dataset using the General graph definition method.

python-mHDGNet--dataset_name=SEED--num_classes=3--n_outer=5--n_inner=2--graph_defi=GENERAL

we run the code on the DREAMER dataset using the General graph definition method.

python-mHDGNet--dataset_name=DREAMER--num_classes=2--threshold=4.0--emotion_key=valence--n_outer=3--n_inner=3--graph_defi=GENERAL--num_electrodes=14--in_channels=3--hid_channels=3--out_channels=3

the "GENERAL" in the "graph_defi=GENERAL" can be replaced with "FRONTAL", "HEMISPHERE", "NEIGHBOR", "POSTERIOR", then you can use the other four graph definitions.

2) Required dependencies

create environment

conda create -n eegpython3.7 python=3.7
conda install pytorch==1.11.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch

you can copy follow sentence into a txt file "environment.txt",

h5py==3.7.0
joblib==1.1.1
lmdb==1.3.0
pandas==1.3.5
scikit_learn==1.0.2
scipy==1.7.3
tqdm==4.64.1

Type pip install -r environment.txt at the command line and it will automatically pip install all packages listed in the environment.txt file.

Moreover, you also need to install the pytorch Geometric (Pyg), I recommend you to use conda install pyg -c pyg.

Another thing you need to be aware of is you need to tell the Python interpreter that this directory is the root of your source code by setting the environment variable by follow code:

windows: set PYTHONPATH=your_directory/Affectiv_AI/;%PYTHONPATH%
linux: export PYTHONPATH=your_directory/Affectiv_AI/:$PYTHONPATH

3) Dataset storage

Please place the public dataset in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_in".

4) Code demo

Please make sure you have followed the steps in the 2) and 3) to finsih the installation of required dependencies and datasets storage.

Then, you need to go to the directory where the HDGNet.py file is located.

Some examples.

SEED

python -m HDGNet --dataset_name=SEED --num_classes=3 --n_outer=5 --n_inner=2 --graph_defi=POSTERIOR

SEED-IV

python -m HDGNet --dataset_name=SEED-IV --num_classes=4 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

SEED-V

python -m HDGNet --dataset_name=SEED-V --num_classes=5 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

DREAMER

  • valance
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=valence --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3
  • arousal
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=arousal --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3

Results

ResultsResults

The output result is in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_out".

Cite

Please cite our paper if you use our code in your own work:

@article{li2025hdgnet,
title={Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition},
author={Li, Hanyu and Kim, Byung Hyung},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={74},
year={2025}
}

About

Hierarchical Dynamic Local-Global-Graph Representation Learning

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - affctivai/HDGNet: Hierarchical Dynamic Local-Global-Graph Representation Learning · GitHub
Skip to content

Latest commit

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition (HDGNet)

This repository provides the official implementation of HDGNet, introduced in our paper:

Hanyu Li and Byung Hyung Kim, "Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition," IEEE Transactions on Instrumentation and Measurement, vol.74, 2025. [pdf][link]

HDGNet is a hierarchical dynamic graph learning framework that models local and global brain interactions to capture emotion-related patterns across multiple scales effectively.

Dataset

  • SEED: 3 class (neutral, positive, negative)
  • SEED-IV: 4 class (happiness, sadness, fear, neutral)
  • SEED-V: 5 class (disgust, fear, sad, neutral, happy)
  • DREAMER:2 class (valence, arousal)

Load Dataset (Offline Transform, Feature Extraction ...)

Package:

  • SEEDFeatureDataset()
  • SEEDIVFeatureDataset()
  • SEEDVFeatureDataset()
  • DREAMERDataset()

All Dataset loading method are based and extended on TorchEEG : https://github.com/torcheeg/torcheeg

  • Segmentation (Raw Signal)
  • Segmentation + DE (Differential Entropy)
  • Segmentation + PSD (Power Spectral Density)
dataset objectSeg (channels, window)Seg + DE (channels, bands)Seg + PSD (channels, bands)Feature origin
SEEDSEEDFeatureDataset()-(62, 5)-public
SEED-IVSEEDIVFeatureDataset()-(62, 5)-public
SEED-VSEEDVFeatureDataset()-(62, 5)-public
DREAMERDREAMERDataset()(14, 128)-(14, 3)private

EEG channels(num_electrodes), Segment size(Window size)

Feature origin:public(the public feature provided by dataset) and private (features extracted by this code )

Split Dataset

train and test data are split by nest cross validation method for reliable generalization evaluation.

SEEDSEED-IVSEED-VDREAMER
inner loop2223
outer loop5333

Our Method

Our Method

1) Five local-global-graph definitions

Our Method

For the SEED, SEED-IV, and SEED-V datasets, which are all 62-channel datasets, the same mask matrix and region list are used in the code.The DREAMER dataset uses another set of mask matrix and region list. Let's take the General graph definition as an example

mask matrixregion list
SEEDSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-IVSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
SEED-VSEED_GENERAL_REGION_MASK_MATRIXSEED_GENERAL_REGION_LIST
DREAMERDREAMER_GENERAL_REGION_MASK_MATRIXDREAMER_GENERAL_REGION_LIST

For each graph definition, we need to predefine for each dataset. For example, we run the code on the SEED dataset using the General graph definition method.

python-mHDGNet--dataset_name=SEED--num_classes=3--n_outer=5--n_inner=2--graph_defi=GENERAL

we run the code on the DREAMER dataset using the General graph definition method.

python-mHDGNet--dataset_name=DREAMER--num_classes=2--threshold=4.0--emotion_key=valence--n_outer=3--n_inner=3--graph_defi=GENERAL--num_electrodes=14--in_channels=3--hid_channels=3--out_channels=3

the "GENERAL" in the "graph_defi=GENERAL" can be replaced with "FRONTAL", "HEMISPHERE", "NEIGHBOR", "POSTERIOR", then you can use the other four graph definitions.

2) Required dependencies

create environment

conda create -n eegpython3.7 python=3.7
conda install pytorch==1.11.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch

you can copy follow sentence into a txt file "environment.txt",

h5py==3.7.0
joblib==1.1.1
lmdb==1.3.0
pandas==1.3.5
scikit_learn==1.0.2
scipy==1.7.3
tqdm==4.64.1

Type pip install -r environment.txt at the command line and it will automatically pip install all packages listed in the environment.txt file.

Moreover, you also need to install the pytorch Geometric (Pyg), I recommend you to use conda install pyg -c pyg.

Another thing you need to be aware of is you need to tell the Python interpreter that this directory is the root of your source code by setting the environment variable by follow code:

windows: set PYTHONPATH=your_directory/Affectiv_AI/;%PYTHONPATH%
linux: export PYTHONPATH=your_directory/Affectiv_AI/:$PYTHONPATH

3) Dataset storage

Please place the public dataset in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_in".

4) Code demo

Please make sure you have followed the steps in the 2) and 3) to finsih the installation of required dependencies and datasets storage.

Then, you need to go to the directory where the HDGNet.py file is located.

Some examples.

SEED

python -m HDGNet --dataset_name=SEED --num_classes=3 --n_outer=5 --n_inner=2 --graph_defi=POSTERIOR

SEED-IV

python -m HDGNet --dataset_name=SEED-IV --num_classes=4 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

SEED-V

python -m HDGNet --dataset_name=SEED-V --num_classes=5 --n_outer=3 --n_inner=2 --graph_defi=POSTERIOR

DREAMER

  • valance
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=valence --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3
  • arousal
python -m HDGNet --dataset_name=DREAMER --num_classes=2 --threshold=4.0 --emotion_key=arousal --n_outer=3 --n_inner=3 --graph_defi=POSTERIOR --num_electrodes=14 --in_channels=3 --hid_channels=3 --out_channels=3

Results

ResultsResults

The output result is in the folder of "..\HDGNet\Affectiv_AI\examples\tmp_out".

Cite

Please cite our paper if you use our code in your own work:

@article{li2025hdgnet,
title={Hierarchical Dynamic Local-Global-Graph Representation Learning for EEG Emotion Recognition},
author={Li, Hanyu and Kim, Byung Hyung},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={74},
year={2025}
}

About

Hierarchical Dynamic Local-Global-Graph Representation Learning

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Contributors

Languages