neurodata/ndmg

View on GitHub
examples/high_degree_nodes.ipynb

Summary

Maintainability
Test Coverage
{
 "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
}