Protenix

Protenix is OFoldX's AlphaFold 3-shaped all-atom structure-prediction family for proteins, nucleic acids, small molecules, and their complexes. OFoldX exposes all ten released checkpoint variants through four exact Model/Processor/Pipeline pairs.

Disclaimer

This is an unofficial OFoldX implementation of Protenix - Advancing Structure Prediction Through a Comprehensive AlphaFold3 Reproduction by Xinshi Chen and Yuxuan Zhang. The upstream authors did not write, review, or endorse this implementation or model card.

The official repository is bytedance/Protenix.

Model Details

Protenix is an AlphaFold 3-style all-atom structure predictor for proteins, nucleic acids, small molecules, ions, and their complexes. It combines atom and token embeddings with an MSA-conditioned recycled Pairformer trunk, EDM coordinate diffusion, and distogram and confidence heads. The constraint variant adds learned pair biases for atom contacts, token contacts, pockets, and substructures.

Variants

Conversion requires one of these exact identifiers; OFoldX does not infer the variant from a filename or tensor shape:

  • protenix_base_default_v0.5.0
  • protenix_base_constraint_v0.5.0
  • protenix_mini_default_v0.5.0
  • protenix_mini_tmpl_v0.5.0
  • protenix_tiny_default_v0.5.0
  • protenix_mini_esm_v0.5.0
  • protenix_mini_ism_v0.5.0
  • protenix_base_default_v1.0.0
  • protenix_base_20250630_v1.0.0
  • protenix-v2

The variants map to ordinary registered pairs:

Pair Model, Processor, Pipeline Released variants
Default (protenix) ProtenixModel, ProtenixProcessor, ProtenixPipeline base default v0.5, mini default, tiny default, mini ESM, and mini ISM
Template (protenix_template) ProtenixTemplateModel, ProtenixTemplateProcessor, ProtenixTemplatePipeline both base v1 releases and protenix-v2
Structure condition (protenix_structure_condition) ProtenixStructureConditionModel, ProtenixStructureConditionProcessor, ProtenixStructureConditionPipeline mini template v0.5
Constraint (protenix_constraint) ProtenixConstraintModel, ProtenixConstraintProcessor, ProtenixConstraintPipeline base constraint v0.5

The two v1 releases share one graph and differ in weights. Mini ESM and mini ISM also share one graph and package their selected ESM2 companion weights inside the model artifact. The template pair owns the released template and RNA-MSA input paths. The constraint pair exposes atom-contact, token-contact, and pocket controls. Its fourth learned branch accepts a Structure through substructure= and digitizes resolved token-center distances into the released four-channel representation.

The mini template checkpoint is not an ordinary template model. Its distinct pair accepts structure_condition= as an in-memory Structure, aligns resolved representative-atom coordinates to the model token axis, and applies the checkpoint's noisy-structure pair update on every recycling pass. Direct ProtenixNoisyStructureEmbedder callers may enable its released add_noise distance perturbation and supply a torch.Generator for that draw.

MSA pools are given per instance; those of protein and RNA chains of more than four residues are paired by ofoldx.msa.pair_msas after any crop, and an exact MsaCollection plan is used as given. The Processor keeps Protenix's featurisation of the rows it is given: upstream's MSA letter classes (B, Z, U as D, E, C; J, O as X), the profile and deletion mean over the pool's unique unpaired rows, query-only rows for chains of at most four residues, and the query in a non-protein chain's all-gap rows. Templates are resolved by ofoldx.templates.resolve_template; each protein chain of more than four residues takes up to four of them.

Links

Feature and geometry contract

Preparation follows the shared contract (ofoldx.models.preparation): the layout, gating, reference conformers and constraint features come from the one OFoldX rule each; represented atoms need known elements and formal charges. Ranking combines 0.8 * ipTM + 0.2 * pTM - 100 * has_clash. This implementation has no disorder estimator and reports no disorder value.

All public model coordinate boundaries consume an explicit finite numerical projection. Unavailable values are selected out under the declared mask before arithmetic or dtype conversion and have zero coordinate derivatives. Active nonfinite values are invalid requests; finite values outside the model dtype range are an unsupported numeric range. Normalization returns the same input carrier type without changing canonical membership, source masks, or source precision. Decode uses prepared atom correspondences. APIs without an availability mask require complete finite model fields.

Every token's class is its canonical class (72 classes); the checkpoint's residue and profile axes are regenerated onto them at conversion. token_bonds are upstream inference's: covalent bonds between tokens except the junctions of chain neighbours. Decode writes the prepared slots back onto the target with decode_coordinates (every atom regenerated in a new frame).

Usage

The model depends on the ofoldx library. Install it with pip:

pip install ofoldx

Structure Prediction

Load the concrete folding Pipeline:

import ofoldx

pipeline = ofoldx.pipeline("fold", model="oteam/protenix")
output = pipeline.fold(structure)  # a Structure, read or constructed

The Pipeline is callable with the same arguments as fold. All four registered pairs prepare a ProtenixPipelineInput holding the Prepared task and its TFG guidance policy. Staged execution:

import numpy as np
import torch

prepared = pipeline.prepare(structure, generator=np.random.default_rng(42))
generator = torch.Generator(device=pipeline.processor.device).manual_seed(42)
raw = pipeline.forward(prepared, num_samples=1, generator=generator)
result = pipeline.postprocess(prepared, raw)

For chemical guidance, pass tfg_guidance=ProtenixTfgGuidance() to prepare. The prepared value retains that strategy for forward; execution does not take a second guidance argument. postprocess decodes its retained Prepared task.

Template variants additionally accept templates=. Constraint repositories route to ProtenixConstraintPipeline, whose concrete fold method accepts atom_contacts, token_contacts, pocket and the released substructure coordinate condition. Every concrete Protenix Pipeline accepts per-call num_recycles, num_sampling_steps, churn_rate, and step_scale; None uses the converted checkpoint configuration.

Training-free chemical guidance is a sampling-time operation. Pass the released enabled configuration explicitly:

import ofoldx

from ofoldx.models.protenix import ProtenixTfgGuidance

pipeline = ofoldx.pipeline("fold", model="oteam/protenix")
output = pipeline.fold(structure, tfg_guidance=ProtenixTfgGuidance())

Leaving tfg_guidance as None disables guidance. The guidance value exposes the eight named chemical terms, schedules, Monte Carlo smoothing, and iteration counts; setting one term to None removes that term. TFG is family-specific and therefore remains an argument of the concrete Pipeline.

Training Details

ProtenixProcessor.prepare_training(structure, ...) returns the Prepared task and its StructureTarget; target_tensors gives the ProtenixStructureTarget. Calling the model with those values runs one differentiable stochastic denoising pass and returns denoised coordinates, augmented target coordinates, sampled noise levels, the distogram, and all four confidence logits. model.denoise(...) retains the explicit noisy-coordinate operation, while model.sample(...) exposes raw reverse-diffusion output. ProtenixPipeline.postprocess(...) maps that raw output onto structures and public confidence metrics.

OFoldX exposes the shared EDM coordinate objective with compute_auxiliary_heads=False. Its rigid-aligned MSE weights resolved atoms equally and omits Protenix's molecule weights and 1/3 coordinate normalization. It also omits smooth lDDT, distogram and confidence losses, and stage-dependent loss composition. Full Protenix training uses an independent mini-rollout, prediction-dependent truth matching, and detached trunk representations for confidence supervision; computing auxiliary heads on the single denoising pass does not supply that training data flow or those losses.

OFoldX reproduces the complete released Model graph, not Protenix's complete four-stage training program. Dataset policy, objectives, stage weights, condition-dropout curriculum, optimizer, and training orchestration remain the responsibility of the training application.

Gradient checkpointing

model.gradient_checkpointing_enable() enables non-reentrant recomputation with RNG preservation during training. Checkpointing is inactive in evaluation and no-grad execution.

Ragged inputs with nonzero shared dropout support eager execution but cannot be compiled with fullgraph=True. This also limits regional compilation of blocks containing that dropout path. Dense regional compilation and eager ragged training are separate supported paths. Unsupported compilation raises an error.

Citation

@article{protenix2025advancing,
  author = {ByteDance AML AI4Science Team and Chen, Xinshi and Zhang, Yuxuan and others},
  title = {Protenix - Advancing Structure Prediction Through a Comprehensive AlphaFold3 Reproduction},
  year = {2025},
  doi = {10.1101/2025.01.08.631967},
  journal = {bioRxiv}
}

If OFoldX supports your research, also cite the OFoldX software:

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

Contact

Please use OFoldX GitHub issues for questions about this implementation or model card. Questions about the upstream model should be directed to the authors of the Protenix paper.

License

The original model parameters are licensed under Apache-2.0. OFoldX conversion changes parameter names, packing and vocabulary axes.

This model implementation is licensed under the GNU Affero General Public License.

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

-

Downloads are not tracked for this model. How to track
Safetensors
Model size
0.4B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support