Options to align two models and calculate per-residue RMSD

Dear ChimeraX users, I'm working with some different ribosome structures which I first want to align to a reference structure (as rigid bodies) and then calculate RMSD values with respect to the reference. The number of chains are the same between my structures and the reference, and the chain names + residue numbers are congruent as well. However, some of my chains have residues missing or added at the ends, have a small number of insertions (using insertion codes in the pdb file) or point mutations. What I have tried so far is: "matchmaker #2 to #1 pairing ss show true" "save file.defattr #2 attrName r:seq_rmsd modelIds false" (to store the resulting RMSD values for later use) which aligns based on CA for protein chains and C4' for RNA. I haven't given any explicit chain specification (each model has 56 chains). Am I correct to think that the RMSD values I get are based on a whole-structure rigid-body alignment that takes all chains into account simultaneously? Or does it align each chain in #2 to its matching chain in #1 individually? For the proteins I think per-residue CA-RMSD values are suitable for what I need, but for the RNA chains I would like to get per-residue all-atom RMSDs, not just C4'. Can this be achieved with matchmaker? I have also tried to use the align command like this: "align #2 toAtoms #1 each structure matchChainIds true matchNumbering true" which, to my understanding, would do the alignment not just based on CA/C4', but for all atoms. Is that correct? With this, what would be the best way to extract per-residue RMSD values? The "rmsd" command rightfully complains about unequal numbers of atoms between #1 and #2. Is there a way to implicitly select only the atoms that are congruent between #1 and #2? Kind regards, Christian

Hi Christian,
On May 2, 2025, at 3:00 AM, christian.steinmetzger--- via ChimeraX-users <chimerax-users@cgl.ucsf.edu> wrote:
Dear ChimeraX users,
I'm working with some different ribosome structures which I first want to align to a reference structure (as rigid bodies) and then calculate RMSD values with respect to the reference. The number of chains are the same between my structures and the reference, and the chain names + residue numbers are congruent as well. However, some of my chains have residues missing or added at the ends, have a small number of insertions (using insertion codes in the pdb file) or point mutations.
What I have tried so far is:
"matchmaker #2 to #1 pairing ss show true" "save file.defattr #2 attrName r:seq_rmsd modelIds false" (to store the resulting RMSD values for later use)
which aligns based on CA for protein chains and C4' for RNA. I haven't given any explicit chain specification (each model has 56 chains). Am I correct to think that the RMSD values I get are based on a whole-structure rigid-body alignment that takes all chains into account simultaneously?
Yes.
Or does it align each chain in #2 to its matching chain in #1 individually?
That would significantly rearrange structure 2. No, it doesn't do this.
For the proteins I think per-residue CA-RMSD values are suitable for what I need, but for the RNA chains I would like to get per-residue all-atom RMSDs, not just C4'. Can this be achieved with matchmaker?
No, matchmaker only considers the atoms it's using in the pairing.
I have also tried to use the align command like this:
"align #2 toAtoms #1 each structure matchChainIds true matchNumbering true"
which, to my understanding, would do the alignment not just based on CA/C4', but for all atoms. Is that correct?
That's right.
With this, what would be the best way to extract per-residue RMSD values? The "rmsd" command rightfully complains about unequal numbers of atoms between #1 and #2. Is there a way to implicitly select only the atoms that are congruent between #1 and #2?
I don't know how conversant with Python you are, but I think you have to resort to Python for this. You can use chimera.core.commands.run to run ChimeraX commands, and run() will return information from the command. For instance, matchmaker and align both return information about the atom/residue pairing used (among other things; matchmaker <https://github.com/RBVI/ChimeraX/blob/0906151f4fe91e42e596b48a50b661904300df...> info; align <https://github.com/RBVI/ChimeraX/blob/0906151f4fe91e42e596b48a50b661904300df...> info). There is a collection of ChimeraX Recipes <https://rbvi.github.io/chimerax-recipes/> for how to program various tasks, the Show residue-residue distance heatmap <https://rbvi.github.io/chimerax-recipes/rrdist/rrdist.html> recipe does many of the kinds of things you want to do and would be a reasonable starting point. --Eric Eric Pettersen UCSF Computer Graphics Lab
Kind regards, Christian _______________________________________________ ChimeraX-users mailing list -- chimerax-users@cgl.ucsf.edu To unsubscribe send an email to chimerax-users-leave@cgl.ucsf.edu Archives: https://mail.cgl.ucsf.edu/mailman/archives/list/chimerax-users@cgl.ucsf.edu/
participants (2)
-
christian.steinmetzger@imbim.uu.se
-
Eric Pettersen