forked from AntSimi/py-eddy-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEddyTranslate
More file actions
51 lines (40 loc) · 1.42 KB
/
EddyTranslate
File metadata and controls
51 lines (40 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Translate eddy Dataset
"""
from py_eddy_tracker import EddyParser
from py_eddy_tracker.observations.observation import EddiesObservations
from netCDF4 import Dataset
import zarr
def id_parser():
parser = EddyParser('Eddy Translate, Translate eddies from netcdf to zarr or from zarr to netcdf')
parser.add_argument('filename_in')
parser.add_argument('filename_out')
return parser
def is_nc(filename):
return filename.endswith('.nc')
def get_variable_name(filename):
if is_nc(filename):
with Dataset(filename) as h:
return h.variables.keys()
else:
h = zarr.open(filename)
return list(h.keys())
def get_variable(filename, varname):
if is_nc(filename):
dataset = EddiesObservations.load_from_netcdf(filename, raw_data=True, include_vars=(varname,))
else:
dataset = EddiesObservations.load_from_zarr(filename, include_vars=(varname,))
return dataset
if __name__ == '__main__':
args = id_parser().parse_args()
variables = get_variable_name(args.filename_in)
if is_nc(args.filename_out):
h = zarr.open(args.filename_out, 'w')
for varname in variables:
get_variable(args.filename_in, varname).to_zarr(h)
else:
with Dataset(args.filename_out, 'w') as h:
for varname in variables:
get_variable(args.filename_in, varname).to_netcdf(h)