You are here

Add new atom

5 posts / 0 new
Last post
Add new atom

Hi everyone,

Is there a way to add a new atom without create a new pose ?

EDIT: Maybe it is not possible, we need to edit the pdb file and reload the pose. At least, can we modify his parameters "on the fly" like vdw radius, charge, etc ... ?

Post Situation: 
Thu, 2013-03-14 02:01

One issue that you run into is that Rosetta is residue-based, rather than atom based. It's not really set up to add arbitrary, free-floating atoms. What you would have to do is create a new residue type with just that atom, or modify an existing residue (either directly or by applying patches) to include that atom in it.

The other question is whether you can add a new atom *type* (which contains most of the properties of the atom, aside from charge). That should be relatively straightforward by editing the files in rosetta/rosetta_database/chemical/atom_type_sets/fa_standard/ (or equivalent if you're not using fa_standard). Doing so programatically will be a little more difficult, as Rosetta makes the assumption that the AtomTypeSets are immutable once loaded. (Even if you could modify them, you wouldn't necessarily get the results you want.)

Perhaps if you elaborate on what you want to do, we could advise on the best way of accomplishing it.

Thu, 2013-03-14 11:29

This is what I tought about rosetta ... in any case, thank you for reply.

The idea is to create perturbations in my structure, not by changing the angles but with free-floating atoms. These free-floating atoms will be pull in a certain direction to perturb the protein's structure. And if I use big atoms (large vdw radius) or tiny atoms (small radius), maybe the results will be different on my structure.

I don't want to change residues, one by one, but a set of residues at the same time.

Fri, 2013-03-15 02:34

The typical way one pulls on atoms in Rosetta is by using constraints (that's the Rosetta name - they're technically "restraints" in standard MD parlance). Specifically, you could create a virtual residue (residue name "VRT") at whatever position you want, and then attach an atom pair constraint between whatever atom you want to pull and the ORIG atom. Depending on how you set up the constraint, this will function like a spring attaching the atom to pull and the virtual residue. You can then translate the virtual residue around, pulling the attached atom(s) with it.

Trying to pull around a protein by directly perturbing *some* of the atom coordinates in a residue doesn't really work all that well in Rosetta. For one thing, the normal scorefunction ("score12") doesn't actually contain any energy terms which enforce intra-residue cohesion. Translating a single atom out of a residue won't automatically drag the rest of the residue with it. It's assumed that when the residues are built they satisfy any relevant distance/angle chemical geometries, and any perturbation will be torsion-angle only. Additionally, there are commonly used processes like packing that will replace the existing geometry with a new, "ideal" geometry.

Finally, as you're using PyRosetta, don't underestimate the power of using for loops to manipulate a set of residues. Depending on what you're doing, you don't need to leave it to Rosetta to treat a given set similarly.

Fri, 2013-03-15 11:03

Well ... I think I will try your method.
Thanks a lot.

Mon, 2013-03-18 02:36