openmmtools.multistate.multistateanalyzer.ObservablesRegistry

class openmmtools.multistate.multistateanalyzer.ObservablesRegistry[source]

Registry of computable observables.

This is a class accessed by the PhaseAnalyzer objects to check which observables can be computed, and then provide a regular categorization of them.

This registry is a required linked component of any PhaseAnalyzer and especially of the MultiPhaseAnalyzer. This is not an internal class to the PhaseAnalyzer however because it can be instanced, extended, and customized as part of the API for this module.

To define your own methods: 1) Choose a unique observable name. 2) Categorize the observable in one of the following ways by adding to the list in the “observables_X” method:

2a) “defined_by_phase”:

Depends on the Phase as a whole (state independent)

2b) “defined_by_single_state”:

Computed entirely from one state, e.g. Radius of Gyration

2c) “defined_by_two_states”:

Property is relative to some reference state, such as Free Energy Difference

  1. Optionally categorize the error category calculation in the “observables_with_error_adding_Y” methods If not placed in an error category, the observable will be assumed not to carry error Examples: A, B, C are the observable in 3 phases, eA, eB, eC are the error of the observable in each phase

    3a) “linear”: Error between phases adds linearly.

    If C = A + B, eC = eA + eB

    3b) “quadrature”: Error between phases adds in the square.

    If C = A + B, eC = sqrt(eA^2 + eB^2)

  2. Finally, to add this observable to the phase, implement a “get_{method name}” method to the subclass of YankPhaseAnalyzer. Any MultiPhaseAnalyzer composed of this phase will automatically have the “get_{method name}” if all other phases in the MultiPhaseAnalyzer have the same method.

Attributes:
observables

Set of observables which are derived from the subsets below

observables_defined_by_phase

Observables which are defined by the phase as a whole, and not defined by any 1 or more states e.g.

observables_defined_by_single_state

Defined observables which are fully defined by a single state, and not by multiple states such as differences

observables_defined_by_two_states

Observables that require an i and a j state to define the observable accurately between phases

observables_with_error

Determine which observables have error by inspecting the the error subsets

observables_with_error_adding_linear

Observable C = A + B, Error eC = eA + eB

observables_with_error_adding_quadrature

Observable C = A + B, Error eC = sqrt(eA**2 + eB**2)

observables_without_error

Methods

register_one_state_observable(name[, ...])

Register a new one state observable, or re-register an existing one.

register_phase_observable(name[, ...])

Register a new observable defined by phaee, or re-register an existing one.

register_two_state_observable(name[, ...])

Register a new two state observable, or re-register an existing one.

__init__()[source]

Register Defaults

Methods

__init__()

Register Defaults

register_one_state_observable(name[, ...])

Register a new one state observable, or re-register an existing one.

register_phase_observable(name[, ...])

Register a new observable defined by phaee, or re-register an existing one.

register_two_state_observable(name[, ...])

Register a new two state observable, or re-register an existing one.

Attributes

observables

Set of observables which are derived from the subsets below

observables_defined_by_phase

Observables which are defined by the phase as a whole, and not defined by any 1 or more states e.g. Standard State Correction.

observables_defined_by_single_state

Defined observables which are fully defined by a single state, and not by multiple states such as differences

observables_defined_by_two_states

Observables that require an i and a j state to define the observable accurately between phases

observables_with_error

Determine which observables have error by inspecting the the error subsets

observables_with_error_adding_linear

Observable C = A + B, Error eC = eA + eB

observables_with_error_adding_quadrature

Observable C = A + B, Error eC = sqrt(eA**2 + eB**2)

observables_without_error