Dear RDKitters,

I am writing a code to generate conformers of a given molecule constraining
some atoms to occupy fixed positions with the coordMap option. However, the
coordMap option does not see to work, as in the conformers generated the
constraint atoms are at very different positions in each conformer. I use
the following code:

def gen_confs(mol, fixed_atoms = None, atomic_positions = None):
    num_confs = 50
    print("%i initial configurations tried for the conformer search" %
num_confs)
    ps = AllChem.ETKDG()
    ps.pruneRmsThersh = 0.1 # Disabling pruning by RMS, very little
distorted geometries
                        # wrt the first conformer are discarded
    ps.numThreads = 0
    if fixed_atoms is None:
        AllChem.EmbedMultipleConfs(m, num_confs, ps)
    else:
        coord_dict = dict()
        for idx in fixed_atoms:
            atom = idx - 1
            coord_dict[atom] = atomic_positions[atom]
        ps.coordMap = coord_dict
        print("Fixing coordinates of atoms:", coord_dict)
        AllChem.EmbedMultipleConfs(m, num_confs, ps)


def cluster_confs(mol, rms):
    dm = AllChem.GetConformerRMSMatrix(mol)
    rms_clusters = Butina.ClusterData(dm, mol.GetNumConformers(), rms,\
                                      isDistData = True, reordering = True)
    clustered_mol = Chem.Mol(mol)
    clustered_mol.RemoveAllConformers()
    centroid_ids = list()

    for cluster in rms_clusters:
        centroid_ids.append(cluster[0])

    cidx = 0
    for idx in centroid_ids:
        clustered_mol.AddConformer(mol.GetConformer(idx))
        Chem.Conformer.SetId(clustered_mol.GetConformer(idx), cidx)
        cidx += 1

    print('{:d} distinct conformers
generated'.format(clustered_mol.GetNumConformers()))
    return clustered_mol


smi  = "CC(=O)Oc1c(C(=O)O)cccc1"
fixed_atoms = [4, 8]
atomic_positions = [[0.9348789, 0.03381682, -0.838997], [-2.0378193,
2.60057272, 0.27807491]]

gen_confs(m, fixed_atoms = fixed_atoms, atomic_positions = atomic_positions)
rms_cluster = 1.
clustered_mol = cluster_confs(m, rms_cluster)

Is there something wrong with the code? Any suggestion is really
appreciated.

Thanks a lot.
-- 
José
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to