class openfe.protocols.openmm_afe.equil_binding_afe_method.AbsoluteBindingProtocolResult(**data)#

Dict-like container for the output of a AbsoluteBindingProtocol

get_individual_estimates() dict[str, list[tuple[Quantity, Quantity]]]#

Get the individual estimate of the free energies.

Returns:

dGs – A dictionary, keyed solvent, complex, and ‘standard_state’ representing each portion of the thermodynamic cycle, with lists of tuples containing the individual free energy estimates and, for ‘solvent’ and ‘complex’, the associated MBAR uncertainties for each repeat of that simulation type.

Return type:

dict[str, list[tuple[openff.units.Quantity, openff.units.Quantity]]]

Notes

  • Standard state correction has no error and so will return a value of 0.

get_estimate() Quantity#

Get the binding free energy estimate for this calculation.

Returns:

dG – The binding free energy. This is a Quantity defined with units.

Return type:

openff.units.Quantity

get_uncertainty() Quantity#

Get the binding free energy error for this calculation.

Returns:

err – The standard deviation between estimates of the binding free energy. This is a Quantity defined with units.

Return type:

openff.units.Quantity

get_forward_and_reverse_energy_analysis() dict[str, list[dict[str, ndarray[tuple[Any, ...], dtype[_ScalarT]] | Quantity] | None]]#

Get the reverse and forward analysis of the free energies.

Returns:

forward_reverse – A dictionary, keyed solvent and complex for each leg of the thermodynamic cycle which each contain a list of dictionaries containing the forward and reverse analysis of each repeat of that simulation type.

The forward and reverse analysis dictionaries contain:
  • fractions: npt.NDArray

    The fractions of data used for the estimates

  • forward_DGs, reverse_DGs: openff.units.Quantity

    The forward and reverse estimates for each fraction of data

  • forward_dDGs, reverse_dDGs: openff.units.Quantity

    The forward and reverse estimate uncertainty for each fraction of data.

If one of the cycle leg list entries is None, this indicates that the analysis could not be carried out for that repeat. This is most likely caused by MBAR convergence issues when attempting to calculate free energies from too few samples.

Return type:

dict[str, list[Optional[dict[str, Union[npt.NDArray, openff.units.Quantity]]]]]

Raises:

UserWarning

  • If any of the forward and reverse dictionaries are None in a given thermodynamic cycle leg.

get_overlap_matrices() dict[str, list[dict[str, ndarray[tuple[Any, ...], dtype[_ScalarT]]]]]#

Get a the MBAR overlap estimates for all legs of the simulation.

Returns:

overlap_stats – A dictionary with keys solvent and complex for each leg of the thermodynamic cycle, which each containing a list of dictionaries with the MBAR overlap estimates of each repeat of that simulation type.

The underlying MBAR dictionaries contain the following keys:
  • scalar: One minus the largest nontrivial eigenvalue

  • eigenvalues: The sorted (descending) eigenvalues of the overlap matrix

  • matrix: Estimated overlap matrix of observing a sample from state i in state j

Return type:

dict[str, list[dict[str, npt.NDArray]]]

get_replica_transition_statistics() dict[str, list[dict[str, ndarray[tuple[Any, ...], dtype[_ScalarT]]]]]#

Get the replica exchange transition statistics for all legs of the simulation.

Note

This is currently only available in cases where a replica exchange simulation was run.

Returns:

repex_stats – A dictionary with keys solvent and complex for each leg of the thermodynamic cycle, which each containing a list of dictionaries containing the replica transition statistics for each repeat of that simulation type.

The replica transition statistics dictionaries contain the following:
  • eigenvalues: The sorted (descending) eigenvalues of the lambda state transition matrix

  • matrix: The transition matrix estimate of a replica switching from state i to state j.

Return type:

dict[str, list[dict[str, npt.NDArray]]]

get_replica_states() dict[str, list[ndarray[tuple[Any, ...], dtype[_ScalarT]]]]#

Get the timeseries of replica states for all simulation legs.

Returns:

replica_states – Dictionary keyed solvent and complex for each leg of the thermodynamic cycle, with lists of replica states timeseries for each repeat of that simulation type.

Return type:

dict[str, list[npt.NDArray]]

equilibration_iterations() dict[str, list[float]]#

Get the number of equilibration iterations for each simulation.

Returns:

equilibration_lengths – Dictionary keyed solvent and complex for each leg of the thermodynamic cycle, with lists containing the number of equilibration iterations for each repeat of that simulation type.

Return type:

dict[str, list[float]]

production_iterations() dict[str, list[float]]#

Get the number of production iterations for each simulation. Returns the number of uncorrelated production samples for each repeat of the calculation.

Returns:

production_lengths – Dictionary keyed solvent and complex for each leg of the thermodynamic cycle, with lists with the number of production iterations for each repeat of that simulation type.

Return type:

dict[str, list[float]]

restraint_geometries() list[BoreschRestraintGeometry]#

Get a list of the restraint geometries for the complex simulations. These define the atoms that have been restrained in the system.

Returns:

geometries – A list of dictionaries containing the details of the atoms in the system that are involved in the restraint.

Return type:

list[dict[str, Any]]

selection_indices() dict[str, list[ndarray[tuple[Any, ...], dtype[_ScalarT]] | None]]#

Get the system selection indices used to write PDB and trajectory files.

Returns:

indices – A dictionary keyed as complex and solvent for each state, each containing a list of NDArrays containing the corresponding full system atom indices for each atom written in the production trajectory files for each replica.

Return type:

dict[str, list[npt.NDArray]]

property data: dict[str, Any]#

Aggregated data contents from multiple ProtocolDAGResult instances.

The structure of this data is specific to the Protocol subclass each ProtocolResult subclass corresponds to.

property n_protocol_dag_results: int#