Mercurial > repos > ecology > xarray_netcdf2netcdf
annotate xarray_netcdf2netcdf.py @ 0:b0780241f916 draft
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
| author | ecology | 
|---|---|
| date | Sun, 06 Jun 2021 08:50:11 +0000 | 
| parents | |
| children | e87073edecd6 | 
| rev | line source | 
|---|---|
| 0 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 1 #!/usr/bin/env python3 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 2 # | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 3 # Apply operations on selected variables | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 4 # - scale | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 5 # one can also select the range of time (for timeseries) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 6 # to apply these operations over the range only | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 7 # when a range of time is selected and when scaling, one | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 8 # can choose to save the entire timeseries or | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 9 # the selected range only. | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 10 # when scaling, one can add additional filters on dimensions | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 11 # (typically used to filter over latitudes and longitudes) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 12 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 13 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 14 import argparse | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 15 import warnings | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 16 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 17 import xarray as xr # noqa: E402 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 18 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 19 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 20 class netCDF2netCDF (): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 21 def __init__(self, infile, varname, scale="", | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 22 output="output.netcdf", | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 23 write_all=False, | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 24 filter_list="", | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 25 verbose=False): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 26 self.infile = infile | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 27 self.verbose = verbose | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 28 self.varname = varname | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 29 self.write_all = write_all | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 30 self.filter = filter_list | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 31 self.selection = {} | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 32 if scale == "" or scale is None: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 33 self.scale = 1 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 34 else: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 35 self.scale = float(scale) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 36 if output is None: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 37 self.output = "output.netcdf" | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 38 else: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 39 self.output = output | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 40 # initialization | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 41 self.dset = None | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 42 self.subset = None | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 43 if self.verbose: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 44 print("infile: ", self.infile) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 45 print("varname: ", self.varname) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 46 print("filter_list: ", self.filter) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 47 print("scale: ", self.scale) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 48 print("write_all: ", self.write_all) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 49 print("output: ", self.output) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 50 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 51 def dimension_selection(self, single_filter): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 52 split_filter = single_filter.split('#') | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 53 dimension_varname = split_filter[0] | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 54 op = split_filter[1] | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 55 ll = int(split_filter[2]) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 56 if (op == 'sl'): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 57 rl = int(split_filter[3]) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 58 self.selection[dimension_varname] = slice(ll, rl) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 59 elif (op == 'to'): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 60 self.selection[dimension_varname] = slice(None, ll) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 61 elif (op == 'from'): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 62 self.selection[dimension_varname] = slice(ll, None) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 63 elif (op == 'is'): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 64 self.selection[dimension_varname] = ll | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 65 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 66 def filter_selection(self): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 67 for single_filter in self.filter: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 68 self.dimension_selection(single_filter) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 69 if self.write_all: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 70 self.ds[self.varname] = \ | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 71 self.ds[self.varname].isel(self.selection)*self.scale | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 72 else: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 73 self.dset = \ | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 74 self.ds[self.varname].isel(self.selection)*self.scale | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 75 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 76 def compute(self): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 77 if self.dset is None: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 78 self.ds = xr.open_dataset(self.infile) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 79 if self.filter: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 80 self.filter_selection() | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 81 if self.verbose: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 82 print(self.selection) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 83 elif self.write_all is not None: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 84 self.dset = self.ds[self.varname] | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 85 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 86 def save(self): | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 87 if self.write_all: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 88 self.ds.to_netcdf(self.output) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 89 else: | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 90 self.dset.to_netcdf(self.output) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 91 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 92 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 93 if __name__ == '__main__': | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 94 warnings.filterwarnings("ignore") | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 95 parser = argparse.ArgumentParser() | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 96 parser.add_argument( | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 97 'input', | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 98 help='input filename in netCDF format' | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 99 ) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 100 parser.add_argument( | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 101 'varname', | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 102 help='Specify which variable to plot (case sensitive)' | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 103 ) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 104 parser.add_argument( | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 105 '--filter', | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 106 nargs="*", | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 107 help='Filter list variable#operator#value_s#value_e' | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 108 ) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 109 parser.add_argument( | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 110 '--output', | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 111 help='Output filename to store the resulting netCDF file' | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 112 ) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 113 parser.add_argument( | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 114 '--scale', | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 115 help='scale factor to apply to selection (float)' | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 116 ) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 117 parser.add_argument( | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 118 "--write_all", | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 119 help="write all data to netCDF", | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 120 action="store_true") | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 121 parser.add_argument( | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 122 "-v", "--verbose", | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 123 help="switch on verbose mode", | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 124 action="store_true") | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 125 args = parser.parse_args() | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 126 | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 127 dset = netCDF2netCDF(infile=args.input, varname=args.varname, | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 128 scale=args.scale, output=args.output, | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 129 filter_list=args.filter, | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 130 write_all=args.write_all, | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 131 verbose=args.verbose) | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 132 dset.compute() | 
| 
b0780241f916
"planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/data_manipulation/xarray/ commit 57b6d23e3734d883e71081c78e77964d61be82ba"
 ecology parents: diff
changeset | 133 dset.save() | 
