forecast-parquet
Download EFI/neon4cast parquet DataDownloads found via SPARQL and plot time series (CRPS, mean, observation) or one forecast lead.
Skill by earthcube
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/earthcube-forecast-parquet
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: sales
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/forecast-parquet
What's inside
- Skill name
forecast-parquet- Description
- Download EFI/neon4cast parquet DataDownloads found via SPARQL and plot time series (CRPS, mean, observation) or one forecast lead. Use when the user wants forecast skill or predicted values over time, not just catalog bars. Triggers: parquet, CRPS, scores, horizon, lead time, one-horizon, bundled-parquet, OSN, /skill:forecast-parquet, plot forecast. Not for: inventing SPARQL numbers, recomputing CRPS, QLever geof:distance, ocean depth charts.
- License
- Apache-2.0
- Compatibility
- python3, uv, matplotlib, pyarrow (decoder-pi pyproject.toml)
- Metadata
- project: decoder-pi · version: 1.0
- Instructions
- 93 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (6)
- SKILL.md
- parquet_urls.json · fixtures/
- scores_horizon.parquet · fixtures/
- scores_sample.parquet · fixtures/
- parquet_urls.rq · queries/
- parquet_plot.py · scripts/
SKILL.md (first lines)
# Forecast parquet RDF stores **URLs**, not CRPS values. This skill: portable SPARQL 1.1 for `schema:DataDownload` + `application/x-parquet` → HTTP GET of one object → matplotlib series. Works against any SPARQL 1.1 store that has those triples (Oxigraph or QLever). Does **not** use `geof:distance` or QLever `spatialSearch:`. EFI URLs look like: ```text s3://anonymous@bio230014-bucket01/challenges/scores/bundled-parquet/project_id=neon4cast/duration=P1W/variable=…/model_id=…?endpoint_override=sdsc.osn.xsede.org ``` The CLI lists the prefix, downloads the smallest `.parquet` under it (typically `data_0.parquet`), and plots `datetime` vs `crps` (or `--y mean`). `horizon` is the fixed-lead view. Lead is the whole-day difference `datetime` (target) minus `reference_datetime` (issue time). Omit `--lead` to print scored-row counts and write nothing. With `--lead N`, each target date is one stored score. A gap longer than 1.5 times the median step between target dates is not connected. A target date with two scores (neon4cast republishes the same issue under a new `pub_datetime`) is reported and not averaged. `plot` still draws every lead that shares a target date. When that happens it prints a notice pointing at `horizon`. ## Agent workflow 1. Confirm the ecoforecast `--endpoint` (or a parquet `--url` / local file). 2. `list` first; then one scores URL (`--contains model_id=…`, or `--variable` via URL substring). 3. One model/variable per plot. Do not crawl all parquet prefixes. 4. For skill over time, use `horizon --site …` with no `--lead`, then rerun with one whole-day `--lead` whose `duplicate_targets` is 0. 5. Report PNG path, column, lead in days, target-date count, and gaps. Say that CRPS is the stored neon4cast score. If the file has no `datetime`/`reference_datetime`, say so. Cap: refuse objects larger than 80 MiB. ## CLI ```bash EF=https://qlever.geocodes-aws.earthcube.org/graphspace/ecoforecast uv run python skills/forecast-parquet/scripts/parquet_plot.py list \ --endpoint $EF --contains scores/bundled-parquet --limit 20 uv run python skills/forecast-parquet/scripts/parquet_plot.py plot \ --endpoint $EF --contains 'variable=chla/model_id=cb_prophet' --y mean uv run python skills/forecast-parquet/scripts/parquet_plot.py plot \ --url 's3://anonymous@bio230014-bucket01/challenges/scores/bundled-parquet/project_id=neon4cast/duration=P1W/variable=amblyomma_americanum/model_id=tg_tbats?endpoint_override=sdsc.osn.xsede.org' \ --y crps --site TALL -o runs/crps.png # Offline uv run python skills/forecast-parquet/scripts/parquet_plot.py plot \ --from-parquet skills/forecast-parquet/fixtures/scores_sample.parquet --y crps # Fixed lead. The first call only prints the lead table. uv run python skills/forecast-parquet/scripts/parquet_plot.py horizon \ --from-parquet skills/forecast-parquet/fixtures/scores_horizon.parquet \ --site TALL --y crps uv run python skills/forecast-parquet/scripts/parquet_plot.py horizon \ --from-parquet skills/forecast-parquet/fixtures/scores_horizon.parquet \ --site TALL --lead 7 --y crps -o runs/horizon.png ``` | Mode | Network | Output | |---|---|---| | `list` | SPARQL | markdown URL table | | `plot` | SPARQL optional + HTTP GET of one parquet | PNG of every lead on the target date | | `horizon` | SPARQL optional + HTTP GET of one parquet | Lead table, or one PNG at `--lead` days | `plot` default `--y` order: `crps`, `mean`, `median`, `observation`, `prediction`. `horizon` defaults to `crps` and does not fall through to another column. `scores_sample.parquet` has no `reference_datetime` (the mixed-lead `plot` fixture). `scores_horizon.parquet` is synthetic: site TALL at leads 7 and 14 days, one 3-week gap at lead 7, one 12-hour lead, and site KONZ at lead 7. ## Do not - Treat `variableMeasured` names as numeric SPARQL results - Download every parquet in the catalog - Use QLever-only spatial functions - Recompute CRPS, or average two scores that share a target date and a lead - Describe a `plot` line as a one-horizon series when the notice says several leads were drawn
From earthcube/decoder-pi, Apache-2.0.
More from earthcube/decoder-pi
- 0.570score
handoff
earthcube
Update a local human-gated handoff record so the next session reads the committed file.
SkillAFreshness: AClaude Code +9 - 0.529score
catalog-plot
earthcube
Plot catalog analytics from SPARQL JSON: type/provider/variable bars, DepBelowSurf depth histograms and min–max range strips, markdown summaries.
SkillBFreshness: BClaude Code +9 - 0.529score
forecast-inventory
earthcube
Ecoforecast (neon4cast / vera4cast) catalog analytics: STAC theme bars, model id bars, variableMeasured column inventory, site lat/lon map.
SkillBFreshness: BClaude Code +9 - 0.529score
surface-inventory
earthcube
Earthsurface catalog analytics: provider bars, theme bars (hydrography, CHELSA climate, land cover, geochemistry), encodingFormat bars, list of AI-generated…
SkillBFreshness: BClaude Code +9 - 0.529score
catalog-map
earthcube
Map schema.org / GeoSPARQL catalog geography from SPARQL JSON: latitude/ longitude scatter, schema:box, asWKT, optional 110m coastlines, and client-side…
SkillBFreshness: BClaude Code +9 - 0.529score
hydrography-tiles
earthcube
Index IGB hydrography.org 90 m / 20° tiles in the earthsurface graph: draw the tile grid, look up which tile contains a lat/lon (client-side), list GeoTIFF…
SkillBFreshness: BClaude Code +9 - 0.529score
sparql
DOOS / GoFAIR US (adapted)
Query schema.org RDF graphs via SPARQL.
SkillBFreshness: BClaude Code +9 - 0.524score
geotiff-list
earthcube
List GeoTIFF / GeoPackage / COG DataDownload URLs from the earthsurface graph.
SkillBFreshness: BClaude Code +9 - 0.304score
setgo
earthcube
No description from the publisher yet.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 5
- Last commit (this folder)
- Sep 21, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0
- License
- Apache-2.0
- Repository
- github.com/earthcube/decoder-pi
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from earthcube
- 0.570score
handoff
earthcube
Update a local human-gated handoff record so the next session reads the committed file.
SkillAFreshness: AClaude Code +9 - 0.529score
surface-inventory
earthcube
Earthsurface catalog analytics: provider bars, theme bars (hydrography, CHELSA climate, land cover, geochemistry), encodingFormat bars, list of AI-generated…
SkillBFreshness: BClaude Code +9 - 0.529score
catalog-plot
earthcube
Plot catalog analytics from SPARQL JSON: type/provider/variable bars, DepBelowSurf depth histograms and min–max range strips, markdown summaries.
SkillBFreshness: BClaude Code +9 - 0.529score
hydrography-tiles
earthcube
Index IGB hydrography.org 90 m / 20° tiles in the earthsurface graph: draw the tile grid, look up which tile contains a lat/lon (client-side), list GeoTIFF…
SkillBFreshness: BClaude Code +9 - 0.529score
catalog-map
earthcube
Map schema.org / GeoSPARQL catalog geography from SPARQL JSON: latitude/ longitude scatter, schema:box, asWKT, optional 110m coastlines, and client-side…
SkillBFreshness: BClaude Code +9 - 0.529score
forecast-inventory
earthcube
Ecoforecast (neon4cast / vera4cast) catalog analytics: STAC theme bars, model id bars, variableMeasured column inventory, site lat/lon map.
SkillBFreshness: BClaude Code +9
Cite this page
forecast-parquet skill. Agent Mart. https://agentmart.dev/skills/earthcube-forecast-parquet (last updated 2026-10-24)