Logo build coverage Documentation Status DOI Conda Install
Kartograf is a package for atom mappings focussing on 3D geometries.
This package can be for example be used to generate hybrid topology systems, where an atom mapping is required to determine the core region of the approach.
But of course there exist also other use cases for this package.
The atom mapper takes two set of coordinates of molecules as input.
Optionally those set of coordinates can be aligned onto each other, checkout the atom_aligner module functions
of Kartograf that offer a shape alignment implementation and a MCS-skeleton alignment.
The atom_mapper can be used to generate the 3D geometry focused atom mapping, the algorithm is described in the related publication of Kartograf (see reference).
Additionally, rule based filter functions can be provided to demap atoms, that do not fulfill the desired criteria, see filters.
Several mapping scoring metrics are provided, that evaluate geometric properties of your mapping, from mapping_metrics, which might be useful for checking quality of your mappings.
Checkout our article on Kartograf in the Journal of Chemical Theory and Computation: Kartograf: A Geometrically Accurate Atom Mapper for Hybrid-Topology Relative Free Energy Calculations - Benjamin Ries*, Irfan Alibay, David W. H. Swenson, Hannah M. Baumann, Michael M. Henry, James R. B. Eastwood, and Richard J. Gowers.
You can find a preprint on ChemRxiv.
from rdkit import Chem from kartograf.atom_aligner import align_mol_shape from kartograf.mapping_metrics import MappingRMSDScorer from kartograf import KartografAtomMapper, SmallMoleculeComponent # Preprocessing from Smiles - Here you can add your Input! # Generate Data: START smiles = ["c1ccccc1", "c1ccccc1(CO)"] rdmols = [Chem.MolFromSmiles(s) for s in smiles] rdmols = [Chem.AddHs(m, addCoords=True) for m in rdmols] [Chem.rdDistGeom.EmbedMolecule(m, useRandomCoords=False, randomSeed = 0) for m in rdmols] # Generate Data: END # Build Small Molecule Components molA, molB = [SmallMoleculeComponent.from_rdkit(m) for m in rdmols] # Align the mols first - this might not needed, depends on input. a_molB = align_mol_shape(molB, ref_mol=molA) # Build Kartograf Atom Mapper mapper = KartografAtomMapper(atom_map_hydrogens=True) # Get Mapping kartograf_mapping = next(mapper.suggest_mappings(molA, a_molB)) # Score Mapping rmsd_scorer = MappingRMSDScorer() score = rmsd_scorer(mapping=kartograf_mapping) print(f"RMSD Score: {score}") kartograf_mapping
Kartograf can be installed via the package following package managers:
conda install -c conda-forge kartograf
Kartograf can be used via the OpenFE environment like:
from openfe.setup.atom_mapping import kartograf
The developing setup of Kartograf works like this:
git clone https://github.com/OpenFreeEnergy/kartograf.git cd kartograf mamba env create -f environment.yml mamba activate kartograf pip install -e .
This library is made available under the MIT open source license.
The OpenFE development team.