1 | | So, approximately 1000 years ago I looked into faster ring-finding algorithms but none of them did what I needed to be done (typically they would miss some of the important ring possibilities in a fused-ring system). But 1000 years ago there were no structures as large as there are now, so some of the trade offs in the code have changed. Specifically, it looks through unvisited atoms in a structure and tries to find rings from there, stopping at residue boundaries if 'cross_residue' is false. This involved maintaining a map of visited atoms, which we now know gets slow to maintain and test when it gets large. So, it may pay to bifurcate the algorithm based on 'cross_residue' and do the search on a per-residue basis if cross_residue is true. It's more code, and certainly wasn't worth the effort in the "old days" but it is worth at least trying out now. |
| 1 | So, approximately 1000 years ago I looked into faster ring-finding algorithms but none of them did what I needed to be done (typically they would miss some of the important ring possibilities in a fused-ring system). But 1000 years ago there were no structures as large as there are now, so some of the trade offs in the code have changed. Specifically, it looks through unvisited atoms in a structure and tries to find rings from there, stopping at residue boundaries if 'cross_residue' is false. This involved maintaining a map of visited atoms, which we now know gets slow to maintain and test when it gets large. So, it may pay to bifurcate the algorithm based on 'cross_residue' and do the search on a per-residue basis if cross_residue is false. It's more code, and certainly wasn't worth the effort in the "old days" but it is worth at least trying out now. |