Superimpose and RMSD

using MDToolbox, PyPlot
PyPlot.plt.style.use("seaborn-colorblind");
ENV["COLUMNS"] = 110; #display width for MDToolbox
t = readpdb("data/3gb1.pdb")
32x855 TrjArray{Float64, Int64}
| A                          | A                          |  …   A                          |
| 1MET                       | 1MET                       |  …   56GLU                      |
| 1N                         | 2CA                        |  …   855HG3                     |
|   -13.15    -1.71     5.51 |   -12.20    -2.85     5.70 |  …      10.24     2.24    -4.53 |
|   -13.16    -2.75     4.19 |   -12.38    -3.43     5.26 |         10.29     1.79    -3.20 |
|   -13.26    -2.20     5.12 |   -12.23    -3.26     5.29 |         11.09     3.24    -6.13 |
|   -12.45    -4.30     6.28 |   -12.25    -3.22     5.28 |         11.75     2.57    -3.31 |
|   -13.05    -1.52     5.31 |   -12.15    -2.68     5.56 |         10.46     1.51    -3.50 |
|   -12.98    -3.74     6.65 |   -12.43    -3.31     5.34 |  …      11.26     3.06    -3.59 |
|   -13.03    -2.10     3.64 |   -12.47    -2.79     4.83 |         10.38     1.53    -3.30 |
|   -13.00    -2.17     5.21 |   -12.09    -3.19     5.78 |         11.32     3.37    -5.78 |
|   -12.57    -2.96     3.87 |   -12.12    -3.42     5.21 |         10.36     1.38    -3.53 |
|   -12.60    -2.85     4.27 |   -12.16    -3.02     5.68 |         10.44     1.40    -3.37 |
|   -13.12    -1.61     4.72 |   -12.34    -2.60     5.52 |  …      10.96     3.58    -5.68 |
|             ⋮              |             ⋮              |  ⋱               ⋮              |
|   -13.46    -2.54     6.05 |   -12.41    -3.14     5.18 |         10.33     1.63    -3.72 |
|   -12.61    -4.31     6.34 |   -12.22    -3.51     5.15 |         10.26     1.56    -3.59 |
|   -13.24    -2.72     6.28 |   -12.16    -3.34     5.45 |         11.30     2.91    -3.41 |
|   -13.21    -2.29     5.61 |   -12.13    -3.31     5.53 |         11.76     2.84    -5.65 |
|   -12.75    -2.42     4.33 |   -12.22    -2.96     5.61 |  …      11.53     3.05    -5.67 |
|   -13.32    -2.12     5.10 |   -12.27    -3.17     5.25 |         10.38     1.88    -3.32 |
|   -13.07    -2.31     4.32 |   -12.27    -3.22     5.19 |         11.65     3.11    -5.90 |
|   -12.76    -3.69     6.68 |   -12.11    -3.33     5.38 |         11.51     2.97    -5.63 |
|   -13.21    -2.55     5.53 |   -12.06    -3.41     5.11 |         10.26     1.60    -3.20 |
|   -13.13    -2.12     4.11 |   -12.34    -3.00     5.02 |  …      12.68     3.28    -4.88 |
|   -12.81    -2.86     4.32 |   -12.23    -3.33     5.62 |          9.98     2.33    -5.34 |
t = t["atomname CA"]
32x56 TrjArray{Float64, Int64}
| A                          | A                          |  …   A                          |
| 1MET                       | 2THR                       |  …   56GLU                      |
| 1CA                        | 2CA                        |  …   56CA                       |
|   -12.20    -2.85     5.70 |    -8.56    -2.53     6.83 |  …      11.49     0.13    -5.58 |
|   -12.38    -3.43     5.26 |    -8.87    -2.64     6.54 |         11.44     0.44    -5.31 |
|   -12.23    -3.26     5.29 |    -8.72    -2.69     6.68 |         11.25     0.63    -5.48 |
|   -12.25    -3.22     5.28 |    -8.71    -2.59     6.57 |         11.68    -0.09    -5.47 |
|   -12.15    -2.68     5.56 |    -8.52    -2.44     6.78 |         11.68    -0.04    -5.48 |
|   -12.43    -3.31     5.34 |    -8.88    -2.65     6.64 |  …      11.38     0.31    -5.62 |
|   -12.47    -2.79     4.83 |    -8.96    -2.38     6.31 |         11.32     0.25    -5.52 |
|   -12.09    -3.19     5.78 |    -8.49    -2.67     7.00 |         11.30     0.70    -5.25 |
|   -12.12    -3.42     5.21 |    -8.62    -2.86     6.66 |         11.62    -0.11    -5.43 |
|   -12.16    -3.02     5.68 |    -8.57    -2.46     6.85 |         11.66    -0.05    -5.34 |
|   -12.34    -2.60     5.52 |    -8.73    -2.27     6.76 |  …      11.08     0.87    -5.37 |
|             ⋮              |             ⋮              |  ⋱               ⋮              |
|   -12.41    -3.14     5.18 |    -8.91    -2.49     6.59 |         11.38     0.16    -5.77 |
|   -12.22    -3.51     5.15 |    -8.73    -2.78     6.53 |         11.64     0.04    -5.38 |
|   -12.16    -3.34     5.45 |    -8.67    -2.57     6.82 |         11.47     0.16    -5.46 |
|   -12.13    -3.31     5.53 |    -8.57    -2.69     6.80 |         11.61     0.16    -5.16 |
|   -12.22    -2.96     5.61 |    -8.63    -2.57     6.89 |  …      11.24     0.31    -5.38 |
|   -12.27    -3.17     5.25 |    -8.78    -2.54     6.67 |         11.39     0.51    -5.45 |
|   -12.27    -3.22     5.19 |    -8.76    -2.62     6.60 |         11.36     0.48    -5.34 |
|   -12.11    -3.33     5.38 |    -8.60    -2.68     6.76 |         11.52     0.26    -5.29 |
|   -12.06    -3.41     5.11 |    -8.63    -2.73     6.65 |         11.30     0.45    -5.44 |
|   -12.34    -3.00     5.02 |    -8.86    -2.42     6.49 |  …      11.33     0.19    -5.53 |
|   -12.23    -3.33     5.62 |    -8.71    -2.59     6.92 |         11.31     0.03    -5.65 |
t_fitted = superimpose(t[1, :], t)
32x56 TrjArray{Float64, Int64}
| A                          | A                          |  …   A                          |
| 1MET                       | 2THR                       |  …   56GLU                      |
| 1CA                        | 2CA                        |  …   56CA                       |
|   -12.20    -2.84     5.70 |    -8.56    -2.53     6.83 |  …      11.49     0.13    -5.58 |
|   -12.38    -3.43     5.26 |    -8.87    -2.64     6.54 |         11.43     0.45    -5.31 |
|   -12.23    -3.26     5.30 |    -8.71    -2.69     6.69 |         11.24     0.63    -5.49 |
|   -12.24    -3.26     5.31 |    -8.70    -2.62     6.60 |         11.66    -0.06    -5.49 |
|   -12.16    -2.69     5.58 |    -8.52    -2.45     6.80 |         11.66    -0.02    -5.49 |
|   -12.41    -3.32     5.37 |    -8.86    -2.67     6.66 |  …      11.36     0.32    -5.64 |
|   -12.47    -2.80     4.83 |    -8.96    -2.39     6.30 |         11.33     0.26    -5.52 |
|   -12.08    -3.19     5.78 |    -8.49    -2.68     7.00 |         11.30     0.71    -5.26 |
|   -12.12    -3.43     5.22 |    -8.62    -2.87     6.67 |         11.60    -0.10    -5.44 |
|   -12.17    -3.05     5.68 |    -8.58    -2.48     6.85 |         11.65    -0.03    -5.34 |
|   -12.33    -2.61     5.52 |    -8.72    -2.28     6.76 |  …      11.08     0.88    -5.37 |
|             ⋮              |             ⋮              |  ⋱               ⋮              |
|   -12.41    -3.15     5.20 |    -8.91    -2.49     6.60 |         11.37     0.16    -5.78 |
|   -12.22    -3.54     5.19 |    -8.72    -2.81     6.56 |         11.61     0.06    -5.40 |
|   -12.16    -3.34     5.48 |    -8.66    -2.57     6.83 |         11.45     0.17    -5.47 |
|   -12.13    -3.31     5.55 |    -8.58    -2.70     6.82 |         11.58     0.18    -5.17 |
|   -12.22    -2.97     5.60 |    -8.63    -2.58     6.89 |  …      11.24     0.31    -5.37 |
|   -12.27    -3.17     5.26 |    -8.77    -2.54     6.68 |         11.38     0.51    -5.46 |
|   -12.28    -3.22     5.19 |    -8.76    -2.63     6.60 |         11.36     0.48    -5.34 |
|   -12.11    -3.35     5.42 |    -8.59    -2.71     6.79 |         11.49     0.28    -5.31 |
|   -12.06    -3.41     5.13 |    -8.62    -2.73     6.66 |         11.29     0.45    -5.45 |
|   -12.34    -3.01     5.02 |    -8.86    -2.43     6.49 |  …      11.33     0.20    -5.53 |
|   -12.23    -3.33     5.60 |    -8.70    -2.60     6.91 |         11.31     0.04    -5.65 |
rmsd = compute_rmsd(t[1, :], t_fitted)
32-element Vector{Float64}:
 8.853627753684163e-16
 0.28146368488385065
 0.2750350748475739
 0.24973464134169102
 0.22735600178052792
 0.2653009125188729
 0.28969307997815175
 0.2753408219451508
 0.2815643693410406
 0.2782390718028653
 0.3099827765697495
 0.174968200571879
 0.2804481185873863
 ⋮
 0.26335019491087885
 0.28936993048207693
 0.30942464286388355
 0.25404746685533475
 0.2755833794901712
 0.1926899282393233
 0.25043406886062536
 0.20596652429140358
 0.22978870831859918
 0.2535727519868658
 0.24359209784417915
 0.262633972279415
fig, ax = subplots(figsize=(8, 6))
ax.plot(1:t.nframe, rmsd, linewidth=3)
xlabel("NMR structures", fontsize=20)
ylabel("RMSD from the first structure", fontsize=20)

# detailed options (if your prefer to change details)
ax.set(xlim=[1, t.nframe], ylim=[0.0, 0.4])
ax.grid(linestyle="--", linewidth=0.5)
ax.xaxis.set_tick_params(which="major",labelsize=15)
ax.yaxis.set_tick_params(which="major",labelsize=15)
ax.grid(linestyle="--", linewidth=0.5)
tight_layout()

savefig("superimpose_rmsd.png", dpi=350)

png