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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions