File size: 1,588 Bytes
2b21f2d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""Persistent header ribbon — wordmark + flagship stat chips, rendered once above
gr.Tabs so the headline result stays visible on every tab, not just Methodology."""

from theme import SIG_NEGATIVE, SIG_POSITIVE


def build_header_ribbon(sentiment_ladder: dict) -> str:
    e = sentiment_ladder["rungs"]["E_gated_fusion"]["macro_f1"]["mean"]
    diff = sentiment_ladder["comparisons"]["E_vs_C"]
    significant = diff["ci_low"] > 0
    dot_color = "var(--fl-accent)" if significant else "var(--fl-border)"
    n_calls = sentiment_ladder["n_calls"]
    date_range = sentiment_ladder["date_range"]

    return f"""
    <div class="fl-ribbon">
        <div class="fl-wordmark">FUSION<span>LAB</span></div>
        <div class="fl-ribbon-divider"></div>
        <div class="fl-chip">
            <div class="fl-chip-label">Flagship macro-F1</div>
            <div class="fl-chip-value fl-accent">{e:.3f}</div>
        </div>
        <div class="fl-chip">
            <div class="fl-chip-label">vs. text-only</div>
            <div class="fl-chip-value">
                <span class="fl-chip-dot" style="background:{dot_color};"></span>+{diff["macro_f1_diff"]:.3f}
            </div>
        </div>
        <div class="fl-chip">
            <div class="fl-chip-label">Population</div>
            <div class="fl-chip-value">{n_calls:,} calls</div>
        </div>
        <div class="fl-chip">
            <div class="fl-chip-label">Date range</div>
            <div class="fl-chip-value" style="font-size:13px;">{date_range[0]} &#8594; {date_range[1]}</div>
        </div>
    </div>
    """