Compile-time shape property calculations. More...
#include "Molassembler/Shapes/Data.h"
#include "Molassembler/Shapes/constexpr/Data.h"
#include "Molassembler/Temple/constexpr/Bitset.h"
#include "Molassembler/Temple/constexpr/DynamicSet.h"
#include "Molassembler/Temple/constexpr/FloatingPointComparison.h"
#include "Molassembler/Temple/constexpr/Numeric.h"
#include "Molassembler/Temple/Cache.h"
Go to the source code of this file.
Data Structures | |
struct | Scine::Molassembler::Shapes::ConstexprProperties::AngleBoundsFunctor< ShapeClass > |
Metafunction calculating the smallest and largest angle that exist in a shape. More... | |
struct | Scine::Molassembler::Shapes::ConstexprProperties::minAngleFunctor< ShapeClass > |
Functor to find out the minimum angle among all shape class types passed as template arguments. More... | |
struct | Scine::Molassembler::Shapes::ConstexprProperties::allRotationPeriodicities< ShapeClass > |
Calculate the multiplicities of all rotations of a shape. More... | |
struct | Scine::Molassembler::Shapes::ConstexprProperties::maxShapeSizeFunctor< ShapeClasses > |
Finds the largest size value of a set of symmetries. More... | |
struct | Scine::Molassembler::Shapes::ConstexprProperties::MappingsReturnType |
Data struct to collect the results of calculating the ideal index mappings between pairs of indices. More... | |
Namespaces | |
Scine | |
Scine::Molassembler | |
Central library namespace. | |
Scine::Molassembler::Shapes | |
Symmetry definitions and properties. | |
Scine::Molassembler::Shapes::ConstexprProperties | |
Compile-time calculation of shape classes' properties. | |
Typedefs | |
template<typename T , size_t size> | |
using | Scine::Molassembler::Shapes::ConstexprProperties::ArrayType = Temple::Array< T, size > |
using | Scine::Molassembler::Shapes::ConstexprProperties::AngleFunctionPtr = double(*)(const unsigned, const unsigned) |
template<typename ShapeClass > | |
using | Scine::Molassembler::Shapes::ConstexprProperties::IndicesList = ArrayType< unsigned, ShapeClass::size > |
using | Scine::Molassembler::Shapes::ConstexprProperties::IndexListStorageType = unsigned |
template<typename ShapeClass > | |
using | Scine::Molassembler::Shapes::ConstexprProperties::RotationsSetType = Temple::DynamicSet< IndicesList< ShapeClass >, maxRotations< ShapeClass >()*2 > |
template<typename ShapeClass > | |
using | Scine::Molassembler::Shapes::ConstexprProperties::ChainStructuresArrayType = Temple::DynamicArray< IndicesList< ShapeClass >, maxRotations< ShapeClass >()*2 > |
template<typename ShapeClass > | |
using | Scine::Molassembler::Shapes::ConstexprProperties::ChainArrayType = Temple::DynamicArray< unsigned, maxRotations< ShapeClass >()*2 > |
Functions | |
template<typename ShapeClass > | |
constexpr double | Scine::Molassembler::Shapes::ConstexprProperties::calculateSmallestAngle () |
Calculates the minimum angle returned in a shape class. More... | |
template<typename ShapeClass > | |
constexpr auto | Scine::Molassembler::Shapes::ConstexprProperties::startingIndexSequence () |
Generate an integer sequence to use with stereopermutations. | |
template<typename ShapeClass , size_t... Indices> | |
constexpr ArrayType< unsigned, ShapeClass::size > | Scine::Molassembler::Shapes::ConstexprProperties::applyRotationImpl (const ArrayType< unsigned, ShapeClass::size > &indices, const unsigned rotationFunctionIndex, std::index_sequence< Indices...>) |
Helper to perform applyRotation in constexpr fashion. | |
template<typename ShapeClass > | |
constexpr ArrayType< unsigned, ShapeClass::size > | Scine::Molassembler::Shapes::ConstexprProperties::applyRotation (const ArrayType< unsigned, ShapeClass::size > &indices, const unsigned rotationFunctionIndex) |
Applies a shape group rotation to an array of indices. More... | |
template<typename ShapeClass , unsigned rotationFunctionIndex> | |
constexpr unsigned | Scine::Molassembler::Shapes::ConstexprProperties::rotationPeriodicityImpl (const ArrayType< unsigned, ShapeClass::size > &runningIndices, const unsigned count) |
Helper to perform rotationPeriodicity in constexpr fashion. | |
template<typename ShapeClass , unsigned rotationFunctionIndex> | |
constexpr unsigned | Scine::Molassembler::Shapes::ConstexprProperties::rotationPeriodicity () |
Determines the multiplicity of a shape group rotation. More... | |
template<typename ShapeClass , size_t... Inds> | |
constexpr ArrayType< unsigned, ShapeClass::rotations.size()> | Scine::Molassembler::Shapes::ConstexprProperties::rotationPeriodicitiesImpl (std::index_sequence< Inds...>) |
Helper function to calculate all rotation periodicities. | |
template<typename ShapeClass > | |
constexpr ArrayType< unsigned, ShapeClass::rotations.size()> | Scine::Molassembler::Shapes::ConstexprProperties::rotationPeriodicities () |
Calculates all multiplicities of a shape group's rotations. | |
template<typename ShapeClass > | |
constexpr Temple::Vector | Scine::Molassembler::Shapes::ConstexprProperties::getCoordinates (const unsigned indexInSymmetry) |
Fetches the coordinates of an index in a shape. More... | |
constexpr double | Scine::Molassembler::Shapes::ConstexprProperties::getTetrahedronVolume (const Temple::Vector &i, const Temple::Vector &j, const Temple::Vector &k, const Temple::Vector &l) |
Calculates the volume of a tetrahedron spanned by four positions. More... | |
template<size_t size> | |
constexpr double | Scine::Molassembler::Shapes::ConstexprProperties::calculateAngularDistortion (const ArrayType< unsigned, size > &indexMapping, const size_t sourceSymmetrySize, const AngleFunctionPtr sourceAngleFunction, const AngleFunctionPtr targetAngleFunction) |
Calculates angular distortion caused by a shape transition mapping. More... | |
template<size_t size> | |
constexpr unsigned | Scine::Molassembler::Shapes::ConstexprProperties::propagateSymmetryPosition (const unsigned symmetryPosition, const ArrayType< unsigned, size > &indexMapping) |
Propagates shape positions trhough an index mapping. More... | |
template<typename ShapeClassFrom , typename ShapeClassTo > | |
constexpr double | Scine::Molassembler::Shapes::ConstexprProperties::calculateChiralDistortion (const ArrayType< unsigned, Temple::Math::max(ShapeClassFrom::size, ShapeClassTo::size) > &indexMapping) |
Calculates the chiral distortion caused by a shape transition. More... | |
template<size_t size> | |
constexpr ArrayType< unsigned, size > | Scine::Molassembler::Shapes::ConstexprProperties::symPosMapping (const ArrayType< unsigned, size > &mapping) |
Transform shape positions through a mapping. More... | |
template<typename ShapeClass > | |
constexpr unsigned | Scine::Molassembler::Shapes::ConstexprProperties::maxRotations () |
template<typename ShapeClass > | |
constexpr auto | Scine::Molassembler::Shapes::ConstexprProperties::generateAllRotations (const IndicesList< ShapeClass > &indices) |
Generates all rotations of a sequence of indices within a shape group. More... | |
template<class ShapeClassFrom , class ShapeClassTo > | |
constexpr auto | Scine::Molassembler::Shapes::ConstexprProperties::symmetryTransitionMappings () |
Calculates ideal index mappings for +1, 0 size transitions. More... | |
template<class ShapeClassFrom , class ShapeClassTo > | |
constexpr auto | Scine::Molassembler::Shapes::ConstexprProperties::ligandLossMappings (const unsigned deletedSymmetryPosition) |
Find index mappings for ligand loss situations. More... | |
template<typename SymmetrySource , typename SymmetryTarget > | |
constexpr std::enable_if_t < (SymmetryTarget::size <=7 &&(SymmetrySource::size==SymmetryTarget::size||SymmetrySource::size+1==SymmetryTarget::size)), Temple::Optional < MappingsReturnType >> | Scine::Molassembler::Shapes::ConstexprProperties::calculateMapping () |
If symmetries are adjacent, calculate their shape transition mapping. | |
template<typename SymmetrySource , typename SymmetryTarget > | |
constexpr std::enable_if_t < !(SymmetryTarget::size <=7 &&(SymmetrySource::size==SymmetryTarget::size||SymmetrySource::size+1==SymmetryTarget::size)), Temple::Optional < MappingsReturnType >> | Scine::Molassembler::Shapes::ConstexprProperties::calculateMapping () |
If symmetries are not adjacent, return a None. | |
template<typename ShapeClass > | |
constexpr unsigned | Scine::Molassembler::Shapes::ConstexprProperties::numUnlinkedStereopermutations (const unsigned nIdenticalLigands) |
Calculate stereopermutations for an unlinked shape. More... | |
template<typename ShapeClass > | |
constexpr bool | Scine::Molassembler::Shapes::ConstexprProperties::hasMultipleUnlinkedStereopermutations (const unsigned nIdenticalLigands) |
Calculates whether a shape has multiple stereopermutations. More... | |
Variables | |
constexpr double | Scine::Molassembler::Shapes::ConstexprProperties::floatingPointEqualityTolerance = 1e-4 |
constexpr unsigned | Scine::Molassembler::Shapes::ConstexprProperties::maxShapeSize |
The largest shape size defined in the library. More... | |
Compile-time shape property calculations.