Hi Rafal,

There is no C++-level function to do that, but you can use Python multiprocessing to achieve the same result with only a small efficiency loss, due to the larger overhead of starting multiple processes as compared to multiple threads:

from  multiprocessing  import  Pool
from  rdkit  import  Chem
from  rdkit.Chem  import  rdDistGeom,  ChemicalForceFields

mol  =  Chem.AddHs(Chem.MolFromSmiles(
    "CCOCCn1c(C2CC[NH+](CCc3ccc(C(C)(C)C(=O)[O-])cc3)CC2)nc2ccccc21"))

def  min_proc(mol_confid_tuple):
    mol,  confid  =  mol_confid_tuple
    ffps  =  ChemicalForceFields.MMFFGetMoleculeProperties(mol)
    ff  =  ChemicalForceFields.MMFFGetMoleculeForceField(
        mol,  ffps,  confId=confid,  ignoreInterfragInteractions=False)
    ff.MMFFAddDistanceConstraint(1,  2,  False,  1.2,  1.55,  1e05)
    res=ff.Minimize(maxIts=200)
    return  (mol,  confid)

confids  =  list(rdDistGeom.EmbedMultipleConfs(
    mol,  numConfs=100,  numThreads=10))

p  =  Pool(10)
mol_confid_tuples  =  p.map(min_proc,
      [(mol,  confid)  for  confid  in  confids])
mol.RemoveAllConformers()
[mol.AddConformer(m.GetConformer(confid))
     for  m,  confid  in  mol_confid_tuples];

Cheers,
p.

On 03/28/19 19:44, Rafal Roszak wrote:
Hello all,

Is it possible to optimize multiple conformation with constraint using more 
that one thread (core)?
I have following code:

Chem.rdDistGeom.EmbedMultipleConfs(mol, numConfs=100, numThreads=10)
ffps = ChemicalForceFields.MMFFGetMoleculeProperties(mol)
ff = ChemicalForceFields.MMFFGetMoleculeForceField(mol, ffps, confId=confid, 
ignoreInterfragInteractions=False)
ff.MMFFAddDistanceConstraint(1, 2, False, 1.2, 1.55, 1e05)
res=ff.Minimize(maxIts=500)

which generate initial structures in parallel fashion but then optimize one by 
one. I found in AllChem interesting function

AllChem.MMFFOptimizeMoleculeConfs

which can optimize all conformers using many threads but how to combine this 
with constraints?

Best regards,

RafaƂ


_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to