8 #ifndef INCLUDE_MOLASSEMBLER_SHAPES_CONTINUOUS_MEASURES_H
9 #define INCLUDE_MOLASSEMBLER_SHAPES_CONTINUOUS_MEASURES_H
15 namespace Molassembler {
19 namespace Continuous {
21 using PositionCollection = Eigen::Matrix<double, 3, Eigen::Dynamic>;
28 MASM_EXPORT PositionCollection
normalize(
const PositionCollection& positions);
46 const PositionCollection& normalizedPositions,
59 const PositionCollection& normalizedPositions,
71 MASM_EXPORT
double Cinf(
72 const PositionCollection& normalizedPositions,
73 const Eigen::Vector3d& axis
82 MASM_EXPORT std::pair<double, Elements::Rotation>
element(
83 const PositionCollection& normalizedPositions,
91 MASM_EXPORT std::pair<double, Elements::Reflection>
element(
92 const PositionCollection& normalizedPositions,
101 const PositionCollection& normalizedPositions,
107 MASM_EXPORT
double Cinf(
const PositionCollection& normalizedPositions);
123 const PositionCollection& normalizedPositions,
148 const PositionCollection& normalizedPositions,
174 const PositionCollection& normalizedPositions,
180 const PositionCollection& normalizedPositions,
215 const PositionCollection& normalizedPositions,
221 const PositionCollection& normalizedPositions,
234 const PositionCollection& normalizedPositions,
240 const PositionCollection& normalizedPositions,
276 const PositionCollection& positions,
ShapeResult shapeHeuristics(const PositionCollection &normalizedPositions, Shape shape)
Calculates the continuous shape measure of a set of coordinates with respect to a particular shape us...
double minimalDistortionPathDeviation(const PositionCollection &positions, Shape a, Shape b, const double minimumDistortionAngle)
Calculates deviation of positions from minimal distortion path between two shapes.
double element(const PositionCollection &normalizedPositions, const Elements::Rotation &rotation)
Returns the CSM for a Rotation symmetry element along the rotation axis without optimizing the coordi...
ShapeResult shape(const PositionCollection &normalizedPositions, Shape shape)
Forwarding function to calculate the continuous shape measure.
ShapeResult shapeFaithfulPaperImplementation(const PositionCollection &normalizedPositions, Shape shape)
Faithful implementation of the continuous shape measure calculation algorithm from the paper...
PointGroup
Point groups.
Definition: PointGroups.h:20
Centralizes basic shape data in runtime types.
boost::optional< double > probabilityRandomCloud(double measure, Shape shape)
Probability that shape measure in set of measures for random point clouds.
double minimumDistortionAngle(Shape a, Shape b)
Calculates minimum distortion angle in radians for shapes A and B.
double Cinf(const PositionCollection &normalizedPositions, const Eigen::Vector3d &axis)
Returns the CSM for a fixed-axis infinite order rotation axis.
ShapeResult shapeAlternateImplementation(const PositionCollection &normalizedPositions, Shape shape)
Slightly optimized implmentation of the continuous shape measure calculation algorithm.
std::vector< Vertex > mapping
Lowest value mapping from position indices to shape indices.
Definition: ContinuousMeasures.h:130
i symmetry element
Definition: PointGroupElements.h:54
double measure
Continuous shape measure value.
Definition: ContinuousMeasures.h:132
ShapeResult shapeAlternateImplementationCentroidLast(const PositionCollection &normalizedPositions, Shape shape)
Like shapeAlternateImplementation, but the centroid is the last position.
Abstraction of Cn and Sn symmetry elements.
Definition: PointGroupElements.h:63
double Cinf(const PositionCollection &normalizedPositions)
Calculates the continuous symmetry measure for an infinite order rotation axis.
Shape
Enumeration of all contained symmetry names.
Definition: Shapes.h:28
Point group symmetry elements.
ShapeResult shapeHeuristicsCentroidLast(const PositionCollection &normalizedPositions, Shape shape)
Same as shapeHeuristics(), except with set centroid mapping, so faster.
std::array< double, 4 > randomCloudDistributionParameters(Shape shape, unsigned N, unsigned seed)
Beta distribution parameters of shape measures of random point clouds.
PositionCollection normalize(const PositionCollection &positions)
Normalize positions for continuous symmetry measure analysis.
Result of a continuous shape measure calculation.
Definition: ContinuousMeasures.h:128
double pointGroup(const PositionCollection &normalizedPositions, PointGroup pointGroup)
Calculates the continuous symmetry measure for a set of particles and a particular point group...
ShapeResult shapeCentroidLast(const PositionCollection &normalizedPositions, const Shape shape)
Same as shape(), except with set centroid mapping.
Reflection by a plane symmetry element.
Definition: PointGroupElements.h:99
std::pair< double, Elements::Rotation > element(const PositionCollection &normalizedPositions, Elements::Rotation rotation)
Optimizes the axis of a rotational symmetry element and calculates the continuous symmetry measure...