Repository navigation
protenix-v2 has no end-to-end pipeline #5
Description
Summary
protenix-v2 is listed as a supported model, but there is no end-to-end pipeline for it: build_processor(model_source="protenix-v2") cannot fold from sequence input the way Boltz-2 / OpenFold3 / AlphaFold2 can. Only the optimized model forward is wired; the surrounding stages are stubs.
What I found
Using the same EngineProcessorConfig → build_processor path that folds Boltz-2 end-to-end, Protenix-v2 does not run: ProtenixFactory's tokenizer / feature_factory / postprocessor raise NotImplementedError (the model/trunk+diffusion is the only piece implemented). By contrast Boltz-2, OpenFold3 and AF2 have all stages wired and fold from a sequence request out of the box.
If you instead try to drive the optimized Protenix model directly, the forward expects an input_feature_dict on a different schema than a naive OSS ByteDance Protenix feature dump produces — e.g. it reads keys like d_lm / v_lm and drops profile / deletion_mean. So even the forward-only path needs an (undocumented) feature-schema conversion, which makes it hard to reproduce the reported Protenix speedups end-to-end.
Reproduce
from bionemo_ir.registry import register_all_factories; register_all_factories()
from bionemo_ir.pipeline.processor.engine_proc import EngineProcessorConfig, build_processor
cfg = EngineProcessorConfig(
model_source="protenix-v2",
runtime_args={"diffusion_samples": 1, "num_sampling_steps": 200, "recycling_steps": 10},
writer_stage={"output_path": "/out", "format": "cif"},
)
proc = build_processor(cfg) # protenix-v2: tokenizer/feature_factory/postprocessor NotImplementedError(The identical pattern with model_source="boltz-2" folds fine.)
Ask
- Is an end-to-end Protenix-v2 pipeline planned (tokenizer + featurizer + postprocessor wired into the stage framework, like Boltz-2)?
- If not, would a PR porting the OSS ByteDance Protenix featurization into the stage framework be welcome? Happy to contribute if the direction is wanted.
- Separately, could the expected
input_feature_dictschema for the optimized Protenix forward (thed_lm/v_lmkeys) be documented, so the forward can be exercised against an OSS feature dump in the meantime?
Environment
bionemo-ir 0.1.0, Python 3.12, CUDA 13.2, driver 580.95.05, NVIDIA L40S (Modal). Boltz-2 end-to-end works in the same environment.
Activity
[-]protenix-v2 has no end-to-end pipeline (ProtenixFactory tokenizer/feature/postprocessor raise NotImplementedError)[/-][+]protenix-v2 has no end-to-end pipeline[/+]ducta3141 commentedon Sep 12, 2026
Hi @ssiddhantsharma . This is the known issue. You can see in the support matrix doc here: https://github.com/NVIDIA-BioNeMo/BioNeMo-Inference-Runtime/blob/main/docs/ref/support-matrix.md#models-and-data-pipeline . It is planning for the next month, at present we're working for higher priorities tasks.
ssiddhantsharma commentedon Sep 18, 2026
Following up to close the loop for anyone hitting this while the end-to-end pipeline is pending, the forward-only path does work, and the "different schema" concern in my report is resolvable with stock OSS Protenix itself.
The
d_lm/v_lm/pad_infotensors the AtomAttentionEncoder reads are the sequence-local atom-attention windows, and OSS ByteDance Protenix builds them inupdate_input_feature_dict()(protenix/model/protenix.py, AF3 Algorithm 5 lines 1–3) the same function its own top-level forward calls. Your repo's.agents/skills/bench-perf-oss/models/protenix.md("Path B") documents exactly this: call OSSupdate_input_feature_dict()on the dumpedinput_feature_dictbefore handing it to the BioIR module, and the adapter is layout-only, add a leadingB=1dim to every tensor exceptpad_info.With that,
bionemo_ir.models.protenix.Protenix(model_name="protenix-v2", include_load_weights=True)(+.optimize({"diffusion_module": AcceleratedConfig(backend="torch")})) folds from an OSS feature dump and reproduces OSS numerics. The optimized model forward is usable today via Path B, even thoughbuild_processorstill needs the tokenizer / feature_factory / postprocessor stages.