This release is a pre-release and may not be stable for production use.
openauc-io
Open-source Python tools for ingesting, validating, plotting, generating, and archiving analytical ultracentrifugation data.
Documentation · Quickstart · CLI guide · Report a bug · Ask a question
Current capabilities
- Generic long- and wide-format CSV/TSV ingestion
- Typed canonical AUC experiment model
- Structural validation and analysis-readiness reporting
- Shared and per-scan radial-axis support
- Scan plotting without interpolation or regridding
- Checksum-verified AUCX archives
- Deterministic illustrative synthetic data generation
- Python API and command-line interface
[!IMPORTANT] No scientific AUC analysis is implemented. openauc-io does not currently perform sedimentation fitting, molecular-weight estimation, meniscus detection, convection assessment, scientific quality control, or physically validated Lamm-equation simulation.
Installation
Not on PyPI. From a clone:
git clone https://github.com/ronfinn/openauc-io.git
cd openauc-io
uv sync --all-groups
uv run openauc version # 0.1.0a1
Or install a locally built wheel:
uv build
uv pip install dist/openauc-0.1.0a1-py3-none-any.whl
Requires Python 3.11, 3.12 or 3.13. Full detail: Installation.
End-to-end example
import openauc
from openauc.plotting import plot_scans
experiment = openauc.load("examples/data/demo_experiment")
print(experiment.summary())
report = experiment.validate()
ax = plot_scans(experiment)
experiment.export("experiment.aucx")
restored = openauc.load("experiment.aucx")
assert restored.to_dict() == experiment.to_dict()
CLI quickstart
uv run openauc generate demo.aucx --format aucx --scenario moving-boundary \
--scans 20 --points 300 --seed 42
uv run openauc inspect demo.aucx
uv run openauc validate demo.aucx --readiness
uv run openauc convert examples/data/demo_experiment archive.aucx
Exit codes: 0 success, 1 structural validation failed, 2 input error,
3 output exists. See the
CLI reference.
Scope
The first alpha provides generic long/wide CSV/TSV import, JSON/YAML manifests,
a canonical experiment model, structural validation, scan summaries, basic
plotting, the versioned .aucx archive with checksums and provenance, synthetic
data generation, a CLI, and documentation.
This project is not a replacement for SEDFIT, SEDPHAT, UltraScan, GUSSI or other established AUC analysis software. It performs no sedimentation modelling or fitting. It is an independent, clean-room implementation and does not copy code or interfaces from those tools.
Four ideas are kept deliberately distinct: representation, structural
validation, analysis readiness, and scientific suitability — the last
of which is always reported as NOT_ASSESSED. See
Scientific boundaries.
Documentation
| Five-minute quickstart | Try it with generated data |
| Tutorials | Complete Python and CLI workflows |
| How-to guides | Task-shaped recipes and troubleshooting |
| Concepts | Data model, validation tiers, readiness |
| Formats | Generic delimited, manifest v1, AUCX |
| Python API | Curated reference |
| Known limitations | What is missing or bounded |
Build the site locally:
uv run mkdocs serve # http://127.0.0.1:8000/
Development
uv sync --all-groups
uv run ruff check . # lint
uv run ruff format . # format
uv run mypy # type-check (strict)
uv run pytest # tests
uv run mkdocs build --strict
Or run all of those source-tree gates in one command:
uv run python scripts/release_check.py
It checks the source tree only — it builds, tags, releases and publishes nothing. Building and verifying real distribution artifacts, clean-environment smoke testing, tagging, the GitHub release and the PyPI upload are separate steps, all documented in the release checklist.
See CONTRIBUTING.md and the Architecture Decision Records
under docs/decisions/.
Licence
Apache License 2.0. Copyright 2026 Ron Finn. See LICENSE and NOTICE.
Citation
If you use openauc-io, please cite it using the metadata in
CITATION.cff.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openauc-0.1.0a1.tar.gz.
File metadata
- Download URL: openauc-0.1.0a1.tar.gz
- Upload date:
- Size: 477.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fb7a10bdd7b6f6db3f8413bd0432601018d87ab7eebf355a62e1a1a675d1126
|
|
| MD5 |
9fe5606c027dec57a622245c4d4e4135
|
|
| BLAKE2b-256 |
12a22decbd2a4592f3a1eb0fc4dcd4e1fdd7f8d725a12668028c8214fc507adc
|
Provenance
The following attestation bundles were made for openauc-0.1.0a1.tar.gz:
Publisher:
publish.yml on ronfinn/openauc-io
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openauc-0.1.0a1.tar.gz -
Subject digest:
0fb7a10bdd7b6f6db3f8413bd0432601018d87ab7eebf355a62e1a1a675d1126 - Sigstore transparency entry: 2463130381
- Sigstore integration time:
-
Permalink:
ronfinn/openauc-io@84dfe5c3560f21a199dd38afa3c1ad7afcaa830d -
Branch / Tag:
refs/tags/v0.1.0a1 - Owner: https://github.com/ronfinn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@84dfe5c3560f21a199dd38afa3c1ad7afcaa830d -
Trigger Event:
release
-
Statement type:
File details
Details for the file openauc-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: openauc-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 91.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f93b160e204197b7485a235516fd31abdc2a800c7756c0ec28a450bd2f52a4d
|
|
| MD5 |
93e5f36909bf1ed44de9e1563fb5196c
|
|
| BLAKE2b-256 |
0e7a86a226d1ff95d3f2e450247316d971fade793b9324ae3dd3a4618b4749a4
|
Provenance
The following attestation bundles were made for openauc-0.1.0a1-py3-none-any.whl:
Publisher:
publish.yml on ronfinn/openauc-io
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openauc-0.1.0a1-py3-none-any.whl -
Subject digest:
1f93b160e204197b7485a235516fd31abdc2a800c7756c0ec28a450bd2f52a4d - Sigstore transparency entry: 2463130394
- Sigstore integration time:
-
Permalink:
ronfinn/openauc-io@84dfe5c3560f21a199dd38afa3c1ad7afcaa830d -
Branch / Tag:
refs/tags/v0.1.0a1 - Owner: https://github.com/ronfinn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@84dfe5c3560f21a199dd38afa3c1ad7afcaa830d -
Trigger Event:
release
-
Statement type: