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/
  \x00\x00 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.0.tar.gz (50.9 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.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for sorcerer_forecasts-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f940b797f08a31f3ceb5ddc22e74727c8d4dbff0f7bfee0d11209bef4503ce04
MD5 840b017ed98dbd277875da2c99236815
BLAKE2b-256 9b2fbea5f7e14b70f67154b9526139a63ee56b6f78bedce3afb37b76537e0634

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sorcerer_forecasts-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b96d5e703db865fe57a0ca75f7d20b239207970f914da86ce293b2898261bc87
MD5 f8cfef434e412844ca2240d460df81bf
BLAKE2b-256 3bec22b1ef10f6a6e5a1f16b4824e0e4c9429e9eb8fdc715b273f624d5daf988

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