Skip to content

[CS598] Identifying the Seizure Onset Zone - #1068

Open
Ethan-Chang-1111 wants to merge 6 commits into
sunlabuiuc:masterfrom
Ethan-Chang-1111:resolve-conflict
Open

[CS598] Identifying the Seizure Onset Zone#1068
Ethan-Chang-1111 wants to merge 6 commits into
sunlabuiuc:masterfrom
Ethan-Chang-1111:resolve-conflict

Conversation

@Ethan-Chang-1111

@Ethan-Chang-1111 Ethan-Chang-1111 commented Apr 22, 2026

Copy link
Copy Markdown

Contributors:
Ethan Chang (ethanc8@illinois.edu)
Jacky Chen (jackyc3@illinois.edu)
Sebastian Ho (sho28@illinois.edu)

Contribution Type:
New Dataset+Task+Model

Description:
Implements the paper below to include the full pipeline from data ingestion to model outputs. Included is also a link to the public dataset used for this study.
This paper explores applying deep learning to detect the Seizure Onset Zone in epileptic patients to inform a surgical plan to treat epilepsy. It introduces a convergence pattern in labeling placed electrodes and utilizes a transformer model to handle with variable inputs.

https://raw.githubusercontent.com/mlresearch/v252/main/assets/norris24a/norris24a.pdf
https://openneuro.org/datasets/ds004080/versions/1.2.4/download

Files to Review:

  • pyhealth/datasets/respectccep.py - Main dataset implementation
  • pyhealth/tasks/ccep_detect_soz.py - Main task
  • pyhealth/model/spes_resnet.py - Model using ResNet
  • pyhealth/model/spes_transformer.py - Model using Transformer
  • tests/core/test_ccep.py - Test cases for dataset and task
  • tests/core/test_spes_resnet.py - Test cases for SPES ResNet model
  • tests/core/test_spes_transformer.py - Test cases for SPES Transformer model

Ethan-Chang-1111 and others added 6 commits March 23, 2026 19:00
* Task implementation in SOZ.py. Needs docs+testing

* improved dataset with more file paths

* dataset with raw time series data in output

* init

* Configure init and imports

* cleanup misc files

* give TimeSeriesProcessor a tuple for timeseries data

* test with random labels

* input random values for soz_label

* add logger

* edit BinaryLabelProcessor to return more informative error. Will need to revert

* more than 2 labels

* set soz_label to random value per sample

* Try to see how many events getting found per patient

* patch Dataset to handle no pos values. Also rm random label inj in Task

* rm logger, overwrite true label with random label

* rm random val, log label for each sample

* add baby task for SOZ

* delete preliminary test file

* added missing .py extension on test

* added more documentation + error checking

* test fixes:
95-101: if no rows, builds empty dataframe to fix test_empty_patient_returns_empty_list

used "_, values" in various cases to fix type mismatching

* rm debugging code, add some comments

* Update tasks.rst to point to SOZ task

* rm duplicate test_ccep file

* update dataset/task to match paper

* add spes_resnet, spes_transformer
    models and tests

update rst files to add models

* adjust models

* update all tests

* add example and fix models

* fix example generation and add local loading

* fix cuda issue

* add netids

* fix docstrings for models and example

* add example argument comments

---------

Co-authored-by: jackyc1070 <jackyc@umich.edu>
Co-authored-by: maiuryn <sebastianho0311@gmail.com>
@Ethan-Chang-1111
Ethan-Chang-1111 marked this pull request as ready for review April 22, 2026 03:16
@Ethan-Chang-1111 Ethan-Chang-1111 changed the title Identifying the Seizure Onset Zone [CS598] Identifying the Seizure Onset Zone Apr 22, 2026
@github-actions

Copy link
Copy Markdown

This PR has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs.

@github-actions github-actions Bot added the stale label Jul 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants