-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add additional edges in Dijkstra initialization round #23
base: master
Are you sure you want to change the base?
Add additional edges in Dijkstra initialization round #23
Conversation
If the Dijkstra algorithm encounters the source grid index (i.e. the attachment point) at initiation, all grid point within the linker width + grid spacing are added to the edges vector. This avoids empty AVs due to linker blockage close to the attachment point.
Dear Fabio, I also had some success stripping sidechain atoms in the attachment residue. In some cases additionally stripping sidechains of neighbors can help too. Also, I use a smaller linker diameter of 2-3A instead of 4.5, which helps with blocking but does not affect good AVs in most cases. I'm not sure that stripping of the blocking atoms is sufficient though. Do you think we should do both atom stripping and the hole around the attachment atom? |
Dear Mykola, |
Yes, the linker will "tunnel" through the nearby obstacles and continue propagation. Since obstacles are ignored, it is equivalent to punching a hole, as far as I understand. For example, if we have two sheets of atoms (2-3 layers of graphene), and attach the linker to one side, it would "tunnel" to the other and the AV would be a sphere, not a hemisphere. It's not a realistic example, of course, I only use it for illustration here. punch = sourceXyz;
punch[3] = linkerDiameter+ds;
fillSphere(punch, punch[3]); |
Hi Thomas and Mykola,
I would like to propose a small change to the grid search of LabelLib to avoid empty AVs due to the linker getting blocked close to the attachment point on the biomolecule.
In the initialization round of the Dijkstra algorithm, I suggest to search all grid within a radius
linkerDiameterPlusgridSize
(i.e linker width + grid spacing) instead of justessentialNeighbours
(as in all subsequent rounds).This prevents the algorithm from terminating prematurely when no grid points are within the 74 essential neighbors edges (i.e. for residues which are slightly less surface-accessible).
Since the extended neighbor list only affects the very first round of the Dijkstra algorithm, the time cost is negligible.
I believe a somewhat similar adjustment for the initialization round was originally proposed in Kalinin, Nat. Methods. (2012).
Let me know what you think.
Kind regards,
Fabio