- This topic has 3 replies, 2 voices, and was last updated 9 years, 7 months ago by Anonymous.
April 18, 2014 at 4:12 am #1878Anonymous
Hi everyone, I am writing a script that, given two proteins, prints out pairs of residues making inter-protein contacts with each other.
Right now I identify the protein partners using a FoldTree generated with an identifier such as AB_X.
Question: is there a way to find out which rigid body a given residue belongs to?
e.g. if we have AAAAAAAAAAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBB/XXXXXXXXXXXXXXXXXXXX, to determine that residues 1-20 belong to rigid body 1, and residues 21-30 belong to rigid body 2, given that the fold tree is AB_X?
April 18, 2014 at 5:47 pm #9995Anonymous
So, you are using the docking foldtree to determine the rigid body contacts? The docking foldtree is buggy, and the that FoldTree will only tell you which residues are part of each chain.
So, I think you want two things. One, you can find out which residue belongs to which chain by iterating through 1 -> pose.total_residue() and then determining which chain that residue belongs to – aka pose.chain(i);
You could also use an alternive through the conformation object to get the start and end points of each chain:
Chains are stored internally by Rosetta as integers.
nchains = pose.conformation().num_chains()
for i in range(1, nchains+1):
res_start = pose.conformation().chain_begin(i)
res_end = pose.conformation().chain_end(i)
Then, you can do what you need to do.
You can also use the function pose.is_protein(i) to make sure you are indeed working with a protein residue and not a water or ligand (most of the time these are removed or ignored before working in Rosetta).
Second, there are a few classes in Rosetta to get at the interface residues. The easiest interface to these classes is probably through the InterfaceAnalyzerMover, but I’m not sure if PyRosetta understands a std::set from C++. I will ask Sergey, but if I remember correctly, it doesn’t. Also, it does not output the pairs of contacts. Will you be calculating this manually once you have the residues that belong to each chain?
April 21, 2014 at 5:44 am #10004Anonymous
Thanks for the summary of different ways available to determine interface residues. It looks like working through the chain assignments would be more straightforward than doing anything with the FoldTree, so I will go through this route now. I have used the Interface class in another script, but for this particular application, wanted an extra degree of control over the process of finding interface residues, which would allow me to do some extra filtering. I think I have figured out how it can work now! thanks again.
April 22, 2014 at 12:28 am #10014Anonymous
- You must be logged in to reply to this topic.