import {useState} from 'react'; import type {Direction,EvidenceData} from './types'; const definitions:Record={ 'TM-score':'Similarity between predicted structures for generated and reference sequences. Higher is better; this is not comparison to experimental ground truth.', 'Sequence recovery':'Positional identity divided by the shorter sequence length, shown as a percentage. Higher is better.', 'Keyword recovery':'Fraction of reference functional keywords recovered in the generated protein annotation. Only cases with valid reference keywords are scored (476 of the 500 pairs).', 'ProTrek score':'ProTrek-650M text–sequence matching score (cosine similarity divided by model temperature). A computational proxy for prompt alignment, not experimental function.', 'Inverse folding recovery':'ESM-IF1 sequence recovery from the predicted structure, shown as a percentage. This measures structural sequence consistency, not function.', 'Inverse folding SW':'Smith–Waterman similarity between the ESM-IF1 inverse-folded sequence and the generated sequence (raw alignment score). Length dependent; compare on the same evaluation set.', 'pLDDT':'Predicted structural confidence, averaged across residues. Higher is better; it does not measure enzymatic activity.', 'BLEU-4':'Mean sentence-level BLEU-4 × 100. Measures agreement with reference annotation text, not functional correctness.', 'ROUGE-L':'Custom whitespace-tokenized, Porter-stemmed token LCS F1 × 100. Measures text agreement.' }; export function Evidence({data}:{data:EvidenceData}){ const [task,setTask]=useState('t2p'),[metric,setMetric]=useState('Sequence recovery'),[scale,setScale]=useState(3),[picked,setPicked]=useState('Ouroboros'); const switchTask=(d:Direction)=>{setTask(d);setMetric(d==='t2p'?'Sequence recovery':'BLEU-4');setPicked('Ouroboros');}; const values=data.metrics.filter(r=>r.task===task&&r.metric===metric&&r.split===data.dataset.id).sort((a,b)=>b.mean-a.mean); const factor=['Sequence recovery','Keyword recovery','Inverse folding recovery'].includes(metric)?100:1; const max=Math.max(...values.map(r=>r.mean))*factor*1.08; const selected=values.find(r=>r.model===picked); return

04 ARCHIVED BENCHMARKS

Two directions.
Measurable results.

Explore both directions through
interactive model comparisons from
the archived evaluation results.

{data.dataset.name}{data.dataset.pairs} protein–text pairs
{(task==='t2p'?['Sequence recovery','Keyword recovery','ProTrek score','TM-score','Inverse folding recovery','Inverse folding SW','pLDDT']:['BLEU-4','ROUGE-L']).map(m=>)}
{metric.toUpperCase()}↑ Higher is better
{values.map(r=>)}

{definitions[metric]}

{selected?`${selected.model} · n = ${selected.n} · ${metric} = ${(selected.mean*factor).toFixed(4)}`:'Choose a model to inspect its score.'}

MODEL SIZE EXPLORER

A family of
bidirectional models.

Text-to-protein recovery on the same 500 Swiss-Prot time-cutoff references.

{data.scaling[scale].recovery.toFixed(2)}%{data.scaling[scale].size} · {(data.scaling[scale].parameters/1e6).toFixed(0)}M parameters
{data.scaling.map((r,i)=>)}

Matched evaluation set. Large uses the archived main result; its exact sampling settings were not preserved. This is a descriptive comparison.

Evaluation notes & source data

The 500-pair Swiss-Prot time-cutoff dataset is temporally held out and cluster diverse; low sequence homology to training has not been established. Prot2Text comparators use their best observed completed valid configuration on this dataset. These comparisons do not establish an independently validated overall model ranking. No significance claim or fitted scaling law is made.

; }