This file is indexed.

/usr/include/rdkit/GraphMol/Fingerprints/Fingerprints.h is in librdkit-dev 201603.5-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
//
//  Copyright (C) 2003-2012 Greg Landrum and Rational Discovery LLC
//
//   @@ All Rights Reserved @@
//  This file is part of the RDKit.
//  The contents are covered by the terms of the BSD license
//  which is included in the file license.txt, found at the root
//  of the RDKit source tree.
//
#ifndef _RD_FINGERPRINTS_H_
#define _RD_FINGERPRINTS_H_

#include <vector>
#include <boost/cstdint.hpp>
#include <DataStructs/SparseIntVect.h>

class ExplicitBitVect;
namespace RDKit {
class ROMol;

//! \brief Generates a topological (Daylight like) fingerprint for a molecule
//!        using an alternate (faster) hashing algorithm
/*!

  \param mol:          the molecule to be fingerprinted
  \param minPath:      the minimum path length (in bonds) to be included
  \param maxPath:      the minimum path length (in bonds) to be included
  \param fpSize:       the size of the fingerprint
  \param nBitsPerHash: the number of bits to be set by each path
  \param useHs:        toggles inclusion of Hs in paths (if the molecule has
  explicit Hs)
  \param tgtDensity:   if the generated fingerprint is below this density, it
  will
                       be folded until the density is reached.
  \param minSize:      the minimum size to which the fingerprint will be
                       folded
  \param branchedPaths: toggles generation of branched subgraphs, not just
  linear paths
  \param useBondOrders: toggles inclusion of bond orders in the path hashes
  \param atomInvariants: a vector of atom invariants to use while hashing the
  paths
  \param fromAtoms:    only paths starting at these atoms will be included
  \param atomBits:     used to return the bits that each atom is involved in
                       (should be at least \c mol.numAtoms long)

  \return the molecular fingerprint, as an ExplicitBitVect

  <b>Notes:</b>
    - the caller is responsible for <tt>delete</tt>ing the result

*/
ExplicitBitVect *RDKFingerprintMol(
    const ROMol &mol, unsigned int minPath = 1, unsigned int maxPath = 7,
    unsigned int fpSize = 2048, unsigned int nBitsPerHash = 2,
    bool useHs = true, double tgtDensity = 0.0, unsigned int minSize = 128,
    bool branchedPaths = true, bool useBondOrder = true,
    std::vector<boost::uint32_t> *atomInvariants = 0,
    const std::vector<boost::uint32_t> *fromAtoms = 0,
    std::vector<std::vector<boost::uint32_t> > *atomBits = 0,
    std::map<boost::uint32_t,std::vector<std::vector<int> > > *bitInfo=0);
const std::string RDKFingerprintMolVersion = "2.0.0";

//! \brief Generates a topological (Daylight like) fingerprint for a molecule
//!        using a layer-based hashing algorithm
/*!

  <b>Experimental:</b> This function is experimental. The API or results may
  change from
  release to release.

  \param mol:          the molecule to be fingerprinted
  \param layerFlags:   the layers to be included (see below)
  \param minPath:      the minimum path length (in bonds) to be included
  \param maxPath:      the minimum path length (in bonds) to be included
  \param fpSize:       the size of the fingerprint
  \param atomCounts:   if provided, this will be used to provide the count of
  the number
                       of paths that set bits each atom is involved in. The
  vector should
                       have at least as many entries as the molecule has atoms
  and is not
                       zeroed out here.
  \param setOnlyBits:  if provided, only bits that are set in this bit vector
  will be set
                       in the result. This is essentially the same as doing:
                          (*res) &= (*setOnlyBits);
                       but also has an impact on the atomCounts (if being used)
  \param branchedPaths: toggles generation of branched subgraphs, not just
  linear paths

  \return the molecular fingerprint, as an ExplicitBitVect

  <b>Notes:</b>
    - the caller is responsible for <tt>delete</tt>ing the result

  <b>Layer definitions:</b>
     - 0x01: pure topology
     - 0x02: bond order
     - 0x04: atom types
     - 0x08: presence of rings
     - 0x10: ring sizes
     - 0x20: aromaticity
*/
ExplicitBitVect *LayeredFingerprintMol(
    const ROMol &mol, unsigned int layerFlags = 0xFFFFFFFF,
    unsigned int minPath = 1, unsigned int maxPath = 7,
    unsigned int fpSize = 2048, std::vector<unsigned int> *atomCounts = 0,
    ExplicitBitVect *setOnlyBits = 0, bool branchedPaths = true,
    const std::vector<boost::uint32_t> *fromAtoms = 0);
const unsigned int maxFingerprintLayers = 10;
const std::string LayeredFingerprintMolVersion = "0.7.0";
const unsigned int substructLayers = 0x07;

//! \brief Generates a topological fingerprint for a molecule
//!        using a series of pre-defined structural patterns
/*!

  <b>Experimental:</b> This function is experimental. The API or results may
  change from
  release to release.

  \param mol:          the molecule to be fingerprinted
  \param fpSize:       the size of the fingerprint
  \param atomCounts:   if provided, this will be used to provide the count of
  the number
                       of paths that set bits each atom is involved in. The
  vector should
                       have at least as many entries as the molecule has atoms
  and is not
                       zeroed out here.
  \param setOnlyBits:  if provided, only bits that are set in this bit vector
  will be set
                       in the result. This is essentially the same as doing:
                          (*res) &= (*setOnlyBits);
                       but also has an impact on the atomCounts (if being used)

  \return the molecular fingerprint, as an ExplicitBitVect

  <b>Notes:</b>
    - the caller is responsible for <tt>delete</tt>ing the result

*/
ExplicitBitVect *PatternFingerprintMol(
    const ROMol &mol, unsigned int fpSize = 2048,
    std::vector<unsigned int> *atomCounts = 0,
    ExplicitBitVect *setOnlyBits = 0);

SparseIntVect<boost::uint64_t> *getUnfoldedRDKFingerprintMol(const ROMol &mol,unsigned int minPath=1,
      unsigned int maxPath=7,
      bool useHs=true,
      bool branchedPaths=true,
      bool useBondOrder=true,
      std::vector<boost::uint32_t> *atomInvariants=0,
      const std::vector<boost::uint32_t> *fromAtoms=0,
      std::vector<std::vector<boost::uint64_t> > *atomBits=0,
      std::map<boost::uint64_t,std::vector<std::vector<int> > > *bitInfo=0);

}


#endif