Skip to main content

A universal cycling protocol

Project description

Docs PyPI version License Python Versions Build

aurora-biologic logo aurora-biologic logo


Overview

aurora-unicycler defines a universal battery cycling protocol that can be exported to different formats.

See the docs for more details.

Features

  • Define a cycling protocol in Python or JSON
  • Export the protocol to different formats
    • Biologic .mps
    • Neware .xml
    • tomato 0.2.3 .json
    • PyBaMM string list
    • BattINFO .jsonld

This is particularly useful for high-throughput battery experiments, as protocols can be programmatically defined, and sample IDs and capacities can be attached at the last second.

Check out our standalone APIs for controlling cyclers with Python or command line:

We also have a full application with a GUI, including a graphical interface to create these protocols:

Installation

Install on Python >3.10 with

pip install aurora-unicycler

Quick start

Define a protocol using Python

from aurora_unicycler import (
    ConstantCurrent,
    ConstantVoltage,
    Loop,
    Protocol,
    RecordParams,
    SafetyParams,
    Tag,
)

my_protocol = Protocol(
    record = RecordParams(
        time_s=10,
        voltage_V=0.1,
    ),
    safety = SafetyParams(
        max_voltage_V=5,
        min_voltage_V=0,
        max_current_mA=10,
        min_current_mA=-10,
    ),
    method = [
        Tag(
            tag="my_tag",
        ),
        ConstantCurrent(
            rate_C=0.5,
            until_voltage_V=4.2,
            until_time_s=3*60*60,
        ),
        ConstantVoltage(
            voltage_V=4.2,
            until_rate_C=0.05,
            until_time_s=60*60,
        ),
        ConstantCurrent(
            rate_C=-0.5,
            until_voltage_V=3.5,
            until_time_s=3*60*60,
        ),
        Loop(
            loop_to="my_tag",
            cycle_count=100,
        )
    ]
)

You can also create a protocol from a python dictionary or JSON - you will not get type checking in an IDE, but it will still validate at runtime.

my_protocol = Protocol.from_dict({
    "record": {"time_s": 10, "voltage_V": 0.1}
    "safety": {"max_voltage_V": 5}
    "method": [
        {"step": "open_circuit_voltage", "until_time_s": 1},
        {"step": "tag", "tag": "tag1"},
        {"step": "constant_current", "rate_C": 0.5, "until_voltage_V": 4.2},
        {"step": "constant_voltage", "voltage_V": 4.2, "until_rate_C": 0.05},
        {"step": "constant_current", "rate_C": -0.5, "until_voltage_V": 3.0},
        {"step": "loop", "loop_to": "tag1", "cycle_count": 100},
    ],
})
my_protocol = Protocol.from_json("path/to/file.json")

You can then export the protocol to different formats, e.g.

my_protocol.to_biologic_mps(
    sample_name="test-sample",
    capacity_mAh=45,
    save_path="some/location/settings.mps",
)

my_protocol.to_neware_xml(
    sample_name="test-sample",
    capacity_mAh=45,
    save_path="some/location/protocol.xml",
)

my_protocol.to_battinfo_jsonld(
    capacity_mAh=45,
    include_context=True,
    save_path="some/location/protocol.jsonld",
)

See the docs for more details and the full API reference.

Contributors

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 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.

IntelLiGent logo IntelLiGent logo     EU flag     Swiss secretariat

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aurora_unicycler-0.4.3.tar.gz (84.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aurora_unicycler-0.4.3-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file aurora_unicycler-0.4.3.tar.gz.

File metadata

  • Download URL: aurora_unicycler-0.4.3.tar.gz
  • Upload date:
  • Size: 84.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.5

File hashes

Hashes for aurora_unicycler-0.4.3.tar.gz
Algorithm Hash digest
SHA256 89567d882b61307d2cfa569349223b11ba27b1ce8a6cf0afd010353a06bcaf78
MD5 8a070ad44f9c3d55fa16de1df410b2d9
BLAKE2b-256 5971919de77af7d1a2b5982ae6a196910ec7b53be86fae98df7a0047794c2919

See more details on using hashes here.

File details

Details for the file aurora_unicycler-0.4.3-py3-none-any.whl.

File metadata

File hashes

Hashes for aurora_unicycler-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 304c9095b6fb761505a5b9543bb918c6f6c70605d8e32e8ba8d3f38e05903958
MD5 0b6546e2180d39ffacbf9a7c2f016198
BLAKE2b-256 a52d7c2bde33f9700f6fb436e7599e36dafbfe1b8e66ca714435e81f96dc359b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page