Skip to content

Commit

Permalink
docs: add some missing citations and describe plotting integrations
Browse files Browse the repository at this point in the history
  • Loading branch information
tomjholland committed Jan 2, 2025
1 parent 30bfbeb commit 0a824a6
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 2 deletions.
Binary file modified paper/images/Result_flowchart.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
78 changes: 78 additions & 0 deletions paper/paper.bib
Original file line number Diff line number Diff line change
Expand Up @@ -215,3 +215,81 @@ @article{costa_li-ion_2022
pages = {105558},
file = {ScienceDirect Snapshot:/Users/tom/Zotero/storage/23YSFZT2/S2352152X22015493.html:text/html},
}

@Article{ harris2020array,
title = {Array programming with {NumPy}},
author = {Charles R. Harris and K. Jarrod Millman and St{\'{e}}fan J.
van der Walt and Ralf Gommers and Pauli Virtanen and David
Cournapeau and Eric Wieser and Julian Taylor and Sebastian
Berg and Nathaniel J. Smith and Robert Kern and Matti Picus
and Stephan Hoyer and Marten H. van Kerkwijk and Matthew
Brett and Allan Haldane and Jaime Fern{\'{a}}ndez del
R{\'{i}}o and Mark Wiebe and Pearu Peterson and Pierre
G{\'{e}}rard-Marchant and Kevin Sheppard and Tyler Reddy and
Warren Weckesser and Hameer Abbasi and Christoph Gohlke and
Travis E. Oliphant},
year = {2020},
month = sep,
journal = {Nature},
volume = {585},
number = {7825},
pages = {357--362},
doi = {10.1038/s41586-020-2649-2},
publisher = {Springer Science and Business Media {LLC}},
url = {https://doi.org/10.1038/s41586-020-2649-2}
}

@Article{Hunter:2007,
Author = {Hunter, J. D.},
Title = {Matplotlib: A 2D graphics environment},
Journal = {Computing in Science \& Engineering},
Volume = {9},
Number = {3},
Pages = {90--95},
abstract = {Matplotlib is a 2D graphics package used for Python for
application development, interactive scripting, and publication-quality
image generation across user interfaces and operating systems.},
publisher = {IEEE COMPUTER SOC},
doi = {10.1109/MCSE.2007.55},
year = 2007
}

@misc{hvplot2024,
title = {holoviz/hvplot},
author = {Philipp Rudiger},
copyright = {BSD-3-Clause},
url = {https://github.com/holoviz/hvplot},
abstract = {A high-level plotting API for pandas, dask, xarray, and networkx built on HoloViews},
urldate = {2025-01-02},
publisher = {HoloViz},
month = dec,
year = {2024},
note = {original-date: 2018-03-19T14:22:41Z},
keywords = {datashader, holoviews, holoviz, plotting},
}

@article{Waskom2021,
doi = {10.21105/joss.03021},
url = {https://doi.org/10.21105/joss.03021},
year = {2021},
publisher = {The Open Journal},
volume = {6},
number = {60},
pages = {3021},
author = {Michael L. Waskom},
title = {seaborn: statistical data visualization},
journal = {Journal of Open Source Software}
}

@software{pydantic,
title = {Pydantic},
author = {Samuel Colvin and Eric Jolibois and Hasan Ramezani and Adrian Garcia Badaracco and Terrence Dorsey and David Montague and Serge Matveenko and Marcelo Trylesinski and Sydney Runkle and David Hewitt and Alex Hall and Victorien Plot},
year = {2024},
version = {v2.10.4},
date = {2024-12-18},
abstract = {Pydantic is the most widely used data validation library for Python. Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. Define how data should be in pure, canonical Python 3.8+; validate it with Pydantic.},
keywords = {python, validation, parsing, json-schema, hints, typing},
license = {MIT},
url = {https://docs.pydantic.dev/latest/},
repository = {https://github.com/pydantic/pydantic},
}
4 changes: 2 additions & 2 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ In the Python community for battery research, `PyBaMM` [@sulzer_python_2021] has

Filtering a dataset to the section of interest is the first step of all data processing tasks, but can be time-consuming and cumbersome. Researchers often write new scripts for each experiment, in tools like MatLab, Python `Pandas` or Excel. These scripts are often not intended for sharing, so they may be difficult to read by others, which slows down the exchange of data and methods between researchers. Like `PyBaMM`, `PyProBE` has been written to be more user-friendly than existing tools, making it usable for those with little Python experience.

`PyBaMM` includes a library of interchangeable models, that allows users to test different approaches. There is no equivalent for interchanging methods for battery data processing, causing duplication of effort among researchers. A need therefore exists for an open-source data processing package where researchers can develop new analysis tools within a single framework. `PyProBE`'s **analysis** module is written to be modular and intuitive, with a consistent data structure and built-in data validation. As new methods are developed, they can be added and instantly compared to existing approaches.
`PyBaMM` includes a library of interchangeable models, that allows users to test different approaches. There is no equivalent for interchanging methods for battery data processing, causing duplication of effort among researchers. A need therefore exists for an open-source data processing package where researchers can develop new analysis tools within a single framework. `PyProBE`'s **analysis** module is written to be modular and intuitive, with a consistent data structure and built-in data validation with `Pydantic` [@pydantic]. As new methods are developed, they can be added and instantly compared to existing approaches.

# PyProBE Operating Principles
## Importing and Filtering Data
Expand All @@ -65,7 +65,7 @@ Once imported into a `PyProBE` **Procedure**, individual cycles and steps can be
## Post-processing tools
![Some of the methods that can be called on **Result** objects, and the objects that they return.\label{fig:result flowchart}](images/Result_flowchart.jpg)

\autoref{fig:result flowchart} shows how `PyProBE` **RawData** and **Result** objects can be used. **RawData** DataFrames contain only the columns of the `PyProBE` standardised format, while **Result** DataFrames contain any data columns produced from further analysis.
\autoref{fig:result flowchart} shows how `PyProBE` **RawData** and **Result** objects can be used. **RawData** DataFrames contain only the columns of the `PyProBE` standardised format, while **Result** DataFrames contain any data columns produced from further analysis.The data stored in `PyProBE` **Result** object can be returned as a `NumPy` [@harris2020array] array or `Polars` dataframe for further manipulation. They can also be immediately visualised with built-in plotting methods for `matplotlib` [@Hunter:2007] and `hvplot` [@hvplot2024], or passed to an included wrapper for `seaborn` [@Waskom2021].

The analysis module contains classes and functions which, when passed a **Result** object, enable additional functionality. The steps to smooth voltage data before differentiation are described \autoref{fig:analysis flowchart}.

Expand Down

0 comments on commit 0a824a6

Please sign in to comment.