library(bio3d)
traj <- read.ncdf("simulation_325/trajectory.netcdf")
## [1] "Reading file simulation_325/trajectory.netcdf"
## [1] "Produced by program: cpptraj"
## [1] "File conventions AMBER version 1.0"
## [1] "Frames: 250000"
## [1] "Atoms: 304"
reference_pdb <- read.pdb("../1L2Y_Conf_01.pdb") # Experimental structure
##   HEADER    DE NOVO PROTEIN                         25-FEB-02   1L2Y
traj_pdb <- read.pdb("traj.pdb") # Frame from trajectory, required because atom indices differ from the experimental

print(reference_pdb$xyz)
## 
##    Total Frames#: 1
##    Total XYZs#:   912,  (Atoms#:  304)
## 
##     [1]  -8.901  4.127  -0.555  <...>  -1.341  10.903  1.473  [912] 
## 
## + attr: Matrix DIM = 1 x 912
print(traj)
## 
##    Total Frames#: 250000
##    Total XYZs#:   912,  (Atoms#:  304)
## 
##     [1]  2.378  0.638  0.629  <...>  -93.672  27.127  -140.77  [228000000] 
## 
## + attr: Matrix DIM = 250000 x 912
fixed.inds <- atom.select(reference_pdb, "backbone", elety="CA")
mobile.inds <- atom.select(traj_pdb, "backbone", elety="CA")

xyz <- fit.xyz(
  fixed=reference_pdb$xyz, mobile=traj,
  fixed.inds=fixed.inds$xyz,
  mobile.inds=mobile.inds$xyz
)
pc <- pca.xyz(xyz)
plot(pc, col=bwr.colors(nrow(xyz)))

p1 <- mktrj.pca(pc, pc=1, b=pc$au[,1], file="pc1.pdb", resid=traj_pdb$atom$resid, resno=traj_pdb$atom$resno, eleno=traj_pdb$atom$eleno, elety=traj_pdb$atom$elety)
p2 <- mktrj.pca(pc, pc=2,b=pc$au[,2], file="pc2.pdb", resid=traj_pdb$atom$resid, resno=traj_pdb$atom$resno, eleno=traj_pdb$atom$eleno, elety=traj_pdb$atom$elety)
p3 <- mktrj.pca(pc, pc=3,b=pc$au[,2], file="pc3.pdb", resid=traj_pdb$atom$resid, resno=traj_pdb$atom$resno, eleno=traj_pdb$atom$eleno, elety=traj_pdb$atom$elety)
p4 <- mktrj.pca(pc, pc=4,b=pc$au[,2], file="pc4.pdb", resid=traj_pdb$atom$resid, resno=traj_pdb$atom$resno, eleno=traj_pdb$atom$eleno, elety=traj_pdb$atom$elety)