Changeset 6f951ca in flex_extract.git for source/python/mods


Ignore:
Timestamp:
Jan 15, 2019, 1:05:10 AM (5 years ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
master, ctbto, dev
Children:
d4696e0
Parents:
2625ca8
Message:

new style of docstring params and updates in docstrings

Location:
source/python/mods
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • source/python/mods/checks.py

    rf2616a3 r6f951ca  
    11#!/usr/bin/env python
    22# -*- coding: utf-8 -*-
    3 ##*******************************************************************************
     3#*******************************************************************************
    44# @Author: Anne Philipp (University of Vienna)
    55#
     
    99#
    1010# @License:
    11 #    (C) Copyright 2014-2018.
     11#    (C) Copyright 2014-2019.
     12#    Anne Philipp, Leopold Haimberger
    1213#
    13 #    This software is licensed under the terms of the Apache Licence Version 2.0
    14 #    which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
    15 #
    16 # @Modul Description:
    17 #
    18 #
    19 # @Module Content:
    20 
    21 #
     14#    This work is licensed under the Creative Commons Attribution 4.0
     15#    International License. To view a copy of this license, visit
     16#    http://creativecommons.org/licenses/by/4.0/ or send a letter to
     17#    Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
    2218#*******************************************************************************
     19'''This module contains check methods for the CONTROL paramaters.
     20'''
    2321
    2422# ------------------------------------------------------------------------------
     
    2725
    2826import os
     27import sys
    2928import _config
    3029import exceptions
     
    4039    Parameters
    4140    ----------
    42     c : :obj:`ControlFile`
     41    c : ControlFile
    4342        Contains all the parameters of CONTROL file and
    4443        command line.
    4544
    46     logicals : :obj:`list` of (:obj:`string` or :obj:`integer`)
     45    logicals : list of (str or int)
    4746        Names of the switches that are used to control the flow of the
    4847        program.
     
    6766    Parameters
    6867    ----------
    69     grid : :obj:`string`
     68    grid : str
    7069        Contains grid information
    7170
    7271    Return
    7372    ------
    74     grid : :obj:``string`
     73    grid : str
    7574        Contains grid in format Lat/lon. E.g. 0.1/0.1
    7675    '''
     
    108107    Parameters
    109108    ----------
    110     grid : :obj:`string`
     109    grid : str
    111110        Contains grid information.
    112111
    113     area : :obj:`string`
     112    area : str
    114113        Contains area informtion.
    115114
    116     upper : :obj:`string`
     115    upper : str
    117116        The northern most latitude.
    118117
    119     lower : :obj:`string`
     118    lower : str
    120119        The souther most latitude.
    121120
    122     left : :obj:`string`
     121    left : str
    123122        The western most longitude.
    124123
    125     right : :obj:`string`
     124    right : str
    126125        The eastern most longiude.
    127126
    128127    Return
    129128    ------
    130     grid : :obj:``string`
     129    grid : str
    131130        Contains grid in format Lat/lon. E.g. 0.1/0.1
    132131    '''
     
    173172    Parameters
    174173    ----------
    175     levelist : :obj:`string`
     174    levelist : str
    176175        Specifies the level list.
    177176        Examples: model level: 1/to/137, pressure levels: 500/to/1000
    178177
    179     level : :obj:`string`
     178    level : str
    180179        Specifies the maximum level.
    181180
    182181    Return
    183182    ------
    184     levelist : :obj:`string`
     183    levelist : str
    185184        Specifies the required levels. It has to have a valid
    186185        correspondence to the selected levtype.
    187186        Examples: model level: 1/to/137, pressure levels: 500/to/1000
    188187
    189     level : :obj:`string`
     188    level : str
    190189        Specifies the maximum level. It has to be one of the
    191190        available maximum level number as contained in the variable
     
    221220    Parameters
    222221    ----------
    223     c : :obj:`ControlFile`
     222    c : ControlFile
    224223            Contains all the parameters of CONTROL file and
    225224            command line.
    226225
    227     ppid : :obj:`int` or :obj:`None`
     226    ppid : int or None
    228227        Contains the ppid number provided by the command line parameter
    229228        of is None otherwise.
     
    247246    Parameters
    248247    ----------
    249     ftype : :obj:`list` of :obj:`string`
     248    ftype : list of str
    250249        List of field types.
    251250
     
    273272    Parameters
    274273    ----------
    275     step : :obj:`list` of :obj:`string` or :obj:`string`
     274    step : list of str or str
    276275        Specifies the forecast time step from forecast base time.
    277276        Valid values are hours (HH) from forecast base time.
    278277
    279     mailfail : :obj:`list` of :obj:``string`
     278    mailfail : list of str
    280279        Contains all email addresses which should be notified.
    281280        It might also contain just the ecmwf user name which will trigger
     
    284283    Return
    285284    ------
    286     step : :obj:`list` of :obj:`string`
     285    step : list of str
    287286        List of forecast steps in format e.g. [001, 002, ...]
    288287    '''
     
    313312    Parameters
    314313    ----------
    315     ftype : :obj:`list` of :obj:`string` or :obj:`string`
     314    ftype : list of str or str
    316315        List of field types.
    317316
    318     steps : :obj:`string`
     317    steps : str
    319318        Specifies the forecast time step from forecast base time.
    320319        Valid values are hours (HH) from forecast base time.
     
    322321    Return
    323322    ------
    324     ftype : :obj:`list` of :obj:`string`
     323    ftype : list of str
    325324        List of field types.
    326325    '''
     
    340339    Parameters
    341340    ----------
    342     ftime : :obj:`list` of :obj:`string` or :obj:`string`
     341    ftime : list of str or str
    343342        The time in hours of the field.
    344343
    345344    Return
    346345    ------
    347     ftime : :obj:`list` of :obj:`string`
     346    ftime : list of str
    348347        The time in hours of the field.
    349348    '''
     
    358357    Parameters
    359358    ----------
    360     ftype : :obj:`list` of :obj:`string`
     359    ftype : list of str
    361360        List of field types.
    362361
    363     ftime : :obj:`list` of :obj:`string` or :obj:`string`
     362    ftime : list of str or str
    364363        The time in hours of the field.
    365364
    366     steps : :obj:`string`
     365    steps : str
    367366        Specifies the forecast time step from forecast base time.
    368367        Valid values are hours (HH) from forecast base time.
    369368
    370     maxstep : :obj:`integer`
     369    maxstep : int
    371370        The maximum forecast time step in hours from the forecast base time.
    372371        This is the maximum step for non flux (accumulated) forecast data.
    373372
    374     purefc : :obj:`integer`
     373    purefc : int
    375374        Switch for definition of pure forecast mode or not.
    376375
    377376    Return
    378377    ------
    379     ftype : :obj:`list` of :obj:`string`
     378    ftype : list of str
    380379        List of field types.
    381380
    382     ftime : :obj:`list` of :obj:`string`
     381    ftime : list of str
    383382        The time in hours of the field.
    384383
    385     steps : :obj:`string`
     384    steps : str
    386385        Specifies the forecast time step from forecast base time.
    387386        Valid values are hours (HH) from forecast base time.
     
    410409    Parameters
    411410    ----------
    412     mail : :obj:`list` of :obj:`string` or :obj:`string`
     411    mail : list of str or str
    413412        Contains email addresses for notifications.
    414413        It might also contain just the ecmwf user name which will trigger
     
    417416    Return
    418417    ------
    419     mail : :obj:`list` of :obj:``string`
     418    mail : list of str
    420419        Contains email addresses for notifications.
    421420        It might also contain just the ecmwf user name which will trigger
     
    439438    Parameters
    440439    ----------
    441     queue : :obj:`string`
     440    queue : str
    442441        Name of the queue if submitted to the ECMWF servers.
    443442        Used to check if ecuid, ecgid, gateway and destination
    444443        are set correctly and are not empty.
    445444
    446     gateway : :obj:`string`
     445    gateway : str
    447446        The address of the gateway server.
    448447
    449     destination : :obj:`string`
     448    destination : str
    450449        The name of the destination of the gateway server for data
    451450        transfer through ectrans. E.g. name@genericSftp
    452451
    453     ecuid : :obj:`string`
     452    ecuid : str
    454453        ECMWF user id.
    455454
    456     ecgid : :obj:`string`
     455    ecgid : str
    457456        ECMWF group id.
    458457
     
    475474    Parameters
    476475    ----------
    477     idir : :obj:`string`
     476    idir : str
    478477        Path to the temporary directory for MARS retrieval data.
    479478
    480     odir : :obj:`string`
     479    odir : str
    481480        Path to the final output directory where the FLEXPART input files
    482481        will be stored.
    483482
    484     fpdir : :obj:`string`
     483    fpdir : str
    485484        Path to FLEXPART root directory.
    486485
    487     fedir : :obj:`string`
     486    fedir : str
    488487        Path to flex_extract root directory.
    489488
    490489    Return
    491490    ------
    492     odir : :obj:`string`
     491    odir : str
    493492        Path to the final output directory where the FLEXPART input files
    494493        will be stored.
    495494
    496     fpdir : :obj:`string`
     495    fpdir : str
    497496        Path to FLEXPART root directory.
    498497
     
    513512    Parameters
    514513    ----------
    515     start : :obj:`string`
     514    start : str
    516515        The start date of the retrieval job.
    517516
    518     end : :obj:`string`
     517    end : str
    519518        The end date of the retrieval job.
    520519
    521520    Return
    522521    ------
    523     start : :obj:`string`
     522    start : str
    524523        The start date of the retrieval job.
    525524
    526     end : :obj:`string`
     525    end : str
    527526        The end date of the retrieval job.
    528527
     
    555554    Parameters
    556555    ----------
    557     maxstep : :obj:`string`
     556    maxstep : str
    558557        The maximum forecast time step in hours from the forecast base time.
    559558        This is the maximum step for non flux (accumulated) forecast data.
    560559
    561     steps : :obj:`string`
     560    steps : str
    562561        Specifies the forecast time step from forecast base time.
    563562        Valid values are hours (HH) from forecast base time.
     
    565564    Return
    566565    ------
    567     maxstep : :obj:`integer`
     566    maxstep : int
    568567        The maximum forecast time step in hours from the forecast base time.
    569568        This is the maximum step for non flux (accumulated) forecast data.
     
    588587    Parameters
    589588    ----------
    590     basetime : :obj:``
     589    basetime : str
    591590        The time for a half day retrieval. The 12 hours upfront are to be
    592591        retrieved.
     
    607606    Parameters
    608607    ----------
    609     request : :obj:`integer`
     608    request : int
    610609        Selects the mode of retrieval.
    611610        0: Retrieves the data from ECMWF.
     
    613612        2: Retrieves the data and prints the mars request.
    614613
    615     marsfile : :obj:`string`
     614    marsfile : str
    616615        Path to the mars request file.
    617616
     
    631630    Parameters
    632631    ----------
    633     public : :obj:`ìnteger`
     632    public : int
    634633        Specifies if public data are to be retrieved or not.
    635634
    636     dataset : :obj:`string`
     635    dataset : str
    637636        Specific name which identifies the public dataset.
    638637
     
    653652    Parameters
    654653    ----------
    655     acctype : :obj:`string`
     654    acctype : str
    656655        The field type for the accumulated forecast fields.
    657656
    658     ftype : :obj:`list` of :obj:`string`
     657    ftype : list of str
    659658        List of field types.
    660659
    661660    Return
    662661    ------
    663     acctype : :obj:`string`
     662    acctype : str
    664663        The field type for the accumulated forecast fields.
    665664    '''
     
    690689    Parameters
    691690    ----------
    692     acctime : :obj:`string`
     691    acctime : str
    693692        The starting time from the accumulated forecasts.
    694693
    695     acctype : :obj:`string`
     694    acctype : str
    696695        The field type for the accumulated forecast fields.
    697696
    698     purefc : :obj:`integer`
     697    purefc : int
    699698        Switch for definition of pure forecast mode or not.
    700699
    701700    Return
    702701    ------
    703     acctime : :obj:`string`
     702    acctime : str
    704703        The starting time from the accumulated forecasts.
    705704    '''
    706705    if not acctime:
    707706        print('... Control parameter ACCTIME was not defined.')
    708         print('... Value will be set depending on field type: '
     707        print('... Value will be set depending on field type:\n '
    709708              '\t\t EA=06/18\n\t\t EI/OD=00/12\n\t\t  EP=18')
    710709        if acctype.upper() == 'EA': # Era 5
     
    726725    Parameters
    727726    ----------
    728     accmaxstep : :obj:`string`
     727    accmaxstep : str
    729728        The maximum forecast step for the accumulated forecast fields.
    730729
    731     acctype : :obj:`string`
     730    acctype : str
    732731        The field type for the accumulated forecast fields.
    733732
    734     purefc : :obj:`integer`
     733    purefc : int
    735734        Switch for definition of pure forecast mode or not.
    736735
    737     maxstep : :obj:`string`
     736    maxstep : str
    738737        The maximum forecast time step in hours from the forecast base time.
    739738        This is the maximum step for non flux (accumulated) forecast data.
     
    741740    Return
    742741    ------
    743     accmaxstep : :obj:`string`
     742    accmaxstep : str
    744743        The maximum forecast step for the accumulated forecast fields.
    745744    '''
     
    776775    Parameters
    777776    ----------
    778     addpar : :obj:`string` or :obj:'list' of :obj:'string'
     777    addpar : str or list of str
    779778        List of additional parameters to be retrieved.
    780779
    781780    Return
    782781    ------
    783     addpar : :obj:'string'
     782    addpar : str
    784783        List of additional parameters to be retrieved.
    785784    '''
     
    798797
    799798def check_job_chunk(job_chunk):
    800     '''Checks that the job chunk number is positive and non zero.
    801 
    802     Parameters
    803     ----------
    804     job_chunk : :obj:`integer`
     799    '''Checks that if job chunk is set, the number is positive and non zero.
     800
     801    Parameters
     802    ----------
     803    job_chunk : int
    805804        The number of days for a single job script.
    806805
    807806    Return
    808807    ------
    809     job_chunk : :obj:`integer`
     808    job_chunk : int
    810809        The number of days for a single job script.
    811810    '''
     811    if not job_chunk:
     812        return job_chunk
     813
    812814    if job_chunk < 0:
    813815        raise ValueError('ERROR: The number of job chunk is negative!\n'
  • source/python/mods/disaggregation.py

    r0e2f93e r6f951ca  
    1717#        - outsourced the disaggregation functions dapoly and darain
    1818#          to a new module named disaggregation
     19#        - added the new disaggregation method for precipitation
    1920#
    2021# @License:
    21 #    (C) Copyright 2015-2018.
    22 #
    23 #    This software is licensed under the terms of the Apache Licence Version 2.0
    24 #    which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
    25 #
    26 # @Module Description:
    27 #    disaggregation of deaccumulated flux data from an ECMWF model FG field.
    28 #    Initially the flux data to be concerned are:
    29 #    - large-scale precipitation
    30 #    - convective precipitation
    31 #    - surface sensible heat flux
    32 #    - surface solar radiation
    33 #    - u stress
    34 #    - v stress
    35 #    Different versions of disaggregation is provided for rainfall
    36 #    data (darain, modified linear) and the surface fluxes and
    37 #    stress data (dapoly, cubic polynomial).
    38 #
    39 # @Module Content:
     22#    (C) Copyright 2014-2019.
     23#    Anne Philipp, Leopold Haimberger
     24#
     25#    This work is licensed under the Creative Commons Attribution 4.0
     26#    International License. To view a copy of this license, visit
     27#    http://creativecommons.org/licenses/by/4.0/ or send a letter to
     28#    Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
     29#
     30# @Methods:
    4031#    - dapoly
    4132#    - darain
    4233#    - IA3
    43 #
    4434#*******************************************************************************
     35'''Disaggregation of deaccumulated flux data from an ECMWF model FG field.
     36
     37Initially the flux data to be concerned are:
     38    - large-scale precipitation
     39    - convective precipitation
     40    - surface sensible heat flux
     41    - surface solar radiation
     42    - u stress
     43    - v stress
     44
     45Different versions of disaggregation is provided for rainfall
     46data (darain, modified linear) and the surface fluxes and
     47stress data (dapoly, cubic polynomial).
     48'''
    4549
    4650# ------------------------------------------------------------------------------
     
    6569    Parameters
    6670    ----------
    67     alist : :obj:`list` of :obj:`array` of :obj:`float`
     71    alist : list of array of float
    6872        List of 4 timespans as 2-dimensional, horizontal fields.
    6973        E.g. [[array_t1], [array_t2], [array_t3], [array_t4]]
     
    7175    Return
    7276    ------
    73     nfield : :obj:`array` of :obj:`float`
     77    nfield : array of float
    7478        Interpolated flux at central point of accumulation timespan.
    7579
     
    109113    Parameters
    110114    ----------
    111     alist : :obj:`list` of :obj:`array` of :obj:`float`
     115    alist : list of array of float
    112116        List of 4 timespans as 2-dimensional, horizontal fields.
    113117        E.g. [[array_t1], [array_t2], [array_t3], [array_t4]]
     
    115119    Return
    116120    ------
    117     nfield : :obj:`array` of :obj:`float`
     121    nfield : array of float
    118122        Interpolated flux at central point of accumulation timespan.
    119123
     
    160164    Note
    161165    ----
    162     Copyright 2017
     166    (C) Copyright 2017-2019
    163167    Sabine Hittmeir, Anne Philipp, Petra Seibert
    164168
     
    170174    Parameters
    171175    ----------
    172     g : :obj:`list` of :obj:`float`
     176    g : list of float
    173177        Complete data series that will be interpolated having
    174178        the dimension of the original raw series.
     
    176180    Return
    177181    ------
    178     f : :obj:`list` of :obj:`float`
     182    f : list of float
    179183        The interpolated data series with additional subgrid points.
    180184        Its dimension is equal to the length of the input data series
  • source/python/mods/get_mars_data.py

    r9aefaad r6f951ca  
    2222#          online documentation)
    2323#        - use of UIFiles class for file selection and deletion
    24 #
     24#        - seperated get_mars_data function into several smaller pieces:
     25#          write_reqheader, mk_server, mk_dates, remove_old, do_retrievment
    2526#
    2627# @License:
    27 #    (C) Copyright 2014-2018.
    28 #
    29 #    This software is licensed under the terms of the Apache Licence Version 2.0
    30 #    which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
    31 #
    32 # @Program Functionality:
    33 #    This program can be used as a module in the whole flex_extract process
    34 #    or can be run by itself to just extract MARS data from ECMWF. To do so,
    35 #    a couple of necessary parameters has to be passed with the program call.
    36 #    See documentation for more details.
    37 #
    38 # @Program Content:
    39 #    - main
    40 #    - get_mars_data
    41 #    - do_retrievement
    42 #
     28#    (C) Copyright 2014-2019.
     29#    Anne Philipp, Leopold Haimberger
     30#
     31#    This work is licensed under the Creative Commons Attribution 4.0
     32#    International License. To view a copy of this license, visit
     33#    http://creativecommons.org/licenses/by/4.0/ or send a letter to
     34#    Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
    4335#*******************************************************************************
    44 """ToDo: Name of litte program
    45 
    46 ToDo: Add desccription
    47 
    48 ToDo: Add Conditions
    49 
    50 This script requires that `...` be installed within the Python
    51 environment you are running this script in.
     36'''This script extracts MARS data from ECMWF servers.
     37
     38At first, the necessary parameters from command line and CONTROL files are
     39extracted. They define the data set to be extracted from MARS.
    5240
    5341This file can also be imported as a module and contains the following
    5442functions:
    5543
    56     * get_mars_data -
    57     * do_retrievement -
    5844    * main - the main function of the script
    59 """
     45    * get_mars_data - overall control of ECMWF data retrievment
     46    * write_reqheader - writes the header into the mars_request file
     47    * mk_server - creates the server connection to ECMWF servers
     48    * mk_dates - defines the start and end date
     49    * remove_old - deletes old retrieved grib files
     50    * do_retrievement - creates individual retrievals
     51
     52Type: get_mars_data.py --help
     53to get information about command line parameters.
     54Read the documentation for usage instructions.
     55'''
    6056# ------------------------------------------------------------------------------
    6157# MODULES
     
    6763
    6864# software specific classes and modules from flex_extract
     65# add path to local main python path for flex_extract to get full access
    6966sys.path.append(os.path.dirname(os.path.abspath(
    7067    inspect.getfile(inspect.currentframe()))) + '/../')
     
    120117    Parameters
    121118    ----------
    122     c : :obj:`ControlFile`
     119    c : ControlFile
    123120        Contains all the parameters of CONTROL file and
    124121        command line.
     
    166163    Parameters
    167164    ----------
    168     marsfile : :obj:`string`
     165    marsfile : str
    169166        Path to the mars request file.
    170167
     
    189186    Parameters
    190187    ----------
    191     c : :obj:`ControlFile`
     188    c : ControlFile
    192189        Contains all the parameters of CONTROL file and
    193190        command line.
     
    195192    Return
    196193    ------
    197     server : :obj:`ECMWFDataServer` or :obj:`ECMWFService`
     194    server : ECMWFDataServer or ECMWFService
    198195        Connection to ECMWF server via python interface ECMWF WebAPI.
    199196
     
    230227    Parameters
    231228    ----------
    232     c : :obj:`ControlFile`
     229    c : ControlFile
    233230        Contains all the parameters of CONTROL file and
    234231        command line.
    235232
    236     fluxes : :obj:`boolean`, optional
     233    fluxes : boolean, optional
    237234        Decides if the flux parameter settings are stored or
    238235        the rest of the parameter list.
     
    241238    Return
    242239    ------
    243     start : :obj:`datetime`
     240    start : datetime
    244241        The start date of the retrieving data set.
    245242
    246     end : :obj:`datetime`
     243    end : datetime
    247244        The end date of the retrieving data set.
    248245
    249     chunk : :obj:`datetime`
     246    chunk : datetime
    250247        Time period in days for one single mars retrieval.
    251248
     
    271268    Parameters
    272269    ----------
    273     pattern : :obj:`string`
     270    pattern : str
    274271        The sub string pattern which identifies the files to be deleted.
    275272
    276     inputdir : :obj:`string`, optional
     273    inputdir : str, optional
    277274        Path to the directory where the retrieved data is stored.
    278275
     
    295292    Parameters
    296293    ----------
    297     c : :obj:`ControlFile`
     294    c : ControlFile
    298295        Contains all the parameters of CONTROL file and
    299296        command line.
    300297
    301     server : :obj:`ECMWFService`
     298    server : ECMWFService or ECMWFDataServer
    302299            The server connection to ECMWF.
    303300
    304     start : :obj:`datetime`
     301    start : datetime
    305302        The start date of the retrieval.
    306303
    307     end : :obj:`datetime`
     304    end : datetime
    308305        The end date of the retrieval.
    309306
    310     delta_t : :obj:`datetime`
     307    delta_t : datetime
    311308        Delta_t + 1 is the maximal time period of a single
    312309        retrieval.
    313310
    314     fluxes : :obj:`boolean`, optional
     311    fluxes : boolean, optional
    315312        Decides if the flux parameters are to be retrieved or
    316313        the rest of the parameter list.
  • source/python/mods/prepare_flexpart.py

    r9aefaad r6f951ca  
    2222#        - added documentation
    2323#        - minor changes in programming style for consistence
    24 #        - BUG: removed call of clean_up-Function after call of
     24#        - BUGFIX: removed call of clean_up-Function after call of
    2525#               prepareFlexpart in main since it is already called in
    2626#               prepareFlexpart at the end!
     
    2929#
    3030# @License:
    31 #    (C) Copyright 2014-2018.
     31#    (C) Copyright 2014-2019.
     32#    Anne Philipp, Leopold Haimberger
    3233#
    33 #    This software is licensed under the terms of the Apache Licence Version 2.0
    34 #    which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
    35 #
    36 # @Program Functionality:
    37 #    This program prepares the final version of the grib files which are
    38 #    then used by FLEXPART. It converts the bunch of grib files extracted
    39 #    via get_mars_data by doing for example the necessary conversion to get
    40 #    consistent grids or the disaggregation of flux data. Finally, the
    41 #    program combines the data fields in files per available hour with the
    42 #    naming convention xxYYMMDDHH, where xx should be 2 arbitrary letters
    43 #    (mostly xx is chosen to be "EN").
    44 #
    45 # @Program Content:
    46 #    - main
    47 #    - prepare_flexpart
    48 #
     34#    This work is licensed under the Creative Commons Attribution 4.0
     35#    International License. To view a copy of this license, visit
     36#    http://creativecommons.org/licenses/by/4.0/ or send a letter to
     37#    Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
    4938#*******************************************************************************
     39'''This script prepares the final version of the grib files which are
     40then used by FLEXPART.
     41
     42It converts the bunch of grib files extracted via get_mars_data before,
     43by doing the necessary conversion to get consistent grids or the
     44disaggregation of flux data. Finally, the data fields are combined
     45in files per available hour with the naming convention xxYYMMDDHH,
     46where xx should be 2 arbitrary letters (mostly xx is chosen to be "EN").
     47
     48This file can also be imported as a module which then contains the following
     49functions:
     50
     51    * main
     52    * prepare_flexpart
     53
     54Type: prepare_flexpart.py --help
     55to get information about command line parameters.
     56Read the documentation for usage instructions.
     57'''
    5058
    5159# ------------------------------------------------------------------------------
     
    5967
    6068# software specific classes and modules from flex_extract
    61 
     69# add path to local main python path for flex_extract to get full access
    6270sys.path.append(os.path.dirname(os.path.abspath(
    6371    inspect.getfile(inspect.currentframe()))) + '/../')
     
    115123    Parameters
    116124    ----------
    117     ppid : :obj:`int`
     125    ppid : int
    118126        Contains the ppid number of the current ECMWF job. It will be None if
    119127        the method was called within this module.
    120128
    121     c : :obj:`ControlFile`
     129    c : ControlFile
    122130        Contains all the parameters of CONTROL file and
    123131        command line.
  • source/python/mods/tools.py

    rf2616a3 r6f951ca  
    1414#          my_error, normal_exit, init128, to_param_id
    1515#
    16 #    April 2018 - Anne Philipp (University of Vienna):
     16#    April - December 2018 - Anne Philipp (University of Vienna):
    1717#        - applied PEP8 style guide
    1818#        - added documentation
    19 #        - moved all functions from file Flexparttools to this file tools
    20 #        - added function get_list_as_string
     19#        - moved all non class methods from former file Flexparttools in here
    2120#        - seperated args and control interpretation
     21#        - added functions get_list_as_string, read_ecenv, send_mail, make_dir,
     22#          put_file_to_ecserver, submit_job_to_ecserver, get_informations,
     23#          get_dimensions, execute_subprocess, none_or_int, none_or_str
    2224#
    2325# @License:
    24 #    (C) Copyright 2014-2018.
     26#    (C) Copyright 2014-2019.
     27#    Anne Philipp, Leopold Haimberger
    2528#
    26 #    This software is licensed under the terms of the Apache Licence Version 2.0
    27 #    which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
     29#    This work is licensed under the Creative Commons Attribution 4.0
     30#    International License. To view a copy of this license, visit
     31#    http://creativecommons.org/licenses/by/4.0/ or send a letter to
     32#    Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
    2833#
    29 # @Modul Description:
    30 #    This module contains a couple of helpful functions which are
    31 #    used in different places in flex_extract.
    32 #
    33 # @Module Content:
    34 #    - get_cmdline_args
    35 #    - clean_up
    36 #    - my_error
    37 #    - normal_exit
    38 #    - product
    39 #    - silent_remove
    40 #    - init128
    41 #    - to_param_id
    42 #    - get_list_as_string
    43 #    - make_dir
    44 #
     34# @Methods:
     35#    none_or_str
     36#    none_or_int
     37#    get_cmdline_args
     38#    read_ecenv
     39#    clean_up
     40#    my_error
     41#    send_mail
     42#    normal_exit
     43#    product
     44#    silent_remove
     45#    init128
     46#    to_param_id
     47#    get_list_as_string
     48#    make_dir
     49#    put_file_to_ecserver
     50#    submit_job_to_ecserver
     51#    get_informations
     52#    get_dimensions
     53#    execute_subprocess
    4554#*******************************************************************************
     55'''This module contains a collection of diverse tasks within flex_extract.
     56'''
    4657
    4758# ------------------------------------------------------------------------------
     
    5970
    6071# ------------------------------------------------------------------------------
    61 # FUNCTIONS
     72# METHODS
    6273# ------------------------------------------------------------------------------
    6374
     
    6879    Parameters
    6980    ----------
    70     value : :obj:`string`
     81    value : str
    7182        String to be checked for the "None" word.
    7283
     
    8798    Parameters
    8899    ----------
    89     value : :obj:`string`
     100    value : str
    90101        String to be checked for the "None" word.
    91102
     
    110121    Return
    111122    ------
    112     args : :obj:`Namespace`
     123    args : Namespace
    113124        Contains the commandline arguments from script/program call.
    114125    '''
     
    201212    Parameters
    202213    ----------
    203     filepath : :obj:`string`
     214    filepath : str
    204215        Path to file where the ECMWF environment parameters are stored.
    205216
    206217    Return
    207218    ------
    208     envs : :obj:`dictionary`
     219    envs : dict
    209220        Contains the environment parameter ecuid, ecgid, gateway
    210221        and destination for ECMWF server environments.
     
    233244    Parameters
    234245    ----------
    235     c : :obj:`ControlFile`
     246    c : ControlFile
    236247        Contains all the parameters of CONTROL file and
    237248        command line.
     
    265276    Parameters
    266277    ----------
    267     user : :obj:`list` of :obj:`string`
     278    user : list of str
    268279        Contains all email addresses which should be notified.
    269280        It might also contain just the ecmwf user name which wil trigger
    270281        mailing to the associated email address for this user.
    271282
    272     message : :obj:`string`, optional
     283    message : str, optional
    273284        Error message. Default value is "ERROR".
    274285
     
    295306    Parameters
    296307    ----------
    297     users : :obj:`list` of :obj:`string`
     308    users : list of str
    298309        Contains all email addresses which should be notified.
    299310        It might also contain just the ecmwf user name which wil trigger
    300311        mailing to the associated email address for this user.
    301312
    302     success_mode : :obj:``string`
     313    success_mode : str
    303314        States the exit mode of the program to put into
    304315        the mail subject line.
    305316
    306     message : :obj:`string`, optional
     317    message : str, optional
    307318        Message for exiting program. Default value is "Done!".
    308319
     
    341352    Parameters
    342353    ----------
    343     message : :obj:`string`, optional
     354    message : str, optional
    344355        Message for exiting program. Default value is "Done!".
    345356
     
    374385    Parameters
    375386    ----------
    376     \*args : :obj:`list` or :obj:`string`
     387    \*args : list or str
    377388        Positional arguments (arbitrary number).
    378389
    379     \*\*kwds : :obj:`dictionary`
     390    \*\*kwds : dict
    380391        Contains all the keyword arguments from \*args.
    381392
     
    405416    Parameters
    406417    ----------
    407     filename : :obj:`string`
     418    filename : str
    408419        The name of the file to be removed without notification.
    409420
     
    429440    Parameters
    430441    ----------
    431     filepath : :obj:`string`
     442    filepath : str
    432443        Path to file of ECMWF grib table number 128.
    433444
    434445    Return
    435446    ------
    436     table128 : :obj:`dictionary`
     447    table128 : dict
    437448        Contains the ECMWF grib table 128 information.
    438449        The key is the parameter number and the value is the
     
    462473    Parameters
    463474    ----------
    464     pars : :obj:`string`
     475    pars : str
    465476        Addpar argument from CONTROL file in the format of
    466477        parameter names instead of ids. The parameter short
     
    468479        one single string.
    469480
    470     table : :obj:`dictionary`
     481    table : dict
    471482        Contains the ECMWF grib table 128 information.
    472483        The key is the parameter number and the value is the
     
    475486    Return
    476487    ------
    477     ipar : :obj:`list` of :obj:`integer`
     488    ipar : list of int
    478489        List of addpar parameters from CONTROL file transformed to
    479490        parameter ids in the format of integer.
     
    501512    Parameters
    502513    ----------
    503     list_obj : :obj:`list`
     514    list_obj : list of *
    504515        A list with arbitrary content.
    505516
    506     concatenate_sign : :obj:`string`, optional
     517    concatenate_sign : str, optional
    507518        A string which is used to concatenate the single
    508519        list elements. Default value is ", ".
     
    510521    Return
    511522    ------
    512     str_of_list : :obj:`string`
     523    str_of_list : str
    513524        The content of the list as a single string.
    514525    '''
     
    528539    Parameters
    529540    ----------
    530     directory : :obj:`string`
     541    directory : str
    531542        The path to directory which should be created.
    532543
     
    557568    Parameters
    558569    ----------
    559     ecd : :obj:`string`
     570    ecd : str
    560571        The path were the file is stored.
    561572
    562     filename : :obj:`string`
     573    filename : str
    563574        The name of the file to send to the ECMWF server.
    564575
    565     target : :obj:`string`
     576    target : str
    566577        The target queue where the file should be sent to.
    567578
    568     ecuid : :obj:`string`
     579    ecuid : str
    569580        The user id on ECMWF server.
    570581
    571     ecgid : :obj:`string`
     582    ecgid : str
    572583        The group id on ECMWF server.
    573584
     
    610621    Parameters
    611622    ----------
    612     target : :obj:`string`
     623    target : str
    613624        The target where the file should be sent to, e.g. the queue.
    614625
    615     jobname : :obj:`string`
     626    jobname : str
    616627        The name of the jobfile to be submitted to the ECMWF server.
    617628
    618629    Return
    619630    ------
    620     job_id : :obj:`int`
     631    job_id : int
    621632        The id number of the job as a reference at the ecmwf server.
    622633    '''
     
    650661    Parameters
    651662    ----------
    652     filename : :obj:`string`
     663    filename : str
    653664            Name of the file which will be opened to extract basic information.
    654665
    655666    Return
    656667    ------
    657     data : :obj:`dictionary`
     668    data : dict
    658669        Contains basic informations of the ECMWF grib files, e.g.
    659670        'Ni', 'Nj', 'latitudeOfFirstGridPointInDegrees',
     
    702713    Parameters
    703714    ----------
    704     info : :obj:`dictionary`
     715    info : dict
    705716        Contains basic informations of the ECMWF grib files, e.g.
    706717        'Ni', 'Nj', 'latitudeOfFirstGridPointInDegrees',
     
    709720        'iDirectionIncrementInDegrees', 'missingValue'
    710721
    711     purefc : :obj:`integer`
     722    purefc : int
    712723        Switch for definition of pure forecast mode or not.
    713724
    714     dtime : :obj:`string`
     725    dtime : str
    715726        Time step in hours.
    716727
    717     index_vals : :obj:`list`
     728    index_vals : list of list of str
    718729        Contains the values from the keys used for a distinct selection
    719730        of grib messages in processing  the grib files.
     
    723734        index_vals[2]: ('0', '12', '3', '6', '9') ; stepRange
    724735
    725     start_date : :obj:`string`
     736    start_date : str
    726737        The start date of the retrieval job.
    727738
    728     end_date : :obj:`string`
     739    end_date : str
    729740        The end date of the retrieval job.
    730741
    731742    Return
    732743    ------
    733     (ix, jy, it) : :obj:`tuple` of :obj:`integer`
     744    (ix, jy, it) : tuple of int
    734745        Dimension in x-direction, y-direction and in time.
    735746    '''
     
    755766    Parameters
    756767    ----------
    757     cmd_list : :obj:`list` of `:obj:`string`
     768    cmd_list : list of str
    758769        A list of the components for the command line execution. Each
    759770        list entry is a single part of the command which is seperated from
     
    763774    Return
    764775    ------
    765     error_msg : :obj:`string`, optional
     776    error_msg : str, optional
    766777        The possible error message if the subprocess failed.
    767778        By default it will just tell "SUBPROCESS FAILED!".
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG