MBAR

The MBAR estimator is a light wrapper around the reference implementation of MBAR [Shirts2008] from pymbar (pymbar.mbar.MBAR). As a generalization of BAR, it uses information from all sampled states to generate an estimate for the free energy difference between each state.

API Reference

class alchemlyb.estimators.MBAR(maximum_iterations=10000, relative_tolerance=1e-07, initial_f_k=None, method='robust', n_bootstraps=0, verbose=False)

Multi-state Bennett acceptance ratio (MBAR).

Parameters:
  • maximum_iterations (int, optional) – Set to limit the maximum number of iterations performed.

  • relative_tolerance (float, optional) – Set to determine the relative tolerance convergence criteria.

  • initial_f_k (np.ndarray, float, shape=(K), optional) – Set to the initial dimensionless free energies to use as a guess (default None, which sets all \(f_k = 0\)).

  • method (str, optional, default="robust") – The optimization routine to use. This can be any of the methods available via scipy.optimize.minimize() or scipy.optimize.root().

  • n_bootstraps (int, optional) – Whether to use bootstrap to estimate uncertainty. 0 means use analytic error estimation. 50~200 is a reasonable range to do bootstrap.

  • verbose (bool, optional) – Set to True if verbose debug output from pymbar is desired.

delta_f_

The estimated dimensionless free energy difference between each state.

Type:

DataFrame

d_delta_f_

The estimated statistical uncertainty (one standard deviation) in dimensionless free energy differences.

Type:

DataFrame

theta_

The theta matrix.

Type:

DataFrame

states_

Lambda states for which free energy differences were obtained.

Type:

list

Notes

See [Shirts2008] for details of the derivation and cite the paper when using MBAR in published work.

See also

pymbar.mbar.MBAR

Changed in version 1.0.0: delta_f_, d_delta_f_, states_ are view of the original object.

Changed in version 2.0.0: default value for method was changed from “hybr” to “robust”

Changed in version 2.1.0: n_bootstraps option added.

fit(u_nk)

Compute overlap matrix of reduced potentials using multi-state Bennett acceptance ratio.

Parameters:

u_nk (DataFrame) – u_nk[n, k] is the reduced potential energy of uncorrelated configuration n evaluated at state k.

property overlap_matrix

MBAR overlap matrix.

The estimated state overlap matrix \(O_{ij}\) is an estimate of the probability of observing a sample from state \(i\) in state \(j\).

The overlap_matrix is computed on-the-fly. Assign it to a variable if you plan to re-use it.

See also

pymbar.mbar.MBAR.computeOverlap

get_metadata_routing()

Get metadata routing of this object.

Please check User Guide on how the routing mechanism works.

Returns:

routing – A MetadataRequest encapsulating routing information.

Return type:

MetadataRequest

get_params(deep=True)

Get parameters for this estimator.

Parameters:

deep (bool, default=True) – If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns:

params – Parameter names mapped to their values.

Return type:

dict

set_fit_request(*, u_nk: bool | None | str = '$UNCHANGED$') MBAR

Request metadata passed to the fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config()). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True: metadata is requested, and passed to fit if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it to fit.

  • None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str: metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default (sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.

New in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline. Otherwise it has no effect.

Parameters:

u_nk (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for u_nk parameter in fit.

Returns:

self – The updated object.

Return type:

object

set_params(**params)

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as Pipeline). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters:

**params (dict) – Estimator parameters.

Returns:

self – Estimator instance.

Return type:

estimator instance