A package for parsing, validating, analyzing, and simulating impedance spectra.
Project description
pyimpspec
A package for parsing, validating, analyzing, and simulating impedance spectra.
Table of contents
Installing
pyimpspec can be installed with pip.
pip install pyimpspec
Features
The sections below are merely brief descriptions of pyimpspec's features. See the Jupyter notebook for examples of those features in action.
Circuits
pyimpspec supports the creation of Circuit
objects, which can be used to simulate impedance spectra or to extract information from experimental data by means of complex non-linear least squares (CNLS) fitting.
The easiest way to create circuits is by letting pyimpspec parse a circuit description code (CDC).
An extended CDC syntax, which makes it possible to define e.g. initial values, is also supported.
Data parsing
Several file formats are supported by pyimpspec and the data within is used to generate a DataSet
object.
The file formats include:
- Files containing the data as character-separate values (CSV).
- Spreadsheets (
.xls
,.xlsx
,.ods
). - Ivium data files (
.idf
,.ids
). - Gamry data files (
.dta
).
Not all CSV files and spreadsheets are necessarily supported as-is but the parsing of those types of files should be quite flexible.
The parsers expect to find at least a column with frequencies and columns for either the real and imaginary parts of the impedance, or the absolute magnitude and the phase angle/shift.
The sign of the imaginary part of the impedance and/or the phase angle/shift may be negative, but then that has to be indicated in the column header with a -
prefix.
Additional file formats may be supported in the future.
DataSet
objects can also be created from dictionaries.
The contents of the DataSet
can be transformed into a pandas.DataFrame
object, which in turn can be used to output the data in a variety of formats (CSV, Markdown, LaTeX, etc.).
Kramers-Kronig tests
The three tests (i.e. complex, real, and imaginary) described in "A linear Kramers-Kronig transform test for immittance data validation" by Bernard A. Boukamp (Journal of the Electrochemical Society, 1995, 142, 6, pp. 1885-1894, DOI: 10.1149/1.2044210) are implemented in pyimpspec. A variant of the complex test that uses CNLS to perform the fitting is also included.
The procedure described in "A method for improving the robustness of linear Kramers-Kronig validity tests" by Michael Schönleber, Dino Klotz, and Ellen Ivers-Tiffée (Electrochimica Acta, 2014, 131, pp. 20-27, DOI: 10.1016/j.electacta.2014.01.034) is also implemented in pyimpspec.
The relevant functions return KramersKronigResult
objects that include:
- The fitted
Circuit
object that is generated as part of the test. - The pseudo chi-squared and the µ values.
- The frequencies of the data points that were tested.
- The complex impedances produced by the fitted circuit at each of the tested frequencies.
- The residuals of the real and imaginary parts of the impedances.
Equivalent circuit fitting
Fitting equivalent circuits to impedance spectra is easy with pyimpspec and generates a FittingResult
object.
The FittingResult
object includes:
- The fitted
Circuit
object. - Information about all of the parameters (e.g. final fitted value, estimated error, and whether or not the parameter had a fixed value during fitting).
- The frequencies that were used during the fitting.
- The complex impedances produced by the fitted circuit at each of the frequencies.
- The residuals of the real and imaginary parts of the impedances.
- The
MinimizerResult
object returned by lmfit.
Plotting
pyimpspec includes functions for visualizing Circuit
, DataSet
, KramersKronigResult
, and FittingResult
objects.
The only backend that is currently supported is matplotlib.
Contributors
See CONTRIBUTORS for a list of people who have contributed to the pyimpspec project.
License
Copyright 2022 pyimpspec developers
pyimpspec is licensed under the GPLv3 or later.
The licenses of pyimpspec's dependencies and/or sources of portions of code are included in the LICENSES folder.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyimpspec-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 796eac4b4a612ec6ec732598d9862c0db48e24875843b1325d51dff13a91166b |
|
MD5 | 34cfd3abf30ad84f1ec1fdfad157e891 |
|
BLAKE2b-256 | baf2e4f80213c512def868e18ada907189b43c08a38307eaeec1472c0a5e40d6 |