That is the structure I want, however I found that it doesn't give that structure every time (sometimes it inverts the rings).
Get Outlook for Android<https://aka.ms/ghei36> ________________________________ From: Chuang, Kangway <kangway.chu...@ucsf.edu> Sent: Thursday, July 23, 2020 8:55:01 AM To: David Turnbull <david.turnbu...@ucalgary.ca>; rdkit-discuss@lists.sourceforge.net <rdkit-discuss@lists.sourceforge.net> Subject: Re: Conformer generation [△EXTERNAL] Hi David, Do you have a specific example of the bowl conformation you're looking for (e.g. do you have an image of the desired conformation vs what you are seeing)? Running your current code I get the following conformer (shown in two different views). Kangway ________________________________ From: David Turnbull <david.turnbu...@ucalgary.ca> Sent: Thursday, July 23, 2020 6:49 AM To: rdkit-discuss@lists.sourceforge.net <rdkit-discuss@lists.sourceforge.net> Subject: [Rdkit-discuss] Conformer generation Hi all, I am trying to generate structures of calixarenes in a set shape, I am trying to use constrain distances but struggling. The lowest energy conformer is not what I want as I want it in the bowl shape. I labelled 4 oxygens with O17 (for finding purposes) and set the distance of them as that should set the geometry but it isn’t working. Any help would be great. Code below. mol= Chem.MolFromSmiles('[17OH]C1=C2C=C([Y])C=C1CC3=C([17O-])C(CC4=C([17OH])C(CC5=C([17OH])C(C2)=CC(S(=O)([O-])=O)=C5)=CC(S(=O)([O-])=O)=C4)=CC([Y])=C3') y= Chem.MolFromSmiles('OC1=CC=C([Y])C=C1') rxn = AllChem.ReactionFromSmarts("[Y][*:1].[Y][*:2]>>[*:1][*:2]") results=rxn.RunReactants([mol,y]) for products in results: for mol in products: m2=mol results2=rxn.RunReactants([m2,y]) for products in results2: for mol in products: m3=mol m4=Chem.MolToSmiles(m3) x=Chem.MolFromSmiles(m4) index={} k=0 for atom in x.GetAtoms(): if atom.GetSymbol() == 'O': if atom.GetIsotope() == 17: index[k]=atom.GetIdx() k+=1 m5=Chem.AddHs(x) AllChem.EmbedMolecule(m5, useRandomCoords=True) ff=AllChem.UFFGetMoleculeForceField(m5) ff.UFFAddDistanceConstraint( index[0], index[1], False, 3.5, 4.5, 99.0) ff.UFFAddDistanceConstraint( index[0], index[2], False, 3.5, 4.5, 99.0) ff.UFFAddDistanceConstraint( index[0], index[3], False, 3.5, 4.5, 99.0) m6=ff.Minimize(maxIts=50) David
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss