Argolytics / streamlit /scratch_prof_test.py
harshini9942
Streamlit Dashboard Pushed 20-05-2026
0ebe8a8
Raw
History Blame Contribute Delete
2.16 kB
import xarray as xr
import numpy as np
ds_prof = xr.open_dataset(r"C:\Users\harsh\incois\dashboard\more_components\2902174_prof.nc")
print("Checking last few cycles for valid PRES data...")
pres_data = ds_prof.PRES.values
valid_cycles = np.where(~np.isnan(pres_data).all(axis=1))[0]
print(f"Total cycles: {pres_data.shape[0]}")
print(f"Total valid cycles: {len(valid_cycles)}")
if len(valid_cycles) > 0:
last_valid_idx = valid_cycles[-1]
print(f"Last valid cycle index: {last_valid_idx}, Cycle number: {ds_prof.CYCLE_NUMBER.values[last_valid_idx]}")
last_pres = pres_data[last_valid_idx]
last_temp = ds_prof.TEMP.values[last_valid_idx] if 'TEMP' in ds_prof else np.full_like(last_pres, np.nan)
last_psal = ds_prof.PSAL.values[last_valid_idx] if 'PSAL' in ds_prof else np.full_like(last_pres, np.nan)
valid_idx = ~np.isnan(last_pres)
pres_v = last_pres[valid_idx]
temp_v = last_temp[valid_idx]
psal_v = last_psal[valid_idx]
print(f"Found {len(pres_v)} valid pressure points in this cycle.")
if len(pres_v) > 0:
surface_idx = np.argmin(pres_v)
bottom_idx = np.argmax(pres_v)
print(f"Surface: {pres_v[surface_idx]:.2f} dbar {temp_v[surface_idx]:.3f}°C {psal_v[surface_idx]:.3f} PSU")
print(f"Bottom: {pres_v[bottom_idx]:.2f} dbar {temp_v[bottom_idx]:.3f}°C {psal_v[bottom_idx]:.3f} PSU")
ds_meta = xr.open_dataset(r"C:\Users\harsh\incois\dashboard\more_components\2902174_meta.nc")
def d(val):
if hasattr(val, "item") and callable(val.item) and val.ndim == 0:
val = val.item()
if isinstance(val, bytes):
return val.decode('utf-8', errors='ignore').strip()
elif isinstance(val, np.ndarray) and val.dtype.kind == 'S':
return ", ".join([v.decode('utf-8', errors='ignore').strip() for v in val.flat if v.decode('utf-8', errors='ignore').strip()])
return str(val).strip()
print("\nData Centre fields:")
print(f"DATA_CENTRE: {d(ds_meta.DATA_CENTRE.values) if 'DATA_CENTRE' in ds_meta else 'N/A'}")
print(f"OPERATING_INSTITUTION: {d(ds_meta.OPERATING_INSTITUTION.values) if 'OPERATING_INSTITUTION' in ds_meta else 'N/A'}")