Skip to main content

Add your description here

Project description

Sorcerer Forecasts

A Python library for fetching and processing weather forecast data with automatic caching and region selection. Designed for simulations and applications that need efficient access to spatio-temporal forecast data.

Features

  • Automatic Forecast Management: The service automatically determines when to fetch new forecast data based on your query location and time
  • Local Caching: Downloaded forecasts are cached locally as NetCDF files for fast repeated access
  • Smart Region Selection: Automatically selects the appropriate forecast region based on query coordinates
  • 4D Querying: Query forecasts at specific points in space (latitude, longitude, altitude) and time
  • Simulation-Friendly: Ideal for running simulations - no need to manually check if new data is needed

Installation

pip install sorcerer-forecasts

Quick Start

from datetime import datetime
from sorcerer_forecasts import ForecastService
from sorcerer_forecasts.sources import Stratocast

# Initialize the forecast source with your API key
source = Stratocast(api_key='YOUR_API_KEY')

# Create the forecast service with local caching
forecast_service = ForecastService(source=source, cache_dir='./.cache')

# Query forecast data at a specific 4D point
forecast = forecast_service.get({
    'time': datetime.fromisoformat('2025-08-26T00:00:00Z'),
    'latitude': 40,
    'longitude': 30,
    'altitude': 14625  # meters
})

# Access forecast variables
if forecast:
    print(f"Pressure: {forecast['pres']}")
    print(f"U wind: {forecast['u']}")
    print(f"V wind: {forecast['v']}")
    print(f"Height: {forecast['h']}")

How It Works

Automatic Forecast Management

The ForecastService intelligently manages forecast data:

  1. First Request: When you query a point, the service checks if it has the relevant forecast in memory
  2. Cache Check: If not in memory, it checks the local cache directory for a saved NetCDF file
  3. Fetch if Needed: Only fetches from the remote source if the data isn't available locally
  4. Reuse Loaded Data: Subsequent queries within the same forecast region and time period use the already-loaded data

This makes it perfect for simulations where a vehicle might be moving through space and time - the service will:

  • Reuse the same forecast data when the vehicle moves within one time step
  • Automatically fetch new forecasts only when crossing into a new time period or region
  • Keep multiple forecasts in memory when needed

Example: Running a Simulation

from time import time
from datetime import datetime, timedelta

source = Stratocast(api_key='API_KEY')
forecast_service = ForecastService(source=source, cache_dir='./.cache')

# Simulate 10 time steps
base_time = datetime.fromisoformat('2025-08-26T00:00:00Z')

for i in range(10):
    start = time()

    # Query moves slightly in space and time
    forecast = forecast_service.get({
        'time': base_time + timedelta(minutes=i*15),
        'latitude': 40 + i * 0.1,
        'longitude': 30 + i * 0.1,
        'altitude': 14625
    })

    end = time()
    print(f"Step {i}: {end - start:.3f}s")
    # First query will be slower (fetching), subsequent queries within
    # the same forecast will be nearly instant

Supported Regions

The library automatically selects the appropriate forecast region based on your coordinates (requires proper permissions):

  • CONUS: Continental United States
  • EU-Central: Central Europe
  • AF-East: Eastern Africa
  • Region4: Extended North America
  • Global: Worldwide coverage

Caching

Cached forecasts are stored as NetCDF files in the specified cache directory. The cache structure is:

cache_dir/
  - YYYYMMDD.tHHz.stratocast.0p25.ml80.wind.{region}.nc

Cache files persist between sessions, so restarting your application won't require re-downloading previously fetched forecasts.

API Reference

ForecastService

ForecastService(source: ForecastSource, cache_dir: str | None = None)
  • source: A forecast source implementation (e.g., Stratocast)
  • cache_dir: Directory for caching forecast files (optional)

Methods

  • get(location: Point4) -> ForecastData | None: Retrieve forecast data at a 4D point
    • Returns None if the location is outside available forecast bounds

Point4 Dictionary Structure

{
    'time': datetime,      # UTC datetime
    'latitude': float,     # Degrees
    'longitude': float,    # Degrees
    'altitude': float      # Meters
}

License

See LICENSE file for details.

Project details


Download files

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

Source Distribution

sorcerer_forecasts-0.1.1.tar.gz (49.7 kB view details)

Uploaded Source

Built Distribution

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

sorcerer_forecasts-0.1.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file sorcerer_forecasts-0.1.1.tar.gz.

File metadata

  • Download URL: sorcerer_forecasts-0.1.1.tar.gz
  • Upload date:
  • Size: 49.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.9

File hashes

Hashes for sorcerer_forecasts-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1abaa251388271cf55bb950030241ae728c03aeaa7a7cb7d1d9ec5841244e096
MD5 1a93a39c2d482a53a0fdcc493285f01c
BLAKE2b-256 54432a4cab08092c51865199c8bee0f1ba0c4920d811d340b9c06c784072de3d

See more details on using hashes here.

File details

Details for the file sorcerer_forecasts-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sorcerer_forecasts-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1532ffba31bc3be19979980e80d33bc829fa1ff90aef2e4dff9dbc4f6a87a393
MD5 ae970cf7086b9d1c478c2da26c2e6e82
BLAKE2b-256 e485553da99dd967d6a7aabb3cebfaaa5ed6fd8e62ef4b6d86a04be7f0ad0a0a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page