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 >> |
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 stereopermutation must be checked before trying to embed structures with completely nonsensical constraints. Perhaps restrict A-A ligands with bridge length 4 (chelating atoms included), maybe even up to 6 to cis arrangements. Xantphos (with bridge length 7) is the smallest trans-spanning ligand mentioned in Wikipedia.
Complexity \(O(S!)\) where \(S\) is the size of the involved symmetry