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.2.1 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 v0.1.0, two things will bite first. Python 3.11 is now the floor. And an .itc archive written by v0.1.0 whose dimensions or variables carry a unit, description or long_name no longer verifies, because the state hash now covers that metadata; re-export those archives from their source data. Both are in the release notes with the reasoning.

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.

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 (v0.1.0: 10.5281/zenodo.21482649; the v0.2.0 DOI is minted when the tag is archived and is on the Zenodo record). 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.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 itaca 0.2.0
File Size Uploaded
itaca-0.2.0.tar.gz 631.0 kB Details

Built distribution (wheel)

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

Total release size: 814.5 kB

Release files / itaca-0.2.0.tar.gz

Download URL itaca-0.2.0.tar.gz
Size 631.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4e839c0eccf53c8084c04c8d5b71ba1d5efbfc1913df0128f83d3bfd0b580677
BLAKE2b-256 checksum
How to use checksums
03f328c94a077195a776e7f0f160aec79a4a81d25e3077a8e5439ccd8176c6af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.0

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

Download URL itaca-0.2.0-py3-none-any.whl
Size 183.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
abac5c837705de68b8c9eda0debc6d4f98f8f450cdd250a69b7cb0d427feb78f
BLAKE2b-256 checksum
How to use checksums
ac48a89d7aaa830916208a063dd572eeb651931d298cf176cd868a4858f7a418
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.0

Release history Release notifications | RSS feed

0.2.1

2 release files

This release

0.2.0 This release

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