Molassembler  3.0.0
Molecule graph and conformer library
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Scine::Molassembler::Stereopermutations Namespace Reference

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< StereopermutationgenerateAllRotations (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)
 

Detailed Description

Data classes for permutational spatial arrangement modeling.

Function Documentation

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

Returns
boost::none If the shape does not generate enantiomers
true If the shape has enantiomers, and this is the enantiomeric stereopermutation to other
false If the shape has enantiomers, and this is not the enantiomeric to 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°).

Note
Gives NO guarantees as to satisfiability (if stereopermutation can be fulfilled with real ligands)

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