examples/high_degree_nodes.ipynb
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Most densely connected nodes\n",
"Nov 21, 2016\n",
"\n",
"**Parcellations**: Desikan atlas (70 nodes), Talairach (1105 nodes) <br/>\n",
"**Dataset**: SWU4 <br/>\n",
"**Sensor**: DTI"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"\"\"\"\n",
"Import packages\n",
"\"\"\"\n",
"import networkx as nx\n",
"import numpy as np\n",
"import os"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of subjects: 454\n"
]
}
],
"source": [
"\"\"\"\n",
"Get file handles\n",
"\"\"\"\n",
"basepath_d = './desikan/'\n",
"nodes_d = 70\n",
"\n",
"files_d = [os.path.join(basepath_d, f) for f in os.listdir(basepath_d)]\n",
"\n",
"basepath_t = './Talairach/'\n",
"nodes_t = 1105\n",
"\n",
"files_t = [os.path.join(basepath_t, f) for f in os.listdir(basepath_t)]\n",
"assert(len(files_t) == len(files_d))\n",
"\n",
"print \"Number of subjects: %d\" % len(files_d)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"\"\"\"\n",
"Get degree list\n",
"\"\"\"\n",
"deg_d = np.zeros((len(files_d), nodes_d))\n",
"for idx, f in enumerate(files_d):\n",
" g = 1.0 * ( nx.adjacency_matrix(nx.read_gpickle(f)).todense() > 0 )\n",
" temp_d = np.sum(g, 1)\n",
" deg_d[idx,:] = temp_d.T\n",
" \n",
"deg_t = np.zeros((len(files_t), nodes_t))\n",
"for idx, f in enumerate(files_t):\n",
" g = 1.0 * ( nx.adjacency_matrix(nx.read_gpickle(f)).todense() > 0 )\n",
" temp_d = np.sum(g, 1)\n",
" deg_t[idx,:] = temp_d.T"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"\"\"\"\n",
"Get average degrees and prune to top few\n",
"\"\"\"\n",
"avg_deg_d = np.mean(deg_d, 0)\n",
"std_deg_d = np.std(deg_d, 0)\n",
"dense_nodes_d = avg_deg_d.argsort()[::-1][:7,]\n",
"\n",
"avg_deg_t = np.mean(deg_t, 0)\n",
"std_deg_t = np.std(deg_t, 0)\n",
"dense_nodes_t = avg_deg_t.argsort()[::-1][:15,]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"\"\"\"\n",
"Load region labels\n",
"\"\"\"\n",
"f = open('./desikan.txt')\n",
"labs_d = [line.strip('\\n') for line in f]\n",
"\n",
"f = open('./Talairach.txt')\n",
"labs_t = [line.strip('\\n') for line in f]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The most dense nodes and their average degree are:\n",
"Desikan atlas:\n",
" Node: 1, Mean: 57.42, Std: 3.92, Name: lh-bankssts;\n",
" Node: 43, Mean: 56.22, Std: 3.74, Name: rh-inferiorparietal;\n",
" Node: 5, Mean: 49.73, Std: 6.22, Name: lh-cuneus;\n",
" Node: 47, Mean: 48.70, Std: 5.76, Name: rh-lateralorbitofrontal;\n",
" Node: 53, Mean: 46.35, Std: 5.20, Name: rh-parsopercularis;\n",
" Node: 67, Mean: 44.06, Std: 7.08, Name: rh-frontalpole;\n",
" Node: 29, Mean: 43.57, Std: 6.84, Name: lh-superiorparietal\n",
"Talairach atlas:\n",
" Node: 346, Mean: 381.24, Std: 30.70, Name: Left Cerebrum.Sub-lobar.Extra-Nuclear.White Matter.*;\n",
" Node: 347, Mean: 375.00, Std: 32.54, Name: Right Cerebrum.Sub-lobar.Extra-Nuclear.White Matter.*;\n",
" Node: 193, Mean: 339.70, Std: 39.83, Name: Right Cerebrum.Frontal Lobe.Sub-Gyral.White Matter.*;\n",
" Node: 192, Mean: 338.31, Std: 37.77, Name: Left Cerebrum.Frontal Lobe.Sub-Gyral.White Matter.*;\n",
" Node: 106, Mean: 331.81, Std: 40.78, Name: Inter-Hemispheric.*.*.*.*;\n",
" Node: 921, Mean: 283.11, Std: 48.20, Name: Right Cerebrum.Limbic Lobe.Cingulate Gyrus.White Matter.*;\n",
" Node: 797, Mean: 271.12, Std: 45.44, Name: Right Cerebrum.Parietal Lobe.Sub-Gyral.White Matter.*;\n",
" Node: 795, Mean: 266.57, Std: 42.21, Name: Left Cerebrum.Parietal Lobe.Sub-Gyral.White Matter.*;\n",
" Node: 172, Mean: 260.77, Std: 30.86, Name: Left Cerebrum.Sub-lobar.Lateral Ventricle.Cerebro-Spinal Fluid.*;\n",
" Node: 50, Mean: 259.65, Std: 27.15, Name: Left Cerebrum.Temporal Lobe.Sub-Gyral.White Matter.*;\n",
" Node: 920, Mean: 257.98, Std: 46.73, Name: Left Cerebrum.Limbic Lobe.Cingulate Gyrus.White Matter.*;\n",
" Node: 173, Mean: 256.27, Std: 33.37, Name: Right Cerebrum.Sub-lobar.Lateral Ventricle.Cerebro-Spinal Fluid.*;\n",
" Node: 47, Mean: 251.50, Std: 28.53, Name: Right Cerebrum.*.*.*.*;\n",
" Node: 51, Mean: 249.99, Std: 29.29, Name: Right Cerebrum.Temporal Lobe.Sub-Gyral.White Matter.*;\n",
" Node: 915, Mean: 214.75, Std: 45.51, Name: Right Cerebrum.Limbic Lobe.Cingulate Gyrus.Gray Matter.Brodmann area 31\n"
]
}
],
"source": [
"\"\"\"\n",
"Display densely connected nodes\n",
"\"\"\"\n",
"print \"The most dense nodes and their average degree are:\"\n",
"print \"Desikan atlas:\"\n",
"print \" \", \";\\n \".join([\"Node: %2d, Mean: %.2f, Std: %.2f, Name: %s\" % (d, avg_deg_d[d], std_deg_d[d], labs_d[d])\n",
" for d in dense_nodes_d])\n",
"\n",
"print \"Talairach atlas:\"\n",
"print \" \", \";\\n \".join([\"Node: %2d, Mean: %.2f, Std: %.2f, Name: %s\" % (d, avg_deg_t[d], std_deg_t[d], labs_t[d])\n",
" for d in dense_nodes_t])"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}