please implement get_sidechain_snap()

Case number:845813-992075
Topic:Game: Tools
Opened by:Bletchley Park
Status:Open
Type:Suggestion
Opened on:Saturday, March 10, 2012 - 16:49
Last modified:Saturday, May 16, 2015 - 12:41

It would be very interesting for experimental usage to have the sidechain snap position as a return value from a function likely to be called get_sidechain_snap() as a companion to do_sidechain_snap(,). For the V2 scripts there is I believe rotamer.SetRotamer(), it may be called rotamer.GetRotamer() there.

I would imagine this to be a quick and easy implementation with interesting science benefit.

(Sat, 03/10/2012 - 16:49  |  10 comments)


Joined: 06/17/2010
Joined: 05/19/2009
Groups: Contenders
Status: Closed » Open

Reopened.
This is explicitly NOT the function I am describing.

Please carefully read my description.
GetCount() returns how MANY positions can be made, I ask for the *current* sidechain snap position.

brow42's picture
User offline. Last seen 6 days 7 hours ago. Offline
Joined: 09/19/2011
Groups: None

I've thought about this. Sidechains aren't in discrete positions (or if they are it's very fine grain). If a sidechain has 10 rotamers and you set it to #5, then wiggle sidechain, it's no longer in any of the 10 rotamer positions. So you are asking them to find the closest discrete rotamer position to the current position, which may scale horribly (depending on shake settings, there could be 1000s of rotamer positions). And even if you have this number, if you tried to use it to get back to the original configuration, it wouldn't quite match and your score would be lower.

Joined: 05/19/2009
Groups: Contenders

Sidechains ARE in discrete bins, as made available through the rotamer.GetCount() list. If rotamer.GetCount() returns a value of n there are n possible bins (from 1 to n) in which the sidechain can sit. If you use rotamer.SetRotamer() to set one of those bins as the current position, you can use rotamer.GetRotamer() to read which bin it is currently in. I did not speak of wiggling or changing the model. I read 'would be lower'. You do not know if it would be lower. Not wanting to sound mean, I'm just tired.

brow42's picture
User offline. Last seen 6 days 7 hours ago. Offline
Joined: 09/19/2011
Groups: None

Sidechains CAN be binned. They are NOT ALWAYS in one of those bins. Okay, so, you can get the rotamer bin a sidechain is in after a shake. Maybe you have a use for that.

If the most recent thing done to a sidechain is not Shake, or SetRotamer, or maybe a pull, then it's not in one of those bins. What if I use SetRotamer, then I moved the (removed) sidechain slider to eliminate rotamers and the one I just set got eliminated? Then it's not in a rotamer bin. What is the function supposed to return when the sidechain is in an arbitrary position?

I'm not saying that your script is going to do wiggles or that you're going to change the shake accuracy. I'm saying that at any given moment, with few exceptions, a segment doesn't HAVE a rotamer id. At best, the devs can do a search to find the one that is closest by some measure. The only time it has a rotamer id is when it's just been set, either by shake or SetRotamer.

The discrete rotamers are NEVER at the local optimum. Wiggle sidechains always improves them (even if it's not noticable during the endgame). That's why I say the score will go down if you use SetRotamer.

I'm sure you have your own ideas as to what you want to use this for. To be perfectly clear, I am saying 1) this may be an expensive function to call, and 2) if the intent is to try different conformations and then maybe reject them and go back to where you started, it won't actually do that in most cases.

infjamc's picture
User offline. Last seen 2 years 45 weeks ago. Offline
Joined: 02/20/2009
Groups: Contenders

Part of the problem is that the number of side chain bins and the ID number of the nearest rotamer might change with the backbone configuration. A better solution might be the ability to set and retrieve chi angles (side chain dihedral angles).

brow42's picture
User offline. Last seen 6 days 7 hours ago. Offline
Joined: 09/19/2011
Groups: None

Part of the problem is that the number of side chain bins and the ID number of the nearest rotamer might change with the backbone configuration. A better solution might be the ability to set and retrieve chi angles (side chain dihedral angles).

True as well. ComputerMage finally cornered jflat 2 days ago in global and asked him about that. He thought it unlikely that information would ever be provided to the players.

Joined: 09/21/2011
Groups: Void Crushers

We can compute any angle we like given bandlengths to atoms.

Joined: 05/19/2009
Groups: Contenders

I'm only asking to provide the 'bin' number of the current situation. Nothing else, thanks :)

Enzyme's picture
User offline. Last seen 49 years 43 weeks ago. Offline
Joined: 07/10/2008
Groups: None

the current HBond Network puzzles would greatly benefit from the implementation of this function.

I would also like to see rotamer positions as a finite set where snap positions become unavailable similar to the current CanMutate(). I believe a finite set of snap positions could be created which would contain similar wiggle results to the snap positions currently available. With a finite set of snap positions to pull from, a GetSnapPosition() could easily be created which APPROXIMATES a given sidecahin position.

Exact results are not required because as stated earlier, even knowing the current snap position, if you snap to it it may return different results

Sitemap

Developed by: UW Center for Game Science, UW Institute for Protein Design, Northeastern University, Vanderbilt University Meiler Lab, UC Davis
Supported by: DARPA, NSF, NIH, HHMI, Amazon, Microsoft, Adobe, RosettaCommons