Repository navigation
Releases: dataprofessor/molfp
Releases · dataprofessor/molfp
Release list
v0.3.7
Fixed
pharmacophore(2D pharmacophore fingerprint) no longer raisesIndexError: distance bin not foundfor 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 withtrianglePruneBins=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
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 oneFingerprintTransformer(fp_type, n_bits=None, n_jobs=1, sparse=False)
that covers every fingerprint type. Replace e.g.ECFPTransformer()with
FingerprintTransformer("ecfp4").get_transformer()andTRANSFORMERSstill work.
Fixed
- MHFP, MAP4, SECFP, Lingo and Signature now give the same bits in every Python session.
They hashed strings with built-inhash(), which is salted per process, so output changed
between sessions and differed betweenn_jobs > 1workers 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. mapchiralis now a declared dependency, so MAP4C works after a plainpip install molfp
(it previously raised ImportError unless mapchiral was installed separately).mordredcommunityis now a declared dependency for Mordred descriptors. The original
mordredpackage is unmaintained and returns errors for ~24% of descriptors on current numpy.e3fpis now a declared dependency, so E3FP works after a plainpip install molfp.- Physiochemical and RDKit2D descriptors now use a fixed list of 210 RDKit descriptors in a
fixed order. They previously followed RDKit'sdescList, 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 tordFingerprintGenerator. Output is
bit-identical to before.
v0.3.5
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 molviewerfor 2D/3D visualization - 384 tests passing
v0.3.4
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
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
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
Fix PyPI page: images now display correctly (absolute URLs), removed comparison table.
v0.3.0
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