Skip to content

Instantly share code, notes, and snippets.

@crusaderky
Created August 28, 2019 17:22
Show Gist options
  • Save crusaderky/1b00fd68ae1ce79109b6af546c88bd4a to your computer and use it in GitHub Desktop.
Save crusaderky/1b00fd68ae1ce79109b6af546c88bd4a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Title: %3 Pages: 1 -->\n",
"<svg width=\"536pt\" height=\"404pt\"\n",
" viewBox=\"0.00 0.00 536.30 404.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 400)\">\n",
"<title>%3</title>\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-400 532.2976,-400 532.2976,4 -4,4\"/>\n",
"<!-- dask -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>dask</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"286\" cy=\"-234\" rx=\"32.4942\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"286\" y=\"-230.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">dask</text>\n",
"</g>\n",
"<!-- numpy -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>numpy</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"245\" cy=\"-18\" rx=\"38.1938\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"245\" y=\"-14.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">numpy</text>\n",
"</g>\n",
"<!-- dask&#45;&gt;numpy -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>dask&#45;&gt;numpy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M282.5749,-215.9555C275.43,-178.3144 258.8919,-91.1867 250.3385,-46.1246\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"253.7477,-45.3169 248.4442,-36.1451 246.8705,-46.6224 253.7477,-45.3169\"/>\n",
"</g>\n",
"<!-- cupy -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>cupy</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"60\" cy=\"-162\" rx=\"32.4942\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"60\" y=\"-158.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">cupy</text>\n",
"</g>\n",
"<!-- dask&#45;&gt;cupy -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>dask&#45;&gt;cupy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M256.1407,-226.5616C219.2488,-217.0805 154.7677,-199.5564 101,-180 98.7809,-179.1929 96.5112,-178.3239 94.2342,-177.419\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"95.5207,-174.1636 84.9428,-173.5644 92.8382,-180.6292 95.5207,-174.1636\"/>\n",
"</g>\n",
"<!-- sparse -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>sparse</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"154\" cy=\"-162\" rx=\"43.5923\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"154\" y=\"-158.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">sparse</text>\n",
"</g>\n",
"<!-- dask&#45;&gt;sparse -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>dask&#45;&gt;sparse</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M262.7049,-221.2936C242.4497,-210.2453 212.7902,-194.0674 189.5669,-181.4001\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"191.151,-178.2774 180.696,-176.5615 187.799,-184.4227 191.151,-178.2774\"/>\n",
"</g>\n",
"<!-- numpy.ma -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>numpy.ma</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"385\" cy=\"-90\" rx=\"54.6905\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"385\" y=\"-86.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">numpy.ma</text>\n",
"</g>\n",
"<!-- dask&#45;&gt;numpy.ma -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>dask&#45;&gt;numpy.ma</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M290.2111,-215.8C295.2676,-196.6414 305.1129,-166.2341 321,-144 329.5694,-132.007 341.39,-121.0434 352.5423,-112.1749\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"354.6679,-114.9555 360.4886,-106.1028 350.4178,-109.3934 354.6679,-114.9555\"/>\n",
"</g>\n",
"<!-- pandas -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>pandas</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"374\" cy=\"-162\" rx=\"43.5923\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"374\" y=\"-158.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">pandas</text>\n",
"</g>\n",
"<!-- dask&#45;&gt;pandas -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>dask&#45;&gt;pandas</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M304.2337,-219.0816C316.438,-209.0962 332.7257,-195.7699 346.4941,-184.5048\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"348.7364,-187.1925 354.2596,-178.1512 344.3037,-181.7748 348.7364,-187.1925\"/>\n",
"</g>\n",
"<!-- cupy&#45;&gt;numpy -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>cupy&#45;&gt;numpy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M79.1015,-147.1318C111.8876,-121.6118 179.009,-69.3659 217.0592,-39.7485\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"219.4247,-42.3426 225.1661,-33.4383 215.125,-36.8187 219.4247,-42.3426\"/>\n",
"</g>\n",
"<!-- sparse&#45;&gt;numpy -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>sparse&#45;&gt;numpy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M165.1584,-144.3428C181.0038,-119.2687 210.1339,-73.1728 228.4855,-44.1328\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"231.6511,-45.6751 234.0346,-35.3519 225.7337,-41.9356 231.6511,-45.6751\"/>\n",
"</g>\n",
"<!-- numpy.ma&#45;&gt;numpy -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>numpy.ma&#45;&gt;numpy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M355.3096,-74.7307C333.2994,-63.4111 303.2235,-47.9435 280.0353,-36.0181\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"281.3758,-32.7718 270.8822,-31.3108 278.1743,-38.9969 281.3758,-32.7718\"/>\n",
"</g>\n",
"<!-- pandas&#45;&gt;numpy -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>pandas&#45;&gt;numpy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M356.9591,-145.289C346.4009,-134.7767 332.6747,-120.8205 321,-108 301.4173,-86.4954 280.137,-61.1078 265.089,-42.7884\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"267.6831,-40.4318 258.6421,-34.9082 262.2652,-44.8643 267.6831,-40.4318\"/>\n",
"</g>\n",
"<!-- pandas&#45;&gt;numpy.ma -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>pandas&#45;&gt;numpy.ma</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M376.7758,-143.8314C377.9522,-136.131 379.3511,-126.9743 380.6586,-118.4166\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"384.1364,-118.8272 382.1869,-108.4133 377.2167,-117.7699 384.1364,-118.8272\"/>\n",
"</g>\n",
"<!-- jax -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>jax</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"501\" cy=\"-234\" rx=\"27.0966\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"501\" y=\"-230.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">jax</text>\n",
"</g>\n",
"<!-- jax&#45;&gt;numpy -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>jax&#45;&gt;numpy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M500.5726,-215.748C498.7687,-182.2773 490.0212,-110.9484 449,-72 426.5829,-50.7156 345.0779,-34.0277 292.1248,-25.125\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"292.3764,-21.6194 281.9408,-23.4491 291.2398,-28.5265 292.3764,-21.6194\"/>\n",
"</g>\n",
"<!-- pint -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>pint</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"226\" cy=\"-306\" rx=\"32.4942\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-302.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">pint</text>\n",
"</g>\n",
"<!-- pint&#45;&gt;dask -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>pint&#45;&gt;dask</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M239.916,-289.3008C247.5645,-280.1226 257.1933,-268.568 265.6691,-258.3971\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"268.4464,-260.5316 272.1595,-250.6087 263.0688,-256.0502 268.4464,-260.5316\"/>\n",
"</g>\n",
"<!-- pint&#45;&gt;numpy -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>pint&#45;&gt;numpy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M227.1885,-287.9843C230.4007,-239.2939 239.2739,-104.7961 243.149,-46.0573\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"246.6459,-46.2176 243.8119,-36.0089 239.6611,-45.7568 246.6459,-46.2176\"/>\n",
"</g>\n",
"<!-- pint&#45;&gt;cupy -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>pint&#45;&gt;cupy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" stroke-dasharray=\"5,2\" d=\"M208.2351,-290.5895C178.6561,-264.9306 119.2167,-213.3687 85.2791,-183.9289\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"87.4846,-181.2087 77.6372,-177.2997 82.8976,-186.4964 87.4846,-181.2087\"/>\n",
"</g>\n",
"<!-- pint&#45;&gt;sparse -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>pint&#45;&gt;sparse</title>\n",
"<path fill=\"none\" stroke=\"#000000\" stroke-dasharray=\"5,2\" d=\"M217.3151,-288.6302C204.9491,-263.8982 182.1517,-218.3034 167.5517,-189.1034\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.5442,-187.2621 162.9415,-179.8831 164.2832,-190.3926 170.5442,-187.2621\"/>\n",
"</g>\n",
"<!-- pint&#45;&gt;pandas -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>pint&#45;&gt;pandas</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M253.7041,-296.4409C275.7712,-287.6906 306.2928,-272.9094 327,-252 344.4281,-234.4017 356.8837,-209.0092 364.5749,-189.6798\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.8973,-190.7893 368.1638,-180.1978 361.3505,-188.3114 367.8973,-190.7893\"/>\n",
"</g>\n",
"<!-- xarray -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>xarray</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"256\" cy=\"-378\" rx=\"43.5923\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256\" y=\"-374.3\" font-family=\"Courier,monospace\" font-size=\"14.00\" fill=\"#000000\">xarray</text>\n",
"</g>\n",
"<!-- xarray&#45;&gt;dask -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>xarray&#45;&gt;dask</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M259.7389,-360.0535C264.8589,-335.4774 274.104,-291.1008 280.1464,-262.0974\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"283.6008,-262.6764 282.214,-252.1727 276.748,-261.2487 283.6008,-262.6764\"/>\n",
"</g>\n",
"<!-- xarray&#45;&gt;numpy -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>xarray&#45;&gt;numpy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M213.7268,-373.5408C141.0156,-363.2787 0,-330.8871 0,-234 0,-234 0,-234 0,-162 0,-71.2419 126.5029,-36.5626 197.7071,-24.2313\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"198.4918,-27.6492 207.7898,-22.57 197.3538,-20.7424 198.4918,-27.6492\"/>\n",
"</g>\n",
"<!-- xarray&#45;&gt;cupy -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>xarray&#45;&gt;cupy</title>\n",
"<path fill=\"none\" stroke=\"#000000\" stroke-dasharray=\"5,2\" d=\"M226.2119,-364.7314C207.2082,-355.2638 182.8797,-341.1868 165,-324 122.9254,-283.5559 89.509,-223.1804 72.4386,-188.6996\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"75.5833,-187.1628 68.0638,-179.699 69.2876,-190.2229 75.5833,-187.1628\"/>\n",
"</g>\n",
"<!-- xarray&#45;&gt;sparse -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>xarray&#45;&gt;sparse</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M228.6861,-363.8538C213.4702,-354.5599 195.524,-340.9808 185,-324 159.2739,-282.4901 154.0666,-224.3909 153.4568,-190.2276\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"156.9557,-190.0084 153.4001,-180.0281 149.9558,-190.0474 156.9557,-190.0084\"/>\n",
"</g>\n",
"<!-- xarray&#45;&gt;numpy.ma -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>xarray&#45;&gt;numpy.ma</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M282.5358,-363.5684C298.8983,-353.8204 319.6207,-339.8648 335,-324 387.8617,-269.4698 405.7008,-252.8989 427,-180 431.4872,-164.6421 432.1926,-159.134 427,-144 423.378,-133.4436 416.7561,-123.3611 409.8246,-114.8271\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"412.3673,-112.417 403.1719,-107.1544 407.0785,-117.0027 412.3673,-112.417\"/>\n",
"</g>\n",
"<!-- xarray&#45;&gt;pandas -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>xarray&#45;&gt;pandas</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M273.0225,-361.3188C295.1367,-338.6481 333.3495,-295.8808 354,-252 363.2298,-232.3874 368.2912,-208.3397 371.0116,-190.0374\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"374.4971,-190.3785 372.3566,-180.0022 367.5592,-189.4486 374.4971,-190.3785\"/>\n",
"</g>\n",
"<!-- xarray&#45;&gt;jax -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>xarray&#45;&gt;jax</title>\n",
"<path fill=\"none\" stroke=\"#000000\" stroke-dasharray=\"5,2\" d=\"M296.9878,-371.413C349.1689,-362.3191 435.5032,-344.6774 460,-324 478.7708,-308.1558 489.3662,-281.9133 495.0615,-261.8426\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"498.4924,-262.5553 497.6105,-251.9972 491.7158,-260.8008 498.4924,-262.5553\"/>\n",
"</g>\n",
"<!-- xarray&#45;&gt;pint -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>xarray&#45;&gt;pint</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M248.5843,-360.2022C245.1693,-352.0064 241.0427,-342.1024 237.2561,-333.0145\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"240.4074,-331.4776 233.3304,-323.593 233.9459,-334.17 240.4074,-331.4776\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<graphviz.dot.Digraph at 0x10f415dd0>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from graphviz import Digraph\n",
"\n",
"# libraries that only interact with NumPy are not listed, e.g.,\n",
"# TensorFlow, PyTorch, scipy.sparse\n",
"g = Digraph(node_attr={'fontname': 'courier'})\n",
"g.edge('dask', 'numpy')\n",
"g.edge('dask', 'cupy')\n",
"g.edge('dask', 'sparse')\n",
"g.edge('dask', 'numpy.ma')\n",
"g.edge('dask', 'pandas')\n",
"g.edge('cupy', 'numpy')\n",
"g.edge('sparse', 'numpy')\n",
"g.edge('numpy.ma', 'numpy')\n",
"g.edge('pandas', 'numpy')\n",
"g.edge('pandas', 'numpy.ma')\n",
"g.edge('jax', 'numpy')\n",
"g.edge('pint', 'dask')\n",
"g.edge('pint', 'pandas')\n",
"g.edge('pint', 'numpy')\n",
"g.edge('pint', 'cupy', style='dashed')\n",
"g.edge('pint', 'sparse', style='dashed')\n",
"g.edge('xarray', 'dask')\n",
"g.edge('xarray', 'cupy', style='dashed')\n",
"g.edge('xarray', 'sparse')\n",
"g.edge('xarray', 'numpy')\n",
"g.edge('xarray', 'pandas')\n",
"g.edge('xarray', 'numpy.ma')\n",
"g.edge('xarray', 'pint')\n",
"g.edge('xarray', 'jax', style='dashed')\n",
"g"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"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.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment