um2nc is a Python utility for converting Unified Model (UM) data files to netCDF format. um2nc is developed by ACCESS-NRI to support users of ACCESS models that contain a Unified Model component, including ACCESS-CM2 and ACCESS-ESM1.5.
On Gadi, um2nc is available within the vk83 payu environment.
To access it, run:
module use /g/data/vk83/modules
module load payu
Important
You need to be a member of the vk83 project on NCI to access the module. For more information check how to Join relevant NCI projects
um2nc is available as a conda package in the access-nri conda channel.
To install it run:
conda install accessnri::um2nc
um2nc utilities for converting UM files to netCDF can be accessed through the command line or as a Python3 API. This user documentation details the available command line utilities:
The um2nc command converts a single UM file to a netCDF file.
Usage
um2nc [options] infile outfile
Positional Arguments
infileThe path of the UM input file to convert to netCDF.outfileThe path of the netCDF output file.
Optional Arguments
User information options:
-h, --helpDisplay a help message and exit.-v, --verboseDisplay verbose output (use-vvfor the highest level of output).
Output file format options:
-k NC_KINDNetCDF output format. Choose among1(classic),2(64-bit offset),3(netCDF-4),4(netCDF-4 classic). Default:3(netCDF-4).-c COMPRESSIONNetCDF compression level.0(none) to9(max). Default:4.--64Write 64 bit output when input is 64 bit. When absent, output will be 32 bit.
Variable selection options:
--include ITEM_CODE_1 [ITEM_CODE_2 ...]List of variables to include in the output file, specified by their item codes. Item codes are given in the form1000 * section number + item number. Any other variables present in the input file will not be written to the output file.--exclude ITEM_CODE_1 [ITEM_CODE_2 ...]List of variables to exclude from the output file, specified by their item codes. Item codes are given in the form1000 * section number + item number. All other variables present in input file will be written to output file.
The options --include and --exclude cannot be used simultaneously. When neither are present, all variables in the input file will be written to the output file.
Masking options:
Points on a pressure level grid may fall below ground-level in some fields of the input file. When Heaviside masking is enabled, pressure level data that were located above ground-level for less than the critical time fraction HCRIT will be masked.
By default, variables on pressure level grids that fall below-ground level will be masked with the appropriate Heaviside variable found in the input file. If the Heaviside variable cannot be found, these variables will be omitted from the output. This behaviour can be controlled by the following options:
--hcrit HCRITMinimum fraction of the time spent above ground-level for a pressure grid data point to be considered valid. Data points in pressure grid variables will be masked if they were above ground-level for less than the critical fractionHCRITof the time. This option has no effect when used together with the--nomaskoption. Default0.5.--nomaskDon't mask variables on pressure level grids. When selected, unmasked pressure level variables will be written to the output file regardless of the presence of the Heaviside variable.
Metadata options:
--model MODELLink STASH codes to variable names and metadata using a preset STASHmaster associated with a specific model. Supported options arecmip6,access-cm2,access-esm1.5, andaccess-esm1.6. If omitted, thecmip6STASHmaster will be used.--nohistDon't add a global history attribute to the output file. When absent, the conversion time,um2ncversion, and the script location will be added to thehistoryglobal netCDF attribute.--simpleUse the simple variable naming scheme. Variables in the output file will be named based on their STASH section number and item code, in the formatfld_s<section number>i<item number>. When absent, variable names will be taken from the selectedSTASHmaster(see the--modelargument).
The esmp1p5_convert_nc command is designed to be run automatically during payu based simulation of ACCESS-ESM1.5. It converts all UM output files from a single experiment run to netCDF, and is typically included in a simulation as a payu userscript.
Usage
esmp1p5_convert_nc [options] current_output_dir
Positional arguments
current_output_dirPath to anACCESS-ESM1.5simulation's output directory. Any UM output files in thecurrent_output_dir/atmospheresubdirectory will be converted to netCDF and placed in a new directorycurrent_output_dir/atmosphere/netCDF.
Optional Arguments
--help, -hDisplay a help message and exit.--delete-ff, -dDelete Unified Model output files upon successful conversion.--quiet, -qReport only final exception type and message for any expectedum2ncexceptions raised during conversion. If absent, full stack traces are reported.
esm1p5_convert_nc uses the same underlying workflow as the um2nc command to convert each file, and applies the following arguments:
-k 3-c 4--simple--hcrit 0.5
um2nc supports the conversion of Unified Model output and restart files. Ancillary files and files containing timeseries are currently not supported.
For development/testing, it is recommended to install um2nc as a development package within a micromamba/conda testing environment.
git clone [email protected]:ACCESS-NRI/um2nc-standalone.git
Tip
In the following instructions micromamba can be replaced with conda.
cd um2nc-standalone
micromamba env create -n um2nc_dev --file .conda/env_dev.yml
micromamba activate um2nc_dev
pip install --no-deps --no-build-isolation -e .
The um2nc-standalone project uses pytest and pytest-cov.
To run the tests and generate a coverage report (with missing lines) run:
python3 -m pytest --cov-report=term-missing --cov=um2nc
Tip
To generate an HTML coverage report substitute term-missing with html.
um2nc is developed and supported by ACCESS-NRI to facilitate the use of ACCESS models and data.
Requests for support in using um2nc can be made on the ACCESS-HIVE Forum. Bug reports and suggestions are welcomed as GitHub issues.