ICDC Daten für Python User
Intake YAML Katalog
In einer ersten Testphase wollen wir unseren PythonnutzerInnen auf mistral das Einlesen unserer ICDC Daten erleichtern. Dazu haben wir erst einmal nur für die Sphäre Ozean einen YAML Katalog angelegt, den man mittels der Python Library intake einlesen kann. Hier ein kurzes Beispiel, wie man auf mistralpp diesen Katalog nutzen kann, nach dem man anaconda3 geladen hat:
module unload netcdf_c
module load anaconda3
Sollte dieses Feature auf Zustimmung stoßen, würden wir Kataloge für die anderen Sphären und auch für das CEN Netzwerk (unter /data/icdc) erstellen. Bitte gebt / geben Sie uns gerne Feedback!
Beispiel 1
Welche Datensätze sind im Katalog?
import intake # load yaml file as a catalogue containing almost all ocean data of ICDC cat = intake.open_catalog("/pool/data/ICDC/ocean/ocean_mistral.yml")
# show set of entries
list(cat)
Beispiel 2
Laden eines bestimmten Datensatzes (HadISST):
import intake
# load yaml file as a catalogue containing almost all ocean data of ICDC
cat = intake.open_catalog("/pool/data/ICDC/ocean/ocean_mistral.yml")
# load data set hadisst into an xarray dataset
ds = cat["hadisst"].to_dask()
# from here on use it as an xarray dataset
print(ds.info())
Beispiel 3
Laden von Datensätzen mit zusätzlichen Parametern:
Manche Datensätze haben zusätzliche Optionen, die im YAML File als "parameters" bezeichnet werden, z.B. OSCAR Surface Current Velocity hat die Option entweder die 1 Grad oder die 0.33 Grad Auflösung zu laden. Daher lohnt es sich, sich die YAML Datei /pool/data/ICDC/ocean/ocean_mistral.yml anzuschauen, bevor man einen Datensatz lädt.
Hier der passende Ausschnitt zu OSCAR aus der YAML Datei:
oscar_surface_current_velocity:
driver: netcdf
description: global near-surface current estimates
metadata:
url_origin: icdc.cen.uni-hamburg.de/en/oscar-oceansurfacecurrent.html
parameters:
s_res:
description: spatial resolution
type: str
default: 1degree
allowed: [1degree,1third_degree]
args:
urlpath: /pool/data/ICDC/ocean/oscar_surface_current_velocity/DATA/{{s_res}}/*oscar_vel*.nc
xarray_kwargs:
concat_dim: time
combine: nested
drop_variables: depth
So nutzt man die Option in Python:
import intake
# load yaml file as a catalogue containing almost all ocean data of ICDC
cat = intake.open_catalog("/pool/data/ICDC/ocean/ocean_mistral.yml")
# load data set oscar_surface_current_velocity in 0.33 degrees resolution
ds = cat.oscar_surface_current_velocity(s_res="1third_degree").to_dask()
print(ds.info())