Mercurial > repos > climate > psy_maps
diff psymap_simple.py @ 0:db8d76da4174 draft
planemo upload for repository https://github.com/NordicESMhub/galaxy-tools/tree/master/tools/psy-maps commit c1362af034361b6fb869411f1ea928388f230d72
author | climate |
---|---|
date | Thu, 25 Apr 2019 18:11:49 -0400 |
parents | |
children | 706666d912d5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/psymap_simple.py Thu Apr 25 18:11:49 2019 -0400 @@ -0,0 +1,116 @@ +#!/usr/bin/env python3 +# +# +# usage: psymap_simple.py [-h] [--proj PROJ] +# [--cmap CMAP] +# [--output OUTPUT] +# [-v] +# input varname +# +# positional arguments: +# input input filename with geographical coordinates (netCDF +# format) +# varname Specify which variable to plot (case sensitive) +# +# optional arguments: +# -h, --help show this help message and exit +# --proj PROJ Specify the projection on which we draw +# --cmap CMAP Specify which colormap to use for plotting +# --output OUTPUT output filename to store resulting image (png format) +# -v, --verbose switch on verbose mode +# + +import argparse +import warnings +from pathlib import Path + +import matplotlib as mpl +mpl.use('Agg') +from matplotlib import pyplot # noqa: I202,E402 + +import psyplot.project as psy # noqa: I202,E402 + + +class PsyPlot (): + def __init__(self, input, proj, varname, cmap, output, + verbose=False + ): + self.input = input + self.proj = proj + self.varname = varname + self.cmap = cmap + if output is None: + self.output = Path(input).stem + '.png' + else: + self.output = output + self.verbose = verbose + if verbose: + print("input: ", self.input) + print("proj: ", self.proj) + print("varname: ", self.varname) + print("cmap: ", self.cmap) + print("output: ", self.output) + + def plot(self): + if self.cmap is None and self.proj is None: + print("op1") + psy.plot.mapplot(self.input, name=self.varname, + clabel='{desc}') + elif self.proj is None or self.proj == '': + print("op2") + psy.plot.mapplot(self.input, name=self.varname, + cmap=self.cmap, clabel='{desc}') + elif self.cmap is None or self.cmap == '': + print("op3") + psy.plot.mapplot(self.input, name=self.varname, + projection=self.proj, + clabel='{desc}') + else: + print("op4") + psy.plot.mapplot(self.input, name=self.varname, + cmap=self.cmap, + projection=self.proj, + clabel='{desc}') + + pyplot.savefig(self.output) + + +def psymap_plot(input, proj, varname, cmap, output, verbose): + """Generate plot from input filename""" + + p = PsyPlot(input, proj, varname, cmap, output, verbose) + p.plot() + + +if __name__ == '__main__': + warnings.filterwarnings("ignore") + parser = argparse.ArgumentParser() + parser.add_argument( + 'input', + help='input filename with geographical coordinates (netCDF format)' + ) + + parser.add_argument( + '--proj', + help='Specify the projection on which we draw' + ) + parser.add_argument( + 'varname', + help='Specify which variable to plot (case sensitive)' + ) + parser.add_argument( + '--cmap', + help='Specify which colormap to use for plotting' + ) + parser.add_argument( + '--output', + help='output filename to store resulting image (png format)' + ) + parser.add_argument( + "-v", "--verbose", + help="switch on verbose mode", + action="store_true") + args = parser.parse_args() + + psymap_plot(args.input, args.proj, args.varname, args.cmap, + args.output, args.verbose)