HC Li-Cu Half-Cell Cycling Data Standard A machine-readable JSON Schema for lithium–copper half-cell (HC) galvanostatic cycling experiments, with a browser validator and GitHub Pages frontend.
⚠️ HC= Half-Cell (Li-Cu configuration) — never Hard Carbon in this schema.
| Abbreviation | Meaning |
|---|---|
| HC | Half-Cell (Li metal anode vs Cu current collector) |
| AF-LMB | Anode-Free Lithium Metal Battery |
| CuCC | Copper Current Collector |
| CE | Coulombic Efficiency (Q_discharge / Q_charge) |
| Field | Type | Required | Description |
|---|---|---|---|
experiment_id |
string | ✅ | Unique ID, pattern [A-Za-z0-9_\-]+ |
date |
string (ISO 8601) | ✅ | Experiment start date YYYY-MM-DD |
cell_type |
const "HC_Li_Cu" |
✅ | Fixed identifier |
operator |
string | — | Researcher name/ID |
electrolyte.name |
string | ✅* | Formulation, e.g. "1M LiTFSI in DOL:DME" |
electrolyte.concentration_M |
number | — | Salt concentration (mol/L) |
electrolyte.solvent |
string | — | Solvent system |
electrolyte.additive |
string | — | Additive |
current_collector |
const "Cu" |
— | Fixed value |
capacity_mAh_cm2 |
number | — | Areal capacity target (mAh/cm²) |
area_cm2 |
number | — | Electrode area (cm²) |
current_density_mA_cm2 |
number | — | Current density (mA/cm²) |
temperature_C |
number | — | Temperature (°C) |
*required when electrolyte object is present
| Field | Type | Required | Description |
|---|---|---|---|
cycle_number |
integer ≥ 1 | ✅ | Sequential cycle index |
CE |
number [0, 1] | ✅ | Coulombic efficiency |
capacity_charge_mAh_cm2 |
number ≥ 0 | ✅ | Li plating capacity (mAh/cm²) |
capacity_discharge_mAh_cm2 |
number ≥ 0 | ✅ | Li stripping capacity (mAh/cm²) |
voltage_plateau_V |
number | — | Stripping plateau vs Li/Li⁺ (V) |
timestamp |
string (ISO 8601) | — | Cycle completion datetime |
overpotential_mV |
number | — | Nucleation overpotential (mV) |
| Field | Type | Description |
|---|---|---|
EIS.frequency_Hz |
number[] | Frequency sweep (Hz) |
EIS.Z_real |
number[] | Impedance real part (Ω) |
EIS.Z_imag |
number[] | Impedance imaginary part (Ω) |
EIS.cycle_after |
integer | Cycle index for EIS collection |
dQ_dV.voltage |
number[] | Voltage array (V) |
dQ_dV.dQdV |
number[] | Differential capacity (mAh/V) |
dQ_dV.cycle_number |
integer | Source cycle |
pip install jsonschema
python validator/validate.py schema/example_hc_data.jsonOutput:
PASS example_hc_data.json
experiment_id : HC-2026-001
cycles : 9
Open the GitHub Pages site → Validator tab → drop your JSON file.
{
"metadata": {
"experiment_id": "HC-2026-001",
"date": "2026-05-01",
"cell_type": "HC_Li_Cu"
},
"cycles": [
{
"cycle_number": 1,
"CE": 0.921,
"capacity_charge_mAh_cm2": 1.002,
"capacity_discharge_mAh_cm2": 0.923
}
]
}AtomGrid/
├── schema/
│ ├── rosetta_v0.1.json # JSON Schema (Draft 2020-12)
│ └── example_hc_data.json # Reference dataset (HC-2026-001)
├── validator/
│ └── validate.py # CLI validator (Python 3.9+)
├── docs/ # GitHub Pages frontend
│ ├── index.html # Schema reference + online validator + CE chart
│ └── schema_viewer.html # Raw schema display
├── .github/
│ └── workflows/
│ └── validate.yml # CI: validates example data on every push
└── README.md
- Fork this repository.
- Add your dataset as
schema/<experiment_id>.json. - Run
python validator/validate.py schema/<experiment_id>.json— mustPASS. - Open a pull request. CI will re-validate automatically.
Naming convention: <cell_type>-<YYYY>-<NNN>.json, e.g. HC_Li_Cu-2026-002.json.
| Version | Scope |
|---|---|
| v0.1 | HC Li-Cu half-cell cycling (this release) |
| v0.2 | Full-cell schema (cathode + anode) |
| v0.3 | DEIS time-series extension |
| v0.4 | Multi-experiment batch container |
MIT © AtomRearch · Zhengqian Jin (Ezra)