Guide to config-files¶
General remarks¶
Instead of .csv
files als in previos versions, now .toml
markup is used.
An overview is provided here https://github.com/toml-lang/toml
Setup sample files¶
To illustrate the configuration, some sample files are needed.
# make a folder in the the directory as larda, larda-cfg, and larda-connectordump
mkdir -p example-data/categorize/2018 && cd example-data/categorize/2018/
wget http://devcloudnet.fmi.fi/cnet/limassol/processed/categorize/2018/20180208_limassol_categorize.nc
cd ../../../
mkdir -p example-data/classification/2018 && example-data/classification/2018
wget http://devcloudnet.fmi.fi/cnet/limassol/products/classification/2018/20180208_limassol_classification.nc
Campaigns config¶
The larda-cfg/campaigns.toml
config file is used to provide the general context of the data.
[lacros_cycare_example]
location = "Limassol"
coordinates = [34.677, 33.038]
altitude = 11
mira_azi_zero = 154
duration = [["20161018", "today"]]
systems = ["CLOUDNET", "MIRA"]
system_only.CLOUDNET = [['20161101', '20190107'], ['20180101', '20180214']]
system_only.MIRA = [['20161101', '20180401']]
cloudnet_stationname = 'limassol'
info_text_loc = 'default'
#info_text_loc = 'info_lacros.toml'
param_config_file = 'params_cycare_example.toml'
connectordump = '/home/larda3/larda-connectordump/'
Parameter config¶
The second level of configuration defines the parameters for each system in a file such as
params_cycare_example.toml
. The file lists different systems, such as MIRA
, CLOUDNET
or POLLYNET
.
Each systems’ config has three parts. An example is given below.
path¶
Defines the paths, where to find the (netcdf) files containing the parameters.
- base_dir
- directory to start filesearch
- matching_subdirs
- regex, that describes the subpaths (including filename) that are matching_subdirs
- date_in_filename
- named groups in regex that identify the part of the filename, that contains the date
Note
implicitly it is assumed, that the timestamp in the filename is the beginning of measurements
generic¶
Set of properties, that is used for each parameter as default if not specified explicitly for the parameter itself.
params¶
Define the settings for each variable, that should be handled by larda.
- time_variable
- name of the time variable in the netcdf file
- time_conversion
- function that converts the time variable to unix timestamp
- time_microsec_variable
- if given specifies the variable containing the microseconds
- time_millisec_variable
- if given specifies the variable containing the milliseconds
- range_variable
- name of the range variable in the netcdf file
- range_conversion
- function that converts the range variable to meters.
'none'
if already given in that unit - var_conversion
- function that converts the variable variable to meters.
'none'
if no conversion is desired - colormap
- colormap to use by default
- which_path
- name of the path definition that matches the files for this parameter
- ncreader
- which reader to use
- identifier_rg_unit
- name of the range unit attribute in the netcdf varibale
- identifier_var_unit
- name of the var unit attribute in the netcdf varibale
- identifier_var_lims
- name of the var limits attribute in the netcdf varibale
- var_lims
- define limits of variable directly
- var_name
- name of the variable
- vel_variable
- velocity variable for reading spectra
- dimorder
- toggle the order of dimensions (i.e. mira nc file)
- meta.*
- dictionary of meta information extracted from variables, var attributes or global attributes
Example¶
The section for the Cloudnet configration in the params_cycare_example.toml
might look like below.
The absolute paths in base_dir
will likely have to be adapted.
[CLOUDNET]
[CLOUDNET.path.categorize]
# mastering regex (here to exclude ppi and stuff)
base_dir = '/home/larda3/example-data/categorize/'
matching_subdirs = '(\d{4}\/\d{8}.*.nc)'
date_in_filename = '(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2})_'
[CLOUDNET.path.productsclass]
# mastering regex (here to exclude ppi and stuff)
base_dir = '/home/larda3/example-data/classification/'
matching_subdirs = '(\d{4}\/\d{8}.*.nc)'
date_in_filename = '(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2})_'
[CLOUDNET.generic]
# this general settings need to be handed down to the params
time_variable = 'time'
range_variable = 'height'
colormap = "gist_rainbow"
time_conversion = 'beginofday'
range_conversion = 'sealevel2range'
var_conversion = 'none'
ncreader = 'timeheight'
# if identifier is given read from ncfile, else define here
identifier_rg_unit = 'units'
identifier_var_unit = 'units'
identifier_var_lims = 'plot_range'
identifier_fill_value = 'missing_value'
#var_lims = [-40, 20]
meta.version = "gattr.software_version"
meta.history = "gattr.history"
meta.source = "vattr.source"
meta.latitude = "var.latitude"
[CLOUDNET.params.Z]
variable_name = 'Z'
which_path = 'categorize'
var_conversion = 'z2lin'
[CLOUDNET.params.LDR]
variable_name = 'ldr'
which_path = 'categorize'
var_conversion = 'z2lin'
[CLOUDNET.params.T]
variable_name = 'temperature'
which_path = 'categorize'
range_variable = 'model_height'
[CLOUDNET.params.beta]
variable_name = 'beta'
which_path = 'categorize'
[CLOUDNET.params.depol]
variable_name = 'lidar_depolarisation'
which_path = 'categorize'
var_unit = '%'
var_lims = [0.0, 0.3]
[CLOUDNET.params.CLASS]
variable_name = 'target_classification'
which_path = 'productsclass'
var_unit = ""
var_lims = [0, 10]
colormap = 'cloudnet_target'
fill_value = -99
Note
var_conversion
allows for chained functions, such as var_conversion = 'z2lin,extrfromaxis2(0)'
.
See pyLARDA.helpers.get_converter_array()
.
A template option is available for repeating datasets in different campaigns:
[CLOUDNET]
template = 'temp_cloudnet.toml'
[CLOUDNET.path.categorize]
# mastering regex (here to exclude ppi and stuff)
base_dir = '/home/larda3/example-data/categorize/'
matching_subdirs = '(\d{4}\/\d{8}.*.nc)'
date_in_filename = '(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2})_'
[CLOUDNET.path.productsclass]
# mastering regex (here to exclude ppi and stuff)
base_dir = '/home/larda3/example-data/classification/'
matching_subdirs = '(\d{4}\/\d{8}.*.nc)'
date_in_filename = '(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2})_'
The generic
and params
section are then defined in larda-cfg/temp_cloudnet.toml
.
In the pyLARDA.ParameterInfo.ParameterInfo
, the template is updated with the campaign configuration.
Hence, single generic
or params
configurations in the template can be overwritten.
The configuration can be checked by running python3 ListCollector.py
Afterwards the connectordump at larda-connectordump/lacros_cycare_example/connector_CLOUDNET.json
should look similar to
{
"categorize": [
[
[
"20180208-000000",
"20180209-000000"
],
"./2018/20180208_limassol_categorize.nc"
]
],
"productsclass": [
[
[
"20180208-000000",
"20180209-000000"
],
"./2018/20180208_limassol_classification.nc"
]
]
}