PyProBE
PyProBE: Python Processing for Battery Experiments - Published in JOSS (2025)
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
Scientific Fields
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
Metadata Files
README.md
PyProBE
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:  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 is fast! Built on [Polars](https://docs.pola.rs/) dataframes, PyProBE out-performs manual filtering with Pandas and stores data efficiently in Parquet files: 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.  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
|
Tom Holland |
Felix Watson |
Mohammed Asheruddin (Asher) |
Owner
- Name: Imperial College London
- Login: ImperialCollegeLondon
- Kind: organization
- Email: icgithub-support@imperial.ac.uk
- Location: Imperial College London
- Repositories: 311
- Profile: https://github.com/ImperialCollegeLondon
Imperial College main code repository
JOSS Publication
PyProBE: Python Processing for Battery Experiments
Authors
Department of Mechanical Engineering, Imperial College London, United Kingdom, The Faraday Institution, United Kingdom
Research Computing Service, ICT, Imperial College London, United Kingdom
Department of Mechanical Engineering, Imperial College London, United Kingdom, The Faraday Institution, United Kingdom
Tags
battery electrochemistry battery cycling battery testing battery degradation data processing data analysisGitHub 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
Top Committers
| Name | 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
Pull Request Labels
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
Rankings
Maintainers (1)
Dependencies
- akhilmhdh/contributors-readme-action v2.3.6 composite
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- openjournals/openjournals-draft-action master composite
- IPython *
- PyYAML *
- distinctipy *
- fastexcel *
- kaleido *
- matplotlib *
- numpy *
- ordered-set *
- plotly *
- polars *
- pybamm *
- pydantic *
- scikit-learn *
- streamlit *
- actions/checkout v4 composite
- actions/setup-python v5 composite
- astral-sh/setup-uv v5 composite
- peter-evans/create-pull-request v7 composite
- actions/checkout v4 composite
- actions/setup-python v5 composite
- actions/upload-artifact v4 composite
- astral-sh/setup-uv v5 composite
- 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
- actions/checkout v4 composite
- astral-sh/setup-uv v5 composite
- codecov/codecov-action v5 composite
- actions/checkout v4 composite
- astral-sh/setup-uv v5 composite
- codecov/codecov-action v5 composite
- 184 dependencies
