Skip to content

RF Diffusion Symmetry Config

This node creates a symmetry configuration object for RF Diffusion-based protein generation. It turns user-facing symmetry and geometric options into a structured configuration while validating that the symmetry specification is supported. The resulting config controls how symmetric subunits are arranged in space and whether symmetry is enforced during the diffusion process.
Preview

Usage

Use this node whenever you want RF Diffusion to design symmetric protein assemblies (e.g., cyclic oligomers, dihedral complexes, or polyhedral cages). Place it upstream of the RF Diffusion node and connect its symmetry_config output to the RF Diffusion node’s symmetry_config input. Typical scenarios: (1) De novo symmetric oligomer design: choose a symmetry such as c3 and a suitable radius, then run RF Diffusion with unconditional contigs; (2) Symmetric design conditioned on an input PDB: combine this node with RF Diffusion Contigmap Config and optionally RF Diffusion Scaffold Guided Config to simultaneously control symmetry and sequence/structure constraints. It is commonly used together with the suite of RF Diffusion helper nodes: RF Diffusion Contigmap Config, RF Diffusion Denoiser Config, RF Diffusion Potentials Config, and RF Diffusion Scaffold Guided Config. Prefer using this node instead of manually building symmetry dictionaries, as it enforces allowed formats and consistent field names.

Inputs

FieldRequiredTypeDescriptionExample
recenterTrueBOOLEANRecenter the designed symmetric complex so its geometric center lies at the origin of the coordinate system. This is useful for normalized coordinates and more consistent visualization or docking. True enables recentering; false leaves the complex in its native frame.True
radiusTrueINTDistance from the symmetry center (in Å) where symmetric subunits are placed. Must be at least 1. Larger values spread subunits further from the axis or center, yielding larger rings or shells; very small values can cause steric clashes between subunits.25
model_only_neighborsTrueBOOLEANIf true, only neighboring subunits of the asymmetric unit are explicitly modeled rather than the full symmetric assembly. This can reduce computational cost when you only care about local interactions around one unit; set to false to consider the entire assembly.False
symmetric_self_condTrueBOOLEANIf true, symmetry is enforced via symmetric self-conditioning during intermediate diffusion steps, encouraging consistent symmetry throughout sampling. Set to false to relax intermediate symmetry enforcement, which may increase diversity at the cost of symmetry quality.True
symmetryFalseSTRINGType of symmetry to apply. Valid entries are: empty string for no explicit symmetry; cyclic symmetry as 'cn' (e.g. 'c2', 'c3', 'c6'); dihedral symmetry as 'dn' (e.g. 'd2', 'd5'); or one of 'tetrahedral', 'octahedral', 'icosahedral' for polyhedral symmetries. Any other value causes a validation error.c3

Outputs

FieldTypeDescriptionExample
symmetry_configRFDIFFUSION_SYMMETRY_CONFIGA dictionary-like symmetry configuration containing the validated symmetry type and flags (recenter, radius, model_only_neighbors, symmetric_self_cond). This object is intended to be connected directly to the RF Diffusion node’s `symmetry_config` input, where it governs symmetric layout and conditioning during protein design.{'recenter': True, 'radius': 25, 'model_only_neighbors': False, 'symmetric_self_cond': True, 'symmetry': 'c3'}

Important Notes

  • Strict symmetry validation: The node checks that symmetry is either empty, matches cn/dn (e.g. 'c2', 'd5'), or is exactly 'tetrahedral', 'octahedral', or 'icosahedral'. Any other string raises a clear ValueError before RF Diffusion is invoked.
  • Empty symmetry behavior: If symmetry is left empty or whitespace, it is converted to a null/None value internally, effectively disabling explicit symmetry while preserving other options such as recentering and neighbor modeling.
  • Radius tuning: Very small radius values can produce heavily clashing assemblies, while extremely large values may yield unrealistic, over-extended complexes. For many ring-like oligomers and cages, moderate radii (e.g. 10–40 Å) are a good starting range.
  • Neighbor-only trade-offs: Enabling model_only_neighbors can significantly reduce compute and memory usage, but the model no longer sees the full assembly, which may matter for designs where long-range inter-subunit contacts are functionally important.

Troubleshooting

  • Invalid symmetry format error: If you see an error like Expectedsymmetryto be '', cn/dn (e.g. c2, d5), or one of tetrahedral/octahedral/icosahedral but got ..., correct the symmetry input to a supported value such as 'c3', 'd2', 'tetrahedral', or leave it empty.
  • Output appears non-symmetric: Confirm that symmetry is set to a valid value and that this node’s symmetry_config output is connected to the RF Diffusion node’s symmetry_config input. Also check for stray spaces (e.g. 'c3 '), then re-run the workflow.
  • Clashing subunits: If the designed complex has strong steric clashes between repeats, gradually increase radius and re-run. Consider disabling model_only_neighbors so the model can account for long-range packing of the entire assembly.
  • Workflow stops before diffusion: Validation issues in this node prevent RF Diffusion from running. Inspect the error message; it typically indicates an unsupported symmetry string or, more rarely, a non-integer or out-of-range radius.