Skip to main content

Condor

https://github.com/nasa/simupy-flight/actions/workflows/docs.yml/badge.svg https://img.shields.io/badge/License-NOSA-green.svg https://img.shields.io/github/release/nasa/condor.svg https://joss.theoj.org/papers/10.21105/joss.08859/status.svg

Condor is a new mathematical modeling framework for Python, developed at NASA’s Ames Research Center. Initial development began in April 2023 to address model implementation challenges for aircraft synthesis and robust orbital trajectory design. The goal is for Condor to help evaluate numerical models and then get out of the way.

One key aspect to achieve this goal was to create an API that looked as much like the mathematical description as possible with as little distraction from programming cruft as possible. To best understand this approach, we can consider a simple benchmark problem which consists of a set of coupled algebraic expressions. This can be represented as a system of algebraic equations:

import condor as co

class Coupling(co.AlgebraicSystem):
    x = parameter(shape=3)
    y1 = variable(initializer=1.)
    y2 = variable(initializer=1.)

    residual(y1 == x[0] ** 2 + x[1] + x[2] - 0.2 * y2)
    residual(y2 == y1**0.5 + x[0] + x[1])

This parametric model can be evaluated by providing the values for the parameters; the resulting object has values for its inputs and outputs bound, so the solved values for y1 and y2 can be accessed easily:

coupling = Coupling([5., 2., 1]) # evaluate the model numerically
print(coupling.y1, coupling.y2) # individual elements are bound numerically
print(coupling.variable) # fields are bound as a dataclass

Models can also be seamlessly built-up, with parent models accessing any input or output of models embedded within them. For example, we can optimize this system of algebraic equations by embedding it within an optimization problem:

from condor.backend import operators as ops

class Sellar(co.OptimizationProblem):
    x = variable(shape=3, lower_bound=0, upper_bound=10)
    coupling = Coupling(x)
    y1, y2 = coupling

    objective = x[2]**2 + x[1] + y1 + ops.exp(-y2)
    constraint(y1 >= 3.16)
    constraint(24. >= y2)

After the model is solved, the embedded model can be accessed directly:

Sellar.set_initial(x=[5,2,1])
sellar = Sellar()
print(sellar.objective) # scalar value
print(sellar.constraint) # field
print(sellar.coupling.y1) # embedded model element

NASA’s Condor is a framework for mathematical modeling of engineering systems in Python, written for engineers with deadlines.

Installation

Condor is available on PyPI, so you can install with pip:

pip install condor

Optionally, you can include the dependencies to run the examples:

pip install condor[examples]

Contributing

Please feel free to share any thoughts or opinions about the design and implementation of this software by opening an issue on GitHub. Constructive feedback is welcomed and appreciated.

Bug fix pull requests are always welcome. For feature additions, breaking changes, etc. check if there is an open issue discussing the change and reference it in the pull request. If there isn’t one, it is recommended to open one with your rationale for the change before spending significant time preparing the pull request.

Ideally, new/changed functionality should come with tests and documentation. If you are new to contributing, it is perfectly fine to open a work-in-progress pull request and have it iteratively reviewed.

For pull requests to be accepted, all contributors must have a contributor’s agreement on file with NASA. We will provide contributors with additional information during the review process.

Development

Clone the repository and install it in editable mode along with the dev dependency group in a virtual environment:

pip install --upgrade pip
pip install -e . --group dev

A pre-commit configuration is available to automatically format and fix linting issues when creating a commit. Install pre-commit either in the virtual environment created above or as a system-wide tool (e.g. pipx or uv tool), then install the hooks:

pre-commit install

The first run of the hooks will take a few seconds as the isolated environments are created. Subsequent runs will generally be much faster.

To run the tests, run:

pytest

License

This software is released under the NASA Open Source Agreement Version 1.3.

Notices

Copyright © 2024 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved.

Disclaimers

No Warranty: THE SUBJECT SOFTWARE IS PROVIDED “AS IS” WITHOUT ANY WARRANTY OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN ANY MANNER, CONSTITUTE AN ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR RECIPIENT OF ANY RESULTS, RESULTING DESIGNS, HARDWARE, SOFTWARE PRODUCTS OR ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER, GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES IT “AS IS.”

Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT. IF RECIPIENT’S USE OF THE SUBJECT SOFTWARE RESULTS IN ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES ARISING FROM SUCH USE, INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING FROM, RECIPIENT’S USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW. RECIPIENT’S SOLE REMEDY FOR ANY SUCH MATTER SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS AGREEMENT.

Metadata

Release files for condor 0.3.3

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

Source distribution (sdist)

Source distribution for condor 0.3.3
File Size Uploaded
condor-0.3.3.tar.gz 1.2 MB Details

Built distribution (wheel)

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

Total release size: 1.3 MB

Release files / condor-0.3.3.tar.gz

Download URL condor-0.3.3.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
4e53b1e84428fe3fe877fffd05f80d6d5e2bd3b3d32cb0e28e38c909856107ac
BLAKE2b-256 checksum
How to use checksums
ec342cc4478a0fbbc3f0a398595e4e4e96d2ceb0ac9227d1f44802b9a4169215
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Jul 9, 2026.

Transparency log

Release files / condor-0.3.3-py3-none-any.whl

Download URL condor-0.3.3-py3-none-any.whl
Size 107.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9498cc36852bd33d18a5a45830aa9430c873b22d617385a47aa1d1b0c2f34add
BLAKE2b-256 checksum
How to use checksums
8aab002b8f0a53fe09a5da0d53fc9cf2790c267878226ada60e7eb243a4dd814
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Jul 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

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