File size: 2,466 Bytes
9635a89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""CortexLab Quick Start Example.

Demonstrates loading a pretrained model, running inference,
and using the brain-alignment benchmark and cognitive load scorer.
"""

import numpy as np


def run_benchmark_demo():
    """Demonstrate the brain-alignment benchmark with synthetic data."""
    from cortexlab.analysis import BrainAlignmentBenchmark

    n_stimuli = 50
    model_features = np.random.randn(n_stimuli, 768)  # e.g. CLIP features
    brain_predictions = np.random.randn(n_stimuli, 20484)  # fsaverage5 vertices

    roi_indices = {
        "V1": np.arange(0, 100),
        "MT": np.arange(500, 600),
        "A1": np.arange(1000, 1100),
        "Broca": np.arange(2000, 2100),
    }

    bench = BrainAlignmentBenchmark(brain_predictions, roi_indices=roi_indices)

    for method in ["rsa", "cka", "procrustes"]:
        result = bench.score_model(model_features, method=method)
        print(f"[{method.upper()}] Aggregate: {result.aggregate_score:.4f}")
        for roi, score in sorted(result.roi_scores.items()):
            print(f"  {roi}: {score:.4f}")
    print()


def run_cognitive_load_demo():
    """Demonstrate the cognitive load scorer with synthetic predictions."""
    from cortexlab.analysis import CognitiveLoadScorer

    roi_indices = {
        "46": np.arange(0, 10),
        "FEF": np.arange(10, 20),
        "V1": np.arange(100, 120),
        "V2": np.arange(120, 140),
        "MT": np.arange(140, 160),
        "A1": np.arange(200, 220),
        "LBelt": np.arange(220, 230),
        "44": np.arange(300, 310),
        "45": np.arange(310, 320),
    }

    scorer = CognitiveLoadScorer(roi_indices, baseline_activation=0.5)

    # Simulate 30 seconds of predictions
    predictions = np.random.randn(30, 500) * 0.5
    # Add high visual activation
    predictions[:, 100:160] *= 3.0

    result = scorer.score_predictions(predictions, tr_seconds=1.0)
    print(f"Overall cognitive load:  {result.overall_load:.2f}")
    print(f"Visual complexity:       {result.visual_complexity:.2f}")
    print(f"Auditory demand:         {result.auditory_demand:.2f}")
    print(f"Language processing:     {result.language_processing:.2f}")
    print(f"Executive load:          {result.executive_load:.2f}")
    print(f"Timeline points:         {len(result.timeline)}")


if __name__ == "__main__":
    print("=== Brain-Alignment Benchmark ===")
    run_benchmark_demo()

    print("=== Cognitive Load Scorer ===")
    run_cognitive_load_demo()