From 5387fb0914d031b07c95b091bc1d3760bca662ab Mon Sep 17 00:00:00 2001 From: Terence Parr Date: Wed, 20 Jun 2018 11:09:02 -0700 Subject: [PATCH 1/4] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6b26c49..04e522c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # lolviz -A simple Python data-structure visualization tool that started out as a **L**ist **O**f **L**ists (lol) visualizer but now handles arbitrary object graphs, including function call stacks! lolviz tries to look out for and format nicely common data structures such as lists, dictionaries, linked lists, and binary trees. This package is primarily for use in teaching and presentations with Jupyter notebooks, but could also be used for debugging data structures. +By Terence Parr. See [Explained.ai](http://explained.ai) for more stuff. + +A simple Python data-structure visualization tool that started out as a **L**ist **O**f **L**ists (lol) visualizer but now handles arbitrary object graphs, including function call stacks! lolviz tries to look out for and format nicely common data structures such as lists, dictionaries, linked lists, and binary trees. This package is primarily for use in teaching and presentations with Jupyter notebooks, but could also be used for debugging data structures. Useful for devoting machine learning data structures, such as decision trees, as well. It seems that I'm always trying to describe how data is laid out in memory to students. There are really great data structure visualization tools but I wanted something I could use directly via Python in Jupyter notebooks. From 21dbb22a9e557eb44aecfeb1f9c09e80adffb044 Mon Sep 17 00:00:00 2001 From: parrt Date: Wed, 27 Jun 2018 16:20:45 -0700 Subject: [PATCH 2/4] tweak --- examples.ipynb | 3608 ++++++++++++++++++++++++------------------------ 1 file changed, 1804 insertions(+), 1804 deletions(-) diff --git a/examples.ipynb b/examples.ipynb index cc6bd8a..1d17ba6 100644 --- a/examples.ipynb +++ b/examples.ipynb @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "collapsed": true }, @@ -52,50 +52,50 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610893960\n", - "\n", - "\n", - "\n", - "0 \n", - "\n", - " '2016-08-12'\n", - "\n", - "\n", - "\n", - "1 \n", - "\n", - " 107.779999\n", - "\n", - "\n", - "\n", - "2 \n", - "\n", - " 108.440002\n", - "\n", - "\n", - "\n", - "3 \n", - "\n", - " 107.779999\n", - "\n", - "\n", - "\n", - "4 \n", - "\n", - " 108.18\n", + "node4577415048\n", + "\n", + "\n", + "\n", + "0 \n", + "\n", + " '2016-08-12'\n", + "\n", + "\n", + "\n", + "1 \n", + "\n", + " 107.779999\n", + "\n", + "\n", + "\n", + "2 \n", + "\n", + " 108.440002\n", + "\n", + "\n", + "\n", + "3 \n", + "\n", + " 107.779999\n", + "\n", + "\n", + "\n", + "4 \n", + "\n", + " 108.18\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -121,124 +121,124 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610893896\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "1\n", - "\n", - "\n", + "node4577499784\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "1\n", + "\n", + "\n", "\n", - "node4610621000\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "\n", - "4\n", - "\n", - "\n", - "5\n", - "\n", - "\n", - "'Date'\n", - "\n", - "\n", - "'Open'\n", - "\n", - "\n", - "'High'\n", - "\n", - "\n", - "'Low'\n", - "\n", - "\n", - "'Close'\n", - "\n", - "'Volume'\n", - "\n", - "\n", + "node4576190408\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "\n", + "4\n", + "\n", + "\n", + "5\n", + "\n", + "\n", + "'Date'\n", + "\n", + "\n", + "'Open'\n", + "\n", + "\n", + "'High'\n", + "\n", + "\n", + "'Low'\n", + "\n", + "\n", + "'Close'\n", + "\n", + "'Volume'\n", + "\n", + "\n", "\n", - "node4610893896:0->node4610621000:w\n", - "\n", - "\n", + "node4577499784:0->node4576190408:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610182536\n", - "\n", - "\n", - "\n", - "0 \n", - "\n", - " '2016-08-12'\n", - "\n", - "\n", - "\n", - "1 \n", - "\n", - " 107.779999\n", - "\n", - "\n", - "\n", - "2 \n", - "\n", - " 108.440002\n", - "\n", - "\n", - "\n", - "3 \n", - "\n", - " 107.779999\n", - "\n", - "\n", - "\n", - "4 \n", - "\n", - " 108.18\n", - "\n", - "\n", - "\n", - "5 \n", - "\n", - " 18612300\n", - "\n", - "\n", - "\n", - "6 \n", - "\n", - " 108.18\n", - "\n", - "\n", + "node4577498824\n", + "\n", + "\n", + "\n", + "0 \n", + "\n", + " '2016-08-12'\n", + "\n", + "\n", + "\n", + "1 \n", + "\n", + " 107.779999\n", + "\n", + "\n", + "\n", + "2 \n", + "\n", + " 108.440002\n", + "\n", + "\n", + "\n", + "3 \n", + "\n", + " 107.779999\n", + "\n", + "\n", + "\n", + "4 \n", + "\n", + " 108.18\n", + "\n", + "\n", + "\n", + "5 \n", + "\n", + " 18612300\n", + "\n", + "\n", + "\n", + "6 \n", + "\n", + " 108.18\n", + "\n", + "\n", "\n", - "node4610893896:1->node4610182536:w\n", - "\n", - "\n", + "node4577499784:1->node4577498824:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -270,50 +270,50 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610967368\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "\n", - "4\n", - "\n", - "\n", - "97\n", - "\n", - "\n", - "98\n", - "\n", - "\n", - "99\n", - "\n", - "\n", - "100\n", - "\n", - "101\n", + "node4577500744\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "\n", + "4\n", + "\n", + "\n", + "97\n", + "\n", + "\n", + "98\n", + "\n", + "\n", + "99\n", + "\n", + "\n", + "100\n", + "\n", + "101\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -342,50 +342,50 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610986440\n", - "\n", - "\n", - "\n", - "0 \n", - "\n", - " 97→'a'\n", - "\n", - "\n", - "\n", - "1 \n", - "\n", - " 98→'b'\n", - "\n", - "\n", - "\n", - "2 \n", - "\n", - " 99→'c'\n", - "\n", - "\n", - "\n", - "3 \n", - "\n", - " 100→'d'\n", - "\n", - "\n", - "\n", - "4 \n", - "\n", - " 101→'e'\n", + "node4577472920\n", + "\n", + "\n", + "\n", + "0 \n", + "\n", + " 97→'a'\n", + "\n", + "\n", + "\n", + "1 \n", + "\n", + " 98→'b'\n", + "\n", + "\n", + "\n", + "2 \n", + "\n", + " 99→'c'\n", + "\n", + "\n", + "\n", + "3 \n", + "\n", + " 100→'d'\n", + "\n", + "\n", + "\n", + "4 \n", + "\n", + " 101→'e'\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -400,7 +400,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -412,148 +412,148 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4611911048\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "4\n", - "\n", - "\n", + "node4577555272\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "4\n", + "\n", + "\n", "\n", - "node4609226696\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "97\n", - "\n", - "'a'\n", - "\n", - "\n", + "node4576171016\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "97\n", + "\n", + "'a'\n", + "\n", + "\n", "\n", - "node4611911048:0->node4609226696:w\n", - "\n", - "\n", + "node4577555272:0->node4576171016:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609014408\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "98\n", - "\n", - "'b'\n", - "\n", - "\n", + "node4575919496\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "98\n", + "\n", + "'b'\n", + "\n", + "\n", "\n", - "node4611911048:1->node4609014408:w\n", - "\n", - "\n", + "node4577555272:1->node4575919496:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609218248\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "99\n", - "\n", - "'c'\n", - "\n", - "\n", + "node4576141768\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "99\n", + "\n", + "'c'\n", + "\n", + "\n", "\n", - "node4611911048:2->node4609218248:w\n", - "\n", - "\n", + "node4577555272:2->node4576141768:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609013832\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "100\n", - "\n", - "'d'\n", - "\n", - "\n", + "node4576150344\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "100\n", + "\n", + "'d'\n", + "\n", + "\n", "\n", - "node4611911048:3->node4609013832:w\n", - "\n", - "\n", + "node4577555272:3->node4576150344:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609230472\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "101\n", - "\n", - "'e'\n", - "\n", - "\n", + "node4576149704\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "101\n", + "\n", + "'e'\n", + "\n", + "\n", "\n", - "node4611911048:4->node4609230472:w\n", - "\n", - "\n", + "node4577555272:4->node4576149704:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 24, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -576,32 +576,32 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610967880\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'mom'\n", - "\n", - "'hi'\n", + "node4577555784\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'mom'\n", + "\n", + "'hi'\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -627,32 +627,32 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610969288\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'superuser'\n", - "\n", - "'mgr'\n", + "node4577556296\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'superuser'\n", + "\n", + "'mgr'\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -678,86 +678,86 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610968200\n", - "\n", - "\n", - "\n", - "0 \n", - "\n", - " 'elem13'\n", - "\n", - "\n", - "\n", - "1 \n", - "\n", - " 'elem8'\n", - "\n", - "\n", - "\n", - "2 \n", - "\n", - " 'elem5'\n", - "\n", - "\n", - "\n", - "3 \n", - "\n", - " 'elem7'\n", - "\n", - "\n", - "\n", - "4 \n", - "\n", - " 'elem17'\n", - "\n", - "\n", - "\n", - "5 \n", - "\n", - " 'elem12'\n", - "\n", - "\n", - "\n", - "6 \n", - "\n", - " 'elem15'\n", - "\n", - "\n", - "\n", - "7 \n", - "\n", - " 'elem0'\n", - "\n", - "\n", - "\n", - "8 \n", - "\n", - " 'elem16'\n", - "\n", - "\n", - "\n", - "... \n", - "\n", - " ...\n", - "\n", - "\n", - "\n", - "19 \n", - "\n", - " 'elem19'\n", + "node4577556616\n", + "\n", + "\n", + "\n", + "0 \n", + "\n", + " 'elem1'\n", + "\n", + "\n", + "\n", + "1 \n", + "\n", + " 'elem13'\n", + "\n", + "\n", + "\n", + "2 \n", + "\n", + " 'elem16'\n", + "\n", + "\n", + "\n", + "3 \n", + "\n", + " 'elem5'\n", + "\n", + "\n", + "\n", + "4 \n", + "\n", + " 'elem18'\n", + "\n", + "\n", + "\n", + "5 \n", + "\n", + " 'elem7'\n", + "\n", + "\n", + "\n", + "6 \n", + "\n", + " 'elem12'\n", + "\n", + "\n", + "\n", + "7 \n", + "\n", + " 'elem17'\n", + "\n", + "\n", + "\n", + "8 \n", + "\n", + " 'elem11'\n", + "\n", + "\n", + "\n", + "... \n", + "\n", + " ...\n", + "\n", + "\n", + "\n", + "19 \n", + "\n", + " 'elem10'\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -783,93 +783,93 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", + "\n", "\n", "cluster1\n", "\n", - "\n", + "\n", "\n", - "node4611016072\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'tombu'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", - "\n", - "node4611015960\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'parrt'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", - "\n", - "node4611015960:c->node4611016072\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "node4577604384\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'xue'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4611016128\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'xue'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", + "node4577604216\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'parrt'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4611016128:c->node4611015960\n", - "\n", - "\n", - "\n", + "node4577604384:c->node4577604216\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "node4577604328\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'tombu'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", + "\n", + "node4577604216:c->node4577604328\n", + "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -904,78 +904,78 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4611007240\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "1\n", - "\n", - "\n", + "node4577557064\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "1\n", + "\n", + "\n", "\n", - "node4611017864\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'mary'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", + "node4577606064\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'mary'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4611007240:0->node4611017864:w\n", - "\n", - "\n", + "node4577557064:0->node4577606064:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611017752\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'parrt'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", + "node4577605952\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'parrt'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4611007240:1->node4611017752:w\n", - "\n", - "\n", + "node4577557064:1->node4577605952:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -1002,48 +1002,48 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4611009288\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "1\n", - "\n", - "\n", + "node4577580168\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "1\n", + "\n", + "\n", "\n", - "node4609022984\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'mary'\n", - "\n", - "  \n", - "\n", - "\n", + "node4576162568\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'mary'\n", + "\n", + "  \n", + "\n", + "\n", "\n", - "node4611009288:1->node4609022984:w\n", - "\n", - "\n", + "node4577580168:1->node4576162568:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -1070,70 +1070,70 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4609606600\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "4\n", - "\n", - "\n", + "node4577500872\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "4\n", + "\n", + "\n", "\n", - "node4610968776\n", - "empty list\n", + "node4577498056\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4609606600:0->node4610968776:w\n", - "\n", - "\n", + "node4577500872:0->node4577498056:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609606600:1->node4610968776:w\n", - "\n", - "\n", + "node4577500872:1->node4577498056:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609606600:2->node4610968776:w\n", - "\n", - "\n", + "node4577500872:2->node4577498056:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609606600:3->node4610968776:w\n", - "\n", - "\n", + "node4577500872:3->node4577498056:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609606600:4->node4610968776:w\n", - "\n", - "\n", + "node4577500872:4->node4577498056:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 13, @@ -1160,81 +1160,81 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4609606600\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "4\n", - "\n", - "\n", + "node4577500872\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "4\n", + "\n", + "\n", "\n", - "node4610968776\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "('a', 4)\n", - "\n", - "('b', 9)\n", - "\n", - "\n", + "node4577498056\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "('a', 4)\n", + "\n", + "('b', 9)\n", + "\n", + "\n", "\n", - "node4609606600:0->node4610968776:w\n", - "\n", - "\n", + "node4577500872:0->node4577498056:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609606600:1->node4610968776:w\n", - "\n", - "\n", + "node4577500872:1->node4577498056:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609606600:2->node4610968776:w\n", - "\n", - "\n", + "node4577500872:2->node4577498056:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609606600:3->node4610968776:w\n", - "\n", - "\n", + "node4577500872:3->node4577498056:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609606600:4->node4610968776:w\n", - "\n", - "\n", + "node4577500872:4->node4577498056:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -1262,90 +1262,90 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610965832\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "4\n", - "\n", - "\n", + "node4577555656\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "4\n", + "\n", + "\n", "\n", - "node4610967560\n", - "empty list\n", + "node4577555848\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:0->node4610967560:w\n", - "\n", - "\n", + "node4577555656:0->node4577555848:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610711816\n", - "empty list\n", + "node4577497544\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:1->node4610711816:w\n", - "\n", - "\n", + "node4577555656:1->node4577497544:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610968712\n", - "empty list\n", + "node4576593224\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:2->node4610968712:w\n", - "\n", - "\n", + "node4577555656:2->node4576593224:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610182216\n", - "empty list\n", + "node4577556360\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:3->node4610182216:w\n", - "\n", - "\n", + "node4577555656:3->node4577556360:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611010248\n", - "empty list\n", + "node4577557128\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:4->node4611010248:w\n", - "\n", - "\n", + "node4577555656:4->node4577557128:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 15, @@ -1380,95 +1380,95 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610965832\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "4\n", - "\n", - "\n", + "node4577555656\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "4\n", + "\n", + "\n", "\n", - "node4610967560\n", - "empty list\n", + "node4577555848\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:0->node4610967560:w\n", - "\n", - "\n", + "node4577555656:0->node4577555848:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610711816\n", - "empty list\n", + "node4577497544\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:1->node4610711816:w\n", - "\n", - "\n", + "node4577555656:1->node4577497544:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610968712\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "('a', 99)\n", - "\n", - "\n", + "node4576593224\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "('a', 99)\n", + "\n", + "\n", "\n", - "node4610965832:2->node4610968712:w\n", - "\n", - "\n", + "node4577555656:2->node4576593224:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610182216\n", - "empty list\n", + "node4577556360\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:3->node4610182216:w\n", - "\n", - "\n", + "node4577555656:3->node4577556360:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611010248\n", - "empty list\n", + "node4577557128\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:4->node4611010248:w\n", - "\n", - "\n", + "node4577555656:4->node4577557128:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -1512,101 +1512,101 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610965832\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "4\n", - "\n", - "\n", + "node4577555656\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "4\n", + "\n", + "\n", "\n", - "node4610967560\n", - "empty list\n", + "node4577555848\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:0->node4610967560:w\n", - "\n", - "\n", + "node4577555656:0->node4577555848:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610711816\n", - "empty list\n", + "node4577497544\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:1->node4610711816:w\n", - "\n", - "\n", + "node4577555656:1->node4577497544:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610968712\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "('a', 99)\n", - "\n", - "('f', 99)\n", - "\n", - "\n", + "node4576593224\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "('a', 99)\n", + "\n", + "('f', 99)\n", + "\n", + "\n", "\n", - "node4610965832:2->node4610968712:w\n", - "\n", - "\n", + "node4577555656:2->node4576593224:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610182216\n", - "empty list\n", + "node4577556360\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:3->node4610182216:w\n", - "\n", - "\n", + "node4577555656:3->node4577556360:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611010248\n", - "empty list\n", + "node4577557128\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:4->node4611010248:w\n", - "\n", - "\n", + "node4577555656:4->node4577557128:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 17, @@ -1646,139 +1646,139 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4611007688\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "4\n", - "\n", - "\n", + "node4577580296\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "4\n", + "\n", + "\n", "\n", - "node4610967560\n", - "empty list\n", + "node4577555848\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4611007688:0->node4610967560:w\n", - "\n", - "\n", + "node4577580296:0->node4577555848:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610711816\n", - "empty list\n", + "node4577497544\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4611007688:1->node4610711816:w\n", - "\n", - "\n", + "node4577580296:1->node4577497544:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610968712\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "1\n", - "\n", - "\n", + "node4576593224\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "1\n", + "\n", + "\n", "\n", - "node4611007688:2->node4610968712:w\n", - "\n", - "\n", + "node4577580296:2->node4576593224:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610182216\n", - "empty list\n", + "node4577556360\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4611007688:3->node4610182216:w\n", - "\n", - "\n", + "node4577580296:3->node4577556360:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611010248\n", - "empty list\n", + "node4577557128\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4611007688:4->node4611010248:w\n", - "\n", - "\n", + "node4577580296:4->node4577557128:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609201224\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'a'\n", - "\n", - "99\n", - "\n", - "\n", + "node4576162824\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'a'\n", + "\n", + "99\n", + "\n", + "\n", "\n", - "node4610968712:0->node4609201224:w\n", - "\n", - "\n", + "node4576593224:0->node4576162824:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609214152\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'f'\n", - "\n", - "99\n", - "\n", - "\n", + "node4576140744\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'f'\n", + "\n", + "99\n", + "\n", + "\n", "\n", - "node4610968712:1->node4609214152:w\n", - "\n", - "\n", + "node4576593224:1->node4576140744:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -1799,7 +1799,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "4610620552 4610620552\n" + "4576201672 4576201672\n" ] }, { @@ -1811,95 +1811,95 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4611064776\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "2\n", - "\n", - "\n", + "node4577579400\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "2\n", + "\n", + "\n", "\n", - "node4611010184\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'msan501'\n", - "\n", - "51\n", - "\n", - "\n", + "node4576593096\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'msan501'\n", + "\n", + "51\n", + "\n", + "\n", "\n", - "node4611064776:0->node4611010184:w\n", - "\n", - "\n", + "node4577579400:0->node4576593096:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610893832\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'msan502'\n", - "\n", - "32\n", - "\n", - "\n", + "node4577554568\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'msan502'\n", + "\n", + "32\n", + "\n", + "\n", "\n", - "node4611064776:1->node4610893832:w\n", - "\n", - "\n", + "node4577579400:1->node4577554568:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611064008\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'msan692'\n", - "\n", - "101\n", - "\n", - "\n", + "node4577579592\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'msan692'\n", + "\n", + "101\n", + "\n", + "\n", "\n", - "node4611064776:2->node4611064008:w\n", - "\n", - "\n", + "node4577579400:2->node4577579592:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 19, @@ -1939,63 +1939,63 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4610968240\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "\n", - "4\n", - "\n", - "\n", - "5\n", - "\n", - "\n", - "6\n", - "\n", - "\n", - "7\n", - "'\n", - "\n", - "N\n", - "\n", - "e\n", - "\n", - "w\n", - "\n", - " \n", - "\n", - "Y\n", - "\n", - "o\n", - "\n", - "r\n", - "\n", - "k\n", - "'\n", + "node4577499824\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "\n", + "4\n", + "\n", + "\n", + "5\n", + "\n", + "\n", + "6\n", + "\n", + "\n", + "7\n", + "'\n", + "\n", + "N\n", + "\n", + "e\n", + "\n", + "w\n", + "\n", + " \n", + "\n", + "Y\n", + "\n", + "o\n", + "\n", + "r\n", + "\n", + "k\n", + "'\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 20, @@ -2021,296 +2021,296 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", - "\n", + "\n", + "\n", "\n", - "node4611041824\n", - "\n", - "\n", - "\n", - "Tree\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'parrt'\n", - "\n", - "\n", - "\n", - "\n", - "left\n", - "\n", - "\n", - "right\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", + "node4577646408\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'parrt'\n", + "\n", + "\n", + "\n", + "\n", + "left\n", + "\n", + "\n", + "right\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", "\n", - "node4611041656\n", - "\n", - "\n", - "\n", - "Tree\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'mary'\n", - "\n", - "\n", - "\n", - "\n", - "left\n", - "\n", - "\n", - "right\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", + "node4577646240\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'mary'\n", + "\n", + "\n", + "\n", + "\n", + "left\n", + "\n", + "\n", + "right\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", "\n", - "node4611041824:c->node4611041656\n", - "\n", - "\n", - "\n", + "node4577646408:c->node4577646240\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611041768\n", - "\n", - "\n", - "\n", - "Tree\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'xue'\n", - "\n", - "\n", - "\n", - "\n", - "left\n", - "\n", - "\n", - "right\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", + "node4577646352\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'xue'\n", + "\n", + "\n", + "\n", + "\n", + "left\n", + "\n", + "\n", + "right\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", "\n", - "node4611041824:c->node4611041768\n", - "\n", - "\n", - "\n", + "node4577646408:c->node4577646352\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611041600\n", - "\n", - "\n", - "\n", - "Tree\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'jim'\n", - "\n", - "\n", - "\n", - "\n", - "left\n", - "\n", - "\n", - "right\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", + "node4577646184\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'jim'\n", + "\n", + "\n", + "\n", + "\n", + "left\n", + "\n", + "\n", + "right\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", "\n", - "node4611041656:c->node4611041600\n", - "\n", - "\n", - "\n", + "node4577646240:c->node4577646184\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611041488\n", - "\n", - "\n", - "\n", - "Tree\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'srinivasan'\n", - "\n", - "\n", - "\n", - "\n", - "left\n", - "\n", - "\n", - "right\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", + "node4577646072\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'srinivasan'\n", + "\n", + "\n", + "\n", + "\n", + "left\n", + "\n", + "\n", + "right\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", "\n", - "node4611041600:c->node4611041488\n", - "\n", - "\n", - "\n", + "node4577646184:c->node4577646072\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611041544\n", - "\n", - "\n", - "\n", - "Tree\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'april'\n", - "\n", - "\n", - "\n", - "\n", - "left\n", - "\n", - "\n", - "right\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", + "node4577646128\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'april'\n", + "\n", + "\n", + "\n", + "\n", + "left\n", + "\n", + "\n", + "right\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", "\n", - "node4611041600:c->node4611041544\n", - "\n", - "\n", - "\n", + "node4577646184:c->node4577646128\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611041712\n", - "\n", - "\n", - "\n", - "Tree\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'mike'\n", - "\n", - "\n", - "\n", - "\n", - "left\n", - "\n", - "\n", - "right\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", + "node4577646296\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'mike'\n", + "\n", + "\n", + "\n", + "\n", + "left\n", + "\n", + "\n", + "right\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", "\n", - "node4611041768:c->node4611041712\n", - "\n", - "\n", - "\n", + "node4577646352:c->node4577646296\n", + "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 21, @@ -2349,470 +2349,470 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "G\n", - "\n", + "\n", "\n", "cluster1\n", "\n", - "\n", + "\n", "\n", - "node4611052552\n", - "\n", - "\n", - "\n", - "globals\n", - "\n", - "\n", - "\n", - "N \n", - "\n", - " 100\n", - "\n", - "\n", - "\n", - "table \n", - "\n", - "    \n", - "\n", - "\n", - "\n", - "head \n", - "\n", - "    \n", - "\n", - "\n", - "\n", - "a \n", - "\n", - "    \n", - "\n", - "\n", - "\n", - "courses \n", - "\n", - "    \n", - "\n", - "\n", + "node4577661480\n", + "\n", + "\n", + "\n", + "globals\n", + "\n", + "\n", + "\n", + "N \n", + "\n", + " 100\n", + "\n", + "\n", + "\n", + "table \n", + "\n", + "    \n", + "\n", + "\n", + "\n", + "head \n", + "\n", + "    \n", + "\n", + "\n", + "\n", + "a \n", + "\n", + "    \n", + "\n", + "\n", + "\n", + "courses \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4610991128\n", - "\n", - "\n", - "\n", - "f\n", - "\n", - "\n", - "\n", - "x \n", - "\n", - " 99\n", - "\n", - "\n", - "\n", - "a \n", - "\n", - "    \n", - "\n", - "\n", - "\n", - "\n", - "node4611016128\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'xue'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", + "node4577591856\n", + "\n", + "\n", + "\n", + "f\n", + "\n", + "\n", + "\n", + "x \n", + "\n", + " 99\n", + "\n", + "\n", + "\n", + "a \n", + "\n", + "    \n", + "\n", + "\n", + "\n", + "\n", + "node4577604384\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'xue'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4611052552:c->node4611016128\n", - "\n", - "\n", - "\n", + "node4577661480:c->node4577604384\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610965832\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "2\n", - "\n", - "\n", - "3\n", - "\n", - "4\n", - "\n", - "\n", + "node4577555656\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "2\n", + "\n", + "\n", + "3\n", + "\n", + "4\n", + "\n", + "\n", "\n", - "node4611052552:c->node4610965832\n", - "\n", - "\n", - "\n", + "node4577661480:c->node4577555656\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611031560\n", - "\n", - "\n", - "\n", - "set\n", - "\n", - "\n", - " \n", - "\n", - " \n", - "\n", - "\n", + "node4576797864\n", + "\n", + "\n", + "\n", + "set\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n", + "\n", "\n", - "node4611052552:c->node4611031560\n", - "\n", - "\n", - "\n", + "node4577661480:c->node4576797864\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610620552\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "2\n", - "\n", - "\n", + "node4576201672\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "2\n", + "\n", + "\n", "\n", - "node4611052552:c->node4610620552\n", - "\n", - "\n", - "\n", + "node4577661480:c->node4576201672\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610894856\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'hi'\n", - "\n", - "'mom'\n", - "\n", - "\n", + "node4576190280\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'hi'\n", + "\n", + "'mom'\n", + "\n", + "\n", "\n", - "node4610991128:c->node4610894856\n", - "\n", - "\n", - "\n", + "node4577591856:c->node4576190280\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "node4611016072\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'tombu'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", + "\n", + "\n", + "node4577604216\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'parrt'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", + "\n", + "node4577604384:c->node4577604216\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "node4611015960\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'parrt'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", + "node4577604328\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'tombu'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4611015960:c->node4611016072\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "node4611016128:c->node4611015960\n", - "\n", - "\n", - "\n", + "node4577604216:c->node4577604328\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610967560\n", - "empty list\n", + "node4577555848\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:0->node4610967560:w\n", - "\n", - "\n", + "node4577555656:0->node4577555848:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610711816\n", - "empty list\n", + "node4577497544\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:1->node4610711816:w\n", - "\n", - "\n", + "node4577555656:1->node4577497544:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610968712\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "1\n", - "\n", - "\n", + "node4576593224\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "1\n", + "\n", + "\n", "\n", - "node4610965832:2->node4610968712:w\n", - "\n", - "\n", + "node4577555656:2->node4576593224:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610182216\n", - "empty list\n", + "node4577556360\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:3->node4610182216:w\n", - "\n", - "\n", + "node4577555656:3->node4577556360:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611010248\n", - "empty list\n", + "node4577557128\n", + "empty list\n", "\n", - "\n", + "\n", "\n", - "node4610965832:4->node4611010248:w\n", - "\n", - "\n", + "node4577555656:4->node4577557128:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609201224\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'a'\n", - "\n", - "99\n", - "\n", - "\n", + "node4576162824\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'a'\n", + "\n", + "99\n", + "\n", + "\n", "\n", - "node4610968712:0->node4609201224:w\n", - "\n", - "\n", + "node4576593224:0->node4576162824:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4609214152\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'f'\n", - "\n", - "99\n", - "\n", - "\n", + "node4576140744\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'f'\n", + "\n", + "99\n", + "\n", + "\n", "\n", - "node4610968712:1->node4609214152:w\n", - "\n", - "\n", + "node4576593224:1->node4576140744:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611017864\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'mary'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", + "node4577606064\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'mary'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4611031560:0->node4611017864:w\n", - "\n", - "\n", + "node4576797864:0->node4577606064:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611017752\n", - "\n", - "\n", - "\n", - "Node\n", - "\n", - "\n", - "\n", - "value \n", - "\n", - " 'parrt'\n", - "\n", - "\n", - "\n", - "next \n", - "\n", - "    \n", - "\n", - "\n", + "node4577605952\n", + "\n", + "\n", + "\n", + "Node\n", + "\n", + "\n", + "\n", + "value \n", + "\n", + " 'parrt'\n", + "\n", + "\n", + "\n", + "next \n", + "\n", + "    \n", + "\n", + "\n", "\n", - "node4611031560:1->node4611017752:w\n", - "\n", - "\n", + "node4576797864:1->node4577605952:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611010184\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'msan501'\n", - "\n", - "51\n", - "\n", - "\n", + "node4576593096\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'msan501'\n", + "\n", + "51\n", + "\n", + "\n", "\n", - "node4610620552:0->node4611010184:w\n", - "\n", - "\n", + "node4576201672:0->node4576593096:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4610893832\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'msan502'\n", - "\n", - "32\n", - "\n", - "\n", + "node4577554568\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'msan502'\n", + "\n", + "32\n", + "\n", + "\n", "\n", - "node4610620552:1->node4610893832:w\n", - "\n", - "\n", + "node4576201672:1->node4577554568:w\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "node4611064008\n", - "\n", - "\n", - "\n", - "0\n", - "\n", - "\n", - "1\n", - "\n", - "\n", - "'msan692'\n", - "\n", - "101\n", - "\n", - "\n", + "node4577579592\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "'msan692'\n", + "\n", + "101\n", + "\n", + "\n", "\n", - "node4610620552:2->node4611064008:w\n", - "\n", - "\n", + "node4576201672:2->node4577579592:w\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2884,7 +2884,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" }, "toc": { "colors": { From fcb60ae6abb1f46fac1501689491844a59e2ef97 Mon Sep 17 00:00:00 2001 From: parrt Date: Wed, 4 Jul 2018 13:27:05 -0700 Subject: [PATCH 3/4] dictionaries were not handled properly. --- lolviz.py | 2 +- playground.py | 7 +++---- setup.py | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lolviz.py b/lolviz.py index 9a005cc..08d2675 100644 --- a/lolviz.py +++ b/lolviz.py @@ -234,7 +234,7 @@ def objviz(o, orientation="LR"): node [penwidth="0.5", shape=box, width=.1, height=.1]; """ % orientation - if hasattr(o, "__iter__"): + if hasattr(o, "__iter__") and not isinstance(o,dict): o = list(o) reachable = closure(o) s += obj_nodes(reachable) diff --git a/playground.py b/playground.py index 39bb9a1..b398bf3 100644 --- a/playground.py +++ b/playground.py @@ -34,7 +34,7 @@ def g(x): s = "hi" g1 = callsviz(varnames=None) print(g1.source) - g1.view() + #g1.view() def f(x): a = {Node('parrt'),Node('mary')} @@ -43,7 +43,6 @@ def f(x): # a = [i for i in range(15)] d = dict([(c, chr(c)) for c in range(ord('a'), ord('f'))]) c = ['a','b','c','d'] - listviz(d.items()).view() # callsviz(varnames=['a','b','c','x','y','BLUE','ctr','head','users','root']).view() def hashcode(o): return ord(o) # assume keys are single-element strings @@ -122,8 +121,7 @@ def hashcode(o): return ord(o) # assume keys are single-element strings #f(989) d = dict([(c,chr(c)) for c in range(ord('a'),ord('f'))]) -tuplelist = d.items() -g = objviz(tuplelist) +g = objviz(d) g.view() # data = ['hi','mom',{3,4},{"parrt":"user"}] @@ -176,3 +174,4 @@ def hashcode(o): return ord(o) # assume keys are single-element strings # check_call(['dot', '-Tpdf', 'lolviz_subgraph.dot', '-o', 'lolviz_subgraph.pdf']) # check_call(['dot', '-Tgif', 'lolviz_subgraph.dot', '-o', 'lolviz_subgraph.gif']) # s += 'nodedfadsfasdfasdf [image="lolviz_subgraph.pdf"]' + diff --git a/setup.py b/setup.py index 51c9b7b..41c8934 100644 --- a/setup.py +++ b/setup.py @@ -2,14 +2,14 @@ setup( name='lolviz', - version='1.3.2', + version='1.3.3', url='https://github.com/parrt/lolviz', license='BSD', py_modules=['lolviz'], author='Terence Parr', author_email='parrt@antlr.org', install_requires=['graphviz'], - description='A simple Python data-structure visualization tool for lists of lists, lists, dictionaries', + description='A simple Python data-structure visualization tool for call stacks, lists of lists, lists, dictionaries', keywords='visualization data structures', classifiers=['License :: OSI Approved :: BSD License', 'Intended Audience :: Developers'] From 6311b3981b4ce2f11b815af1518600d3d8549b4e Mon Sep 17 00:00:00 2001 From: parrt Date: Wed, 4 Jul 2018 13:30:34 -0700 Subject: [PATCH 4/4] tweak --- playground.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/playground.py b/playground.py index b398bf3..bac8f63 100644 --- a/playground.py +++ b/playground.py @@ -120,9 +120,12 @@ def hashcode(o): return ord(o) # assume keys are single-element strings # gg.view() #f(989) -d = dict([(c,chr(c)) for c in range(ord('a'),ord('f'))]) -g = objviz(d) -g.view() +# d = dict([(c,chr(c)) for c in range(ord('a'),ord('f'))]) +# g = objviz(d) +# g.view() + +movies = {'Amadeus':1984, 'Witness':1985} +objviz(movies).view() # data = ['hi','mom',{3,4},{"parrt":"user"}] # g = listviz(data)