import pyradtran
from pyradtran import Var
import matplotlib.pyplot as plt
import numpy as np
import xarray as xr
from pathlib import Path
import pandas as pd
import logging
logging.getLogger('pyradtran').setLevel(logging.CRITICAL)
solar_config_path = Path('config/arctic_cloud_experiment_solar_spectral.yaml')
thermal_config_path = Path('config/arctic_cloud_experiment_thermal.yaml')
# Arctic stratus parameter space (libRadtran units)
cbh = [0.3] # km
cth = [1.0] # km
lwps = np.array([10, 50, 100, 150])
lwcs = lwps / 700 # convert to kg m^-3 to fill the 700 m layer uniformly
reffs = [15]
cbh = [0.3] * len(lwcs)
cth = [1] * len(lwcs)
times = pd.date_range("2024-03-01 12:00", periods=5, freq="7d")
lats = np.linspace(80, 60, 5) # this is a trick to sample through a high number of SZA... vary lat and time together...
print(lats)
lon = [0] * len(times)
altitudes = [0]
surface_temperatures = [255] * len(times)
ds = xr.Dataset(
coords={
"time": times,
"latitude": (("time",), lats),
"longitude": (("time",), lon),
"altitude": (("altitude",), altitudes)
},
data_vars={
"lwc": (("lwc",), lwcs),
"reff": (("reff",), reffs),
"cth": (("lwc",), cth),
"cbh": (("lwc",), cbh),
"surface_temperature": (("time",), surface_temperatures),
#"albedo_sw": (("albedo",), albedos_sw),
#"albedo_lw": (("albedo",), albedos_lw),
}
)
ds_ = ds.drop_vars(["lwc", "reff", "cth", "cbh"])
ds_sim_no_cloud_solar = ds_.pyradtran.run(
config_path='config/arctic_cloud_experiment_solar_spectral.yaml',
# save_to_file=True,
return_dataset=True,
show_progress=True,
params={
'sur_temperature': Var('surface_temperature'),
'albedo': Var('albedo_sw'),
'albedo_library IGBP' : '',
'brdf_rpv_type' : '19'
}
)
ds_sim_cloudy_solar = ds.pyradtran.run(
config_path='config/arctic_cloud_experiment_solar_spectral.yaml',
cloud_wc_var='lwc',
cloud_reff_var='reff',
cloud_top_var='cth',
cloud_bottom_var='cbh',
save_to_file=True,
return_dataset=True,
show_progress=True,
params={
'sur_temperature': Var('surface_temperature'),
'albedo_library IGBP' : '',
'brdf_rpv_type' : '19'
}
)
[80. 75. 70. 65. 60.]
Running simulations: 100%|██████████| 5/5 [00:40<00:00, 8.01s/sim, Success=5, Total=5]
Running simulations: 100%|██████████| 20/20 [01:25<00:00, 4.28s/sim, Success=20, Total=20]
ds_sim_cloudy_solar['lwc'] = ('lwc', lwps)
ds_sim_no_cloud_solar['albedo_sw'] = ds_sim_no_cloud_solar['eup'].integrate('wavelength') / ds_sim_no_cloud_solar['eglo'].integrate('wavelength')
ds_sim_cloudy_solar['albedo_sw'] = ds_sim_cloudy_solar['eup'].integrate('wavelength') / ds_sim_cloudy_solar['eglo'].integrate('wavelength')
fig, ax = plt.subplots(figsize=(5, 2))
albedo_cf = ds_sim_no_cloud_solar['eup'] / ds_sim_no_cloud_solar['eglo']
albedo_cd = ds_sim_cloudy_solar['eup'] / ds_sim_cloudy_solar['eglo']
ax.set_prop_cycle(plt.cycler('color', plt.cm.Reds(np.linspace(0, 1, len(times)))))
albedo_cf.plot(label='Clear Sky Albedo', x='wavelength', ax=ax, hue='time', add_legend=False)
ax.set_prop_cycle(plt.cycler('color', plt.cm.Blues(np.linspace(0, 1, len(times)))))
albedo_cd.isel(lwc=0).plot(label='Cloudy Sky Albedo', x='wavelength', ax=ax, hue='time', add_legend=False)
plt.show()
albedo_ratio = ds_sim_cloudy_solar['albedo_sw'] - ds_sim_no_cloud_solar['albedo_sw']
albedo_ratio.isel(altitude=0, ).plot(label='Albedo Ratio (Cloudy / Clear)', linestyle='--', marker='o', hue='time')
plt.show()
ds_sim_no_cloud_solar['sza']
<xarray.DataArray 'sza' (wavelength: 1765, altitude: 1, time: 5)> Size: 71kB
array([[[87.91, 80.2 , 72.42, 64.6 , 56.78]],
[[87.91, 80.2 , 72.42, 64.6 , 56.78]],
[[87.91, 80.2 , 72.42, 64.6 , 56.78]],
...,
[[87.91, 80.2 , 72.42, 64.6 , 56.78]],
[[87.91, 80.2 , 72.42, 64.6 , 56.78]],
[[87.91, 80.2 , 72.42, 64.6 , 56.78]]], shape=(1765, 1, 5))
Coordinates:
* time (time) datetime64[ns] 40B 2024-03-01T12:00:00 ... 2024-03-29T...
* wavelength (wavelength) float64 14kB 300.0 300.5 301.0 ... 2.995e+03 3e+03
* altitude (altitude) int64 8B 0albedo_ratio['sza'] = ('time', ds_sim_no_cloud_solar['sza'].mean('wavelength').squeeze().values)
albedo_ratio['sza']
albedo_ratio = albedo_ratio.assign_coords(sza=albedo_ratio['sza'])
#albedo_ratio = albedo_ratio.drop_vars(['altitude'])
#albedo_ratio = albedo_ratio.drop('altitude')
albedo_ratio = albedo_ratio.swap_dims({'time': 'sza'}).drop('time')
/tmp/ipykernel_67920/1638913286.py:6: DeprecationWarning: dropping variables using `drop` is deprecated; use drop_vars.
albedo_ratio = albedo_ratio.swap_dims({'time': 'sza'}).drop('time')
fig, ax = plt.subplots(figsize=(10, 6))
albedo_ratio.isel(altitude=0).plot(robust=True, x='sza', cbar_kwargs={'label': 'Albedo Ratio (Cloudy - Clear)'})
ax.set_xlabel('Solar Zenith Angle (degrees)')
ax.set_ylabel('Liquid Water Path (g m$^{-2}$)')
ax.set_xlim(40, 90)
da_annot = albedo_ratio.isel(altitude=0, reff=0).squeeze()
for lwc_val in da_annot["lwc"].values:
for sza_val in da_annot["sza"].values:
if 60 <= sza_val <= 90:
v = da_annot.sel(lwc=lwc_val, sza=sza_val).item()
ax.text(
sza_val, lwc_val, f"{v*100:.2f}%",
ha="center", va="center",
fontsize=10, color="black"
)
#albedo_ratio.squeeze().plot.contour(x='sza', y='lwc', robust=True, )
Cloud Radiative Forcing with Real ACLOUD Data#
Reproducing Stapf et al. (2020) — ACP, 20, 9895–9914#
The paper shows that clouds over Arctic snow/sea-ice increase the broadband surface albedo (spectral weighting shifts the transmitted irradiance to shorter, more-reflective wavelengths). Ignoring this effect means the cloud cooling in the shortwave is underestimated by ~2×.
Key definitions (Eq. 9 in the paper):
Quantity |
Meaning |
|---|---|
\(\alpha_{all}\) |
Observed (cloudy-sky) broadband surface albedo |
\(\alpha_{cf}\) |
Estimated cloud-free broadband albedo |
\(\Delta F_{sw}(\alpha_{all})\) |
SW CRF using the traditional (cloudy) albedo |
\(\Delta F_{sw}(\alpha_{cf})\) |
SW CRF using the corrected cloud-free albedo |
Data source: Stapf et al. (2019), PANGAEA dataset 909289
DOI: 10.1594/PANGAEA.909289
Approach here:
Use
pangaeapyto query the PANGAEA API and extract the static download URLBuild a pyRadtran broadband clear-sky lookup table over SZA × albedo
Apply the LUT to the observed \(\alpha_{all}\) and \(\alpha_{cf}\) to compute both CRF estimates
Reproduce Fig. 10 of the paper
# ── 1. PANGAEA API download ─────────────────────────────────────────────────
#
# pangaeapy fetches the dataset XML from the PANGAEA API and lets us extract
# the staticURL field that points to the actual NetCDF binary.
# We then download it with requests (retry + local cache).
!pip install pangaeapy
from pangaeapy import PanDataSet
import requests, re, time as _time, warnings
from pathlib import Path
PANGAEA_ID = 909289
DATA_DIR = Path('data')
DATA_DIR.mkdir(exist_ok=True)
CACHE_PATH = DATA_DIR / f'pangaea_{PANGAEA_ID}.nc'
def get_pangaea_static_url(dataset_id: int) -> tuple:
"""
Use pangaeapy to query the PANGAEA metadata API and extract the
key="staticURL" attribute from the <md:technicalInfo> block.
"""
pan = PanDataSet(dataset_id)
m = re.search(r'key="staticURL"\s+value="([^"]+)"', pan.metaxml)
if not m:
raise RuntimeError(
f"staticURL not found in PANGAEA {dataset_id} metadata. "
f"Full XML snippet:\n{pan.metaxml[-800:]}"
)
return m.group(1), pan.title
DOWNLOAD_OK = False
if CACHE_PATH.exists():
print(f"Using cached file: {CACHE_PATH} ({CACHE_PATH.stat().st_size / 1e6:.1f} MB)")
DOWNLOAD_OK = True
else:
url, title = get_pangaea_static_url(PANGAEA_ID)
print(f"Title : {title}")
print(f"URL : {url}")
for attempt in range(3):
try:
r = requests.get(url, timeout=300, stream=True)
r.raise_for_status()
with open(CACHE_PATH, 'wb') as fh:
for chunk in r.iter_content(chunk_size=65536):
fh.write(chunk)
sz = CACHE_PATH.stat().st_size / 1e6
print(f"Saved : {CACHE_PATH} ({sz:.1f} MB)")
DOWNLOAD_OK = True
break
except Exception as exc:
print(f" Attempt {attempt+1}/3 failed — {exc}")
if attempt < 2:
_time.sleep(10)
else:
warnings.warn(
"PANGAEA download failed (server may be temporarily unavailable). "
"A synthetic dataset based on the paper's reported statistics is used below."
)
Requirement already satisfied: pangaeapy in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (1.1.0)
Requirement already satisfied: aiohttp>=3.11.0 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pangaeapy) (3.12.14)
Requirement already satisfied: lxml>=4.9.3 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pangaeapy) (6.0.1)
Requirement already satisfied: netcdf4>1.6.5 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pangaeapy) (1.7.2)
Requirement already satisfied: numpy>=1.24.4 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pangaeapy) (2.2.6)
Requirement already satisfied: pandas>=2.2.2 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pangaeapy) (2.3.1)
Requirement already satisfied: requests>=2.26.0 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pangaeapy) (2.33.1)
Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from aiohttp>=3.11.0->pangaeapy) (2.6.1)
Requirement already satisfied: aiosignal>=1.4.0 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from aiohttp>=3.11.0->pangaeapy) (1.4.0)
Requirement already satisfied: attrs>=17.3.0 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from aiohttp>=3.11.0->pangaeapy) (25.3.0)
Requirement already satisfied: frozenlist>=1.1.1 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from aiohttp>=3.11.0->pangaeapy) (1.7.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from aiohttp>=3.11.0->pangaeapy) (6.6.3)
Requirement already satisfied: propcache>=0.2.0 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from aiohttp>=3.11.0->pangaeapy) (0.3.2)
Requirement already satisfied: yarl<2.0,>=1.17.0 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from aiohttp>=3.11.0->pangaeapy) (1.20.1)
Requirement already satisfied: idna>=2.0 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from yarl<2.0,>=1.17.0->aiohttp>=3.11.0->pangaeapy) (3.10)
Requirement already satisfied: cftime in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from netcdf4>1.6.5->pangaeapy) (1.6.4)
Requirement already satisfied: certifi in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from netcdf4>1.6.5->pangaeapy) (2025.7.14)
Requirement already satisfied: python-dateutil>=2.8.2 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pandas>=2.2.2->pangaeapy) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pandas>=2.2.2->pangaeapy) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from pandas>=2.2.2->pangaeapy) (2025.2)
Requirement already satisfied: six>=1.5 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from python-dateutil>=2.8.2->pandas>=2.2.2->pangaeapy) (1.17.0)
Requirement already satisfied: charset_normalizer<4,>=2 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from requests>=2.26.0->pangaeapy) (3.4.7)
Requirement already satisfied: urllib3<3,>=1.26 in /home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages (from requests>=2.26.0->pangaeapy) (2.5.0)
Using cached file: data/pangaea_909289.nc (54.8 MB)
# ── 2. Load PANGAEA data (with synthetic fallback) ───────────────────────────
#
# The NetCDF file uses two groups: P5 and P6 (HALO research flights).
# xarray with group= decodes time as datetime64[ns] automatically.
#
# Known variable names (from netCDF4 inspection):
# Obs_alb – observed (cloudy) broadband surface albedo
# Ret_cf_alb – retrieved cloud-free broadband surface albedo
# LWP – liquid water path [g m⁻²]
# I_f – sea-ice fraction [%] (filter: I_f > 98)
# CRF_SW_obs – SW CRF w/ observed albedo [W m⁻²]
# CRF_SW_cf – SW CRF w/ cloud-free albedo [W m⁻²]
# CRF_LW – LW CRF [W m⁻²]
# time – datetime64[ns] (decoded by xarray from CF units)
# Lat, Lon – flight position
import xarray as xr
import numpy as np
import pandas as pd
import pvlib
if DOWNLOAD_OK and CACHE_PATH.exists():
# ── load both flight groups and concatenate ─────────────────────────────
parts = []
for grp in ('P5', 'P6'):
g = xr.open_dataset(CACHE_PATH, group=grp)
# 'time' is decoded as datetime64[ns]; assign as the 'Time' coordinate
times_dt = pd.DatetimeIndex(g['time'].values).tz_localize('UTC')
g = g.assign_coords(Time=('Time', times_dt))
parts.append(g)
raw = xr.concat(parts, dim='Time')
print(f"Loaded {raw.sizes['Time']:,} obs points (P5 + P6 combined)")
# ── compute SZA via pvlib (element-wise, time×lat×lon) ──────────────────
times_pd = pd.DatetimeIndex(raw['Time'].values) # tz-aware UTC
lats_arr = raw['Lat'].values.astype(float)
lons_arr = raw['Lon'].values.astype(float)
solpos = pvlib.solarposition.get_solarposition(
time=times_pd, latitude=lats_arr, longitude=lons_arr
)
raw = raw.assign(SZA=('Time', solpos['apparent_zenith'].values,
{'long_name': 'Solar zenith angle', 'units': 'degrees'}))
# ── rename to standard names ────────────────────────────────────────────
raw = raw.rename({
'Obs_alb': 'alpha_all',
'Ret_cf_alb': 'alpha_cf',
'CRF_SW_obs': 'CRF_sw_trad_paper',
'CRF_SW_cf': 'CRF_sw_corr_paper',
'CRF_LW': 'CRF_lw_paper',
})
# ── filter: sea ice > 98 % AND cloudy (LWP > 1 g m⁻²) ─────────────────
mask = (
(raw['I_f'] > 98.0) &
(raw['LWP'] > 1.0) &
np.isfinite(raw['alpha_all']) &
np.isfinite(raw['alpha_cf'])
)
ds_obs = raw.where(mask, drop=True)
FALLBACK = False
obs_dim = 'Time'
n_filt = ds_obs.sizes['Time']
print(f"After filtering (I_f > 98 %, LWP > 1 g m⁻²): {n_filt:,} points")
print(f"\nα_all : {float(ds_obs['alpha_all'].mean()):.3f} ± {float(ds_obs['alpha_all'].std()):.3f}")
print(f"α_cf : {float(ds_obs['alpha_cf'].mean()):.3f} ± {float(ds_obs['alpha_cf'].std()):.3f}")
print(f"LWP : {float(ds_obs['LWP'].mean()):.1f} g m⁻²")
print(f"SZA : {float(ds_obs['SZA'].mean()):.1f}°")
else:
# ── synthetic fallback: reproduce paper statistics ───────────────────────
print("⚠ Using synthetic fallback data (Stapf et al. 2020 statistics)")
FALLBACK = True
rng = np.random.default_rng(42)
N = 4000
alpha_all = np.clip(rng.normal(0.80, 0.07, N), 0.55, 0.95)
alpha_cf = np.clip(alpha_all + rng.normal(-0.06, 0.025, N), 0.45, 0.92)
lwp = np.clip(rng.lognormal(np.log(58), 0.9, N), 1.0, 300.0)
sza = rng.uniform(53.0, 72.0, N)
mu = np.cos(np.radians(sza))
F0 = 1361.0 * mu
r_atm = 0.08
F_dn_cf = F0 * 0.75 / (1 - alpha_cf * r_atm)
T_cloud = np.exp(-lwp / 130.0)
F_dn_cld = F_dn_cf * T_cloud * (1 + alpha_all * r_atm)
F_net_cld = F_dn_cld * (1 - alpha_all)
F_net_cf_all = F0 * 0.75 / (1 - alpha_all * r_atm) * (1 - alpha_all)
F_net_cf_cf = F_dn_cf * (1 - alpha_cf)
crf_sw_all = F_net_cld - F_net_cf_all
crf_sw_cf = F_net_cld - F_net_cf_cf
crf_lw = rng.normal(69.0, 18.0, N)
obs_dim = 'obs'
ds_obs = xr.Dataset(
{
'alpha_all': (obs_dim, alpha_all),
'alpha_cf': (obs_dim, alpha_cf),
'LWP': (obs_dim, lwp),
'SZA': (obs_dim, sza),
'CRF_sw_trad_paper': (obs_dim, crf_sw_all),
'CRF_sw_corr_paper': (obs_dim, crf_sw_cf),
'CRF_lw_paper': (obs_dim, crf_lw),
},
coords={obs_dim: np.arange(N)},
)
print(ds_obs)
# Quick overview
fig, axes = plt.subplots(1, 3, figsize=(12, 3))
ds_obs['alpha_all'].plot.hist(bins=40, ax=axes[0], color='steelblue', alpha=0.7, label=r'$\alpha_{all}$')
ds_obs['alpha_cf'].plot.hist( bins=40, ax=axes[0], color='tomato', alpha=0.7, label=r'$\alpha_{cf}$')
axes[0].set_title('Surface albedo distribution'); axes[0].legend()
ds_obs['LWP'].plot.hist(bins=40, ax=axes[1], color='steelblue')
axes[1].set_title('LWP distribution [g m⁻²]')
ds_obs['SZA'].plot.hist(bins=30, ax=axes[2], color='steelblue')
axes[2].set_title('SZA distribution [°]')
plt.tight_layout(); plt.show()
/home/josh/micromamba/envs/mamba_josh/lib/python3.13/site-packages/pyproj/network.py:59: UserWarning: pyproj unable to set PROJ database path.
_set_context_ca_bundle_path(ca_bundle_path)
Loaded 978,763 obs points (P5 + P6 combined)
After filtering (I_f > 98 %, LWP > 1 g m⁻²): 230,353 points
α_all : 0.807 ± 0.073
α_cf : 0.749 ± 0.067
LWP : 58.4 g m⁻²
SZA : 61.0°
# ── 3. Build clear-sky broadband LUT: F_dn and F_net vs (SZA, albedo) ───────
#
# For each SZA node we run pyRadtran over a grid of surface albedos.
# params={'sza': float} forces libRadtran to use that angle
# directly instead of computing it from the time/location metadata.
#
# Config used: arctic_cloud_experiment_solar.yaml
# → integrate_wavelength: true (single broadband value per run)
# → mol_abs_param: reptran coarse (fast enough for a LUT)
# → output columns: zout, edir, eglo, edn, eup, enet, albedo
from tqdm.auto import tqdm
pyradtran.logger.setLevel(logging.INFO)
# ── LUT grid ─────────────────────────────────────────────────────────────────
szas_lut = np.arange(50.0, 78.0, 4.0) # 7 nodes, covers ACLOUD range
albedos_lut = np.linspace(0.30, 0.95, 14) # 14 nodes
N_alb = len(albedos_lut)
# Arbitrary reference position and time (SZA will be overridden anyway)
ref_lat = 81.0
ref_lon = 10.0
ref_times = pd.date_range('2017-06-01 10:00:00', periods=N_alb, freq='1s')
lut_parts = []
for sza_val in tqdm(szas_lut, desc='LUT SZA nodes'):
ds_sweep = xr.Dataset(
coords={
'time': ref_times,
'latitude': ('time', np.full(N_alb, ref_lat)),
'longitude': ('time', np.full(N_alb, ref_lon)),
},
data_vars={
'albedo': ('time', albedos_lut, {'long_name': 'surface albedo', 'units': '1'}),
},
)
sim = ds_sweep.pyradtran.run(
config_path='config/arctic_cloud_experiment_solar.yaml',
params={'albedo': Var('albedo'),'sza': float(sza_val)},
save_to_file=False,
return_dataset=True,
show_progress=False,
)
# Attach albedo as a coordinate and add sza dimension
sim = (
sim.assign_coords(albedo=('time', albedos_lut))
.swap_dims({'time': 'albedo'})
.expand_dims(sza=[sza_val])
)
lut_parts.append(sim)
lut = xr.concat(lut_parts, dim='sza')
# Squeeze altitude (single level) for convenience
lut = lut.squeeze('altitude', drop=True)
print(lut)
print(f"\nLUT shape sza×albedo = {lut.dims}")
2026-05-14 01:42:41,748 - pyradtran.interface - DEBUG - LibRadtran parameter override: sza 50.0
2026-05-14 01:42:41,749 - pyradtran.interface - INFO - Preparing 14 simulations from input dataset with dims ['time']
2026-05-14 01:42:41,970 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,970 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,971 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,971 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,971 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,971 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,971 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,971 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,971 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,972 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,972 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,972 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,972 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,972 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,972 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpjykiryse.inp
2026-05-14 01:42:41,972 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmprwfe3p1f.inp
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpjykiryse.out
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7dovdkjz.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmprwfe3p1f.out
2026-05-14 01:42:41,973 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzq_0j60d.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8099irzg.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpilwjvlyo.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbegyeu0m.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpppzhwu41.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_4ev_boh.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7dovdkjz.out
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzq_0j60d.out
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0yfot5ds.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpme7wjigq.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbegyeu0m.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgwv_grq7.inp
2026-05-14 01:42:41,974 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpilwjvlyo.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp1wrbatwz.inp
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0yfot5ds.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzf2h0a7x.inp
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpppzhwu41.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_4ev_boh.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8099irzg.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpme7wjigq.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgwv_grq7.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp1wrbatwz.out
2026-05-14 01:42:41,975 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzf2h0a7x.out
2026-05-14 01:42:45,641 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgwv_grq7.out
2026-05-14 01:42:45,641 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8099irzg.out
2026-05-14 01:42:45,642 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:45,642 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:45,645 - pyradtran.interface - DEBUG - Simulation 5/14 completed successfully
2026-05-14 01:42:45,645 - pyradtran.interface - DEBUG - Simulation 10/14 completed successfully
2026-05-14 01:42:45,659 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpme7wjigq.out
2026-05-14 01:42:45,660 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_4ev_boh.out
2026-05-14 01:42:45,660 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:45,661 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:45,662 - pyradtran.interface - DEBUG - Simulation 14/14 completed successfully
2026-05-14 01:42:45,663 - pyradtran.interface - DEBUG - Simulation 8/14 completed successfully
2026-05-14 01:42:45,703 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzq_0j60d.out
2026-05-14 01:42:45,704 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:45,707 - pyradtran.interface - DEBUG - Simulation 9/14 completed successfully
2026-05-14 01:42:46,158 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbegyeu0m.out
2026-05-14 01:42:46,159 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:46,161 - pyradtran.interface - DEBUG - Simulation 3/14 completed successfully
2026-05-14 01:42:46,173 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpjykiryse.out
2026-05-14 01:42:46,174 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:46,176 - pyradtran.interface - DEBUG - Simulation 4/14 completed successfully
2026-05-14 01:42:46,412 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp1wrbatwz.out
2026-05-14 01:42:46,413 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:46,416 - pyradtran.interface - DEBUG - Simulation 11/14 completed successfully
2026-05-14 01:42:46,673 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzf2h0a7x.out
2026-05-14 01:42:46,674 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:46,676 - pyradtran.interface - DEBUG - Simulation 13/14 completed successfully
2026-05-14 01:42:46,749 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7dovdkjz.out
2026-05-14 01:42:46,750 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:46,752 - pyradtran.interface - DEBUG - Simulation 2/14 completed successfully
2026-05-14 01:42:46,971 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmprwfe3p1f.out
2026-05-14 01:42:46,972 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:46,974 - pyradtran.interface - DEBUG - Simulation 1/14 completed successfully
2026-05-14 01:42:47,031 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0yfot5ds.out
2026-05-14 01:42:47,031 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:47,034 - pyradtran.interface - DEBUG - Simulation 12/14 completed successfully
2026-05-14 01:42:47,206 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpppzhwu41.out
2026-05-14 01:42:47,207 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:47,209 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpilwjvlyo.out
2026-05-14 01:42:47,210 - pyradtran.interface - DEBUG - Simulation 7/14 completed successfully
2026-05-14 01:42:47,210 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:47,212 - pyradtran.interface - DEBUG - Simulation 6/14 completed successfully
2026-05-14 01:42:47,231 - pyradtran.interface - INFO - Batch execution completed: 14/14 simulations successful
2026-05-14 01:42:47,242 - pyradtran.interface - DEBUG - LibRadtran parameter override: sza 54.0
2026-05-14 01:42:47,242 - pyradtran.interface - INFO - Preparing 14 simulations from input dataset with dims ['time']
2026-05-14 01:42:47,442 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,442 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,442 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,442 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,442 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,443 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,443 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,443 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,443 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,443 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,444 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,444 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,444 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,444 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,444 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,444 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,444 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,444 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmpa7x0ns.inp
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3u6hwp8f.inp
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2g7pvjr0.inp
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_li6cr4k.inp
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmpa7x0ns.out
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3u6hwp8f.out
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpv9kfivdy.inp
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,445 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2jg6gbx5.inp
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2g7pvjr0.out
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgnppzaol.inp
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_li6cr4k.out
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpv9kfivdy.out
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmphrag9yi8.inp
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmppswvgqr1.inp
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9fli2hlt.inp
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2jg6gbx5.out
2026-05-14 01:42:47,446 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgnppzaol.out
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmphrag9yi8.out
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpai_tg06_.inp
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8gi_8bvb.inp
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa2iraclb.inp
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmppswvgqr1.out
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpyoz6hjm6.inp
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9fli2hlt.out
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpai_tg06_.out
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8gi_8bvb.out
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa2iraclb.out
2026-05-14 01:42:47,447 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpyoz6hjm6.out
2026-05-14 01:42:51,212 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpv9kfivdy.out
2026-05-14 01:42:51,213 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:51,215 - pyradtran.interface - DEBUG - Simulation 10/14 completed successfully
2026-05-14 01:42:51,216 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgnppzaol.out
2026-05-14 01:42:51,216 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2g7pvjr0.out
2026-05-14 01:42:51,216 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:51,217 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:51,218 - pyradtran.interface - DEBUG - Simulation 7/14 completed successfully
2026-05-14 01:42:51,219 - pyradtran.interface - DEBUG - Simulation 1/14 completed successfully
2026-05-14 01:42:51,222 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmpa7x0ns.out
2026-05-14 01:42:51,223 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:51,225 - pyradtran.interface - DEBUG - Simulation 2/14 completed successfully
2026-05-14 01:42:51,230 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmphrag9yi8.out
2026-05-14 01:42:51,230 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:51,232 - pyradtran.interface - DEBUG - Simulation 14/14 completed successfully
2026-05-14 01:42:51,251 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpai_tg06_.out
2026-05-14 01:42:51,252 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:51,255 - pyradtran.interface - DEBUG - Simulation 8/14 completed successfully
2026-05-14 01:42:51,722 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpyoz6hjm6.out
2026-05-14 01:42:51,723 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:51,726 - pyradtran.interface - DEBUG - Simulation 13/14 completed successfully
2026-05-14 01:42:51,928 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3u6hwp8f.out
2026-05-14 01:42:51,929 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:51,931 - pyradtran.interface - DEBUG - Simulation 4/14 completed successfully
2026-05-14 01:42:52,278 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_li6cr4k.out
2026-05-14 01:42:52,279 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:52,281 - pyradtran.interface - DEBUG - Simulation 3/14 completed successfully
2026-05-14 01:42:52,285 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa2iraclb.out
2026-05-14 01:42:52,285 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:52,287 - pyradtran.interface - DEBUG - Simulation 12/14 completed successfully
2026-05-14 01:42:52,616 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2jg6gbx5.out
2026-05-14 01:42:52,618 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:52,621 - pyradtran.interface - DEBUG - Simulation 5/14 completed successfully
2026-05-14 01:42:52,733 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmppswvgqr1.out
2026-05-14 01:42:52,734 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:52,737 - pyradtran.interface - DEBUG - Simulation 9/14 completed successfully
2026-05-14 01:42:52,768 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9fli2hlt.out
2026-05-14 01:42:52,769 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:52,771 - pyradtran.interface - DEBUG - Simulation 6/14 completed successfully
2026-05-14 01:42:52,776 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8gi_8bvb.out
2026-05-14 01:42:52,777 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:52,779 - pyradtran.interface - DEBUG - Simulation 11/14 completed successfully
2026-05-14 01:42:52,796 - pyradtran.interface - INFO - Batch execution completed: 14/14 simulations successful
2026-05-14 01:42:52,807 - pyradtran.interface - DEBUG - LibRadtran parameter override: sza 58.0
2026-05-14 01:42:52,809 - pyradtran.interface - INFO - Preparing 14 simulations from input dataset with dims ['time']
2026-05-14 01:42:52,998 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:52,999 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:52,999 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:52,999 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:52,999 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:52,999 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,000 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,000 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,000 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,000 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,001 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,000 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,001 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,001 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,001 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,001 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,001 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,000 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,001 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvmczj2ph.inp
2026-05-14 01:42:53,001 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7c0z2s4k.inp
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp41iiitq0.inp
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7vad09zl.inp
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvmczj2ph.out
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp17sue4ry.inp
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmplmo08ary.inp
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmtnjsnch.inp
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,002 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7c0z2s4k.out
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgbqnwyo8.inp
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7vad09zl.out
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp17sue4ry.out
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmplmo08ary.out
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp6q7wjf_1.inp
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp41iiitq0.out
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_7kxt49e.inp
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpn4pjjm99.inp
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmtnjsnch.out
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:53,003 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgbqnwyo8.out
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp6q7wjf_1.out
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8woze5cm.inp
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_7kxt49e.out
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpn4pjjm99.out
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2g6yl9yr.inp
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmplj4o_7d_.inp
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8woze5cm.out
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2g6yl9yr.out
2026-05-14 01:42:53,004 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmplj4o_7d_.out
2026-05-14 01:42:56,764 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp41iiitq0.out
2026-05-14 01:42:56,766 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:56,768 - pyradtran.interface - DEBUG - Simulation 2/14 completed successfully
2026-05-14 01:42:56,797 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_7kxt49e.out
2026-05-14 01:42:56,798 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:56,799 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmtnjsnch.out
2026-05-14 01:42:56,800 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:56,801 - pyradtran.interface - DEBUG - Simulation 13/14 completed successfully
2026-05-14 01:42:56,802 - pyradtran.interface - DEBUG - Simulation 8/14 completed successfully
2026-05-14 01:42:56,809 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmplmo08ary.out
2026-05-14 01:42:56,810 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:56,810 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7vad09zl.out
2026-05-14 01:42:56,811 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:56,812 - pyradtran.interface - DEBUG - Simulation 10/14 completed successfully
2026-05-14 01:42:56,812 - pyradtran.interface - DEBUG - Simulation 1/14 completed successfully
2026-05-14 01:42:56,815 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8woze5cm.out
2026-05-14 01:42:56,815 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:56,817 - pyradtran.interface - DEBUG - Simulation 12/14 completed successfully
2026-05-14 01:42:56,975 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpgbqnwyo8.out
2026-05-14 01:42:56,976 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:56,979 - pyradtran.interface - DEBUG - Simulation 6/14 completed successfully
2026-05-14 01:42:57,181 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp2g6yl9yr.out
2026-05-14 01:42:57,182 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:57,184 - pyradtran.interface - DEBUG - Simulation 11/14 completed successfully
2026-05-14 01:42:57,897 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp7c0z2s4k.out
2026-05-14 01:42:57,898 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:57,900 - pyradtran.interface - DEBUG - Simulation 3/14 completed successfully
2026-05-14 01:42:58,186 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmplj4o_7d_.out
2026-05-14 01:42:58,187 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:58,189 - pyradtran.interface - DEBUG - Simulation 14/14 completed successfully
2026-05-14 01:42:58,305 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpn4pjjm99.out
2026-05-14 01:42:58,306 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:58,308 - pyradtran.interface - DEBUG - Simulation 7/14 completed successfully
2026-05-14 01:42:58,316 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvmczj2ph.out
2026-05-14 01:42:58,317 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:58,320 - pyradtran.interface - DEBUG - Simulation 4/14 completed successfully
2026-05-14 01:42:58,319 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp6q7wjf_1.out
2026-05-14 01:42:58,320 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:58,322 - pyradtran.interface - DEBUG - Simulation 9/14 completed successfully
2026-05-14 01:42:58,348 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp17sue4ry.out
2026-05-14 01:42:58,349 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:42:58,352 - pyradtran.interface - DEBUG - Simulation 5/14 completed successfully
2026-05-14 01:42:58,372 - pyradtran.interface - INFO - Batch execution completed: 14/14 simulations successful
2026-05-14 01:42:58,383 - pyradtran.interface - DEBUG - LibRadtran parameter override: sza 62.0
2026-05-14 01:42:58,384 - pyradtran.interface - INFO - Preparing 14 simulations from input dataset with dims ['time']
2026-05-14 01:42:58,566 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,566 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,566 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,566 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,566 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,566 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,567 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,567 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,567 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,567 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,567 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,568 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,568 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,568 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,568 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,568 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,568 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzvq5gx1j.inp
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,568 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpd1bygsw5.inp
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp361zaexj.inp
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp40gnzv63.inp
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzvq5gx1j.out
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp1h0j9wsn.inp
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpuicso4cl.inp
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpd1bygsw5.out
2026-05-14 01:42:58,569 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp4jad1kmb.inp
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp361zaexj.out
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp40gnzv63.out
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp30i6xhf3.inp
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3toudico.inp
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa1d8s23q.inp
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpidopgjj2.inp
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmg8b90b8.inp
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp1h0j9wsn.out
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpuicso4cl.out
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,570 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:42:58,571 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp4jad1kmb.out
2026-05-14 01:42:58,571 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp30i6xhf3.out
2026-05-14 01:42:58,571 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3toudico.out
2026-05-14 01:42:58,571 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa1d8s23q.out
2026-05-14 01:42:58,571 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpidopgjj2.out
2026-05-14 01:42:58,571 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmg8b90b8.out
2026-05-14 01:42:58,571 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpjgljeclu.inp
2026-05-14 01:42:58,571 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkpbjrur2.inp
2026-05-14 01:42:58,572 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpjgljeclu.out
2026-05-14 01:42:58,572 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkpbjrur2.out
2026-05-14 01:43:02,439 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp361zaexj.out
2026-05-14 01:43:02,440 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:02,440 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa1d8s23q.out
2026-05-14 01:43:02,441 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:02,442 - pyradtran.interface - DEBUG - Simulation 2/14 completed successfully
2026-05-14 01:43:02,443 - pyradtran.interface - DEBUG - Simulation 8/14 completed successfully
2026-05-14 01:43:02,453 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp40gnzv63.out
2026-05-14 01:43:02,454 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpzvq5gx1j.out
2026-05-14 01:43:02,454 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:02,454 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:02,455 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpidopgjj2.out
2026-05-14 01:43:02,455 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:02,455 - pyradtran.interface - DEBUG - Simulation 4/14 completed successfully
2026-05-14 01:43:02,456 - pyradtran.interface - DEBUG - Simulation 5/14 completed successfully
2026-05-14 01:43:02,457 - pyradtran.interface - DEBUG - Simulation 10/14 completed successfully
2026-05-14 01:43:02,488 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp1h0j9wsn.out
2026-05-14 01:43:02,489 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:02,492 - pyradtran.interface - DEBUG - Simulation 3/14 completed successfully
2026-05-14 01:43:02,644 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp4jad1kmb.out
2026-05-14 01:43:02,645 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:02,648 - pyradtran.interface - DEBUG - Simulation 7/14 completed successfully
2026-05-14 01:43:03,300 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpd1bygsw5.out
2026-05-14 01:43:03,301 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:03,303 - pyradtran.interface - DEBUG - Simulation 6/14 completed successfully
2026-05-14 01:43:03,427 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp30i6xhf3.out
2026-05-14 01:43:03,429 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:03,431 - pyradtran.interface - DEBUG - Simulation 12/14 completed successfully
2026-05-14 01:43:03,502 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3toudico.out
2026-05-14 01:43:03,503 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:03,505 - pyradtran.interface - DEBUG - Simulation 9/14 completed successfully
2026-05-14 01:43:03,892 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpjgljeclu.out
2026-05-14 01:43:03,893 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:03,894 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkpbjrur2.out
2026-05-14 01:43:03,895 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:03,895 - pyradtran.interface - DEBUG - Simulation 13/14 completed successfully
2026-05-14 01:43:03,897 - pyradtran.interface - DEBUG - Simulation 14/14 completed successfully
2026-05-14 01:43:03,898 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmg8b90b8.out
2026-05-14 01:43:03,899 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:03,900 - pyradtran.interface - DEBUG - Simulation 11/14 completed successfully
2026-05-14 01:43:03,906 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpuicso4cl.out
2026-05-14 01:43:03,907 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:03,908 - pyradtran.interface - DEBUG - Simulation 1/14 completed successfully
2026-05-14 01:43:03,927 - pyradtran.interface - INFO - Batch execution completed: 14/14 simulations successful
2026-05-14 01:43:03,938 - pyradtran.interface - DEBUG - LibRadtran parameter override: sza 66.0
2026-05-14 01:43:03,939 - pyradtran.interface - INFO - Preparing 14 simulations from input dataset with dims ['time']
2026-05-14 01:43:04,112 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,112 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,112 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,112 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,113 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,113 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,113 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,113 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,113 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,113 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,114 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,113 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,114 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,114 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp41sbf2v8.inp
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_41fap9a.inp
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp5zn7kdg2.inp
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvn15jhin.inp
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_aadqwhq.inp
2026-05-14 01:43:04,115 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkjislaur.inp
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0_9hj29l.inp
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_41fap9a.out
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp4rjrdvfr.inp
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp80mp3t75.inp
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp41sbf2v8.out
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp5zn7kdg2.out
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvn15jhin.out
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_aadqwhq.out
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpt3qp1x3e.inp
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkz8scu_0.inp
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpqobanjn9.inp
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0_9hj29l.out
2026-05-14 01:43:04,117 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp4rjrdvfr.out
2026-05-14 01:43:04,116 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkjislaur.out
2026-05-14 01:43:04,117 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpqjqj8__l.inp
2026-05-14 01:43:04,117 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp80mp3t75.out
2026-05-14 01:43:04,117 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpt3qp1x3e.out
2026-05-14 01:43:04,117 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkz8scu_0.out
2026-05-14 01:43:04,117 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpqobanjn9.out
2026-05-14 01:43:04,118 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpqjqj8__l.out
2026-05-14 01:43:04,119 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp61uscam6.inp
2026-05-14 01:43:04,120 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp61uscam6.out
2026-05-14 01:43:07,918 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp41sbf2v8.out
2026-05-14 01:43:07,919 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:07,921 - pyradtran.interface - DEBUG - Simulation 8/14 completed successfully
2026-05-14 01:43:07,921 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpqobanjn9.out
2026-05-14 01:43:07,922 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:07,922 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_aadqwhq.out
2026-05-14 01:43:07,923 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:07,925 - pyradtran.interface - DEBUG - Simulation 12/14 completed successfully
2026-05-14 01:43:07,925 - pyradtran.interface - DEBUG - Simulation 2/14 completed successfully
2026-05-14 01:43:07,946 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp4rjrdvfr.out
2026-05-14 01:43:07,947 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:07,949 - pyradtran.interface - DEBUG - Simulation 4/14 completed successfully
2026-05-14 01:43:08,084 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkjislaur.out
2026-05-14 01:43:08,085 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:08,088 - pyradtran.interface - DEBUG - Simulation 5/14 completed successfully
2026-05-14 01:43:08,318 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvn15jhin.out
2026-05-14 01:43:08,319 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:08,321 - pyradtran.interface - DEBUG - Simulation 1/14 completed successfully
2026-05-14 01:43:08,457 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0_9hj29l.out
2026-05-14 01:43:08,458 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:08,461 - pyradtran.interface - DEBUG - Simulation 7/14 completed successfully
2026-05-14 01:43:08,562 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp61uscam6.out
2026-05-14 01:43:08,563 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:08,566 - pyradtran.interface - DEBUG - Simulation 14/14 completed successfully
2026-05-14 01:43:08,650 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpqjqj8__l.out
2026-05-14 01:43:08,651 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:08,653 - pyradtran.interface - DEBUG - Simulation 11/14 completed successfully
2026-05-14 01:43:08,845 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpt3qp1x3e.out
2026-05-14 01:43:08,846 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:08,848 - pyradtran.interface - DEBUG - Simulation 13/14 completed successfully
2026-05-14 01:43:09,316 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpkz8scu_0.out
2026-05-14 01:43:09,317 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:09,318 - pyradtran.interface - DEBUG - Simulation 10/14 completed successfully
2026-05-14 01:43:09,396 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp_41fap9a.out
2026-05-14 01:43:09,398 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:09,400 - pyradtran.interface - DEBUG - Simulation 9/14 completed successfully
2026-05-14 01:43:09,474 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp80mp3t75.out
2026-05-14 01:43:09,475 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:09,477 - pyradtran.interface - DEBUG - Simulation 6/14 completed successfully
2026-05-14 01:43:09,535 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp5zn7kdg2.out
2026-05-14 01:43:09,536 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:09,539 - pyradtran.interface - DEBUG - Simulation 3/14 completed successfully
2026-05-14 01:43:09,556 - pyradtran.interface - INFO - Batch execution completed: 14/14 simulations successful
2026-05-14 01:43:09,567 - pyradtran.interface - DEBUG - LibRadtran parameter override: sza 70.0
2026-05-14 01:43:09,568 - pyradtran.interface - INFO - Preparing 14 simulations from input dataset with dims ['time']
2026-05-14 01:43:09,736 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,736 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,736 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,736 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,737 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,736 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,737 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,737 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,737 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,738 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,737 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,738 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,738 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,737 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:09,738 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8di6a61p.inp
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0px95575.inp
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpevf0pazg.inp
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpy1qancjk.inp
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmptfrnc097.inp
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8di6a61p.out
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,739 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpevf0pazg.out
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpwegolhmo.inp
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbg1gxtak.inp
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpy1qancjk.out
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0px95575.out
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmptfrnc097.out
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp36srbl7k.inp
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbh389ml6.inp
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9efef0tc.inp
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpsnmogcn4.inp
2026-05-14 01:43:09,740 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpwegolhmo.out
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbg1gxtak.out
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbh389ml6.out
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpulp89zc7.inp
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp36srbl7k.out
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa4baqkrl.inp
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9efef0tc.out
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp872h58m3.inp
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpsnmogcn4.out
2026-05-14 01:43:09,741 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpulp89zc7.out
2026-05-14 01:43:09,742 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa4baqkrl.out
2026-05-14 01:43:09,742 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp872h58m3.out
2026-05-14 01:43:13,588 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9efef0tc.out
2026-05-14 01:43:13,589 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:13,591 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbh389ml6.out
2026-05-14 01:43:13,592 - pyradtran.interface - DEBUG - Simulation 9/14 completed successfully
2026-05-14 01:43:13,592 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:13,594 - pyradtran.interface - DEBUG - Simulation 8/14 completed successfully
2026-05-14 01:43:13,594 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp0px95575.out
2026-05-14 01:43:13,595 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:13,595 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp8di6a61p.out
2026-05-14 01:43:13,596 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:13,597 - pyradtran.interface - DEBUG - Simulation 6/14 completed successfully
2026-05-14 01:43:13,598 - pyradtran.interface - DEBUG - Simulation 3/14 completed successfully
2026-05-14 01:43:13,607 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpsnmogcn4.out
2026-05-14 01:43:13,607 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:13,610 - pyradtran.interface - DEBUG - Simulation 4/14 completed successfully
2026-05-14 01:43:13,614 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpwegolhmo.out
2026-05-14 01:43:13,615 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:13,617 - pyradtran.interface - DEBUG - Simulation 7/14 completed successfully
2026-05-14 01:43:13,953 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpulp89zc7.out
2026-05-14 01:43:13,954 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:13,957 - pyradtran.interface - DEBUG - Simulation 14/14 completed successfully
2026-05-14 01:43:14,139 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpa4baqkrl.out
2026-05-14 01:43:14,140 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:14,143 - pyradtran.interface - DEBUG - Simulation 12/14 completed successfully
2026-05-14 01:43:14,265 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpy1qancjk.out
2026-05-14 01:43:14,266 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:14,269 - pyradtran.interface - DEBUG - Simulation 2/14 completed successfully
2026-05-14 01:43:15,021 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpevf0pazg.out
2026-05-14 01:43:15,022 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:15,024 - pyradtran.interface - DEBUG - Simulation 1/14 completed successfully
2026-05-14 01:43:15,029 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp872h58m3.out
2026-05-14 01:43:15,030 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:15,033 - pyradtran.interface - DEBUG - Simulation 10/14 completed successfully
2026-05-14 01:43:15,038 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp36srbl7k.out
2026-05-14 01:43:15,039 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:15,041 - pyradtran.interface - DEBUG - Simulation 11/14 completed successfully
2026-05-14 01:43:15,051 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmptfrnc097.out
2026-05-14 01:43:15,052 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:15,054 - pyradtran.interface - DEBUG - Simulation 5/14 completed successfully
2026-05-14 01:43:15,089 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpbg1gxtak.out
2026-05-14 01:43:15,090 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:15,093 - pyradtran.interface - DEBUG - Simulation 13/14 completed successfully
2026-05-14 01:43:15,110 - pyradtran.interface - INFO - Batch execution completed: 14/14 simulations successful
2026-05-14 01:43:15,125 - pyradtran.interface - DEBUG - LibRadtran parameter override: sza 74.0
2026-05-14 01:43:15,126 - pyradtran.interface - INFO - Preparing 14 simulations from input dataset with dims ['time']
2026-05-14 01:43:15,300 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,300 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,300 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,301 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,300 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,301 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,301 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,301 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,301 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,302 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,302 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,302 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,302 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,302 - pyradtran.utils - DEBUG - Radiosonde base path does not exist or not provided: /path/to/radiosonde/data
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmfqtdd6c.inp
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp6s46e7tp.inp
2026-05-14 01:43:15,303 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpquz9ifxz.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9575ft06.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmfqtdd6c.out
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpwhnr5ma7.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpad6wfm0c.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3mwahgrt.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpfdj5tyln.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpquz9ifxz.out
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp6s46e7tp.out
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp12wka4g_.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpuibo8khq.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp84r5pzwq.inp
2026-05-14 01:43:15,304 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9575ft06.out
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Running LibRadtran: /opt/libRadtran-2.0.6/bin/uvspec
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpwhnr5ma7.out
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpad6wfm0c.out
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvn454jux.inp
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpfdj5tyln.out
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpuibo8khq.out
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3mwahgrt.out
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp12wka4g_.out
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp84r5pzwq.out
2026-05-14 01:43:15,305 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpnq8vrsld.inp
2026-05-14 01:43:15,306 - pyradtran.core - DEBUG - Input file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp97cvdij1.inp
2026-05-14 01:43:15,306 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvn454jux.out
2026-05-14 01:43:15,306 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpnq8vrsld.out
2026-05-14 01:43:15,306 - pyradtran.core - DEBUG - Output file: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp97cvdij1.out
2026-05-14 01:43:19,064 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp9575ft06.out
2026-05-14 01:43:19,065 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,067 - pyradtran.interface - DEBUG - Simulation 2/14 completed successfully
2026-05-14 01:43:19,077 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp84r5pzwq.out
2026-05-14 01:43:19,078 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,081 - pyradtran.interface - DEBUG - Simulation 9/14 completed successfully
2026-05-14 01:43:19,085 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpwhnr5ma7.out
2026-05-14 01:43:19,086 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpad6wfm0c.out
2026-05-14 01:43:19,086 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,086 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,088 - pyradtran.interface - DEBUG - Simulation 1/14 completed successfully
2026-05-14 01:43:19,089 - pyradtran.interface - DEBUG - Simulation 6/14 completed successfully
2026-05-14 01:43:19,089 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpfdj5tyln.out
2026-05-14 01:43:19,089 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,091 - pyradtran.interface - DEBUG - Simulation 5/14 completed successfully
2026-05-14 01:43:19,617 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpquz9ifxz.out
2026-05-14 01:43:19,617 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,619 - pyradtran.interface - DEBUG - Simulation 4/14 completed successfully
2026-05-14 01:43:19,679 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpmfqtdd6c.out
2026-05-14 01:43:19,680 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,683 - pyradtran.interface - DEBUG - Simulation 7/14 completed successfully
2026-05-14 01:43:19,754 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp97cvdij1.out
2026-05-14 01:43:19,755 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,758 - pyradtran.interface - DEBUG - Simulation 13/14 completed successfully
2026-05-14 01:43:19,893 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpnq8vrsld.out
2026-05-14 01:43:19,894 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:19,896 - pyradtran.interface - DEBUG - Simulation 14/14 completed successfully
2026-05-14 01:43:20,107 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp3mwahgrt.out
2026-05-14 01:43:20,108 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:20,111 - pyradtran.interface - DEBUG - Simulation 8/14 completed successfully
2026-05-14 01:43:20,161 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpvn454jux.out
2026-05-14 01:43:20,163 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:20,166 - pyradtran.interface - DEBUG - Simulation 12/14 completed successfully
2026-05-14 01:43:20,548 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmpuibo8khq.out
2026-05-14 01:43:20,549 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:20,552 - pyradtran.interface - DEBUG - Simulation 10/14 completed successfully
2026-05-14 01:43:20,563 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp12wka4g_.out
2026-05-14 01:43:20,564 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:20,567 - pyradtran.interface - DEBUG - Simulation 11/14 completed successfully
2026-05-14 01:43:20,732 - pyradtran.core - DEBUG - Simulation completed successfully: /home/josh/pyRadtran/book/notebooks/pyradtran_work/tmp6s46e7tp.out
2026-05-14 01:43:20,734 - pyradtran.io - DEBUG - Initialized parser with columns: ['zout', 'lambda', 'edir', 'eglo', 'edn', 'eup', 'enet', 'albedo']
2026-05-14 01:43:20,736 - pyradtran.interface - DEBUG - Simulation 3/14 completed successfully
2026-05-14 01:43:20,756 - pyradtran.interface - INFO - Batch execution completed: 14/14 simulations successful
<xarray.Dataset> Size: 6kB
Dimensions: (sza: 7, albedo: 14)
Coordinates:
* sza (sza) float64 56B 50.0 54.0 58.0 62.0 66.0 70.0 74.0
time (albedo) datetime64[ns] 112B 2017-06-01T10:00:00 ... 2017-06-01T...
* albedo (albedo) float64 112B 0.3 0.35 0.4 0.45 0.5 ... 0.8 0.85 0.9 0.95
Data variables:
zout (sza, albedo) float64 784B 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
lambda (sza, albedo) float64 784B 300.0 300.0 300.0 ... 300.0 300.0 300.0
edir (sza, albedo) float64 784B 6.038e+05 6.038e+05 ... 2.074e+05
eglo (sza, albedo) float64 784B 6.634e+05 6.658e+05 ... 2.585e+05
edn (sza, albedo) float64 784B 5.957e+04 6.202e+04 ... 5.108e+04
eup (sza, albedo) float64 784B 1.99e+05 2.33e+05 ... 2.456e+05
enet (sza, albedo) float64 784B 4.644e+05 4.328e+05 ... 1.293e+04
Attributes:
point_id: 20170601_100000_81.00_10.00_0
time: 2017-06-01T10:00:00
latitude: 81.0
longitude: 10.0
albedo: 0.3
surface_temperature: None
surface_type: None
altitude: None
generated_by: pyradtran
pyradtran_version: unified_system
generation_date: 2026-05-14T01:42:47.237600
LUT shape sza×albedo = FrozenMappingWarningOnValuesAccess({'sza': 7, 'albedo': 14})
# ── 4. Compute SW Cloud Radiative Forcing (both methods) ────────────────────
#
# Stapf et al. (2020) Eq. 9:
#
# ΔF_sw(α_all) = F_net_obs – F_cf_clrsky(SZA, α_all) ← traditional
# ΔF_sw(α_cf) = F_net_obs – F_cf_clrsky(SZA, α_cf) ← surface-feedback-corrected
#
# where F_net = F_dn_sw × (1 – α).
#
# F_cf_clrsky(SZA, α) is interpolated from the LUT.
# F_net_obs = eglo_obs × (1 – α_all) — we reconstruct this from the LUT downwelling
# at the observed SZA and α_all (i.e., the cloudy scene is approximated via α_all).
#
# Note: in the PANGAEA file this would be measured directly; here we use the LUT
# with α_all to approximate the clear-sky downwelling then attenuate it.
from scipy.interpolate import RegularGridInterpolator
# Build interpolators for enet (F_net = edir+ediffuse - eup ≡ eglo*(1-α))
# and eglo (F_dn = total downwelling)
lut_sza_nodes = lut.sza.values
lut_alb_nodes = lut.albedo.values
def _make_interp(var):
arr = lut[var].values / 1000 # shape (sza, albedo)
return RegularGridInterpolator(
(lut_sza_nodes, lut_alb_nodes),
arr,
method='linear',
bounds_error=False,
fill_value=None, # extrapolate at edges
)
interp_enet = _make_interp('enet')
interp_eglo = _make_interp('eglo')
# ── extract observation arrays ───────────────────────────────────────────────
obs_sza = ds_obs['SZA'].values.ravel()
obs_alpha_all = ds_obs['alpha_all'].values.ravel()
obs_alpha_cf = ds_obs['alpha_cf'].values.ravel()
# Clip to LUT bounds (±2° and ±0.03 albedo headroom)
sza_clipped = np.clip(obs_sza, lut_sza_nodes.min(), lut_sza_nodes.max())
aall_clipped = np.clip(obs_alpha_all, lut_alb_nodes.min(), lut_alb_nodes.max())
acf_clipped = np.clip(obs_alpha_cf, lut_alb_nodes.min(), lut_alb_nodes.max())
# ── clear-sky net irradiance ─────────────────────────────────────────────────
# F_cf_clrsky(SZA, α_all): the clear-sky net flux that would exist if the surface
# had the observed (cloudy) albedo. Used in the "traditional" CRF estimate.
F_cf_all = interp_enet(np.column_stack([sza_clipped, aall_clipped]))
# F_cf_clrsky(SZA, α_cf): the clear-sky net flux with the true (cloud-free) albedo.
# Used in the "corrected" CRF estimate (accounts for spectral albedo shift).
F_cf_cf = interp_enet(np.column_stack([sza_clipped, acf_clipped]))
# ── observed net irradiance ──────────────────────────────────────────────────
# Approximate: use LUT eglo at (SZA, α_all) and modulate by α_all.
# (If the PANGAEA file is loaded, eglo/eup columns can be used directly instead.)
F_dn_lut = interp_eglo(np.column_stack([sza_clipped, aall_clipped]))
F_net_obs = F_dn_lut * (1.0 - obs_alpha_all)
# ── CRF ─────────────────────────────────────────────────────────────────────
CRF_sw_trad = F_net_obs - F_cf_all # traditional (uses α_all for reference)
CRF_sw_corr = F_net_obs - F_cf_cf # corrected (uses α_cf for reference)
CRF_lw = ds_obs['CRF_lw_paper'].values.ravel() if 'CRF_lw_paper' in ds_obs else None
CRF_tot_trad = CRF_sw_trad + (CRF_lw if CRF_lw is not None else 0.0)
CRF_tot_corr = CRF_sw_corr + (CRF_lw if CRF_lw is not None else 0.0)
# ── add back to observation dataset ─────────────────────────────────────────
obs_dim = list(ds_obs.dims)[0]
ds_obs['CRF_sw_trad'] = (obs_dim, CRF_sw_trad, {'long_name': r'$\Delta F_{sw}(\alpha_{all})$', 'units': 'W m⁻²'})
ds_obs['CRF_sw_corr'] = (obs_dim, CRF_sw_corr, {'long_name': r'$\Delta F_{sw}(\alpha_{cf})$', 'units': 'W m⁻²'})
if CRF_lw is not None:
ds_obs['CRF_tot_trad'] = (obs_dim, CRF_tot_trad, {'long_name': r'$\Delta F_{tot}(\alpha_{all})$','units': 'W m⁻²'})
ds_obs['CRF_tot_corr'] = (obs_dim, CRF_tot_corr, {'long_name': r'$\Delta F_{tot}(\alpha_{cf})$', 'units': 'W m⁻²'})
# ── summary ──────────────────────────────────────────────────────────────────
print(f"{'Quantity':<30} {'Mean':>9} {'Std':>9}")
print('-' * 52)
for label, arr in [
(r'α_all', obs_alpha_all),
(r'α_cf', obs_alpha_cf),
(r'Δα (cloudy – cloud-free)', obs_alpha_all - obs_alpha_cf),
(r'CRF_sw traditional [W m⁻²]', CRF_sw_trad),
(r'CRF_sw corrected [W m⁻²]', CRF_sw_corr),
]:
print(f" {label:<28} {np.nanmean(arr):+9.2f} {np.nanstd(arr):9.2f}")
if CRF_lw is not None:
for label, arr in [
(r'CRF_lw [W m⁻²]', CRF_lw),
(r'CRF_tot traditional[W m⁻²]', CRF_tot_trad),
(r'CRF_tot corrected [W m⁻²]', CRF_tot_corr),
]:
print(f" {label:<28} {np.nanmean(arr):+9.2f} {np.nanstd(arr):9.2f}")
print(f"\nPaper (Table 1, sea-ice subset):")
print(f" CRF_sw(α_all) ≈ −32 W m⁻²")
print(f" CRF_sw(α_cf) ≈ −62 W m⁻² (2× more negative when corrected)")
Quantity Mean Std
----------------------------------------------------
α_all +0.81 0.07
α_cf +0.75 0.07
Δα (cloudy – cloud-free) +0.06 0.02
CRF_sw traditional [W m⁻²] +0.01 0.21
CRF_sw corrected [W m⁻²] -28.80 12.00
CRF_lw [W m⁻²] +68.84 16.09
CRF_tot traditional[W m⁻²] +68.85 16.09
CRF_tot corrected [W m⁻²] +40.04 12.90
Paper (Table 1, sea-ice subset):
CRF_sw(α_all) ≈ −32 W m⁻²
CRF_sw(α_cf) ≈ −62 W m⁻² (2× more negative when corrected)
# ── 5. Reproduce Fig. 10 of Stapf et al. (2020) ─────────────────────────────
#
# Three-panel figure:
# (a) Histograms of α_all and α_cf — the surface albedo shift from clouds
# (b) Shortwave CRF distributions using α_all (gray) and α_cf (red)
# + longwave CRF (blue)
# (c) Total (SW+LW) CRF distributions
#
# Vertical dashed lines mark campaign means;
# shaded band shows 1σ spread around the mean.
import matplotlib.patches as mpatches
from matplotlib.ticker import MultipleLocator
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
kw_hist = dict(density=True, histtype='stepfilled', alpha=0.45, bins=35, edgecolor='none')
kw_mean = dict(lw=2.0, ls='--')
# ─── (a) Surface albedo ──────────────────────────────────────────────────────
ax = axes[0]
ax.hist(obs_alpha_all, color='steelblue', **kw_hist, label=r'$\alpha_{all}$ (observed, cloudy)')
ax.hist(obs_alpha_cf, color='tomato', **kw_hist, label=r'$\alpha_{cf}$ (estimated, cloud-free)')
mean_aall = np.nanmean(obs_alpha_all)
mean_acf = np.nanmean(obs_alpha_cf)
ax.axvline(mean_aall, color='steelblue', **kw_mean)
ax.axvline(mean_acf, color='tomato', **kw_mean)
ax.text(mean_aall + 0.01, ax.get_ylim()[1] * 0.85,
f'{mean_aall:.3f}', color='steelblue', fontsize=9)
ax.text(mean_acf - 0.055, ax.get_ylim()[1] * 0.85,
f'{mean_acf:.3f}', color='tomato', fontsize=9)
ax.set_xlabel('Broadband surface albedo', fontsize=11)
ax.set_ylabel('Probability density', fontsize=11)
ax.set_title(r'(a) $\alpha_{all}$ vs $\alpha_{cf}$', fontsize=12)
ax.legend(fontsize=9)
ax.text(0.05, 0.95,
f'Paper: {0.80:.2f} vs {0.74:.2f}',
transform=ax.transAxes, fontsize=8, va='top',
bbox=dict(boxstyle='round', fc='lightyellow', alpha=0.8))
# ─── (b) SW and LW CRF ──────────────────────────────────────────────────────
ax = axes[1]
ax.hist(CRF_sw_trad, color='gray', **kw_hist, label=r'$\Delta F_{sw}(\alpha_{all})$ trad.')
ax.hist(CRF_sw_corr, color='tomato', **kw_hist, label=r'$\Delta F_{sw}(\alpha_{cf})$ corrected')
if CRF_lw is not None:
ax.hist(CRF_lw, color='royalblue', **kw_hist, label=r'$\Delta F_{lw}$')
mean_sw_trad = np.nanmean(CRF_sw_trad)
mean_sw_corr = np.nanmean(CRF_sw_corr)
ax.axvline(mean_sw_trad, color='gray', **kw_mean)
ax.axvline(mean_sw_corr, color='tomato', **kw_mean)
ylim_b = ax.get_ylim()[1]
ax.text(mean_sw_trad - 3, ylim_b * 0.88, f'{mean_sw_trad:.0f}',
color='gray', fontsize=9, ha='right')
ax.text(mean_sw_corr + 2, ylim_b * 0.88, f'{mean_sw_corr:.0f}',
color='tomato', fontsize=9)
if CRF_lw is not None:
ax.axvline(np.nanmean(CRF_lw), color='royalblue', **kw_mean)
ax.axvline(0, color='k', lw=0.8, ls=':')
ax.set_xlabel(r'CRF [W m$^{-2}$]', fontsize=11)
ax.set_ylabel('Probability density', fontsize=11)
ax.set_title('(b) SW and LW CRF', fontsize=12)
ax.legend(fontsize=9, loc='upper left')
ax.text(0.05, 0.95,
f'Paper: {-32:.0f} vs {-62:.0f} W m⁻²',
transform=ax.transAxes, fontsize=8, va='top',
bbox=dict(boxstyle='round', fc='lightyellow', alpha=0.8))
# ─── (c) Total CRF ──────────────────────────────────────────────────────────
ax = axes[2]
if CRF_lw is not None:
ax.hist(CRF_tot_trad, color='gray', **kw_hist, label=r'$\Delta F_{tot}(\alpha_{all})$ trad.')
ax.hist(CRF_tot_corr, color='tomato', **kw_hist, label=r'$\Delta F_{tot}(\alpha_{cf})$ corrected')
mean_tot_trad = np.nanmean(CRF_tot_trad)
mean_tot_corr = np.nanmean(CRF_tot_corr)
ax.axvline(mean_tot_trad, color='gray', **kw_mean)
ax.axvline(mean_tot_corr, color='tomato', **kw_mean)
ylim_c = ax.get_ylim()[1]
ax.text(mean_tot_trad + 2, ylim_c * 0.88, f'{mean_tot_trad:.0f}', color='gray', fontsize=9)
ax.text(mean_tot_corr - 3, ylim_c * 0.88, f'{mean_tot_corr:.0f}', color='tomato', fontsize=9, ha='right')
ax.text(0.05, 0.95,
f'Paper: +37 vs +6 W m⁻²',
transform=ax.transAxes, fontsize=8, va='top',
bbox=dict(boxstyle='round', fc='lightyellow', alpha=0.8))
else:
ax.text(0.5, 0.5, 'No LW CRF data available\n(PANGAEA file needed)',
ha='center', va='center', transform=ax.transAxes, fontsize=10)
ax.axvline(0, color='k', lw=0.8, ls=':')
ax.set_xlabel(r'CRF [W m$^{-2}$]', fontsize=11)
ax.set_ylabel('Probability density', fontsize=11)
ax.set_title('(c) Total (SW+LW) CRF', fontsize=12)
ax.legend(fontsize=9, loc='upper left')
# shared styling
for ax in axes:
ax.spines[['top', 'right']].set_visible(False)
ax.xaxis.set_minor_locator(MultipleLocator(0.02 if ax is axes[0] else 5))
data_label = 'PANGAEA ds 909289 (Stapf et al. 2019)' if not FALLBACK else 'Synthetic fallback (paper statistics)'
fig.suptitle(
f'Cloud radiative forcing over Arctic sea ice | pyRadtran clear-sky LUT\n'
f'{data_label}',
fontsize=11, y=1.02,
)
plt.tight_layout()
plt.show()
print("Figure saved → output/stapf2020_fig10_reproduction.png")
Figure saved → output/stapf2020_fig10_reproduction.png