PyProBE

PyProBE: Python Processing for Battery Experiments - Published in JOSS (2025)

https://github.com/imperialcollegelondon/pyprobe

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    3 of 9 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords from Contributors

meshing standardization hydrology geoscience wavelets interpretability pde mathematics dynamics pypy

Scientific Fields

Earth and Environmental Sciences Physical Sciences - 83% confidence
Artificial Intelligence and Machine Learning Computer Science - 83% confidence
Last synced: 4 months ago · JSON representation

Repository

Python Processing for Battery Experiments

Basic Info
  • Host: GitHub
  • Owner: ImperialCollegeLondon
  • License: bsd-3-clause
  • Language: Python
  • Default Branch: main
  • Homepage: https://pyprobe.readthedocs.io
  • Size: 258 MB
Statistics
  • Stars: 29
  • Watchers: 2
  • Forks: 14
  • Open Issues: 29
  • Releases: 25
Created over 1 year ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Citation Zenodo

README.md

PyProBE

CI pre-commit.ci status Documentation Status codecov

License Python Version from PEP 621 TOML PyPI - Version DOI status

PyProBE (Python Processing for Battery Experiments) is a Python package designed to simplify and accelerate the process of analysing data from battery cyclers.

PyProBE is documented here. Examples are stored in docs/source/examples and are integrated into the documentation here.

Installing PyProBE

Install PyProBE with pip:

bash pip install PyProBE-Data

For more detail see the user installation guide.

To install from source see the developer installation guide.

PyProBE Objectives

1. Ease of use PyProBE breaks down complex battery data into simple, easy to understand objects that can be accessed with a few lines of code using natural language. The procedure shown below: ![Procedures and experiments](./docs/source/user_guide/images/Procedures_and_experiments.jpg) can be filtered into the experiments that make up the procedure: ```python cell.procedure['Reference Test'].experiment('Initial Charge') cell.procedure['Reference Test'].experiment('Discharge Pulses') ``` And filtered by cycle, step or step type: ```python cell.procedure['Reference Test'].step(1) cell.procedure['Reference Test'].experiment('Discharge Pulses').cycle(3).discharge(0) ``` This makes it easy to quickly access the data you need for analysis. See the [filtering data](https://pyprobe.readthedocs.io/en/latest/examples/filtering-data.html) example to see this in action. See the [documentation](https://pyprobe.readthedocs.io/en/latest/) for a detailed user guide. Start with the following pages to get PyProBE set up with your data: - [Importing data](https://pyprobe.readthedocs.io/en/latest/user_guide/importing_data.html) - [Accessing data](https://pyprobe.readthedocs.io/en/latest/user_guide/accessing_data.html) - [Plotting](https://pyprobe.readthedocs.io/en/latest/user_guide/plotting.html) PyProBE works with numerous cyclers. For guidance on how to export your data to work with PyProBE see the [Input Data Guidance](https://pyprobe.readthedocs.io/en/latest/user_guide/input_data_guidance.html).
2. Accelerate battery data exploration PyProBE has built-in plotting methods that integrate with [matplotlib](https://matplotlib.org/), [hvplot](https://hvplot.holoviz.org/) and [seaborn](https://seaborn.pydata.org/index.html) for fast and flexible visualization of battery data. It also includes a graphical user interface (GUI) for exploring data interactively, with almost no code. Run the [getting started](./docs/source/examples/getting-started.ipynb) example locally to try the GUI. ![PyProBE Dashboard](./docs/source/user_guide/images/Dashboard.png) PyProBE is fast! Built on [Polars](https://docs.pola.rs/) dataframes, PyProBE out-performs manual filtering with Pandas and stores data efficiently in Parquet files: ![PyProBE performance](./docs/source/user_guide/images/execution_time.png)
3. Encourage data processing aligned with FAIR principles PyProBE is designed to encourage good practice for storing and processing data PyProBE requires a README file to sit alongside your experimental data which is: **Human readable:** Sits alongside your data to allow others to quickly understand your experimental procedure. **Computer readable:** Simplifies the PyProBE backend, maximises flexibility to different input data and makes the setup process fast and intuitive for new data. ![README file](./docs/source/user_guide/images/Readme.jpg) See the [guidance](https://pyprobe.readthedocs.io/en/latest/user_guide/writing_a_readme_file.html) for writing README files for your experiments.
4. Host a library of analysis methods PyProBE's [analysis](https://pyprobe.readthedocs.io/en/latest/_autosummary/pyprobe.analysis.html) module contains classes and methods to perform further analysis of battery data. It is designed to maintain compatibility with the PyProBE data format and plotting tools while ensuring functions are simply defined, portable and tested. The currently implemented analysis methods includes: - Summarise pulsing experiments with resistance information from each pulse - Summarise cycling experiments with SOH quantification for each cycle - Differentiation of any quantity - Finite-difference based method - Level Evaluation ANalysis method - Data smoothing - Level-based method - Spline fitting - Savitzky-Golay filtering - Degradation mode analysis - Curve fitting to pseudo-OCV, Incremental Capacity Analysis (ICA) or Differential Voltage Analysis (DVA) curves - Charge/discharge pseudo-OCV curve averaging for resistance compensation It is easy to contribute to the analysis module. See the [developer guide](https://pyprobe.readthedocs.io/en/latest/developer_guide/contributing_to_the_analysis_module.html) and [contributing guidelines](CONTRIBUTING.md).

Contributing to PyProBE

Contributions to PyProBE are welcome. Please see the contributing guidelines.

Citing PyProBE

If you use PyProBE for a scientific paper, please cite our paper:

Holland, T., Cummins, D., & Marinescu, M. (2025). PyProBE: Python Processing for Battery Experiments. Journal of Open Source Software, 10(106), 7474. https://doi.org/10.21105/joss.07474

License

PyProBE is fully open source. For more information about its license, see LICENSE.

Contributors

tomjholland
Tom Holland
FW-Coding
Felix Watson
mohammedasher
Mohammed Asheruddin (Asher)

Owner

  • Name: Imperial College London
  • Login: ImperialCollegeLondon
  • Kind: organization
  • Email: icgithub-support@imperial.ac.uk
  • Location: Imperial College London

Imperial College main code repository

JOSS Publication

PyProBE: Python Processing for Battery Experiments
Published
February 04, 2025
Volume 10, Issue 106, Page 7474
Authors
Thomas Holland
Department of Mechanical Engineering, Imperial College London, United Kingdom, The Faraday Institution, United Kingdom
Daniel Cummins
Research Computing Service, ICT, Imperial College London, United Kingdom
Monica Marinescu
Department of Mechanical Engineering, Imperial College London, United Kingdom, The Faraday Institution, United Kingdom
Editor
Sophie Beck ORCID
Tags
battery electrochemistry battery cycling battery testing battery degradation data processing data analysis

GitHub Events

Total
  • Create event: 151
  • Release event: 16
  • Issues event: 45
  • Watch event: 18
  • Delete event: 137
  • Issue comment event: 69
  • Push event: 384
  • Pull request review comment event: 5
  • Pull request review event: 10
  • Pull request event: 267
  • Fork event: 11
Last Year
  • Create event: 152
  • Release event: 16
  • Issues event: 45
  • Watch event: 18
  • Delete event: 137
  • Issue comment event: 69
  • Push event: 384
  • Pull request review comment event: 5
  • Pull request review event: 10
  • Pull request event: 267
  • Fork event: 11

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 1,216
  • Total Committers: 9
  • Avg Commits per committer: 135.111
  • Development Distribution Score (DDS): 0.084
Past Year
  • Commits: 634
  • Committers: 7
  • Avg Commits per committer: 90.571
  • Development Distribution Score (DDS): 0.096
Top Committers
Name Email Commits
Tom Holland t****7@o****m 1,114
Holland Tom t****7@i****k 32
pre-commit-ci[bot] 6****] 24
renovate[bot] 2****] 16
dependabot[bot] 4****] 13
Felix Watson f****1@i****k 8
github-actions[bot] 4****] 4
Tom Holland t****2@g****m 4
mohammedasher m****u@i****k 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 70
  • Total pull requests: 324
  • Average time to close issues: 2 months
  • Average time to close pull requests: 6 days
  • Total issue authors: 5
  • Total pull request authors: 8
  • Average comments per issue: 0.19
  • Average comments per pull request: 0.32
  • Merged pull requests: 243
  • Bot issues: 1
  • Bot pull requests: 153
Past Year
  • Issues: 31
  • Pull requests: 271
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 6 days
  • Issue authors: 5
  • Pull request authors: 8
  • Average comments per issue: 0.29
  • Average comments per pull request: 0.35
  • Merged pull requests: 197
  • Bot issues: 1
  • Bot pull requests: 141
Top Authors
Issue Authors
  • tomjholland (64)
  • jakobhaervig (2)
  • cfolkson (2)
  • renovate[bot] (1)
  • DrIVIinotaur (1)
Pull Request Authors
  • tomjholland (164)
  • dependabot[bot] (47)
  • github-actions[bot] (39)
  • pre-commit-ci[bot] (34)
  • renovate[bot] (33)
  • haydenrodrigues (4)
  • mohammedasher (2)
  • FW-Coding (1)
Top Labels
Issue Labels
feature (20) frontend (16) backend (15) MVP (10) documentation (8) bug (7) refactor (3) dependencies (2) good first issue (2) optimisation (1) infrastructure (1) umbrella (1) breaking (1)
Pull Request Labels
dependencies (57) documentation (55) bug (38) infrastructure (33) feature (22) backend (19) refactor (17) frontend (12) breaking (11) python:uv (10) optimisation (3) github_actions (2) umbrella (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 172 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 12
  • Total maintainers: 1
pypi.org: pyprobe-data
  • Homepage: https://github.com/ImperialCollegeLondon/PyProBE
  • Documentation: https://https://pyprobe.readthedocs.io/PyProBE/
  • License: BSD 3-Clause License Copyright (c) 2024, Thomas Holland Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • Latest release: 2.3.1
    published 5 months ago
  • Versions: 12
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 172 Last month
Rankings
Dependent packages count: 9.8%
Average: 32.6%
Dependent repos count: 55.3%
Maintainers (1)
Last synced: 4 months ago

Dependencies

.github/workflows/contributors.yml actions
  • akhilmhdh/contributors-readme-action v2.3.6 composite
.github/workflows/draft-pdf.yml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • openjournals/openjournals-draft-action master composite
pyproject.toml pypi
  • IPython *
  • PyYAML *
  • distinctipy *
  • fastexcel *
  • kaleido *
  • matplotlib *
  • numpy *
  • ordered-set *
  • plotly *
  • polars *
  • pybamm *
  • pydantic *
  • scikit-learn *
  • streamlit *
.github/workflows/create-release-candidate.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • astral-sh/setup-uv v5 composite
  • peter-evans/create-pull-request v7 composite
.github/workflows/publish-to-pypi.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
  • astral-sh/setup-uv v5 composite
.github/workflows/create-release.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
  • astral-sh/setup-uv v5 composite
  • softprops/action-gh-release v2 composite
.github/workflows/ci-pull-request.yml actions
  • actions/checkout v4 composite
  • astral-sh/setup-uv v5 composite
  • codecov/codecov-action v5 composite
.github/workflows/ci-push.yml actions
  • actions/checkout v4 composite
  • astral-sh/setup-uv v5 composite
  • codecov/codecov-action v5 composite
uv.lock pypi
  • 184 dependencies