Index: branches/unique_lane_types/.ipynb_checkpoints/unique_lane_types-checkpoint.ipynb
===================================================================
--- branches/unique_lane_types/.ipynb_checkpoints/unique_lane_types-checkpoint.ipynb	(revision 235)
+++ branches/unique_lane_types/.ipynb_checkpoints/unique_lane_types-checkpoint.ipynb	(revision 237)
@@ -1,5 +1,320 @@
 {
- "cells": [],
- "metadata": {},
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "loop_file = open(\"./loop_fullmap.txt\", \"r\")\n",
+    "def get_id_and_desc(line):\n",
+    "    split_line = line.split()\n",
+    "    loop_id = split_line[6]\n",
+    "    loop_desc = split_line[8]\n",
+    "    return loop_id, loop_desc\n",
+    "\n",
+    "loop_dict = {}\n",
+    "\n",
+    "for line in loop_file:\n",
+    "    loop_id, loop_desc = get_id_and_desc(line)\n",
+    "    if loop_id in loop_dict.keys():\n",
+    "        if loop_desc not in loop_dict[loop_id].keys():\n",
+    "            loop_dict[loop_id][loop_desc] = 1\n",
+    "        else:\n",
+    "            loop_dict[loop_id][loop_desc] += 1\n",
+    "    else:\n",
+    "        loop_dict[loop_id] = {}\n",
+    "        loop_dict[loop_id][loop_desc] = 1\n",
+    "loop_file.close()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "import json\n",
+    "# f = open('unique_lane_types_results.txt','w')\n",
+    "# f.write(json.dumps(loop_dict, indent=1))\n",
+    "# f.close()\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{\n",
+      "  \"OR\": {\n",
+      "    \"RAMP_ON\": 278,\n",
+      "    \"SD_3\": 6,\n",
+      "    \"SD_5\": 5,\n",
+      "    \"SD_2\": 3,\n",
+      "    \"SD_4\": 3,\n",
+      "    \"SD_1\": 4\n",
+      "  },\n",
+      "  \"QU\": {\n",
+      "    \"QUEUE\": 317\n",
+      "  },\n",
+      "  \"DM\": {\n",
+      "    \"DEMAND\": 314,\n",
+      "    \"PASSAGE\": 4\n",
+      "  },\n",
+      "  \"PA\": {\n",
+      "    \"PASSAGE\": 315,\n",
+      "    \"DEMAND\": 4\n",
+      "  },\n",
+      "  \"RH\": {\n",
+      "    \"RAMP_HOV\": 103,\n",
+      "    \"SD_1\": 1\n",
+      "  },\n",
+      "  \"FR\": {\n",
+      "    \"RAMP_OFF\": 171,\n",
+      "    \"SD_2\": 34,\n",
+      "    \"SD_3\": 27,\n",
+      "    \"SD_4\": 20,\n",
+      "    \"SD_5\": 14,\n",
+      "    \"SD_6\": 7,\n",
+      "    \"SD_1\": 6,\n",
+      "    \"COLL._DIST_2\": 1,\n",
+      "    \"COLL._DIST_1\": 1\n",
+      "  },\n",
+      "  \"ML\": {\n",
+      "    \"ML_1\": 546,\n",
+      "    \"ML_2\": 548,\n",
+      "    \"ML_3\": 500,\n",
+      "    \"ML_4\": 375,\n",
+      "    \"ML_5\": 136,\n",
+      "    \"ML_6\": 25,\n",
+      "    \"SD_3\": 1,\n",
+      "    \"SD_5\": 1,\n",
+      "    \"SD_1\": 3,\n",
+      "    \"SD_2\": 3,\n",
+      "    \"OS_1\": 2,\n",
+      "    \"OS_2\": 2\n",
+      "  },\n",
+      "  \"HV\": {\n",
+      "    \"SD_1\": 288,\n",
+      "    \"SD_2\": 24,\n",
+      "    \"SD_3\": 11,\n",
+      "    \"SD_4\": 10,\n",
+      "    \"RAMP_HOV\": 1\n",
+      "  },\n",
+      "  \"OC\": {\n",
+      "    \"COLL._DIST_1\": 3,\n",
+      "    \"COLL._DIST_2\": 2,\n",
+      "    \"COLL._DIST_ON\": 4,\n",
+      "    \"SD_5\": 2\n",
+      "  },\n",
+      "  \"OS\": {\n",
+      "    \"OS_1\": 262,\n",
+      "    \"OS_2\": 262,\n",
+      "    \"OS_3\": 217,\n",
+      "    \"OS_4\": 136,\n",
+      "    \"OS_5\": 47,\n",
+      "    \"OS_6\": 12,\n",
+      "    \"ML_1\": 1,\n",
+      "    \"ML_2\": 1,\n",
+      "    \"SD_3\": 1,\n",
+      "    \"SD_4\": 1,\n",
+      "    \"SD_2\": 1\n",
+      "  },\n",
+      "  \"OH\": {\n",
+      "    \"SD_2\": 93,\n",
+      "    \"SD_6\": 2,\n",
+      "    \"SD_3\": 8,\n",
+      "    \"SD_4\": 6,\n",
+      "    \"SD_5\": 2,\n",
+      "    \"SD_1\": 9\n",
+      "  },\n",
+      "  \"FF\": {\n",
+      "    \"SD_4\": 30,\n",
+      "    \"SD_5\": 23,\n",
+      "    \"COLL._DIST_ON\": 3,\n",
+      "    \"SD_2\": 21,\n",
+      "    \"SD_3\": 19,\n",
+      "    \"COLL._DIST_1\": 3,\n",
+      "    \"COLL._DIST_2\": 4,\n",
+      "    \"COLL._DIST_OFF\": 3,\n",
+      "    \"SD_1\": 17,\n",
+      "    \"SD_6\": 5,\n",
+      "    \"DEMAND\": 1,\n",
+      "    \"RAMP_ON\": 1,\n",
+      "    \"RAMP_OFF\": 1,\n",
+      "    \"ML_3\": 1\n",
+      "  },\n",
+      "  \"FC\": {\n",
+      "    \"COLL._DIST_OFF\": 4,\n",
+      "    \"SD_6\": 1,\n",
+      "    \"COLL._DIST_1\": 1,\n",
+      "    \"SD_3\": 2\n",
+      "  },\n",
+      "  \"FO\": {\n",
+      "    \"SD_4\": 12,\n",
+      "    \"SD_5\": 10,\n",
+      "    \"SD_6\": 6,\n",
+      "    \"SD_3\": 10,\n",
+      "    \"ML_3\": 1,\n",
+      "    \"SD_1\": 2,\n",
+      "    \"SD_2\": 5,\n",
+      "    \"COLL._DIST_1\": 2,\n",
+      "    \"COLL._DIST_2\": 2,\n",
+      "    \"RAMP_HOV\": 1\n",
+      "  },\n",
+      "  \"CD\": {\n",
+      "    \"COLL._DIST_1\": 26,\n",
+      "    \"COLL._DIST_2\": 9,\n",
+      "    \"COLL._DIST_OFF\": 1,\n",
+      "    \"SD_5\": 3,\n",
+      "    \"SD_6\": 2,\n",
+      "    \"SD_3\": 1,\n",
+      "    \"SD_2\": 1,\n",
+      "    \"SD_1\": 1\n",
+      "  },\n",
+      "  \"OF\": {\n",
+      "    \"SD_3\": 23,\n",
+      "    \"RAMP_OFF\": 21,\n",
+      "    \"SD_1\": 26,\n",
+      "    \"SD_2\": 10,\n",
+      "    \"SD_4\": 7,\n",
+      "    \"SD_5\": 2,\n",
+      "    \"COLL._DIST_1\": 1,\n",
+      "    \"RAMP_ON\": 1\n",
+      "  },\n",
+      "  \"HN\": {\n",
+      "    \"RAMP_ON\": 1,\n",
+      "    \"SD_5\": 1\n",
+      "  },\n",
+      "  \"HF\": {\n",
+      "    \"RAMP_OFF\": 1,\n",
+      "    \"SD_2\": 1\n",
+      "  },\n",
+      "  \"HB\": {\n",
+      "    \"SD_5\": 2,\n",
+      "    \"COLL._DIST_1\": 1,\n",
+      "    \"SD_6\": 1\n",
+      "  },\n",
+      "  \"OO\": {\n",
+      "    \"SD_1\": 1,\n",
+      "    \"SD_2\": 1,\n",
+      "    \"SD_3\": 2,\n",
+      "    \"RAMP_ON\": 1\n",
+      "  }\n",
+      "}\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(json.dumps(loop_dict, indent=2))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Known lane types\n",
+    "\n",
+    "- ### ML = MAIN LINE\n",
+    "ML ML_? = main line lane\n",
+    "\n",
+    "- ### HV = HOV LANE\n",
+    "HV SD_? = HOV LANE\n",
+    "\n",
+    "- ### OS = OPP SIDE ?\n",
+    "OS OS_? = opp side lane\n",
+    "\n",
+    "- ### OH = OPP HOV LANE\n",
+    "OH SD_? = opp HOV lane\n",
+    "\n",
+    "- ### FR = OFF RAMP\n",
+    "FR RAMP_OFF = off ramp <br>\n",
+    "FR SD_? = off ramp multiple lanes?\n",
+    "\n",
+    "- ### OR = ON RAMP\n",
+    "OR RAMP_ON = on ramp <br>\n",
+    "OR SD_? = on_ramp multiple lanes?\n",
+    "\n",
+    "- ### QU = QUEUE\n",
+    "QU QUEUE = queue lane (something to do with on ramp)\n",
+    "\n",
+    "- ### DM = DEMAND\n",
+    "DM DEMAND = demand (something to do with on ramp)\n",
+    "\n",
+    "- ### PA = PASSAGE\n",
+    "PA PASSAGE = passage (something to do with on ramp)\n",
+    "\n",
+    "- ### RH = HOV RAMP\n",
+    "RH RAMP_HOV = HOV ramp\n",
+    "\n",
+    "## Confusing but known?\n",
+    "\n",
+    "- ### FF FWY TO FWY\n",
+    "FF < many different lane descriptions >\n",
+    "\n",
+    "- ### CD = COLLECTOR / DISTRIBUTOR\n",
+    "CD COLL._DIST_1 <br>\n",
+    "CD COLL._DIST_2 <br>\n",
+    "CD COLL._DIST_OFF <br>\n",
+    "CD SD_?\n",
+    "\n",
+    "- ### OC = COLLECTOR / DISTRIBUTOR\n",
+    "OC COLL._DIST_? <br>\n",
+    "OC COLL._DIST_ON <br>\n",
+    "OC SD_5\n",
+    "\n",
+    "## Unknown\n",
+    "- ### FC ?\n",
+    "\n",
+    "- ### OO ?\n",
+    "\n",
+    "- ### HB ?\n",
+    "\n",
+    "- ### HF ?\n",
+    "\n",
+    "- ### HN ?\n",
+    "\n",
+    "- ### OF ?\n",
+    "\n",
+    "- ### FO ?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.6.3"
+  }
+ },
  "nbformat": 4,
  "nbformat_minor": 2
Index: branches/unique_lane_types/unique_lane_types.ipynb
===================================================================
--- branches/unique_lane_types/unique_lane_types.ipynb	(revision 235)
+++ branches/unique_lane_types/unique_lane_types.ipynb	(revision 237)
@@ -4,5 +4,7 @@
    "cell_type": "code",
    "execution_count": 1,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
@@ -31,13 +33,267 @@
   {
    "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {},
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "import json\n",
-    "f = open('unique_lane_types_results.txt','w')\n",
-    "f.write(json.dumps(loop_dict, indent=1))\n",
-    "f.close()\n"
+    "# f = open('unique_lane_types_results.txt','w')\n",
+    "# f.write(json.dumps(loop_dict, indent=1))\n",
+    "# f.close()\n"
    ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{\n",
+      "  \"OR\": {\n",
+      "    \"RAMP_ON\": 278,\n",
+      "    \"SD_3\": 6,\n",
+      "    \"SD_5\": 5,\n",
+      "    \"SD_2\": 3,\n",
+      "    \"SD_4\": 3,\n",
+      "    \"SD_1\": 4\n",
+      "  },\n",
+      "  \"QU\": {\n",
+      "    \"QUEUE\": 317\n",
+      "  },\n",
+      "  \"DM\": {\n",
+      "    \"DEMAND\": 314,\n",
+      "    \"PASSAGE\": 4\n",
+      "  },\n",
+      "  \"PA\": {\n",
+      "    \"PASSAGE\": 315,\n",
+      "    \"DEMAND\": 4\n",
+      "  },\n",
+      "  \"RH\": {\n",
+      "    \"RAMP_HOV\": 103,\n",
+      "    \"SD_1\": 1\n",
+      "  },\n",
+      "  \"FR\": {\n",
+      "    \"RAMP_OFF\": 171,\n",
+      "    \"SD_2\": 34,\n",
+      "    \"SD_3\": 27,\n",
+      "    \"SD_4\": 20,\n",
+      "    \"SD_5\": 14,\n",
+      "    \"SD_6\": 7,\n",
+      "    \"SD_1\": 6,\n",
+      "    \"COLL._DIST_2\": 1,\n",
+      "    \"COLL._DIST_1\": 1\n",
+      "  },\n",
+      "  \"ML\": {\n",
+      "    \"ML_1\": 546,\n",
+      "    \"ML_2\": 548,\n",
+      "    \"ML_3\": 500,\n",
+      "    \"ML_4\": 375,\n",
+      "    \"ML_5\": 136,\n",
+      "    \"ML_6\": 25,\n",
+      "    \"SD_3\": 1,\n",
+      "    \"SD_5\": 1,\n",
+      "    \"SD_1\": 3,\n",
+      "    \"SD_2\": 3,\n",
+      "    \"OS_1\": 2,\n",
+      "    \"OS_2\": 2\n",
+      "  },\n",
+      "  \"HV\": {\n",
+      "    \"SD_1\": 288,\n",
+      "    \"SD_2\": 24,\n",
+      "    \"SD_3\": 11,\n",
+      "    \"SD_4\": 10,\n",
+      "    \"RAMP_HOV\": 1\n",
+      "  },\n",
+      "  \"OC\": {\n",
+      "    \"COLL._DIST_1\": 3,\n",
+      "    \"COLL._DIST_2\": 2,\n",
+      "    \"COLL._DIST_ON\": 4,\n",
+      "    \"SD_5\": 2\n",
+      "  },\n",
+      "  \"OS\": {\n",
+      "    \"OS_1\": 262,\n",
+      "    \"OS_2\": 262,\n",
+      "    \"OS_3\": 217,\n",
+      "    \"OS_4\": 136,\n",
+      "    \"OS_5\": 47,\n",
+      "    \"OS_6\": 12,\n",
+      "    \"ML_1\": 1,\n",
+      "    \"ML_2\": 1,\n",
+      "    \"SD_3\": 1,\n",
+      "    \"SD_4\": 1,\n",
+      "    \"SD_2\": 1\n",
+      "  },\n",
+      "  \"OH\": {\n",
+      "    \"SD_2\": 93,\n",
+      "    \"SD_6\": 2,\n",
+      "    \"SD_3\": 8,\n",
+      "    \"SD_4\": 6,\n",
+      "    \"SD_5\": 2,\n",
+      "    \"SD_1\": 9\n",
+      "  },\n",
+      "  \"FF\": {\n",
+      "    \"SD_4\": 30,\n",
+      "    \"SD_5\": 23,\n",
+      "    \"COLL._DIST_ON\": 3,\n",
+      "    \"SD_2\": 21,\n",
+      "    \"SD_3\": 19,\n",
+      "    \"COLL._DIST_1\": 3,\n",
+      "    \"COLL._DIST_2\": 4,\n",
+      "    \"COLL._DIST_OFF\": 3,\n",
+      "    \"SD_1\": 17,\n",
+      "    \"SD_6\": 5,\n",
+      "    \"DEMAND\": 1,\n",
+      "    \"RAMP_ON\": 1,\n",
+      "    \"RAMP_OFF\": 1,\n",
+      "    \"ML_3\": 1\n",
+      "  },\n",
+      "  \"FC\": {\n",
+      "    \"COLL._DIST_OFF\": 4,\n",
+      "    \"SD_6\": 1,\n",
+      "    \"COLL._DIST_1\": 1,\n",
+      "    \"SD_3\": 2\n",
+      "  },\n",
+      "  \"FO\": {\n",
+      "    \"SD_4\": 12,\n",
+      "    \"SD_5\": 10,\n",
+      "    \"SD_6\": 6,\n",
+      "    \"SD_3\": 10,\n",
+      "    \"ML_3\": 1,\n",
+      "    \"SD_1\": 2,\n",
+      "    \"SD_2\": 5,\n",
+      "    \"COLL._DIST_1\": 2,\n",
+      "    \"COLL._DIST_2\": 2,\n",
+      "    \"RAMP_HOV\": 1\n",
+      "  },\n",
+      "  \"CD\": {\n",
+      "    \"COLL._DIST_1\": 26,\n",
+      "    \"COLL._DIST_2\": 9,\n",
+      "    \"COLL._DIST_OFF\": 1,\n",
+      "    \"SD_5\": 3,\n",
+      "    \"SD_6\": 2,\n",
+      "    \"SD_3\": 1,\n",
+      "    \"SD_2\": 1,\n",
+      "    \"SD_1\": 1\n",
+      "  },\n",
+      "  \"OF\": {\n",
+      "    \"SD_3\": 23,\n",
+      "    \"RAMP_OFF\": 21,\n",
+      "    \"SD_1\": 26,\n",
+      "    \"SD_2\": 10,\n",
+      "    \"SD_4\": 7,\n",
+      "    \"SD_5\": 2,\n",
+      "    \"COLL._DIST_1\": 1,\n",
+      "    \"RAMP_ON\": 1\n",
+      "  },\n",
+      "  \"HN\": {\n",
+      "    \"RAMP_ON\": 1,\n",
+      "    \"SD_5\": 1\n",
+      "  },\n",
+      "  \"HF\": {\n",
+      "    \"RAMP_OFF\": 1,\n",
+      "    \"SD_2\": 1\n",
+      "  },\n",
+      "  \"HB\": {\n",
+      "    \"SD_5\": 2,\n",
+      "    \"COLL._DIST_1\": 1,\n",
+      "    \"SD_6\": 1\n",
+      "  },\n",
+      "  \"OO\": {\n",
+      "    \"SD_1\": 1,\n",
+      "    \"SD_2\": 1,\n",
+      "    \"SD_3\": 2,\n",
+      "    \"RAMP_ON\": 1\n",
+      "  }\n",
+      "}\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(json.dumps(loop_dict, indent=2))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Known lane types\n",
+    "\n",
+    "- ### ML = MAIN LINE\n",
+    "ML ML_? = main line lane\n",
+    "\n",
+    "- ### HV = HOV LANE\n",
+    "HV SD_? = HOV LANE\n",
+    "\n",
+    "- ### OS = OPP SIDE ?\n",
+    "OS OS_? = opp side lane\n",
+    "\n",
+    "- ### OH = OPP HOV LANE\n",
+    "OH SD_? = opp HOV lane\n",
+    "\n",
+    "- ### FR = OFF RAMP\n",
+    "FR RAMP_OFF = off ramp <br>\n",
+    "FR SD_? = off ramp multiple lanes?\n",
+    "\n",
+    "- ### OR = ON RAMP\n",
+    "OR RAMP_ON = on ramp <br>\n",
+    "OR SD_? = on_ramp multiple lanes?\n",
+    "\n",
+    "- ### QU = QUEUE\n",
+    "QU QUEUE = queue lane (something to do with on ramp)\n",
+    "\n",
+    "- ### DM = DEMAND\n",
+    "DM DEMAND = demand (something to do with on ramp)\n",
+    "\n",
+    "- ### PA = PASSAGE\n",
+    "PA PASSAGE = passage (something to do with on ramp)\n",
+    "\n",
+    "- ### RH = HOV RAMP\n",
+    "RH RAMP_HOV = HOV ramp\n",
+    "\n",
+    "## Confusing but known?\n",
+    "\n",
+    "- ### FF FWY TO FWY\n",
+    "FF < many different lane descriptions >\n",
+    "\n",
+    "- ### CD = COLLECTOR / DISTRIBUTOR\n",
+    "CD COLL._DIST_1 <br>\n",
+    "CD COLL._DIST_2 <br>\n",
+    "CD COLL._DIST_OFF <br>\n",
+    "CD SD_?\n",
+    "\n",
+    "- ### OC = COLLECTOR / DISTRIBUTOR\n",
+    "OC COLL._DIST_? <br>\n",
+    "OC COLL._DIST_ON <br>\n",
+    "OC SD_5\n",
+    "\n",
+    "## Unknown\n",
+    "- ### FC ?\n",
+    "\n",
+    "- ### OO ?\n",
+    "\n",
+    "- ### HB ?\n",
+    "\n",
+    "- ### HF ?\n",
+    "\n",
+    "- ### HN ?\n",
+    "\n",
+    "- ### OF ?\n",
+    "\n",
+    "- ### FO ?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": []
   }
  ],
