Skip to content
CAI
Software that uses CAICheck a score

neerajwagh/eeg-self-supervision

44.8

Weak · 21 September 2026

3.2k

lines of production code

Python

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Add evaluation scripts and model definitions for self-supervised learning baselines

The evaluation directory now includes scripts and model definitions for evaluating self-supervised learning (SSL) models, including a SOTA evaluation script, ablation models (FullSSLNet, ContrastiveTripletNet, BarlowTwinsDBRatioNet, etc.), and dataset utilities. This enables running held-out evaluations for tasks like gender, age, and condition classification on the TUH and Lemon datasets using various SSL architectures.

evaluation · high confidence

Add fine-tuning and supervised learning code for EEG classification

The Fine-tune directory now includes a complete supervised learning pipeline for EEG data. This includes model architectures (SOTA\_model, ablation\_models) implementing a Shallow ConvNet and various self-supervised heads (BarlowTwins, Contrastive Triplet), along with a training pipeline (SOTA\_pipeline, ablation\_pipeline) that tracks train/valid metrics (AUC, F1, precision, recall, balanced accuracy) at both sample and patient levels. Supporting modules for dataset handling (datasets.py) and data splitting (utils.py) are also added.

Fine-tune · high confidence

Add linear baseline training script and utility functions for supervised learning

The \supervised\_learning\ directory now includes \linear\_baseline\_train.py\, a script that trains a logistic regression model using scikit-learn's \GridSearchCV\ to find optimal hyperparameters for tasks like gender, age, and condition classification on Tuh and Lemon datasets. It also adds \utils.py\, which provides helper functions for subject-level data splitting, custom cross-validation folding, and patient-level metric aggregation.

_supervised\learning · high confidence

Added Dockerfile and topomap image array extraction example

The repository now includes a Dockerfile that sets up a Python 3.8 environment with MNE, PyTorch, and other dependencies, facilitating reproducible execution of the project. Additionally, a new Jupyter notebook (\_00\_generate\_band\_power\_topomap\_image\_from\_timeseries\_signal.ipynb) was added to demonstrate how to extract topomap image arrays from timeseries signals, providing a concrete example for users working with EEG data processing.

(repo-wide) · high confidence

Added EEG feature extraction and topographic map utilities

Added new utility modules for EEG signal processing. The \utils/features.py\ module introduces an \eeg\_power\_in\_bands\ function that extracts relative power features across standard brain rhythm bands (delta, theta, alpha, beta, gamma) from MNE Epochs objects, returning data compatible with scikit-learn. The \utils/topomaps.py\ module provides helper functions to convert matplotlib figures to NumPy arrays and apply circular head masks for topographic visualization.

utils · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 47 → 45 (-2.3)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 94 → 94 (+0.3)
  • Architecture 100 → 100 (+0.0)
  • Maturity 51 → 44 (-7.1)
  • Readiness 17 → 17 (+0.0)
  • Security 99 → 93 (-5.8)

Resolved (28)

  • Dependency hygiene not measured — no supported dependency manifest was read
  • Duplicated block (11 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (11 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (12 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (12 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (12 lines × 2) (evaluation/linear_baseline_eval.py)
  • Duplicated block (12 lines × 3) (Fine-tune/utils.py)
  • Duplicated block (13 lines × 2) (Fine-tune/SOTA_pipeline.py)
  • Duplicated block (13 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (13 lines × 3) (Fine-tune/utils.py)
  • Duplicated block (14 lines × 3) (evaluation/SOTA_eval.py)
  • Duplicated block (15 lines × 3) (Fine-tune/utils.py)
  • Duplicated block (16 lines × 3) (Fine-tune/utils.py)
  • Duplicated block (18 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (19 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (21 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (24 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (5 lines × 2) (evaluation/linear_baseline_eval.py)
  • Duplicated block (6 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (7 lines × 2) (evaluation/linear_baseline_eval.py)
  • …and 8 more

New (59)

  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (10–11 lines × 6) (Fine-tune/utils.py)
  • Duplicated block (11 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (11 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (111 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (12 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (13 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (13 lines × 3) (Fine-tune/utils.py)
  • Duplicated block (13 lines × 3) (evaluation/SOTA_eval.py)
  • Duplicated block (13–14 lines × 2) (Fine-tune/SOTA_pipeline.py)
  • Duplicated block (14 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (14 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (17 lines × 3) (Fine-tune/utils.py)
  • Duplicated block (25 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (30 lines × 2) (Fine-tune/ablation_models.py)
  • Duplicated block (31 lines × 2) (Fine-tune/SOTA_model.py)
  • Duplicated block (31 lines × 3) (Fine-tune/utils.py)
  • Duplicated block (32 lines × 2) (Fine-tune/datasets.py)
  • Duplicated block (34 lines × 2) (evaluation/linear_baseline_eval.py)
  • …and 39 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

neerajwagh/eeg-self-supervision was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit f27be598e6c9c093ed4b8698a3b217ffc9dd76c2 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.