Skip to main content

autoSAFE logo


The latest version of autosafe can be found on PyPI. Information on what versions of Python autosafe supports can be found on PyPI. Python tests (pytest) Coverage Docs status uv Ruff ty prek REUSE status Conventional Commits

Reference implementation of the autoSAFE specification.

autoSAFE can derive semantically correct Operational Design Domains (ODDs) purely from data. This allows to automatically generate ODDs for machine learning-based functions. The use cases range from data-driven ODD definition over ODD monitoring to retrofitting existing functions with ODDs. Moreover, if no ODD is given for a certain dataset, autoSAFE can derive one automatically to ensure safe operations of the resulting AI-based system

Installation

We recommend using uv to manage the virtual environment and dependencies. Simply running uv sync will create a virtual environment and install all dependencies as specified in pyproject.toml.

CVXOPT

Users might want to optionally install CVXOPT for enhanced performance. However, as CVXOPT is licensed under GPL-v3, it is not included as a dependency by default. Moreover, CVXOPT is not compatible with Python versions >= 3.14 or free-threaded builds as of now.

Usage

CLI

autoSAFE provides a command-line interface (CLI) for easy interaction. After installing the package, you can use the autosafe command in your terminal:

uv run autosafe --help

This will list all available commands and options. They are described in detail in the documentation.

Common CLI Commands

Here are the most frequently used commands:

Monte Carlo Sampling and Evaluation

# Run Monte Carlo sampling with default 2D box ODD
autosafe montecarlo sample --dim 2 --odd-limits 5.0 --samples 1000 --filename mc_results.json

# Evaluate results and generate precision/recall plots
autosafe montecarlo evaluate mc_results.json

ODD Comparison Methods

# Quick comparison with default parameters
autosafe comparison quick data/WineQT.csv --export results.json

# Full comparison with custom parameters
autosafe comparison evaluate data/WineQT.csv \
    --methods knn kmeans density \
    --knn-k 5 --kmeans-clusters 4 --density-gamma 0.01

Custom ODD with Inequalities

# Use YAML config for polytope with inequality constraints
autosafe montecarlo sample --odd-config odd_config.yaml

API

autoSAFE also offers a Python API for more advanced usage. To start, you can read your data from a CSV file and create an autoSAFE ODD as follows:

import autosafe as af
import numpy as np

# Load data from a CSV file
odd = af.from_csv(af.ROOT_FOLDER / "data" / "iris.csv")

# Query the ODD for a new data point
affinity_threshold = 0.8
data_point = np.array([[5.1, 3.5, 1.4, 0.2]])
is_within_odd = odd(data_point) >= affinity_threshold
print(f"The data point is within the ODD: {is_within_odd}")

De-duplication of repeated-visit anchors is OFF by default (enabling it changes the anchor set, so previously computed results are not comparable); see docs/pages/deduplication.rst for the full policy and pipeline details:

from autosafe.deduplication import exact_equality_policy

policy = exact_equality_policy(n_dims=4)
odd = af.from_csv(af.ROOT_FOLDER / "data" / "iris.csv", dedup_policy=policy)

Developing

Pre-Commit Hooks

We use prek to manage pre-commit hooks for code quality and consistency. To install the pre-commit hooks, run the following command from the project root:

uv run prek install

Tests

We use pytest for testing. To run the test suite, execute the following command from the project root:

uv run pytest

Reproducing the paper's results

The result artifacts underlying every figure and table in the paper, the archive record (once published), and the exact commands to regenerate them from scratch are documented in REPRODUCTION.md.

License

Copyright and license information are provided in accordance to the REUSE Specification 3.3.

Metadata

Release files for autosafe 2.0.0

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

Source distribution (sdist)

Source distribution for autosafe 2.0.0
File Size Uploaded
autosafe-2.0.0.tar.gz 201.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for autosafe 2.0.0
File Interpreter ABI Platform
autosafe-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 455.5 kB

Release files / autosafe-2.0.0.tar.gz

Download URL autosafe-2.0.0.tar.gz
Size 201.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1ec91158d0ccfd8e881aefc05ce163163b5a47881c1188747763a5b53b7afeb2
BLAKE2b-256 checksum
How to use checksums
b65a3623b74ec14e69ae9cc5f1087b81d3c207195a8e185cb43ba00b4c19533d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / autosafe-2.0.0-py3-none-any.whl

Download URL autosafe-2.0.0-py3-none-any.whl
Size 253.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ef44034a3d27198d43361a7deac60614d6780d7bfcad52b5d614ef48249c408d
BLAKE2b-256 checksum
How to use checksums
82520df36f6e6f2bd4e2b4b468d249144a999a44abdd4e24024a7b787cfadd6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.2.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.1

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