Skip to main content

ITACA

PyPI DOI CI

Integrated Toolkit for Aerospace Computation and Analysis

From data to wisdom.

import itaca as itc

ITACA is a Python library for rigorous engineering data management, analysis, and computation, with a primary focus on aerospace applications. It manages multidimensional experimental and numerical datasets (wind tunnel campaigns, CFD post-processing, flight-test data, engineering computations) with mandatory provenance, automatic GUM-compliant uncertainty propagation including covariance, and origin tags for every value. Where a propagation rule is not yet frozen, the operation raises instead of returning a number: see Status below for which five. The plotting layer (ItcFigure, the AIAA style, the matplotlib backend) is roadmapped for v0.3.0 and is not in the library today.

Installation

pip install itaca

ITACA needs Python 3.11, 3.12 or 3.13, and depends only on NumPy. The pandas bridge (itc.load(df), db.to_pandas()) is optional:

pip install "itaca[pandas]"

Quickstart

import numpy as np
import itaca as itc

# Load, then declare which column is the sweep dimension.
rows = np.column_stack([[0.0, 2.0, 4.0], [10.0, 12.0, 14.0]])
db = itc.load(rows, names=["alpha", "FZ"]).pivot(dims=["alpha"])

# Assign an uncertainty; it propagates by the GUM rules, automatically.
db = db.set_uncertainty({"FZ": 0.05})
db = db.compute("CZ = FZ / 100.0")

print(db.vars["CZ"].values)             # [0.1  0.12 0.14]
print(db.uncertainty.systematic["CZ"])  # [0.0005 0.0005 0.0005]
print(db.history)                       # every step, in order

Every operation returns a new frame and records itself in History, so nothing above mutates db. See examples/ for a complete synthetic wind tunnel walkthrough.

Status

Pre-release, and the API is not frozen. Two milestones have shipped.

Milestone M0, released as v0.1.0: loading in all modes, inspection and diagnostics, structural operations, two-component GUM uncertainty propagation with covariance, string-equation derivation, explicit combination, exports, and the .itc native format with state-hash revalidation.

Milestone M1, released as v0.2.0: the analysis operations (expand, concat, interpolate, average, integrate, smooth, diff, fitmodel, fitvalue), the axes and vector-group system with rotation and moment transfer, replayable pipelines and .itc_pipe, and reusable processors defined by an .itceq equation file.

Read the release notes before you rely on uncertainty. Five operations REFUSE to propagate it rather than guessing: smooth, diff, fitmodel, fitvalue, and fill(method="polyfit"). Each raises when the frame carries an uncertainty, because its propagation rule is not yet frozen. The notes also carry a Known open section listing the defects known open in this release, several of which produce a wrong number silently.

Upgrading from an earlier version, three things will bite first.

An .itc archive written by ANY earlier version no longer opens: the format is at itaca-itc/3 and its two predecessors are refused by name, with a message saying what the archive lacks. Re-export from the source data, or, if the archive is your only copy, open it in a scratch environment on the version that wrote it and export to CSV or JSON first.

The archives are refused rather than read, and the reason is the point of the change: neither predecessor records a spatial coordinate system, so a frame saved in Polar coordinates would come back Cartesian and integrate against the wrong area element. Reading them would reintroduce the defect the new schema exists to close, so silent reinterpretation is not offered as the remedy.

Code that derived quantities from a common root now RAISES UncertaintyLineageError where it previously returned a number. The number was wrong, by up to 3.6x on the measured case, and the message names the single expression that is already correct or the set_correlation call that settles it.

Python 3.11 is the floor, as of v0.2.0.

The SRS is versioned in docs/srs/; its document version and revision are stated on the SRS title page and in the revision history table. Releases follow the incremental roadmap in the SRS Chapter 10: each milestone ships on PyPI with a Zenodo DOI.

Design record

  • docs/srs/: the SRS LaTeX sources, the authoritative reference for what ITACA must do and how it is built. First workspace-tracked version: document 0.1.0, 2026-07-21.
  • docs/DECISIONS.md: the architectural decisions with long-form rationale (the file's own header carries the current range).
  • docs/OPEN_QUESTIONS.md: the design questions with resolutions.
  • docs/SISTER_PYFLIGHTSTREAM.md: the co-developed sister library (DD-22, DD-23): division of labor, the cross-requirement convention, and the shared review process.
  • RELEASING.md: how a release is cut, and the one piece of configuration that lives on PyPI rather than in this repository, so no test here can check it (DD-45).

Core convictions

  1. Data management before analysis: a result is only as trustworthy as the pipeline that produced it.
  2. Provenance is mandatory: every dataset knows where it came from, what was done to it, by whom, and when.
  3. Fail fast and loud: ambiguity is an error, silent fallbacks are defects.
  4. Uncertainty is native: two-component GUM propagation with covariance, not an afterthought.
  5. Test-driven, coverage at or above 90 percent, minimal API surface, NumPy-only core.

License and citation

MIT License (see LICENSE). Citation metadata lives in CITATION.cff. Tagged releases are mirrored on Zenodo: cite the concept DOI 10.5281/zenodo.21482648 for the latest version, or the per-release DOI, which is on the Zenodo record for each archived version (v0.1.0: 10.5281/zenodo.21482649). A software paper (JOSS or SoftwareX) is planned after the API stabilizes.

Author

Geovana Neves, aerospace engineer (aeropropulsive integration and wind tunnel testing), ITA / TU Delft.

Release files for itaca 0.2.1

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

Source distribution (sdist)

Source distribution for itaca 0.2.1
File Size Uploaded
itaca-0.2.1.tar.gz 881.6 kB Details

Built distribution (wheel)

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

Total release size: 1.1 MB

Release files / itaca-0.2.1.tar.gz

Download URL itaca-0.2.1.tar.gz
Size 881.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0c435b1835438240438445b7bece29c60a1e48870b6c436c5f98a5eeb0455a4c
BLAKE2b-256 checksum
How to use checksums
91367673c3790507a2af3ad4929dd0fc03dd5fef52344e8b4bcfb7cc59be7cab
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 Aug 2, 2026.

Transparency log

Release files / itaca-0.2.1-py3-none-any.whl

Download URL itaca-0.2.1-py3-none-any.whl
Size 220.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dc66dfdaf9707b183c6eec31c92270cbd22538a945fbd8f82712f600073c4494
BLAKE2b-256 checksum
How to use checksums
0d0783d5460586a8dd5382aa3d839b860df0efeb70e68499e3e68196b20963af
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 Aug 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

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