计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
symmetric-oligomers【效率与协作】Build RFdiffusion symmetric oligomer and symmetric motif-scaffolding commands for cyclic, dihedral, tetrahedral, octahedral, and icosahedral point groups, including contig divisibility, oligomer contact potentials, neighbor-only modeling, and output checks.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this sub-skill when a user wants RFdiffusion to generate homo-oligomeric backbones or scaffold a motif under an explicit point-group symmetry.
C4, C6, D2, or d5.inference.symmetry=tetrahedral, octahedral, or icosahedral.--config-name=symmetry or symmetry-mode defaults.../guided-potentials/SKILL.md when that sibling exists.inpaint_seq, or target-chain contigs belong in ../motif-scaffolding/SKILL.md.inference.cyclic=True and belongs in the macrocycle-design sibling, not here.../unconditional-generation/SKILL.md.../partial-diffusion/SKILL.md unless the main question is the symmetry setup itself.run_inference.py path in the user's RFdiffusion installation; do not assume the original checkout remains available.C6, D2, tetrahedral, octahedral, or icosahedral.RFdiffusion symmetry mode applies rotations to one asymmetric unit and requires the generated sequence length to divide evenly by the number of symmetry copies.
C<n> has n chains, so C6 with total length 480-480 gives six 80-residue chains.D<n> has 2*n chains, so D2 with total length 320-320 gives four 80-residue chains.tetrahedral uses 12 saved rotations for the named point group; t3 is also accepted by the code but only produces the legacy four-rotation T3 mode.octahedral uses 24 rotations, and icosahedral uses 60 rotations.If the user gives a per-chain length, multiply it by the chain count before writing contigmap.contigs. For example, a 90-residue C4 chain uses 'contigmap.contigs=[360-360]'.
Use the detailed templates in references/workflows.md. The common skeleton is:
python /path/to/run_inference.py \
--config-name=symmetry \
inference.symmetry="C6" \
'contigmap.contigs=[480-480]' \
inference.output_prefix=outputs/C6_oligo/design \
inference.num_designs=10
Keep Hydra list-like values in single quotes. Quote inference.symmetry when using uppercase cyclic/dihedral names to avoid shell surprises, although RFdiffusion handles cyclic and dihedral prefixes case-insensitively.
The repository examples add olig_contacts to improve packing between and within chains:
'potentials.guiding_potentials=["type:olig_contacts,weight_intra:1,weight_inter:0.1"]' \
potentials.olig_intra_all=True \
potentials.olig_inter_all=True \
potentials.guide_scale=2.0 \
potentials.guide_decay="quadratic"
Use this as a starting point, not a universal optimum. The documented rule of thumb is to keep intra-chain contact weight higher than inter-chain contact weight. RFdiffusion's potential manager can compute oligomer contact chain counts for C*, D*, and tetrahedral; avoid promising olig_contacts for octahedral or icosahedral without first checking the installed code because the manager raises NotImplementedError for symbols starting with o and does not handle i.
Use this path only when the motif PDB is already symmetrized in the same point group and axes RFdiffusion will use. For cyclic symmetry, the canonical axis is Z; for dihedral symmetry, the cyclic axis is Z and the flip/reflection axis is X.
The C4 nickel-style command combines symmetry, an input PDB, repeated motif spans, oligomer contacts, and a checkpoint override:
python /path/to/run_inference.py \
inference.symmetry="C4" \
inference.input_pdb=/path/to/nickel_symmetric_motif.pdb \
'contigmap.contigs=[50/A2-4/50/0 50/A7-9/50/0 50/A12-14/50/0 50/A17-19/50/0]' \
inference.ckpt_override_path=/path/to/Base_epoch8_ckpt.pt \
inference.output_prefix=outputs/design_nickel/design \
inference.num_designs=15 \
'potentials.guiding_potentials=["type:olig_contacts,weight_intra:1,weight_inter:0.06"]' \
potentials.olig_intra_all=True \
potentials.olig_inter_all=True \
potentials.guide_scale=2 \
potentials.guide_decay="quadratic"
Do not substitute an asymmetric single motif and expect RFdiffusion to place the other copies correctly. If motif residue selection, masking, or active-site checkpoint reasoning is the main issue, route to motif scaffolding after establishing the symmetric layout requirement.
--config-name=symmetry for ordinary symmetric oligomer generation; if omitting it for an advanced motif command, explicitly set all needed symmetry/base overrides.inference.symmetry is one of C<n>, D<n>, tetrahedral, octahedral, or icosahedral; c6 and d2 also work.inference.output_prefix is a prefix; outputs are suffixed as _0.pdb, _0.trb, and optional trajectory files.inference.num_designs=1, inference.deterministic=True, inference.final_step=48, inference.cautious=True, and often inference.write_trajectory=False.Symmetric outputs are written as multi-chain PDBs. RFdiffusion inserts chain breaks across the symmetry copies, using sequential chain labels generated from the symmetry order. The .trb file records the resolved config and contig mappings; inspect it when validating sampled length, symmetry, checkpoint, or motif placement. If inference.write_trajectory=True, trajectory PDBs are written under a traj/ directory next to the output prefix.
Use references/troubleshooting.md for failure triage and references/workflows.md for complete command recipes.
This sub-skill is backed by RFdiffusion evidence from the README symmetric oligomer and symmetric motif sections, config/inference/symmetry.yaml, config/inference/base.yaml, rfdiffusion/inference/symmetry.py, rfdiffusion/potentials/manager.py, rfdiffusion/potentials/potentials.py, and the cyclic, dihedral, tetrahedral, and nickel example scripts.