Skip to content

Instantly share code, notes, and snippets.

@ahmadia
Created December 9, 2014 23:52
Show Gist options
  • Save ahmadia/1045e141b09954239c98 to your computer and use it in GitHub Desktop.
Save ahmadia/1045e141b09954239c98 to your computer and use it in GitHub Desktop.
viz hashdist profile
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:40318959fcf70784fb5d31733bd3232b9d561237654c1b41563e2318a4856e26"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import json\n",
"import os"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"build_json_file = 'roams.Darwin/build.json'\n",
"hashdist_bld_dir = os.path.expanduser('~/.hashdist/bld')\n",
"build_id = 'profile/njgcwltwugzalvwgs6luua6nappyo4py'\n",
"dependencies = []"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 76
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def split_id(build_id):\n",
" return build_id.split('/')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 77
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"def short_id(build_id):\n",
" name, long_id = split_id(build_id)\n",
" short_id = long_id[:12]\n",
" return name + '/' + short_id"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def graph_name(build_id):\n",
" name = short_id(build_id)\n",
" return '\"' + name + '\"'"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 110
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def get_imports(hashdist_bld_dir, build_id):\n",
" build_json_file = os.path.join(hashdist_bld_dir, short_id(build_id), 'build.json')\n",
" with open(build_json_file) as f:\n",
" build_json = json.load(f)\n",
" return build_json[\"build\"][\"import\"]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 111
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def build_dependency_list(hashdist_bld_dir, build_id):\n",
" imports = get_imports(hashdist_bld_dir, build_id)\n",
" dependencies = [(build_id, dep_import['id']) for dep_import in imports]\n",
" for dep_import in imports:\n",
" dependencies += build_dependency_list(hashdist_bld_dir, dep_import['id'])\n",
" return dependencies"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 112
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def build_dot_file(name, dependency_list):\n",
" dot_doc_prefix = ['digraph ' + name + '{\\n' + \n",
"\"\"\"splines=true;\n",
"sep=\"+25,25\";\n",
"overlap=scalexy;\n",
"nodesep=0.6;\n",
"node [fontsize=11];\n",
"//edge[weight=0.2]; + \\n\"\"\"]\n",
" dot_doc = [graph_name(dep[0]) + ' -> ' + graph_name(dep[1]) + ';\\n' for dep in dependency_list]\n",
" dot_doc_epilog = ['}\\n']\n",
" with open(name + '.dot', 'w') as f:\n",
" f.writelines(dot_doc_prefix)\n",
" f.writelines(dot_doc)\n",
" f.writelines(dot_doc_epilog)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 120
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"imports = get_imports(hashdist_bld_dir, build_id)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 121
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dep_list = build_dependency_list(hashdist_bld_dir, build_id)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 122
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"build_dot_file('roams', dep_list)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 124
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!neato -Tpng roams.dot -o roams.png"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 125
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import Image"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 129
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Image('roams.png')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment