Repository navigation
v0.3.0
Bring-your-own-data: embed imagery you already have (arrays or GeoTIFFs) without any provider fetch, plus cache-first Hugging Face loading and restored tessera downloads. tessera grid outputs now come back on the common EPSG:3857 grid instead of native UTM, so their shape, transform and meta keys differ from 0.2.x; re-export tessera grids you want to compare against provider-backed models.
Fixed
tesseradownloads work again.pyproject.tomlnow requiresgeotessera>=0.10; the old tile host (dl2.geotessera.org) was retired upstream and the data moved to Source Cooperative in that release.- Tessera embeddings now land on the common EPSG:3857 grid. Previously tessera returned native UTM tiles, making pixel-for-pixel comparison with provider-fetched patches impossible and cross-UTM-zone ROIs an error. Tiles are now resampled (nearest-neighbour) onto the shared 10 m Web Mercator lattice; cross-zone ROIs produce a
UserWarninginstead of crashing. Grid/projection logic consolidated in the newtools/projection.py. - Warm-cache model loading no longer contacts the Hugging Face Hub. All
hf_hub_download/snapshot_downloadcalls (plus thershfloaders for satmae/scalemae/satmaepp) now resolve from the local HF cache first; a network request only fires on a cache miss. Shared helpers live inembedders/shared.py. resolve_pretrained_source_cache_firstno longer crashes on bin-only repos. The local-dir shortcut now requiresmodel.safetensors; repos that publish onlypytorch_model.bin(e.g. MVRL/satmaepp) fall back to the repo-id path whose cached-bin fallback still works.- Clay batch path no longer forces Earth Engine auth on machines without GEE.
ClayEmbedder.get_embeddings_batch_from_inputsno longer initializes a provider when running from prefetched inputs, matching the lazy-provider convention already followed by the single-embedding path.
Added
UserData(crs=..., transform=...)andUserData.from_raster(path, ...)— a declaration can now carry a CRS and pixel-to-CRS affine; the footprint is derived from them (sospatialmay be omitted), and the array is resampled to the common EPSG:3857 grid at the model'sscale_mbefore embedding.from_rasterreads pixels, CRS, and transform directly from a GeoTIFF viarasterio. Geo-conditioned models (clay, prithvi) accept georeferenced declarations without manualspatial=input.crsandtransformmust be supplied together.- Bring-your-own-data API —
get_embedding_from_data/get_embeddings_batch_from_dataembed imagery you provide directly, with no provider fetch or auth required. Band matching, tiling/stitching, and temporal grouping follow the sameinput_preppolicy as the fetch path. Flexible-size models (olmoearth) adapt to the input's native size automatically.list_models_for_datareports which catalog models a given declaration can serve without loading weights. See docs/user_data.md. - docs/benchmarks.md — end-to-end latency and throughput for every registered backend (H100 + GEE, 20-point Midwest workload), with per-request fetch-vs-compute decomposition.