am-python
Python bindings for Scott Paine's am atmospheric model, via Rust (PyO3).
Install
Pre-built wheels are available on PyPI for Linux:
uv pip install am-python
From source
Requires the am source code (tested on v14.0), a C compiler, and a Rust toolchain.
curl -fsSL "https://zenodo.org/records/13748403/files/am-14.0.tgz?download=1" | tar -xz
export AM_SRC_DIR=$PWD/am-14.0/src
uv pip install .
Usage
Single model
import am
m = am.Model("SPole_JJA_75.amc", [0, "GHz", 350, "GHz", 0.01, "GHz", 35, "deg", 1.0])
m.compute()
# numpy array, GHz
m.frequency
# dict of computed outputs
m.outputs
# Rayleigh-Jeans brightness temperature, K
m.outputs["tb_rj"]
Parameter sweep
import xarray as xr
import am
params = xr.Dataset(coords={
"elevation": [30, 45, 60, 75], # deg
"pwv": [0.5, 1.0, 2.0], # mm
})
ds = am.ModelGrid(
"SPole_JJA_75.amc",
params,
args_fn=lambda elevation, pwv: [
0, "GHz", 350, "GHz", 0.5, "GHz", elevation, "deg", pwv
],
).compute()
# xr.Dataset with dims (elevation, pwv, frequency)
ds["tb_rj"].sel(elevation=45, pwv=1.0)
For irregular grids (e.g. a set of specific elevation/PWV pairs), use variables on a shared dimension instead:
import numpy as np
params = xr.Dataset({
"elevation": ("obs", elev_array),
"pwv": ("obs", pwv_array),
})
Development
This project uses just to orchestrate common tasks and pre-commit for local checks.
# install deps
just sync
# run tests
just test
just test py
just test rs
# run formatting/lint checks
just fmt
just fmt-check
just lint
just typecheck
# build docs
just docs
just docs py
just docs rs
# run pre-commit hooks on all files
just precommit
just prepush
Metadata
Release files for am-python 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| am_python-0.8.0.tar.gz | 23.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| am_python-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
Total release size: 45.5 MB
Release files / am_python-0.8.0.tar.gz
| Download URL | am_python-0.8.0.tar.gz |
|---|---|
| Size | 23.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
987b9b1d73aaf3b5bded62d0605a1f7e89db52165c38898d7af7c6563f3876cc
|
|
BLAKE2b-256 checksum How to use checksums |
b7a91afb6d4094e80994233b5325ec45661d6c5939a8f2036766b2fe40e84128
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Apr 20, 2026.
Transparency logRelease files / am_python-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | am_python-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 22.4 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c3f835c7d010cd98a4a5e151b8a5a5a3f25b0f9f48a0afd4c1f9035aa325bc5c
|
|
BLAKE2b-256 checksum How to use checksums |
2df6ac5f9795c14c3e3c97787f1cd1ea478058d278891db859f25a5e8f43c202
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Apr 20, 2026.
Transparency log