pyretis.orderparameter package¶
Definition of order parameters.
This package defines order parameters for use with PyRETIS.
Package structure¶
Modules¶
- orderparameter.py (
pyretis.orderparameter.orderparameter) - Defines the base class for order parameters and some simple example order parameters.
- orderangle.py (
pyretis.orderparameter.orderangle) - Defines a class for an angle order parameter.
- orderdihedral.py (
pyretis.orderparameter.orderdihedral) - Defines a class for a dihedral angle order parameter.
Important methods defined here¶
- order_factory (
order_factory()) - A method to create order parameters from settings.
-
pyretis.orderparameter.order_factory(settings)[source]¶ Create order parameters according to the given settings.
This function is included as a convenient way of setting up and selecting the order parameter.
Parameters: settings (dict) – This defines how we set up and select the order parameter. Returns: out (object like OrderParameter) – An object representing the order parameter.
List of submodules¶
pyretis.orderparameter.orderangle module¶
This file contains classes to represent angle order parameters.
-
class
pyretis.orderparameter.orderangle.Angle(index, periodic=False)[source]¶ Bases:
OrderParameterAn angle order parameter.
This class defines an order parameter which is an angle ABC for 3 particles A, B and C. The angle is defined as the angle given by the two vectors BA and BC.
-
index¶ These are the indices of atoms to be used for the angle, i.e. system.particles.pos[index] will be used.
Type: list of integers
-
periodic¶ This determines if periodic boundaries should be applied to the positions/distances.
Type: boolean
-
pyretis.orderparameter.orderdihedral module¶
Definition of a dihedral order parameter.
-
class
pyretis.orderparameter.orderdihedral.Dihedral(index, periodic=False)[source]¶ Bases:
OrderParameterCalculates the dihedral angle defined by 4 atoms.
The angle definition is given by Blondel and Karplus, J. Comput. Chem., vol. 17, 1996, pp. 1132–1141. If we label the 4 atoms A, B, C and D, then the angle is given by the vectors u = A - B, v = B - C, w = D - C
-
index¶ These are the indices for the atoms to use in the definition of the dihedral angle.
Type: list/tuple of integers
-
periodic¶ This determines if periodic boundaries should be applied to the position or not.
Type: boolean
-
__init__(index, periodic=False)[source]¶ Initialise the order parameter.
Parameters: - index (list/tuple of integers) – This list gives the indices for the atoms to use in the definition of the dihedral angle.
- periodic (boolean, optional) – This determines if periodic boundary conditions should be applied to the distance vectors.
-
pyretis.orderparameter.orderparameter module¶
This file contains classes to represent order parameters.
The order parameters are assumed to all be completely determined by the system properties and they will all return at least one value - the order parameter itself. The order parameters can also return several order parameters which can be used for further analysis.
Important classes defined here¶
- OrderParameter (
OrderParameter) - Base class for the order parameters.
- Position (
Position) - An order parameter equal to the position of a particle.
- Velocity (
Velocity) - An order parameter equal to the velocity of a particle.
- Distance (
Distance) - A class for a particle-particle distance order parameter.
- Distancevel (
Distancevel) - A class for the rate of change in a particle-particle distance order parameter.
- CompositeOrderParameter (
CompositeOrderParameter) - A class for an order parameter which is made up of several order
parameters, i.e. of several objects like
OrderParameter. - PositionVelocity (
PositionVelocity) - An order parameter which is equal to the composition of
PositionandVelocity. - DistanceVelocity (
DistanceVelocity) - An order parameter which is equal to the composition of
DistanceandDistancevel.
-
class
pyretis.orderparameter.orderparameter.CompositeOrderParameter(order_parameters=None)[source]¶ Bases:
OrderParameterA composite order parameter.
This class represents a composite order parameter. It does not actually calculate order parameters itself, but it has references to several objects like
OrderParameterwhich it can use to obtain the order parameters. Note that the first one of these objects will be interpreted as the main progress coordinate in path sampling simulations.-
extra¶ This is a list of order parameters to calculate.
Type: list of objects like OrderParameter
-
__init__(order_parameters=None)[source]¶ Set up the composite order parameter.
Parameters: order_parameters (list of objects like OrderParameter) – A list of order parameters we can add.
-
add_orderparameter(order_function)[source]¶ Add an extra order parameter to calculate.
Parameters: order_function (object like OrderParameter) – An object we can use to calculate the order parameter.Returns: out (boolean) – Return True if we added the function, False otherwise.
-
calculate(system)[source]¶ Calculate the main order parameter and return it.
This is defined as a method just to ensure that at least this method will be defined in the different order parameters.
Parameters: system (object like System) – This object contains the information needed to calculate the order parameter.Returns: out (list of floats) – The order parameter(s). The first order parameter returned is assumed to be the progress coordinate for path sampling simulations.
-
property
index¶ Get only the index that is tracked by the orderparameter.
-
-
class
pyretis.orderparameter.orderparameter.Distance(index, periodic=True)[source]¶ Bases:
OrderParameterA distance order parameter.
This class defines a very simple order parameter which is just the scalar distance between two particles.
-
index¶ These are the indices used for the two particles. system.particles.pos[index[0]] and system.particles.pos[index[1]] will be used.
Type: tuple of integers
-
periodic¶ This determines if periodic boundaries should be applied to the distance or not.
Type: boolean
-
-
class
pyretis.orderparameter.orderparameter.DistanceVelocity(index, periodic=True)[source]¶ Bases:
CompositeOrderParameterAn order parameter equal to a distance and its rate of change.
-
__init__(index, periodic=True)[source]¶ Initialise the order parameter.
Parameters: - index (tuple of integers) – These are the indices used for the two particles. system.particles.pos[index[0]] and system.particles.pos[index[1]] will be used.
- periodic (boolean, optional) – This determines if periodic boundary conditions should be applied to the position.
-
-
class
pyretis.orderparameter.orderparameter.Distancevel(index, periodic=True)[source]¶ Bases:
OrderParameterA rate of change of the distance order parameter.
This class defines a very simple order parameter which is just the time derivative of the scalar distance between two particles.
-
index¶ These are the indices used for the two particles. system.particles.pos[index[0]] and system.particles.pos[index[1]] will be used.
Type: tuple of integers
-
periodic¶ This determines if periodic boundaries should be applied to the distance or not.
Type: boolean
-
__init__(index, periodic=True)[source]¶ Initialise the order parameter.
Parameters: - index (tuple of ints) – This is the indices of the atom we will use the position of.
- periodic (boolean, optional) – This determines if periodic boundary conditions should be applied to the position.
-
calculate(system)[source]¶ Calculate the order parameter.
Here, the order parameter is just the distance between two particles.
Parameters: system (object like System) – The object containing the positions and box used for the calculation.Returns: out (list of floats) – The rate-of-change of the distance order parameter.
-
-
class
pyretis.orderparameter.orderparameter.OrderParameter(description='Generic order parameter', velocity=False)[source]¶ Bases:
objectBase class for order parameters.
This class represents an order parameter and other collective variables. The order parameter is assumed to be a function that can uniquely be determined by the system object and its attributes.
-
description¶ This is a short description of the order parameter.
Type: string
-
velocity_dependent¶ This flag indicates whether or not the order parameter depends on the velocity direction. If so, we need to recalculate the order parameter when reversing trajectories.
Type: boolean
-
__init__(description='Generic order parameter', velocity=False)[source]¶ Initialise the OrderParameter object.
Parameters: description (string) – Short description of the order parameter.
-
abstract
calculate(system)[source]¶ Calculate the order parameter (or collective variable).
The same interface is used both for the main order parameter and for additional collective variables: each call returns the per-frame value(s) of the quantity. Implementations may return a single scalar, a
numpy.ndarray, a tuple, or a list. When loaded throughpyretis.setup.common.create_orderparameter()or wrapped viawrap_orderparameter(), the return value is normalised to a plain Python list of scalars bynormalize_order_output(). Downstream code therefore always seessystem.orderandphasepoint.orderas a list whose first element is the progress coordinate used by path-sampling moves.Parameters: system (object like System) – This object contains the information needed to calculate the order parameter.Returns: out (scalar, list, tuple, or numpy.ndarray) – The order-parameter (or collective-variable) value(s). After normalisation the first element is used as the progress coordinate in path-sampling simulations and any additional elements are stored alongside it.
-
-
class
pyretis.orderparameter.orderparameter.Permeability(index, dim='z', offset=0.0, mirror_pos=0.0, relative=True)[source]¶ Bases:
PositionA positional order parameter for calculating parmeability.
This class defines a very simple order parameter which is just the position of a given particle, but it allows for the mirror move.
-
index¶ This is the index of the atom which will be used, i.e.
system.particles.pos[index]will be used.Type: integer
-
dim¶ This is the dimension of the coordinate to user: 0, 1 or 2 for ‘x’, ‘y’ or ‘z’.
Type: integer
-
periodic¶ This determines if periodic boundaries should be applied to the position or not.
Type: boolean
-
offset¶ The offset to apply before returning, l(x) = pos(x+offset). This allows for effectively moving the periodic boundary position. Should be defined in the same space as this order parameter (relative or not).
Type: float
-
mirror_pos¶ The position of the mirror plane around which we mirror when the mirror function is called. Should be defined in the same space as this order parameter (relative or not).
Type: float
-
relative¶ If we should map the position to be relative to the box-vector. Defaults to True as that is the only correct option for NPT. For NVT sampling it can be set to False.
Type: boolean
-
__init__(index, dim='z', offset=0.0, mirror_pos=0.0, relative=True)[source]¶ Initialise the order parameter.
Parameters: - index (int) – This is the index of the atom we will use the position of.
- dim (string) – This select what dimension we should consider, it should equal ‘x’, ‘y’ or ‘z’.
- offset (float,) – The offset to add to the position, used to change the effective location of the periodic boundary.
- mirror_pos (float) – The value of the position to mirror around. Allowing for the mirror move.
- relative (boolean) – This determines if the position is returned as a relative value to the box size.
-
calculate(system)[source]¶ Calculate the compute_s order parameter and alters it.
Parameters: system (object like System) – The object containing the positions.Returns: out (list of floats) – The position order parameter.
-
-
class
pyretis.orderparameter.orderparameter.PermeabilityMinusOffset(index, dim='z', offset=0.0, mirror_pos=0.0, relative=True)[source]¶ Bases:
PermeabilityA positional order parameter for calculating parmeability - offset.
-
class
pyretis.orderparameter.orderparameter.Position(index, dim='x', periodic=False, description=None)[source]¶ Bases:
OrderParameterA positional order parameter.
This class defines a very simple order parameter which is just the position of a given particle.
-
index¶ This is the index of the atom which will be used, i.e.
system.particles.pos[index]will be used.Type: integer
-
dim¶ This is the dimension of the coordinate to use. 0, 1 or 2 for ‘x’, ‘y’ or ‘z’.
Type: integer
-
periodic¶ This determines if periodic boundaries should be applied to the position or not.
Type: boolean
-
__init__(index, dim='x', periodic=False, description=None)[source]¶ Initialise the order parameter.
Parameters: - index (int) – This is the index of the atom we will use the position of.
- dim (string) – This select what dimension we should consider, it should equal ‘x’, ‘y’ or ‘z’.
- periodic (boolean, optional) – This determines if periodic boundary conditions should be applied to the position.
-
-
class
pyretis.orderparameter.orderparameter.PositionVelocity(index, dim='x', periodic=False)[source]¶ Bases:
CompositeOrderParameterAn order parameter equal to the position & velocity of a given atom.
-
__init__(index, dim='x', periodic=False)[source]¶ Initialise the order parameter.
Parameters: - index (int) – This is the index of the atom we will use the position and velocity of.
- dim (string) – This select what dimension we should consider, it should equal ‘x’, ‘y’ or ‘z’.
- periodic (boolean, optional) – This determines if periodic boundary conditions should be applied to the position.
-
-
class
pyretis.orderparameter.orderparameter.Velocity(index, dim='x')[source]¶ Bases:
OrderParameterInitialise the order parameter.
This class defines a very simple order parameter which is just the velocity of a given particle.
-
index¶ This is the index of the atom which will be used, i.e.
system.particles.vel[index]will be used.Type: integer
-
dim¶ This is the dimension of the coordinate to use. 0, 1 or 2 for ‘x’, ‘y’ or ‘z’.
Type: integer
-
-
pyretis.orderparameter.orderparameter._verify_pair(index)[source]¶ Check that the given index contains a pair.
-
pyretis.orderparameter.orderparameter.expand_order_names(name, count, default_prefix='op', start_index=1)[source]¶ Expand an order-parameter
nameintocountper-element labels.The naming convention is shared by the main order parameter and any collective variable: each
calculate()returns a list withcountentries and this function produces one label per entry.Parameters: - name (str, list/tuple of str, or None) – The user-provided name. When
Nonethe labels are always"<default_prefix>_<i>". Whennameis a string andcount > 1the labels are"<name>_1", "<name>_2", ...; whencount == 1the barenameis used. Whennameis a list or tuple its length must equalcount. - count (int) – Number of labels to produce (the number of values returned by
calculate()for this order parameter or collective variable). - default_prefix (str, optional) – Prefix used to build labels when
nameisNone. Use"op"for the main order parameter and"cv"for any collective variable. - start_index (int, optional) – Starting index used when generating
"<prefix>_<i>"labels. Useful for combining several blocks into one continuous index space.
Returns: out (list of str) – A list of length
count.Raises: ValueError – If
countis not a positive integer, ifnameis a sequence whose length differs fromcount, or ifnameis of an unsupported type.- name (str, list/tuple of str, or None) – The user-provided name. When
-
pyretis.orderparameter.orderparameter.normalize_order_output(order, klass_name='unknown')[source]¶ Normalise the return value of
calculate()to a flat list.This function accepts the raw return value from any
calculateimplementation — a scalar, a 0-D or 1-Dnumpy.ndarray, a list, or a tuple — and returns a plain Python list whose elements are all plain Python scalars (no nested lists or arrays).Parameters: - order (scalar, list, tuple, or numpy.ndarray) – The raw return value from a
calculatemethod. - klass_name (str, optional) – Name of the order-parameter class; used only in error messages.
Returns: out (list of floats) – A flat list of scalar values.
Raises: ValueError – If order is a >1-D array or contains nested sequences.
- order (scalar, list, tuple, or numpy.ndarray) – The raw return value from a
-
pyretis.orderparameter.orderparameter.wrap_orderparameter(instance)[source]¶ Wrap an OP instance so
calculate()always returns a list.The wrapper is idempotent: calling this function twice on the same instance is safe and has no additional effect.
Parameters: instance (object with a calculatemethod) – Any order-parameter object (internal or external).Returns: instance (same object, mutated in place.)