Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

eCAT logo eCAT: electroChemical Analysis Tools

eCAT is a Python package and app for loading, organizing, plotting, and analyzing electrochemical data. It supports tested workflows for cyclic voltammetry (CV), chronoamperometry and controlled-potential electrolysis (CA/CPE), chronopotentiometry (CP), and differential-pulse voltammetry (DPV).

The current beta emphasizes readable notebook workflows, explicit metadata and units, consistent plotting, and diagnostics that show how each electrochemical result was obtained.

Install

The package is distributed as ecat-electrochemistry, but imported as ecat:

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install --pre ecat-electrochemistry

For a reproducible install of this exact beta, pin the release:

python -m pip install "ecat-electrochemistry==0.1.0b7"

On Windows PowerShell, activate the environment with:

.venv\Scripts\Activate.ps1

To install the current tagged beta directly from GitHub instead, first make sure Git is installed:

python -m pip install --upgrade "git+https://github.com/ljelissiry/eCAT.git@v0.1.0b7"

Confirm that the notebook kernel sees the same environment:

python -c "import ecat as e; print(e.__version__)"

The beta version is 0.1.0b7.

Quickstart

Import eCAT and load a folder of instrument text exports:

import ecat as e

data = e.get_data({
    "folder path": "path/to/exported/files",
    "recursive search": True,
    "reference mode": "none",
})

get_data() recognizes tested CH, BASI, and EC-Lab ASCII workflows and preserves parser warnings and metadata on each object. Use e.describe_options() to discover public functions, or pass a function name to inspect its options:

e.describe_options("get_data")
e.show(data)

Plot one CV and run a peak measurement:

cv = data[0]
cv.plot({"title": True})

peak = cv.peak_current({
    "segment": 1,
    "guess potential": -1.0,
    "plot all": True,
})

Filter, sort, and group object collections with their parsed metadata:

co2 = e.filter(data, {"gas": "CO2"}, {"print": False})
co2 = e.sort(co2, ["scan rate"], {"print": False})
by_scan_rate = e.group(co2, ["scan rate"], {"print": False})

Use multiplot() for an overlay. Labels, colors, units, and colorbars can be inferred from the objects or set explicitly:

e.multiplot(co2, {
    "title": "CO$_2$ Series",
    "legend": "auto",
    "y unit": "uA",
})

Quickstart Notebooks

The numbered notebooks are runnable guides that build from installation through simulation and fitting:

eCAT App

Install the optional app dependencies and launch the local desktop/web app:

python -m pip install --pre "ecat-electrochemistry[app]"
ecat-app

The app can also be launched from Python:

import ecat as e

e.open_app()               # native window
e.open_app(browser=True)   # local browser
e.open_app(inline=True)    # notebook, when supported

Browser mode runs locally at http://127.0.0.1:8050 by default and uses the next available port if needed. The installed app includes public CV, CA/CPE, and CP examples.

Simulation

CV simulation and fitting use ElectroKitty, developed by Ožbej Vodeb, as an optional backend:

python -m pip install --pre "ecat-electrochemistry[simulation]"

The simulation extra uses the standard PyPI ElectroKitty package (minimum 1.0.11.6); a fresh installation selects the latest compatible release. To update an existing installation, run python -m pip install --upgrade --upgrade-strategy eager "ecat-electrochemistry[simulation]". Experimental local-equilibrium and patched-backend integrations are not included in this release.

Without this extra, the rest of eCAT still imports and runs. Simulation calls and the app Model tab provide an installation message when the backend is unavailable.

from ecat import simulation as sim

program = sim.cv_program(
    0.0,
    E_low=-1.5,
    E_high=0.5,
    scan_rate=0.1,
    segments=2,
)

See notebooks 10-12 for complete simulation and fitting examples. eCAT is MIT licensed; ElectroKitty is distributed under the BSD 3-Clause License.

Beta Scope

The recommended beta path covers CH .txt, BASI .txt and older BASI-Epsilon .dat, plus EC-Lab ASCII .mpt or compatible .txt exports. Generic numeric text files have a tested fallback parser, while binary files such as BioLogic .mpr are rejected with conversion guidance.

See the beta scope, API reference, and troubleshooting guide for current support boundaries and function details.

Feedback

Report beta bugs with the eCAT Beta Bug / Feedback Report. Include the smallest example file possible, the code you ran, expected and actual behavior, and any traceback or screenshot.

License And Development

eCAT is MIT licensed. See the license and third-party notices.

For local development:

git clone https://github.com/ljelissiry/eCAT.git
cd eCAT
python -m pip install -e ".[dev]"
python -m ruff check src apps/workbench/src tests packaging
pytest -q

Release maintainers should follow the release guide.

Metadata

Release files for ecat-electrochemistry 0.1.0b7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ecat-electrochemistry 0.1.0b7
File Size Uploaded
ecat_electrochemistry-0.1.0b7.tar.gz 2.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ecat-electrochemistry 0.1.0b7
File Interpreter ABI Platform
ecat_electrochemistry-0.1.0b7-py3-none-any.whl Python 3 none any Details

Total release size: 3.7 MB

Release files / ecat_electrochemistry-0.1.0b7.tar.gz

Download URL ecat_electrochemistry-0.1.0b7.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
f0eefeced48135566e01b26557cb2973cfe0b7fdf924364c31eb61307f48c802
BLAKE2b-256 checksum
How to use checksums
f7856dca09a70a63860891c09d8f7b8cd05ed719b9401dbb64a3ece750bc7491
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / ecat_electrochemistry-0.1.0b7-py3-none-any.whl

Download URL ecat_electrochemistry-0.1.0b7-py3-none-any.whl
Size 1.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
c32bc0085d53735ad742e25f6736c6a9e4ba7244340647d067ed4545608397b9
BLAKE2b-256 checksum
How to use checksums
5390745c649cd0a26349ce3ab958e62e26df67e881fff47c967042f958da5a0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0b7 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page