You are here

What is virtual atom means in a params file and how to generate it?

5 posts / 0 new
Last post
What is virtual atom means in a params file and how to generate it?
#1

Greetings,

        I'm learning Rosetta now, when I browse the files, I find that Rosetta's database stores some params files, like 1.3.5_trisbromomethylbenzene_symm.params (in /Rosetta/main/database/chemical/residue_type_sets/fa_standard/residue_types/crosslinker), it contains several V* atoms, and I have trouble understanding the meaning of it. There is also a non-symmetric version of it, named 1.3.5_trisbromomethylbenzene.params, but it still contains virtual atoms. 

       I am wondering how to generate a file containing with these virtual atoms, and how to make a symmertric version of it. 

       Any suggestion would help me a lot. Thanks very much!

Category: 
Post Situation: 
Fri, 2022-11-04 04:53
JasonIsaac

First off, if you haven't yet, take a look at the paper this params file comes from. (Don't forget to take a look at the SI, which goes in more depth regarding the protocol used.) That might help clarify things.

Generally speaking, though, virtual atoms are the way Rosetta keeps track of non-atom coordinates. They exist in the structure, but the don't count as "atoms" for scoring purposes. Therefore, they can be used in various situations where you need to keep track of points, but don't have an atom at that point. They're used for this purpose in a number of different contexts.

I'm not 100%, but I think the virtual atoms in this case are due to the need to keep track of the 3-fold symmetry in the molecule, the axis of which doesn't lie on any atom, as well as to help with the covalent nature of the connections.

Rosetta has symmetry machinery but the way it works is that you need to model each subunit separately. Hence the difference between the symmetric and non-symmetric versions of the params file. Since the axis of symmetry of the designed complex falls in the middle of the residue, in order to work with the symmetry machinery you need to chop up the residue in parts, so each monomer gets a "residue" which consists of one third of the full symmetric residue. The non-symmetric version exists to (much easier) model the residue as single piece when you're not using the symmetry machinery. Virtual atoms and residues are used in the symmetry machinery to keep track of symmetry axies and to represent the partners in the symmetric complex.

The other reason to use virtual atoms here is the covalent connection to the rest of the protein. A common use of virtual atoms is to mark where an atom "should be". For example, the binding partner across a covalent linkage. If you do this on both sides, then you can try to match up the location of the virtual atom with the actual atom in the other residue which it represents. From the difference in position, you can score how well you've recapitulated the covalent bond. With the symmetric version, you don't just have the connections to the rest of the protein, but the connections between the symmetric fragments of the ligand.

To generate a params file with virtual atoms, one way is to have an SDF with Vandium ("V") atoms at the virtual atom locations. The molfile_to_params.py script will recognize those and special case them as virtual atoms. The other way (and probably the way it was done here) is just to manually edit the params file to include the proper virtual atom lines and the other corresponding lines.

Fri, 2022-11-04 07:10
rmoretti

Thank you very much for your detalied reply, rometti! Now I have a better understanding of the virtual atoms. It is very kind of you!

When I looked into the two different params files provided before, I found that the symmetric  verison was actully extracted from the origin version but with some real atoms changed into virtual atoms which still hold its internal coordinate. I guess another reason that these virtual atoms to be introduced are used to describe the interal coordinate of remaining real atoms until the coordinate can be fully described. I notice that in the "ICOOR_INTERNAL" area, the coordinates of CONN(connection) are also described, do the sequence of CONN matter when I try to write a params file with symm manually?  And how can I generate corresponding constraint file with these params file?

Fri, 2022-11-04 20:12
JasonIsaac

Rocco has given a very good explanation above.  I'll probably just be repeating a lot of what he said, but I'll try to fill in what I was trying to do when I made those params files with virtual atoms.

First, the real atoms in the two params files are hopefully fairly straightforward.  The asymmetric version has all of the atoms in the full crosslinker (in the residue form -- i.e. with attachment points replacing the bromines, to model what it looks like after it has reacted with something).  The symmetric version has one third of the molecule, and is meant to be used with Rosetta's symmetry machinery in cases in which you have C3 symmetry.  The symmetry machinery will make three copies of the pieces of the crosslinker, so that you can get a whole crosslinker in a C3-symmetric conformation lying on a symmetry axis.  (The Dang, Wu, Mulligan et al. paper in PNAS that Rocco linked above has scripts that show how to do this in RosettaScripts).

But there was still a challenge: when I sample conformations, or when I energy-minimize, a crosslinker creates cycles, and cycles mean that there's no way to build a kinematic tree without having some breakpoint where bonds can pull apart.  So I need a way of holding the crosslinker bonds together at these non-kinematic connection points.  To do this, I added virtual atoms.  The idea with these virtuals is that, at every point at which the crosslinker can make a covalent attachment to something else (or where the symmetric version can make an attachement either to something else or to another copy of itself), I place a virtual atom where the atom to which it might attach should lie in 3D space.  Since virtual atoms do not have any physical interactions, that virtual atom can pass right through any physical atoms in the thing to which we're attaching.  I can then add harmonic constraints (or "elastic bands") that "pull" the virtual atom on top of the physical atom to which we're attaching.  If the virtual atom and the physical atom overlay, then the bond length and one of the bond angles will be correct.  If I also have a virtual atom on the thing to which we're attaching, and that atom is constrained to lie atop the physical atom in my crosslinker at the attachment point, then the other bond angle will also be correct.  I then only need a dihedral constraint, and I'm all set: the system is fully constrained to maintain good bond geometry even if the connection between the crosslinker and the thing to which it connects is not a kinematic connection.

Hopefully the duplicate explanation helps!  Good luck, and best regards,


     --Vikram

Mon, 2022-11-07 08:53
vmulligan

Thank you very much! I sincerely appreciate your answers. Your explanation helps me a lot!

I tried to make a symmetric params file of my own ligand and made use of virtual atoms, then I added atompair constraints. After few initial attempts, the output file showed a complete structure.  It did work!

Next I will learn more about Rosetta's symmetric machinery and learn how to add more constraints. 

 

Mon, 2022-11-07 19:15
JasonIsaac