{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "# Comparison Between TreeValue and DM-Tree" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "In this section, we will compare the feature and performance of the [dm-tree](https://github.com/deepmind/tree) library, which is developed by deepmind." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Before starting the comparison, let us define some thing." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:13.129096Z", "iopub.status.busy": "2023-10-22T14:55:13.128797Z", "iopub.status.idle": "2023-10-22T14:55:13.137809Z", "shell.execute_reply": "2023-10-22T14:55:13.136984Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "origin = {'a': 1, 'b': 2, 'c': {'x': 3, 'y': 4}}" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "## Mapping Operation" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Mapping operation is quite common in the processing of trees. A mapping function should be provided to create a new tree based on the mapped tree." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### TreeValue's mapping" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "In TreeValue, mapping is provided to simply create a new tree." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:13.142536Z", "iopub.status.busy": "2023-10-22T14:55:13.141847Z", "iopub.status.idle": "2023-10-22T14:55:15.540313Z", "shell.execute_reply": "2023-10-22T14:55:15.539351Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/jpeg": "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", "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "%3\n", "\n", "\n", "\n", "node_7f5aa0eeda00\n", "\n", "<root>\n", "\n", "\n", "\n", "value__node_7f5aa0eeda00__a\n", "\n", "1\n", "\n", "\n", "\n", "node_7f5aa0eeda00->value__node_7f5aa0eeda00__a\n", "\n", "\n", "a\n", "\n", "\n", "\n", "value__node_7f5aa0eeda00__b\n", "\n", "2\n", "\n", "\n", "\n", "node_7f5aa0eeda00->value__node_7f5aa0eeda00__b\n", "\n", "\n", "b\n", "\n", "\n", "\n", "node_7f5aa0eedfd0\n", "\n", "<root>.c\n", "\n", "\n", "\n", "node_7f5aa0eeda00->node_7f5aa0eedfd0\n", "\n", "\n", "c\n", "\n", "\n", "\n", "value__node_7f5aa0eedfd0__x\n", "\n", "3\n", "\n", "\n", "\n", "node_7f5aa0eedfd0->value__node_7f5aa0eedfd0__x\n", "\n", "\n", "x\n", "\n", "\n", "\n", "value__node_7f5aa0eedfd0__y\n", "\n", "4\n", "\n", "\n", "\n", "node_7f5aa0eedfd0->value__node_7f5aa0eedfd0__y\n", "\n", "\n", "y\n", "\n", "\n", "\n" ], "text/plain": [ "\n", "├── 'a' --> 1\n", "├── 'b' --> 2\n", "└── 'c' --> \n", " ├── 'x' --> 3\n", " └── 'y' --> 4" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from treevalue import FastTreeValue, mapping\n", "\n", "tv = FastTreeValue(origin)\n", "tv" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:15.593107Z", "iopub.status.busy": "2023-10-22T14:55:15.591897Z", "iopub.status.idle": "2023-10-22T14:55:15.716028Z", "shell.execute_reply": "2023-10-22T14:55:15.715095Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQEAYABgAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgBIwFnAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9/ooooAKKKKACiiigAooooAKKKKACiigkAZJwKACis+51rT7XO+4VmHZPm/lWRP4t3Nss7Yu3YtyfyH+NZyqwjuzGdenDdnT1XuL61tf9fPGh9Cefyrk5LnW7/70hhQ9s7f0HP502PRVJzPO7nuF4FYSxS+yjmnjl9hGvdeLLOHIhR5T6n5R/j+lV4PF6bttzbFfdT/Q/wCNNhs7a3/1UKKfXGT+dSSRRyrtkRXHowzWTxFS9zneLqt3ua1trWn3WAlwqsf4X+U/rV8EEZHSuNl0e2fmPfEf9k8fkaiS21OxObS63L/dB25/DpWkcV/MjaGOf20dvRXJR+Jr+1wt7bbh/eI25/EcVq2viXT7jAZ2ib/aGR+YreNaEup1QxNKezNiimRTRTruikSRfVTmn1qbhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBleJP8AkAXX/AP/AEMUUeJP+QBdf8A/9DFFAGrRRRQAUUUUAFFFFABRWfqF9dWoPkWEkw/vAjH5DmuWvfEWpyErnyR3CDGP61lOrGG5hVxEKe52ss8UC7ppUjX1ZgKyrrxNp9vkIzSt/sjA/M1zEEEd6+6fUNznqo4P5mtOHTbSHlYQzercmueWKb+FHHLHSfwIJPEuoXRIsrbaP7wG79TxVV7XU745u7raPTO7H4dK1elFYSqTluzmnVqT+JmfFo9qmDJulP8AtHj8qvRxpEu2NFQeijFOryvxB/b39sXP/CUf2sNA3nyv7I27NmePNx82MYzn8KlK5EY3PUIp4ZwxhlSQKxVijA4I6g471JXlniz+wf8AhUE//CN7P7P8+PG3d97eM53c5+tbFv4Wt9A0FvEFhJdSaxFp8kjyvKz+e3lEgFScYBwQAO1Ow+U7uivCprO0tPh1Z+LrfUrj/hInuATcfaCWdt5BQrnsOf8A6xroprePxZ8SbrTPEbyLaW1hHLb2nmmNS5VCzcEZILN+XtT5R8h6hLIIYXlYEqiljjrxWZ4e8Q2fiXR11SzSaKBmZcTgKw2nB6Ej9a4LwjYW/ibwjq2m6r5mo2GnX0n2KR5WBIVTt+ZSMgA/T5vpTvhP4c0WTw/b67Jag6lHJKnnea3AwVwVzt+6T270WSQOKSZ6dFLFcQrLDIksTjKujBlYexFV5tNtJuTEFb1TivKZfsH2x/8AhXB1n7Vu+b7L/wAeWf8Ab8zj+lep6P8A2j/ZFr/a3lfb9n7/AMr7u72pNClGxXOkzQtvtLplYdN3B/MVPHq2tWPEqGZB3I3fqOav0URlKOzCM5w+FhbeLbaQ7biJo29VORWxb6jZ3WPJuEYn+HOD+RrCmtYJ/wDWxI3uRz+dZtzplrENy3Jg9mOR+VbxxMlvqdMMbUj8SudzRXnsOsX9nJsgumlQdOpH5Guj07WtQuQofTmkB/jT5R+vH61vCvGZ10sXCpob9FICSoJBB9D2pa3OoKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMrxJ/yALr/AIB/6GKKPEn/ACALr/gH/oYooA1aKKKACiiigAooooAKhntbe5GJoUk/3lzU1FAmr7mHdeFrGfJjLxN7fMP15/WsyTw/qlnzaXHmKOihv6HiuvorKVCEuhhPC0p9Dh2v7+0bbd2h+uCp/XrViLVrSTAZjG3o4x+tdeyq6lWUMD1BGazbnQNOuc5gEZPePj9OlYSwr+yzlngWvgZnq6uu5GDD1BzS1BN4TliYvZXWD6HKn8xVORdasP8AXQmVB3K5/Uf1rCVKcd0c06FSG6HajoOl6rp0un3lmj2sriSSNCY9zA5ySpBzwKvRxJFCkSLhEUKo64ArPj1qI8TRPGfX7wq9DcwTj91KjewPP5VFzK/QwovAfheDUxqMejW63IbeDltob1CZ2j8qs614U0PxE8b6rp8dxJGMK+5kYD0ypBx7Vs0UXY7sq6fp1npVklnYW0dvbp92NBgf/XPvWRY+B/Dem6sup2elpDdru2usj7RuBB+XO3oT2rfd1jXc7BR6k4qlNq9pEcKxkb0QZ/Wi4r2LkMMVvEsUMaRxqMKiKAAPYCn1krfX94220tD9cFj/APWqzH4e1O85u7jYp6qW/oOKqMJS2RcKc5/CiSbULWDh5lz6Lyf0qm+sM7bba2Ziehbj9K3LXwtYQYMm+Zvc4H6f41rQW0Fsu2GFIx/srit44aT3Z1QwM38TsclHp+uX/wB7MCH/AIB/9ertt4RiB33Vwzt3Cj+prpaK2jh4LzOmGDpR3Vylb6TY2uPKtkyP4mG4/rV2iitkktjpUUtEFFFFMYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZXiT/AJAF1/wD/wBDFFHiT/kAXX/AP/QxRQBq0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVU1G/Swtw+wyTOdkMK9ZGPQD+p7Ck3bVibSV2UNbS3cpaxWsU1/PnywRjYO7sRzgfqeKpHwZAkCrDdSeYBy0gzuPc+1bGm2D2wkuLlxJez8yuOg9FX0Uf/AF6v1n7OMtZIxdGNTWaOOk0rWrH/AFTmZB6Hd/PmoLU6xqsYe3j8uPJXcF28gkHk+4NdxWX4e/5A6/8AXef/ANGvWTw0OYweDp86S2MqHwnJKwe9uix9Blj+ZrRPhjSmtzC8BfPRyx3KexHoa2KK2jRhHZHRHD0o7Ix7a7l0uVLLUSDGx2wXYGFf0Vuyt+h/Stio54IrmB4Z41kicYZWGQRWSJZtBISdnn0zosx5e39m9V9+3f1p/DvsVdw32NqikVldQysGVhkEHIIpas0CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDK8Sf8gC6/4B/wChiijxJ/yALr/gH/oYooA1aKKKACiiigAooooAKKKKACiiigAoopsjpFG0kjBUUEsxOAB60ARXd3DY2slxO22NBk+p9APUmqWn2k01wdTvl23DjbFEeRAnp/vHufwqK0jfWLpNRnUraRnNpEwxuP8Az0YevoOw571s1C97XoZr33fp/WoUUUVZoFZfh7/kDr/13n/9GvWpXL6D4h0uOeHQ3usalJJO6Q+W3I8yQ53Y29Ae9Q2lJX/rYzlJKav5/odRRRRVmgUhAYEEAg8EGlooAxmt59EYy2cbTaeTmS1XlovVo/b/AGfy9K1La5hu7dJ7eRZInGVZe9S1k3NhPZ3D3ulgb3O6a1Jwk3uP7re/Q96i3LtsZ2cNtjWoqtY38GoQeZCSCp2ujDDI3cMOxqzVp32LTTV0FFFFAwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMrxJ/wAgC6/4B/6GKKPEn/IAuv8AgH/oYooA1aKKKACiiigAooooAKKKKACiiigArFb/AIn10UH/ACC4H+Y9rhwen+4D19T9KdeyyandPplq5WFP+PudT90f881P949/Qe5rVhhjghSGJAkaAKqqOAKj4tOhm/fduh5z4m8RPp+sXUcXxAhsipwtkNLEwjIH3S4BPX8RW18O/FN14p0CSe+VBdQTGJ2QYDjAIOOx5/SoYvh/JZ+I77U9O1y4tIb5y1zAkKlmySSFc8ryT0Gfer3grwh/wh+n3Np9u+1+dL5m7yvLxwBjG4+lZQVTnu9tf63OenGsqt3tr1+7q/yR09FFFdB2BXicYvW+K9gmnvFHdMk6pJKu5UyZstjvgZIHrXtledWvgV9U1iHxDHq8tpJE0yIkUQLKwkkAbcTjqeQRyOO9YVouTjY5MTCU3Hl6f8Al8P8AiPW7Tx7deFdbuor7935kNykQjP3Q2CBxjBP4jrXoFcn4f8E/2TrtzrmoanLqepzrt854xGFHA4UE84AH07V1lXSUkveNaCmovn7/AIBRRRWhsFFFFAGdfaa8k4vbGQQXyjG4j5ZR/dcdx79RT9P1JbwvDJG0F3F/rYH6r7j1X0Iq9VK/05L4JIrtDdRcxTp95D/UeoPWpaa1RDi07xMTx74ol8KeHheW0SSXM0ohi3/dUkE5PrwDTfD1n4sV7S81XW7a6gmTdNai1VDHlcja69SDjqOmadq2n23ijT30DXUMF1nzIpIjw5H8cZP1OVPPP40aF4Z1bSZ7YXXie5vbO2BWK2MCoCNpUBmySwGfzArL3nO/T+tzD35VebW3ra3qjqKKKK3OoKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMrxJ/yALr/AIB/6GKKPEn/ACALr/gH/oYooA1aKKKACiiigAooooAKKKKACszUbyYzLp1iR9slGWcjIgT++ff0Hc1LqV+bNEjhQS3c52wRZ6nuT6KOpNLp1gLGFi7+bcynfPMert/QDoB2FS3d2REm2+VEtlZw2FqlvCDtXkknJYnqSe5NWKKKpKxSSSsgooooGFFFFABWX4e/5A6/9d5//Rr1qVl+Hv8AkDr/ANd5/wD0a9S/iX9diH8a9H+hqUUUVRYUUUUAFFFFABRRRQBXvbGC/t/JnUkZ3KynDI3Yqexqhb30+nzpZ6mwYOdsF3jCyf7Lf3W/Q/pWvUc8EV1A8E8ayROMMrDIIqWuqIlHW63JKKxVln0IhLl3n03OEnbl4PZ/Vf8Aa7d/Wreqaimn2cd6WBtxKgkYdNjHbn8yDRzK2oc6s2+hfoooqiwooooAKKKKACiiigAooooAKKKKACiiigDK8Sf8gC6/4B/6GKKPEn/IAuv+Af8AoYooA1aKrX7tHb7kYqdw5FZn2qf/AJ6v+dY1Kyg7NHNVxMacuVo3KKw/tU//AD1f86PtU/8Az1f86j61HsZ/XodjcorD+1T/APPV/wA6PtU//PV/zo+tR7B9eh2Nyub8S+LE8P3EFutobiaRd5BfYFXOOuDz1qx9qn/56v8AnWbqemWusGNr1GkaPhWDEED0yO1RPE3Xu7mdXG3jaGjNTw9i+tV1mU77i7XI9Ikzwi+w7nua2q5+B2tYI4IGMcUahVVegAq7YTyyXG15GYbTwTV066do2NKOKi7QtqadFFFdJ2hRVa/do7fcjFTuHIrM+1T/APPV/wA6xqVlB2aOariY05crRuUVh/ap/wDnq/50fap/+er/AJ1H1qPYz+vQ7F3WtSGkaPc35jMnkrkJnGSSAP51z3gbXX1GK4sZYFRoSZQynIIdySPwJrRlleeJ4pWLxuNrK3II9DVawtYNLR0solgDnLbOM/Ws3iLzTWxjLF3qKS2OoorD+1T/APPV/wA6PtU//PV/zrT61HsbfXodjcorD+1T/wDPV/zqzYTyyXG15GYbTwTTjiIydrFQxcZyUUtzToooroOsKKKKACiiqlzqdlZ58+5RSP4c5P5Ck2luJtJXYX1/bWUZNyJShHOyB5Bj32g1wGv+IdKbSrnT9NufNtZk2/ZjEymJs5BUkdM9j07eldg/iFW/49bKeX3b5AfxNZOoQNq4P2nTLAZ/jcEuP+BCuWtUTVkzgxFaMlaMl9z/ADLvgrV/7U0CNJGzcW2IpM9SP4T+I/UGujrgtM0GXSbqSa01CSISrteNVyCO3JNahhuH+/qN4fYSYFKGJtFJrUVLG8sEpLU6miuUNkD964uW+sppPsEX9+b/AL+Gq+tLsV9eX8p1lFcn9hQdJpx9JTThbSr9y+vF+ktH1pdg+vL+U6qiuYB1CP8A1epS/wDA1DVIt/q8X/LS2m/30K/yqliYdS1jab3TOjorCTXriP8A4+NPfH96Jw36Vbg13T522Gbyn/uyjaf8K0jVhLZm0cRTlszSopFYMoZSCD0Ipa0NgooooAyvEn/IAuv+Af8AoYoo8Sf8gC6/4B/6GKKALWpf8ev/AAIVkVr6l/x6/wDAhWRXBifjPKxn8QKKKKwOQKKytc8P2XiGCKC/a4MEbFjFFMUV+P4scmud8IafHpvijWbXSJZToUKIgR5C6JcfxKhOegxn3PtTsO2h29FFFIQVb03/AI+v+AmqlW9N/wCPr/gJq6Xxo1ofxImvRRRXpntlTUv+PX/gQrIrX1L/AI9f+BCsiuDE/GeVjP4gUUUVgcgUVm65qbaZp+6FBLeTOIbWI/8ALSVugPsOST2ANcx4Fsjp3iHxTavM88iTwGSV+ruY8s34kk4p20HbS53NFFFIQVb03/j6/wCAmqlW9N/4+v8AgJq6Xxo1ofxImvRRRXpnthWff6vBZMIlUzXB6RJ1/H0pdXvWsbLMQBmkYRx59T3rGt7cQKSSXlbl5D1Y1z1q3JotzkxOJ9n7sdxZZb++5uLgwxn/AJZQnH5mkitIIOY4lB/vHk/nU1FcUpOTuzzJSlJ3k7hRXN6x410vSr1tOjS5v9SX/lzs4jI4yMjPYdR3qOPxDrNt4e1TWdW0VLNbaMywWvngu6gZO5gCB27UWYuVnUUVxmieN9Q1pbG5j8M3Uem3LLG1356kIxOOFwCyg8buKqTfEpyl5fWHh+6vNGs5fLmvlmVeR1KoRkjkd+/OKOVj5Wd9RXJ6p46t7dtLt9JsZdVvtTi8+3gjcR/u8Z3Mx6dD+R6Umm+M7nVrHUktNEl/tvT3VJdNluFQnJxkSEYxjJ6dvcUWYuVnW0V5b4C8Q+J7nUNRik0ue+gbUSk0suoKfsQJ5UK3LBRz8uM4rorjxdqmi3k6a54fuVsRI3l31l++TZnguo5Xjr/KhxY3Fp2OwoqlperWGtWK3unXKXFuxwHXI59CDyDVwkKpZiAAMkntSJFpskUcq7ZEVh6MM1xVn4+vdWkmn0fwxeX2lxSGNrtZlRmx1KoeW/A129DVhtNblZLaS2bfZXEkB/u53IfqDWha660brFqMYiJOFmTlD9fSoKR0WRCrqGU8EGtIVZQ2NKdadPZnRAggEEEHoRS1gaPcPa3n9nuxaF1LQEnlcdVrfrvpzU43R69KoqkeZGV4k/5AF1/wD/0MUUeJP+QBdf8AAP8A0MUVZoWtS/49f+BCsitfUv8Aj1/4EKyK4MT8Z5WM/iBRRRWByHNeM28QtpsVv4fs2naZ9tw0c6ROkffazcAnpnBx6UeFZtVjRdPufCq6NYwRfumW+SbJyOMKM5OScn+tdLRTvpYd9LBRRRSEFW9N/wCPr/gJqpVvTf8Aj6/4Caul8aNaH8SJr0UUV6Z7ZU1L/j1/4EKyK19S/wCPX/gQrIrgxPxnlYz+IFFFFYHIYfiDwxD4gns5n1HUrGW03+W9jOIj8wAOTg9h+prE8K+D7zRfFOrXtxf6nLAzIIGuLoSC5GzBaQDklTwM4rt6Kd3sPmdrBRRRSEFW9N/4+v8AgJqpVvTf+Pr/AICaul8aNaH8SJr0UUV6Z7ZkeIYnNpFcIpb7PIHYD+73qmjq6B1IKkZBFdEQGBBAIPBBrAutIuLJ2lsB5kJOWtyeV/3T/SuSvSbfMjgxdCUnzxG0VBFdxStsyUkHWNxhhU9ch5xzmseCtM1W9bUYnubDUmx/plnKY3OBgZ7HoO1UrrQ/ELeENb0y71BNWmmgZLR/LWJzkHhu3pzmuwop3Y+ZmL4S0+40zwlpljeReVcQwBJE3A4PfkcVwkXhnxbo2gan4UsNOtbqxu5G8q/a4CeWjYB3IeScDt0969VoouNSaPObjwfq+g6hoGraJFFqM2nWf2Oe3kkEXmD5vmUngcsf061q+D9A1S21rWPEGsxRW93qLKFto33iJF9WHBPTp6e9djRRzMHJtHn3hvTfEnhjXtSt10RLzTr+/M32xbtE8pGbklDycA5x7VpXHhLVdZvJn1zxDctZGRvLsbL9ymzPAdhy3HX+ddfRRcOZ7mXBpcOg6DNa6DZRRtHG7QQ54eTHGSTzk45J/GmaI2rX+gAeILSK1vpA6SxQNlQuSBg7m7e9a9FK4rnnXhzT/GPhKzfQ7bSLO+tRMzQXzXQjVVY/xJ94/h+tei0UU27g3cKKZLNHCu6R1Ue5pkEV5qZxbo0Fues7jBI/2RRGLk7IcYyk7RRJYobrXImTlLVWLt2yRgCukqvZWUNhbiGFcDqSerH1NWK9GlDkjY9ihS9lCz3MrxJ/yALr/gH/AKGKKPEn/IAuv+Af+hiitDYtal/x6/8AAhWRXQOiyLtdQw9DUf2WD/nkn5VzVaLnK6Zx18NKpPmTMOitz7LB/wA8k/Kj7LB/zyT8qz+qy7mH1Gfcw6K3PssH/PJPyo+ywf8APJPyo+qy7h9Rn3MOitz7LB/zyT8qPssH/PJPyo+qy7h9Rn3MOrem/wDH1/wE1o/ZYP8Ankn5U5IIo23JGqn1AqoYeUZJ3Lp4SUJqTexJRRRXWegVNS/49f8AgQrIroHRZF2uoYehqP7LB/zyT8q5qtFzldM46+GlUnzJmHRW59lg/wCeSflR9lg/55J+VZ/VZdzD6jPuYdFbn2WD/nkn5UfZYP8Ankn5UfVZdw+oz7mHRW59lg/55J+VH2WD/nkn5UfVZdw+oz7mHVvTf+Pr/gJrR+ywf88k/KnJBFG25I1U+oFVDDyjJO5dPCShNSb2JKKKK6z0AooooArXen2t8uLiBX9D0I/GsyTQZoubO9YDtHMNw/PrW5RUSpxlujKdGE/iRzTwapB/rLNZR/ehf+h5qBr5IzieKeE/9NIz/SusorF4WPRnNLAxfws5Vb61bpcRj6nH86lWWNvuyKfoa3pLK1l/1ltC31QGqz6Hpj/es4/wyP5Vm8LLozN4GXRmbRUemaLYXst3c+Ti2MvlwKHOMLwW692z+AFaH/COab/zyf8A7+GpWHm1czWDqNXVinSF1X7zAfU1YuvDNjLaSpCjJKyEI+8na2ODTdJ0zS7zT4bg2KLIRtkUkna44YdfUGj6vK9h/U6l7NoqNd2yfenjH/AhUf8AaNuTtRmkb0RCa6JNMsY/uWkA99gNWFRUGEUKPQDFWsK+rNFgX1kcyhvp/wDUadN9ZSEFWI9H1Gf/AF91HAv92Jdx/M10FFaRw0FvqbRwVNb6mda6HZWzCQxmaX/npMdxrRoordRUdEdMYRirRVgoooplGV4k/wCQBdf8A/8AQxRR4k/5AF1/wD/0MUUAatFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFZ+s3Mlvp5SA4ubhhBD7M3GfwGT+FaFZKf6f4hZ+sNgmxfQyuOfyXA/4EamW1iJvSy6mhaW0dnaQ20QxHEgRfoKmooqi0raBWTb/wCga9PbdIb1ftEftIMBx+I2n861qzdbhdrIXUC5uLNxPGB1bH3l/FcipltfsRPa/Y0qKjgmjuII54m3RyKGU+oIyKkqiwooooAKKKKACiiigDK8Sf8AIAuv+Af+hiijxJ/yALr/AIB/6GKKANWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK99dpYWM104ysSFsep7D8TxWLpGr6bZ3qaDPd41l1M8sTxsu9m+ZiGIwfwPQe1XL//AE3V7SwHMcX+lT/gcIPxbn/gNcD8RQPE3iSw0HRIBLrFuGkluVbb5KY+6SPwPtkDuaxqTcfeRzVqjj7y6aevc9A0rxFpWuT3MWm3X2hrZtsrLG4UH0DEYPTsTWpXC/C7ULI6A2jpbC01GxcrdwN95mzjf7+ntjHTFd1V05c0U2aUZucFJhRRRVmpk6P/AKJNdaW3At28yH3ifJH5HcPwFP0vxDpetXF3BYXXmzWj7J0MbIUbJGMMB3B/Kmav/od1aaoOFibyZ/8Arm5Az+DbT+deb+OZLrwT4tn1qwUiDWLSSF8cBZcY3fXO1v8AvqsJTdNeS/I5alV0V5Lf06f5HpekeIdL177R/Zl19oFu+yUiNlAbngEgA9O2a065j4f6H/YPg+zgdNtxMPtE3rubnB+gwPwrp61g24py3N6Tk4Jy3CiiiqLCiiigDK8Sf8gC6/4B/wChiijxJ/yALr/gH/oYooA1aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApGZUQuxAVRkk9hS1la2xmig02MkPevsYjqIxy5/Lj/gVKTsrkyfKrhoatNDNqUgIkvX8xQeojHCD8ufxNatIqhFCqAFAwAOwpaErKwRXKrBRRRTKCiiigCO4gjuraW3lG6OVCjD2IxXDf8IpdeJb2Fta1l5rPTpwv9niBVG5ABkvnLBh83I/iIFd7WTN/oHiCKbpDfL5L+gkXJU/iMj8BWc4p2uY1YRlZy2NaiiitDYKKKKACiiigDK8Sf8gC6/4B/wChiijxJ/yALr/gH/oYooA1aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooqs9/DG7I27IODxUyko7kynGGsnYs0VU/tKD/b/Kj+0oP9v8qn2sO5Ht6f8AMW6Kqf2lB/t/lR/aUH+3+VHtYdw9vT/mLLusaF3YKo5LMcAVlacRf6pd6kCGiT/RrcjoQDl2H1bj/gNZfjCGTWdGW3smPmLKHMbHAcAHjP4g/hTfB0Eui6Q8F6SHeUusanIQYAxn8M1m60XO3QweJi6qj07nW0VU/tKD/b/Kj+0oP9v8q09rDub+3p/zFuimo4kRXXoRkU6tDVO+oUUVWe/hjdkbdkHB4qZSUdyZTjDWTsWap6rZtfadLCh2zDDxN/ddTlT+YFL/AGlB/t/lUc99FLbyxo7ozIVDAfdJHWodSDVrmUq1Jpq4/TdQi1KyjmRl3lQZIweUbuCPrmrleb+E9FvtJ14XV1tjhRGUlGz5uf6d+a73+0oP9v8AKpp11KN5aGdHFRlC89GW6Kqf2lB/t/lR/aUH+3+VX7WHc29vT/mLdFVP7Sg/2/yo/tKD/b/Kj2sO4e3p/wAxV8Sf8gC6/wCAf+hiim+IXEnhy4dehCEf99CitDVO+pr0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWHdf8AH1L/ALxrcrDuv+PqX/eNc2K+FHFjvgRDRRRXEeYFFFcjN4zvZtQuodF8O3WqWtnIYri5SZYxvH3ggP3yPahK40rnXUUincobBGRnB6iloEFFFFAG5a/8esX+6KmqG1/49Yv90VNXqQ+FHu0/gQVh3X/H1L/vGtysO6/4+pf941hivhRy474EQ0UUVxHmBRRXE3Pj65U3t1Z+HLu70iykeOe9WZFxs+8VQ8sB65/KhK40mztqKitbmK8tIbqBt0M0ayIfVSMj9DUtAgooooAn1r/kVZf91P8A0IUUa1/yKsv+6n/oQor1IfCj3afwI26KKKosKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsO6/4+pf8AeNblYd1/x9S/7xrmxXwo4sd8CIaKKK4jzAryHR9OvB4Q1K//AOEmu9PudMmucW8MgWNXVmb96v8AEWJ79sV69XP3/gjw3qepnUbzSYZbokFnJYBj/tKDg/iKadiouxoaDezal4e06+uFCzXFtHK4AwNzKCa0KRVCqFUAKBgAdBS0iQooooA3LX/j1i/3RU1Q2v8Ax6xf7oqavUh8KPdp/AgrDuv+PqX/AHjW5WHdf8fUv+8awxXwo5cd8CIaKKK4jzAryL7Pfan4d1zVbDV4LDR3mneXSmGd4BO4NJndGXx91eOa9drnbvwH4XvtRa/uNHge4Zt7NlgGPqVBwfxFNOxUXY0tDuYr3QNOuoIPIhlto3SL+4pUYX8OlaFIiLGioihVUYCgYAHpS0iQooooAn1r/kVZf91P/QhRRrX/ACKsv+6n/oQor1IfCj3afwI26KKKosKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsO6/4+pf941uVmT2E0k7uu3BORzXPiIuSVjkxcJTilFXKFFW/wCzZ/8AY/Oj+zZ/9j865PZT7Hn+wqfylSirf9mz/wCx+dH9mz/7H50eyn2D2FT+UqUVb/s2f/Y/Oj+zZ/8AY/Oj2U+wewqfylSirf8AZs/+x+dH9mz/AOx+dHsp9g9hU/lNG1/49Yv90VNUcCGOBEbqBg1JXox+FHswVopBWHdf8fUv+8a3KzJ7CaSd3XbgnI5rHERckrHNi4SnFKKuUKKt/wBmz/7H50f2bP8A7H51yeyn2PP9hU/lKlFW/wCzZ/8AY/Oj+zZ/9j86PZT7B7Cp/KVKKt/2bP8A7H50f2bP/sfnR7KfYPYVP5SpRVv+zZ/9j86P7Nn/ANj86PZT7B7Cp/KR61/yKsv+6n/oQop2vIY/DMyN1AQH/voUV6MfhR7MFaKRzH/CSat/z9/+Q0/wo/4STVv+fv8A8hp/hRRVFB/wkmrf8/f/AJDT/Cj/AISTVv8An7/8hp/hRRQAf8JJq3/P3/5DT/Cj/hJNW/5+/wDyGn+FFFAB/wAJJq3/AD9/+Q0/wo/4STVv+fv/AMhp/hRRQAf8JJq3/P3/AOQ0/wAKP+Ek1b/n7/8AIaf4UUUAH/CSat/z9/8AkNP8KP8AhJNW/wCfv/yGn+FFFAB/wkmrf8/f/kNP8KP+Ek1b/n7/APIaf4UUUAH/AAkmrf8AP3/5DT/Cj/hJNW/5+/8AyGn+FFFAB/wkmrf8/f8A5DT/AAo/4STVv+fv/wAhp/hRRQAf8JJq3/P3/wCQ0/wo/wCEk1b/AJ+//Iaf4UUUAH/CSat/z9/+Q0/wo/4STVv+fv8A8hp/hRRQAf8ACSat/wA/f/kNP8KP+Ek1b/n7/wDIaf4UUUAH/CSat/z9/wDkNP8ACj/hJNW/5+//ACGn+FFFAB/wkmrf8/f/AJDT/Cj/AISTVv8An7/8hp/hRRQAf8JJq3/P3/5DT/Cj/hJNW/5+/wDyGn+FFFAB/wAJJq3/AD9/+Q0/wo/4STVv+fv/AMhp/hRRQAf8JJq3/P3/AOQ0/wAKP+Ek1b/n7/8AIaf4UUUAH/CSat/z9/8AkNP8KP8AhJNW/wCfv/yGn+FFFAB/wkmrf8/f/kNP8KP+Ek1b/n7/APIaf4UUUAH/AAkmrf8AP3/5DT/Cj/hJNW/5+/8AyGn+FFFAB/wkmrf8/f8A5DT/AAo/4STVv+fv/wAhp/hRRQAf8JJq3/P3/wCQ0/wo/wCEk1b/AJ+//Iaf4UUUAZ+t+IdVk0idWusqduR5a/3h7UUUUAf/2Q==", "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "%3\n", "\n", "\n", "\n", "node_7f59c1599910\n", "\n", "<root>\n", "\n", "\n", "\n", "value__node_7f59c1599910__a\n", "\n", "2\n", "\n", "\n", "\n", "node_7f59c1599910->value__node_7f59c1599910__a\n", "\n", "\n", "a\n", "\n", "\n", "\n", "value__node_7f59c1599910__b\n", "\n", "4\n", "\n", "\n", "\n", "node_7f59c1599910->value__node_7f59c1599910__b\n", "\n", "\n", "b\n", "\n", "\n", "\n", "node_7f59c1599880\n", "\n", "<root>.c\n", "\n", "\n", "\n", "node_7f59c1599910->node_7f59c1599880\n", "\n", "\n", "c\n", "\n", "\n", "\n", "value__node_7f59c1599880__x\n", "\n", "6\n", "\n", "\n", "\n", "node_7f59c1599880->value__node_7f59c1599880__x\n", "\n", "\n", "x\n", "\n", "\n", "\n", "value__node_7f59c1599880__y\n", "\n", "8\n", "\n", "\n", "\n", "node_7f59c1599880->value__node_7f59c1599880__y\n", "\n", "\n", "y\n", "\n", "\n", "\n" ], "text/plain": [ "\n", "├── 'a' --> 2\n", "├── 'b' --> 4\n", "└── 'c' --> \n", " ├── 'x' --> 6\n", " └── 'y' --> 8" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mapping(tv, lambda x: x * 2)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Here is the performance test." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:15.720551Z", "iopub.status.busy": "2023-10-22T14:55:15.719948Z", "iopub.status.idle": "2023-10-22T14:55:17.895185Z", "shell.execute_reply": "2023-10-22T14:55:17.894117Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.65 µs ± 51.1 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit mapping(tv, lambda x: x * 2)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "In order to support the cased that the mapped value is related to both path and value of each node, we can use the 'path mapping mode' by simply use the second parameter of the mapping function." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:17.900363Z", "iopub.status.busy": "2023-10-22T14:55:17.900068Z", "iopub.status.idle": "2023-10-22T14:55:18.044048Z", "shell.execute_reply": "2023-10-22T14:55:18.043272Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQEAYABgAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgBIwSaAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqGe6gtlzNMkY/2mxWTdeKbGDIiDyt7fKP15/SplOMd2RKpCHxM3KRmVFLMwVR1JOK5GTxDql5xaW/lqejBf6niqzWF/eNuvLs/TJY/r0rCWJittTlnjoL4Vc6W51/TrbOZ/MI7R8/r0rKk8XjzP3NrmMdSW5/TpVeLSLSM5ZTI3q5z+lXFRUXaihV9AMVjLETe2hzSxlV7aFm18UWE+BJuhb3GR+n+Fa0NzBcruhmSQf7LZrmZtPtZ+XhXPqvB/Sqb6OyNutrl1I6Buf1FVHEyXxIuGOmviVzt6K42PUNcsPvZnQf8D/+vV628XRE7bqBkbuVP9DW0cRB+R0wxlKW7sdJRVO31axusCK5Tcf4WO0/rVytk09jpUk9UFFFFMYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFMldkjLJG0jDoqkAn8653Ude1G3JVbEwDszjP69KiU1HczqVIwV2dLVK41axtc+Zcpkfwqdx/SuJfUbu/kK3V6Y1P8Aezj8hxV230q0dQ5lM/8AwLj9K5pYr+VHFPH9II0bjxdEDstbdnbsW/wFUZL/AFy/4BMCH/gH/wBersUEUIxFGqD/AGRipKxlWnLdnNPEVZ7syk0cu265uGcnqF4/WrkNhawcpCufU8n9as1z/jH/AISP+xh/wjPl/a9/z7tu7Zg527uM5x1rO12YpXZuSTwwlBLKkZdgqBmA3H0Hqakry/wz/wAI5/wkFt/bR1f/AISTd+6/tfdnd/0zx8uPTP4VBZeHrTxF8UvFEGoNM1pGI2aBJGQSHAxuKkEgc8VXKXynq9FeW63pkTeNPD3hG9urg6ELZ5FR5ivnPl8KzZ5wAoH/ANespdSvtAsPG+naLdTSWNh5f2Z95cwb2CuFPsC30259aOUOQ9nrH1HxJZ6Zrum6RNFO1xqBYRMigouOu4kg/kDXmM9jZ+G4fCGraFdzNqV/LEtwPPL/AGkMBu3Ln1OPx9RVvxh4V0NfiNoMRswItUmle8Blf96xOeueOT2xRyoairnq7TwrMkLSoJXBKoWG5gOpA70SwRTDEsauPcVw3ijS/BOjaRp+n6jDLCId/wBgS3aRpgS2W2HJPUjrxTPBX/CVf2ofP+3f8I/sPl/2tt+057dOfzpW0uTy6XOul0a3bmJ3iPscj8jTY01ew/49rjeo/hDY/Q8VqUUk2thJuOsXYrReKbq3IW9tfxwVP+BrWtvEWnXOMymI+jj+vSqJAYEMAQexqnNpdnJlvL8s/wB5Dj/61bRxE1vqdEMXVjvqdakiSrujdXX1U5FOrzyX/QH3WuoZf+6uc/mK0LDxFqm4IY/P9ivP6c1vDExejR1U8bGTs0dnRVSyup7lN09m9uf9pgc/1/SrddCd9TsTuroKKKKYwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQgEYIyD2NLRQBn3OiafdZ326qT3T5f/rVkT+Etrb7O5Kt2DcH8x/hXT0VnKlCW6MZ0Kc90cXJba3YfejMyDvjd+o5/Omx60oOJ4HQ9yvIrs5ZY4YzJLIsaDqznAH41jXOoabfkrb2Umov03Qx/KP+2hwP1rnnh4rZnJUwcF8MrFKG8t7j/VTKx9M4P5VPVCTwrd3zl8w6ch6ICZn/AD4A/Wlk0TWLLm3m81B2Bz+h/pWLozXQ5nh6q1sWpIIZihliSQowZCyg7T6j0NU7XQ9OstVvNUt7fZeXmBPJvY78dOCcD8BUP9p3Vs2y7tCD7AqfyNWYtVtJePM2N6OMf/WrPYxvbRkOs+HtJ8QwJDqtlHcohym4kMvrhgQR+dLpvh/SdI059PsbCGK1kz5keNwfIwd2cluOOa0QQwBUgg9xS0XHdnP6b4I8N6RqH26x0qKK5GSrlmbb/ugkgfhVvW/DekeIoo49WskuViJKEsylc9cFSD2H5Vq1BNe21v8A6yZQfTOT+VFwu9yvpuiabpFpb2tjaJFFbBlhzlmQMdzAM2TyT61frLk1lScQQO57FuBTJIvEF1HvgtW291UhDj2LdaaTlsgSlLZXNSSWOJd0jqg9WOKpS6xbJkR75T/sjj86j03SbK8n8u7vHS6/it5FKyf+PdfwzXT22i6fa42W6sw/if5v51rChKWp0U8JOet7HLpc6nfHFpa7R/eA3Y/HpVqPwzf3RBvbraP7ud36Dj9a60AAYAwKK6I4aC31OuGCpr4tTHtfDOn2+CytK3+0cD8hWpFBFAu2KNI19FGKkoraMYx2R0xpxh8KCiiiqLCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqvdX1rYpvuriKFe29gM/T1ql/bMlxxp+n3FwD0kkHlR/m3J/AGk5JEucVoatRXFzBaxmS4mjiQfxSMFH61n/ZNWuv8Aj5v0tUP/ACztEyf++2/oBUtvomn28gl8jzp/+es7GR/zbOPwpXb2QuaT2X3kX9uJPxp9nc3h7OqbI/8AvtsD8s0eTrN3/rbmCxQ/wQL5j/8AfTcf+O1q0Ucre7Dkb+J/oZkWg2CyCWdHu5h0kunMhH0B4H4CtIAKAAAAOgFLRTSS2KUVHZBRRRTGNkjSVdsiK6nswyKy7nw7p1yDiIxN6of6HitaipcVLdEyhGXxI5OXwtdW5LWV1+GSp/wqlLLrFnNFbSwFpJiVjPl5yQCT046A13NZepf8hjRv+u8n/op6wnh4brQ5KuDp2vHQw49D1e95uZvKQ9i2P0H9a0rXwpZQ4MzvKfT7o/x/Wt6irjQhHoaQwtKPS5Bb2Vtaj9xAie4HP51PRRWyVjoSS2ILqytr6LyrqCOVOwcZx7j0qh/Z9/Y86demSMf8u92S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bFfk4OOxxjPvmuM/4Ra3vPEFzrPhrxDLpd7Pk3MPkB8knJyjYIyeec89K7PTLSax0+K3uLyW8mXJeeUAM5JJ6DgDnAHYAVnSUrtv/gGNBSu3LXzvp9xbooorY6QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKZLNFBGZJpEjQdWdgAPxNAD6Kyjr0Ex22EFxfN0zCmE/77bC/rRs1u7+9Jb2EZ7RjzpPzOFH5Gp5101I9ontqabusaF3YKo5JJwBWa2v2bMUtBLfSDqLVN4H1b7o/OhNBsi4ku/NvZByGun3gfRfuj8q01VUUKihVHQAYAo95+Qe+/Iy92t3f3UtrCM93PnSfkMKPzNA0G3lIa/mnvm64nf5P++Bhf0rVoo5V11D2ae+oyKGKCMRwxpGg6KigAfgKfRRVFhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFZepf8hjRv+u8n/op61Ky9S/5DGjf9d5P/RT1MtvuIqbfNfmalFFFUWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBUvNMs7/AAbiBWdfuyD5XX6MORVT7Pq1h/x7XC30I/5ZXJ2yD6OOD+I/GtaipcVuQ4Ju/UzYNbtXlEFyHs7g9Irgbd3+6ejfga0qjnt4bqIxTxJLG3VXUEGs3+yZ7PnS7x4VH/LvPmSL6DPK/gfwo95eYXkt9TWorJ/tl7T5dVtHtf8Apun7yE/8CHK/iBWnFLHPGskUiyRtyGQ5B/GmpJjUk9h9FFFMoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiq1+7R2+5GKncORWZ9qn/AOer/nWNSsoOzRzV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XeZ/3ij/AGHPX6N+da9FJxT1JcE9epTstTtr8skbMkyffgkG2RPqD/PpVyql7pttfhTMhEif6uVDtdD7MORVPz9S0vi6Vr+1H/LaJf3qD/aUfe+o/KldrcnmcfiNeiobW7t72ATW0ySxnup/Q+h9qmqtzRO+qCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqOe4htYWmnlSKNerOcAVmfbb/U+NPj+zW5/5ep05Yf7CH+ZwPY0nJImUktOpdvdRtdPRWuJMMxwiKNzufRVHJrntX19bVrf+17t9Gs7ltkeEZpJD6M4BWPr6568it6y0u2snaUbpblhh7iU7nb8ew9hgVy3xO1Kwg8NNpk9uLu9viI7SAfe354cd+M/jnHc1nUbUW2Y1nJQcm7f1/X/BNq31XQNN1dNAtpVW/kXf5McbuTkZyzAEZxz8x9PWtyvJvh6n/CK+KbrRddtxFqt3GjW90z7hIuP9WD+H4kY7CvWaKUuaN2PDzc4Xat5dgooorU3CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAzrrSIpZzdWsjWl4es0X8X+8vRh9fzqEarPYER6vCI1zgXcWTEf97un48e9a9IQGBBAIPBB71PL1RDh1joCsroHRgykZBByCKWsltJks2MukTC3JOWtnyYX/D+E+4/KpLfWEadbW9iazujwqSHKv/uN0b6dfajm7gp20loJqHiHS9K1Czsb668m4vG2wKY2Ic5AxuAwOSOp70XviHS9P1a00u5utl7d/wCpiEbMW5x1AIA+uOlYXxJ0JtZ8KSzQA/bLA/aYSvXj7wH4c/UCua8AS3HjDxjc+Kb6PAtLdLeIdhIVwxH/AI8f+B1lKpJT5O/9MwnWnGr7NLe1vTqeq0UUVudQUUUU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", "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "%3\n", "\n", "\n", "\n", "node_7f59c1599ca0\n", "\n", "<root>\n", "\n", "\n", "\n", "value__node_7f59c1599ca0__a\n", "\n", "('path', ('a',), 'value', 1)\n", "\n", "\n", "\n", "node_7f59c1599ca0->value__node_7f59c1599ca0__a\n", "\n", "\n", "a\n", "\n", "\n", "\n", "value__node_7f59c1599ca0__b\n", "\n", "('path', ('b',), 'value', 2)\n", "\n", "\n", "\n", "node_7f59c1599ca0->value__node_7f59c1599ca0__b\n", "\n", "\n", "b\n", "\n", "\n", "\n", "node_7f59c1599f10\n", "\n", "<root>.c\n", "\n", "\n", "\n", "node_7f59c1599ca0->node_7f59c1599f10\n", "\n", "\n", "c\n", "\n", "\n", "\n", "value__node_7f59c1599f10__x\n", "\n", "('path', ('c', 'x'), 'value', 3)\n", "\n", "\n", "\n", "node_7f59c1599f10->value__node_7f59c1599f10__x\n", "\n", "\n", "x\n", "\n", "\n", "\n", "value__node_7f59c1599f10__y\n", "\n", "('path', ('c', 'y'), 'value', 4)\n", "\n", "\n", "\n", "node_7f59c1599f10->value__node_7f59c1599f10__y\n", "\n", "\n", "y\n", "\n", "\n", "\n" ], "text/plain": [ "\n", "├── 'a' --> ('path', ('a',), 'value', 1)\n", "├── 'b' --> ('path', ('b',), 'value', 2)\n", "└── 'c' --> \n", " ├── 'x' --> ('path', ('c', 'x'), 'value', 3)\n", " └── 'y' --> ('path', ('c', 'y'), 'value', 4)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mapping(tv, lambda x, p: ('path', p, 'value', x))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "And here is the performance" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:18.048777Z", "iopub.status.busy": "2023-10-22T14:55:18.048048Z", "iopub.status.idle": "2023-10-22T14:55:20.222235Z", "shell.execute_reply": "2023-10-22T14:55:20.221514Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.68 µs ± 19.6 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit mapping(tv, lambda x, p: ('path', p, 'value', x))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### DM-Tree's mapping" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "In DM-Tree, mapping operation is supported by [map_structure](https://tree.readthedocs.io/en/latest/api.html#tree.map_structure) function." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:20.225997Z", "iopub.status.busy": "2023-10-22T14:55:20.225539Z", "iopub.status.idle": "2023-10-22T14:55:20.232347Z", "shell.execute_reply": "2023-10-22T14:55:20.231632Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "from tree import map_structure" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:20.236229Z", "iopub.status.busy": "2023-10-22T14:55:20.235574Z", "iopub.status.idle": "2023-10-22T14:55:20.243999Z", "shell.execute_reply": "2023-10-22T14:55:20.243231Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'a': 2, 'b': 4, 'c': {'x': 6, 'y': 8}}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_structure(lambda x: x * 2, origin)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "This is the performance of `map_structure`, obviously much slower than `mapping` in TreeValue." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:20.247859Z", "iopub.status.busy": "2023-10-22T14:55:20.247588Z", "iopub.status.idle": "2023-10-22T14:55:35.238871Z", "shell.execute_reply": "2023-10-22T14:55:35.237750Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "18.5 µs ± 236 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit map_structure(lambda x: x * 2, origin)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "To supported the second situation in the last section, [map_structure_with_path](https://tree.readthedocs.io/en/latest/api.html#tree.map_structure_with_path) can be used." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:35.244236Z", "iopub.status.busy": "2023-10-22T14:55:35.243403Z", "iopub.status.idle": "2023-10-22T14:55:35.249179Z", "shell.execute_reply": "2023-10-22T14:55:35.248506Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "from tree import map_structure_with_path" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:35.252920Z", "iopub.status.busy": "2023-10-22T14:55:35.252225Z", "iopub.status.idle": "2023-10-22T14:55:35.262646Z", "shell.execute_reply": "2023-10-22T14:55:35.261640Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'a': ('path', ('a',), 'value', 1),\n", " 'b': ('path', ('b',), 'value', 2),\n", " 'c': {'x': ('path', ('c', 'x'), 'value', 3),\n", " 'y': ('path', ('c', 'y'), 'value', 4)}}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_structure_with_path(lambda path, x: ('path', path, 'value', x), origin)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Here is the performance." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:35.267491Z", "iopub.status.busy": "2023-10-22T14:55:35.266944Z", "iopub.status.idle": "2023-10-22T14:55:38.588413Z", "shell.execute_reply": "2023-10-22T14:55:38.586990Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "40.9 µs ± 944 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n" ] } ], "source": [ "%timeit map_structure_with_path(lambda path, x: ('path', path, 'value', x), origin)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "## Flatten and Unflatten" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "In tree operations, flatten is often used to linearly expand the tree structure for operations such as parallel processing. Based on flatten, unflatten is its inverse operation, which can recover the tree structure from the linear data." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### TreeValue's Performance" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "In TreeValue, flatten and unflatten are provided, which usage are simple." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:38.592987Z", "iopub.status.busy": "2023-10-22T14:55:38.592266Z", "iopub.status.idle": "2023-10-22T14:55:38.736421Z", "shell.execute_reply": "2023-10-22T14:55:38.735350Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/jpeg": "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", "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "%3\n", "\n", "\n", "\n", "node_7f5aa0eed580\n", "\n", "<root>\n", "\n", "\n", "\n", "value__node_7f5aa0eed580__a\n", "\n", "1\n", "\n", "\n", "\n", "node_7f5aa0eed580->value__node_7f5aa0eed580__a\n", "\n", "\n", "a\n", "\n", "\n", "\n", "value__node_7f5aa0eed580__b\n", "\n", "2\n", "\n", "\n", "\n", "node_7f5aa0eed580->value__node_7f5aa0eed580__b\n", "\n", "\n", "b\n", "\n", "\n", "\n", "node_7f59c1579b50\n", "\n", "<root>.c\n", "\n", "\n", "\n", "node_7f5aa0eed580->node_7f59c1579b50\n", "\n", "\n", "c\n", "\n", "\n", "\n", "value__node_7f59c1579b50__x\n", "\n", "3\n", "\n", "\n", "\n", "node_7f59c1579b50->value__node_7f59c1579b50__x\n", "\n", "\n", "x\n", "\n", "\n", "\n", "value__node_7f59c1579b50__y\n", "\n", "4\n", "\n", "\n", "\n", "node_7f59c1579b50->value__node_7f59c1579b50__y\n", "\n", "\n", "y\n", "\n", "\n", "\n" ], "text/plain": [ "\n", "├── 'a' --> 1\n", "├── 'b' --> 2\n", "└── 'c' --> \n", " ├── 'x' --> 3\n", " └── 'y' --> 4" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from treevalue import FastTreeValue, flatten, unflatten\n", "\n", "origin_tree = FastTreeValue(origin)\n", "origin_tree" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:38.740920Z", "iopub.status.busy": "2023-10-22T14:55:38.740152Z", "iopub.status.idle": "2023-10-22T14:55:38.746259Z", "shell.execute_reply": "2023-10-22T14:55:38.745598Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "[(('a',), 1), (('b',), 2), (('c', 'x'), 3), (('c', 'y'), 4)]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "flatted = flatten(origin_tree)\n", "flatted" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Here is the performance of `flatten`" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:38.750074Z", "iopub.status.busy": "2023-10-22T14:55:38.749541Z", "iopub.status.idle": "2023-10-22T14:55:45.570495Z", "shell.execute_reply": "2023-10-22T14:55:45.569270Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "838 ns ± 10.2 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n" ] } ], "source": [ "%timeit flatten(origin_tree)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "The tree can be re-created from `flatted` with function `unflatten`." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:45.575098Z", "iopub.status.busy": "2023-10-22T14:55:45.574522Z", "iopub.status.idle": "2023-10-22T14:55:45.692329Z", "shell.execute_reply": "2023-10-22T14:55:45.691341Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/jpeg": "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", "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "%3\n", "\n", "\n", "\n", "node_7f59c15b7610\n", "\n", "<root>\n", "\n", "\n", "\n", "value__node_7f59c15b7610__a\n", "\n", "1\n", "\n", "\n", "\n", "node_7f59c15b7610->value__node_7f59c15b7610__a\n", "\n", "\n", "a\n", "\n", "\n", "\n", "value__node_7f59c15b7610__b\n", "\n", "2\n", "\n", "\n", "\n", "node_7f59c15b7610->value__node_7f59c15b7610__b\n", "\n", "\n", "b\n", "\n", "\n", "\n", "node_7f59c15b7160\n", "\n", "<root>.c\n", "\n", "\n", "\n", "node_7f59c15b7610->node_7f59c15b7160\n", "\n", "\n", "c\n", "\n", "\n", "\n", "value__node_7f59c15b7160__x\n", "\n", "3\n", "\n", "\n", "\n", "node_7f59c15b7160->value__node_7f59c15b7160__x\n", "\n", "\n", "x\n", "\n", "\n", "\n", "value__node_7f59c15b7160__y\n", "\n", "4\n", "\n", "\n", "\n", "node_7f59c15b7160->value__node_7f59c15b7160__y\n", "\n", "\n", "y\n", "\n", "\n", "\n" ], "text/plain": [ "\n", "├── 'a' --> 1\n", "├── 'b' --> 2\n", "└── 'c' --> \n", " ├── 'x' --> 3\n", " └── 'y' --> 4" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unflatten(flatted)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "And here is the performance." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:45.697033Z", "iopub.status.busy": "2023-10-22T14:55:45.696422Z", "iopub.status.idle": "2023-10-22T14:55:53.706887Z", "shell.execute_reply": "2023-10-22T14:55:53.705855Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "985 ns ± 9.63 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n" ] } ], "source": [ "%timeit unflatten(flatted)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### DM-Tree's Performance" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "[Flatten](https://tree.readthedocs.io/en/latest/api.html#tree.flatten) is provided in DM-Tree as well, but it differs from that in TreeValue, as the following" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:53.712537Z", "iopub.status.busy": "2023-10-22T14:55:53.710846Z", "iopub.status.idle": "2023-10-22T14:55:53.719443Z", "shell.execute_reply": "2023-10-22T14:55:53.718793Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tree import flatten\n", "\n", "flatten(origin)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Here is the performance" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:55:53.722762Z", "iopub.status.busy": "2023-10-22T14:55:53.722490Z", "iopub.status.idle": "2023-10-22T14:56:03.608212Z", "shell.execute_reply": "2023-10-22T14:56:03.607083Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.22 µs ± 16.3 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n" ] } ], "source": [ "%timeit flatten(origin)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "The structure of the tree is dropped, only the data is extracted from the tree. This means the `flatten` function in DM-Tree is irreversible, we can not recover the original tree with the result above." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "The reversible resolution provided in DM-Tree is [flatten_with_path](https://tree.readthedocs.io/en/latest/api.html#tree.flatten_with_path)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:03.612532Z", "iopub.status.busy": "2023-10-22T14:56:03.611969Z", "iopub.status.idle": "2023-10-22T14:56:03.620063Z", "shell.execute_reply": "2023-10-22T14:56:03.619257Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "[(('a',), 1), (('b',), 2), (('c', 'x'), 3), (('c', 'y'), 4)]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tree import flatten_with_path\n", "\n", "flatten_with_path(origin)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Here is the performance, much slower than `flatten` in TreeValue." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:03.624272Z", "iopub.status.busy": "2023-10-22T14:56:03.623565Z", "iopub.status.idle": "2023-10-22T14:56:19.339245Z", "shell.execute_reply": "2023-10-22T14:56:19.338099Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "19.3 µs ± 166 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit flatten_with_path(origin)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "To re-create the original tree, we need a tree structure with any objects filled inside. Use the [unflatten_as](https://tree.readthedocs.io/en/latest/api.html#tree.unflatten_as) to archive this goal." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:19.343238Z", "iopub.status.busy": "2023-10-22T14:56:19.342696Z", "iopub.status.idle": "2023-10-22T14:56:19.351545Z", "shell.execute_reply": "2023-10-22T14:56:19.350838Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'a': 1, 'b': 2, 'c': {'x': 3, 'y': 4}}" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tree import unflatten_as\n", "\n", "unflatten_as({'a': None, 'b': None, 'c': {'x': None, 'y': None}}, [1, 2, 3, 4])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Here is the performance." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:19.355410Z", "iopub.status.busy": "2023-10-22T14:56:19.354746Z", "iopub.status.idle": "2023-10-22T14:56:31.802771Z", "shell.execute_reply": "2023-10-22T14:56:31.801535Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "15.4 µs ± 141 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit unflatten_as({'a': None, 'b': None, 'c': {'x': None, 'y': None}}, [1, 2, 3, 4])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### Positional Replacement" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "It is obvious that the `unflatten_as` in DM-Tree is quite different from `unflatten` in TreeValue, for the former one is `replacing` and the latter one is `constructing`. This means the `unflatten_as` in DM-Tree may supported some more features, such as creating a new tree with another tree's structure and the given values. So we need an experiment on this, called 'positional replacement'." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "First, in TreeValue, we can build a function named `replace` to realize this." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:31.807914Z", "iopub.status.busy": "2023-10-22T14:56:31.807363Z", "iopub.status.idle": "2023-10-22T14:56:31.813528Z", "shell.execute_reply": "2023-10-22T14:56:31.812760Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "from treevalue import flatten, unflatten\n", "\n", "def replace(t, v):\n", " pairs = flatten(t)\n", " return unflatten([(path, vi) for (path, _), vi in zip(pairs, v)])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Create a new tree based on `origin_tree`'s structure and new values." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:31.817214Z", "iopub.status.busy": "2023-10-22T14:56:31.816551Z", "iopub.status.idle": "2023-10-22T14:56:31.948431Z", "shell.execute_reply": "2023-10-22T14:56:31.947347Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "image/jpeg": "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", "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "%3\n", "\n", "\n", "\n", "node_7f59c15b0b50\n", "\n", "<root>\n", "\n", "\n", "\n", "value__node_7f59c15b0b50__a\n", "\n", "3\n", "\n", "\n", "\n", "node_7f59c15b0b50->value__node_7f59c15b0b50__a\n", "\n", "\n", "a\n", "\n", "\n", "\n", "value__node_7f59c15b0b50__b\n", "\n", "5\n", "\n", "\n", "\n", "node_7f59c15b0b50->value__node_7f59c15b0b50__b\n", "\n", "\n", "b\n", "\n", "\n", "\n", "node_7f59c155c580\n", "\n", "<root>.c\n", "\n", "\n", "\n", "node_7f59c15b0b50->node_7f59c155c580\n", "\n", "\n", "c\n", "\n", "\n", "\n", "value__node_7f59c155c580__x\n", "\n", "7\n", "\n", "\n", "\n", "node_7f59c155c580->value__node_7f59c155c580__x\n", "\n", "\n", "x\n", "\n", "\n", "\n", "value__node_7f59c155c580__y\n", "\n", "9\n", "\n", "\n", "\n", "node_7f59c155c580->value__node_7f59c155c580__y\n", "\n", "\n", "y\n", "\n", "\n", "\n" ], "text/plain": [ "\n", "├── 'a' --> 3\n", "├── 'b' --> 5\n", "└── 'c' --> \n", " ├── 'x' --> 7\n", " └── 'y' --> 9" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "replace(origin_tree, [3, 5, 7, 9])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Here is the performance." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:31.952547Z", "iopub.status.busy": "2023-10-22T14:56:31.952062Z", "iopub.status.idle": "2023-10-22T14:56:34.340811Z", "shell.execute_reply": "2023-10-22T14:56:34.339532Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.93 µs ± 43.9 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit replace(origin_tree, [3, 5, 7, 9])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "In DM-Tree, `unflatten_as` can be directly used." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:34.345883Z", "iopub.status.busy": "2023-10-22T14:56:34.345100Z", "iopub.status.idle": "2023-10-22T14:56:34.352345Z", "shell.execute_reply": "2023-10-22T14:56:34.351665Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "{'a': 3, 'b': 5, 'c': {'x': 7, 'y': 9}}" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tree import unflatten_as\n", "\n", "unflatten_as(origin, [3, 5, 7, 9])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "Here is the performance, even much slower than the `replace` function for integration." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2023-10-22T14:56:34.356155Z", "iopub.status.busy": "2023-10-22T14:56:34.355626Z", "iopub.status.idle": "2023-10-22T14:56:46.509838Z", "shell.execute_reply": "2023-10-22T14:56:46.508568Z" }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "15 µs ± 95.4 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%timeit unflatten_as(origin, [3, 5, 7, 9])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "## Conclusion" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "The mapping operation is supported by both library, and `mapping` in TreeValue's performance is significantly higher than the `map_structure` and `map_structure_with_path` in DM-Tree." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "The `flatten` and `unflatten` in TreeValue is reversible, but in DM-Tree not. DM-Tree's performance on flatten and unflatten operation is lower than that in TreeValue in all aspects." ] } ], "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.8.18" } }, "nbformat": 4, "nbformat_minor": 0 }