Skip to content
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

End-to-end distance between atoms? #4441

Open
tractatus opened this issue Feb 15, 2024 · 2 comments
Open

End-to-end distance between atoms? #4441

tractatus opened this issue Feb 15, 2024 · 2 comments

Comments

@tractatus
Copy link

Hi,

Completely new to OpenMM and was looking through the tutorials for a step-by-step guide to measure and output the end-to-end distance between two atoms in nanometers during the simulation.

Similar to this tutorial for GROMACS:
https://gromacstutorials.github.io/doc-sphinx/build/html/tutorials/stretchingpolymer.html

I have the following mol2 file and want to get the end-to-end distance between pos 94 and pos 67 (both nitrogen):

pegylated_bisTz_594.mol
  ChemDraw02132414372D

134147  0  0  0  0  0  0  0  0999 V2000
   -4.0634   -0.1538    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.0714    0.6706    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.6615    1.2487    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -5.4865    1.2401    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -6.0635    0.6505    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -6.0549   -0.1745    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   -5.4659   -0.7520    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.6409   -0.7434    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.2565    1.9671    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.6759    2.6775    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -5.5009    2.6689    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -5.9059    1.9505    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -5.8710   -1.4704    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -5.4516   -2.1802    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.6266   -2.1722    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.2210   -1.4532    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -6.7653   -0.5944    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -7.4837   -0.1893    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -8.1941   -0.6087    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -8.9126   -0.2037    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   -9.6230   -0.6236    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -9.6144   -1.4486    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
  -10.3414   -0.2186    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -10.7614    0.4918    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -11.5864    0.4833    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -11.9914   -0.2352    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -11.5715   -0.9456    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -10.7465   -0.9370    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -12.8164   -0.2438    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -13.2364    0.4661    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.0614    0.4580    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.4664   -0.2610    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
  -14.0465   -0.9708    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -13.2215   -0.9622    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.4515   -1.6892    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.0316   -2.3997    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -13.2066   -2.3911    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -12.8015   -1.6726    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -12.8308    1.1851    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -13.2507    1.8955    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.0757    1.8875    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.4808    1.1679    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -6.7567   -1.4194    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
  -14.4372   -3.1181    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
  -14.0173   -3.8285    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -13.1923   -3.8199    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -12.7872   -3.1015    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -12.8457    2.6145    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -13.2656    3.3244    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.0906    3.3158    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.4957    2.5973    0.0000 N   0  3  0  0  0  0  0  0  0  0  0  0
  -13.5973   -4.5384    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.5948   -4.4175    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -15.2622   -3.1267    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -11.9622   -3.0929    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -11.9296    1.1564    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -15.3207    2.5887    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -14.8090    3.7214    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -13.8855    4.1150    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -12.0207    2.6225    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -11.5245    1.8749    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
  -12.4967    1.1347    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
   -3.2762   -0.4008    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   -2.7978    0.2713    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   -3.2762    0.9336    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   13.2582   -0.5978    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   14.0832   -0.5984    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   14.4957    0.1160    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   14.0837    0.8310    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   13.2587    0.8310    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   12.8457    0.1172    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   15.3207    0.1154    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   12.0207    0.1177    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   11.6087    0.8322    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   10.7837    0.8327    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   10.3707    0.1189    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   10.7832   -0.5961    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   11.6082   -0.5967    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    9.5457    0.1195    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    8.8312   -0.2925    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    8.1168    0.1200    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    7.4024   -0.2919    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    6.6879    0.1212    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
    5.9735   -0.2908    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    5.2591    0.1223    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.5441   -0.2896    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.8302    0.1229    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    3.1152   -0.2890    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.4014    0.1240    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.6864   -0.2879    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    0.9720    0.1252    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    5.9729   -1.1158    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
   12.5351    3.1078    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   13.3601    3.1072    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   13.7726    3.8216    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   13.3607    4.5361    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   12.5357    4.5366    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   12.1226    3.8228    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   14.5976    3.8211    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   11.2976    3.8234    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   10.8857    4.5378    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   10.0607    4.5384    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    9.6476    3.8245    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   10.0601    3.1095    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   10.8851    3.1089    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    8.8226    3.8251    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    8.1082    3.4126    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    7.3938    3.8257    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    6.6788    3.4137    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    5.9644    3.8268    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
    5.2499    3.4149    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.5355    3.8279    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.8211    3.4154    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.1066    3.8285    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    2.3922    3.4166    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.6778    3.8297    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.9634    3.4177    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    5.2494    2.5899    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    0.9725    0.9502    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.2587    1.3633    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
    0.2592    2.1883    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.9737    2.6002    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -0.4563    0.9508    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -1.1702    1.3638    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -1.8852    0.9519    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -2.5990    1.3650    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  -11.5423   -3.8033    0.0000 S   0  0  0  0  0  0  0  0  0  0  0  0
  -10.8347   -3.3845    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
  -12.2504   -4.2210    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
  -11.1240   -4.5109    0.0000 O   0  5  0  0  0  0  0  0  0  0  0  0
  -11.6156    3.3415    0.0000 S   0  0  0  0  0  0  0  0  0  0  0  0
  -12.3318    3.7454    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
  -10.9000    2.9382    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
  -11.2123    4.0577    0.0000 O   0  5  0  0  0  0  0  0  0  0  0  0
127128  2  0        0
127129  2  0        0
127130  1  0        0
 55127  1  0        0
131132  2  0        0
131133  2  0        0
131134  1  0        0
 60131  1  0        0
  1  2  1  0        0
  2  3  1  0        0
  3  4  2  0        0
  4  5  1  0        0
  5  6  1  0        0
  6  7  1  0        0
  7  8  2  0        0
  8  1  1  0        0
  3  9  1  0        0
  9 10  2  0        0
 10 11  1  0        0
 11 12  2  0        0
 12  4  1  0        0
  7 13  1  0        0
 13 14  2  0        0
 14 15  1  0        0
 15 16  2  0        0
 16  8  1  0        0
  6 17  1  0        0
 17 18  1  0        0
 18 19  1  0        0
 19 20  1  0        0
 20 21  1  0        0
 21 22  2  0        0
 21 23  1  0        0
 23 24  1  0        0
 24 25  2  0        0
 25 26  1  0        0
 26 27  2  0        0
 27 28  1  0        0
 28 23  2  0        0
 26 29  1  0        0
 29 30  2  0        0
 30 31  1  0        0
 31 32  1  0        0
 32 33  1  0        0
 33 34  2  0        0
 34 29  1  0        0
 33 35  1  0        0
 35 36  2  0        0
 36 37  1  0        0
 37 38  2  0        0
 38 34  1  0        0
 30 39  1  0        0
 39 40  2  0        0
 40 41  1  0        0
 41 42  1  0        0
 42 31  2  0        0
 17 43  2  0        0
 36 44  1  0        0
 44 45  1  0        0
 45 46  1  0        0
 46 47  2  0        0
 47 37  1  0        0
 40 48  1  0        0
 48 49  2  0        0
 49 50  1  0        0
 50 51  1  0        0
 51 41  2  0        0
 45 52  1  0        0
 45 53  1  0        0
 44 54  1  0        0
 47 55  1  0        0
 25 56  1  0        0
 51 57  1  0        0
 50 58  1  0        0
 50 59  1  0        0
 48 60  1  0        0
 56 61  1  0        0
 56 62  2  0        0
  1 63  1  0        0
 63 64  2  0        0
 64 65  1  0        0
 65  2  1  0        0
 66 67  1  0        0
 67 68  2  0        0
 68 69  1  0        0
 69 70  2  0        0
 70 71  1  0        0
 71 66  2  0        0
 68 72  1  0        0
 71 73  1  0        0
 73 74  1  0        0
 74 75  2  0        0
 75 76  1  0        0
 76 77  2  0        0
 77 78  1  0        0
 78 73  2  0        0
 76 79  1  0        0
 79 80  1  0        0
 80 81  1  0        0
 81 82  1  0        0
 82 83  1  0        0
 83 84  1  0        0
 84 85  1  0        0
 85 86  1  0        0
 86 87  1  0        0
 87 88  1  0        0
 88 89  1  0        0
 89 90  1  0        0
 90 91  1  0        0
 84 92  2  0        0
 93 94  1  0        0
 94 95  2  0        0
 95 96  1  0        0
 96 97  2  0        0
 97 98  1  0        0
 98 93  2  0        0
 95 99  1  0        0
 98100  1  0        0
100101  1  0        0
101102  2  0        0
102103  1  0        0
103104  2  0        0
104105  1  0        0
105100  2  0        0
103106  1  0        0
106107  1  0        0
107108  1  0        0
108109  1  0        0
109110  1  0        0
110111  1  0        0
111112  1  0        0
112113  1  0        0
113114  1  0        0
114115  1  0        0
115116  1  0        0
116117  1  0        0
111118  2  0        0
 91119  1  0        0
119120  1  0        0
120121  1  0        0
121122  1  0        0
122117  1  0        0
120123  1  0        0
123124  1  0        0
124125  1  0        0
125126  1  0        0
126 65  1  0        0
M  CHG  3  51   1 130  -1 134  -1
M  STY  1   1 SUP
M  SLB  1   1   1
M  SAL   1  4 127 128 129 130
M  SBL   1  1   4
M  SMT   1 SO3-
M  SBV   1   4   -0.4199    0.7104
M  STY  1   2 SUP
M  SLB  1   2   2
M  SAL   2  4 131 132 133 134
M  SBL   2  1   8
M  SMT   2 SO3-
M  SBV   2   8   -0.4051   -0.7190
M  END

@peastman
Copy link
Member

You can do something like this to print out the current distance:

positions = simulation.context.getState(getPositions=True).getPositions()
print(norm(positions[94]-positions[67]))

If you want to record it periodically during the simulation you might do something like

distances = []
for i in range(n):
    simulation.step(1000)
    positions = simulation.context.getState(getPositions=True).getPositions()
    distances.append(norm(positions[94]-positions[67]).value_in_unit(nanometers))

Another option is that you just record your whole trajectory to a DCD or XTC file. Then you can use a tool like MDTraj or MDAnalysis to analyze it later and extract the distances.

@tractatus
Copy link
Author

@peastman thanks for the super quick response!

I'll play around with this over the weekend and see where I get and then post a reproducible example here for anyone else who might be interested in this for the future, and then close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants