Tutorial 6: Generating Transition Probability Matrices neurocaps.analysis.transition_matrix
The CAP.calculate_metrics function is designed to compute transition probabilities for all subjects and store these
values into dataframes (one per group). These dataframes can subsequently be used as input for the transition_matrix
function to generate visualizations of the average transition probabilities per group.
import numpy as np
from neurocaps.analysis import CAP, transition_matrix
# Simulate `subject_timeseries` structure
subject_timeseries = {str(x): {f"run-{y}": np.random.rand(10, 100) for y in range(1, 4)} for x in range(1, 11)}
cap_analysis.get_caps(
subject_timeseries=subject_timeseries,
cluster_selection_method="davies_bouldin",
standardize=True,
n_clusters=list(range(2, 6)),
)
2024-11-02 00:09:54,273 neurocaps.analysis.cap [INFO] [GROUP: All Subjects | METHOD: davies_bouldin] Optimal cluster size is 3.
outputs = cap_analysis.calculate_metrics(
subject_timeseries=subject_timeseries,
return_df=True,
metrics=["transition_probability"],
continuous_runs=True,
output_dir=output_dir,
prefix_filename="All_Subjects_CAPs_metrics",
)
print(outputs["transition_probability"]["All Subjects"])
Subject_ID |
Group |
Run |
1.1 |
1.2 |
1.3 |
2.1 |
2.2 |
2.3 |
3.1 |
3.2 |
3.3 |
|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
All Subjects |
run-continuous |
0.375 |
0.32142857142857145 |
0.30357142857142855 |
0.4074074074074074 |
0.38888888888888895 |
0.2037037037037037 |
0.3333333333333333 |
0.38461538461538464 |
0.28205128205128205 |
2 |
All Subjects |
run-continuous |
0.4363636363636364 |
0.3090909090909091 |
0.2545454545454545 |
0.28 |
0.43999999999999995 |
0.28 |
0.36363636363636365 |
0.2727272727272727 |
0.36363636363636365 |
3 |
All Subjects |
run-continuous |
0.3571428571428572 |
0.39285714285714285 |
0.25 |
0.39215686274509803 |
0.33333333333333326 |
0.27450980392156865 |
0.38095238095238093 |
0.2857142857142857 |
0.33333333333333337 |
4 |
All Subjects |
run-continuous |
0.41666666666666663 |
0.2 |
0.38333333333333336 |
0.46153846153846156 |
0.20512820512820507 |
0.3333333333333333 |
0.36 |
0.36 |
0.28 |
5 |
All Subjects |
run-continuous |
0.46153846153846156 |
0.2692307692307692 |
0.2692307692307692 |
0.26666666666666666 |
0.2666666666666666 |
0.4666666666666667 |
0.3269230769230769 |
0.34615384615384615 |
0.32692307692307687 |
6 |
All Subjects |
run-continuous |
0.33333333333333337 |
0.4444444444444444 |
0.2222222222222222 |
0.3103448275862069 |
0.3793103448275862 |
0.3103448275862069 |
0.2608695652173913 |
0.3695652173913043 |
0.36956521739130443 |
7 |
All Subjects |
run-continuous |
0.4067796610169492 |
0.3728813559322034 |
0.22033898305084745 |
0.39215686274509803 |
0.2941176470588236 |
0.3137254901960784 |
0.41025641025641024 |
0.3333333333333333 |
0.2564102564102564 |
8 |
All Subjects |
run-continuous |
0.33333333333333326 |
0.35185185185185186 |
0.3148148148148148 |
0.2708333333333333 |
0.33333333333333337 |
0.3958333333333333 |
0.46808510638297873 |
0.2765957446808511 |
0.25531914893617014 |
9 |
All Subjects |
run-continuous |
0.33333333333333337 |
0.3333333333333333 |
0.3333333333333333 |
0.43137254901960786 |
0.37254901960784315 |
0.19607843137254902 |
0.3409090909090909 |
0.29545454545454547 |
0.36363636363636365 |
10 |
All Subjects |
run-continuous |
0.3076923076923077 |
0.34615384615384615 |
0.34615384615384615 |
0.3793103448275862 |
0.4310344827586208 |
0.1896551724137931 |
0.358974358974359 |
0.38461538461538464 |
0.2564102564102564 |
kwargs = {"cmap": "viridis", "fmt": ".3f", "annot": True}
trans_outputs = transition_matrix(
trans_dict=outputs["transition_probability"], show_figs=True, return_df=True, **kwargs
)
print(trans_outputs["All Subjects"])
From/To |
CAP-1 |
CAP-2 |
CAP-3 |
|---|---|---|---|
CAP-1 |
0.3429448275257044 |
0.2881868830804245 |
0.368868289393871 |
CAP-2 |
0.3595098582449408 |
0.2914027330314906 |
0.3490874087235686 |
CAP-3 |
0.3259514626040708 |
0.3255982589778372 |
0.3484502784180919 |