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
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)
Finally, to add this observable to the phase, implement a “get_{method name}” method to the subclass of
YankPhaseAnalyzer
. AnyMultiPhaseAnalyzer
composed of this phase will automatically have the “get_{method name}” if all other phases in theMultiPhaseAnalyzer
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.
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