I have several pdb files and each of them corresponds to a domain on a protein. I want to merge these files into one single pdb for the whole protein, and the approach I'm looking for should allow me to order these domains according to the order by which they're located on the protein (for example, merging domain A, B, and C by the order CBA). It would be preferable if I can do the merging with VMD but any suggestion would be appreciated.
1 Answer
PyMOL is a rather flexible tool for doing this.
The command create combo, domA or domB or domC
in the PyMOL app will create a single object. However, they will need to be the same chain and segment (segi
). Also you will need to fix the numbering to match what you expect them to be.
To fix this you need to do:
alter domA, chain='A'
alter domA, resv+=0
alter domB, chain='A'
alter domA, resv+=100
alter domC, chain='A'
alter domA, resv+=200
alter all, segi=''
sort
create combo, domA or domB or domC
save combo.pdb, combo
PyMOL can be installed as a Python 3 module, which works in the same way but with pymol.cmd
and is a lot more replicable. But for starting out the App is fine.
import pymol2
with pymol2.PyMOL() as pymol:
pymol.cmd.alter('domA','chain="A"')
etc.
Now. This assumed that the coordinates are where we want them to be. Which is highly unlikely and that there are zero overlaps.
- If there are overlaps, aligning the overlapping residues (
align domB and resi 80-100, domA and resi 80-100
) can be done. Just remember that the first element is the mobile object, the second the target, hence why I wrote it backwards. - If do not have overlaps and want the domains docked together you can use the DEMO tool by the I-Tasser people.
- If you want your domains as "balls on a string" aligned on the x-axis for a nice picture and you do not care if it may not be biological, you may want to check out a Github repo of mine for doing just so (it offsets, aligns if possible and spaces them out, but does not add linkers).
If you want to add linkers, you can use submit your sequence to Phyre or I-Tasser with your missing density model as a reference, or you can add them with rosetta remodel (tricky) or make them up in Coot or PyMOL (bad idea, but if you are in a hurry... here is a tutorial of mine).