Data classes for permutational spatial arrangement modeling. More...
Data Structures | |
class | Composite |
Represents the composite of two shapes joined by a bond at arbitrary shape vertices. More... | |
struct | Uniques |
class | RotationEnumerator |
Enumerate rotations of stereopermutations in shapes. More... | |
class | Stereopermutation |
Represent abstract stereopermutation around atom center. More... | |
Typedefs | |
using | UnorderedStereopermutations = std::unordered_set< Stereopermutation, boost::hash< Stereopermutation >> |
using | Rank = Temple::StrongIndex< rank_tag, unsigned > |
Ranked index of a site. | |
Functions | |
std::vector< Stereopermutation > | generateAllRotations (Stereopermutation s, Shapes::Shape shape) |
Generate all superimposable rotations of a stereopermutation. More... | |
bool | rotationallySuperimposable (Stereopermutation a, const Stereopermutation &b, Shapes::Shape shape) |
whether this Stereopermutation is rotationally superimposable with another. More... | |
boost::optional< bool > | enantiomer (const Stereopermutation &a, const Stereopermutation &b, Shapes::Shape shape) |
Checks whether a stereopermutation is a mirror image of another within a particular shape. More... | |
bool | hasTransArrangedLinks (const Stereopermutation &s, Shapes::Shape shape) |
Whether a stereopermutation has trans arranged linked substituents. More... | |
Uniques | uniques (const Stereopermutation &base, Shapes::Shape shape, bool removeTransSpanningGroups=false) |
Generate the set of rotationally unique stereopermutations for a given stereopermutation. More... | |
PURITY_WEAK std::size_t | hash_value (const Stereopermutation &assignment) |
Data classes for permutational spatial arrangement modeling.
boost::optional<bool> Scine::Molassembler::Stereopermutations::enantiomer | ( | const Stereopermutation & | a, |
const Stereopermutation & | b, | ||
Shapes::Shape | shape | ||
) |
Checks whether a stereopermutation is a mirror image of another within a particular shape.
Complexity As generateAllRotations
other
other
std::vector<Stereopermutation> Scine::Molassembler::Stereopermutations::generateAllRotations | ( | Stereopermutation | s, |
Shapes::Shape | shape | ||
) |
Generate all superimposable rotations of a stereopermutation.
Generates a set of all rotational equivalents of this Stereopermutation as defined by its shape template parameter.
Complexity \(O(\prod_i^Rm_i)\) where \(R\) is the set of rotations and \(m_i\) is the multiplicity of rotation \(i\)
bool Scine::Molassembler::Stereopermutations::hasTransArrangedLinks | ( | const Stereopermutation & | s, |
Shapes::Shape | shape | ||
) |
Whether a stereopermutation has trans arranged linked substituents.
Complexity \(O(L)\)
bool Scine::Molassembler::Stereopermutations::rotationallySuperimposable | ( | Stereopermutation | a, |
const Stereopermutation & | b, | ||
Shapes::Shape | shape | ||
) |
whether this Stereopermutation is rotationally superimposable with another.
Complexity As generateAllRotations
Uniques Scine::Molassembler::Stereopermutations::uniques | ( | const Stereopermutation & | base, |
Shapes::Shape | shape, | ||
bool | removeTransSpanningGroups = false |
||
) |
Generate the set of rotationally unique stereopermutations for a given stereopermutation.
By default does not remove trans-spanning groups (where a linked group's directly bonded atoms span an angle of 180°).
E.g. M (A-A)_3 generates a trans-trans-trans stereopermutation, which is extremely hard to find actual ligands for that work.
The satisfiability of a stereopermutation must be checked before trying to embed structures with completely nonsensical constraints.
Complexity \(O(S!)\) where \(S\) is the size of the involved symmetry