PMPParser - PCMDI/pcmdi_metrics GitHub Wiki

Installing PMPParser

Via Anaconda: get the nightly from or after October 18, 2016

conda install pcmdi_metrics=2016.10.18 -c pcmdi/label/nightly -c uvcdat

Manually: clone the repo and just run:

python setup.py install

Information:

PMPParser is basically a wrapper around ArgumentParser. It has the ability for users to use the default arguments which are listed below or define their own, which can overwrite the default arguments if needed. PMPParser also supports reading in a parameter file from the command line and then allowing for the user to modify select parameter values as needed.

Default Arguments

Value Argument
parameter -p or --parameter
case_id --case_id
vars -v or --vars
regions --regions
regions_values --regions_values
reference_data_set -r or --reference_data_set
reference_data_path --reference_data_path
test_data_set -t or --test_data_set
test_data_path --test_data_path
target_grid --target_grid
regrid_tool --regrid_tool
regrid_method --regrid_method
regrid_tool_ocn --regrid_tool_ocn
regrid_method_ocn --regrid_method_ocn
period --period
realization --realization
simulation_description_mapping --simulation_description_mapping
model_tweaks --model_tweaks
ext --ext
dry_run --dry_run
filename_template --filename_template
sftlf_filename_template --sftlf_filename_template
custom_observations --custom_observations
metrics_output_path --metrics_output_path
filename_output_template --filename_output_template
save_test_clims --save_test_clims
test_clims_interpolated_output --test_clims_interpolated_output
compute_custom_metrics --compute_custom_metrics

Examples

How to use PMPParser in your driver

#!/usr/bin/env python
from pcmdi_metrics.pcmdi.pmp_parser import *
# soon the import statement will be:
# from pcmdi_metrics.driver.pmp_parser import *
parser = PMPParser() # Includes all default options

parser.add_argument(
    '-n', '--newarg',
    type=ast.literal_eval, #loading in a dictionary
    dest='newarg',
    help='description',
    required=False)

parameter = parser.get_parameter()
# All parameters can be referenced like so:
# parameter.vars
# parameter.regions
# ...

Reading in a list from the command line

driver -v var1 var2 var3

results in parameter.var being ['var1', 'var2', 'var3']

Reading in a dictionary from the command line

driver --regions '{"tas": [None, "terre", "ocean"], "tos": [None, ]}'

results in parameter.regions being {'tos': [None], 'tas': [None, 'terre', 'ocean']}