API Reference

This page lists the functions exported by the public pyPDAF __init__.py files. The top-level namespace contains the functions most users need for a PDAF3 workflow. The subpackages expose lower-level PDAF, PDAFomi, localisation, diagnostic, and compatibility routines.

The function names follow PDAF closely. See Variable naming conventions for the meaning of suffixes such as _p, _l, and _f.

Top-Level Workflow Functions

Initialisation and finalisation

pyPDAF.init(filtertype, subtype, stepnull, ...)

Initialise the PDAF system.

pyPDAF.init_parallel(screen, type_parallel, ...)

Initialize PDAF3's flexible parallelization layout.

pyPDAF.init_forecast(...)

The routine PDAF_init_forecast has to be called once at the end of the initialization of PDAF/start of DA cycles.

pyPDAF.set_parallel(in_comm_pdaf, ...)

Set MPI communicators and parallelisation in PDAF.

pyPDAF.deallocate()

Finalise the PDAF systems including freeing some of the memory used by PDAF.

Assimilation drivers

pyPDAF.assimilate(py__collect_state_pdaf, ...)

Online ensemble filters and smoothers except for 3DVars for a single DA step using diagnoal observation error covariance matrix.

pyPDAF.assim_offline(py__init_dim_obs_pdaf, ...)

Offline ensemble filters and smoothers except for 3DVars for a single DA step using diagnoal observation error covariance matrix.

pyPDAF.assimilate_local_nondiagr(...)

Online assimilation of domain local filters for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assimilate_global_nondiagr(...)

Online assimilation of global filters except for 3DVar and stochastic EnKF for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assimilate_lnetf_nondiagr(...)

Online assimilation of LNETF for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assimilate_lknetf_nondiagr(...)

Online assimilation of LKNETF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assimilate_enkf_nondiagr(...)

Online assimilation of global or Covariance localised stochastic EnKF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assimilate_nonlin_nondiagr(...)

Online assimilation of global nonlinear filters for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_local_nondiagr(...)

Offline assimilation of domain local filters for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assim_offline_global_nondiagr(...)

Offline assimilation of global filters except for 3DVar and stochastic EnKF for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assim_offline_lnetf_nondiagr(...)

Offline assimilation of LNETF for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assim_offline_lknetf_nondiagr(...)

Offline assimilation of LKNETF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_enkf_nondiagr(...)

Offline assimilation of global or Covariance localised stochastic EnKF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_lenkf_nondiagr(...)

Online assimilation of covariance localised stochastic EnKF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_nonlin_nondiagr(...)

Offline assimilation of global nonlinear filters for a single DA step using non-diagonal observation error covariance matrix.

Variational and hybrid drivers

pyPDAF.assimilate_3dvar_all(...)

Online assimilation for all types of 3DVar DA for a single DA step using diagonal observation error covariance matrix.

pyPDAF.assim_offline_3dvar_all(...)

Offline assimilation for all types of 3DVar DA for a single DA step using diagonal observation error covariance matrix.

pyPDAF.assimilate_3dvar_nondiagr(...)

3DVar DA for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assimilate_en3dvar_estkf_nondiagr(...)

3DEnVar for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assimilate_en3dvar_lestkf_nondiagr(...)

3DEnVar for a single DA step where the ensemble anomaly is generated by LESTKF using non-diagonal observation error covariance matrix.

pyPDAF.assimilate_hyb3dvar_estkf_nondiagr(...)

Hybrid 3DEnVar for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.assimilate_hyb3dvar_lestkf_nondiagr(...)

Hybrid 3DEnVar for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_3dvar_nondiagr(...)

Offline 3DVar DA for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_en3dvar_estkf_nondiagr(...)

Offline 3DEnVar for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_en3dvar_lestkf_nondiagr(...)

Offline 3DEnVar for a single DA step where the ensemble anomaly is generated by LESTKF using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_hyb3dvar_estkf_nondiagr(...)

Offline hybrid 3DEnVar for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.assim_offline_hyb3dvar_lestkf_nondiagr(...)

Offline hybrid 3DEnVar for a single DA step using non-diagonal observation error covariance matrix.

Observation generation and hooks

pyPDAF.generate_obs(py__collect_state_pdaf, ...)

Generation of synthetic observations based on given error statistics and observation operator.

pyPDAF.generate_obs_offline(...)

Generation of synthetic observations based on given error statistics and observation operator in offline setup.

pyPDAF.prepost(collect_state, ...)

Run PDAF3 pre/post processing in an externally managed model loop.

pyPDAF.prepost_offline(prepoststep, outflag)

Run PDAF3 offline pre/post processing.

Top-level utilities

pyPDAF.get_fcst_info(steps, time, doexit)

Return the number of time steps, current model time, and a flag whether the forecasting should be exited.

pyPDAF.print_version()

Display version information for PDAF

pyPDAF.print_filter_types(verbose)

Print the list of available named filter types and their IDs.

pyPDAF.configinfo_filters(subtype, verbose)

Print configuration info of the active filter given subtype

pyPDAF.options_filters(type_filter)

The overview of options for the selected DA method.

pyPDAF.flush_fortran_stdout()

Flush the Fortran standard output buffer.

pyPDAF.global_except_hook(exctype, value, ...)

Global error handler that aborts MPI jobs on uncaught exceptions.

pyPDAF.PDAF Utilities and Legacy Interface

Core setup, execution, and information

pyPDAF.PDAF.init(filtertype, subtype, ...)

Initialise the PDAF system.

pyPDAF.PDAF.init_forecast(...)

The routine PDAF_init_forecast has to be called once at the end of the initialization of PDAF/start of DA cycles.

pyPDAF.PDAF.deallocate()

Finalise the PDAF systems including freeing some of the memory used by PDAF.

pyPDAF.PDAF.finalize()

Finalize PDAF and release PDAF-internal resources.

pyPDAF.PDAF.abort(err)

Abort the parallel program through PDAF/MPI.

pyPDAF.PDAF.get_state(steps, doexit, ...)

Distribute analysis state vector to an array.

pyPDAF.PDAF.get_fcst_info(steps, time, doexit)

Return the number of time steps, current model time, and a flag whether the forecasting should be exited.

pyPDAF.PDAF.force_analysis()

Perform assimilation after this function call.

pyPDAF.PDAF.print_version()

Display version information for PDAF

pyPDAF.PDAF.print_filter_types(verbose)

Print the list of available named filter types and their IDs.

pyPDAF.PDAF.print_da_types(verbose)

Print the list of available named DA method types and their IDs.

pyPDAF.PDAF.print_info(printtype)

Print PDAF timing and memory information.

pyPDAF.PDAF.configinfo_filters(subtype, verbose)

Print configuration info of the active filter given subtype

pyPDAF.PDAF.options_filters(type_filter)

The overview of options for the selected DA method.

pyPDAF.PDAF.flush_fortran_stdout()

Flush the Fortran standard output buffer.

Observation gathering

pyPDAF.PDAF.gather_dim_obs_f(dim_obs_p)

Gather the dimension of observation vector across multiple local domains/filter processors.

pyPDAF.PDAF.gather_obs_f(obs_p, dimobs_f)

In the local filters (LESKTF, LETKF, LSEIK, LNETF) this function returns the total observation vector from process-local observations.

pyPDAF.PDAF.gather_obs_f2(coords_p, nrows, ...)

In the local filters (LESKTF, LETKF, LSEIK, LNETF) this function returns the full observation coordinates from process-local observation coordinates.

pyPDAF.PDAF.gather_obs_f_flex(dim_obs_p, ...)

Gather full observation from processor local observation without PDAF-internal info.

pyPDAF.PDAF.gather_obs_f2_flex(dim_obs_p, ...)

Gather full observation coordinates from processor local observation coordinates without PDAF-internal info.

Localisation helpers

pyPDAF.PDAF.correlation_function(ctype, ...)

The value of the chosen correlation function according to the specified length scale.

pyPDAF.PDAF.local_weight(wtype, rtype, ...)

Get localisation weight for given distance, cut-off radius, support radius, weighting type, and weighting function.

pyPDAF.PDAF.local_weights(wtype, cradius, ...)

Get a vector of localisation weights for given distances, cut-off radius, support radius, weighting type, and weighting function.

Random numbers and ensemble generation

pyPDAF.PDAF.generate_rndvec(len, vec, ...)

Generate random perturbations with PDAF's random-vector helper.

pyPDAF.PDAF.eofcovar(dim, nstates, nfields, ...)

EOF analysis of an ensemble of state vectors by singular value decomposition.

pyPDAF.PDAF.sample_ens(dim, dim_ens, modes, ...)

Generate an ensemble from singular values and their vectors (EOF modes) of an ensemble anomaly matrix.

pyPDAF.PDAF.reset_forget(forget_in)

Reset the forgetting factor manually during the assimilation process.

Setters

pyPDAF.PDAF.set_comm_pdaf(in_comm_pdaf)

Set the MPI communicator used by PDAF.

pyPDAF.PDAF.set_debug_flag(debugval)

Activate the debug output of the PDAF.

pyPDAF.PDAF.set_ens_pointer()

Return the ensemble in a numpy array.

pyPDAF.PDAF.set_iparam(idval, value, flag)

Set integer parameters for PDAF.

pyPDAF.PDAF.set_memberid(int  memberid)

Set the ensemble member index to given value.

pyPDAF.PDAF.set_offline_mode(screen)

Activate offline mode of PDAF.

pyPDAF.PDAF.set_rparam(idval, value, flag)

Set floating-point parameters for PDAF.

pyPDAF.PDAF.genobs_set_rparam(idval, value)

Set a real-valued GENOBS parameter.

pyPDAF.PDAF.set_seedset(seedset_in)

Choose a seedset for the random number generator used in PDAF.

pyPDAF.PDAF.set_seed(seedvec)

Set PDAF's four-integer random seed vector.

pyPDAF.PDAF.set_seedvec(seedvec)

Set PDAF's four-integer random seed vector.

pyPDAF.PDAF.set_smoother_ens(maxlag)

Get a pointer to smoother ensemble.

Getters and state flags

pyPDAF.PDAF.get_assim_flag()

Return the flag that indicates if the DA is performed in the last time step.

pyPDAF.PDAF.get_localfilter()

Return whether a local filter is used.

pyPDAF.PDAF.get_local_type()

The routine returns the information on the localization type of the selected filter.

pyPDAF.PDAF.get_memberid(memberid)

Return the ensemble member id on the current process.

pyPDAF.PDAF.get_obsmemberid(memberid)

Return the ensemble member id when observation operator is being applied.

pyPDAF.PDAF.get_seed()

Return PDAF's current four-integer random seed vector.

pyPDAF.PDAF.get_seedvec()

Return PDAF's current four-integer random seed vector.

pyPDAF.PDAF.get_rndcount()

Return PDAF's random-number generation counter.

pyPDAF.PDAF.reset_fcst_flag()

Return PDAF's forecast-time reset flag.

pyPDAF.PDAF.get_smoother_ens()

Return the smoothed ensemble in earlier time steps.

Incremental analysis update

pyPDAF.PDAF.iau_init(type_iau_in, nsteps_iau_in)

Initialise parameters for incremental analysis updates, IAU.

pyPDAF.PDAF.iau_reset(type_iau_in, nsteps_iau_in)

Modify the IAU type and the number of IAU time steps during a run

pyPDAF.PDAF.iau_set_pointer()

Set a pointer to the ensemble increments array.

Diagnostics

pyPDAF.PDAF.diag_ensmean(dim, dim_ens, ...)

Compute the ensemble mean of the state ensemble.

pyPDAF.PDAF.diag_stddev_nompi(dim, dim_ens, ...)

Compute ensemble standard deviation and ensemble mean without MPI.

pyPDAF.PDAF.diag_stddev(dim_p, dim_ens, ...)

Compute ensemble standard deviation and ensemble mean.

pyPDAF.PDAF.diag_variance_nompi(dim, ...)

Compute ensemble variance/standard deviation and mean without MPI.

pyPDAF.PDAF.diag_variance(dim_p, dim_ens, ...)

Compute ensemble variance/standard deviation and mean.

pyPDAF.PDAF.diag_rmsd_nompi(dim_p, statea_p, ...)

Compute the root mean squared distance between two vectors without MPI.

pyPDAF.PDAF.diag_rmsd(dim_p, statea_p, ...)

Compute the root mean squared distance between two vectors.

pyPDAF.PDAF.diag_crps_mpi(dim_p, dim_ens, ...)

Obtain a continuous rank probability score for an ensemble.

pyPDAF.PDAF.diag_crps_nompi(dim, dim_ens, ...)

Obtain a continuous rank probability score for an ensemble without MPI.

pyPDAF.PDAF.diag_crps(dim_p, dim_ens, ...)

Compute the continuous ranked probability score (CRPS).

pyPDAF.PDAF.diag_effsample(dim_sample, weights)

Calculating the effective sample size of a particle filter.

pyPDAF.PDAF.diag_ensstats(dim, dim_ens, ...)

Computing the skewness and kurtosis of the ensemble of a given element of the state vector.

pyPDAF.PDAF.diag_compute_moments(dim_p, ...)

Computes the mean, the unbiased variance, the unbiased skewness, and the unbiased excess kurtosis from an ensemble.

pyPDAF.PDAF.diag_histogram(ncall, dim, ...)

Computing the rank histogram of an ensemble.

pyPDAF.PDAF.diag_reliability_budget(n_times, ...)

Compute ensemble reliability budget

pyPDAF.PDAF.diag_diffstats(dim_p, vec1, ...)

Compare two vectors with Taylor-diagram style statistics.

pyPDAF.PDAF3 Assimilation Interface

pyPDAF.PDAF3.init(filtertype, subtype, ...)

Initialise the PDAF system.

pyPDAF.PDAF3.init_parallel(screen, ...)

Initialize PDAF3's flexible parallelization layout.

pyPDAF.PDAF3.init_forecast(...)

The routine PDAF_init_forecast has to be called once at the end of the initialization of PDAF/start of DA cycles.

pyPDAF.PDAF3.set_parallel(in_comm_pdaf, ...)

Set MPI communicators and parallelisation in PDAF.

pyPDAF.PDAF3.assimilate(...)

Online ensemble filters and smoothers except for 3DVars for a single DA step using diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline(...)

Offline ensemble filters and smoothers except for 3DVars for a single DA step using diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_3dvar_all(...)

Online assimilation for all types of 3DVar DA for a single DA step using diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_3dvar_all(...)

Offline assimilation for all types of 3DVar DA for a single DA step using diagonal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_local_nondiagr(...)

Online assimilation of domain local filters for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_global_nondiagr(...)

Online assimilation of global filters except for 3DVar and stochastic EnKF for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_lnetf_nondiagr(...)

Online assimilation of LNETF for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_lknetf_nondiagr(...)

Online assimilation of LKNETF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_enkf_nondiagr(...)

Online assimilation of global or Covariance localised stochastic EnKF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_nonlin_nondiagr(...)

Online assimilation of global nonlinear filters for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_3dvar_nondiagr(...)

3DVar DA for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_en3dvar_estkf_nondiagr(...)

3DEnVar for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_en3dvar_lestkf_nondiagr(...)

3DEnVar for a single DA step where the ensemble anomaly is generated by LESTKF using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_hyb3dvar_estkf_nondiagr(...)

Hybrid 3DEnVar for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assimilate_hyb3dvar_lestkf_nondiagr(...)

Hybrid 3DEnVar for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_local_nondiagr(...)

Offline assimilation of domain local filters for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_global_nondiagr(...)

Offline assimilation of global filters except for 3DVar and stochastic EnKF for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_lnetf_nondiagr(...)

Offline assimilation of LNETF for a single DA step using non-diagnoal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_lknetf_nondiagr(...)

Offline assimilation of LKNETF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_enkf_nondiagr(...)

Offline assimilation of global or Covariance localised stochastic EnKF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_lenkf_nondiagr(...)

Online assimilation of covariance localised stochastic EnKF for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_nonlin_nondiagr(...)

Offline assimilation of global nonlinear filters for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_3dvar_nondiagr(...)

Offline 3DVar DA for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_en3dvar_estkf_nondiagr(...)

Offline 3DEnVar for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_en3dvar_lestkf_nondiagr(...)

Offline 3DEnVar for a single DA step where the ensemble anomaly is generated by LESTKF using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_hyb3dvar_estkf_nondiagr(...)

Offline hybrid 3DEnVar for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.assim_offline_hyb3dvar_lestkf_nondiagr(...)

Offline hybrid 3DEnVar for a single DA step using non-diagonal observation error covariance matrix.

pyPDAF.PDAF3.generate_obs(...)

Generation of synthetic observations based on given error statistics and observation operator.

pyPDAF.PDAF3.generate_obs_offline(...)

Generation of synthetic observations based on given error statistics and observation operator in offline setup.

pyPDAF.PDAF3.prepost(collect_state, ...)

Run PDAF3 pre/post processing in an externally managed model loop.

pyPDAF.PDAF3.prepost_offline(prepoststep, ...)

Run PDAF3 offline pre/post processing.

pyPDAF.PDAFomi Observation Module Interface

Setup and error handling

pyPDAF.PDAFomi.init(n_obs)

Allocating an array of obs_f derived types instances.

pyPDAF.PDAFomi.check_error(flag)

This function returns the value of the PDAF-OMI internal error flag.

pyPDAF.PDAFomi.set_debug_flag(debugval)

Activate the debug output of the PDAFomi.

Observation storage and metadata

pyPDAF.PDAFomi.gather_obs(i_obs, dim_obs_p, ...)

Gather the dimension of a given type of observation across multiple local domains/filter processors.

pyPDAF.PDAFomi.gather_obsstate(i_obs, ...)

This function is used to implement custom observation operators.

pyPDAF.PDAFomi.set_doassim(i_obs, doassim)

Setting the doassim attribute of obs_f for i-th observation type.

pyPDAF.PDAFomi.set_disttype(i_obs, disttype)

Setting the observation localisation distance calculation method for i-th observation type.

pyPDAF.PDAFomi.set_ncoord(i_obs, ncoord)

Setting the number of spatial dimensions of observations for i-th observation type.

pyPDAF.PDAFomi.set_obs_err_type(i_obs, ...)

Setting the type of observation error distribution for i-th observation type.

pyPDAF.PDAFomi.set_use_global_obs(i_obs, ...)

Switch for only use process-local observations for i-th observation type.

pyPDAF.PDAFomi.set_inno_omit(i_obs, inno_omit)

Setting innovation threshold for removing observation outliers.

pyPDAF.PDAFomi.set_inno_omit_ivar(i_obs, ...)

Setting the inverse of observation error variance for omitted observations.

pyPDAF.PDAFomi.set_id_obs_p(i_obs, nrows, ...)

Setting the id_obs_p attribute of obs_f for i-th observation type.

pyPDAF.PDAFomi.set_icoeff_p(i_obs, nrows, ...)

Setting the observation interpolation coefficient for i-th observation type.

pyPDAF.PDAFomi.set_domainsize(i_obs, ncoord, ...)

Setting the domain periodicity attribute of obs_f for i-th observation type.

pyPDAF.PDAFomi.set_name(i_obs, obsname)

Set a name for given observation type

pyPDAF.PDAFomi.set_searchtype(stype, sortdir)

Select the OMI local-observation search algorithm and sort direction.

Interpolation coefficients

pyPDAF.PDAFomi.get_interp_coeff_tri(gpc, oc, ...)

The coefficient for linear interpolation in 2D on unstructure triangular grid.

pyPDAF.PDAFomi.get_interp_coeff_lin1d(gpc, ...)

The coefficient for linear interpolation in 1D.

pyPDAF.PDAFomi.get_interp_coeff_lin(num_gp, ...)

The coefficient for linear interpolation up to 3D.

pyPDAF.PDAFomi.get_interp_coeff_tri_vec

get_interp_coeff_tri(gpc: np.ndarray, oc: np.ndarray, icoeff: np.ndarray) -> np.ndarray

pyPDAF.PDAFomi.get_interp_coeff_lin1d_vec

get_interp_coeff_lin1d(gpc: np.ndarray, oc: float, icoeff: np.ndarray) -> np.ndarray

pyPDAF.PDAFomi.get_interp_coeff_lin_vec

get_interp_coeff_lin(num_gp: int, n_dim: int, gpc: np.ndarray, oc: np.ndarray, icoeff: np.ndarray) -> np.ndarray

Observation operators

pyPDAF.PDAFomi.obs_op_gridpoint(i_obs, ...)

A (partial) identity observation operator

pyPDAF.PDAFomi.obs_op_gridavg(i_obs, nrows, ...)

Observation operator that average values on given model grid points.

pyPDAF.PDAFomi.obs_op_extern(i_obs, ...)

Observation operator for given observed model state.

pyPDAF.PDAFomi.obs_op_interp_lin(i_obs, ...)

Observation operator that linearly interpolates model grid values to observation location.

pyPDAF.PDAFomi.obs_op_adj_gridpoint(i_obs, ...)

The adjoint observation operator of pyPDAF.PDAFomi.obs_op_gridpoint().

pyPDAF.PDAFomi.obs_op_adj_gridavg(i_obs, ...)

The adjoint observation operator of pyPDAF.PDAFomi.obs_op_gridavg().

pyPDAF.PDAFomi.obs_op_adj_interp_lin(i_obs, ...)

The adjoint observation operator of pyPDAF.PDAFomi.obs_op_interp_lin().

Local observations and localisation

pyPDAF.PDAFomi.init_dim_obs_l_iso(i_obs, ...)

Initialize the observation information corresponding to an isotropic local analysis domain.

pyPDAF.PDAFomi.init_dim_obs_l_noniso(i_obs, ...)

Initialize the observation information corresponding to a non-isotropic local analysis domain.

pyPDAF.PDAFomi.init_dim_obs_l_noniso_locweights(...)

Initialize the observation information corresponding to a non-isotropic local analysis domain.

pyPDAF.PDAFomi.observation_localization_weights(...)

Returns a vector of observation localisation weights.

pyPDAF.PDAFomi.set_dim_obs_l(i_obs, ...)

Store local observation counts for OMI local-initialization workflows.

pyPDAF.PDAFomi.set_localization(i_obs, ...)

Stores the isotropic localization parameters (cradius, sradius, locweight) in OMI.

pyPDAF.PDAFomi.set_localization_noniso(...)

Stores the non-isotropic localization parameters (cradius, sradius, locweight) in OMI.

pyPDAF.PDAFomi.set_localize_covar_iso(i_obs, ...)

Initialise local observation information for isotropic covariance localisation.

pyPDAF.PDAFomi.set_localize_covar_noniso(...)

Initialise local observation information for non-isotropic covariance localisation.

pyPDAF.PDAFomi.set_localize_covar_noniso_locweights(...)

Initialise local observation information for non-isotropic covariance localisation.

pyPDAF.PDAFomi.set_domain_limits(lim_coords)

Set the domain limits for domain decomposed local domain.

pyPDAF.PDAFomi.get_domain_limits_unstr(...)

Set the domain limits for unstructured domain decomposed local domain.

pyPDAF.PDAFomi.store_obs_l_index(i_obs, idx, ...)

Save local observation information in PDAF.

pyPDAF.PDAFomi.store_obs_l_index_vdist(...)

Save local observation information for 2+1D factorized localization in the vertical direction in PDAF.

Observation diagnostics

pyPDAF.PDAFomi.set_obs_diag(diag)

Activate or deactivate the observation diagnostics.

pyPDAF.PDAFomi.diag_dimobs()

Observation dimension for each observation type.

pyPDAF.PDAFomi.diag_get_hx(id_obs)

Observed ensemble for given observation type.

pyPDAF.PDAFomi.diag_get_hxmean(id_obs)

Observed ensemble mean for given observation type.

pyPDAF.PDAFomi.diag_get_ivar(id_obs)

Inverse of observation error variance for given observation type.

pyPDAF.PDAFomi.diag_get_obs(id_obs)

Observation vector and corresponding coordinates for specified observation type.

pyPDAF.PDAFomi.diag_nobstypes(nobs)

The number of observation types that are active in an assimilation run.

pyPDAF.PDAFomi.diag_obs_rmsd(nobs, verbose)

Root mean squared distance between observation and obseved model state for each observation type.

pyPDAF.PDAFomi.diag_stats(nobs, verbose)

A selection of 6 statistics comparing the observations and the observed ensemble mean for each observation type.

pyPDAF.PDAFomi.diag_rmsd(nobs, verbose)

Compute RMSD between observations and observed ensemble means.

pyPDAF.PDAFomi.diag_diffstats(nobs, verbose)

Compare observations with observed ensemble means by observation type.

pyPDAF.PDAFomi.diag_crps(nobs, perturb, verbose)

Compute CRPS diagnostics between observations and observed ensembles.

pyPDAF.PDAFlocal Localisation Helpers

pyPDAF.PDAFlocal.set_indices(dim_l, map)

Set index vector to map local state vector to global state vectors.

pyPDAF.PDAFlocal.set_increment_weights(...)

Initialises a PDAF_internal local array of increment weights.

pyPDAF.PDAFlocal.clear_increment_weights()

Deallocates the local increment weight vector in pyPDAF.PDAFlocal.set_increment_weights().

pyPDAF.PDAFlocalomi

pyPDAF.PDAFlocalomi is exported as a namespace package, but it currently does not expose functions from its __init__.py.