sokrypton / ColabDesign

Making Protein Design accessible to all via Google Colab!
529 stars 118 forks source link

Using RFdiffusion to design a binder, with some parts of the binder fixed #131

Open KoubaPetr opened 1 year ago

KoubaPetr commented 1 year ago

Hello,

I would like to address the following task using the RFdiffusion notebook:

I have a complex of two proteins (target-binder) in a single PDB; chain B is the target which I want to preserve, and chain A I want to preserve some parts but want to redesign others. I am also providing the hotspots from the target.

My specification looks as follows:

Contigs: B123-370/0 A1-50/2/A53-54/9/A64-65/1/A67-122 (I also tried replacing trailing “/0” with “:”) Hotspots: B181,B221,B229

In the RFdiffusion cell, the execution falls to “mode: fixed” (As there is at least one fixed residue in the contig).

In the designability test, the execution falls to “protocol: partial”. In the designability test, to get into the “protocol: binder”, I see I would need to provide chains, where each of the chains is either entirely fixed or entirely free.

My main concern is mainly about what model is used by RFdiffusion in my case, e.g. are the hotspots even utilized? Are the weights used fine-tuned for the binder task?

Also, if I want to tackle a task like this, is there some other recommended setting for the pipeline? Ideally also utilizing the designability test for the binder task (to produce iPAE) - but this I can bypass. My main concern is the RFdiffusion part.

Thank you very much in advance to anyone willing to discuss this! Petr Kouba

sokrypton commented 1 year ago

Thanks for the report! I've pushed an update that will print ipae and iptm when more than a single chain is present, regardless if it satisfies the "binder" protocol condition that one chain is free and one is fixed.

To address your earlier question, when hotspots are specified (regardless if its a binder problem or just an extension of an existing protein), a different model is used (Complex_base_ckpt.pt).

Sorry about the "partial/fixed" part. The meaning of "partial" and "fixed" is different the two protocols. In ColabDesign, "partial" means "partial hallucination" (where you fix one part, and allow hallucination of the rest). in RfDiffusion "partial" means the partial protocol (where you initialize with a FULL structure, but specify which parts can move (noise/denoise) and which are fixed): https://github.com/RosettaCommons/RFdiffusion#partial-diffusion

sokrypton commented 1 year ago

One more thing to keep note, if you specify multiple chains, they will be FROZEN with respect to each other.

if you want to fix or control part of the binder, you'll need to use the foldcond protocol: https://colab.research.google.com/github/sokrypton/ColabDesign/blob/v1.1.1/rf/examples/diffusion_foldcond.ipynb

KoubaPetr commented 1 year ago

Thank you very much for such a fast and helpful reply!

One last question, what does it mean that the chains will be frozen with respect to each other? When I have a 100 residue long target as a chain A and a 30 residue peptide that binds to it as a chain B and I want to redesign middle 10 residues of chain B, then I would provide contigs = A1-100/0 B1-10/10/B21-30. Would it work as intended? Or where does the freeze between the chains come into play? Would the context from chain A be available to the redesign of chain B?

Thank you very much once again for such a prompt response!

Petr

sokrypton commented 1 year ago

By frozen, what I mean is the chains you specify wont "dock" to come into contact, they will remain relatively at the same distance/orientation as you provide in the input.

I initially thought you didn't already now how that part of the binder docks, and wanted to specify hotspot residues as a hypothesis to guide "docking". If you already know that this is how you want that part of the binder to be placed, then you are good.

sokrypton commented 1 year ago

Sorry, looks like my fix earlier didn't work. I'll try fix this later today. Reverting back for now.

KoubaPetr commented 1 year ago

Ok, thank you very much! From my side, we can close the issue, so feel free to do so either now or after the fix. Thanks!

Petr