The subfilter module.

This module implements overall filtering.

The main functions are:

Before use, two files have to be created, using:

New at 0.3

  1. The subfilter.subfilter.filter_variable_pair_list() function outputs filtered pairs \phi,\psi inder the name “s(\phi,\psi)_on_grid” where “grid” will be “u”, “v”, “w” or “p”.

Detailed Module Contents

The entire module is documented below.

subfilter.py - This is the “subfilter module” - Defines many useful routines for the subfilter calculations. - examples of their use are present in subfilter_file.py

Created on Tue Oct 23 11:07:05 2018

@author: Peter Clark

subfilter.subfilter.subfilter_options(config_file: Optional[str] = None)

Set default options for filtering.

Parameters

config_file (str) – Path to configuration .yaml file. The default is None.

Returns

  • options (dict) – Options including optional updates

  • update_config (dict) – Updates from config_file

subfilter.subfilter.filter_variable_list(source_dataset, ref_dataset, derived_dataset, filtered_dataset, options, filter_def, var_list=None, grid='p')

Create filtered versions of input variables on required grid.

Stored in derived_dataset.

Parameters
  • source_dataset (NetCDF dataset for input) –

  • ref_dataset (NetCDF dataset for input containing reference) – profiles. Can be None

  • derived_dataset (NetCDF dataset for derived data) –

  • filtered_dataset (NetCDF dataset for derived data) –

  • options (General options e.g. FFT method used.) –

  • filter_def (1 or 2D filter) –

  • var_list=None (List of variable names.) –

  • get_default_variable_list() (default provided by) –

  • grid='p' (Grid - 'u','v','w' or 'p') –

Returns

list

Return type

list of strings representing variable names.

subfilter.subfilter.filter_variable_pair_list(source_dataset, ref_dataset, derived_dataset, filtered_dataset, options, filter_def, var_list=None, grid='p')

Create filtered versions of pairs input variables on A grid.

Stored in derived_dataset.

Parameters
  • source_dataset – NetCDF dataset for input

  • ref_dataset – NetCDF dataset for input containing reference profiles. Can be None

  • derived_dataset – NetCDF dataset for derived data

  • filtered_dataset – NetCDF dataset for derived data

  • options – General options e.g. FFT method used.

  • filter_def – 1 or 2D filter

  • var_list=None – List of variable names.

  • get_default_variable_pair_list() (default provided by) –

Returns

var_list

Return type

list of lists of pairs strings representing variable names.

subfilter.subfilter.convolve(field, options, filter_def, dims)

Convolve field filter using fftconvolve using padding.

Parameters
  • field – field array

  • options – General options e.g. FFT method used.

  • filter_def – 1 or 2D filter array

Returns

ndarray

Return type

field convolved with filter_def

subfilter.subfilter.pad_to_len(field, newlen, mode='constant')

Pad array to required size on each dimension.

Parameters
  • field (numpy array) – Input field.

  • newlen (int) – Length of each dimension.

  • mode (str or function, optional) – Detrmines values to pad with. See numpy.pad. The default is ‘constant’.

Returns

padfield – Input field padded as required..

Return type

numpy array

subfilter.subfilter.filtered_field_calc(var, options, filter_def)

Split field into resolved f(field)_r and subfilter f(field)_s.

Note: this routine has a deliberate side effect, to store the fft or rfft of the filter in filter_def for subsequent re-use.

Parameters
  • var – dict cantaining variable info

  • options – General options e.g. FFT method used.

  • filter_def – 1 or 2D filter

Returns

dicts cantaining variable info

Return type

[var_r, var_s]

subfilter.subfilter.setup_derived_data_file(source_file, destdir, fname, options, override=False)

Create NetCDF dataset for derived data in destdir.

File name is original file name concatenated with filter_def.id.

Parameters
  • source_file – NetCDF file name.

  • destdir – Directory for derived data.

  • override=False – if True force creation of file

Returns

Return type

derived_dataset_name, derived_dataset

subfilter.subfilter.setup_filtered_data_file(source_file, destdir, fname, options, filter_def, override=False)

Create NetCDF dataset for filtered data in destdir.

File name is original file name concatenated with filter_def.id.

Parameters
  • source_file – NetCDF file name.

  • destdir – Directory for derived data.

  • options – General options e.g. FFT method used.

  • filter_def – Filter

  • options – General options e.g. FFT method used.

  • override=False – if True force creation of file

Returns

Return type

filtered_dataset_name, filtered_dataset

@author: Peter Clark

subfilter.subfilter.filter_field(var, filtered_dataset, options, filter_def, grid='p')

Create filtered versions of input variable on required grid, stored in filtered_dataset.

Parameters
  • var – dict cantaining variable info

  • filtered_dataset – NetCDF dataset for derived data.

  • options – General options e.g. FFT method used.

  • filter_def – 1 or 2D filter.

  • get_default_variable_list() (default provided by) –

  • grid='p' – Grid - ‘u’,’v’,’w’ or ‘p’

Returns

ncvar_r, ncvar_s – filtered_dataset.

Return type

Resolved and subfilter fields as netcf variables in

subfilter.subfilter.filtered_deformation(source_dataset, ref_dataset, derived_dataset, filtered_dataset, options, filter_def, grid='p')

Create filtered versions of deformation field.

Parameters
  • source_dataset – NetCDF input dataset

  • ref_dataset – NetCDF dataset for input containing reference profiles. Can be None

  • derived_dataset – NetCDF dataset for derived data.

  • filtered_dataset – NetCDF dataset for derived data

  • options – General options e.g. FFT method used.

  • filter_def – 1 or 2D filter.

  • grid='p' – Grid - ‘u’,’v’,’w’ or ‘p’

Returns

  • ncvar_r, ncvar_s (Resolved and subfilter fields as netcf variables)

  • in filtered_dataset.

subfilter.subfilter.quadratic_subfilter(source_dataset, ref_dataset, derived_dataset, filtered_dataset, options, filter_def, v1_name, v2_name, grid='p')

Create filtered versions of pair of input variables on required grid.

Stored in derived_dataset. Computes s(\phi,\psi) = (\phi\psi)^r - \phi^r\psi^r.

Parameters
  • source_dataset – NetCDF dataset for input

  • ref_dataset – NetCDF dataset for input containing reference profiles. Can be None

  • derived_dataset – NetCDF dataset for derived data

  • filtered_dataset – NetCDF dataset for derived data

  • options – General options e.g. FFT method used.

  • filter_def – 1 or 2D filter

  • v1_name – Variable names.

  • v2_name – Variable names.

Returns

  • s(var1,var2) data array.

  • vdims dimensions of var1