Metadata-Version: 2.4
Name: aurora-cycler-manager
Version: 0.11.5
Summary: Battery cycler management, data analysis and visualisation.
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-Expression: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
License-File: LICENSE
Requires-Dist: aurora-unicycler>=0.4.5
Requires-Dist: battinfoconverter-backend>=3.2.0
Requires-Dist: dash[diskcache]>=4.1.0
Requires-Dist: dash_ag_grid>=33.3.3
Requires-Dist: dash_bootstrap_components>=2.0.3
Requires-Dist: dash_mantine_components>=2.6.1
Requires-Dist: dash_resizable_panels>=0.1.0
Requires-Dist: defusedxml>=0.7.1
Requires-Dist: cryptography>=46.0.7
Requires-Dist: fastnda>=1.1.0
Requires-Dist: h5py>=3.14.0
Requires-Dist: numpy>=2.2.6
Requires-Dist: orjson>=3.11.6
Requires-Dist: pandas>=2.3.1
Requires-Dist: paramiko>=3.5.1
Requires-Dist: platformdirs>=4.3.8
Requires-Dist: polars>=1.36.1
Requires-Dist: pyarrow>=23.0.1
Requires-Dist: python-calamine>=0.4.0
Requires-Dist: scp>=0.15.0
Requires-Dist: sqlalchemy>=2.0.46
Requires-Dist: tables>=3.10.1
Requires-Dist: tsdownsample>=0.1.4.1
Requires-Dist: typing-extensions>=4.15.0
Requires-Dist: tzlocal>=5.3.1
Requires-Dist: urllib3>=2.7.0
Requires-Dist: waitress>=3.0.2
Requires-Dist: xlsxwriter>=3.2.9
Requires-Dist: xmltodict>=0.14.2
Requires-Dist: yadg>=6.2.2
Requires-Dist: werkzeug>=3.1.6
Requires-Dist: bumpver>=2025.1131 ; extra == "dev"
Requires-Dist: mkdocstrings[python]>=1.0.4 ; extra == "dev"
Requires-Dist: pre-commit>=4.6.0 ; extra == "dev"
Requires-Dist: pytest>=9.0.3 ; extra == "dev"
Requires-Dist: ruff>=0.15.15 ; extra == "dev"
Requires-Dist: virtualenv>=20.36.1 ; extra == "dev"
Requires-Dist: zensical>=0.0.33 ; extra == "dev"
Requires-Dist: psycopg2-binary>=2.9.11 ; extra == "pg"
Provides-Extra: dev
Provides-Extra: pg

<h1 align="center">
  <img src="https://github.com/user-attachments/assets/931d2c11-db04-41b6-995a-ef66ead759fc" width="500" align="center" alt="Aurora cycler manager">
</h1>

<br>

[![Docs](https://img.shields.io/badge/docs-gh--pages-blue.svg)](https://empaeconversion.github.io/aurora-cycler-manager/)
[![PyPI version](https://img.shields.io/pypi/v/aurora-cycler-manager.svg)](https://pypi.org/project/aurora-cycler-manager/)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/empaeconversion/aurora-cycler-manager/blob/main/LICENSE)
[![Python Versions](https://img.shields.io/pypi/pyversions/aurora-cycler-manager.svg)](https://pypi.org/project/aurora-cycler-manager/)
[![Checks](https://img.shields.io/github/actions/workflow/status/empaeconversion/aurora-cycler-manager/CI.yml)](https://github.com/EmpaEconversion/aurora-cycler-manager/actions/workflows/CI.yml)
[![Coverage](https://img.shields.io/codecov/c/github/empaeconversion/aurora-cycler-manager)](https://app.codecov.io/gh/EmpaEconversion/aurora-cycler-manager)

[Documentation](https://empaeconversion.github.io/aurora-cycler-manager/)

Cycler control, data pipeline, and data visualisation from Empa's robotic battery lab.

- Track samples, experiments and results.
- Control Neware and Biologic cyclers on multiple machines from one place.
- Automatically collect and analyse cycling data.
- Conveniently control cyclers and explore data with a graphical web-app.

### Controlling cyclers

[`aurora-biologic`](https://github.com/EmpaEConversion/aurora-biologic) and [`aurora-neware`](https://github.com/EmpaEConversion/aurora-neware) provide a Python and command-line interface to query, start and stop cyclers, allowing programmatic and remote control.

Experiments can be submitted with a cycler-specific file (e.g. .xml or .mps), or an [`aurora-unicycler`](https://github.com/EmpaEConversion/aurora-unicycler) protocol, which is automatically converted to the appropriate format on submission.

Experiments can be defined with C-rates and without sample names - the program will automatically attach sample info and calculate the current required based on the sample information in the database.

### Data processing

Data is automatically gathered from cyclers, all incoming files are converted to one open standard - accepts Biologic .mpr, Neware .ndax, Neware .xlsx. Incoming data is converted to fast, open, and space-efficient parquet format.

Data is converted using [`fastnda`](https://github.com/g-kimbell/fastnda) and [`yadg`](https://github.com/dgbowl/yadg), processing the raw binary data directly. This is much faster and more space efficient than exporting to text or Excel formats from these cyclers.

Time-series data is automatically analysed to extract per-cycle and summary data.

### Visualisation

A web-app based on `Plotly Dash` allows rapid, interactive viewing of time-series and per-cycle data, as well as the ability to control experiments on cyclers through the graphical interface.

## Quickstart


Install with Python>=3.10:

```shell
pip install aurora-cycler-manager
```

Update an existing installation:
```shell
pip install aurora-cycler-manager --upgrade
```

Connect to an existing project:
```shell
aurora-setup connect "path/to/your/project"
```

Create a new project:
```shell
aurora-setup init "path/to/your/project"
```
You must then fill out the configuration file.

Start the app:
```shell
aurora-app
```

Start the daemon:
```shell
aurora-daemon
```

You interact with cyclers, you need password-less SSH access to the cycler PCs.
To control cyclers, [`aurora-biologic`](https://github.com/empaeconversion/aurora-biologic) or [`aurora-neware`](https://github.com/empaeconversion/aurora-neware) needs to be installed on the cycler PC.

Read the [documentation](https://empaeconversion.github.io/aurora-cycler-manager/) for more detail.

## Acknowledgements

This software was developed at the Laboratory of Materials for Energy Conversion at Empa, the Swiss Federal Laboratories for Materials Science and Technology, and supported by funding from the [IntelLiGent](https://heuintelligent.eu/) project from the European Union’s research and innovation program under grant agreement No. 101069765, and from the Swiss State Secretariat for Education, Research, and Innovation (SERI) under contract No. 22.001422.

<img src="https://github.com/user-attachments/assets/373d30b2-a7a4-4158-a3d8-f76e3a45a508#gh-light-mode-only" height="100" alt="IntelLiGent logo">
<img src="https://github.com/user-attachments/assets/9d003d4f-af2f-497a-8560-d228cc93177c#gh-dark-mode-only" height="100" alt="IntelLiGent logo">&nbsp;&nbsp;&nbsp;&nbsp;
<img src="https://github.com/user-attachments/assets/1d32a635-703b-432c-9d42-02e07d94e9a9" height="100" alt="EU flag">&nbsp;&nbsp;&nbsp;&nbsp;
<img src="https://github.com/user-attachments/assets/cd410b39-5989-47e5-b502-594d9a8f5ae1" height="100" alt="Swiss secretariat">

