Closed electronicsbyjulie closed 2 years ago
Existing functionality is after the initial pose, other binding pocket features are allowed to be bb0, randomly selected. Extend this to bb1 and bb2. Note that the ligand will always have the same best binding atoms every time.
Also, ensure that no two best binding atoms are part of the same moiety. No two bb heavy atoms may be bonded to each other, nor may they both bond to a shared third atom. No two bb atoms should be part of the same aromatic ring, unless neither atom is a carbon.
Focusing this so the TAAR8 test can be made more accurate.
Molecule::get_most_bindable() is not working. It returns the same atom over and over.
TODO: bestbind 0 and 1 are working, but 2 does not have the code to do the "rotisserie ligand" motion.
See #83 for the problem this algorithm introduces.
Currently, when putrescine or cadaverine are docked inside TAAR6 or TAAR8, only one of the receptor's two amino-binding ASP residues is coordinated to the ligand's amino groups. One of the ASPs is located on TMR3, and the other on TMR5. Since the TMR3:ASP is the earlier one in the sequence, it is always being given priority and becoming the "best bind" alignment site.
Allow up to three "best bind" coordinations: bb0, bb1, and bb2. Let each one correspond to a heavy atom of the ligand, and its bound hydrogen if it has one. Let each one correspond to a feature in the binding pocket, such as a residue sidechain or a metal ion. The strongest potential binding would be bb0, followed by bb1 and then bb2.
Coordinate bb0 first. This is the existing simple whole-molecule rotation to align its bb0 with alignment feature zero.
Then coordinate bb1. Start by taking the normal of the plane defined by LIG:bb0, LIG:bb1, and Prot:bb1. Rotate the ligand about this normal, with ligand bb0 as the center of rotation, to align LIG:bb1 with Prot:bb1.
Then use the imaginary line of LIG:bb0-LIG:bb1 as the axis of rotation to align LIG:bb2 as close to Prot:bb2 as possible.