Analysis software · Analysis software

Battery Cycle-Life Analyzer

Fit capacity fade, bound the forecast, and show when the evidence runs out.

Released Python software compares linear, power-law, and logarithmic fits, selects by RMSE, and returns no EOL estimate when a threshold is outside the three-times-observed projection window.

Engineering question

Which empirical degradation model best describes observed capacity fade, and how far can EOL projection be bounded honestly?

Fit three transparent empirical degradation families, compare fit quality, and return a bounded EOL or no estimate when the threshold is unsupported.

System and evidence boundary

Provenance enters before fitting—not after the chart.

The long-form path preserves cell and protocol context, while the legacy CSV/TSV path remains compact for cycle-capacity tables.

Data-provenance pipeline

  1. 01CSV, TSV, or long formCycle + capacity + optional protocol context
  2. 02Validation envelopeFinite values, bounds, cell ranges, timestamps
  3. 03Three empirical fitsLinear, power-law, logarithmic
  4. 04Model selectionLowest released RMSE criterion
  5. 05Bounded EOL / RULThreshold search stops at 3× observed cycles
  6. 06Publication figureAxes, units, label, provenance, source

Verified results

Figures keep scenario, units, source, and evidence class attached.

Every visual below points to its source data or retained source format and to the release- or commit-specific implementation behind it.

Validation and evidence

What passed, what was demonstrated, and what remains unvalidated.

Thirty-three package, CLI, data-schema, and notebook tests passed at the released revision.

Released test suite

33 tests passed across core fitting, projection, CLI behavior, data loaders, long-form validation, and the executable notebook.

Synthetic disclosure

Bundled LFP and NMC datasets are demonstrations, not measurements. Every portfolio plot on this page is labeled synthetic or illustrative.

Projection behavior

EOL is searched only to three times the largest observed cycle. Unsupported crossings return no estimate.

Uncertainty gap

v0.1.0 does not calculate parameter confidence intervals or propagate measurement uncertainty into RUL.

Shortest verified path

Pin the audited source before running it.

git clone https://github.com/mohammadrezwankhan/battery-cycle-life-analyzer.git
cd battery-cycle-life-analyzer
git checkout v0.1.0
python -m pip install -e ".[dev]"
python -m bcla --model all
python -m pytest -q

Verification environment: Python 3.14.6 with NumPy, SciPy, and Matplotlib on Windows 11. Distinguish running the scientific model from rebuilding site figures (which uses scripts/generate-open-engineering-figures.py in the portfolio website repository). Commands are concise entry points; repository documentation remains authoritative for setup details.

Documentation map

Go directly to the useful evidence.

Engineering boundary

The artifact cannot qualify the decision by itself.

Related professional context

Follow the evidence into adjacent work.

Use the pinned source, inspect the evidence, and keep project authority with a qualified human reviewer. Open v0.1.0 Return to open engineering

Evidence summary

Reviewed 2026-11-12; evidence records retain their own scope and dates.

Documentation snapshot
2026-10-06 · 65df747 · 65df747ccf1ff0d2427ab8ba321b4c6839d0ad3b
Portfolio source record
33 results · executed-upstream · bf62fff · bf62fff47e3e8759622c346bd66ae484e0c0ee8c
Current release
v0.2.0 · published 2026-08-27 · tag target 4ac3869071e0e0f28cc701a6b2bbb8fe369a2a97
Current verification
Successful hosted run · 2026-11-10 · target 78d3de863ca65de7fe5a28911eb8167e7db9e2c4
Repository head at 2026-10-17 inventory
630c030c806c81523554b2c40085e13424e0ca9d · inventory snapshot only