rdkit.Chem.Fingerprints.DbFpSupplier module — The RDKit 2025.09.6 documentation

# rdkit.Chem.Fingerprints.DbFpSupplier module

Supplies a class for working with fingerprints from databases #DOC

class rdkit.Chem.Fingerprints.DbFpSupplier.DbFpSupplier(dbResults, fpColName='AutoFragmentFp', usePickles=True)

  Bases: `VLibNode`

  new fps come back with all additional fields from the database set in a “_fieldsFromDb” data member

  DbResults should be a subclass of Dbase.DbResultSet.DbResultBase

  GetColumnNames()
  next()

    part of the iterator interface

    raises StopIteration on failure

class rdkit.Chem.Fingerprints.DbFpSupplier.ForwardDbFpSupplier(*args, **kwargs)

  Bases: `DbFpSupplier`

  DbFp supplier supporting only forward iteration

      >>> from rdkit import RDConfig
      >>> from rdkit.Dbase.DbConnection import DbConnect
      >>> fName = RDConfig.RDTestDatabase
      >>> conn = DbConnect(fName,'simple_combined')
      >>> suppl = ForwardDbFpSupplier(conn.GetData())

  we can loop over the supplied fingerprints:

      >>> fps = []
      >>> for fp in suppl:
      ...   fps.append(fp)
      >>> len(fps)
      12

  DbResults should be a subclass of Dbase.DbResultSet.DbResultBase

  NextItem()

    NOTE: this has side effects

  reset()

    resets our iteration state

class rdkit.Chem.Fingerprints.DbFpSupplier.RandomAccessDbFpSupplier(*args, **kwargs)

  Bases: `DbFpSupplier`

  DbFp supplier supporting random access:

      >>> import os.path
      >>> from rdkit import RDConfig
      >>> from rdkit.Dbase.DbConnection import DbConnect
      >>> fName = RDConfig.RDTestDatabase
      >>> conn = DbConnect(fName,'simple_combined')
      >>> suppl = RandomAccessDbFpSupplier(conn.GetData())
      >>> len(suppl)
      12

  we can pull individual fingerprints:

      >>> fp = suppl[5]
      >>> fp.GetNumBits()
      128
      >>> fp.GetNumOnBits()
      54

  a standard loop over the fingerprints:

      >>> fps = []
      >>> for fp in suppl:
      ...   fps.append(fp)
      >>> len(fps)
      12

  or we can use an indexed loop:

      >>> fps = [None] * len(suppl)
      >>> for i in range(len(suppl)):
      ...   fps[i] = suppl[i]
      >>> len(fps)
      12

  DbResults should be a subclass of Dbase.DbResultSet.DbResultBase

  NextItem()
  reset()

    resets our iteration state