Protein Fold Space - SCOPe ASTRAL 40%

15,177 domainsbiologyprotein-sciencestructural

A TMAP of the SCOPe ASTRAL 40% dataset (15,177 representative protein domains at 40% sequence identity, 1,257 folds). The tree separates SCOP structural classes: all-alpha (2,644), all-beta (3,059), alpha/beta (4,463), alpha+beta (3,653), and smaller classes. 19.1% of tree edges cross class boundaries, with the most connected pair being all-beta <-> alpha+beta (828 edges). Mean subtree purity is 0.879 (median 1.0). Bridge proteins - the closest cross-class edges - connect specific domain pairs at distances as low as 0.005. A fold transition path from all-alpha to all-beta traverses just 7 hops through alpha+beta intermediates.

Protein Fold Space - SCOPe ASTRAL 40%Open full page
Loading interactive demo…

How it was made

generate.pypython
from tmap import TMAP
from tmap.graph.analysis import boundary_edges, subtree_purity

model = TMAP(metric="cosine", n_neighbors=15, seed=42)
model.fit(esm2_embeddings)

# Cross-class boundary edges
be = boundary_edges(model.tree_, scop_classes)
print(f"Boundary edges: {len(be)} / {len(model.tree_.edges)}")

# Subtree purity by structural class
purity = subtree_purity(model.tree_, scop_classes, min_size=10)
print(f"Mean purity: {purity[~np.isnan(purity)].mean():.3f}")

# Fold transition path: all-alpha -> all-beta
path = model.path(alpha_domain, beta_domain)
model.to_html("protein_folds.html", color=fold_class)