RosettaCommons / RosettaCommons/foundry

[QUEST] Fixing one chain for redesign with RFD3 + LigandMPNN

Open
#246 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
Dominant language
Python
Stars
966
Forks
181
Avg merge
4d 4h
Merged PRs (30d)
2

Description

Hi,

I am trying to design a protein binder using RFdiffusion3 + LigandMPNN, where the receptor chain should remain fixed and only the binder chain is redesigned.

I have successfully produced 3D structures with RFdiffusion3, however, when I try using LigandMPNN, both chains are being redesigned. I attempted to control this using (minimal example of my code):

input_configs = [
    {
        "batch_size": 10,
        "fixed_chains": ["A"],
    }
]

and passing it to the model as follows:

from mpnn.inference_engines.mpnn import MPNNInferenceEngine

model = MPNNInferenceEngine(model_type="ligand_mpnn", is_legacy_weights=True, ...)

mpnn_outputs = model.run(
    input_dicts=input_configs,
    atom_arrays=[atom_array]
)

However, this does not seem to have any effect, as both chains are still redesigned.

I have tried looking at the documentation of MPNN but it looks like it's still under construction. I also inspected the codebase and could not find any clear reference to fixed_chains being used within the transform pipeline or inference engine, which suggests it may not be supported.

From reading the implementation, it appears that residue fixing might instead rely on the mpnn_designed_residue_mask annotation on the AtomArray, but I could not find documentation or examples describing how this should be constructed or used.

Could you clarify the intended way to:

  1. Fix an entire chain during inference
  2. Ensure only specific chains or residues are redesigned

If fixed_chains is not supported, what is the correct mechanism to achieve this?

Thank you.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with MPNNInferenceEngine and trace how fixed_chains moves through the transform pipeline. Inspect the mentioned mpnn_designed_residue_mask annotation and its construction on the AtomArray. Done means the supported mechanism for fixing whole chains or selected residues is identified and verified to leave the fixed chain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
bioinformatics, machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.