42.1 MB
20 files
Updated about 2 months ago
Name
Size
data
splits
.gitattributes2.5 kB
xet
CITATION.cff4.23 kB
xet
CITING.md4.73 kB
xet
LICENSE5.92 kB
xet
LICENSE-CODE1.06 kB
xet
NOTICE-PULSEBAT2.34 kB
xet
README.md10.1 kB
xet
UPLOAD_TO_HUGGINGFACE.md1.55 kB
xet
checksums.sha2561.66 kB
xet
dataset_card.md12 kB
xet
load_example.py3.84 kB
xet
manifest.json8.26 kB
xet
README.md

MagBridge-Battery v1.0

The first open dataset pairing battery magnetic-field signatures with electrochemical degradation labels.

Overview

Battery health diagnostics rely almost entirely on terminal measurements — voltage, current, temperature. Magnetic sensing can see what terminals miss: internal hotspots, dendrites, inhomogeneous degradation.

But no public dataset connected magnetic signatures to degradation labels. Until now.

MagBridge-Battery v1.0 bridges the OSF magnetometry archive with PulseBat SOH labels to create the first open benchmark for magnetic battery diagnostics.

A synthetic magnetic-signature dataset for lithium iron phosphate (LFP) cells, bridging the Mohammadi–Jerschow OSF magnetometry archive with PulseBat electrochemical labels.

  • 6,760 samples at 100 time-steps per sample, 6 signal channels
  • Cell-disjoint, leakage-free benchmark split (by_cell_primary)
  • Anomaly subtypes: sensor dropout, calibration drift, temporal warp, periodic interference, low-voltage Regime-B extrapolation
  • License: CC-BY-4.0 (data) / Apache-2.0 (code)
  • Schema version: 1.0

Why This Matters

  • Terminal-only datasets (NASA, CALCE, MATR) are blind to internal cell physics
  • Magnetic sensing is becoming a first-class diagnostic modality (QuaLiProM, Nature Communications 2025)
  • No cross-lab comparison was possible without a public benchmark — until now

Citation

Please cite the paper first and the dataset second when using this resource:

  1. Paper: https://arxiv.org/abs/2605.20240 — DOI: 10.48550/arXiv.2605.20240
  2. Dataset: https://zenodo.org/records/20260147 — DOI: 10.5281/zenodo.20260147

Paper (primary citation)

Gunasekar, S. P. and Rangarajan, P. K. "MagBridge-Battery: A Synthetic Bridge Dataset for Li-ion Magnetometry and State-of-Health Diagnostics." arXiv preprint arXiv:2605.20240, 2026.

@article{magbridge2026,
  author        = {Gunasekar, Sakthi Prabhu and Rangarajan, Prasanna Kumar},
  title         = {{MagBridge-Battery}: A Synthetic Bridge Dataset for
                   {Li}-ion Magnetometry and State-of-Health Diagnostics},
  journal       = {arXiv preprint},
  eprint        = {2605.20240},
  archivePrefix = {arXiv},
  year          = {2026}
}

Dataset (secondary citation)

Gunasekar, S. P. and Rangarajan, P. K. MagBridge-Battery v1.0 [Data set]. Zenodo, 2026. https://doi.org/10.5281/zenodo.20260147

@misc{magbridge_battery_v1_0,
  author    = {Gunasekar, Sakthi Prabhu and Rangarajan, Prasanna Kumar},
  title     = {{MagBridge-Battery v1.0}},
  year      = {2026},
  publisher = {Zenodo},
  doi       = {10.5281/zenodo.20260147},
  note      = {Data set}
}

See CITING.md for full guidance (including upstream-source citations) and CITATION.cff for the machine-readable form.

Contents

data/
  shard_0000.parquet … shard_0004.parquet    # 5 shards × 1352 rows = 6760
  metadata.parquet                            # row-aligned metadata
splits/
  by_cell_primary.json                        # USE THIS for benchmark reporting
  by_record_optimistic_baseline.json          # Leaky baseline for contrast only
manifest.json                                 # provenance, hashes, config
checksums.sha256                              # integrity hashes for every file
load_example.py                               # minimal loader
dataset_card.md                               # full dataset card
CITATION.cff                                  # machine-readable citation
CITING.md                                     # how to cite (paper + dataset)
LICENSE                                       # CC-BY-4.0 dataset license + upstream notices
LICENSE-CODE                                  # Apache-2.0 code license
NOTICE-PULSEBAT                               # MIT notice from PulseBat upstream
README.md                                     # this file

Loading from Hugging Face

from datasets import load_dataset

ds = load_dataset("Sakthigsjhy/MagBridge-Battery", data_files="data/shard_*.parquet", split="train")
print(ds)

For the official leakage-safe benchmark split, use splits/by_cell_primary.json. The split file contains train_samples, val_samples, and test_samples sample IDs.

Quick Start

pip install pandas pyarrow
python load_example.py
import pandas as pd, json
from pathlib import Path

base = Path(".")

# 1. Load all shards into one dataframe
shards = sorted((base / "data").glob("shard_*.parquet"))
df = pd.concat([pd.read_parquet(s) for s in shards], ignore_index=True)

# 2. Load the primary (cell-disjoint) split
split = json.loads((base / "splits" / "by_cell_primary.json").read_text())
train_ids = set(split["train_samples"])
val_ids   = set(split["val_samples"])
test_ids  = set(split["test_samples"])

train_df = df[df["sample_id"].isin(train_ids)].reset_index(drop=True)
val_df   = df[df["sample_id"].isin(val_ids)].reset_index(drop=True)
test_df  = df[df["sample_id"].isin(test_ids)].reset_index(drop=True)

print(f"train={len(train_df)}, val={len(val_df)}, test={len(test_df)}")
# Expect: train=4507, val=1074, test=1179

Which Split Do I Use?

Always by_cell_primary for any reported result. It guarantees:

  • Zero physical cells overlap between train, val, and test
  • Zero (clean parent → anomaly child) pairs are split across train/val/test
  • Zero sample-ID overlap

by_record_optimistic_baseline is intentionally leaky (59 overlapping cells, 292 cross-split parent-child pairs) and is shipped only as a contrast — to demonstrate how much the leakage inflates apparent performance. Do not report its numbers without explicitly labelling them as the leaky baseline.

Signal Channels (per row, length 100)

Column Description Sign
B_s1Y Sensor 1, Y component of magnetic field (nT) signed
B_s1Z Sensor 1, Z component signed
B_s2Y Sensor 2, Y component signed
B_s2Z Sensor 2, Z component signed
B_s1C5 Sensor 1 OSF channel-5 (originally labelled "Mag" in OSF source) signed
B_s2C6 Sensor 2 OSF channel-6 (originally labelled "Mag" in OSF source) signed
time_norm Normalized time index in [0, 1], 100 evenly-spaced points constant grid

Important — B_s1C5 and B_s2C6 are NOT strict magnitudes. They are the signed channel-5 / channel-6 fields from the OSF source. The OSF archive labels them "Mag" but their values can legitimately be negative (123 rows with negatives in B_s1C5, 86 in B_s2C6). If you need a non-negative magnitude, compute sqrt(B_s1Y² + B_s1Z²) yourself.

time_norm is the same vector for every sample. It is included for loader convenience and can be dropped without information loss.

Metadata Columns

sample_id, parent_sample_id, cell_id, generation_seed, bridge_version, bridge_config_hash, schema_version, voltage, soc, soh, chemistry, regime, nearest_anchor, anomaly_flag, anomaly_subtype, anomaly_origin, anomaly_severity, second_life_class

See dataset_card.md for full semantics.

Anomaly Composition

Subtype Count Has parent Notes
none (clean) 5,600 Grounded PulseBat-conditioned
low_voltage_regime_B 560 no Extrapolation regime; soh, u_features, second_life_class are NaN by design
sensor_dropout 150 yes Synthetic; parent is a clean sample
calibration_drift 150 yes Synthetic
temporal_warp 150 yes Synthetic; parent-child max-diff median ≈ 13.4 nT
periodic_interference 150 yes Synthetic

Regime-B samples are for low-voltage / OOD / anomaly-style evaluation only — not for SOH regression, since SOH is intentionally missing.

Integrity Verification

sha256sum -c checksums.sha256

All files should report OK.

Licenses

  • Data (data/, splits/, manifest.json): CC-BY-4.0. See LICENSE.
  • Code (load_example.py and other release scripts): Apache-2.0. See LICENSE-CODE.
  • Upstream attribution: The LICENSE file contains a full upstream-notice section for the OSF magnetometry archive and the PulseBat dataset.

This bundle does not redistribute raw OSF or PulseBat data files.

Provenance

This bundle is derived from two upstream sources (hashes pinned in manifest.json):

  • OSF magnetometry archive (Mohammadi, Jerschow et al.) — osf_data_hash in manifest
  • PulseBat electrochemical datasetpulsebat_data_hash in manifest

The bridging procedure, configuration, and code version are recorded in manifest.json (bridge_version, bridge_code_commit, bridge_config, config_hash). Generation date: 2026-05-16.

Total size
42.1 MB
Files
20
Last updated
Jun 17
Pre-warmed CDN
US EU US EU

Contributors