Problem
The most natural user request — "analyze this dataset" — today requires the user (or agent) to know and orchestrate 5+ tool calls:
inspect_mesh
validate_dataset
inspect_variable
calculate_area
calculate_zonal_mean
plot_variable
This is not how the best tools work. The user should say one thing and get a complete answer.
Proposed tool: analyze_dataset
def analyze_dataset(
grid_path: str | None = None,
data_path: str | None = None,
session_id: str | None = None,
dataset_handle: str | None = None,
use_remote: bool = False,
) -> dict:
Runs the full pipeline internally:
- Inspect mesh topology
- Validate dataset
- Discover variables
- Calculate area statistics
- Compute zonal mean for first face-centered variable
- Render mesh and variable plots (as base64 PNG)
- Return everything in one structured result
Why this matters
This is what makes the difference between a library wrapper and a scientific assistant. A climate scientist with no uxarray knowledge should be able to point at a file and get a complete picture of their data in one call.
Relationship to run_scientific_agent
run_scientific_agent is the autonomous LLM-driven version of this. analyze_dataset is the deterministic, always-works version. Both should exist — one for simple use, one for complex reasoning.
Problem
The most natural user request — "analyze this dataset" — today requires the user (or agent) to know and orchestrate 5+ tool calls:
inspect_meshvalidate_datasetinspect_variablecalculate_areacalculate_zonal_meanplot_variableThis is not how the best tools work. The user should say one thing and get a complete answer.
Proposed tool:
analyze_datasetRuns the full pipeline internally:
Why this matters
This is what makes the difference between a library wrapper and a scientific assistant. A climate scientist with no uxarray knowledge should be able to point at a file and get a complete picture of their data in one call.
Relationship to
run_scientific_agentrun_scientific_agentis the autonomous LLM-driven version of this.analyze_datasetis the deterministic, always-works version. Both should exist — one for simple use, one for complex reasoning.