From 94fef5e202933937e15daae7cd8601bce27e467a Mon Sep 17 00:00:00 2001 From: Umut Date: Wed, 18 Aug 2021 16:28:31 +0300 Subject: [PATCH] feat(debugging): provide a way to export the drawn graph as a png file --- Makefile | 2 +- examples/QuantizedLinearRegression.ipynb | 38 ++---- examples/QuantizedLogisticRegression.ipynb | 88 ++++++-------- hdk/common/compilation/artifacts.py | 9 +- hdk/common/debugging/__init__.py | 3 +- .../debugging/{draw_graph.py => drawing.py} | 114 +++++------------- hdk/common/debugging/printing.py | 91 ++++++++++++++ script/nbmake_utils/notebook_sanitize.py | 1 + tests/common/compilation/test_artifacts.py | 1 + 9 files changed, 178 insertions(+), 169 deletions(-) rename hdk/common/debugging/{draw_graph.py => drawing.py} (71%) create mode 100644 hdk/common/debugging/printing.py diff --git a/Makefile b/Makefile index 75f193c47..d4b43eb19 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ flake8: python_linting: pylint flake8 .PHONY: python_linting -conformance: python_format +conformance: strip_nb python_format .PHONY: conformance pcc: diff --git a/examples/QuantizedLinearRegression.ipynb b/examples/QuantizedLinearRegression.ipynb index 52e26535c..8703a6396 100644 --- a/examples/QuantizedLinearRegression.ipynb +++ b/examples/QuantizedLinearRegression.ipynb @@ -93,7 +93,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -199,7 +199,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAhW0lEQVR4nO3de5xV8/7H8deHcOTSuMRJIY4cSkoNco1yK5c4l06cc4SSSGcat8o5P8ZduUzDSUQdxRFCuqiUVITKdL9JlxPKpdAFkab5/v74rs2eaaaZaWbPWnvv9/Px2I9Z+7vXzHzaj+3jM5/1Xd+vOecQEZHUskvYAYiISNVTchcRSUFK7iIiKUjJXUQkBSm5i4ikoBphBwBw4IEHuvr164cdhohIUpk1a9bXzrnaJb0WieRev3598vPzww5DRCSpmNknpb2mtoyISApSchcRSUFK7iIiKUjJXUQkBSm5i4ikICV3EZEUpOQuIpKClNxFREKweTP07AmflDpTvXKU3EVEqtnkydC4MfTtC2PHJuZ3KLmLiFSTDRugSxdo1Qp22QWmTIHrr0/M71JyFxGpBqNGQaNGMGgQ3HYbzJ8PLVsm7vcpuYuIJNDatdChA7RrBwceCDNmQJ8+sOeeif29Su4iIgngHDz/PBx7LIwYAffcA/n5kJlZPb8/EqtCioikks8+g65d/cXSFi18K6Zhw+qNQZW7iEgVKSyEAQN8b33KFOjXD6ZNq/7EDqrcRUSqxLJl0LkzvPMOnHMODBwIRxwRXjyq3EVEKqGgwM9XP/54mDfPt2AmTAg3sYMqdxGRnTZvHnTqBLNmwaWXQv/+cMghYUflqXIXEamgLVvg//7Pz3z57DN4+WV47bXoJHZQ5S4iUiEffOCr9SVL4Mor4dFH4YADwo5qe6rcRUTK4fvvoUcPOO00fzx2LAwZEs3EDqrcRUTKNHGiXxNm1SrodoPjgQeNffYJXnQOzMIMr0Sq3EVESrF+PVxzDZx3Huy+O7xz1WD+vVs2++zt/AnOQXY25OSEGmdJlNxFREowYoS/+WjoUL/u+tw5jjNqzYe8PJ/QY4k9L88v9+hc2CEXobaMiEicL7+E7t3hlVegaVN44w1o1gzAIDfXn5SX5x8AWVl+PGKtGVXuIiL4wnvoUF+tjx4N998PM2fGEnvA4hJ8TAQTOyi5i4jw6afQti107OhXcZw7F3r3ht12K3ZirBUTL9aiiRgldxFJW4WF/q7SRo3g3Xfh8cf912OOKeHk+B57Vpb/5qysoj34CFHPXUTS0tKlfqGvadPg/PPhqafg8MN38A1mkJFRtMcea9FkZESuNWMuAv+3yczMdPn5+WGHISLJqvhc8x3MPd+6FR55xM9erFnT32HasWMFcnMFfleimdks51yJ23+Uqy1jZqvMbIGZzTWz/GBsfzObaGbLgq/7BeNmZo+Z2XIzm29mzXb800VEKiEnp2hbZAdzz+fMgZNP9v30iy+GxYvhqqsqmJuLnxyxij2mIj33s51zTeP+L9ELmOScawBMCp4DtAEaBI8uwICqClZEpAjn/BzzMuae//QT3H47nHgifP45vPoqDB8Ov/1tqNEnVGV67u2As4LjIcAUoGcwPtT5fs90M8swszrOuS8qE6iIyHas7Lnn773nF/pauhSuvtq3ZPbbL7yQq0t5K3cHTDCzWWbWJRg7OC5hfwkcHBzXBT6L+97VwVgRZtbFzPLNLH/dunU7EbqICKXOPf/ue6N7dzjjDL9E74QJMHhweiR2KH9yP9051wzfculmZmfGvxhU6RW6MuucG+icy3TOZdauXbsi3yoi8qsS5p6/+YenOO44R//+/m7TBQvg3HNDii8k5Uruzrk1wde1wAjgJOArM6sDEHxdG5y+Bjg07tvrBWMiIlWr2Nzzb78u5KpjZ3DB612p+d1apr3ryMuDvfcOO9DqV2ZyN7O9zGyf2DFwHrAQGAV0DE7rCIwMjkcBVwazZloAG9VvF5GEiJt7/urpuTRsZDz/8Yn888QJzLnhaU49LZozWapDeS6oHgyMMD/dpwbwgnNuvJl9CLxsZp2AT4D2wfljgbbAcmAzcHWVRy0iEviyaw7dujle+7PRrBmMH280bXIu2HlhhxaqMpO7c24l0KSE8W+A1iWMO6BblUQnIlIK5/xOSNnZ8OOPxoMPws03Q40aAOlbscdo+QERSTqrVvmdkSZO9LNhnnkGjj467KiiRQuHiUjS2LYNHnsMjjvOb1Tdvz9MmaLEXhJV7iKSFJYs8Qt9vf8+tGkDTz4Jhx0WdlTRpcpdRCJt61a47z6/K9JHH8Fzz/ndkZTYd0yVu4hE1qxZfumAefOgfXu/3vpBB4UdVXJQ5S4ikfPjj9Crl1/Bce1av1n1Sy8psVeEKncRiZR33vG99WXL/NeHHvL3KUnFqHIXkUjYtAluuAFatoSCAnjrLXj6aSX2naXkLiKhGzfOT2988kl/U9KCBdB6u1skpSLUlhGR0HzzDfToAc8/Dw0b+mmOLVqEHVVqUOUuItXOOXj5ZTj2WHjxRbjjDpg9W4m9KqlyF5Fq9fnnvrc+ciRkZvre+vHHhx1V6lHlLiLVwjkYNMi3X958E/r29UsIKLEnhip3EUm4lSv9Ql+TJvnZMM88A0cdFXZUqU2Vu4gkzLZt0K8fNG4MM2f62TBvv63EXh1UuYtIQixa5JcOmDEDLrzQJ/Z69cKOKn2ocheRKvXzz3D33XDCCbBiBbzwAowercRe3VS5i0iV+fBDX60vWAAdOvi112vXDjuq9KTKXUQqbfNmuPVWP0/9229h1CgYNkyJPUyq3EWkUqZM8Qt8rVgB117rF/qqVSvsqESVu4jslI0b4brr4Oyz/fO334aBA5XYo0LJXUQqbMwYaNTIz1e/+WaYP//XJC/RoOQuIuW2bh1ccQVcfDHst5+/w/Thh6FmzbAjk+KU3EWkTM75C6QNG8Irr0BOjt8C76STwo5MSqMLqiKyQ6tX+4W+Ro/2yXzQIL/2ukSbKncRKco5AAoL/QXSRo0cb70Fjzzi11tXYk8OSu4i8qucHMjOZvkyR+vWfjZM832XsaBzHjfdBLvuGnaAUl5K7iLiOUfBt5t4OK8GjY/dyuzZjoGtX2TS6t/zu13+90tFL8lBPXcRAWDBQqPT9Ef4EOOSbSN5YtMN1J30OWRlQW4umIUdolSAKneRNLdlC9x5JzRrBqtWGS8Oc7zOpdTlc3+CEntSUnIXSWMzZvikfvfdfqGvJYsdf5meTZFUnp2tlkwSUnIXSUM//AA33QSnnAKbNsEbb8BzQx0H3JsNeXm+FVNY6L/m5SnBJyH13EXSzKRJfoGv//3Pz19/4AHYd18Ag4yMoj323Fz/TRkZas0kGSV3kTSxYQPccou/CalBA5g6Fc48s9hJOTm+Qo8l8liCV2JPOmrLiCSD4i2RCrZIRo70Swc8+yz07Anz5pWQ2GOKJ3Il9qRU7uRuZrua2RwzGxM8P8LMZpjZcjN7ycx2D8b3CJ4vD16vn6DYRdJDcGPRLwndOf88J6fMb127Fv7yF7j0Ur9xxowZ8OCDsOeeiQxYoqAilXsWsCTueR8g1zl3FLAe6BSMdwLWB+O5wXkisjOc8/2U+Iua2cFFzw0bSq3gnYP//tdX66+/DvfeC/n50Lx5dQYvoXLOlfkA6gGTgFbAGMCAr4EaweunAG8Gx28CpwTHNYLzbEc/v3nz5k5ESlFY6FxWlnM+Z/tHVpYfL8GnnzrXtq0/rUUL5xYtqtZopRoB+a6UvFreyr0fcBtQGDw/ANjgnCsInq8G6gbHdYHPgv9xFAAbg/OLMLMuZpZvZvnr1q0rZxgiaSh+1kpMCRc5CwthwAC/icaUKb64nzbNV++SfspM7mZ2EbDWOTerKn+xc26gcy7TOZdZW7voipQu1oqJV2ze+ccfw1ln+amNJ58MCxfCP/6hhb7SWXkq99OAS8xsFfAivjWTB2SYWWwqZT1gTXC8BjgUIHi9FvBNFcYskj7ie+wl3FhUsNXRty80aQILFsDgwTBhAhxxRNiBS9jKnOfunOsN9AYws7OAW5xzfzWz4cCf8Am/IzAy+JZRwfMPgtffDnpDIlJRVvqNRfN++j3XtDBmz4bLLoP+/aFOnXDDleiozE1MPYEXzexeYA4wKBgfBDxnZsuBb4EOlQtRJM0Vu7Foy8/GvXvn8mB/44AD/LZ3f/xjuCFK9FQouTvnpgBTguOVwHY7KDrnfgL+XAWxiUhMkNjffx86dYKPPjKuvNIX8fvvH3JsEkm6Q1UkCXz/ve/MnH46bN4M48fDkCFK7FI6rS0jEnETJkCXLvDpp78u9LXPPmFHJVGnyl0kotavh2uugfPPh9/8Bt55B/79byV2KR8ld5EIeu01f/PR0KHQuzfMnetbMiLlpbaMSIR8+SXceCO8+io0bQpjx8IJJ4QdlSQjVe4iEeCcv0DasCGMGQP33QczZyqxy85T5S4Ssk8+ga5d/QyYU0/1m2kcc0zYUUmyU+UuEpLCQn9X6XHHwbvvwmOP+a9K7FIVVLmLhGDpUujc2a/aeP758NRTcPjhYUclqUSVu0g12rrVz1Nv0gQWLfLb3o0bp8QuVU+Vu0g1mTPHLx0wZw786U/w+OPw29+GHZWkKlXuIgn2009w++1w4onwxRd+muPw4Urskliq3EUSaNo031tfuhSuvhoeeQT22y/sqCQdqHIXSYDvvvM3I51xhq/cJ0zwG2kosUt1UXIXqWJvvumnNz7xhF/JceFCOPfcsKOSdKPkLlJFvvkGOnaECy6AmjV9S6ZfP9h777Ajk3Sk5C5SSc753ZAaNoQXXoB//csv9HXqqWFHJulMF1RFKuGLL6BbNxgxApo18731Jk3CjkpElbvITnEO/vMfX62PGwd9+sCMGUrsEh2q3EUqaNUqvzPSxIl+Nswzz8DRR4cdlUhRqtxFymnbNr+413HHwQcf+NkwU6YosUs0qXIXKYclS/zSAR98AG3awJNPwmGHhR2VSOlUuYvswNatfuOMpk39XabPPQdvvBEkdueKnlz8uUiIlNxFSjFrFmRm+qmNl17qq/e//Q3MgJwcyM7+NaE755/n5IQXsEgcJXeRYn78EXr2hJNPhnXr/DTHl16Cgw4KTnAONmyAvLxfE3x2tn++YYMqeIkE9dxF4kydCtdeC8uW+R77ww9DRkaxk8wgN9cf5+X5B/i1BnJzg9JeJFyq3EWATZvg+uvhrLOgoADeestPcdwuscfEJ/gYJXaJECV3SXtjx0KjRn6rux49YMECaN26jG+KtWLixffgRUKm5C5p6+uv/QXSCy+Efff10xxzc2Gvvcr4xvgee1aW3+k6K6toD14kZOq5S9pxzl8g7d7dX/+84w6/U9Iee5TzB5j5fk18jz3WosnIUGtGIsFcBKqMzMxMl5+fH3YYkgbWrIEbboBRo/w0x8GDoXHjnfxhzhVN5MWfiySYmc1yzmWW9JraMpIWnIOnn/YLfU2YAH37+jbMTid22D6RK7FLhKgtIylv5Uo/vfHtt6FlSz8L5qijwo5KJLFUuUvK2rbNt8KPOw7y8/16MG+/rcQu6aHM5G5mvzGzmWY2z8wWmdldwfgRZjbDzJab2UtmtnswvkfwfHnwev0E/xtEtrNwIZx2Gtx0k5/WuGgRXHcd7KJyRtJEeT7qW4BWzrkmQFPgAjNrAfQBcp1zRwHrgU7B+Z2A9cF4bnCeSLX4+We46y6/K9KKFX7bu1GjoF69sCMTqV5lJnfnfR883S14OKAV8EowPgS4NDhuFzwneL21ma40SRXZwUqMH34IzZv7tbv+/GdYvBguv1zXOSU9leuCqpntCswCjgL6AyuADc65guCU1UDd4Lgu8BmAc67AzDYCBwBfF/uZXYAuAIdpYWwpj5wcPzE9Nrc8uJlo8161uWPLP8nNhTp1YPRouOiisIMVCVe5krtzbhvQ1MwygBHAMZX9xc65gcBA8PPcK/vzJMXFr8QIPsFnZzM5bx7X1nqZFRt9T71PH6hVK9RIRSKhQlMhnXMbzGwycAqQYWY1guq9HrAmOG0NcCiw2sxqALWAb6owZklHxVZi3Jj3H26jLwPpx+8OdEx+3S/6JSJeeWbL1A4qdsxsT+BcYAkwGfhTcFpHYGRwPCp4TvD62y4Kt8FK8gsS/BgupBGLeIbO3HKzY/58U2IXKaY8s2XqAJPNbD7wITDROTcG6AncZGbL8T31QcH5g4ADgvGbgF5VH7ako3VrHVccM5uLGcP+fMt0WvBQQTY191TtIFJcmW0Z59x84IQSxlcCJ5Uw/hPw5yqJTgTfbn9xmOMfnX9g44+NuavFOHpNuYDde55WtAevaTEiv9DyAxJpq1f7TTTGjDFOrruBQWc/T6OhPbUSo0gZlNwlkgoL/Rowt94KW7fCo4/CP/5Rj1136flrIo8leCV2ke0ouUvkLF/uF/qaMgVatfKrOR55ZOxVrcQoUh5aaUMio6DAb0jduDHMmeMr97feik/sIlJeqtylepSxscWCBdCpk19CoF07eOIJOOSQEOIUSRGq3CXxcnKK7i0a24M0J4ctW+DOO/1CX6tW+e3vRoxQYhepLCV3Saz4ZQNiCT7YXHr6klo0a+a4+27o0AGWLIH27dVGF6kKastIYhVbNoC8PH6gJv9qOpm84S2pW9d44w1o2zbcMEVSjSp3Sby4BD+JVjRmAf3mnkXXrsaiRUrsIomg5C6J5xwbbridzjzNOUyiBgVM/dNjPNHfse++YQcnkprUlpHEco6Rlwzi+jHdWWsH0/NWx50/PM2e/R+G7JW6CUkkQZTcJWHWroXu3Y2Xx3Tm+APXMHrcLjTPNHB9ocZWLRsgkkBK7lLlnIPnn4cePeD77+Hee+G2Ww9ht921bIBIdVFylyr16afQtSuMGwennAKDBsGxx4KWDRCpXrqgKlWisNDfVdqoEUyd6mc9vvtuLLGLSHVT5S6V9vHH0LmzT+bnnAMDB8IRR4QdlUh6U+UuO62gwG9Iffzxfm2YwYNhwgQldpEoUOUuO2XePLjmGpg9Gy67DPr3hzp1wo5KRGJUuUuFbNkC//oXZGb6XZKGD4fXXlNiF4kaVe5Sbu+/75fl/egj6NjR7460//5hRyUiJVHlLmX6/nvIyoLTT4fNm2H8eHj2WSV2kShT5S47NGECdOni56936wb33w/77BN2VCJSFlXuUqL16+Hqq+H88+E3v/HTHB9/XIldJFkouct2RoyAhg3hueegd2+YOxdOOy3sqESkItSWkV98+SV07w6vvAInnABjx/qvIpJ8VLmnqth+paU9L/bSkCG+Wh89Gh54AGbMUGIXSWZK7qloBxtSF/fJJ9CmDVx1lV8XZt486NULdtutOgMWkaqm5J5qdrAhNRs2/JLwCwvh3//2Cf299/zx1Knw+9+HGr2IVBH13FNNCRtSA36ierCG+tKl/mak996D887zC30dfnh4IYtI1VPlnoriE3xMbi5bC4wHHoAmTWDxYt9nHz9eiV0kFSm5p6JYKybOnL8+zEknOW6/HS6+GJYsgSuv1J4ZIqlKyT3VxPfYs7L48YdCemdO5MRh2Xz58SZefcUxfDgcfHDYgYpIIim5pxozv/F0VhbT/phL0xOMB/PP4cqGs1h84wD+8EeV6iLpQBdUU9B3N+fQu5ej/5lG/fp+fZhzzzkJ7OSwQxORaqLKPcWMG+enNz4xwMjK8jsknXsuaq6LpJkyk7uZHWpmk81ssZktMrOsYHx/M5toZsuCr/sF42Zmj5nZcjObb2bNEv2PEPjmG3+BtG1b2HtvP82xXz9/LCLppzyVewFws3OuIdAC6GZmDYFewCTnXANgUvAcoA3QIHh0AQZUedTyC+f8bkgNG8KwYX6XpDlz4JRTwo5MRMJUZnJ3zn3hnJsdHH8HLAHqAu2AIcFpQ4BLg+N2wFDnTQcyzEybsCXA55/DH/4A7dvDoYdCfj7ccw/ssUfYkYlI2CrUczez+sAJwAzgYOfcF8FLXwKxyXV1gc/ivm11MFb8Z3Uxs3wzy1+3bl1F405rzsGgQb5aHz8e+vSB6dP9zUkiIlCB5G5mewOvAj2cc5viX3POOaD0ZQdL4Jwb6JzLdM5l1q5duyLfmtZWrvQXSDt39sl8/ny47TaooXlPIhKnXMndzHbDJ/b/OudeC4a/irVbgq9rg/E1wKFx314vGJNK2LbNXyBt3BhmzoQBA2DyZGjQIOzIRCSKyjNbxoBBwBLn3KNxL40COgbHHYGRceNXBrNmWgAb49o3shMWL4YzzvA3np51FixaBF27wi6ayCoipSjPH/OnAX8HFpjZ3GDsduBB4GUz6wR8ArQPXhsLtAWWA5uBq6sy4HSydavvp99zj9+79Pnn4YorNGVdRMpWZnJ3zk0DSksnrUs43wHdKhlX2svP98vyzp8PHTr4pWIOOijsqEQkWegP+4j58Ud/gfTkk+Hrr+H11/38dSV2EakIzbGIkHfe8dX68uVw7bXQt69fA0xEpKJUuUfApk1www3QsqXf/m7SJL87khK7iOwsJfeQjR3rF/p66im46SbfY2/VKuyoRCTZKbmH5Ouv4W9/gwsvhH33hfffh0cegb32CjsyEUkFSu7VzDl46SW/dMDLL8Mdd8Ds2f4CqohIVdEF1Wq0Zo3vrY8aBSee6NeHadw47KhEJBWpcq8GzsHTT/tqfeJE33754AMldhFJHFXuCbZihZ/WOHkynH22T/K/+13YUYlIqlPlniDbtsGjj/rqfNYsP7Vx0iQldhGpHqrcE2DhQn8z0syZcNFFfgXHevXCjkpE0okq9yr0889w113QrJlfd33YMH/xVIldRKqbKvcqMnOmr9YXLoTLL/cLfWkPEhEJiyr3Stq8GW65xW9IvX49jB4NL7ygxC4i4VLlXgmTJ/vt7lauhOuu82uv16oVdlQiIqrcd8rGjT6Zt2rld0OaPBmefFKJXUSiQ8m9gkaP9jcjPfOMb8fMm+e3vhMRiRIl93Jat85fKL3kEjjgAJgxAx56CGrWDDsyEZHtKbmXwTl/gfTYY+HVV+Huu/0WeJmZYUcmIlI6XVDdgc8+g+uvhzfe8Ks2Dhrk114XEYk6Ve4lKCz0F0gbNfIXSx99FN57T4ldRJKHKvdili3zC31NnQqtW/s1YY48MuyoREQqRpV7oKDAXyA9/niYO9ev3jhxohK7iCQnVe74fUs7dfIXStu1gyeegEMOCTsqEZGdl9aV+5Ytfpu75s3hk0/89ncjRiixi0jyS9vKffp0X60vXgx//zvk5vr56zgHWNjhiYhUStpV7j/8ANnZcOqp8N3qjYxt9xRDh7hfE3t2NuTkhB2miEilpFVynzTJ74zUrx9c39Wx8Ir7aTOyq0/oscSelwcbNgQVvIhIckqLtsyGDXDzzTB4MDRo4Kc5nnmmgXsQ9tjiE3penj85K8v3aEytGRFJXilfub/+ul/oa8gQ6NXLL/R15pnBi2Y+kcdTYheRFJCyyf2rr6B9e7jsMjjoIL/Q1wMPwJ57xp0Ua8XEi7VoRESSWMold+fgued8tT5yJNx3H3z4oZ/uuN2JsR57VpZfcyAryz9XgheRJJdSPfdPP/WbaIwf72fDPPOMX82xRGaQkVG0xx5r0WRkqDUjIknNXAQq1MzMTJefn7/T319YCAMG+J66c7790q2b3yWpTM4VTeTFn4uIRJSZzXLOlbgAeZnpz8wGm9laM1sYN7a/mU00s2XB1/2CcTOzx8xsuZnNN7NmVffPKNnSpdCyJdx4o9+keuFC6N69nIkdtk/kSuwikgLKkwKfBS4oNtYLmOScawBMCp4DtAEaBI8uwICqCbNkgwdDkyawaBE8+yy8+SbUr5/I3ygikhzKTO7OuXeAb4sNtwOGBMdDgEvjxoc6bzqQYWZ1qijW7Rx9NFx0kV9CoGNHFd0iIjE7e0H1YOfcF8Hxl8DBwXFd4LO481YHY19QjJl1wVf3HHbYYTsVxOmn+4eIiBRV6amQzl+RrfBVWefcQOdcpnMus3bt2pUNQ0RE4uxscv8q1m4Jvq4NxtcAh8adVy8YExGRarSzyX0U0DE47giMjBu/Mpg10wLYGNe+ERGRalJmz93MhgFnAQea2WrgTuBB4GUz6wR8ArQPTh8LtAWWA5uBqxMQs4iIlKHM5O6cu7yUl1qXcK4DulU2KBERqZyUW1tGRESU3EVEUpKSu4hICorEwmFmtg5/YTZMBwJfhxxDRSnmxEu2eEExV5coxHy4c67EG4UikdyjwMzyS1tdLaoUc+IlW7ygmKtL1GNWW0ZEJAUpuYuIpCAl918NDDuAnaCYEy/Z4gXFXF0iHbN67iIiKUiVu4hIClJyFxFJQWmb3M1slZktMLO5ZpYfjJW4N2zYzOz3QZyxxyYz62FmOWa2Jm68bchxRnq/3QrE/JCZfRTENcLMMoLx+mb2Y9z7/WSEYi71s2BmvYP3eamZnR+hmF+Ki3eVmc0NxkN/n83sUDObbGaLzWyRmWUF45H+PBfhnEvLB7AKOLDYWF+gV3DcC+gTdpwlxL0rfverw4Ec4JawY4qL7UygGbCwrPcUv3roOMCAFsCMCMV8HlAjOO4TF3P9+PMi9j6X+FkAGgLzgD2AI4AVwK5RiLnY648Ad0TlfQbqAM2C432Aj4P3MtKf5/hH2lbupShtb9goaQ2scM6FfUfvdlyE99stTUkxO+cmOOcKgqfT8ZvOREYp73Np2gEvOue2OOf+h1+O+6SEBVeKHcVsZoZfNnxYtQa1A865L5xzs4Pj74Al+C1DI/15jpfOyd0BE8xsVrCfK5S+N2yUdKDofwQ3Bn8GDo5KG6mYiu63GzXX4CuymCPMbI6ZTTWzM8IKqhQlfRaS4X0+A/jKObcsbiwy77OZ1QdOAGaQRJ/ndE7upzvnmgFtgG5mdmb8i87/rRWpeaJmtjtwCTA8GBoA/A5oit+E/JFwIiufKL6nO2Jm/wQKgP8GQ18AhznnTgBuAl4ws33Diq+YpPosFHM5RQuWyLzPZrY38CrQwzm3Kf61qH+e0za5O+fWBF/XAiPwf6qWtjdsVLQBZjvnvgJwzn3lnNvmnCsEniaEP7fLISn32zWzq4CLgL8G/xETtDa+CY5n4fvXR4cWZJwdfBai/j7XAP4AvBQbi8r7bGa74RP7f51zrwXDSfN5TsvkbmZ7mdk+sWP8BbSFlL43bFQUqXCK9fQuw/8boibp9ts1swuA24BLnHOb48Zrm9muwfGRQANgZThRFrWDz8IooIOZ7WFmR+Bjnlnd8e3AOcBHzrnVsYEovM/BdYBBwBLn3KNxLyXP5znsK7phPIAj8TMI5gGLgH8G4wcAk4BlwFvA/mHHGhfzXsA3QK24seeABcB8/IerTsgxDsP/Sb0V33PsVNp7ip9V0B9flS0AMiMU83J8/3Ru8HgyOPePwedlLjAbuDhCMZf6WQD+GbzPS4E2UYk5GH8W6Frs3NDfZ+B0fMtlftznoG3UP8/xDy0/ICKSgtKyLSMikuqU3EVEUpCSu4hIClJyFxFJQUruIiIpSMldRCQFKbmLiKSg/wcaNYlHBVhd6QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -268,7 +268,7 @@ { "data": { "image/svg+xml": [ - "
min(x)
min(x)
max(x)
max(x)
Map
to 0
Map...
Map
to 1
Map...
Distance
Between
Consecutive
Values
Distan...
Map
to 2
Map...
Map
to 3
Map...
(when n = 2)
(when n = 2)
0
0
= 1 / scale
= 1 / q
= 1 / scale...
x = (x   + zp  ) / q
x = (x   + zp  ) / q
q
q
x
x
x
x
zero point
zp = 2
zero point...
Viewer does not support full SVG 1.1
" + "
min(x)
min(x)
max(x)
max(x)
Map
to 0
Map...
Map
to 1
Map...
Distance
Between
Consecutive
Values
Distan...
Map
to 2
Map...
Map
to 3
Map...
(when n = 2)
(when n = 2)
0
0
= 1 / scale
= 1 / q
= 1 / scale...
x = (x   + zp  ) / q
x = (x   + zp  ) / q
q
q
x
x
x
x
zero point
zp = 2
zero point...
Viewer does not support full SVG 1.1
" ], "text/plain": [ "" @@ -515,7 +515,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -655,12 +655,12 @@ "output_type": "stream", "text": [ "\n", - "%0 = ConstantInput(1) # Integer\n", - "%1 = x_0 # Integer\n", - "%2 = ConstantInput(15) # Integer\n", + "%0 = ConstantInput(1) # Integer\n", + "%1 = x_0 # Integer\n", + "%2 = ConstantInput(15) # Integer\n", "%3 = Add(1, 2) # Integer\n", "%4 = Mul(3, 0) # Integer\n", - "%5 = ArbitraryFunction(4) # Integer\n", + "%5 = TLU(4) # Integer\n", "return(%5)\n" ] } @@ -711,7 +711,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -734,25 +734,7 @@ ] } ], - "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.7.7" - } - }, + "metadata": {}, "nbformat": 4, "nbformat_minor": 5 } diff --git a/examples/QuantizedLogisticRegression.ipynb b/examples/QuantizedLogisticRegression.ipynb index 1b1ef297f..be6a880a8 100644 --- a/examples/QuantizedLogisticRegression.ipynb +++ b/examples/QuantizedLogisticRegression.ipynb @@ -94,7 +94,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -173,22 +173,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "Epoch: 1 | Loss: 0.530019998550415\n", - "Epoch: 101 | Loss: 0.1248268187046051\n", - "Epoch: 201 | Loss: 0.07593712955713272\n", - "Epoch: 301 | Loss: 0.05418260768055916\n", - "Epoch: 401 | Loss: 0.04199932515621185\n", - "Epoch: 501 | Loss: 0.03424343094229698\n", - "Epoch: 601 | Loss: 0.028883913531899452\n", - "Epoch: 701 | Loss: 0.024963364005088806\n", - "Epoch: 801 | Loss: 0.021973103284835815\n", - "Epoch: 901 | Loss: 0.019618362188339233\n", - "Epoch: 1001 | Loss: 0.017716625705361366\n", - "Epoch: 1101 | Loss: 0.01614907570183277\n", - "Epoch: 1201 | Loss: 0.014835075475275517\n", - "Epoch: 1301 | Loss: 0.013717765919864178\n", - "Epoch: 1401 | Loss: 0.01275621633976698\n", - "Epoch: 1501 | Loss: 0.011920095421373844\n" + "Epoch: 1 | Loss: 0.5758869647979736\n", + "Epoch: 101 | Loss: 0.13611836731433868\n", + "Epoch: 201 | Loss: 0.08021673560142517\n", + "Epoch: 301 | Loss: 0.05636058747768402\n", + "Epoch: 401 | Loss: 0.043306026607751846\n", + "Epoch: 501 | Loss: 0.03511128947138786\n", + "Epoch: 601 | Loss: 0.029501130804419518\n", + "Epoch: 701 | Loss: 0.025424323976039886\n", + "Epoch: 801 | Loss: 0.02233024500310421\n", + "Epoch: 901 | Loss: 0.01990305446088314\n", + "Epoch: 1001 | Loss: 0.0179488193243742\n", + "Epoch: 1101 | Loss: 0.01634199731051922\n", + "Epoch: 1201 | Loss: 0.014997857622802258\n", + "Epoch: 1301 | Loss: 0.013856985606253147\n", + "Epoch: 1401 | Loss: 0.012876608408987522\n", + "Epoch: 1501 | Loss: 0.012025204487144947\n" ] } ], @@ -251,7 +251,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -289,9 +289,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[4.54424667]\n", - " [2.37960148]]\n", - "-14.69552993774414\n" + "[[4.53586054]\n", + " [2.37015319]]\n", + "-14.660321235656738\n" ] } ], @@ -330,7 +330,7 @@ { "data": { "image/svg+xml": [ - "
min(x)
min(x)
max(x)
max(x)
Map
to 0
Map...
Map
to 1
Map...
Distance
Between
Consecutive
Values
Distan...
Map
to 2
Map...
Map
to 3
Map...
(when n = 2)
(when n = 2)
0
0
= 1 / scale
= 1 / q
= 1 / scale...
x = (x   + zp  ) / q
x = (x   + zp  ) / q
q
q
x
x
x
x
zero point
zp = 2
zero point...
Viewer does not support full SVG 1.1
" + "
min(x)
min(x)
max(x)
max(x)
Map
to 0
Map...
Map
to 1
Map...
Distance
Between
Consecutive
Values
Distan...
Map
to 2
Map...
Map
to 3
Map...
(when n = 2)
(when n = 2)
0
0
= 1 / scale
= 1 / q
= 1 / scale...
x = (x   + zp  ) / q
x = (x   + zp  ) / q
q
q
x
x
x
x
zero point
zp = 2
zero point...
Viewer does not support full SVG 1.1
" ], "text/plain": [ "" @@ -601,7 +601,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -762,18 +762,18 @@ "output_type": "stream", "text": [ "\n", - "%0 = ConstantInput(2) # Integer\n", - "%1 = ConstantInput(1) # Integer\n", - "%2 = x_0 # Integer\n", - "%3 = ConstantInput(6) # Integer\n", - "%4 = x_1 # Integer\n", - "%5 = ConstantInput(6) # Integer\n", - "%6 = Add(2, 3) # Integer\n", - "%7 = Add(4, 5) # Integer\n", + "%0 = ConstantInput(2) # Integer\n", + "%1 = ConstantInput(1) # Integer\n", + "%2 = x_0 # Integer\n", + "%3 = ConstantInput(6) # Integer\n", + "%4 = x_1 # Integer\n", + "%5 = ConstantInput(6) # Integer\n", + "%6 = Add(2, 3) # Integer\n", + "%7 = Add(4, 5) # Integer\n", "%8 = Mul(6, 0) # Integer\n", - "%9 = Mul(7, 1) # Integer\n", + "%9 = Mul(7, 1) # Integer\n", "%10 = Add(8, 9) # Integer\n", - "%11 = ArbitraryFunction(10) # Integer\n", + "%11 = TLU(10) # Integer\n", "return(%11)\n" ] } @@ -824,7 +824,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -856,25 +856,7 @@ ] } ], - "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.7.7" - } - }, + "metadata": {}, "nbformat": 4, "nbformat_minor": 5 } diff --git a/hdk/common/compilation/artifacts.py b/hdk/common/compilation/artifacts.py index baed5e957..63f9f665d 100644 --- a/hdk/common/compilation/artifacts.py +++ b/hdk/common/compilation/artifacts.py @@ -7,7 +7,7 @@ from typing import Any, Dict, Optional import networkx as nx -from ..debugging.draw_graph import get_printable_graph +from ..debugging import draw_graph, get_printable_graph from ..operator_graph import OPGraph from ..representation import intermediate as ir @@ -70,6 +70,13 @@ class CompilationArtifacts: with open(output_directory.joinpath("graph.txt"), "w") as f: f.write(f"{get_printable_graph(self.operation_graph, show_data_types=True)[1:]}\n") + draw_graph( + self.operation_graph, + save_to=output_directory.joinpath("graph.png"), + block_until_user_closes_graph=False, + draw_edge_numbers=True, + ) + if self.bounds is not None: with open(output_directory.joinpath("bounds.txt"), "w") as f: # TODO: diff --git a/hdk/common/debugging/__init__.py b/hdk/common/debugging/__init__.py index 31dbfc844..a5253afdc 100644 --- a/hdk/common/debugging/__init__.py +++ b/hdk/common/debugging/__init__.py @@ -1,2 +1,3 @@ """Module for debugging.""" -from .draw_graph import draw_graph, get_printable_graph +from .drawing import draw_graph +from .printing import get_printable_graph diff --git a/hdk/common/debugging/draw_graph.py b/hdk/common/debugging/drawing.py similarity index 71% rename from hdk/common/debugging/draw_graph.py rename to hdk/common/debugging/drawing.py index fc63401b4..d430b99f5 100644 --- a/hdk/common/debugging/draw_graph.py +++ b/hdk/common/debugging/drawing.py @@ -1,5 +1,7 @@ """functions to draw the different graphs we can generate in the package, eg to debug.""" -from typing import Any, Dict, List + +from pathlib import Path +from typing import Dict, List, Optional import matplotlib.pyplot as plt import networkx as nx @@ -86,21 +88,40 @@ def human_readable_layout(graph: nx.Graph, x_delta: float = 1.0, y_delta: float return pos +def adjust_limits(): + """Increases the limits of x and y axis of the current pyplot figure by 20%. + + Returns: + None + """ + + x_lim = plt.xlim() + x_distance = x_lim[1] - x_lim[0] + plt.xlim([x_lim[0] - x_distance / 10, x_lim[1] + x_distance / 10]) + + y_lim = plt.ylim() + y_distance = y_lim[1] - y_lim[0] + plt.ylim([y_lim[0] - y_distance / 10, y_lim[1] + y_distance / 10]) + + def draw_graph( opgraph: OPGraph, block_until_user_closes_graph: bool = True, draw_edge_numbers: bool = True, + save_to: Optional[Path] = None, ) -> None: """Draw a graph. Args: - graph (OPGraph): The graph that we want to draw + opgraph (OPGraph): The graph that we want to draw block_until_user_closes_graph (bool): if True, will wait the user to close the figure before continuing; False is useful for the CI tests draw_edge_numbers (bool): if True, add the edge number on the arrow linking nodes, eg to differentiate the x and y in a Sub coding (x - y). This option is not that useful for commutative ops, and may make the picture a bit too dense, so could be deactivated + save_to (Optional[Path]): if specified, the drawn graph will be saved + to this path Returns: None @@ -211,89 +232,12 @@ def draw_graph( plt.axis("off") + adjust_limits() + + # save the figure if requested + if save_to is not None: + plt.savefig(save_to) + # block_until_user_closes_graph is used as True for real users and False # for CI plt.show(block=block_until_user_closes_graph) - - -def output_data_type_to_string(node): - """Return the datatypes of the outputs of the node. - - Args: - node: a graph node - - Returns: - str: a string representing the datatypes of the outputs of the node - - """ - return ", ".join([str(o.data_type) for o in node.outputs]) - - -def get_printable_graph(opgraph: OPGraph, show_data_types: bool = False) -> str: - """Return a string representing a graph. - - Args: - graph (OPGraph): The graph that we want to draw - show_data_types (bool): Whether or not showing data_types of nodes, eg - to see their width - - Returns: - str: a string to print or save in a file - """ - assert isinstance(opgraph, OPGraph) - list_of_nodes_which_are_outputs = list(opgraph.output_nodes.values()) - graph = opgraph.graph - - returned_str = "" - - i = 0 - map_table: Dict[Any, int] = {} - - for node in nx.topological_sort(graph): - - if isinstance(node, ir.Input): - what_to_print = node.input_name - elif isinstance(node, ir.ConstantInput): - what_to_print = f"ConstantInput({node.constant_data})" - else: - - base_name = node.__class__.__name__ - - if isinstance(node, ir.ArbitraryFunction): - base_name = node.op_name - - what_to_print = base_name + "(" - - # Find all the names of the current predecessors of the node - list_of_arg_name = [] - - for pred, index_list in graph.pred[node].items(): - for index in index_list.values(): - # Remark that we keep the index of the predecessor and its - # name, to print sources in the right order, which is - # important for eg non commutative operations - list_of_arg_name += [(index["input_idx"], str(map_table[pred]))] - - # Some checks, because the previous algorithm is not clear - assert len(list_of_arg_name) == len(set(x[0] for x in list_of_arg_name)) - list_of_arg_name.sort() - assert [x[0] for x in list_of_arg_name] == list(range(len(list_of_arg_name))) - - # Then, just print the predecessors in the right order - what_to_print += ", ".join([x[1] for x in list_of_arg_name]) + ")" - - new_line = f"%{i} = {what_to_print}" - - # Manage datatypes - if show_data_types: - new_line = f"{new_line: <40s} # {output_data_type_to_string(node)}" - - returned_str += f"\n{new_line}" - - map_table[node] = i - i += 1 - - return_part = ", ".join(["%" + str(map_table[n]) for n in list_of_nodes_which_are_outputs]) - returned_str += f"\nreturn({return_part})" - - return returned_str diff --git a/hdk/common/debugging/printing.py b/hdk/common/debugging/printing.py new file mode 100644 index 000000000..713a3a3b8 --- /dev/null +++ b/hdk/common/debugging/printing.py @@ -0,0 +1,91 @@ +"""functions to print the different graphs we can generate in the package, eg to debug.""" + +from typing import Any, Dict + +import networkx as nx + +from ..operator_graph import OPGraph +from ..representation import intermediate as ir + + +def output_data_type_to_string(node): + """Return the datatypes of the outputs of the node. + + Args: + node: a graph node + + Returns: + str: a string representing the datatypes of the outputs of the node + + """ + return ", ".join([str(o.data_type) for o in node.outputs]) + + +def get_printable_graph(opgraph: OPGraph, show_data_types: bool = False) -> str: + """Return a string representing a graph. + + Args: + opgraph (OPGraph): The graph that we want to draw + show_data_types (bool): Whether or not showing data_types of nodes, eg + to see their width + + Returns: + str: a string to print or save in a file + """ + assert isinstance(opgraph, OPGraph) + list_of_nodes_which_are_outputs = list(opgraph.output_nodes.values()) + graph = opgraph.graph + + returned_str = "" + + i = 0 + map_table: Dict[Any, int] = {} + + for node in nx.topological_sort(graph): + + if isinstance(node, ir.Input): + what_to_print = node.input_name + elif isinstance(node, ir.ConstantInput): + what_to_print = f"ConstantInput({node.constant_data})" + else: + + base_name = node.__class__.__name__ + + if isinstance(node, ir.ArbitraryFunction): + base_name = node.op_name + + what_to_print = base_name + "(" + + # Find all the names of the current predecessors of the node + list_of_arg_name = [] + + for pred, index_list in graph.pred[node].items(): + for index in index_list.values(): + # Remark that we keep the index of the predecessor and its + # name, to print sources in the right order, which is + # important for eg non commutative operations + list_of_arg_name += [(index["input_idx"], str(map_table[pred]))] + + # Some checks, because the previous algorithm is not clear + assert len(list_of_arg_name) == len(set(x[0] for x in list_of_arg_name)) + list_of_arg_name.sort() + assert [x[0] for x in list_of_arg_name] == list(range(len(list_of_arg_name))) + + # Then, just print the predecessors in the right order + what_to_print += ", ".join([x[1] for x in list_of_arg_name]) + ")" + + new_line = f"%{i} = {what_to_print}" + + # Manage datatypes + if show_data_types: + new_line = f"{new_line: <40s} # {output_data_type_to_string(node)}" + + returned_str += f"\n{new_line}" + + map_table[node] = i + i += 1 + + return_part = ", ".join(["%" + str(map_table[n]) for n in list_of_nodes_which_are_outputs]) + returned_str += f"\nreturn({return_part})" + + return returned_str diff --git a/script/nbmake_utils/notebook_sanitize.py b/script/nbmake_utils/notebook_sanitize.py index d1579f2a4..b553f8d52 100644 --- a/script/nbmake_utils/notebook_sanitize.py +++ b/script/nbmake_utils/notebook_sanitize.py @@ -15,6 +15,7 @@ def main(): with open(notebook_file, "w", newline="\n") as f: json.dump(notebook_dict, f, indent=1, ensure_ascii=False) + f.write("\n") if __name__ == "__main__": diff --git a/tests/common/compilation/test_artifacts.py b/tests/common/compilation/test_artifacts.py index 0e2c75697..d36918afd 100644 --- a/tests/common/compilation/test_artifacts.py +++ b/tests/common/compilation/test_artifacts.py @@ -30,6 +30,7 @@ def test_artifacts_export(): assert output_directory.joinpath("environment.txt").exists() assert output_directory.joinpath("requirements.txt").exists() assert output_directory.joinpath("graph.txt").exists() + assert output_directory.joinpath("graph.png").exists() assert output_directory.joinpath("bounds.txt").exists() # format of those files might change in the future