Tutorial 6: Generating Transition Probability Matrices neurocaps.analysis.transition_matrix
CAP.calculate_metrics` can be used to calculate the transition probabilities for all subjects,
which can then be converted to matrix form and visualized with transition_matrix.
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 |