Created
December 9, 2014 23:52
-
-
Save ahmadia/1045e141b09954239c98 to your computer and use it in GitHub Desktop.
viz hashdist profile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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