12 #ifndef RD_FINGERPRINTGEN_H_2018_05 13 #define RD_FINGERPRINTGEN_H_2018_05 28 std::map<std::uint32_t, std::vector<std::pair<std::uint32_t, std::uint32_t>>>
33 std::pair<std::vector<std::vector<std::uint32_t>>,
34 std::map<std::uint32_t, std::vector<std::vector<int>>>> *
bitInfo;
51 template <
typename OutputType>
53 :
private boost::noncopyable {
56 const std::vector<std::uint32_t> countBounds,
57 const std::uint32_t fpSize);
67 virtual OutputType getResultSize()
const = 0;
75 virtual std::string infoString()
const = 0;
83 std::string commonArgumentsString()
const;
93 template <
typename OutputType>
108 const std::vector<std::uint32_t> *atomInvariants,
109 const std::vector<std::uint32_t> *bondInvariants,
111 const bool hashResults =
false)
const = 0;
120 template <
typename OutputType>
122 :
private boost::noncopyable {
151 virtual std::vector<AtomEnvironment<OutputType> *> getEnvironments(
153 const std::vector<std::uint32_t> *fromAtoms =
nullptr,
154 const std::vector<std::uint32_t> *ignoreAtoms =
nullptr,
156 const std::vector<std::uint32_t> *atomInvariants =
nullptr,
157 const std::vector<std::uint32_t> *bondInvariants =
nullptr,
158 const bool hashResults =
false)
const = 0;
166 virtual std::string infoString()
const = 0;
176 :
private boost::noncopyable {
186 virtual std::vector<std::uint32_t> *getAtomInvariants(
187 const ROMol &mol)
const = 0;
195 virtual std::string infoString()
const = 0;
206 :
private boost::noncopyable {
216 virtual std::vector<std::uint32_t> *getBondInvariants(
217 const ROMol &mol)
const = 0;
225 virtual std::string infoString()
const = 0;
236 template <
typename OutputType>
238 :
private boost::noncopyable {
243 const bool df_ownsAtomInvGenerator;
244 const bool df_ownsBondInvGenerator;
247 const ROMol &mol,
const std::vector<std::uint32_t> *fromAtoms =
nullptr,
248 const std::vector<std::uint32_t> *ignoreAtoms =
nullptr,
250 const std::vector<std::uint32_t> *customAtomInvariants =
nullptr,
251 const std::vector<std::uint32_t> *customBondInvariants =
nullptr,
252 const std::uint64_t fpSize = 0)
const;
260 bool ownsAtomInvGenerator =
false,
bool ownsBondInvGenerator =
false);
265 const ROMol &mol,
const std::vector<std::uint32_t> *fromAtoms =
nullptr,
266 const std::vector<std::uint32_t> *ignoreAtoms =
nullptr,
268 const std::vector<std::uint32_t> *customAtomInvariants =
nullptr,
269 const std::vector<std::uint32_t> *customBondInvariants =
nullptr)
const;
272 const ROMol &mol,
const std::vector<std::uint32_t> *fromAtoms =
nullptr,
273 const std::vector<std::uint32_t> *ignoreAtoms =
nullptr,
275 const std::vector<std::uint32_t> *customAtomInvariants =
nullptr,
276 const std::vector<std::uint32_t> *customBondInvariants =
nullptr)
const;
279 const ROMol &mol,
const std::vector<std::uint32_t> *fromAtoms =
nullptr,
280 const std::vector<std::uint32_t> *ignoreAtoms =
nullptr,
282 const std::vector<std::uint32_t> *customAtomInvariants =
nullptr,
283 const std::vector<std::uint32_t> *customBondInvariants =
nullptr)
const;
286 const ROMol &mol,
const std::vector<std::uint32_t> *fromAtoms =
nullptr,
287 const std::vector<std::uint32_t> *ignoreAtoms =
nullptr,
289 const std::vector<std::uint32_t> *customAtomInvariants =
nullptr,
290 const std::vector<std::uint32_t> *customBondInvariants =
nullptr)
const;
292 std::string infoString()
const;
299 :
public std::exception {
306 const char *
message()
const {
return _msg.c_str(); };
331 const std::vector<const ROMol *> molVector,
FPType fPType);
337 const std::vector<const ROMol *> molVector,
FPType fPType);
const bool d_countSimulation
abstract base class that holds atom-environments that will be hashed to generate the fingerprint ...
std::pair< std::vector< std::vector< std::uint32_t > >, std::map< std::uint32_t, std::vector< std::vector< int > > > > * bitInfo
RDKIT_FINGERPRINTS_EXPORT std::vector< ExplicitBitVect * > * getFPBulk(const std::vector< const ROMol *> molVector, FPType fPType)
RDKIT_FINGERPRINTS_EXPORT std::vector< SparseIntVect< std::uint64_t > * > * getSparseCountFPBulk(const std::vector< const ROMol *> molVector, FPType fPType)
used to indicate errors for unimplemented fp types in convenience functions
virtual ~AtomEnvironmentGenerator()
RDKIT_FINGERPRINTS_EXPORT ExplicitBitVect * getFP(const ROMol &mol, FPType fPType)
abstract base class for atom invariants generators
a class for bit vectors that are sparsely occupied.
const char * message() const
get the error message
abstract base class for bond invariants generators
const std::uint32_t d_fpSize
virtual ~FingerprintArguments()
UnimplementedFPException(const std::string &msg)
construct with an error message
RDKIT_FINGERPRINTS_EXPORT std::vector< SparseBitVect * > * getSparseFPBulk(const std::vector< const ROMol *> molVector, FPType fPType)
RDKIT_FINGERPRINTS_EXPORT SparseBitVect * getSparseFP(const ROMol &mol, FPType fPType)
~UnimplementedFPException()
abstract base class that generates atom-environments from a molecule
RDKIT_FINGERPRINTS_EXPORT SparseIntVect< boost::uint32_t > * getFingerprint(const ROMol &mol, unsigned int radius, std::vector< boost::uint32_t > *invariants=0, const std::vector< boost::uint32_t > *fromAtoms=0, bool useChirality=false, bool useBondTypes=true, bool useCounts=true, bool onlyNonzeroInvariants=false, BitInfoMap *atomsSettingBits=0)
returns the Morgan fingerprint for a molecule
const std::vector< std::uint32_t > d_countBounds
UnimplementedFPException(const char *msg)
construct with an error message
std::vector< std::vector< std::uint64_t > > * atomToBits
RDKIT_FINGERPRINTS_EXPORT SparseIntVect< std::uint64_t > * getSparseCountFP(const ROMol &mol, FPType fPType)
std::map< std::uint32_t, std::vector< std::pair< std::uint32_t, std::uint32_t > > > * bitInfoMap
virtual ~AtomEnvironment()
virtual ~BondInvariantsGenerator()
#define RDKIT_FINGERPRINTS_EXPORT
virtual ~AtomInvariantsGenerator()
a class for efficiently storing sparse vectors of ints
RDKIT_FINGERPRINTS_EXPORT std::vector< SparseIntVect< std::uint32_t > * > * getCountFPBulk(const std::vector< const ROMol *> molVector, FPType fPType)
a class for bit vectors that are densely occupied
std::vector< unsigned int > * atomCounts
RDKIT_FINGERPRINTS_EXPORT SparseIntVect< std::uint32_t > * getCountFP(const ROMol &mol, FPType fPType)
class that generates same fingerprint style for different output formats
Abstract base class that holds molecule independent arguments that are common amongst all fingerprint...