ExperimentalData class

While PyBaMM is a modeling package, the majority of battery research is performed through experiments, whose data (cell voltage, current, temperature, …) can be generated in a wide variety of formats. The goal of this project is to develop functionality to better interface PyBaMM with this experimental data. In particular, the proposed ExperimentalData class should import real data and behave like the existing Solution class (generated by solving a model), so experimental data can be easily plotted and compared with simulations.

Expected outcomes

  • [Easy] New ExperimentalData class fully integrated with the PyBaMM structure
  • [Medium] Ability to import data from common sources (e.g. BatteryArchive)
  • [Hard/stretch goal] Tools for automatically fitting the parameters of a model to experimental data

Potential mentors

Twitter bot to run simulations

Today, Twitter is one of the best and quickest ways to publicize new science, with a very active battery research community (#battchat). The goal of this project is to develop a bot that automatically generates PyBaMM simulations of battery degradation under various conditions. This will lead to:

a) increased publicity and visibility for PyBaMM, showcasing its ability to simulate a wide range of degradation mechanisms

b) improved understanding of degradation mechanisms with regular generation of new simulations that may match experiments

As a stretch goal, the bot will be able to take requests from Twitter users: the user tweets to the bot with the specifications of the simulation and the bot then runs the simulation and tweets the results back.

Expected outcomes

  • [Medium] A bot which automatically generates results of PyBaMM degradation simulations, with some randomly generated models and experimental conditions (a similar example is the LLC4320 Bot)
  • [Hard/Stretch goal] ability to take requests from people tweeting to the bot. This is harder, since requests may be vague.

Potential mentors

Printing formatted equations

In PyBaMM, models are represented by expression trees. This allows the model to be defined independent of the user’s choice of parameters, spatial discretization, numerical methods and so on, which are plugged in during model processing. The goal of this project is to implement a function that renders a given expression tree in a human-readable form (e.g. by using LaTeX to generate a pdf of the model equations). This will make it easier for users to see the equations of the model that they are using.

An existing issue with some ideas for this project can be found here.

Expected outcomes

  • [Easy-medium] A function to print a LaTeX representation of any PyBaMM expression tree
  • [Medium-hard/stretch goal] Automatic generation of the model equations in the documentation for each submodel

Potential mentors

Electrochemical Impedance Spectroscopy (EIS) modelling

A common type of experiment in battery science is Electrochemical Impedance Spectroscopy (EIS), which is used to generate a plot known as the “Nyquist plot”. While this is typically modeled using simple “equivalent-circuit” models, the physical models implemented in PyBaMM could also be used to explain such experiments. In this project, we will

a) Develop functionality to solve a PyBaMM model in the frequency domain to generate Nyquist plots

b) Integrate with existing EIS modeling packages, such as or pyEIS, to fit experimental data

Expected outcomes

  • [Medium] Generation of a Nyquist plot from any PyBaMM model
  • [Hard/Stretch goal] Integration with existing EIS modeling packages, such as or pyEIS, to fit experimental data

Desired skills

  • This is the hardest of the projects, and contributors will benefit from understanding of university-level mathematical concepts such as the Laplace transform


  • Hard

Potential mentors