openpathsampling.pathmover.PathMover

class openpathsampling.pathmover.PathMover[source]

A PathMover is the description of a move in replica space.

Notes

A pathmover takes a SampleSet() and returns MoveChange() that is used to change the old SampleSet() to the new one.

SampleSet1 + MoveChange1 => SampleSet2

A MoveChange is effectively a list of Samples. The change acts upon a SampleSet by replacing existing Samples in the same ensemble sequentially.

SampleSet({samp1(ens1), samp2(ens2), samp3(ens3)}) +

MoveChange([samp4(ens2)]) => SampleSet({samp1(ens1), samp4(ens2), samp3(ens3)})

Note, that a SampleSet is an unordered list (or a set). Hence the ordering in the example is arbitrary.

Potential future change: engine is not needed for all PathMovers (replica exchange, ensemble hopping, path reversal, and moves which combine these [state swap] have no need for the engine). Maybe that should be moved into only the ensembles that need it? ~~~DWHS

Also, I agree with the separating trial and acceptance. We might choose to use a different acceptance criterion than Metropolis. For example, the “waste recycling” approach recently re-discovered by Frenkel (see also work by Athenes, Jourdain, and old work by Kalos) might be interesting. I think the best way to do this is to keep the acceptance in the PathMover, but have it be a separate class ~~~DWHS

__init__()[source]

Methods

__init__()

args()

Return a list of args of the __init__ function of a class

base()

Return the most parent class actually derived from StorableObject

count_weaks()

Return number of objects subclassed from StorableObject still in memory

depth_post_order(fnc[, level])

Traverse the tree in post-order applying a function with depth

depth_pre_order(fnc[, level, only_canonical])

Traverse the tree of node in pre-order applying a function

descendants()

Return a list of all subclassed objects

fix_name()

Set the objects name to be immutable.

from_dict(dct)

Reconstruct an object from a dictionary representaiton

get_uuid()

idx(store)

Return the index which is used for the object in the given store.

key(change)

keylist()

Return a list of key : subtree tuples

legal_sample_set(sample_set[, ensembles, …])

This returns all the samples from sample_set which are in both self.replicas and the parameter ensembles.

map_post_order(fnc, **kwargs)

Traverse the tree in post-order applying a function

map_pre_order(fnc, **kwargs)

Traverse the tree in pre-order applying a function

map_tree(fnc)

Apply a function to each node and return a nested tree of results

move(sample_set)

Run the generation starting with the initial sample_set specified.

move_replica_state(replica_states)

named(name)

Name an unnamed object.

objects()

Returns a dictionary of all storable objects

reverse_uuid()

ruuid(uid)

select_sample(sample_set[, ensembles, replicas])

Returns one of the legal samples given self.replica and the ensemble set in ensembles.

set_observer(active)

(De-)Activate observing creation of storable objects

sub_replica_state(replica_states)

Return set of replica states that a submover might be called with

to_dict()

Convert object into a dictionary representation

tree()

Return the object as a tree structure of nested lists of nodes

Attributes

ACTIVE_LONG

CREATION_COUNT

INSTANCE_UUID

base_cls

Return the base class

base_cls_name

Return the name of the base class

cls

Return the class name as a string

default_name

Return the default name.

ensemble_signature

ensemble_signature_set

identifier

A unique identifier to build the unique key for a position in a tree

in_out

List the input -> output relation for ensembles

input_ensembles

Return a list of possible used ensembles for this mover

is_canonical

is_ensemble_change_mover

is_named

True if this object has a custom name.

name

Return the current name of the object.

observe_objects

output_ensembles

Return a list of possible returned ensembles for this mover

submovers

Returns a list of submovers