Skip to main content

atlas-python

Thousands of NetCDF datasets in one immutable file. It sits on local disk or on object storage: S3, GCS, Azure, or HTTP. A Rust core, five operations, and one command.

pip install atlas-python
atlas create /data/nc /data/collection
atlas ls     /data/collection
atlas show   /data/collection 2024-01.nc
atlas info   /data/collection
atlas rm     /data/collection 2024-02.nc 2024-03.nc

python -m atlas runs the same command without a PATH lookup, for a shell that cannot find atlas.

Extra Install Adds
cloud pip install "atlas-python[cloud]" S3 / GCS / Azure / HTTP via obstore

numpy, xarray, and dask install automatically.

Five operations

The same five as a library:

import atlas

atlas.create("/data/nc", "/data/collection")   # from a directory of NetCDF files
atlas.list_datasets("/data/collection")        # ['2024-01.nc', '2024-02.nc', '2024-03.nc']
atlas.describe("/data/collection", "2024-01.nc")  # types, shapes, attrs, statistics
atlas.info("/data/collection")                 # counts, size, codec, statistics
atlas.remove("/data/collection", ["2024-02.nc"])  # updates the mask

Every one takes a local path, a URL, or an obstore handle:

atlas ls s3://my-bucket/collections/2024 --region eu-west-1
atlas.list_datasets("s3://my-bucket/collections/2024", region="eu-west-1")

Two things to internalise

One write builds a collection. There is no append, no in-place update, and no flush. The file has a valid trailer, or it is no collection. To change a dataset, rebuild the collection. remove is the one exception. It writes a small mask file, and never touches the container. It therefore reclaims no space, and moves no ordinal.

Python writes. Rust reads array data. From Python you build a collection and read its metadata. That is the dataset names, the array types, the shapes, the chunk shapes, the fill values, the attributes, and the statistics of the write. There is no read_array. Array values come from the Rust API.

That split makes the read side free. The footer an open already fetched answers every metadata call. A catalogue of a thousand datasets is therefore one request.

What show gives you

$ atlas show /data/collection 2024-01.nc
dataset 2024-01.nc {
dimensions:
	lat = 4 ;
	lon = 6 ;
variables:
	float32 temperature(lat, lon) ;
		temperature:_FillValue = nan ;
		temperature:units = "celsius" ;
		// stats: count=24  min=1.0  max=24.0
	string station(lat) ;
		// stats: count=4  min="a"  max="d"

// global attributes:
		:month = 1 ;

// ordinal 0, segment bytes 8..1691
}

The shape follows ncdump -h. It adds the statistics of the write: the minimum, the maximum, and how many elements are missing. --json on any read command gives the same content as a structure.

Ingest

create scans a directory for .nc, .nc4, .cdf, and .netcdf, and descends into every subdirectory. It sorts them, and writes one dataset per file, named after the file. Each coordinate and data variable becomes an array. Each variable attribute becomes a per-array attribute. _FillValue becomes the fill of the array.

Each file opens with dask chunking. A file far larger than memory therefore streams block by block. --chunk-size sets the block budget, and defaults to 128 MiB. It is about the memory ceiling per variable. Those blocks also become the stored chunk shape.

Nothing at the destination is readable until every file lands. A failure part-way leaves no collection, and not a partial one. on_error="skip", or --skip-errors, trades that for progress.

Atlas cannot store every numpy dtype, and bool is the common case. One such variable fails the whole file by default. on_unsupported="skip", or --skip-unsupported, leaves out that one array and lands the rest.

--log-file PATH, or atlas.log_to_file(path), appends every error and warning to a file, each with its reason and the file it came from.

dtypes

numpy atlas
int / uint widths, float32, float64 the same
datetime64[ns] timestamp_nanoseconds
timedelta64[*] int64 nanoseconds, plus a unit marker
object / S / U string

bool, binary, and the list types work as an attribute value. No one of them works yet as an array element type.

Documentation

The full docs sit at https://maris-development.github.io/atlas/. They hold the command reference, and guides for creating, inspecting, removing, dtypes, reading data, and cloud storage.

The format itself is documented in docs/.

License

Apache-2.0. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atlas_python-0.16.4.tar.gz (187.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

atlas_python-0.16.4-cp310-abi3-win_amd64.whl (5.3 MB view details)

Uploaded CPython 3.10+Windows x86-64

atlas_python-0.16.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

atlas_python-0.16.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

atlas_python-0.16.4-cp310-abi3-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

atlas_python-0.16.4-cp310-abi3-macosx_10_12_x86_64.whl (5.6 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file atlas_python-0.16.4.tar.gz.

File metadata

  • Download URL: atlas_python-0.16.4.tar.gz
  • Upload date:
  • Size: 187.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for atlas_python-0.16.4.tar.gz
Algorithm Hash digest
SHA256 e1434914b8bf234150d94c5eafdcc0d3942c0657ba40295a2939dbcbabe6a139
MD5 35245e6eaac0acc0cc175c2427a68420
BLAKE2b-256 fd2153d4fe156cf70bdfb6376a68114cbf2cca59688644179ca8fb0fa39e4a30

See more details on using hashes here.

Provenance

The following attestation bundles were made for atlas_python-0.16.4.tar.gz:

Publisher: atlas-python-release.yaml on maris-development/atlas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atlas_python-0.16.4-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for atlas_python-0.16.4-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a801929fabc97e68d12d36baac9bdd7d431d04688c010f9aabe3dca94e853f6b
MD5 8b426305211f487292d0733b46ca06bb
BLAKE2b-256 ef83692320d861e9ae2b2af307c37ef8666af2e6a1f4d6a30c36f0644eb8b227

See more details on using hashes here.

Provenance

The following attestation bundles were made for atlas_python-0.16.4-cp310-abi3-win_amd64.whl:

Publisher: atlas-python-release.yaml on maris-development/atlas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atlas_python-0.16.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for atlas_python-0.16.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0909fb2cb990da71a8c21f8cfa7b32a928bb94f9b2d85e77d0e6b16ca112b203
MD5 416cdc41df5c0a0c24f32591e26d5a5b
BLAKE2b-256 d569325798e7f1f8ef51c075e8c86a9da1d5a8c3b99d6029825529cf83f65f9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for atlas_python-0.16.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: atlas-python-release.yaml on maris-development/atlas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atlas_python-0.16.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for atlas_python-0.16.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8f4ca99ce3c465695fe2806f6198bbc0a393d8b077b657de05ec2c1dfbc2c569
MD5 7301fd5f01d5d9bca0806bb7d6822580
BLAKE2b-256 c2fb9ae1b178255af43a228468eeb00e7549a40021113ac6b83186d759cc9e2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for atlas_python-0.16.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: atlas-python-release.yaml on maris-development/atlas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atlas_python-0.16.4-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for atlas_python-0.16.4-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0668f9ccd6ffafee410ade2b48593863ae6ec4af0f4e08af1fc226ea24b4c0f5
MD5 048845eb52d1a8916c0258685f5fd434
BLAKE2b-256 c49f97fed4605220d15e2e64520649c198ccd12ad255ea6c15495bc48927cc11

See more details on using hashes here.

Provenance

The following attestation bundles were made for atlas_python-0.16.4-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: atlas-python-release.yaml on maris-development/atlas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atlas_python-0.16.4-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for atlas_python-0.16.4-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 42c0e93106a7c3e028b94c0da10064a75a7d0317cb7684e0e5de4cef295f1e94
MD5 97f9b707e812586877e85533789013f8
BLAKE2b-256 2034ebc58e111310f9753c06d859aca6503151e3d38e3741f7735b39763a54eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for atlas_python-0.16.4-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: atlas-python-release.yaml on maris-development/atlas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.17.2

6 files

0.17.1

6 files

0.17.0

6 files

This release

0.16.4 This release

6 files

0.16.3

6 files

0.16.2

6 files

0.16.1

6 files

0.16.0

6 files

0.14.0

6 files

0.13.1

6 files

0.13.0

6 files

0.12.0

6 files

0.10.0

6 files

0.9.1

6 files

0.9.0

6 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