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.0protenix_base_constraint_v0.5.0protenix_mini_default_v0.5.0protenix_mini_tmpl_v0.5.0protenix_tiny_default_v0.5.0protenix_mini_esm_v0.5.0protenix_mini_ism_v0.5.0protenix_base_default_v1.0.0protenix_base_20250630_v1.0.0protenix-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
- Code: ofoldx.models.protenix
- Paper: Protenix - Advancing Structure Prediction Through a Comprehensive AlphaFold3 Reproduction
- Developed by: Xinshi Chen, Yuxuan Zhang, Chan Lu, Wenzhi Ma, Jiaqi Guan, Chengyue Gong, Jincai Yang, Hanyu Zhang, Ke Zhang, Shenghao Wu, Kuangqi Zhou, Yanping Yang, Zhenyu Liu, Lan Wang, Bo Shi, Shaochen Shi, and Wenzhi Xiao
- Model type: Pairformer-based all-atom biomolecular structure predictor with optional learned constraints
- Original Repository: bytedance/Protenix
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