diurnal_cycle.py
diurnal_cycle.py
— 1.2 KB
Contenu du fichier
#!/usr/bin/env python3 """This script reads a NetCDF file which should contain time series of fields, and computes the diurnal cycle. Author: Lionel GUEZ """ import sys import cdo import nco import netCDF4 import os def time_counter(hour): with netCDF4.Dataset(f"ncra_plouf{hour:02}.nc") as ncra_plouf: return ncra_plouf["time_counter"][0] if len(sys.argv) != 3: sys.exit("Required arguments: input-netCDF-file output-netCDF-file") cdo_instance = cdo.Cdo() cdo_instance.splithour(output = "plouf", input = sys.argv[1]) nco_instance = nco.Nco() for hour in range(24): nco_instance.ncra(input = f"plouf{hour:02}.nc", output = f"ncra_plouf{hour:02}.nc") # (does not seem to work without the output argument) with netCDF4.Dataset(f"ncra_plouf{hour:02}.nc", "r+") as ncra_plouf, \ netCDF4.Dataset(f"plouf{hour:02}.nc") as plouf: ncra_plouf["time_counter"][0] = plouf["time_counter"][0] hour_list = sorted(range(24), key = time_counter) nco_instance.ncrcat(input = [f"ncra_plouf{hour:02}.nc" for hour in hour_list], output = sys.argv[2]) # Clean up: for hour in range(24): os.remove(f"ncra_plouf{hour:02}.nc") os.remove(f"plouf{hour:02}.nc")