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")
