BattGP
Gaussian Process-based Online Health Monitoring and Fault Analysis of Lithium-Ion Battery Systems from Field Data
Install / Use
/learn @JoachimSchaeffer/BattGPREADME
<a id="readme-top"></a>
<!-- *** Thanks for checking out the Best-README-Template. If you have a suggestion *** that would make this better, please fork the repo and create a pull request *** or simply open an issue with the tag "enhancement". *** Don't forget to give the project a star! *** Thanks again! Now go create something AMAZING! :D --> <!-- PROJECT SHIELDS --> <!-- *** I'm using markdown "reference style" links for readability. *** Reference links are enclosed in brackets [ ] instead of parentheses ( ). *** See the bottom of this document for the declaration of the reference variables *** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use. *** https://www.markdownguide.org/basic-syntax/#reference-style-links --> <!-- [![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![LinkedIn][linkedin-shield]][linkedin-url] --> <!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/JoachimSchaeffer/BattGP"> <img src="logo.svg" alt="Logo" width="500" height="270"> </a> <!-- <h3 align="center">project_title</h3> --> <p align="center"> <!-- project_description <br /> <a href="https://github.com/JoachimSchaeffer/BattGP"><strong>Explore the docs »</strong></a> <br /> <br /> <a href="https://github.com/JoachimSchaeffer/BattGP">View Demo</a> · --> <a href="https://github.com/JoachimSchaeffer/BattGP/issues/new?labels=bug&template=bug-report---.md">Report Bug</a> · <a href="https://github.com/JoachimSchaeffer/BattGP/issues/new?labels=enhancement&template=feature-request---.md">Request Feature</a> </p> </div> <!-- TABLE OF CONTENTS --> <details> <summary>Table of Contents</summary> <ol> <li> <a href="#about-the-project">About The Project</a> <ul> <li><a href="#built-with-love-and">Built with love and</a></li> </ul> </li> <li> <a href="#getting-started">Getting Started</a> <ul> <li><a href="#prerequisites">Prerequisites</a></li> <li><a href="#installation">Installation</a></li> </ul> </li> <li><a href="#usage">Usage</a></li> <li><a href="#contributing">Contributing</a></li> <li><a href="#license">License</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#acknowledgments">Acknowledgments</a></li> <li><a href="#corresponding-articles">Corresponding Articles</a></li> </ol> </details> <!-- ABOUT THE PROJECT -->About The Project
<!-- [![Product Name Screen Shot][product-screenshot]](https://example.com) -->BattGP: Battery systems modeling from field data using Gaussian processes.
This project contains the code corresponding to publication [1].
The manuscript contains the technical details and equations describing the Guassian Process (GP) implementation and fault probabilities.
This software was developed to analyze and model 8s1p LFP battery systems from field data.
The dataset is openly available on Zenodo: https://zenodo.org/records/13715694.
There are two main modes available:
(1) Excat GP (full_gp) using a specified number of data points. Exact GPs usually scale with O(n^3). Thus, you will either be limited by memory or compute. On an NVIDIA A1000, you can use up to 40k data points.
(2) Recursive spatiotemporal (spatio_temporal) GPs. These GPs can use all data points and take minutes to run on a powerful Laptop computer using hundreds of thousands/millions of data points. There are approximations in the spatial domain basis vectors, and the computational complexity depends on the number of basis vectors.
We would like to invite others to collaborate with us on the effort of making fault detection for lithium-ion batteries from field data better, more open and more accessible. All figure numbers mentioned below are in correspondance to this article and the supplemental information.
Important remark: This is research software v.0.1.0.
Despite taking care in designing this software and testing its functionality there are likely bugs remaining.
<p align="right">(<a href="#readme-top">back to top</a>)</p> <!-- Built with love and -->Built with love and
- [![PyTorch][pytorch.org]][PyTorch-url]
Getting Started
Installation
- Clone the repo
git clone https://github.com/JoachimSchaeffer/BattGP.git
- Creta a new environment using conda/miniconda. If you want to use an existing environment jump to step 3.
conda create -n "battgp" python=3.10 ipython
- Activate the environment
conda activate battgp
- Install dependencies
pip install -r requirements.txt
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- USAGE EXAMPLES -->
Usage
<!-- Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources. _For more examples, please refer to the [Documentation](https://example.com)_ -->Download the data
First you should download the battery field data set for which this package was developed. The data set is publicaly available on Zenodo https://zenodo.org/records/13715694.
Place the file field_data.zip inside the data folder.
If you want to use your own data, it might still make sense to familiarize yourself with how this software works by using the default data set. More information of how to use this software with your own data can be found below.
Data visualization
There are three scripts for data visualization:
- To get started execute
data_vis_general.ipynbfirst. The first time you run it might take a while to serialize the data. data_vis_big_timeseries.ipynbcontains the datashader code, allowing to visualize millions of timeseries data pointsdata_vis_ridgeline_plot.pycontains the code for the ridgeline plots, a.k.a. fancy barcharts of statistics for each system in the data set.
Modeling and plotting results
tutorial_recursive_spatiotemporal_gp.pyis a short tutorial to introduce the basics of the recursive spatiotemporal GP approach we are using.example_usage_battgp.pycontains a lot of comments on how to use this software and how to get started.gp_runner.pyruns the different models for the data set and reproduces the results of the associated manuscripts [Cell Reports Physical Science, NeurIPS BDU Workshop].
Using your own data
The easiest way to use this software with your own data is to write a new BattData class that preprocesses your data. More development is needed to allow the processing of data from larger packs with parallel strings.
<p align="right">(<a href="#readme-top">back to top</a>)</p> <!-- Known Issues & Open Tasks ## Known Issues And Open Tasks - [1] Pack model: Currently the pack model is not used. - [ ] Feature 1 - [ ] Feature 2 - [ ] Feature 3 - [ ] Nested Feature See the [open issues](https://github.com/JoachimSchaeffer/BattGP/issues) for a full list of proposed features (and known issues). <p align="right">(<a href="#readme-top">back to top</a>)</p> --> <!-- CONTRIBUTING -->Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the BSD 3-Clause License. See LICENSE.txt for more information.
Contact
Joachim Schaeffer - joachim.schaeffer@posteo.de
BattGP Project Link: https://github.com/JoachimSchaeffer/BattGP
<p align="right">(<a href="#readme-top">back to top</a>)</p> <!-- ACKNOWLEDGMENTS -->Acknowledgments
- Co-authors: Many thanks to all the co-authors involved in [1] and [2].
- Anonymous data provider: Many thanks for sharing the data set with us. You sparked this project.
- ReadMe Template
Corresponding Articles:
If you found this software useful for your research, please cite:
[1] Cell Reports Physical Science:
@article{schaeffer2024_battgp,
title = {Gaussian process-based online health monitoring and fault analysis of lithium-ion battery systems from field data},
author = {Joachim Schaeffer and Eric Lenz and Duncan Gulla and Martin Z. Bazant and Richard D. Braatz and Rolf Findeisen},
journal = {Cel
Related Skills
tmux
349.0kRemote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
diffs
349.0kUse the diffs tool to produce real, shareable diffs (viewer URL, file artifact, or both) instead of manual edit summaries.
terraform-provider-genesyscloud
Terraform Provider Genesyscloud
blogwatcher
349.0kMonitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
