Classes and methods to compute hashes of atom environments. More...
Data Structures | |
struct | BondInformation |
Information pertinent to a singular bond hash. More... | |
struct | LookupFunctor |
A functor for getting an atom's hash from a captured list of hashes. More... | |
Typedefs | |
using | WideHashType = boost::multiprecision::uint128_t |
using | HashType = std::uint64_t |
Functions | |
WideHashType | hash (AtomEnvironmentComponents bitmask, Utils::ElementType elementType, const std::vector< BondInformation > &sortedBonds, const boost::optional< Shapes::Shape > &shapeOptional, const boost::optional< unsigned > &assignedOptional) |
Convolutes the atom's element type and bonds into an unsigned integer. More... | |
std::vector< BondInformation > | gatherBonds (const PrivateGraph &inner, const StereopermutatorList &stereopermutators, AtomEnvironmentComponents componentsBitmask, AtomIndex i) |
Collects bond information for hash() input. More... | |
WideHashType | atomEnvironment (const PrivateGraph &inner, boost::optional< const StereopermutatorList & > stereopermutators, AtomEnvironmentComponents bitmask, AtomIndex i) |
Calculate the hash for a particular atom index. More... | |
std::vector< WideHashType > | generate (const PrivateGraph &inner, boost::optional< const StereopermutatorList & > stereopermutatorsOption, AtomEnvironmentComponents bitmask) |
Generates the hashes for every atom in a molecule's components. More... | |
bool | identityCompare (const PrivateGraph &aGraph, const StereopermutatorList &aStereopermutators, const PrivateGraph &bGraph, const StereopermutatorList &bStereopermutators, AtomEnvironmentComponents componentBitmask) |
Compare two molecules with an identity index mapping. More... | |
std::tuple< std::vector < HashType >, std::vector < HashType >, HashType > | narrow (const std::vector< WideHashType > &a, const std::vector< WideHashType > &b) |
Re-enumerates the hashes in two generated hash lists. More... | |
std::pair< std::vector < HashType >, std::vector < HashType >> | generate (const PrivateGraph &aGraph, const StereopermutatorList &aStereopermutators, const PrivateGraph &bGraph, const StereopermutatorList &bStereopermutators, AtomEnvironmentComponents bitmask) |
Generates hashes for two molecules' components. More... | |
Classes and methods to compute hashes of atom environments.
WideHashType Scine::Molassembler::Hashes::atomEnvironment | ( | const PrivateGraph & | inner, |
boost::optional< const StereopermutatorList & > | stereopermutators, | ||
AtomEnvironmentComponents | bitmask, | ||
AtomIndex | i | ||
) |
Calculate the hash for a particular atom index.
Complexity \(\Theta(1)\)
std::vector<BondInformation> Scine::Molassembler::Hashes::gatherBonds | ( | const PrivateGraph & | inner, |
const StereopermutatorList & | stereopermutators, | ||
AtomEnvironmentComponents | componentsBitmask, | ||
AtomIndex | i | ||
) |
Collects bond information for hash() input.
Complexity \(\Theta(1)\) since the out-degree of atoms is considered a fixed small number because molecules are sparse.
std::vector<WideHashType> Scine::Molassembler::Hashes::generate | ( | const PrivateGraph & | inner, |
boost::optional< const StereopermutatorList & > | stereopermutatorsOption, | ||
AtomEnvironmentComponents | bitmask | ||
) |
Generates the hashes for every atom in a molecule's components.
Complexity \(\Theta(N)\)
std::pair< std::vector<HashType>, std::vector<HashType>> Scine::Molassembler::Hashes::generate | ( | const PrivateGraph & | aGraph, |
const StereopermutatorList & | aStereopermutators, | ||
const PrivateGraph & | bGraph, | ||
const StereopermutatorList & | bStereopermutators, | ||
AtomEnvironmentComponents | bitmask | ||
) |
Generates hashes for two molecules' components.
Generate hashes for two molecules. Basis for comparing vertices in an isomorphism algorithm.
Complexity \(\Theta(N)\)
WideHashType Scine::Molassembler::Hashes::hash | ( | AtomEnvironmentComponents | bitmask, |
Utils::ElementType | elementType, | ||
const std::vector< BondInformation > & | sortedBonds, | ||
const boost::optional< Shapes::Shape > & | shapeOptional, | ||
const boost::optional< unsigned > & | assignedOptional | ||
) |
Convolutes the atom's element type and bonds into an unsigned integer.
At current, this is a bijective mapping and has zero probability of collisions.
Complexity \(\Theta(1)\)
bool Scine::Molassembler::Hashes::identityCompare | ( | const PrivateGraph & | aGraph, |
const StereopermutatorList & | aStereopermutators, | ||
const PrivateGraph & | bGraph, | ||
const StereopermutatorList & | bStereopermutators, | ||
AtomEnvironmentComponents | componentBitmask | ||
) |
Compare two molecules with an identity index mapping.
Complexity \(O(N)\)
std::tuple< std::vector<HashType>, std::vector<HashType>, HashType> Scine::Molassembler::Hashes::narrow | ( | const std::vector< WideHashType > & | a, |
const std::vector< WideHashType > & | b | ||
) |
Re-enumerates the hashes in two generated hash lists.
Although the hash space requires a wide integer type, the number of different atom environments in molecules will not require a wide integer type. We can therefore remap the wide hashes to an enumerated smaller integer type.
Complexity \(\Theta(N)\)