← LAMPIRAN MENULAMPIRAN 17 / 18
S1D4NG.5KR1P51.404 · ANNEX FILE
Lampiran 17. Program Python untuk menganalisis IOD
//⚠ S1D4NG.5KR1P51.404 — BIOHAZARD ZONE·//⚠ NO SHARP · NO NARCOTICS · NO WEIRD CARGO·//⚠ THE HUM IS LOUDER WHEN YOU NOTICE IT·//⚠ ERROR 404 RECOVERED — STILL WRONG·//⚠ LEVEL 0 · DO NOT TRUST THE CORRIDOR·
Lampiran 17. Program Python untuk menganalisis IOD
| import xarray as xr import pandas as pd import numpy as np url = "https://psl.noaa.gov/thredds/dodsC/Datasets/noaa.ersst.v5/sst.mnmean.nc" print("Loading ERSST v5 via OPeNDAP...") ds = xr.open_dataset(url) sst = ds['sst'] print(f"Data: {str(sst.time[0].values)[:10]} to {str(sst.time[-1].values)[:10]}") print("Computing climatology...") clim = sst.sel(time=slice('1991-01-01', '2020-12-31')) months_clim = clim['time.month'] clim_monthly = clim.groupby(months_clim).mean('time') sst_2025 = sst.sel(time=sst.time.dt.year == 2025) months_2025 = sst_2025['time.month'] print("Computing anomalies...") anom = sst_2025.groupby(months_2025) - clim_monthly west = anom.sel(lat=slice(10, -10), lon=slice(50, 70)).mean(['lat', 'lon']) east = anom.sel(lat=slice(0, -10), lon=slice(90, 110)).mean(['lat', 'lon']) iod = west - east print() print("=" * 55) print("IOD (DMI) Index 2025 — ERSST v5") print("Sumber: NOAA ERSST v5 via OPeNDAP (near-real-time)") print("=" * 55) month_names = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] for t in iod.time.values: dt = pd.Timestamp(t).to_pydatetime() val = float(iod.sel(time=t).values) if not np.isnan(val): print(f" {month_names[dt.month-1]} {dt.year}: {val:+.3f}") else: print(f" {month_names[dt.month-1]} {dt.year}: NaN") print("=" * 55) sst_2024 = sst.sel(time=sst.time.dt.year == 2024) months_2024 = sst_2024['time.month'] anom_2024 = sst_2024.groupby(months_2024) - clim_monthly west_2024 = anom_2024.sel(lat=slice(10, -10), lon=slice(50, 70)).mean(['lat', 'lon']) east_2024 = anom_2024.sel(lat=slice(0, -10), lon=slice(90, 110)).mean(['lat', 'lon']) iod_2024 = west_2024 - east_2024 print("\nIOD 2024 (referensi):") for t in iod_2024.time.values: dt = pd.Timestamp(t).to_pydatetime() val = float(iod_2024.sel(time=t).values) print(f" {month_names[dt.month-1]} {dt.year}: {val:+.3f}") |