I wonder what is the best way to superpose two multi-chain proteins, and explicitly specify the chains to include in superposition. I know that I can read only the wanted chains into the alignment, but I also want to make sure that the other chains move according to the superposition.
Here are two ways we could think of: 1. read only the wanted chains and do superposition. Then move the other chains accordingly using functions like selection.rotate_origin(), selection.rotate_mass_center() and selection.transform().
2. model1 <= all chains in protein A model2 <= all chains in protein B model3 <= the chain(s) selected for superposition in protein B first, superpose model3 to model1 (model3 is moved) second, superpose model2 to model3 (model2 is moved)
Are there any better ways? Thank you.
On 03/31/2011 09:08 AM, Yingjie Lin wrote: > I wonder what is the best way to superpose two multi-chain proteins, > and explicitly specify the chains to include in superposition. I know > that I can read only the wanted chains into the alignment, but I also > want to make sure that the other chains move according to the > superposition.
Just to be clear here, we should distinguish structural *alignment* (which is what SALIGN does) from superposition (which is what selection.superpose() does). Superposition simply rotates and translates one protein, without changing the alignment, to minimize the RMSD between Calpha atoms in aligned residues. Structural alignment also adds or removes gaps, changing the aligned residues.
If you really want to do superposition, simply use selection.superpose() and just give it a selection of atoms in the chains you want to superpose. The whole protein will be moved, of course, but only the RMSD of the selection will be minimized.
If you want to do a structural alignment, your first suggestion is probably better - read in just the chains you want, make the alignment, then rotate and translate the full protein accordingly.
Ben Webb, Modeller Caretaker