Changeset ca867de in flex_extract.git for source/python/mods


Ignore:
Timestamp:
Oct 5, 2018, 3:35:18 PM (6 years ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
master, ctbto, dev
Children:
5bad6ec
Parents:
27fe969
Message:

refactored functions in EcFlexpart? and did some minor changes

Location:
source/python/mods
Files:
3 edited

Legend:

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

    r27fe969 rca867de  
    4848import os
    4949import sys
    50 import datetime
    5150import inspect
     51from datetime import datetime, timedelta
     52
     53# software specific classes and modules from flex_extract
     54sys.path.append('../')
     55import _config
     56from tools import my_error, normal_exit, get_cmdline_arguments, read_ecenv
     57from classes.EcFlexpart import EcFlexpart
     58from classes.UioFiles import UioFiles
     59
    5260try:
    5361    ecapi = True
     
    5563except ImportError:
    5664    ecapi = False
    57 
    58 # software specific classes and modules from flex_extract
    59 import _config
    60 from tools import my_error, normal_exit, get_cmdline_arguments, read_ecenv
    61 from classes.EcFlexpart import EcFlexpart
    62 from classes.UioFiles import UioFiles
    6365# ------------------------------------------------------------------------------
    6466# FUNCTION
     
    147149    # allerdings ist das relevant und ersichtlich an den NICHT FLUSS DATEN
    148150
    149 
    150     # set start date of retrieval period
    151     start = datetime.date(year=int(c.start_date[:4]),
    152                           month=int(c.start_date[4:6]),
    153                           day=int(c.start_date[6:]))
    154     startm1 = start - datetime.timedelta(days=1)
    155 
    156     # set end date of retrieval period
    157     end = datetime.date(year=int(c.end_date[:4]),
    158                         month=int(c.end_date[4:6]),
    159                         day=int(c.end_date[6:]))
    160 
    161     # set time period for one single retrieval
    162     datechunk = datetime.timedelta(days=int(c.date_chunk))
     151    start = datetime.strptime(c.start_date, '%Y%m%d')
     152    end = datetime.strptime(c.end_date, '%Y%m%d')
     153    # time period for one single retrieval
     154    datechunk = timedelta(days=int(c.date_chunk))
    163155
    164156    if c.basetime == '00':
    165         start = startm1
     157        start = start - timedelta(days=1)
     158
     159    if c.maxstep <= 24:
     160        startm1 = start - timedelta(days=1)
    166161
    167162    if c.basetime == '00' or c.basetime == '12':
    168         # endp1 = end + datetime.timedelta(days=1)
     163        # endp1 = end + timedelta(days=1)
    169164        endp1 = end
    170165    else:
    171         # endp1 = end + datetime.timedelta(days=2)
    172         endp1 = end + datetime.timedelta(days=1)
     166        # endp1 = end + timedelta(days=2)
     167        endp1 = end + timedelta(days=1)
    173168
    174169    # --------------  flux data ------------------------------------------------
     
    243238    # we only need to add datechunk - 1 days to retrieval
    244239    # for a period
    245     delta_t_m1 = delta_t - datetime.timedelta(days=1)
     240    delta_t_m1 = delta_t - timedelta(days=1)
    246241
    247242    day = start
  • source/python/mods/prepare_flexpart.py

    r27fe969 rca867de  
    5959
    6060# software specific classes and modules from flex_extract
     61sys.path.append('../')
    6162import _config
    6263from classes.UioFiles import UioFiles
     64from classes.ControlFile import ControlFile
    6365from tools import clean_up, get_cmdline_arguments, read_ecenv
    6466from classes.EcFlexpart import EcFlexpart
  • source/python/mods/tools.py

    r27fe969 rca867de  
    6060# ------------------------------------------------------------------------------
    6161
     62def none_or_str(value):
     63    '''
     64    @Description:
     65        Converts the input string into pythons None-type if the string
     66        contains "None".
     67
     68    @Input:
     69        value: string
     70            String to be checked for the "None" word.
     71
     72    @Return:
     73        None or value:
     74            Return depends on the content of the input value. If it was "None",
     75            then the python type None is returned. Otherwise the string itself.
     76    '''
     77    if value == 'None':
     78        return None
     79    return value
     80
     81def none_or_int(value):
     82    '''
     83    @Description:
     84        Converts the input string into pythons None-type if the string
     85        contains "None". Otherwise it is converted to an integer value.
     86
     87    @Input:
     88        value: string
     89            String to be checked for the "None" word.
     90
     91    @Return:
     92        None or int(value):
     93            Return depends on the content of the input value. If it was "None",
     94            then the python type None is returned. Otherwise the string is
     95            converted into an integer value.
     96    '''
     97    if value == 'None':
     98        return None
     99    return int(value)
     100
    62101def get_cmdline_arguments():
    63102    '''
     
    79118
    80119    # the most important arguments
    81     parser.add_argument("--start_date", dest="start_date", default=None,
     120    parser.add_argument("--start_date", dest="start_date",
     121                        type=none_or_str, default=None,
    82122                        help="start date YYYYMMDD")
    83     parser.add_argument("--end_date", dest="end_date", default=None,
     123    parser.add_argument("--end_date", dest="end_date",
     124                        type=none_or_str, default=None,
    84125                        help="end_date YYYYMMDD")
    85     parser.add_argument("--date_chunk", dest="date_chunk", default=None,
     126    parser.add_argument("--date_chunk", dest="date_chunk",
     127                        type=none_or_int, default=None,
    86128                        help="# of days to be retrieved at once")
     129    parser.add_argument("--controlfile", dest="controlfile",
     130                        type=none_or_str, default='CONTROL.temp',
     131                        help="file with CONTROL parameters")
     132
     133    # parameter for extra output information
     134    parser.add_argument("--debug", dest="debug",
     135                        type=none_or_int, default=None,
     136                        help="debug mode - leave temporary files intact")
     137    parser.add_argument("--request", dest="request",
     138                        type=none_or_int, default=None,
     139                        help="list all mars request in file mars_requests.dat \
     140                        and skip submission to mars")
    87141
    88142    # some arguments that override the default in the CONTROL file
    89     parser.add_argument("--basetime", dest="basetime", default=None,
    90                         help="base such as 00/12 (for half day retrievals)")
    91     parser.add_argument("--step", dest="step", default=None,
     143    parser.add_argument("--basetime", dest="basetime",
     144                        type=none_or_int, default=None,
     145                        help="base such as 00 or 12 (for half day retrievals)")
     146    parser.add_argument("--step", dest="step",
     147                        type=none_or_str, default=None,
    92148                        help="steps such as 00/to/48")
    93     parser.add_argument("--levelist", dest="levelist", default=None,
     149    parser.add_argument("--levelist", dest="levelist",
     150                        type=none_or_str, default=None,
    94151                        help="Vertical levels to be retrieved, e.g. 30/to/60")
    95     parser.add_argument("--area", dest="area", default=None,
     152    parser.add_argument("--area", dest="area",
     153                        type=none_or_str, default=None,
    96154                        help="area defined as north/west/south/east")
    97155
    98156    # set the working directories
    99     parser.add_argument("--inputdir", dest="inputdir", default=None,
     157    parser.add_argument("--inputdir", dest="inputdir",
     158                        type=none_or_str, default=None,
    100159                        help="root directory for storing intermediate files")
    101     parser.add_argument("--outputdir", dest="outputdir", default=None,
     160    parser.add_argument("--outputdir", dest="outputdir",
     161                        type=none_or_str, default=None,
    102162                        help="root directory for storing output files")
    103163    parser.add_argument("--flexpart_root_scripts", dest="flexpart_root_scripts",
    104                         default=None,
     164                        type=none_or_str, default=None,
    105165                        help="FLEXPART root directory (to find grib2flexpart \
    106166                        and COMMAND file)\n Normally flex_extract resides in \
     
    108168
    109169    # this is only used by prepare_flexpart.py to rerun a postprocessing step
    110     parser.add_argument("--ppid", dest="ppid", default=None,
     170    parser.add_argument("--ppid", dest="ppid",
     171                        type=none_or_int, default=None,
    111172                        help="specify parent process id for \
    112173                        rerun of prepare_flexpart")
     
    114175    # arguments for job submission to ECMWF, only needed by submit.py
    115176    parser.add_argument("--job_template", dest='job_template',
    116                         default="job.temp",
     177                        type=none_or_str, default="job.temp",
    117178                        help="job template file for submission to ECMWF")
    118     parser.add_argument("--queue", dest="queue", default=None,
     179    parser.add_argument("--queue", dest="queue",
     180                        type=none_or_str, default=None,
    119181                        help="queue for submission to ECMWF \
    120182                        (e.g. ecgate or cca )")
    121     parser.add_argument("--controlfile", dest="controlfile",
    122                         default='CONTROL.temp',
    123                         help="file with CONTROL parameters")
    124     parser.add_argument("--debug", dest="debug", default=None,
    125                         help="debug mode - leave temporary files intact")
    126     parser.add_argument("--request", dest="request", default=None,
    127                         help="list all mars request in file mars_requests.dat \
    128                         and skip submission to mars")
    129183
    130184    args = parser.parse_args()
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG