Skip to main content
Protein Symmetry Ring Structure
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.


proto-bio/proto-language/proto_language/constraint/protein_structure/protein_symmetry_ring_constraint.py
View source
Constrain proteins to form symmetric ring-like multimeric structures using ESMFold. This constraint function uses ESMFold to predict multimeric protein structures and evaluates whether they form symmetric ring-like arrangements. Ring symmetry is quantified by calculating the centroid (center of mass) of each protomer’s backbone and measuring how uniformly the protomers are distributed around the ring. Perfect symmetric rings have all inter-protomer distances equal, resulting in zero standard deviation. Many functional protein complexes naturally form symmetric rings, including chaperonins, proteasomes (heptameric rings), hexameric helicases, and various ring-shaped enzymes. This constraint is useful for designing or selecting proteins that form such symmetric assemblies. Each input tuple is folded as one complex with an arbitrary number of protein chains. DNA chains are first resolved with ORFipy by scanning both strands for canonical ATG-to-stop ORFs and selecting the longest ORF as that chain’s translated CDS. Structure prediction is GPU-intensive and may take several minutes per protein depending on length and hardware.

API Reference

ConfigProteinSymmetryRingConfig Source
Configuration for protein symmetry ring constraint.This class defines configuration parameters for evaluating whether proteins form symmetric ring-like multimeric structures using ESMFold structure prediction. Ring symmetry is measured by analyzing the spatial arrangement of protomer centroids in predicted oligomeric structures. Symmetric rings have protomers evenly distributed in a circular arrangement with consistent inter-protomer distances, characteristic of many functional protein complexes like chaperonins, proteasomes, and ring-shaped enzymes. Symmetry is calculated by taking the centroids of each protomer (using backbone atom coordinates) and measuring the standard deviation of distances between protomers. Lower standard deviation indicates more symmetric arrangements where all protomers are equally spaced. The score is normalized by dividing by max_symmetry_std and capped at 1.0.
max_symmetry_std
number
default:"10.0"
Max std of inter-protomer centroid distances (Ã…) for normalization; above this gets worst score 1.0.
all_to_all_protomer_symmetry
boolean
default:"False"
True uses pairwise distances between all protomers. Else, use distances between adjacent protomers
esmfold_config
ESMFoldConfig
ESMFold configuration for structure prediction.
ReturnsConstraintOutput
Per-proposal score in [0.0, 1.0] where 0.0 is perfect ring symmetry. Protein results attach the predicted Structure to slot 0. metadata carries:
  • avg_plddt: Float average pLDDT score for structure confidence (0.0-1.0)
  • ptm: Float predicted TM-score for structure accuracy (0.0-1.0)
  • pdb_output: String PDB format structure file content
  • esmfolded_sequence: String colon-separated protein-chain representation
  • symmetry_std_raw: Float raw standard deviation of inter-protomer distances in Ã…ngströms (lower = more symmetric)
  • symmetry_score_normalized: Float normalized symmetry score (0.0-1.0)
  • dna_chain_orfs: Per-DNA-chain ORFipy metadata when DNA chains are present

Usage

Designing a symmetric hexameric ring:
python
>>> from proto_language.core import Sequence, SequenceType
>>> seq = Sequence("MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSF", "protein")
>>> config = ProteinSymmetryRingConfig(
...     max_symmetry_std=10.0,
... )
>>> results = protein_symmetry_ring_constraint([(seq, seq, seq, seq, seq, seq)], config)
>>> print(results[0].score)  # e.g., 0.35 (3.5 Ã… std / 10.0 Ã… max)
>>> print(results[0].metadata["symmetry_std_raw"])  # e.g., 3.5 Ã…
>>> print(results[0].metadata["symmetry_score_normalized"])  # 0.35

Metadata

PropertyValue
Keyprotein-symmetry-ring
Functionprotein_symmetry_ring_constraint
Categoryprotein_structure
Modediscrete
Uses GPUTrue
Supported Typesdna, protein