You are here

InterfaceAnalyzerMover with more than two chains

5 posts / 0 new
Last post
InterfaceAnalyzerMover with more than two chains
#1

Hi,

I hope this message finds you well. I would like to use the InterfaceAnalyzerMover to determine the seperated interface energy difference between three or four chains. I noticed in the metadata page for InterfaceAnalyzer there are two flags to accomplish this (link). However, I could not find these flags in the PyRosetta 4.0 documentation describing InterfaceAnalyzerMover, and I am not sure how you would use these flags in Python (link). 

These are the flags I am looking for (link):

"-interface (string) - Multichain option. Which chains define the interface? example -interface LH_A to get the interface between chain groups LH and A. Works for sub interfaces such as L_H by ignoring any chains not specified in calculations. Not tested thoroughly beyond three chains.

-fixedchains (string) - Multichain option. Which chains are in the two groups to define the interface? example: -fixedchains A B to keep chains A and B together, and C separate, out of a pose that contains A, B, and C. Note a space between A and B. Analogous to -interface option. Includes all chains of the pose. Not tested thoroughly beyond three chains."

On a separate note, I noticed ref2015 is the default scoring function. Is this still the preferred scoring function for determining binding affinity? If not, what would be the best way to change it? 

Also, I noticed there is a set_pack_rounds() function, and the default is one round of packing. How can I know if this is enough? 

I have attached the code I am running, as it is now below, in case that is helpful. Please let me know your thoughts when you have time.

Thank you,

Franz 

#Get PDB file
pose = pose_from_pdb("name.pdb")

#Run InterfaceAnalyzerMover
ia = pyrosetta.rosetta.protocols.analysis.InterfaceAnalyzerMover()
ia.set_pack_input(True)
ia.set_pack_separated(True)
ia.set_use_tracer(True)
ia.apply(pose)

 

Category: 
Post Situation: 
Fri, 2023-08-04 08:33
franz72

In PyRosetta, you would set the interface designation (e.g. jump, fixed chains or string designation) with the contructor (when you initialize the object). There's three different versions, and what you pass (integer, string or set of ints) determines which version is used. See `help(pyrosetta.rosetta.protocols.analysiz.InterfaceAnalyzerMover)` for more details.

Alternatively, you can use the XMLObjects interface, if you want to use the RosettaScripts XML tag to initialize things. That's probably not necessary in your case, though.

I should mention that certain features of the InterfaceAnalyzer mover implicitly requires that there only be two chains, and will consistently give junk (zero) values if there are more than two chains in the pose.

Fri, 2023-08-04 08:40
rmoretti

Thank you for your quick and helpful response.

Is there another procedure in PyRosetta you would recommend since you mentioned certain features of the InterfaceAnalyzer mover cannot handle more than two chains?

Is it okay to use InterfaceAnalyzer mover to measure binding affinity between three chains if, for example, chains A and B are fixed together and the binding affinity is measuring the change in free energy between chain C being bound or unbound to chains A and B?  

Fri, 2023-08-04 12:43
franz72

Most of the interface analyzer should work. There's only a few features (output scores) which don't support multiple chains. But there's not really a different mover to use - you just have to realize that that particular column is always going to be zero because it doesn't support multiple chains.

Sat, 2023-08-05 17:15
rmoretti

I have updated my code using the set_interface() function, and it seems to be working. Thank you for your helpful responses!

#run InterfaceAnalyzerMover
ia = pyrosetta.rosetta.protocols.analysis.InterfaceAnalyzerMover()
ia.set_interface('C_AB')
ia.set_use_tracer(True)
ia.apply(pose)

#check if multichain constructor was used
ia.get_multichain_constructor()

 

Sun, 2023-08-06 18:26
franz72