1 Konektom - mapa wszystkich połączeń w mózgu.Human Connectome Project ( National Institutes of Health) Problemy: 1. Jak zidentyfikować połączenia? 2. Jak opisać połączenia w sposób ilościowy? 3. Jakie reguły rządzą rozwojem i ewolucją systemu połączeń w mózgu? 4. Czy można skorelować indywidualne różnice w połączeniach z cechami charakteru? 8.1 Podział kory mózgu na 47 pól wg. Korbiniana Brodmanna ( )
2 Tkanka barwiona metodą Bodiana - widoczne czarno zabarwione aksony8.2 Tkanka barwiona metodą Bodiana - widoczne czarno zabarwione aksony Barwienie metodą Kluwera-Barrery pozwala na uwidocznienie osłonek mielinowych vetpath/cpl/lfbcv2.jpg
3 Joannes Gregorius Dusser de Barenne 1885-1940od strychninizacja jako alternatywa dla ekstyrpacji w badaniach nad lokalizacją funkcji w mózgu. Dusser de Barenne i McCulloch publikują wyniki badań nad wykorzystaniem strychniny (strychninowa neuronografia) do badania struktury połączen w korze. Na dole po lewej - zapis ECG z kory somatosensorycznej przed i po podaniu strychniny - z charakterystycznymi iglicami strychninowymi (strychnine spikes). Po prawej - organizacja połączeń w korze czuciowej (Dusser de Barenne & McCulloch, 1938) 8.3 Joannes Gregorius Dusser de Barenne
4 Fink & Heimer, 1967 - degeneracja anterogradna8.4 Fink & Heimer, degeneracja anterogradna degeneration_regeneration_mod1.htm Peroksydaza chrzanowa (HRP) - retrogradny transport aksonalny, reakcja HRP - DAB
5 CoCoMac - internetowa baza połączeń w mózgu makaka: 8.7 CoCoMac - internetowa baza połączeń w mózgu makaka: Baza CoCoMac została "zamrożona" po śmierci twórcy, Ralfa Kottera w 2010 r. Jej funkcje stopniowo przejmuje baza CoCoMac2: prowadzona przez German Neuroinformatics Node (G-Node):
6 8.12 Fragment macierzy połączeń z bazy CoCoMac2. Liczby oznaczają siłę połączeń, 0 - stwierdzony brak połączeń, - brak danych.
7 8.6 Obrazowanie dyfuzyjne (DTI - diffusion tensor imaging, DWI - diffusion-weighted imaging), wykorzystuje dyfuzję wody w tkance - może być wykorzystane do badania przebiegu włókien tworzących substancję białą w mózgu. Kubicki et al., 2007
8 8.17 Identyfikacja funkcjonalnej sieci w mózgu. Dane o zmianach aktywności w czasie w stanie spoczynku są gromadzone dla każdego voksela. Następnie dla każdej z par vokseli (16000) wylicza się korelację i sporządza macierz korelacji. (Joyce et al., 2010)
9 8.18 Macierz korelacji jest następnie binaryzowana, punktom powyżej progu binaryzacji przypisawana jest wartość 1, poniżej 0. Wartość progu jest ustalana w taki sposób, aby liczba węzłów w sieci była stała dla wszystkich badanych osób. Binaryzacja przekształca macierz korelacji w macierz sąsiedztwa, a to wystarcza do zdefiniowania grafu (sieci) (Joyce et al., 2010)
10 8.26 >1700 macierzy połączeń, dane z fMRI i dwMRI (diffusion weighted MRI), + informacje o wieku, płci, IQ i stanie zdrowia badanych (Brown et al., 2012)
11 8.30
12 8.31
13 C(p) i L(p) to odpowiednio średni współczynnik 9.26 Sieci typu małych światów. C(p) i L(p) to odpowiednio średni współczynnik gronowania i średnia długość najkrótszej ścieżki normalizowana w stosunku do sieci regularnej. p - poziom losowości. Watts D.J., Strogatz S.H. (1998) Collective dynamics of ‘small-world’ networks. Nature 393: (24 tys. cytacji)
14 Watts & Strogats, 1998 - przykłady sieci o cechach małych światów. 9.27 Watts & Strogats, przykłady sieci o cechach małych światów. Aktorzy z bazy IMDB (internet Movie Database: krawędź w tej sieci to wspólne występowanie w jednym filmie. W przypadku Caenorhabditis elegans węzłami były neurony (nicień ma 959 komórek, z tego 302 to komórki nerwowe), a krawędziami synapsy lub połączenia szczelinowe.
15 mozg1<-read. table("f:\\ADHD200_CC200_KKI_2026113_connectmatmozg1<-read.table("f:\\ADHD200_CC200_KKI_ _connectmat.txt", colClasses="numeric", header=FALSE) mozg2<-as.matrix(mozg1) mozg2_graf<-graph.adjacency(mozg2, mode="undirected",weighted=TRUE, diag=FALSE) plot(mozg2_graf) vcount(mozg2_graf) ecount(mozg2_graf) degree(mozg2_graf) transitivity(mozg2_graf) average.path.length(mozg2_graf) vcount(mozg2_graf) [1] 190 ecount(mozg2_graf) [1] 17746 degree(mozg2_graf) V1 V2 V3 V4 V5 V6 …… V190 …… 189 transitivity(mozg2_graf) [1] 1 average.path.length(mozg2_graf)
16 wagi<-sort(E(mozg2_graf)$weight)plot(wagi) >wagi [1] e e e-01…….. ………………………………………………………………. [17951] e e e-01….
17 prog = 0.8 mozg2<-as.matrix(mozg1) mozg3<-replace(mozg2, mozg2< -prog, 1) #lub -1 mozg4<-replace(mozg3, mozg3> prog, 1) mozg5<-replace(mozg4, mozg4 != abs(1), 0) mozg5_graf<-graph.adjacency(mozg5, mode="directed",weighted=NULL, diag=FALSE) >ecount(mozg5_graf) [1] 221 > transitivity(mozg5_graf) [1] > average.path.length(mozg5_graf) [1]
18 losowy_trans<-numeric(10) #puste wektory z 10 elementami Tworzymy losowy graf o takiej samej liczbie wierzchołków i krawędzi jak badany graf: losowy_trans<-numeric(10) #puste wektory z 10 elementami losowy_path<-numeric(10) for(i in 1:10){ losowy<-erdos.renyi.game(vcount(mozg5_graf), ecount (mozg5_graf), type="gnm", directed=FALSE, loops=FALSE) losowy_trans[i]<-transitivity(losowy) losowy_path[i]<-average.path.length(losowy) } losowy_trans [1] [7] losowy_path [1] [9]
19 gamma<-transitivity(mozg5_graf)/mean(losowy_trans) gamma [1] lambda<-average.path.length(mozg5_graf)/mean(losowy_path) lambda [1] sigma<-gamma/lambda sigma [1] if(sigma>1.2){ print ("To mały świat") }else{ print ("to nie mały świat") } [1] "To mały świat" dla progu = 0.5 sigma - small world coefficient gamma = lambda = wsp.gronowania sieci rzeczywistej średni wsp. gronowania sieci losowych o takiej samej liczbie wierzchołków i krawędzi charakt. długość ścieżki sieci rzeczywistej średnia charakt.długość ścieżki sieci losowych o takiej samej liczbie wierzchołków i krawędzi
20 rm(list=ls()) library(igraph) mozg1<-read.table("f:\\mozg0connect.txt", colClasses="numeric", header=FALSE) # pusty wektor z progami progi<- c() #pusty wektor na wartości współczynnika małych światów sigma<-c() #pusty wektor na frakcję pozostawionych krawędzi edges_fract<-c() #pusty wektor na liczbę izolowanych wierzchołków v_isol<-c()
21 prog = mozg2<-as.matrix(mozg1) mozg3<-replace(mozg2, mozg2< -prog, 1) mozg4<-replace(mozg3, mozg3> prog, 1) mozg5<-replace(mozg4, mozg4 != abs(1), 0) mozg5_graf<-graph.adjacency(mozg5, mode="undirected",weighted=NULL, diag=FALSE) losowy_trans<-numeric(10) losowy_path<-numeric(10) for(j in 1:10){ losowy<-erdos.renyi.game(vcount(mozg5_graf), ecount(mozg5_graf), type="gnm", directed=FALSE, loops=FALSE) losowy_trans[j]<-transitivity(losowy) losowy_path[j]<-average.path.length(losowy) } gamma<-transitivity(mozg5_graf)/mean(losowy_trans) lambda<-average.path.length(mozg5_graf)/mean(losowy_path) progi<-c(progi, prog) v_isol<-c(v_isol, sum(degree(mozg5_graf)==0)) sigma<-c(sigma, gamma/lambda) edges_fract<-c(edges_fract, ecount(mozg5_graf)) #tworzymy ramkę danych wynik_small<-data.frame(progi, sigma, edges_fract, v_isol)
22 progi sigma edges_fract v_isol
23 Zmiany wartości współczynnika małych światów, liczby krawędzi i liczby izolowanychwierzchołków w zależności od przyjętego progu
24 stopnie<-degree(mozg5_graf) stopnie2<-sort(stopnie)V4 V158 V1 V35 V160 V49 V138 …………….. ………… V23 V130 V140 V13 V48 #wektor z progiem na podstawie stopni rich_deg<-c() #wektor z liczbą wierzchołków w klubie rich_v<-c() #wektor z rich club coefficient rich_club_coeff<-c() stopien=85 #od 5 do 85 mozg6_graf<-induced.subgraph(mozg5_graf, which(stopnie>stopien)) rcc<-(2*ecount(mozg6_graf))/(vcount(mozg6_graf)*(vcount(mozg6_graf)-1)) rich_deg<-c(rich_deg, stopien) rich_v<-c(rich_v, vcount(mozg6_graf)) rich_club_coeff<-c(rich_club_coeff, rcc)
25 rich_deg rich_v rich_club_coeff
26 mozg7<-read. table("f:\\mozg7connectmozg7<-read.table("f:\\mozg7connect.txt", colClasses="numeric", header=FALSE) mozg7<-as.matrix(mozg7) mozg7_graf<-graph.adjacency(mozg7, mode="undirected",weighted=TRUE, diag=FALSE) nazwy1<-read.table("f:\\mozg7abbrevs.txt", header=FALSE) nazwy2<-as.vector(t(nazwy1)) koord1<-read.table("f:\\mozg7xyz.txt", header=FALSE) koord2<-as.matrix(koord1) V(mozg7_graf)$name<-nazwy2 V(mozg7_graf)$label<-V(mozg7_graf)$name rglplot(mozg7_graf, layout=koord2)
27 V(mozg7_graf)$name<-nazwy2V(mozg7_graf)$label<-V(mozg7_graf)$name V(mozg7_graf)$size<-5*log(degree(mozg7_graf)) V(mozg7_graf)$color<-ifelse(degree(mozg7_graf)>20, "red", "lightgreen") E(mozg7_graf)[weight>100]$color="red" E(mozg7_graf)[weight>100]$width=2 E(mozg7_graf)[weight<=100]$color="lightblue" plot(mozg7_graf, layout=layout.random)
28
29 Krawędź to linia łącząca wierzchołki w grafie która 7.2 Krawędź to linia łącząca wierzchołki w grafie która nie ma określonego początku i końca. Graf zawierający same krawędzie nazywamy grafem nieskierowanym (niezorientowanym, undirected). deg (v8) = 3 v8 v6 v7 deg (v6)= 2 deg(v1)= 0 V1 deg (v4) = 1 v4 v5 v2 v3 wierzchołki sąsiadujące to wierzchołki połączone (incydentne z) tą samą krawędzią Stopień wierzchołka = liczba krawędzi z którymi jest on incydentny. Oznaczamy jako deg(vi)
30 Graf regularny - każdy wierzchołek ma taki sam stopień7.3 Graf zupełny (pełny) - graf w którym każda para wierzchołków jest połączona krawędziami. Graf zupełny określa się czasem jako Kn, gdzie n to liczba wierzchołków K5 Graf regularny - każdy wierzchołek ma taki sam stopień
31 Rozmiar grafu = liczba wierzchołków = 8 7.4 Rozmiar grafu = liczba wierzchołków = 8 Rząd grafu = liczba krawędzi = 7 v8 v6 v7 v1 v4 v5 Graf rzadki (sparse) - graf z małą liczbą krawędzi. Graf gęsty (dense) - graf z liczbą krawędzi bliską tej w grafie pełnym. Gęstość grafu (density) - stosunek liczby krawędzi do największej możliwej liczby krawędzi v2 Najmniejszy możliwy rząd grafu = 0 (graf ma same wierzchołki) Największy możliwy rząd (graf pełny, bez pętli) = n(n-1)/2, gdzie n to liczba wierzchołków v3
32 7.9 Macierz sąsiedztwa (adjacency matrix) grafu nieskierowanego to macierz kwadratowa A = [aij]i,j ≤ n, której elementy aij określają liczbę krawędzi między wierzchołkami Xi i Xj. Dla grafów nieskierowanych macierz jest symetryczna. Dla grafów bez pętli macierz na przekątnej ma same zera V5 V3 v1 v2 v3 v4 v5 v1 v2 v3 v4 v5 V4 A = V1 V2
33 7.10 W macierzy sąsiedztwa grafu skierowanego elementy określają liczbę łuków wychodzących z wierzchołka Xi i biegnących do wierzchołka Xj. Macierz grafu skierowanego może być niesymetryczna. V5 V3 V4 A = V1 V2
34 Długość drogi (ścieżki) = liczba krawędzi (łuków) tworzących ścieżkę 7.14 Długość drogi (ścieżki) = liczba krawędzi (łuków) tworzących ścieżkę Odległość (geodesic distance) między wierzchołkami - długość najkrótszej ścieżki łączącej wierzchołki v1 Odległość między v1 i v10 = 7 v3 Mimośród (eccentricity) wierzchołka = odległość danego wierzchołka do najbardziej oddalonego wierzchołka w grafie Mimośród v1 = 8 (odległość do v11) v2 v4 v6 v5 v13 v12 v7 v8 v11 v9 v10
35 v1 Miary centralności (istotności, znaczenia, centrality) węzłów:7.27 Miary centralności (istotności, znaczenia, centrality) węzłów: Centralność zależna od stopnia (degree centrality): CD(v1) = 4 Centralność zależna od bliskości (closeness centrality) - odwrotność sumy odległości danego węzła od pozostałych Centralność zależna od pośrednictwa (betweeness centrality) - stosunek liczby najkrótszych ścieżek zawierających dany węzeł do liczby wszystkich ścieżek Centralność zależna od wektora własnego (eigenvector centrality) - określa stopień powiązania z najbardziej istotnymi węzłami w sieci v1
36 7.28 1, 0.31, 0, 0.14 Wartości centralności dla przykładowych węzłów. Kolejno: centralność zależna od stopnia, bliskości, pośrednictwa i wektora własnego 2, 0.48, 0, 0.71 4, 0.61, 38, 0.97 5, 0.52, 27, 1 1, 0.34, 0, 0.21 1, 0.35, 0, 0.36
37 współczynnik gronowania dla zaznaczonego na niebiesko węzła, 7.29 Na rysunku na niebiesko lokalny współczynnik gronowania dla zaznaczonego na niebiesko węzła, a na czerwowono globalny współczynnik gronowania dla całego grafu 1 0,6 1 1/3 0,75 2/3 Współczynnik gronowania wierzchołka (local cluster coefficient) Ci = 2e/ki(ki-1), gdzie ki to stopień wierzchołka i, a e to liczba krawędzi między wierzchołkami sąsiadującymi z wierzchołkiem i. Gdy Ci = 1 to znaczy, że wierzchołek wraz z sąsiedztwem tworzy klikę. Globalny współczynnik gronowania - stosunek liczby trójkątów (zamkniętych tripletów) do łącznej liczby tripletów (zamkniętych lub otwartych). Triplet - grupa 3 połączonych węzłów.