Hi,

I need to calculate the RMSD for the same residue, e.g. 131Thr, from 2 pdb 
files for the same target. As I need a local alignment, I use a sliding window 
of 5 residues (the residue of interest is in the middle.)
I have adapted the script from https://pymolwiki.org/index.php/RmsdByResidue 
(also see below my code below) by adding a sliding window, but I need advice on 
the following:

- I would need to check whether I am actually comparing the intended residues, 
e.g. 131Thr, 131Thr, or whether the same residues (e.g. His, Asp, His), with 
specific residue names and numbers   are in the selection I have chosen from 
both pdb files for my sliding window.
The reason:
I have coded up the script below, but often it skips and doesn't compare two 
residues,  because the atom count is different between the residue from protein 
A and protein B.
(It is exactly double the number, I have already checked and excluded problems 
like occupancy and different conformations as potential causes.)

- I constructed a sliding window by selecting two residues before the residue 
of interest and two residues which follow said residue. (I know that residues 
can be missing, I am working on this.)
Is there a better way for constructing a sliding window? I have not found such 
a method in pymol.

For anyone interested, I have attached a code snipplet below.
I am sorry, if these seem like obvious questions, but I tried various 
approaches and I feel that I need a push in the right direction. I have the 
feeling that I am missing something fundamental.

Many thanks for any suggestion!
Anne (Newbie in Pymol)

######################################


Code snipplet (Python/Pymol interface):

  referenceProteinChain = cmd.fetch(pbdstructure1)
  targetProteinChain = cmd.fetch(pdbstructure2)
  sel = referenceProteinChain
  list_atoms = [[133, 133]] # example list, I want to calculate the rmsd 
between residue 133 and residue 133 of two pdb structures

for j in list_atoms:
   # I formulate my sliding window of 5 residues, my residue of interest is in 
the middle
    ref_begin = int(j[0])-2
    ref_end = int(j[0])+2
    target_begin = int(j[1])-2
    target_end = int(j[1])+2

    # I create a selection for the reference protein and the target protein
    cmd.create("ref_gzt", referenceProteinChain+" and polymer and not alt B and 
not Alt C and not alt D  and resi %s-%s"
    cmd.alter("ref_gzt", "chain='A'")
    cmd.alter("ref_gzt", "segi=''")
    cmd.create("target_gzt", targetProteinChain+" and polymer and  not alt B 
and not Alt C and not alt D  and resi %s-%s" %(target_begin,target_end) )
    cmd.alter("target_gzt", "chain='A'")
    cmd.alter("target_gzt", "segi=''")

    # I align my selected 5 residues for a local alignment window
    cmd.align("target_gzt","ref_gzt",object="align", cycles =5)


   # select alpha carbon of in reference structure to loop over
    calpha=cmd.get_model(sel+" and name CA and not alt B and not Alt C and not 
alt D  and resi %s-%s" %(ref_begin,ref_end) )

   ## here I loop over all residues in the sliding window and calculte the rmsd 
for my residues of interest.
    for g in calpha.atom : I loop over the slinding window
        if g.resi == str(j[0]): ## we select only our residue of interest 
within the sliding window
            if cmd.count_atoms("ref_gzt and polymer and resi 
"+g.resi)==cmd.count_atoms("target_gzt and polymer and resi "+g.resi):

                ## calculte the pairwise RMSD between the residues I specified 
in list_atoms
                rmsdRes=cmd.rms_cur("ref_gzt and polymer and resi 
"+g.resi,"target_gzt and polymer and resi "+g.resi)

_______________________________________________
PyMOL-users mailing list
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
Unsubscribe: 
https://sourceforge.net/projects/pymol/lists/pymol-users/unsubscribe

Reply via email to