schrodinger / coordgenlibs

Schrodinger-developed 2D Coordinate Generation
BSD 3-Clause "New" or "Revised" License
42 stars 28 forks source link

rdCoordGen.AddCoords returning empty conformer for large system #102

Open jasondbiggs opened 3 years ago

jasondbiggs commented 3 years ago

Originally reported here

I do not have a standalone example for this failure, but the coordgen call made by RDKit in this case is returning an empty conformer.

mol = MolFromSmiles('OC[C@H]1O[C@@H](n2cnc3c(=O)[nH]c(N)nc23)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2ccc(N)nc2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cnc3c(=O)[nH]c(N)nc23)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cnc3c(=O)[nH]c(N)nc23)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2ccc(N)nc2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2ccc(N)nc2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2ccc(N)nc2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2ccc(N)nc2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cc(C)c(=O)[nH]c2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cnc3c(=O)[nH]c(N)nc23)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2ccc(N)nc2=O)C[C@@H]1OP(=S)(O)OC[C@H]1O[C@@H](n2cnc3c(=O)[nH]c(N)nc23)C[C@@H]1O')
rdCoordGen.AddCoords(mol)

for x in range(5):
    pos = mol.GetConformer().GetAtomPosition(x)
    print(pos.x, pos.y, pos.z)

0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0

Obviously this molecule is large and difficult to lay out in 2D, but I would have expected AddCoords to indicate failure somehow.

>>>from rdkit import rdBase
>>>rdBase.rdkitVersion

 "2021.03.1"
d-b-w commented 3 years ago

Thanks, @jasondbiggs . This is great to know. Have you seen many examples of this?

jasondbiggs commented 3 years ago

@d-b-w this is the first example I've seen but if I look at compounds similar to it on pubchem I see failures on some of them as well. This SMILES for example,

"C=C(N)NC(=O)c1ncn(C2CC(OP(O)(=S)OCC3OC(n4cc(C)c(N)nc4=O)CC3OP(O)(=S)OCC3OC(n4cc(C)c(N)nc4=O)CC3OP(O)(=S)OCC3OC(n4cc(C)c(=O)[nH]c4=O)CC3OP(O)(=S)OCC3OC(n4cc(C)c(=O)[nH]c4=O)CC3OP(O)(=S)OCC3OC(n4cnc5c(=O)[nH]c(N)nc54)CC3OP(O)(=S)OCC3OC(n4cc(C)c(=O)[nH]c4=O)CC3OP(O)(=S)OCC3OC(n4ccc(N)nc4=O)CC3OP(O)(=S)OCC3OC(n4cnc5c(=O)[nH]c(N)nc54)CC3OP(O)(=S)OCC3OC(n4cc(C)c(N)nc4=O)CC3OP(O)(=S)OCC3OC(n4cc(C)c(N)nc4=O)CC3OP(O)(=S)OCC3OC(n4cc(C)c(N)nc4=O)CC3OP(O)(=S)OCC3OC(n4cc(C)c(N)nc4=O)CC3OP(O)(=S)OCC3OC(n4cnc5c(=O)[nH]c(N)nc54)CC3OP(O)(=S)OCC3OC(n4cc(C)c(=O)[nH]c4=O)CC3OP(O)(=S)OCC3OC(n4ccc(N)nc4=O)CC3OP(O)(=S)OCC3OC(n4cnc5c(=O)[nH]c(N)nc54)CC3OP(O)(=S)OCC3OC(n4cc(C)c(=O)[nH]c4=O)CC3OP(O)(=S)OCC3OC(n4cc(C)c(=O)[nH]c4=O)CC3O)C(COP(O)(=S)OC3CC(n4ccc(N)nc4=O)OC3COP(O)(=S)OC3CC(n4cc(C)c(=O)[nH]c4=O)OC3COP(O)(=S)OC3CC(n4cnc5c(=O)[nH]c(N)nc54)OC3COP(O)(=S)OC3CC(n4ccc(N)nc4=O)OC3COP(O)(=S)OC3CC(n4cc(C)c(=O)[nH]c4=O)OC3CO)O2)c1C"