Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 186d4be1 authored by Sjoerd de Vries's avatar Sjoerd de Vries
Browse files

make gridspacing finer

parent 67db9bad
No related branches found
No related tags found
No related merge requests found
...@@ -6,4 +6,40 @@ RNA: 'polyribonucleotide' ...@@ -6,4 +6,40 @@ RNA: 'polyribonucleotide'
DNA: 'polydeoxyribonucleotide' DNA: 'polydeoxyribonucleotide'
protein: 'polypeptide(L)' protein: 'polypeptide(L)'
There is more exotic stuff such as DNA/RNA hybrid, which we can ignore. There is more exotic stuff such as DNA/RNA hybrid, which we can ignore.
\ No newline at end of file
Initial conclusion
Single-ring stacking interactions (PHE/TYR - U/C)
In translational space: 886 grid points that fulfill the criteria
Note that in the typical case, half of them can be discarded immediately because
they are on the wrong side (above/below) of the ring.
In rotational space: 8.3 % of plane-plane orientations is kept.
In addition, 75 % of dihedral space is kept, for a total of 6.2 % of rotational space.
The trinucleotide library has typically 40k rotamers per conformer.
6.2 % of rotational space is about 2.5k rotamers per conformer kept.
With 4k conformers per library, this is 10 million rotaconformers,
or about 9 billion potential docking solutions.
For double stacking:
A test has been done in the 1B7F-stack folder in a different project
The plane angle reduction is independent, i.e.
8.3 % of 8.3 % of 40k = 275 rotamers per conformer
In fact, in the 1B7F test, this is confirmed,
as ~220 rotamers per conformer, or 800k rotaconformers in total.
The dihedral filter (75 % per stacking, or 56 % for two stackings) is also
approx. independent, selecting 450k rotaconformers in total.
pseudo-crocodile: this leads to approximately 19 million poses.
However, distance criteria need to be relaxed by 0.5 to account for grid spacing, bringing
the number of poses to 130 million. However, the best RMSD is 0.43 A!
NOTE: Instead of filtering at sin(angle)<0.4, one might consider a stricter cutoff.
For example, angle<15 degrees corresponds only to 3.4 % instead of 8.3 %
of the rotamers, a factor 2.44. For the double stacking, the factor would be squared
too, i.e. an factor 6 in reduction of conformational space.
However, one must consider that filtering at 15 degrees only covers 62.9 % of stackings instead of 94.6 %.
In fact, for the 1B7F test, all rotaconformers are lost!
\ No newline at end of file
...@@ -40,13 +40,14 @@ Under 0.4: 2362, 79.0 percent ...@@ -40,13 +40,14 @@ Under 0.4: 2362, 79.0 percent
Under 0.5: 2662, 89.1 percent Under 0.5: 2662, 89.1 percent
Rotational space: distribution of sin(ring-ring plane angle) for random planes Rotational space: distribution of sin(ring-ring plane angle) for random planes
Under 0.4: 8.5 percent Under 0.4: 8.2 percent
Under 0.5: 13.6 percent Under 0.5: 13.2 percent
Translational space Translational space
Define a grid of 1.0 Angstroms spacing. Define a grid of 1/3*sqrt(3) Angstroms spacing.
This will give a maximum distance from the center of 0.87 A This will give a maximum distance from the center of 0.5 A
and a mean square distance from the center of sqrt(1/4) = 0.5 A and a mean square distance from the center of sqrt(a**2/4) = 0.29 A
Filtering: center-center distance <= 5.0 A Filtering: center-center distance <= 5.0 A
and corrected center-center distance between 2.3 and 3.8 A and corrected center-center distance between 2.3 and 3.8 A
Number of grid points: 162 8.0 0.5773502691896257
Number of grid points: 886
plot-angle-corrected-vector.png

456 KiB | W: | H:

plot-angle-corrected-vector.png

456 KiB | W: | H:

plot-angle-corrected-vector.png
plot-angle-corrected-vector.png
plot-angle-corrected-vector.png
plot-angle-corrected-vector.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -18,6 +18,7 @@ corrected_dis = corrected_dis[mask] ...@@ -18,6 +18,7 @@ corrected_dis = corrected_dis[mask]
sin_angle = sin_angle[mask] sin_angle = sin_angle[mask]
center_dis = center_dis[mask] center_dis = center_dis[mask]
np.random.seed(0)
r1 = Rotation.random(200).as_matrix()[:, 2] r1 = Rotation.random(200).as_matrix()[:, 2]
r2 = Rotation.random(200).as_matrix()[:, 2] r2 = Rotation.random(200).as_matrix()[:, 2]
random_cross = np.cross(r1[:, None, :], r2[None, :, :]) random_cross = np.cross(r1[:, None, :], r2[None, :, :])
...@@ -92,15 +93,16 @@ print("Under 0.4: {:.1f} percent".format((random_sin_ang < 0.4).sum()/len(random ...@@ -92,15 +93,16 @@ print("Under 0.4: {:.1f} percent".format((random_sin_ang < 0.4).sum()/len(random
print("Under 0.5: {:.1f} percent".format((random_sin_ang < 0.5).sum()/len(random_sin_ang) * 100)) print("Under 0.5: {:.1f} percent".format((random_sin_ang < 0.5).sum()/len(random_sin_ang) * 100))
print() print()
print("Translational space") print("Translational space")
print("Define a grid of 1.0 Angstroms spacing.") print("Define a grid of 1/3*sqrt(3) Angstroms spacing.")
print("This will give a maximum distance from the center of 0.87 A") print("This will give a maximum distance from the center of 0.5 A")
print(" and a mean square distance from the center of sqrt(1/4) = 0.5 A") print(" and a mean square distance from the center of sqrt(a**2/4) = 0.29 A")
print("Filtering: center-center distance <= 5.0 A") print("Filtering: center-center distance <= 5.0 A")
print(" and corrected center-center distance between 2.3 and 3.8 A") print(" and corrected center-center distance between 2.3 and 3.8 A")
lateral_slope = 1.78966 lateral_slope = 1.78966
a = 1.0 a = 1.0/3 * np.sqrt(3)
max_dist = 5 # max center-center distance max_dist = 5 # max center-center distance
max_steps = np.floor(max_dist / a) max_steps = np.floor(max_dist / a)
print(max_steps, a)
space = np.arange(-max_steps, max_steps+1) * a space = np.arange(-max_steps, max_steps+1) * a
grid = np.stack(np.meshgrid(space, space, space, indexing='ij'), axis=-1) grid = np.stack(np.meshgrid(space, space, space, indexing='ij'), axis=-1)
grid_center_dis = norm(grid, axis=3) grid_center_dis = norm(grid, axis=3)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment