Problem with pc1.pdb output file

Issue #374 resolved
jbabula created an issue

Hello,

I have recently experienced an issue quite similar to Issue #243 where the output pdb of the p1 <- mktrj.pca(pc, pc=1, b=pc$au[,1], file=pc1.pdb") command generates a pdb that connects the C terminus of one monomer to the N terminus of the second in my dimer although they are not connected in the pdb input file. This concerns me because I am unsure if the prior calculations to determine the principal components considered this bond to be existing or not. I have attached a screenshot of the improper bond (dimer.png) along with the original pdb that was generated from tleap when I made this simulation (alpha_nowat.pdb) as well as the topology file (alpha_nowat.top). I have also attached the second pdb file I modified to match the format of the example pdb used in the bio3d library (alpha_chain.pdb) which still gave me no luck in generating a pc1.pdb file without the improper bond. Am I missing some type of indicator in my pdb file to signify the end of chain A?

I should also note that when viewing this dcd (alpha_sim1_700.dcd) in vmd, using the pdb file as the parm file to load this simulation also generates the improper bond, whereas when I use the topology file I do not experience this issue.

Comments (4)

  1. Lars Skjærven

    Hei, Nothing to be worried about - this is just a visualization problem. Note that your call to function mktrj.pca contains nothing but the principal component "vectors". Consequently, the resulting PDB file contains only coordinates and noting about topology. You can pass additional arguments (e.g. residue numbers, identifiers, chain identiferis etc) to the function write.pdb. An example:

    pdb = read.pdb("1hel")
    pdb = trim(pdb, "calpha")
    
    m = nma(pdb)
    
    # will generate a trajectory containing no info on the protein topology
    mktrj(m, file="R.pdb")
    
    # generate traj with the correct sequence
    mktrj(m, file="R.pdb", resid=pdb$atom$resid)
    
    # you can also pass the entire pdb object
    mktrj(m, file="R.pdb", pdb=pdb)
    

    Here I used mktrj.nma as an example, but the same will work for mktrj.pca. If your PCA is performed on simulation data (e.g. MD simulation) just pass the pdb object that fits the trajectory in which you did your PCA.

    Please see the manual for this information, i.e. help(mktrj) and help(write.pdb).

    Hope it helps.

    Lars

  2. Log in to comment