25 lines
627 B
Python
25 lines
627 B
Python
"""Morgan fingerprint utilities shared by molecular workloads."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from functools import lru_cache
|
|
from typing import Any
|
|
|
|
from rdkit import Chem
|
|
from rdkit.Chem import rdFingerprintGenerator
|
|
|
|
|
|
FP_RADIUS = 2
|
|
FP_SIZE = 2048
|
|
|
|
|
|
@lru_cache(maxsize=1)
|
|
def morgan_generator() -> Any:
|
|
"""Return the standard SciMesh Morgan fingerprint generator."""
|
|
return rdFingerprintGenerator.GetMorganGenerator(radius=FP_RADIUS, fpSize=FP_SIZE)
|
|
|
|
|
|
def fingerprint(molecule: Chem.Mol) -> Any:
|
|
"""Build a Morgan radius-2, 2048-bit fingerprint."""
|
|
return morgan_generator().GetFingerprint(molecule)
|