Skip to content

Releases: dataprofessor/molfp

v0.3.7

Choose a tag to compare

@dataprofessor dataprofessor released this 24 Oct 18:56

Fixed

  • pharmacophore (2D pharmacophore fingerprint) no longer raises IndexError: distance bin not found for about 1 in 5 drug-like molecules (21.8% of 2,006 PubChemQC molecules tested). The RDKit signature factory was built with triangle pruning, which assumes the three distances of a 3-point pharmacophore obey the triangle inequality; distances between multi-atom features such as aromatic rings do not always do so. The factory is now built with trianglePruneBins=False.
  • Breaking: the fingerprint grows from 2,988 to 3,348 bits and bit positions change; retrain any model built on it. Molecules that worked before set the same number of bits.

v0.3.6

Choose a tag to compare

@dataprofessor dataprofessor released this 21 Oct 20:39

Added

  • 15 new fingerprint types (55 total: 37 2D + 10 3D + 8 graph): SECFP, ErG, Pharmacophore2D,
    Layered, Pattern, E3FP, MQN, GhoseCrippen, BCUT2D, SHED, FunctionalGroups, Physiochemical,
    CATS2D, Mordred, RDKit2D

Changed

  • Breaking: the 27 per-fingerprint sklearn classes (ECFPTransformer, MACCSTransformer, ...)
    are replaced by one FingerprintTransformer(fp_type, n_bits=None, n_jobs=1, sparse=False)
    that covers every fingerprint type. Replace e.g. ECFPTransformer() with
    FingerprintTransformer("ecfp4"). get_transformer() and TRANSFORMERS still work.

Fixed

  • MHFP, MAP4, SECFP, Lingo and Signature now give the same bits in every Python session.
    They hashed strings with built-in hash(), which is salted per process, so output changed
    between sessions and differed between n_jobs > 1 workers within a single matrix.
    Breaking: these five fingerprints produce different bits than before; retrain any model
    built on them. MAP4C and all other fingerprints are unchanged.
  • mapchiral is now a declared dependency, so MAP4C works after a plain pip install molfp
    (it previously raised ImportError unless mapchiral was installed separately).
  • mordredcommunity is now a declared dependency for Mordred descriptors. The original
    mordred package is unmaintained and returns errors for ~24% of descriptors on current numpy.
  • e3fp is now a declared dependency, so E3FP works after a plain pip install molfp.
  • Physiochemical and RDKit2D descriptors now use a fixed list of 210 RDKit descriptors in a
    fixed order. They previously followed RDKit's descList, whose length and column order change
    between RDKit releases (209 in 2023.03, 210 in 2024.03, 217 in 2025.09, with new descriptors
    inserted mid-list), so a column could mean a different descriptor on another RDKit version.
    Output is unchanged on RDKit 2024.03; descriptors missing from an older RDKit are filled with 0.
  • Removed RDKit deprecation warnings ("please use MorganGenerator") by moving Morgan,
    atom-pair and topological-torsion fingerprints to rdFingerprintGenerator. Output is
    bit-identical to before.

v0.3.5

Choose a tag to compare

@dataprofessor dataprofessor released this 18 Oct 08:09

v0.3.5

Visualization split into standalone molviewer package.

  • Removed draw(), view3d(), draw_attribution() from molfp
  • Removed py3Dmol and ipyspeck dependencies (lighter install)
  • Use pip install molviewer for 2D/3D visualization
  • 384 tests passing

v0.3.4

Choose a tag to compare

@dataprofessor dataprofessor released this 18 Oct 05:27

v0.3.4

  • Added houkmol Speck preset (matte, dark outlines, desaturated — Houk group style)
  • Speck defaults to ball_and_stick when no preset specified
  • Graceful handling of unsupported ipyspeck presets
  • Suppressed RDKit kekulization warnings on import
  • Updated speck_demo notebook with all 4 molfp presets + custom parameter examples

v0.3.3

Choose a tag to compare

@dataprofessor dataprofessor released this 18 Oct 04:18

v0.3.3

  • Speck viewer defaults to ball-and-stick preset
  • Added ball_and_stick, toon, and licorice Speck presets
  • Exposed atom_scale, bond_scale, ao, brightness, outline, bonds parameters
  • Suppressed RDKit kekulization warnings on import
  • Graceful handling of unsupported ipyspeck presets

v0.3.2

Choose a tag to compare

@dataprofessor dataprofessor released this 18 Oct 03:36

What's New in v0.3.2

New Fingerprint Types

  • FCFP4: Feature Morgan (pharmacophoric atom types), collision_free supported
  • Lingo: hashed SMILES 4-grams
  • Shortest Path: atom-pair features along shortest paths
  • Hybridization: RDKit path FP with hybridization invariants
  • Signature: atom-centered subgraph descriptors (Faulon signatures)
  • Total: 35 FP types (18 2D + 9 3D + 8 graph), 27 sklearn transformers

New Features

  • draw_attribution(): class-specific SHAP attribution maps on 2D structures (green=active, red=inactive), two styles: highlight and contour
  • Speck 3D viewer: style='speck' in view3d() for ambient-occlusion rendering with 8 presets (default, matte, glossy, toon, cover, metal, glass, goodsell)
  • ipyspeck added as base dependency

Improvements

  • CI test workflow (Python 3.9-3.12)
  • MkDocs Material documentation site with Mermaid workflow diagrams
  • CITATION.cff for academic citations
  • Colab-compatible getting started notebook
  • 393 tests passing

v0.3.1

Choose a tag to compare

@dataprofessor dataprofessor released this 13 Oct 17:38

Fix PyPI page: images now display correctly (absolute URLs), removed comparison table.

v0.3.0

Choose a tag to compare

@dataprofessor dataprofessor released this 13 Oct 17:31

What's New in v0.3.0

New Features

  • Scaffold analysis: scaffold(), scaffold_fingerprint(), scaffold_split() -- Murcko/generic scaffold extraction with chemical names, scaffold-aware splitting
  • Hash collision handling: remove_collisions(), collision_free=True (multi-hash Bloom filter), collision_aware=True for SHAP interpretation
  • Graph vectors for sklearn: graph_vectors() and GraphTransformer for fixed-length graph features in pipelines
  • New logo: inline wordmark with fused-ring m and benzene o

Improvements

  • Updated init.py docstring to reflect all 30 FP types and 14 modules
  • README: added sections for Graph Vectors, Collision Handling, Scaffold Analysis
  • Updated comparison table with new features
  • Notebook summary table synced with current API

Stats

  • 30 fingerprint types (13 2D + 9 3D + 8 graph)
  • 22 sklearn transformers + GraphTransformer
  • 361 tests passing