NetCDF Analysis for GLM Output

SkillDev tools

Reading and analyzing GLM NetCDF output with Python netCDF4 and pandas for RMSE evaluation.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the NetCDF Analysis for GLM Output skill

What this skill tells your AI

The instructions your AI receives, as published by cxcscmu/skilllearnbench in skills/b1-one-shot-claude-opus-4-6/temperature-simulation/netcdf-analysis/SKILL.md and read by ahel’s review.

Reading GLM Output

import netCDF4 as nc
import numpy as np
import pandas as pd

ds = nc.Dataset('output/output.nc')
temp = ds.variables['temp'][:]  # masked array [time, layers]
z = ds.variables['z'][:]        # height above bottom [time, layers]
time_var = ds.variables['time']
times = nc.num2date(time_var[:], time_var.units)

Extracting Temperature at Specific Depths

GLM uses variable layer heights. For each timestep:

lake_depth = 25  # from morphometry (crest_elev - min(H))
for t in range(len(times)):
    valid = ~temp[t].mask if hasattr(temp[t], 'mask') else np.ones(temp.shape[1], bool)
    depths_from_surface = lake_depth - z[t, valid]
    temps = temp[t, valid]
    # Interpolate to desired depth

RMSE Calculation

# Merge on exact datetime and rounded depth
# rmse = sqrt(mean((obs - sim) ** 2))

Key Notes

  • GLM z is height from lake bottom; depth = lake_depth - z
  • Round depths to nearest integer for matching
  • Use exact datetime matching (no nearest-time)

Signals

GitHub stars
83
Forks
5
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
netcdf-analysis
Source
github.com/cxcscmu/skilllearnbench