I think I found a bug in parse_pdbqt.cpp at lines 504-506: if(p.immobileatom && i == p.immobileatom.get()) {}
else pnode.insert(nr, c, b.node.getorigin());
pnode.insertimmobiles(nr, c, b.node.getorigin());
I think it is better to change these lines to: pnode.insert(nr, c, b.node.getorigin());
Without the fix, it may happen that atoms are put into the child node that are not connected in this node at all.
Due to that, conformations with incorrect geometry can be generated during global optimization, because of a non-existent torsion axis. (see attached files)
Such conformations are cut off at the stage of local optimization, since conformations with the correct geometry give a better result.
But the fix allows smina to consider larger number of correct conformations and increases the final affinity.
It's going to be a while before I can have the time to look into this in more detail and understand your proposed fix, but I do not see an artificial constraint being added. If you --randomize_only then smina is more than happy to produce extended conformations with these atoms far apart. However, if you minimize the compound it likes to put them together to get better intramolecular contacts.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello!
I think I found a bug in parse_pdbqt.cpp at lines 504-506:
if(p.immobileatom && i == p.immobileatom.get()) {}
else pnode.insert(nr, c, b.node.getorigin());
pnode.insertimmobiles(nr, c, b.node.getorigin());
I think it is better to change these lines to:
pnode.insert(nr, c, b.node.getorigin());
Without the fix, it may happen that atoms are put into the child node that are not connected in this node at all.
Due to that, conformations with incorrect geometry can be generated during global optimization, because of a non-existent torsion axis. (see attached files)
Such conformations are cut off at the stage of local optimization, since conformations with the correct geometry give a better result.
But the fix allows smina to consider larger number of correct conformations and increases the final affinity.
Can you provide example structures?
Example structures:
It's going to be a while before I can have the time to look into this in more detail and understand your proposed fix, but I do not see an artificial constraint being added. If you --randomize_only then smina is more than happy to produce extended conformations with these atoms far apart. However, if you minimize the compound it likes to put them together to get better intramolecular contacts.
I've stepped through the code and it seems to be doing exactly what it is suppose to and the fix would break things.