Skip to content

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

@TheFirstGrammarian

Description

@TheFirstGrammarian

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions