From 6067feb0a3d4945087a1dd1af6cce32ad5fc8f32 Mon Sep 17 00:00:00 2001
From: anphi <anne.philipp@univie.ac.at>
Date: Tue, 18 Dec 2018 15:04:34 +0100
Subject: [PATCH] removed plotting routine since this does not belong to
 flex_extract core program

---
 python/plot_retrieved.py | 277 ---------------------------------------
 1 file changed, 277 deletions(-)
 delete mode 100755 python/plot_retrieved.py

diff --git a/python/plot_retrieved.py b/python/plot_retrieved.py
deleted file mode 100755
index a6566a3..0000000
--- a/python/plot_retrieved.py
+++ /dev/null
@@ -1,277 +0,0 @@
-#!/usr/bin/env python
-# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Functionality provided: Simple tool for creating maps and time series of retrieved fields.
-#
-# Requirements:
-# in addition to a standard python 2.6 or 2.7 installation the following packages need to be installed
-# ECMWF WebMARS, gribAPI with python enabled, emoslib, ecaccess web toolkit, all available from https://software.ecmwf.int/
-# dateutils
-# matplotlib (optional, for debugging)
-
-import datetime
-import time
-import os,inspect,sys,glob
-import socket
-# add path to submit.py to pythonpath so that python finds its buddies
-localpythonpath=os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
-if localpythonpath not in sys.path:
-    sys.path.append(localpythonpath)
-
-from matplotlib.pylab import *
-import matplotlib.patches as mpatches
-from mpl_toolkits.basemap import Basemap,addcyclic
-import matplotlib.colors as mcolors
-from matplotlib.font_manager import FontProperties
-from matplotlib.patches import Polygon
-import matplotlib.cm as cmx
-import matplotlib.colors as colors
-from argparse import ArgumentParser,ArgumentDefaultsHelpFormatter
-
-from FlexpartTools import interpret_args_and_control,silentremove,product,Control
-from GribTools import GribTools
-from gribapi import *
-from rasotools.utils import stats
-
-def plot_retrieved(args,c):
-
-    start = datetime.datetime.strptime(c.start_date,'%Y%m%d%H')
-    end = datetime.datetime.strptime(c.end_date,'%Y%m%d%H')
-
-    c.paramIds=asarray(c.paramIds,dtype='int')
-    c.levels=asarray(c.levels,dtype='int')
-    c.area=asarray(c.area)
-
-    index_keys=["date","time","step"]
-    indexfile=c.inputdir+"/date_time_stepRange.idx"
-    silentremove(indexfile)
-    files=glob.glob(c.inputdir+'/'+c.prefix+'*')
-    grib=GribTools(files)
-    iid=grib.index(index_keys=index_keys, index_file = indexfile)
-
-    gdict=dict(Ni = 360, Nj = 181,  iScansNegatively = 0,  jScansPositively = 0,
-               jPointsAreConsecutive = 0,  alternativeRowScanning = 0,
-               latitudeOfFirstGridPointInDegrees = 90,
-               longitudeOfFirstGridPointInDegrees = 181,
-               latitudeOfLastGridPointInDegrees = -90,
-               longitudeOfLastGridPointInDegrees = 180,
-               iDirectionIncrementInDegrees = 1,
-               jDirectionIncrementInDegrees = 1
-               )
-
-    index_vals = []
-    for key in index_keys:
-        key_vals = grib_index_get(iid,key)
-        print key_vals
-
-        index_vals.append(key_vals)
-
-    fdict=dict()
-    fmeta=dict()
-    fstamp=dict()
-    for p in c.paramIds:
-        for l in c.levels:
-            key='{:0>3}_{:0>3}'.format(p,l)
-            fdict[key]=[]
-            fmeta[key]=[]
-            fstamp[key]=[]
-    for prod in product(*index_vals):
-        for i in range(len(index_keys)):
-            grib_index_select(iid,index_keys[i],prod[i])
-
-        gid = grib_new_from_index(iid)
-#        if gid is not None:
-
-        while(gid is not None):
-            date = grib_get(gid, 'date')
-            fdate= datetime.datetime(date/10000,mod(date,10000)/100,mod(date,100))
-            gtime = grib_get(gid, 'time')
-            step = grib_get(gid, 'step')
-            fdatetime=fdate+datetime.timedelta(hours=gtime/100)
-#            if fdatetime<start or fdatetime>end:
-#                break
-            gtype = grib_get(gid, 'type')
-            paramId = grib_get(gid, 'paramId')
-            parameterName = grib_get(gid, 'parameterName')
-            level=grib_get(gid,'level')
-            if step>=c.start_step and step <=c.end_step and fdatetime>=start and fdatetime<=end and paramId in c.paramIds and level in c.levels:
-                key='{:0>3}_{:0>3}'.format(paramId,level)
-                print key
-                fdatetimestep=fdatetime+datetime.timedelta(hours=step)
-                if len(fstamp)==0:
-                    fstamp[key].append(fdatetimestamp)
-                    fmeta[key].append((paramId,parameterName,gtype,fdatetime,gtime,step,level))
-                    fdict[key].append(flipud(reshape(grib_get_values(gid),[gdict['Nj'],gdict['Ni']])))
-                else:
-                    i=0
-                    inserted=False
-                    for i in range(len(fstamp[key])):
-                        if fdatetimestep<fstamp[key][i]:
-                            fstamp[key][i:i]=[fdatetimestep]
-                            fmeta[key][i:i]=[(paramId,parameterName,gtype,fdatetime,gtime,step,level)]
-                            fdict[key][i:i]=[flipud(reshape(grib_get_values(gid),[gdict['Nj'],gdict['Ni']]))]
-                            inserted=True
-                            break
-                    if not inserted:
-                        fstamp[key].append(fdatetimestep)
-                        fmeta[key].append((paramId,parameterName,gtype,fdatetime,gtime,step,level))
-                        fdict[key].append(flipud(reshape(grib_get_values(gid),[gdict['Nj'],gdict['Ni']])))
-
-
-            grib_release(gid)
-            gid = grib_new_from_index(iid)
-
-    for k in fdict.keys():
-        fml=fmeta[k]
-        fdl=fdict[k]
-
-        for fd,fm in zip(fdl,fml):
-            ftitle=fm[1]+' {} '.format(fm[-1])+datetime.datetime.strftime(fm[3],'%Y%m%d%H')+' '+stats(fd)
-            pname='_'.join(fm[1].split())+'_{}_'.format(fm[-1])+datetime.datetime.strftime(fm[3],'%Y%m%d%H')+'.{:0>3}'.format(fm[5])
-            plotmap(fd, fm,gdict,ftitle,pname+'.eps')
-
-    for k in fdict.keys():
-        fml=fmeta[k]
-        fdl=fdict[k]
-        fsl=fstamp[k]
-        if fdl:
-            fm=fml[0]
-            fd=fdl[0]
-            ftitle=fm[1]+' {} '.format(fm[-1])+datetime.datetime.strftime(fm[3],'%Y%m%d%H')+' '+stats(fd)
-            pname='_'.join(fm[1].split())+'_{}_'.format(fm[-1])+datetime.datetime.strftime(fm[3],'%Y%m%d%H')+'.{:0>3}'.format(fm[5])
-            lat=-20
-            lon=20
-            plottimeseries(fdl,fml,fsl,lat,lon, gdict, ftitle, pname+'.eps')
-
-def plottimeseries(flist,fmetalist,ftimestamps,lat,lon,gdict,ftitle,filename):
-    t1=time.time()
-    latindex=(lat+90)*180/(gdict['Nj']-1)
-    lonindex=(lon+179)*360/gdict['Ni']
-    farr=asarray(flist)
-    ts=farr[:,latindex,lonindex]
-    f=plt.figure(figsize=(12,6.7))
-    plt.plot(ftimestamps,ts)
-    plt.title(ftitle)
-    savefig(c.outputdir+'/'+filename)
-    print 'created ',c.outputdir+'/'+filename
-    plt.close(f)
-    print time.time()-t1,'s'
-
-def plotmap(flist,fmetalist,gdict,ftitle,filename):
-    t1=time.time()
-    f=plt.figure(figsize=(12,6.7))
-    mbaxes = f.add_axes([0.05, 0.15, 0.8, 0.7])
-    m =Basemap(llcrnrlon=-180.,llcrnrlat=-90.,urcrnrlon=180,urcrnrlat=90.)
-    #if bw==0 :
-        #fill_color=rgb(0.6,0.8,1)
-    #else:
-        #fill_color=rgb(0.85,0.85,0.85)
-
-    lw=0.3
-    m.drawmapboundary()
-    parallels = arange(-90.,91,90.)
-    # labels = [left,right,top,bottom]
-    m.drawparallels(parallels,labels=[True,True,True,True],linewidth=lw)
-    meridians = arange(-180.,181.,60.)
-    m.drawmeridians(meridians,labels=[True,True,True,True],linewidth=lw)
-    m.drawcoastlines(linewidth=lw)
-    xleft=gdict['longitudeOfFirstGridPointInDegrees']
-    if xleft>180.0:
-        xleft-=360.
-    x=linspace(xleft,gdict['longitudeOfLastGridPointInDegrees'],gdict['Ni'])
-    y=linspace(gdict['latitudeOfLastGridPointInDegrees'],gdict['latitudeOfFirstGridPointInDegrees'],gdict['Nj'])
-    xx, yy = m(*meshgrid(x,y))
-
-    s=m.contourf(xx,yy, flist)
-    title(ftitle,y=1.1)
-    cbaxes = f.add_axes([0.9, 0.2, 0.04, 0.6])
-    cb=colorbar(cax=cbaxes)
-
-    savefig(c.outputdir+'/'+filename)
-    print 'created ',c.outputdir+'/'+filename
-    plt.close(f)
-    print time.time()-t1,'s'
-
-
-def interpret_plotargs(*args,**kwargs):
-
-    parser = ArgumentParser(description='Retrieve FLEXPART input from ECMWF MARS archive',
-                            formatter_class=ArgumentDefaultsHelpFormatter)
-
-# the most important arguments
-    parser.add_argument("--start_date", dest="start_date",
-                        help="start date YYYYMMDD")
-    parser.add_argument( "--end_date", dest="end_date",
-                         help="end_date YYYYMMDD")
-
-    parser.add_argument("--start_step", dest="start_step",
-                        help="start step in hours")
-    parser.add_argument( "--end_step", dest="end_step",
-                         help="end_step in hours")
-
-# some arguments that override the default in the control file
-    parser.add_argument("--levelist", dest="levelist",help="Vertical levels to be retrieved, e.g. 30/to/60")
-    parser.add_argument("--area", dest="area", help="area defined as north/west/south/east")
-    parser.add_argument("--paramIds", dest="paramIds", help="parameter IDs")
-    parser.add_argument("--prefix", dest="prefix",default='EN', help="output file name prefix")
-
-# set the working directories
-    parser.add_argument("--inputdir", dest="inputdir",default=None,
-                        help="root directory for storing intermediate files")
-    parser.add_argument("--outputdir", dest="outputdir",default=None,
-                        help="root directory for storing output files")
-    parser.add_argument("--flexpart_root_scripts", dest="flexpart_root_scripts",
-                        help="FLEXPART root directory (to find grib2flexpart and COMMAND file)\n\
-                              Normally flex_extract resides in the scripts directory of the FLEXPART distribution")
-
-    parser.add_argument("--controlfile", dest="controlfile",default='CONTROL.temp',
-                        help="file with control parameters")
-    args = parser.parse_args()
-
-    try:
-        c=Control(args.controlfile)
-    except IOError:
-        try:
-            c=Control(localpythonpath+args.controlfile)
-
-        except:
-            print 'Could not read control file "'+args.controlfile+'"'
-            print 'Either it does not exist or its syntax is wrong.'
-            print 'Try "'+sys.argv[0].split('/')[-1]+' -h" to print usage information'
-            exit(1)
-
-    if args.levelist:
-        c.levels=args.levelist.split('/')
-    else:
-        c.levels=[0]
-    if args.area:
-        c.area=args.area.split('/')
-    else:
-        c.area='[0,0]'
-
-    c.paramIds=args.paramIds.split('/')
-    if args.start_step:
-        c.start_step=int(args.start_step)
-    else:
-        c.start_step=0
-    if args.end_step:
-        c.end_step=int(args.end_step)
-    else:
-        c.end_step=0
-
-    c.start_date=args.start_date
-    c.end_date=args.end_date
-    c.prefix=args.prefix
-    c.inputdir=args.inputdir
-    if args.outputdir:
-        c.outputdir=args.outputdir
-    else:
-        c.outputdir=c.inputdir
-
-        return args,c
-
-if __name__ == "__main__":
-
-    args,c=interpret_plotargs()
-    plot_retrieved(args,c)
-- 
GitLab