Skip to content

Conformers generation - RMSD cutoff limit not applied? #239

@Fransu86

Description

@Fransu86

I noticed that when running conformer generation in Datamol, the rms_cutoff option doesn't seem to be applied correctly.
Specifically:

import datamol as dm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

smiles = "N(c1n[nH]c(C2CC2)c1)c1nc(Nc2ccc(CC#N)cc2)ncc1"
mol = dm.to_mol(smiles)

mol = dm.conformers.generate(
    mol,
    n_confs=200,
    rms_cutoff=0.25,
    minimize_energy=True,
    align_conformers=True,
    ewindow=5.0
)

n_confs = mol.GetNumConformers()
print(f"Number of Conformations: {n_confs}")

Should generate 145 aligned conformations and make sure that no two conformations have a pairwise RMSD equal or below 0.25.
Looking at them in 3D, I noticed that several seem to be very very similar and indeed with the following debug code:

rmsd_matrix = dm.conformers.rmsd(mol)
threshold = 0.25
mask_below_threshold = rmsd_matrix < threshold
total_count = np.sum(mask_below_threshold)
count_excluding_diagonal = total_count - n_confs
unique_pairs_count = count_excluding_diagonal // 2

It tells me that out of the 145 conformations, 50 of them have pairwise RMSD <0.25.
Just one example from the compounds above; the four conformations generated via Datamol have pairwise RMSD<<0.25.

Image

Am I missing something on the role or the rms_cutoff, particularly together with the align_conformers option?
I have seen the same behavior with several other molecules.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions