ODesign

Pre-trained model for biomolecular interaction design through coordinate diffusion followed by sequence or element assignment.

Disclaimer

This is an UNOFFICIAL implementation of ODesign: A World Model for Biomolecular Interaction Design by Odin Zhang, Xujun Zhang, Haitao Lin, et al.

The OFFICIAL repository of ODesign is at The-Institute-for-AI-Molecular-Design/ODesign.

The team releasing ODesign did not write this model card for this model so this model card has been written by the OFoldX team.

Model Details

ODesign uses an all-atom diffusion model for biomolecular interaction design. Its four released variants share the ODesignModel architecture and differ in receptor flexibility and the type of molecule being generated. Inverse-folding children assign sequences or elements after coordinate generation.

The protein routes use ProteinMPNN without ligand atom context and LigandMPNN otherwise. The released DNA route uses OInvFold, the RNA route uses gRNAde, and the provisional ligand route uses ligand OInvFold. Please refer to the Training Details section for more information on the training process.

Variants

  • oteam/odesign-protein-flex: Protein backbone generation with flexible receptor context and MPNN sequence assignment.
  • Protein rigid (protein_rigid): Protein backbone generation with rigid receptor context and the same context-selected MPNN assignment.
  • Nucleic-acid rigid (nucleic_acid_rigid): DNA or RNA generation with rigid context and their released inverse-folding children.
  • oteam/odesign-ligand-rigid: Provisional ligand coordinate generation with rigid context and element assignment.

Model Specification

Single Size Pair Size Pairformer Blocks MSA Stages Token Denoiser Blocks Atom Encoder Blocks Atom Decoder Blocks
384 128 48 4 24 3 3

Links

Usage

The model file depends on the ofoldx library. You can install it using pip:

pip install ofoldx

Direct Use

Polymer Design

You can use this model directly with a pipeline for polymer design over instance B of a conditioning complex:

import ofoldx
from ofoldx.io import read_structure
from ofoldx.models.design import PositionSelection

structure, _ = read_structure("complex.cif")
pipeline = ofoldx.pipeline("design", model="oteam/odesign-protein-flex")
result = pipeline(structure, design=PositionSelection(instances=("B",)), num_backbones=2, num_sequences=4, seed=7)

Protein, DNA and RNA candidates contain canonical Structure predictions and the inverse folder's named scores. Without a design selection, every position of the route's monomer type is generated. For de novo generation, supply a typed PolymerSequence of unknown residues; the chemistry guide describes these inputs.

Rigid context retains its source coordinates; flexible context can move. Regeneration clears old observations for moved atoms that the model does not place, while explicitly fixed atoms retain their coordinates and observations.

Downstream Use

Alternative Inverse Folding

ODesignOInvFoldProteinPipeline and ODesignOInvFoldRnaPipeline combine ODesign generation with independently runnable OInvFold alternatives. They are separate from the released protein MPNN and RNA gRNAde routes. Complete repositories include their required children; use load_component to load one component independently. Backbone decoding returns ODesignBackboneSample objects containing the structure and any unbound_linkers.

The pipeline guide describes staged execution and composition. Family pipeline docstrings specify sample counts, seed order, beam decoding and component roles.

Checkpoint Conversion

Convert the checkpoint with its required child models:

python -m ofoldx.models.odesign.convert protein-flex checkpoint.pt ./odesign-protein-flex \
  --protein-designer oteam/proteinmpnn --ligand-designer oteam/ligandmpnn

Training Details

ODesign learns coordinate denoising together with geometric and chemical reconstruction objectives.

Training Data

Refer to the ODesign paper for the upstream training corpora and data construction. OFoldX does not redistribute those corpora.

Training Procedure

ODesignModel.forward corrupts explicit coordinate targets and performs differentiable denoising. odesign_loss combines the five released objectives: weighted coordinate error, covalent-bond distance, smooth lDDT, distogram classification and binary token-bond prediction.

These operations support custom training loops without reproducing the upstream data curation or complete training program. The Runner guide describes input and target preparation. Known zero-occupancy coordinates are unresolved by default for conditioning and truth; set filter_by_occupancy=False to ignore occupancy.

Citation

@misc{zhang2025odesign,
  title={ODesign: A World Model for Biomolecular Interaction Design},
  author={Zhang, Odin and Zhang, Xujun and Lin, Haitao and others},
  year={2025},
  eprint={2510.22304},
  archivePrefix={arXiv},
  primaryClass={q-bio.BM}
}

The artifacts distributed in this repository are part of the OFoldX project. If OFoldX supports your research, please cite the OFoldX project as follows:

@software{chen2026ofoldx,
  author = {Chen, Zhiyuan},
  title  = {OFoldX},
  year   = {2026},
  url    = {https://github.com/OTeam-AI4S/OFoldX},
}

Contact

Please use GitHub issues of OFoldX for any questions or comments on the model implementation or model card.

Please contact the authors of the ODesign paper for questions or comments on the paper/model.

License

The model weights, implementation, configuration, and documentation distributed by OFoldX are licensed under the GNU Affero General Public License.

For additional terms and clarifications, please refer to our License FAQ.

SPDX-License-Identifier: AGPL-3.0-or-later
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Paper for oteam/odesign-protein-flex