Skip to main content
AF3 Chain-Pair Protein-DNA ipTM
License: This constraint can use multiple tools, each under its own license. See the Tools Used tab and each tool’s page for license details.

This constraint is open source. Any third-party models, product names, or trademarks referenced are the property of their respective owners, and Proto is not affiliated with them.


evo-design/proto-language/proto_language/constraint/protein_structure/af3_chain_pair_prot_dna_iptm_constraint.py
View source
Constraint contributors
Score protein-DNA ipTM from a per-chain-pair ipTM matrix.
For each candidate complex:
  1. Separate protein and DNA sequences from the input tuple.
  2. Build a complex with num_protein_copies protein chains and all DNA chains (optionally adding the reverse complement).
  3. Run the configured structure predictor and read chain_pair_iptm.
  4. Pick out the protein-to-DNA entries and aggregate (max or mean).
  5. Score: 0.0 (best) when aggregated ipTM >= desired_iptm, 1.0 (worst) when ipTM is 0.
When the predictor does not expose the per-chain-pair ipTM matrix this raises RuntimeError: overall ipTM is not a valid substitute. Supported tools: any DNA-capable StructureBasedConstraintConfig predictor; AlphaFold3 and Protenix emit the per-chain-pair ipTM matrix under chain_pair_iptm, and Boltz-2 emits the same matrix under pair_chains_iptm.

API Reference

ConfigAF3ChainPairProtDNAIPTMConfig Source
Config for the AF3 chain-pair protein-DNA ipTM constraint.Runs a structure prediction for the protein-DNA complex and extracts the pairwise chain ipTM matrix. Only the protein-to-DNA entries are kept; the result is aggregated via aggregation (default: max over all protein-DNA chain pairs — both dimer halves, and both DNA strands when include_reverse_complement is set), then scored against desired_iptm.
The per-chain-pair ipTM matrix (chain_pair_iptm) is exposed by both AlphaFold3 and Protenix. Boltz-2 exposes the same matrix under pair_chains_iptm. A tool that does not surface the matrix raises a RuntimeError — overall ipTM is not a valid substitute.
integer
default:"2"
Protein monomer copies in the complex (2=homodimer, 1=monomer); reuses input chains first.
enum
default:"protein-dna"
Interface scored: ‘protein-dna’ (protein-DNA ipTM) or ‘protein-protein’ (homodimer ipTM).Options: protein-dna, protein-protein
number
default:"0.7"
Target protein-DNA chain-pair ipTM. Score is 0 when achieved.
enum
default:"max"
Aggregate protein-DNA chain-pair ipTM: ‘max’ (best pair) or ‘mean’ (average of pairs).Options: max, mean
boolean
default:"False"
Add the reverse-complement DNA strand when the input has only one DNA sequence.
enum
default:"alphafold3"
Predictor for the protein-DNA complex; must be DNA-capable (alphafold3/boltz2/protenix).Options: esmfold, esmfold2, alphafold3, boltz2, chai1, protenix, alphafold2, alphafold2_binder
ESMFoldConfig
Configuration for ESMFold structure prediction.
ESMFold2Config
Configuration for ESMFold2 structure prediction.
AlphaFold3Config
Configuration for AlphaFold3 structure prediction.
Boltz2Config
Configuration for Boltz2 structure prediction.
Chai1Config
Configuration for Chai1 structure prediction.
ProtenixConfig
Configuration for Protenix structure prediction.
AlphaFold2Config
Configuration for the general AlphaFold2 multimer structure predictor.
AlphaFold2BinderStructureConfig
Configuration for the AF2 binder-design backend.
ReturnsConstraintOutput
Per-proposal score in [0, 1] (lower is better) with prot_dna_iptm / prot_prot_iptm / overall_iptm metadata and the predicted Structure on slot 0.

Usage

Programming a protein-DNA operator complex with Protenix:
python

Metadata