From e9ead9e73f079fddb5d62918a43524a4717dfffd Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Mon, 19 Dec 2022 12:23:16 -0800 Subject: [PATCH 01/62] feat: add regression repo --- regression/regression.ipynb | 724 ++++++++++++++++++++++++++++++++++++ 1 file changed, 724 insertions(+) create mode 100644 regression/regression.ipynb diff --git a/regression/regression.ipynb b/regression/regression.ipynb new file mode 100644 index 0000000..e54a3cd --- /dev/null +++ b/regression/regression.ipynb @@ -0,0 +1,724 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "cc354491-c629-47b3-a7d6-b4b5060409de", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/tigergraph/GML/GNNs/PyG/gcn_link_prediction.ipynb\n", + "/home/tigergraph/GML/GNNs/PyG/gcn_node_classification.ipynb\n", + "/home/tigergraph/GML/GNNs/PyG/hgat_node_classification.ipynb\n", + "/home/tigergraph/GML/GNNs/Spektral/gcn_node_classification.ipynb\n", + "/home/tigergraph/GML/GNNs/DGL/gcn_node_classification.ipynb\n", + "/home/tigergraph/GML/GNNs/DGL/rgcn_node_classification.ipynb\n", + "/home/tigergraph/GML/algos/topologicalLinkPrediction.ipynb\n", + "/home/tigergraph/GML/algos/embedding.ipynb\n", + "/home/tigergraph/GML/algos/classification.ipynb\n", + "/home/tigergraph/GML/algos/similarity.ipynb\n", + "/home/tigergraph/GML/algos/centrality.ipynb\n", + "/home/tigergraph/GML/algos/community.ipynb\n", + "/home/tigergraph/GML/algos/pathfinding.ipynb\n", + "/home/tigergraph/GML/applications/recommendation/recommendation.ipynb\n", + "/home/tigergraph/GML/applications/fraud_detection/fraud_detection.ipynb\n", + "/home/tigergraph/GML/basics/gsql_102.ipynb\n", + "/home/tigergraph/GML/basics/datasets.ipynb\n", + "/home/tigergraph/GML/basics/pyTigergraph_101.ipynb\n", + "/home/tigergraph/GML/basics/feature_engineering.ipynb\n", + "/home/tigergraph/GML/basics/gsql_101.ipynb\n" + ] + } + ], + "source": [ + "import os\n", + "\n", + "# folder path\n", + "dir_path = \"/home/tigergraph/GML\"\n", + "\n", + "# list to store files\n", + "notebook_list = []\n", + "\n", + "# Iterate directory\n", + "for root, dirs, files in os.walk(dir_path):\n", + " for file in files:\n", + " if file.endswith(\".ipynb\") and \"checkpoint\" not in file and \"benchmark\" not in file and \"Untitled\" not in file and \"test\" not in file:\n", + " notebook_list.append(os.path.join(root, file))\n", + " \n", + "for notebook in notebook_list:\n", + " print(notebook)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f5249446-1e9d-4c03-a2c2-cd8d69febb5e", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "from pyTigerGraph import TigerGraphConnection\n", + "\n", + "# Read in DB configs\n", + "with open('../config.json', \"r\") as config_file:\n", + " config = json.load(config_file)\n", + "\n", + "conn = TigerGraphConnection(\n", + " host=config[\"host\"],\n", + " username=config[\"username\"],\n", + " password=config[\"password\"],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "027412ab-fced-4f6a-be78-ef7def5e4a00", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.9/site-packages/memory_profiler.py:1136: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " ipython_version = LooseVersion(IPython.__version__)\n", + "/opt/conda/lib/python3.9/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " other = LooseVersion(other)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/GNNs/PyG/gcn_link_prediction.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gcn_link_prediction.ipynb to html\n", + "[NbConvertApp] Writing 662525 bytes to /home/tigergraph/GML/output/GNNs/PyG/gcn_link_prediction.ipynb/gcn_link_prediction.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 74.75 MiB, increment: 0.45 MiB\n", + "The CPU usage is: 22.3\n", + "RAM memory % used: 34.0\n", + "RAM Used (GB): 4.99724288\n", + "/home/tigergraph/GML/GNNs/PyG/gcn_link_prediction.ipynb executed successfully\n", + "execution time: 318.173624753952 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/GNNs/PyG/gcn_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", + "[NbConvertApp] Writing 683215 bytes to /home/tigergraph/GML/output/GNNs/PyG/gcn_node_classification.ipynb/gcn_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 74.80 MiB, increment: 0.04 MiB\n", + "The CPU usage is: 24.5\n", + "RAM memory % used: 33.8\n", + "RAM Used (GB): 4.966948864\n", + "/home/tigergraph/GML/GNNs/PyG/gcn_node_classification.ipynb executed successfully\n", + "execution time: 206.7193534374237 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/GNNs/PyG/hgat_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook hgat_node_classification.ipynb to html\n", + "[NbConvertApp] Writing 709765 bytes to /home/tigergraph/GML/output/GNNs/PyG/hgat_node_classification.ipynb/hgat_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.00 MiB, increment: 0.19 MiB\n", + "The CPU usage is: 24.0\n", + "RAM memory % used: 37.0\n", + "RAM Used (GB): 5.505605632\n", + "/home/tigergraph/GML/GNNs/PyG/hgat_node_classification.ipynb executed successfully\n", + "execution time: 357.10809111595154 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/GNNs/Spektral/gcn_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", + "2022-12-01 01:39:48.725747: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2022-12-01 01:39:49.330028: I tensorflow/core/util/util.cc:169] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", + "2022-12-01 01:39:49.507275: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", + "2022-12-01 01:39:49.507296: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n", + "2022-12-01 01:39:49.609810: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n", + "2022-12-01 01:39:51.504342: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n", + "2022-12-01 01:39:51.504519: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n", + "2022-12-01 01:39:51.504533: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n", + "2022-12-01 01:39:55.775870: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory\n", + "2022-12-01 01:39:55.776666: W tensorflow/stream_executor/cuda/cuda_driver.cc:263] failed call to cuInit: UNKNOWN ERROR (303)\n", + "2022-12-01 01:39:55.776712: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (df8d3fc244d1): /proc/driver/nvidia/version does not exist\n", + "2022-12-01 01:39:55.783791: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "[NbConvertApp] Writing 695734 bytes to /home/tigergraph/GML/output/GNNs/Spektral/gcn_node_classification.ipynb/gcn_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.02 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 22.6\n", + "RAM memory % used: 34.0\n", + "RAM Used (GB): 5.001146368\n", + "/home/tigergraph/GML/GNNs/Spektral/gcn_node_classification.ipynb executed successfully\n", + "execution time: 245.4487910270691 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/GNNs/DGL/gcn_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", + "[NbConvertApp] Writing 704860 bytes to /home/tigergraph/GML/output/GNNs/DGL/gcn_node_classification.ipynb/gcn_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.05 MiB, increment: 0.02 MiB\n", + "The CPU usage is: 21.9\n", + "RAM memory % used: 34.2\n", + "RAM Used (GB): 5.031469056\n", + "/home/tigergraph/GML/GNNs/DGL/gcn_node_classification.ipynb executed successfully\n", + "execution time: 204.36822628974915 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/GNNs/DGL/rgcn_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook rgcn_node_classification.ipynb to html\n", + "[NbConvertApp] Writing 725103 bytes to /home/tigergraph/GML/output/GNNs/DGL/rgcn_node_classification.ipynb/rgcn_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.06 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 21.7\n", + "RAM memory % used: 37.3\n", + "RAM Used (GB): 5.556895744\n", + "/home/tigergraph/GML/GNNs/DGL/rgcn_node_classification.ipynb executed successfully\n", + "execution time: 354.14860129356384 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/algos/topologicalLinkPrediction.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook topologicalLinkPrediction.ipynb to html\n", + "[NbConvertApp] Writing 641582 bytes to /home/tigergraph/GML/output/algos/topologicalLinkPrediction.ipynb/topologicalLinkPrediction.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.06 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 22.0\n", + "RAM memory % used: 33.5\n", + "RAM Used (GB): 4.930695168\n", + "/home/tigergraph/GML/algos/topologicalLinkPrediction.ipynb executed successfully\n", + "execution time: 241.41627502441406 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/algos/embedding.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook embedding.ipynb to html\n", + "[NbConvertApp] Writing 682799 bytes to /home/tigergraph/GML/output/algos/embedding.ipynb/embedding.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.06 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 22.5\n", + "RAM memory % used: 34.7\n", + "RAM Used (GB): 5.118521344\n", + "/home/tigergraph/GML/algos/embedding.ipynb executed successfully\n", + "execution time: 218.51526021957397 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/algos/classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook classification.ipynb to html\n", + "[NbConvertApp] Writing 678395 bytes to /home/tigergraph/GML/output/algos/classification.ipynb/classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.07 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 22.5\n", + "RAM memory % used: 34.9\n", + "RAM Used (GB): 5.160931328\n", + "/home/tigergraph/GML/algos/classification.ipynb executed successfully\n", + "execution time: 363.59282636642456 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/algos/similarity.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook similarity.ipynb to html\n", + "[NbConvertApp] Writing 635908 bytes to /home/tigergraph/GML/output/algos/similarity.ipynb/similarity.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.07 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 23.3\n", + "RAM memory % used: 34.9\n", + "RAM Used (GB): 5.166055424\n", + "/home/tigergraph/GML/algos/similarity.ipynb executed successfully\n", + "execution time: 193.1436746120453 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/algos/centrality.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook centrality.ipynb to html\n", + "[NbConvertApp] Writing 743372 bytes to /home/tigergraph/GML/output/algos/centrality.ipynb/centrality.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.08 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 28.3\n", + "RAM memory % used: 51.5\n", + "RAM Used (GB): 7.943671808\n", + "/home/tigergraph/GML/algos/centrality.ipynb executed successfully\n", + "execution time: 470.4471106529236 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/algos/community.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook community.ipynb to html\n", + "[NbConvertApp] Writing 683972 bytes to /home/tigergraph/GML/output/algos/community.ipynb/community.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.08 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 30.2\n", + "RAM memory % used: 52.1\n", + "RAM Used (GB): 8.04780032\n", + "/home/tigergraph/GML/algos/community.ipynb executed successfully\n", + "execution time: 542.4974973201752 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/algos/pathfinding.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook pathfinding.ipynb to html\n", + "[NbConvertApp] Writing 654313 bytes to /home/tigergraph/GML/output/algos/pathfinding.ipynb/pathfinding.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.08 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 28.8\n", + "RAM memory % used: 54.4\n", + "RAM Used (GB): 8.434761728\n", + "/home/tigergraph/GML/algos/pathfinding.ipynb executed successfully\n", + "execution time: 363.4259989261627 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/applications/recommendation/recommendation.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook recommendation.ipynb to html\n", + "[NbConvertApp] Writing 758735 bytes to /home/tigergraph/GML/output/applications/recommendation/recommendation.ipynb/recommendation.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.09 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 26.7\n", + "RAM memory % used: 35.4\n", + "RAM Used (GB): 5.246107648\n", + "/home/tigergraph/GML/applications/recommendation/recommendation.ipynb executed successfully\n", + "execution time: 131.5125663280487 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/applications/fraud_detection/fraud_detection.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook fraud_detection.ipynb to html\n", + "[NbConvertApp] Writing 1260584 bytes to /home/tigergraph/GML/output/applications/fraud_detection/fraud_detection.ipynb/fraud_detection.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.09 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 31.6\n", + "RAM memory % used: 36.1\n", + "RAM Used (GB): 5.360242688\n", + "/home/tigergraph/GML/applications/fraud_detection/fraud_detection.ipynb executed successfully\n", + "execution time: 347.6134707927704 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/basics/gsql_102.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gsql_102.ipynb to html\n", + "[NbConvertApp] Writing 727589 bytes to /home/tigergraph/GML/output/basics/gsql_102.ipynb/gsql_102.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.09 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 23.6\n", + "RAM memory % used: 52.1\n", + "RAM Used (GB): 8.045740032\n", + "/home/tigergraph/GML/basics/gsql_102.ipynb executed successfully\n", + "execution time: 338.6693663597107 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/basics/datasets.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook datasets.ipynb to html\n", + "[NbConvertApp] Writing 630515 bytes to /home/tigergraph/GML/output/basics/datasets.ipynb/datasets.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.09 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 29.5\n", + "RAM memory % used: 36.9\n", + "RAM Used (GB): 5.492711424\n", + "/home/tigergraph/GML/basics/datasets.ipynb executed successfully\n", + "execution time: 68.28859567642212 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/basics/pyTigergraph_101.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook pyTigergraph_101.ipynb to html\n", + "[NbConvertApp] Writing 821115 bytes to /home/tigergraph/GML/output/basics/pyTigergraph_101.ipynb/pyTigergraph_101.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.09 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 25.5\n", + "RAM memory % used: 34.7\n", + "RAM Used (GB): 5.123076096\n", + "/home/tigergraph/GML/basics/pyTigergraph_101.ipynb executed successfully\n", + "execution time: 119.43766331672668 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/basics/feature_engineering.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook feature_engineering.ipynb to html\n", + "[NbConvertApp] Writing 643793 bytes to /home/tigergraph/GML/output/basics/feature_engineering.ipynb/feature_engineering.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.09 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 26.1\n", + "RAM memory % used: 36.3\n", + "RAM Used (GB): 5.388734464\n", + "/home/tigergraph/GML/basics/feature_engineering.ipynb executed successfully\n", + "execution time: 209.28624367713928 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/basics/gsql_101.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gsql_101.ipynb to html\n", + "Traceback (most recent call last):\n", + " File \"/opt/conda/bin/jupyter-nbconvert\", line 10, in \n", + " sys.exit(main())\n", + " File \"/opt/conda/lib/python3.9/site-packages/jupyter_core/application.py\", line 276, in launch_instance\n", + " return super().launch_instance(argv=argv, **kwargs)\n", + " File \"/opt/conda/lib/python3.9/site-packages/traitlets/config/application.py\", line 982, in launch_instance\n", + " app.start()\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/nbconvertapp.py\", line 426, in start\n", + " self.convert_notebooks()\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/nbconvertapp.py\", line 600, in convert_notebooks\n", + " self.convert_single_notebook(notebook_filename)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/nbconvertapp.py\", line 563, in convert_single_notebook\n", + " output, resources = self.export_single_notebook(\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/nbconvertapp.py\", line 491, in export_single_notebook\n", + " output, resources = self.exporter.from_filename(\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/exporter.py\", line 190, in from_filename\n", + " return self.from_file(f, resources=resources, **kw)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/exporter.py\", line 207, in from_file\n", + " return self.from_notebook_node(\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/html.py\", line 223, in from_notebook_node\n", + " return super().from_notebook_node(nb, resources, **kw)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/templateexporter.py\", line 385, in from_notebook_node\n", + " nb_copy, resources = super().from_notebook_node(nb, resources, **kw)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/exporter.py\", line 147, in from_notebook_node\n", + " nb_copy, resources = self._preprocess(nb_copy, resources)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/exporter.py\", line 342, in _preprocess\n", + " nbc, resc = preprocessor(nbc, resc)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/preprocessors/base.py\", line 47, in __call__\n", + " return self.preprocess(nb, resources)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py\", line 91, in preprocess\n", + " self.preprocess_cell(cell, resources, index)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py\", line 112, in preprocess_cell\n", + " cell = self.execute_cell(cell, index, store_history=True)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbclient/util.py\", line 85, in wrapped\n", + " return just_run(coro(*args, **kwargs))\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbclient/util.py\", line 60, in just_run\n", + " return loop.run_until_complete(coro)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nest_asyncio.py\", line 90, in run_until_complete\n", + " return f.result()\n", + " File \"/opt/conda/lib/python3.9/asyncio/futures.py\", line 201, in result\n", + " raise self._exception\n", + " File \"/opt/conda/lib/python3.9/asyncio/tasks.py\", line 256, in __step\n", + " result = coro.send(None)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbclient/client.py\", line 1019, in async_execute_cell\n", + " await self._check_raise_for_error(cell, cell_index, exec_reply)\n", + " File \"/opt/conda/lib/python3.9/site-packages/nbclient/client.py\", line 913, in _check_raise_for_error\n", + " raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)\n", + "nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:\n", + "------------------\n", + "results = conn.gsql(\n", + "'''\n", + "CREATE GRAPH Social_101 ()\n", + "'''\n", + ")\n", + "\n", + "print(results)\n", + "------------------\n", + "\n", + "An exception has occurred, use %tb to see the full traceback.\n", + "\n", + "\u001b[0;31mSystemExit\u001b[0m\u001b[0;31m:\u001b[0m 1\n", + "\n", + "SystemExit: 1\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 75.09 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 7.2\n", + "RAM memory % used: 34.3\n", + "RAM Used (GB): 5.062365184\n", + "/home/tigergraph/GML/basics/gsql_101.ipynb executed successfully\n", + "execution time: 133.9192452430725 seconds\n", + "\n" + ] + } + ], + "source": [ + "import os\n", + "import time\n", + "import psutil\n", + "%load_ext memory_profiler\n", + "\n", + "notebook_performance_out = '/home/tigergraph/GML/output/performance.txt'\n", + "\n", + "for nb_file in notebook_list:\n", + " \n", + " result = conn.gsql('DROP ALL')\n", + " print ('Dropping all graphs, loading jobs, and queries sucessfully.\\n')\n", + " \n", + " print ('Executing notebook: ' + nb_file)\n", + " \n", + " root = '/home/tigergraph/GML/'\n", + " \n", + " nb_file = nb_file.replace(\"./\", root)\n", + " \n", + " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/\", \"\"))\n", + " \n", + " # print (cmd)\n", + " \n", + " start_time = time.time()\n", + " \n", + " memory = %memit -r 1 -o os.system(cmd)\n", + " \n", + " execution_time = time.time() - start_time\n", + " \n", + "# print('The CPU usage is: ', psutil.cpu_percent(4))\n", + " \n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "# print('RAM Used (GB):', psutil.virtual_memory()[3]/1000000000)\n", + " \n", + " print (nb_file + ' executed successfully')\n", + " print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + " \n", + " os.makedirs(os.path.dirname(notebook_performance_out), exist_ok=True)\n", + " with open(notebook_performance_out, mode='a+', encoding='utf-8') as f:\n", + " f.write('executed notebook: ' + nb_file + '\\n')\n", + " f.write('execution time: ' + str(execution_time) + ' seconds\\n')\n", + " f.write(str(memory) + '\\n\\n')\n", + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 5c6cafcdd5353bc32e86e3aae29c4726b97650ee Mon Sep 17 00:00:00 2001 From: Tris Jin Date: Tue, 20 Dec 2022 22:28:07 -0800 Subject: [PATCH 02/62] Correct Path --- regression/regression.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index e54a3cd..74edd4e 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -37,7 +37,7 @@ "import os\n", "\n", "# folder path\n", - "dir_path = \"/home/tigergraph/GML\"\n", + "dir_path = \"/home/tigergraph/GraphML\"\n", "\n", "# list to store files\n", "notebook_list = []\n", @@ -659,7 +659,7 @@ "import psutil\n", "%load_ext memory_profiler\n", "\n", - "notebook_performance_out = '/home/tigergraph/GML/output/performance.txt'\n", + "notebook_performance_out = '/home/tigergraph/GraphML/output/performance.txt'\n", "\n", "for nb_file in notebook_list:\n", " \n", @@ -668,11 +668,11 @@ " \n", " print ('Executing notebook: ' + nb_file)\n", " \n", - " root = '/home/tigergraph/GML/'\n", + " root = '/home/tigergraph/GraphML/'\n", " \n", " nb_file = nb_file.replace(\"./\", root)\n", " \n", - " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/\", \"\"))\n", + " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GraphML/\", \"\"))\n", " \n", " # print (cmd)\n", " \n", From d02412404994b4d4f5cea13cfb232f6f70335d84 Mon Sep 17 00:00:00 2001 From: Tris Jin Date: Tue, 20 Dec 2022 22:29:33 -0800 Subject: [PATCH 03/62] Install pkg --- regression/regression.ipynb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index 74edd4e..ab00346 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -657,6 +657,8 @@ "import os\n", "import time\n", "import psutil\n", + "!pip install memory_profiler\n", + "\n", "%load_ext memory_profiler\n", "\n", "notebook_performance_out = '/home/tigergraph/GraphML/output/performance.txt'\n", From 4431b0d2bcae89082a29fb99adff12af115962b7 Mon Sep 17 00:00:00 2001 From: Tris Jin Date: Tue, 20 Dec 2022 19:50:22 -0800 Subject: [PATCH 04/62] Test commit --- test.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test.txt diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..30d74d2 --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +test \ No newline at end of file From 52596e2c78eda23ce2d8688050558e2f36712173 Mon Sep 17 00:00:00 2001 From: Tris Jin Date: Tue, 20 Dec 2022 23:34:36 -0800 Subject: [PATCH 05/62] Remove test.txt --- test.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 test.txt diff --git a/test.txt b/test.txt deleted file mode 100644 index 30d74d2..0000000 --- a/test.txt +++ /dev/null @@ -1 +0,0 @@ -test \ No newline at end of file From 826605853d9b227e27c72ea1bcad96a82d167198 Mon Sep 17 00:00:00 2001 From: Tris Jin Date: Wed, 21 Dec 2022 08:46:52 -0800 Subject: [PATCH 06/62] Remove regression to avoid infinite loop --- regression/regression.ipynb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index ab00346..4dc31a4 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -45,7 +45,7 @@ "# Iterate directory\n", "for root, dirs, files in os.walk(dir_path):\n", " for file in files:\n", - " if file.endswith(\".ipynb\") and \"checkpoint\" not in file and \"benchmark\" not in file and \"Untitled\" not in file and \"test\" not in file:\n", + " if file.endswith(\".ipynb\") and \"checkpoint\" not in file and \"benchmark\" not in file and \"Untitled\" not in file and \"test\" not in file and \"regression\" not in file:\n", " notebook_list.append(os.path.join(root, file))\n", " \n", "for notebook in notebook_list:\n", @@ -704,7 +704,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10.6 64-bit", "language": "python", "name": "python3" }, @@ -718,7 +718,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.10.6" + }, + "vscode": { + "interpreter": { + "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" + } } }, "nbformat": 4, From 32b61570accdda4ae2b47565e9bb23c320257764 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Wed, 21 Dec 2022 13:54:48 -0800 Subject: [PATCH 07/62] feat: update notebooks to save resources to csv files and upload them to cluster --- algos/centrality.ipynb | 1455 ++++++++++++-------- algos/classification.ipynb | 514 +++++-- algos/community.ipynb | 1811 +++++++++++++++---------- algos/embedding.ipynb | 402 +++--- algos/pathfinding.ipynb | 283 +++- algos/similarity.ipynb | 273 +++- algos/topologicalLinkPrediction.ipynb | 393 +++++- regression/regression.ipynb | 673 +++------ 8 files changed, 3695 insertions(+), 2109 deletions(-) diff --git a/algos/centrality.ipynb b/algos/centrality.ipynb index a679fd5..7b50913 100644 --- a/algos/centrality.ipynb +++ b/algos/centrality.ipynb @@ -30,7 +30,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9f061329409f4c88a301ee3950a07dd7", + "model_id": "38303a0bf8f94dc0b421a1eff2585041", "version_major": 2, "version_minor": 0 }, @@ -80,12 +80,9 @@ "output_type": "stream", "text": [ "---- Checking database ----\n", - "\n", "---- Creating graph ----\n", - "\n", "The graph ldbc_snb is created.\n", "---- Creating schema ----\n", - "\n", "Using graph 'ldbc_snb'\n", "Successfully created schema change jobs: [ldbc_snb_schema].\n", "Kick off schema change job ldbc_snb_schema\n", @@ -118,13 +115,11 @@ "Trying to add local edge 'Work_At' and its reverse edge 'Work_At_Reverse' to the graph 'ldbc_snb'.\n", "\n", "Graph ldbc_snb updated to new version 1\n", - "The job ldbc_snb_schema completes in 1.019 seconds!\n", + "The job ldbc_snb_schema completes in 1.195 seconds!\n", "---- Creating loading job ----\n", - "\n", "Using graph 'ldbc_snb'\n", "Successfully created loading jobs: [load_ldbc_snb].\n", "---- Ingesting data ----\n", - "\n", "Ingested 9892 objects into VERTEX Person\n", "Ingested 1003605 objects into VERTEX Post\n", "Ingested 16080 objects into VERTEX Tag\n", @@ -189,7 +184,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "59b6ee3554e4459db8b08a36002d8e3d", + "model_id": "d4e775f0c11c4990b1a005be209da372", "version_major": 2, "version_minor": 0 }, @@ -197,8 +192,9 @@ "CytoscapeWidget(cytoscape_layout={'name': 'circle', 'animate': True, 'padding': 1}, cytoscape_style=[{'selecto…" ] }, + "execution_count": 4, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -268,23 +264,23 @@ " 'Has_Moderator_Reverse': 90492,\n", " 'Has_Tag': 3721417,\n", " 'Has_Tag_Reverse': 3721417,\n", - " 'Has_Type': 0,\n", - " 'Has_Type_Reverse': 10663,\n", + " 'Has_Type': 16080,\n", + " 'Has_Type_Reverse': 16080,\n", " 'Is_Located_In': 3073621,\n", " 'Is_Located_In_Reverse': 3073621,\n", - " 'Is_Part_Of': 0,\n", - " 'Is_Part_Of_Reverse': 111,\n", - " 'Is_Subclass_Of': 60,\n", - " 'Is_Subclass_Of_Reverse': 66,\n", + " 'Is_Part_Of': 1454,\n", + " 'Is_Part_Of_Reverse': 1454,\n", + " 'Is_Subclass_Of': 70,\n", + " 'Is_Subclass_Of_Reverse': 70,\n", " 'Knows': 180623,\n", - " 'Likes': 1672584,\n", - " 'Likes_Reverse': 1692138,\n", + " 'Likes': 2190095,\n", + " 'Likes_Reverse': 2190095,\n", " 'Reply_Of': 2052169,\n", " 'Reply_Of_Reverse': 2052169,\n", - " 'Study_At': 1992,\n", - " 'Study_At_Reverse': 0,\n", - " 'Work_At': 5584,\n", - " 'Work_At_Reverse': 0}\n" + " 'Study_At': 7949,\n", + " 'Study_At_Reverse': 7949,\n", + " 'Work_At': 21654,\n", + " 'Work_At_Reverse': 21654}\n" ] } ], @@ -394,21 +390,79 @@ "id": "9da700f1-c00c-454f-b01a-dcb20160bc73", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.9/site-packages/memory_profiler.py:1136: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " ipython_version = LooseVersion(IPython.__version__)\n", + "/opt/conda/lib/python3.9/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " other = LooseVersion(other)\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "Altering graph schema to save results...\n", - "\n", - "The job add_VERTEX_attr_mMtwZY completes in 2.389 seconds!\n", + "The job add_VERTEX_attr_IRIqDu completes in 1.669 seconds!\n", "Installing and optimizing the queries, it might take a minute...\n", - "\n", - "Queries installed successfully\n" + "Queries installed successfully\n", + "peak memory: 141.30 MiB, increment: 0.34 MiB\n", + "The CPU usage is: 30.3\n", + "RAM Used (GB): 10.005221376\n", + "tg_pagerank executed successfully\n", + "execution time: 72.70634746551514 seconds\n", + "\n" ] } ], "source": [ - "res = feat.runAlgorithm(\"tg_pagerank\", params=params)" + "import csv\n", + "import os\n", + "import time\n", + "import psutil\n", + "!pip install memory_profiler\n", + "%load_ext memory_profiler\n", + "\n", + "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "\n", + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_pagerank\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_pagerank executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_pagerank_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_centrality.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -455,78 +509,78 @@ " \n", " \n", " 0\n", - " 15393162796526\n", - " 15393162796526\n", - " Shweta\n", - " Khan\n", - " male\n", - " 1984-06-30 00:00:00\n", - " 2011-03-16 17:51:16\n", - " 103.1.128.123\n", - " Firefox\n", - " [or, kn, en]\n", - " [Shweta15393162796526@gmail.com, Shweta1539316...\n", - " 0.59949\n", + " 32985348841576\n", + " 32985348841576\n", + " Fritz\n", + " Becker\n", + " female\n", + " 1983-07-29 00:00:00\n", + " 2012-07-24 06:25:03\n", + " 31.13.171.49\n", + " Chrome\n", + " [de, en]\n", + " [Fritz32985348841576@gmail.com]\n", + " 0.29449\n", " \n", " \n", " 1\n", - " 6597069768560\n", - " 6597069768560\n", - " Jean-Pierre\n", - " Kitoko\n", + " 19791209301554\n", + " 19791209301554\n", + " Carlos\n", + " Santos\n", " female\n", - " 1988-10-28 00:00:00\n", - " 2010-07-11 12:00:01\n", - " 197.255.179.64\n", + " 1986-06-28 00:00:00\n", + " 2011-07-23 00:11:56\n", + " 198.12.38.156\n", " Firefox\n", - " [fr, ln, en]\n", - " [Jean-Pierre6597069768560@gmx.com, Jean-Pierre...\n", - " 0.30920\n", + " [pt, en]\n", + " [Carlos19791209301554@yahoo.com]\n", + " 1.41297\n", " \n", " \n", " 2\n", - " 2199023264346\n", - " 2199023264346\n", - " Carlos\n", - " Gutierrez\n", + " 15393162790168\n", + " 15393162790168\n", + " Moses\n", + " Znaimer\n", " male\n", - " 1985-04-19 00:00:00\n", - " 2010-03-10 12:52:07\n", - " 201.220.206.82\n", + " 1980-08-17 00:00:00\n", + " 2011-04-11 03:03:01\n", + " 77.244.155.199\n", " Firefox\n", - " [es, en]\n", - " [Carlos2199023264346@gmail.com, Carlos21990232...\n", - " 0.55265\n", + " [tg, ru, en]\n", + " [Moses15393162790168@gmail.com, Moses153931627...\n", + " 0.61351\n", " \n", " \n", " 3\n", - " 28587302330830\n", - " 28587302330830\n", - " Aleksandr\n", - " Dobrunov\n", + " 6597069769941\n", + " 6597069769941\n", + " Manuel\n", + " Perez\n", " male\n", - " 1990-01-01 00:00:00\n", - " 2012-04-14 07:46:31\n", - " 31.8.197.84\n", - " Firefox\n", - " [ru, en]\n", - " [Aleksandr28587302330830@gmail.com, Aleksandr2...\n", - " 2.16470\n", + " 1983-02-09 00:00:00\n", + " 2010-08-05 01:03:35\n", + " 31.177.51.194\n", + " Internet Explorer\n", + " [es, en]\n", + " [Manuel6597069769941@gmail.com, Manuel65970697...\n", + " 1.02073\n", " \n", " \n", " 4\n", - " 21990232566217\n", - " 21990232566217\n", - " Frank\n", - " Burns\n", - " male\n", - " 1986-07-19 00:00:00\n", - " 2011-10-31 06:33:04\n", - " 14.1.16.88\n", - " Opera\n", - " [vi, en]\n", - " [Frank21990232566217@hotmail.com]\n", - " 0.19521\n", + " 32985348835764\n", + " 32985348835764\n", + " Andrew\n", + " Yang\n", + " female\n", + " 1989-01-29 00:00:00\n", + " 2012-08-03 10:49:17\n", + " 49.128.82.58\n", + " Firefox\n", + " [zh, en]\n", + " [Andrew32985348835764@gmail.com]\n", + " 0.19768\n", " \n", " \n", " ...\n", @@ -545,78 +599,78 @@ " \n", " \n", " 9887\n", - " 26388279071595\n", - " 26388279071595\n", - " Louis\n", - " Haddou\n", - " male\n", - " 1989-04-15 00:00:00\n", - " 2012-02-18 15:01:41\n", - " 46.226.110.24\n", + " 10995116286967\n", + " 10995116286967\n", + " Li\n", + " Wang\n", + " female\n", + " 1980-06-22 00:00:00\n", + " 2010-12-20 02:17:26\n", + " 27.98.218.4\n", " Firefox\n", - " [fr, eu, en]\n", - " [Louis26388279071595@gmail.com, Louis263882790...\n", - " 0.76927\n", + " [zh, en]\n", + " [Li10995116286967@gmail.com, Li10995116286967@...\n", + " 0.21135\n", " \n", " \n", " 9888\n", - " 26388279076484\n", - " 26388279076484\n", + " 2199023258090\n", + " 2199023258090\n", + " Abderraouf\n", " David\n", - " Smith\n", " male\n", - " 1984-05-16 00:00:00\n", - " 2012-03-02 14:58:11\n", - " 24.53.80.154\n", - " Firefox\n", - " [fr, en]\n", - " [David26388279076484@gmail.com, David263882790...\n", - " 0.41903\n", + " 1984-02-06 00:00:00\n", + " 2010-03-28 15:46:35\n", + " 192.68.138.187\n", + " Internet Explorer\n", + " [ar, fr, en]\n", + " [Abderraouf2199023258090@gmail.com, Abderraouf...\n", + " 0.31669\n", " \n", " \n", " 9889\n", - " 4460\n", - " 4460\n", - " Jun\n", - " Zhu\n", + " 17592186053731\n", + " 17592186053731\n", + " Antonio\n", + " Chavez\n", " female\n", - " 1983-03-31 00:00:00\n", - " 2010-01-25 22:17:33\n", - " 14.102.159.52\n", - " Firefox\n", - " [zh, en]\n", - " [Jun4460@yahoo.com]\n", - " 0.21400\n", + " 1988-12-09 00:00:00\n", + " 2011-06-05 14:51:34\n", + " 187.161.83.235\n", + " Chrome\n", + " [es, en]\n", + " [Antonio17592186053731@hotmail.com, Antonio175...\n", + " 1.15352\n", " \n", " \n", " 9890\n", - " 13194139537815\n", - " 13194139537815\n", - " A. K.\n", - " Reddy\n", - " female\n", - " 1984-01-29 00:00:00\n", - " 2011-03-05 13:24:25\n", - " 49.12.84.12\n", - " Firefox\n", - " [bn, hi, en]\n", - " [A.K.13194139537815@hotmail.com]\n", - " 0.37957\n", + " 4398046511145\n", + " 4398046511145\n", + " John\n", + " Kumar\n", + " male\n", + " 1986-09-22 00:00:00\n", + " 2010-05-19 01:14:14\n", + " 27.116.33.147\n", + " Safari\n", + " [gu, mr, en]\n", + " [John4398046511145@gmail.com, John439804651114...\n", + " 1.01440\n", " \n", " \n", " 9891\n", - " 4398046515406\n", - " 4398046515406\n", - " S\n", - " Herath\n", + " 2199023257716\n", + " 2199023257716\n", + " Jie\n", + " Chen\n", " male\n", - " 1984-12-07 00:00:00\n", - " 2010-05-16 16:35:19\n", - " 218.100.57.4\n", - " Firefox\n", - " [ta, en]\n", - " [S4398046515406@gmail.com]\n", - " 0.91779\n", + " 1985-05-06 00:00:00\n", + " 2010-04-23 06:16:04\n", + " 1.0.63.9\n", + " Chrome\n", + " [zh, en]\n", + " [Jie2199023257716@gmail.com, Jie2199023257716@...\n", + " 1.16429\n", " \n", " \n", "\n", @@ -624,57 +678,57 @@ "" ], "text/plain": [ - " v_id id first_name last_name gender \\\n", - "0 15393162796526 15393162796526 Shweta Khan male \n", - "1 6597069768560 6597069768560 Jean-Pierre Kitoko female \n", - "2 2199023264346 2199023264346 Carlos Gutierrez male \n", - "3 28587302330830 28587302330830 Aleksandr Dobrunov male \n", - "4 21990232566217 21990232566217 Frank Burns male \n", - "... ... ... ... ... ... \n", - "9887 26388279071595 26388279071595 Louis Haddou male \n", - "9888 26388279076484 26388279076484 David Smith male \n", - "9889 4460 4460 Jun Zhu female \n", - "9890 13194139537815 13194139537815 A. K. Reddy female \n", - "9891 4398046515406 4398046515406 S Herath male \n", + " v_id id first_name last_name gender \\\n", + "0 32985348841576 32985348841576 Fritz Becker female \n", + "1 19791209301554 19791209301554 Carlos Santos female \n", + "2 15393162790168 15393162790168 Moses Znaimer male \n", + "3 6597069769941 6597069769941 Manuel Perez male \n", + "4 32985348835764 32985348835764 Andrew Yang female \n", + "... ... ... ... ... ... \n", + "9887 10995116286967 10995116286967 Li Wang female \n", + "9888 2199023258090 2199023258090 Abderraouf David male \n", + "9889 17592186053731 17592186053731 Antonio Chavez female \n", + "9890 4398046511145 4398046511145 John Kumar male \n", + "9891 2199023257716 2199023257716 Jie Chen male \n", "\n", - " birthday creation_date location_ip browser_used \\\n", - "0 1984-06-30 00:00:00 2011-03-16 17:51:16 103.1.128.123 Firefox \n", - "1 1988-10-28 00:00:00 2010-07-11 12:00:01 197.255.179.64 Firefox \n", - "2 1985-04-19 00:00:00 2010-03-10 12:52:07 201.220.206.82 Firefox \n", - "3 1990-01-01 00:00:00 2012-04-14 07:46:31 31.8.197.84 Firefox \n", - "4 1986-07-19 00:00:00 2011-10-31 06:33:04 14.1.16.88 Opera \n", - "... ... ... ... ... \n", - "9887 1989-04-15 00:00:00 2012-02-18 15:01:41 46.226.110.24 Firefox \n", - "9888 1984-05-16 00:00:00 2012-03-02 14:58:11 24.53.80.154 Firefox \n", - "9889 1983-03-31 00:00:00 2010-01-25 22:17:33 14.102.159.52 Firefox \n", - "9890 1984-01-29 00:00:00 2011-03-05 13:24:25 49.12.84.12 Firefox \n", - "9891 1984-12-07 00:00:00 2010-05-16 16:35:19 218.100.57.4 Firefox \n", + " birthday creation_date location_ip \\\n", + "0 1983-07-29 00:00:00 2012-07-24 06:25:03 31.13.171.49 \n", + "1 1986-06-28 00:00:00 2011-07-23 00:11:56 198.12.38.156 \n", + "2 1980-08-17 00:00:00 2011-04-11 03:03:01 77.244.155.199 \n", + "3 1983-02-09 00:00:00 2010-08-05 01:03:35 31.177.51.194 \n", + "4 1989-01-29 00:00:00 2012-08-03 10:49:17 49.128.82.58 \n", + "... ... ... ... \n", + "9887 1980-06-22 00:00:00 2010-12-20 02:17:26 27.98.218.4 \n", + "9888 1984-02-06 00:00:00 2010-03-28 15:46:35 192.68.138.187 \n", + "9889 1988-12-09 00:00:00 2011-06-05 14:51:34 187.161.83.235 \n", + "9890 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", + "9891 1985-05-06 00:00:00 2010-04-23 06:16:04 1.0.63.9 \n", "\n", - " speaks email \\\n", - "0 [or, kn, en] [Shweta15393162796526@gmail.com, Shweta1539316... \n", - "1 [fr, ln, en] [Jean-Pierre6597069768560@gmx.com, Jean-Pierre... \n", - "2 [es, en] [Carlos2199023264346@gmail.com, Carlos21990232... \n", - "3 [ru, en] [Aleksandr28587302330830@gmail.com, Aleksandr2... \n", - "4 [vi, en] [Frank21990232566217@hotmail.com] \n", - "... ... ... \n", - "9887 [fr, eu, en] [Louis26388279071595@gmail.com, Louis263882790... \n", - "9888 [fr, en] [David26388279076484@gmail.com, David263882790... \n", - "9889 [zh, en] [Jun4460@yahoo.com] \n", - "9890 [bn, hi, en] [A.K.13194139537815@hotmail.com] \n", - "9891 [ta, en] [S4398046515406@gmail.com] \n", + " browser_used speaks \\\n", + "0 Chrome [de, en] \n", + "1 Firefox [pt, en] \n", + "2 Firefox [tg, ru, en] \n", + "3 Internet Explorer [es, en] \n", + "4 Firefox [zh, en] \n", + "... ... ... \n", + "9887 Firefox [zh, en] \n", + "9888 Internet Explorer [ar, fr, en] \n", + "9889 Chrome [es, en] \n", + "9890 Safari [gu, mr, en] \n", + "9891 Chrome [zh, en] \n", "\n", - " pagerank \n", - "0 0.59949 \n", - "1 0.30920 \n", - "2 0.55265 \n", - "3 2.16470 \n", - "4 0.19521 \n", - "... ... \n", - "9887 0.76927 \n", - "9888 0.41903 \n", - "9889 0.21400 \n", - "9890 0.37957 \n", - "9891 0.91779 \n", + " email pagerank \n", + "0 [Fritz32985348841576@gmail.com] 0.29449 \n", + "1 [Carlos19791209301554@yahoo.com] 1.41297 \n", + "2 [Moses15393162790168@gmail.com, Moses153931627... 0.61351 \n", + "3 [Manuel6597069769941@gmail.com, Manuel65970697... 1.02073 \n", + "4 [Andrew32985348835764@gmail.com] 0.19768 \n", + "... ... ... \n", + "9887 [Li10995116286967@gmail.com, Li10995116286967@... 0.21135 \n", + "9888 [Abderraouf2199023258090@gmail.com, Abderraouf... 0.31669 \n", + "9889 [Antonio17592186053731@hotmail.com, Antonio175... 1.15352 \n", + "9890 [John4398046511145@gmail.com, John439804651114... 1.01440 \n", + "9891 [Jie2199023257716@gmail.com, Jie2199023257716@... 1.16429 \n", "\n", "[9892 rows x 12 columns]" ] @@ -706,14 +760,12 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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jx+v2bNna/jw4crKylJ2drYmTpyoAwcOyG63a968eYqMjNT+/fuVm5urESNGaPTo0WrXrp2WLl2qXbt2ae/evTp58qQGDhyo66+/Xr179w51dwEgrHGGBgDQbP3000+SpNLSUnXo0EGRkZFatmyZZs6cKUkaMmSIYmNjvWdpMjMzvW09evTQqFGjtGLFCm/bjBkzZLPZ1L59e02ePFnvvPNO43cKAFANZ2gAAM2OxWLRsmXLNH78eLVq1UonTpzQ8uXLderUKbndbsXExHjnjY+P18GDByVJBw8eVPfu3f1u27hxYyP1CABQF87QAACaHafTqf/6r//SihUrlJ+fry+++EL33HOPpMqwU5VhGNWeV20PpM0jIyNDDofD+zh9+vRF9QUAUD8CDQCg2dmyZYsOHz6sq6++WlLlpWVdunTRtm3bJEnFxcXeefPz8xUXFydJiouLU15eXsBtVaWnp6ugoMD7iIqKaujuAQCqINAAAJqdbt26qaCgQHv27JEk7d+/XwcOHFBSUpImTZqkhQsXSpKys7NVWFiolJQUSarWlpubq9WrV2vcuHHetsWLF8vlcun48ePKzMzUlClTQtA7AEBVfIYGANDsxMbGavHixZo4caKsVqsMw9CiRYvUtWtXzZ07V2lpaUpMTFRERISWLFkiu73ycDhr1ixNnz5dCQkJslqtWrhwodq3by9JSktLU3Z2tpKSkrzz9unTJ2R9BABUshh1XQQcxhwOhwoKCkJdBgCYFu+jP7vYsYif/VEDVhOYvBfGhmzbAFBVfe+lXHIGAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINACAZun8+fN66KGHlJiYqL59++ruu++WJBUVFSk1NVWJiYnq16+f1qxZ412mrKxMU6dOVUJCgpKSkrR8+XJvm9vt1sMPP6zLL79cCQkJWrRoUaP3CQBQmz3UBQAAEAyzZ8+W1WrV3r17ZbFYdOTIEe/04cOHKysrS9nZ2Zo4caIOHDggu92uefPmKTIyUvv371dubq5GjBih0aNHq127dlq6dKl27dqlvXv36uTJkxo4cKCuv/569e7dO8Q9BYDwxhkaAECzc+bMGb3++uuaM2eOLBaLJKlz586SpGXLlmnmzJmSpCFDhig2NtZ7liYzM9Pb1qNHD40aNUorVqzwts2YMUM2m03t27fX5MmT9c477zR21wAANRBoAADNzoEDB9ShQwc999xzGjx4sK655hp98cUXKikpkdvtVkxMjHfe+Ph4HTx4UJJ08OBBde/ePeC2qjIyMuRwOLyP06dPB6ubAAARaAAAzVBFRYVycnJ0xRVXaOPGjXr55Zd1xx13yOl0es/YeBiGUe151fZA2jzS09NVUFDgfURFRV1sdwAA9SDQAACane7du8tqtequu+6SJA0YMEA9evTQ7t27JUnFxcXeefPz8xUXFydJiouLU15eXsBtAIDQIdAAAJqdyy67TDfccIM+/fRTSZXhIzc3V7169dKkSZO0cOFCSVJ2drYKCwuVkpIiSdXacnNztXr1ao0bN87btnjxYrlcLh0/flyZmZmaMmVKCHoHAKiKu5wBAJqlV155RdOnT9cTTzwhm82mV199VZ07d9bcuXOVlpamxMRERUREaMmSJbLbKw+Hs2bN0vTp05WQkCCr1aqFCxeqffv2kqS0tDRlZ2crKSnJO2+fPn1C1j8AQCWLUddFwGHM4XCooKAg1GUAgGnxPvqzix2L+NkfNWA1gcl7YWzItg0AVdX3XsolZwAAAABMi0ADAAAAwLQINAAAAABMi0ADAAAAwLQINACAJu2HH34IdQkAgCaMQAMAaNJSU1N10003acWKFeLGnACAmgg0AIAmLScnRzNmzND8+fPVs2dPvfjiiyopKQl1WQCAJoJAAwBo0qxWqyZMmKBVq1Zp2bJlevnll9WtWzf9+7//uw4fPhzq8gAAIUagAQA0eQcOHNDvfvc7jR8/XmPHjtWaNWuUmJio1NTUUJcGAAgxe6gLAACgPqmpqdq7d68efPBBbd++XW3btpUkDRw4UG+++WZoiwMAhByBBgDQpN13330aP368rNbaFxXs2LEjBBUBAJoSLjkDADRpkZGRKi0t9T4/ceKEPvzwwxBWBABoSvwKNC6XS/Pnzw92LQAA1PL00097LzOTpLZt2+rpp58OXUEAgCbFr0Bjs9n03nvvBbsWAAAuyGKxyO12h7oMAEAT4fclZzfddJMyMzODWQsAALVER0dr/fr13ufr1q1T69atQ1gRAKAp8fumAAsWLFBJSYmmT5+uVq1ayTAMWSwWFRUVBbM+AECYmzt3rm6//Xb17dtXkrR792794x//CHFVAICmwu9As3HjxmDWAQCATyNGjNCuXbv03XffSZJGjhxZ7TM1AIDw5neg6d69u4qKirRnzx5dc801cjqdXMMMAGgU7dq105gxY0JdBgCgCfL7MzTLly/X0KFDlZaWJknauXOnbr/99mDVBQCAJCkrK0u9e/dWRESEbDabrFarbDZbqMsCADQRfgeaOXPm6Pvvv1e7du0kSQMGDFB+fn7QCgMAQJIeeeQRzZ8/X8eOHVNpaalOnTpV7XtpAADhze9LzqxWqzp06FBtWkRERIMXBABAVdHR0br55ptDXQYAoIny+wxN69atdfToUVksFknSl19+6T1bAwBAsIwdO1YffvhhqMsAADRRfp+hmTt3rsaMGaPc3Fxdd9112rdvn1auXBnM2gAA0KJFi1RSUqKoqCi1bNmSrw0AAFTjd6AZPHiwVq1apbVr18owDG6bCQBoFHxtAACgPhcMNGVlZd6fW7RooWuvvbZa26WXXhqcygAAEF8bAACo3wU/QxMVFaXWrVvX+QAAIJj42gAAQH0ueIbG81ew5557TpGRkbr//vtlGIb++te/ym73+4o1AAB+Ec/XBtx4442S+NoAAEB1fieSTz75RN9++633+WOPPaaUlBQ9+uijwagLAABJfG0AAKB+ft+2+fjx49q/f7/3+f79+3Xs2LGgFAUAgAdfGwAAqI/fZ2ief/55DR8+XIMGDZIkbd68Wa+++mrQCgMAQOJrAwAA9fM70IwfP14pKSlav369DMPQiBEjFBMTE8zaAADgawMAAPUK6FP9HTt21G233RasWgAA8KlNmza65ZZbQl0GAKAJ8vszNFlZWerdu7ciIiJks9lktVpls9mCWRsAAN7jTc0HAABSAGdoHnnkEb300ksaMWIEBxIAQKM5deqU9+ezZ8/qzTffVHl5eQgrAgA0JX6foYmOjtbNN9+s6OhotWrVyvsAACCYqh5zLrvsMqWnpysrKyvUZQEAmgi/A83YsWP14YcfBrMWAAAuaN++fTp06FCoywAANBF+X3K2aNEilZSUKCoqSi1btpRhGLJYLCoqKgpmfQCAMBcTE+P9DhqXyyWn06kFCxaEuCoAQFPhd6DZuHFjMOsAAMCnqscfu92uTp068VlOAICX34Gme/fuKioq0p49e3TNNdfI6XTK7XYHszYAANS9e/dQlwAAaML8DjTLly9Xenq6JCkvL087d+7U73//e3388cdBKw4AgKqXnFXFpc8AACmAQDNnzhx9//33uvHGGyVJAwYMUH5+ftAKAwBAkmbMmKHjx4/r/vvvl2EYeu2119S1a1fdcccdoS4NANAE+B1orFarOnToUG1aREREgxcEAEBVX3/9tVavXu19vmDBAo0aNUpPPPFECKsCADQVft+2uXXr1jp69Kj3tP+XX36pdu3aBa0wAAAk6fDhwzp27Jj3+bFjx3TkyJEQVgQAaEr8PkPzwgsvaMyYMcrNzdV1112nffv26YMPPghmbQAA6NFHH9WAAQN06623SpI+/vhj/eEPfwhxVQCApsLvQNO3b1998MEH2rRpkyRp4MCB6tq1a9AKAwBAkmbOnKlrrrlGq1evlmEYeuihh9S/f/9QlwUAaCL8DjRRUVGyWCwyDEOSZLFY1KJFCw0dOlT/+7//q169egWtSABAeOvUqZOSk5O9XxtQXl7O5zgBAJICCDR//vOfFRUVpd/85jcyDENvvPGGysrK1KlTJz3wwAP66quvglgmACBceb42wGKxKDc3l68NAABU4/dNAZYvX67/+I//UHR0tNq0aaNHHnlEH374oaZNm6aSkpJg1ggACGOerw1o27atJL42AABQnd+BpqysTDk5Od7nOTk53iBjt/t9ogcAgIDwtQEAgPr4nUSee+45DR06VIMGDZLFYtH333+vV155RadPn9akSZOCWSMAIIzxtQEAgPr4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d2vbtm265pprdOutt4a6pKCZM2eO9u3bp+eff15S+Oz3mv0Op33eFITL66wmjivhud+l8HmPCddjihT84wqB5iJ069ZNBQUFcjqdkipfiIcOHVJcXFyIKws+Tx9btGihRx99VN98802IK2o8HTp0kKRqfz3Mz88Pi/0uVb7upco34oceekg5OTkqKSkJcVUNb968eVq+fLk++eQTXXrppWGz32v2Wwqffd4UcFzhuOLRHN9f6hIO7zHhekyRGue4QqC5CB07dtRVV12lpUuXSpLee+89xcfHKz4+PrSFBdmZM2f0008/eZ+//fbbuuqqq0JXUAhMmjRJCxculCRlZ2ersLBQKSkpIa4q+JxOp44ePep9/t577yk2Ntb7xtxcZGRk6O2339bnn3+utm3beqc39/3uq9/hss+bCo4rlTiuNL/3l7qEw3tMuB5TpMY7rliM5nx+qxHs2bNH06ZNU0lJiaKjo/XGG2+ob9++oS4rqHJycjRhwgS5XC4ZhqGePXtq/vz5zfKAO3PmTK1YsUKFhYW67LLLFBUVpf379+vo0aNKS0tTbm6uIiIitGjRIl177bWhLrdB+er71q1bde211+r8+fOyWq267LLLlJGRoQEDBoS63AZTUFCgbt26qWfPnmrdurUkKTIyUuvXr2/W+72ufq9atarZ7/OmhuMKx5Xm9v7iEY7HlXA9pkiNe1wh0AAAAAAwLS45AwAAAGBaBBoAAAAApkWgAQAAAGBaBBoAAAAApkWgAQAAAGBaBBoAio+P144dO0JdBgAAQMAINEAz4XK5Ql0CAABAoyPQAA3IYrHomWee0dVXX62kpCS9/fbb3ra7775bgwcP1pVXXqlbb71VRUVF3rYnn3xSCQkJGjZsmGbNmqXBgwd725YsWaJhw4Zp4MCBuvbaa71nUv72t78pNTVVv/71rzV48GBt2LBBGRkZGjJkiK666ioNHTpU69evr1bb3LlzNWzYMPXo0UOvv/66zz4sWLBAKSkpKi4ubujhAQAAaHD2UBcANDcWi0XffvutcnJyNHToUKWkpKhbt276y1/+ossuu0yS9MILL+jZZ5/Vyy+/rJUrV+rDDz/U1q1bdckll2jixInedX377bd655139PXXXysyMlLffPON7rrrLm3dulWStGbNGm3evFmJiYmSpISEBKWnp0uS1q1bp3vvvbfapWQtW7bU+vXrtXv3bg0dOlRpaWmy2yvfBtxut37729/q4MGD+vzzz3XJJZc0yngBAABcDAIN0MDuu+8+SVLPnj2VkpKib775RnfeeafeeustLVmyROfPn9fZs2fVqVMnSdKXX36pyZMnq1WrVpKke+65R3/+858lSStWrNDWrVs1bNgw7/qLi4tVXl4uSUpJSfGGGUnavHmznn/+eZWUlMhut2vXrl0qLy9XRESEJOmuu+6SJPXp00d2u12FhYVyOBySpOnTp2vIkCF69913ZbVy8hYAAJgDgQYIMovFojVr1ujll1/W2rVrFRMTow8++EDPPvusJMkwDFksFp/LGoah6dOne+etKSoqyvtzeXm5JkyYoK+++kqDBg1SaWmp2rRpUy3QtGzZ0ju/zWaT0+n0Pr/uuuv0+eefq6ioyBu2AAAAmjr+DAs0sNdee02SlJeXpzVr1iglJUUnTpxQdHS02rdvr/Lyci1evNg7/+jRo/Xuu++qrKxMbrdbS5Ys8bbddtttevPNN3Xo0CFJlZeFbdy40ed2z507p4qKCnXr1k2S9NJLLwVU97Rp0/Tkk0/q+uuvV35+fkDLAgAAhApnaIAGFhkZqauvvlrFxcV66aWX1K1bN3Xu3FlLly5V79695XA4NHLkSH366aeSpHHjxmnt2rUaMGCAunTpouHDh+vEiROSpFGjRmnOnDn61a9+JZfLpYqKCo0dO7baTQM8oqOj9eyzz2ro0KGKi4vTuHHjAq7dc+nbv/3bv2nlypVKSkq6uMEAAAAIMothGEaoiwCaC4vFolOnTlW7FMwfp06dUuvWreV2u3XfffepS5cueu6554JUJQAAQPPBGRqgCfj1r3+tvLw8nT17VgMHDtTjjz8e6pIAAABMgTM0AAAAAEyLmwIAAAAAMC0CDQAAAADTItAAAAAAMC0CDQAAAADTItAAAAAAMC0CDQAAAADTItAAAAAAMK3/B6Dv9wVb9fOAAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -769,17 +821,58 @@ "name": "stdout", "output_type": "stream", "text": [ + "The memory_profiler extension is already loaded. To reload it, use:\n", + " %reload_ext memory_profiler\n", "Altering graph schema to save results...\n", - "\n", - "The job add_VERTEX_attr_RXGwRN completes in 25.845 seconds!\n", + "The job add_VERTEX_attr_pMTiot completes in 24.079 seconds!\n", "Installing and optimizing the queries, it might take a minute...\n", - "\n", - "Queries installed successfully\n" + "Queries installed successfully\n", + "peak memory: 172.74 MiB, increment: 0.26 MiB\n", + "The CPU usage is: 32.4\n", + "RAM Used (GB): 10.18363904\n", + "tg_pagerank executed successfully\n", + "execution time: 63.11019444465637 seconds\n", + "\n" ] } ], "source": [ - "res = feat.runAlgorithm(\"tg_pagerank_wt\", params=params)" + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_pagerank_wt\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_pagerank_wt executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_pagerank_wt_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_centrality.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -827,82 +920,82 @@ " \n", " \n", " 0\n", - " 15393162796526\n", - " 15393162796526\n", - " Shweta\n", - " Khan\n", - " male\n", - " 1984-06-30 00:00:00\n", - " 2011-03-16 17:51:16\n", - " 103.1.128.123\n", - " Firefox\n", - " [or, kn, en]\n", - " [Shweta15393162796526@gmail.com, Shweta1539316...\n", - " 0.59949\n", + " 32985348841576\n", + " 32985348841576\n", + " Fritz\n", + " Becker\n", + " female\n", + " 1983-07-29 00:00:00\n", + " 2012-07-24 06:25:03\n", + " 31.13.171.49\n", + " Chrome\n", + " [de, en]\n", + " [Fritz32985348841576@gmail.com]\n", + " 0.29449\n", " 0.15\n", " \n", " \n", " 1\n", - " 6597069768560\n", - " 6597069768560\n", - " Jean-Pierre\n", - " Kitoko\n", + " 19791209301554\n", + " 19791209301554\n", + " Carlos\n", + " Santos\n", " female\n", - " 1988-10-28 00:00:00\n", - " 2010-07-11 12:00:01\n", - " 197.255.179.64\n", + " 1986-06-28 00:00:00\n", + " 2011-07-23 00:11:56\n", + " 198.12.38.156\n", " Firefox\n", - " [fr, ln, en]\n", - " [Jean-Pierre6597069768560@gmx.com, Jean-Pierre...\n", - " 0.30920\n", + " [pt, en]\n", + " [Carlos19791209301554@yahoo.com]\n", + " 1.41297\n", " 0.15\n", " \n", " \n", " 2\n", - " 2199023264346\n", - " 2199023264346\n", - " Carlos\n", - " Gutierrez\n", + " 15393162790168\n", + " 15393162790168\n", + " Moses\n", + " Znaimer\n", " male\n", - " 1985-04-19 00:00:00\n", - " 2010-03-10 12:52:07\n", - " 201.220.206.82\n", + " 1980-08-17 00:00:00\n", + " 2011-04-11 03:03:01\n", + " 77.244.155.199\n", " Firefox\n", - " [es, en]\n", - " [Carlos2199023264346@gmail.com, Carlos21990232...\n", - " 0.55265\n", + " [tg, ru, en]\n", + " [Moses15393162790168@gmail.com, Moses153931627...\n", + " 0.61351\n", " 0.15\n", " \n", " \n", " 3\n", - " 28587302330830\n", - " 28587302330830\n", - " Aleksandr\n", - " Dobrunov\n", + " 6597069769941\n", + " 6597069769941\n", + " Manuel\n", + " Perez\n", " male\n", - " 1990-01-01 00:00:00\n", - " 2012-04-14 07:46:31\n", - " 31.8.197.84\n", - " Firefox\n", - " [ru, en]\n", - " [Aleksandr28587302330830@gmail.com, Aleksandr2...\n", - " 2.16470\n", + " 1983-02-09 00:00:00\n", + " 2010-08-05 01:03:35\n", + " 31.177.51.194\n", + " Internet Explorer\n", + " [es, en]\n", + " [Manuel6597069769941@gmail.com, Manuel65970697...\n", + " 1.02073\n", " 0.15\n", " \n", " \n", " 4\n", - " 21990232566217\n", - " 21990232566217\n", - " Frank\n", - " Burns\n", - " male\n", - " 1986-07-19 00:00:00\n", - " 2011-10-31 06:33:04\n", - " 14.1.16.88\n", - " Opera\n", - " [vi, en]\n", - " [Frank21990232566217@hotmail.com]\n", - " 0.19521\n", + " 32985348835764\n", + " 32985348835764\n", + " Andrew\n", + " Yang\n", + " female\n", + " 1989-01-29 00:00:00\n", + " 2012-08-03 10:49:17\n", + " 49.128.82.58\n", + " Firefox\n", + " [zh, en]\n", + " [Andrew32985348835764@gmail.com]\n", + " 0.19768\n", " 0.15\n", " \n", " \n", @@ -923,82 +1016,82 @@ " \n", " \n", " 9887\n", - " 26388279071595\n", - " 26388279071595\n", - " Louis\n", - " Haddou\n", - " male\n", - " 1989-04-15 00:00:00\n", - " 2012-02-18 15:01:41\n", - " 46.226.110.24\n", + " 10995116286967\n", + " 10995116286967\n", + " Li\n", + " Wang\n", + " female\n", + " 1980-06-22 00:00:00\n", + " 2010-12-20 02:17:26\n", + " 27.98.218.4\n", " Firefox\n", - " [fr, eu, en]\n", - " [Louis26388279071595@gmail.com, Louis263882790...\n", - " 0.76927\n", + " [zh, en]\n", + " [Li10995116286967@gmail.com, Li10995116286967@...\n", + " 0.21135\n", " 0.15\n", " \n", " \n", " 9888\n", - " 26388279076484\n", - " 26388279076484\n", + " 2199023258090\n", + " 2199023258090\n", + " Abderraouf\n", " David\n", - " Smith\n", " male\n", - " 1984-05-16 00:00:00\n", - " 2012-03-02 14:58:11\n", - " 24.53.80.154\n", - " Firefox\n", - " [fr, en]\n", - " [David26388279076484@gmail.com, David263882790...\n", - " 0.41903\n", + " 1984-02-06 00:00:00\n", + " 2010-03-28 15:46:35\n", + " 192.68.138.187\n", + " Internet Explorer\n", + " [ar, fr, en]\n", + " [Abderraouf2199023258090@gmail.com, Abderraouf...\n", + " 0.31669\n", " 0.15\n", " \n", " \n", " 9889\n", - " 4460\n", - " 4460\n", - " Jun\n", - " Zhu\n", + " 17592186053731\n", + " 17592186053731\n", + " Antonio\n", + " Chavez\n", " female\n", - " 1983-03-31 00:00:00\n", - " 2010-01-25 22:17:33\n", - " 14.102.159.52\n", - " Firefox\n", - " [zh, en]\n", - " [Jun4460@yahoo.com]\n", - " 0.21400\n", + " 1988-12-09 00:00:00\n", + " 2011-06-05 14:51:34\n", + " 187.161.83.235\n", + " Chrome\n", + " [es, en]\n", + " [Antonio17592186053731@hotmail.com, Antonio175...\n", + " 1.15352\n", " 0.15\n", " \n", " \n", " 9890\n", - " 13194139537815\n", - " 13194139537815\n", - " A. K.\n", - " Reddy\n", - " female\n", - " 1984-01-29 00:00:00\n", - " 2011-03-05 13:24:25\n", - " 49.12.84.12\n", - " Firefox\n", - " [bn, hi, en]\n", - " [A.K.13194139537815@hotmail.com]\n", - " 0.37957\n", + " 4398046511145\n", + " 4398046511145\n", + " John\n", + " Kumar\n", + " male\n", + " 1986-09-22 00:00:00\n", + " 2010-05-19 01:14:14\n", + " 27.116.33.147\n", + " Safari\n", + " [gu, mr, en]\n", + " [John4398046511145@gmail.com, John439804651114...\n", + " 1.01440\n", " 0.15\n", " \n", " \n", " 9891\n", - " 4398046515406\n", - " 4398046515406\n", - " S\n", - " Herath\n", + " 2199023257716\n", + " 2199023257716\n", + " Jie\n", + " Chen\n", " male\n", - " 1984-12-07 00:00:00\n", - " 2010-05-16 16:35:19\n", - " 218.100.57.4\n", - " Firefox\n", - " [ta, en]\n", - " [S4398046515406@gmail.com]\n", - " 0.91779\n", + " 1985-05-06 00:00:00\n", + " 2010-04-23 06:16:04\n", + " 1.0.63.9\n", + " Chrome\n", + " [zh, en]\n", + " [Jie2199023257716@gmail.com, Jie2199023257716@...\n", + " 1.16429\n", " 0.15\n", " \n", " \n", @@ -1007,57 +1100,57 @@ "" ], "text/plain": [ - " v_id id first_name last_name gender \\\n", - "0 15393162796526 15393162796526 Shweta Khan male \n", - "1 6597069768560 6597069768560 Jean-Pierre Kitoko female \n", - "2 2199023264346 2199023264346 Carlos Gutierrez male \n", - "3 28587302330830 28587302330830 Aleksandr Dobrunov male \n", - "4 21990232566217 21990232566217 Frank Burns male \n", - "... ... ... ... ... ... \n", - "9887 26388279071595 26388279071595 Louis Haddou male \n", - "9888 26388279076484 26388279076484 David Smith male \n", - "9889 4460 4460 Jun Zhu female \n", - "9890 13194139537815 13194139537815 A. K. Reddy female \n", - "9891 4398046515406 4398046515406 S Herath male \n", + " v_id id first_name last_name gender \\\n", + "0 32985348841576 32985348841576 Fritz Becker female \n", + "1 19791209301554 19791209301554 Carlos Santos female \n", + "2 15393162790168 15393162790168 Moses Znaimer male \n", + "3 6597069769941 6597069769941 Manuel Perez male \n", + "4 32985348835764 32985348835764 Andrew Yang female \n", + "... ... ... ... ... ... \n", + "9887 10995116286967 10995116286967 Li Wang female \n", + "9888 2199023258090 2199023258090 Abderraouf David male \n", + "9889 17592186053731 17592186053731 Antonio Chavez female \n", + "9890 4398046511145 4398046511145 John Kumar male \n", + "9891 2199023257716 2199023257716 Jie Chen male \n", "\n", - " birthday creation_date location_ip browser_used \\\n", - "0 1984-06-30 00:00:00 2011-03-16 17:51:16 103.1.128.123 Firefox \n", - "1 1988-10-28 00:00:00 2010-07-11 12:00:01 197.255.179.64 Firefox \n", - "2 1985-04-19 00:00:00 2010-03-10 12:52:07 201.220.206.82 Firefox \n", - "3 1990-01-01 00:00:00 2012-04-14 07:46:31 31.8.197.84 Firefox \n", - "4 1986-07-19 00:00:00 2011-10-31 06:33:04 14.1.16.88 Opera \n", - "... ... ... ... ... \n", - "9887 1989-04-15 00:00:00 2012-02-18 15:01:41 46.226.110.24 Firefox \n", - "9888 1984-05-16 00:00:00 2012-03-02 14:58:11 24.53.80.154 Firefox \n", - "9889 1983-03-31 00:00:00 2010-01-25 22:17:33 14.102.159.52 Firefox \n", - "9890 1984-01-29 00:00:00 2011-03-05 13:24:25 49.12.84.12 Firefox \n", - "9891 1984-12-07 00:00:00 2010-05-16 16:35:19 218.100.57.4 Firefox \n", + " birthday creation_date location_ip \\\n", + "0 1983-07-29 00:00:00 2012-07-24 06:25:03 31.13.171.49 \n", + "1 1986-06-28 00:00:00 2011-07-23 00:11:56 198.12.38.156 \n", + "2 1980-08-17 00:00:00 2011-04-11 03:03:01 77.244.155.199 \n", + "3 1983-02-09 00:00:00 2010-08-05 01:03:35 31.177.51.194 \n", + "4 1989-01-29 00:00:00 2012-08-03 10:49:17 49.128.82.58 \n", + "... ... ... ... \n", + "9887 1980-06-22 00:00:00 2010-12-20 02:17:26 27.98.218.4 \n", + "9888 1984-02-06 00:00:00 2010-03-28 15:46:35 192.68.138.187 \n", + "9889 1988-12-09 00:00:00 2011-06-05 14:51:34 187.161.83.235 \n", + "9890 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", + "9891 1985-05-06 00:00:00 2010-04-23 06:16:04 1.0.63.9 \n", "\n", - " speaks email \\\n", - "0 [or, kn, en] [Shweta15393162796526@gmail.com, Shweta1539316... \n", - "1 [fr, ln, en] [Jean-Pierre6597069768560@gmx.com, Jean-Pierre... \n", - "2 [es, en] [Carlos2199023264346@gmail.com, Carlos21990232... \n", - "3 [ru, en] [Aleksandr28587302330830@gmail.com, Aleksandr2... \n", - "4 [vi, en] [Frank21990232566217@hotmail.com] \n", - "... ... ... \n", - "9887 [fr, eu, en] [Louis26388279071595@gmail.com, Louis263882790... \n", - "9888 [fr, en] [David26388279076484@gmail.com, David263882790... \n", - "9889 [zh, en] [Jun4460@yahoo.com] \n", - "9890 [bn, hi, en] [A.K.13194139537815@hotmail.com] \n", - "9891 [ta, en] [S4398046515406@gmail.com] \n", + " browser_used speaks \\\n", + "0 Chrome [de, en] \n", + "1 Firefox [pt, en] \n", + "2 Firefox [tg, ru, en] \n", + "3 Internet Explorer [es, en] \n", + "4 Firefox [zh, en] \n", + "... ... ... \n", + "9887 Firefox [zh, en] \n", + "9888 Internet Explorer [ar, fr, en] \n", + "9889 Chrome [es, en] \n", + "9890 Safari [gu, mr, en] \n", + "9891 Chrome [zh, en] \n", "\n", - " pagerank pagerank_wt \n", - "0 0.59949 0.15 \n", - "1 0.30920 0.15 \n", - "2 0.55265 0.15 \n", - "3 2.16470 0.15 \n", - "4 0.19521 0.15 \n", - "... ... ... \n", - "9887 0.76927 0.15 \n", - "9888 0.41903 0.15 \n", - "9889 0.21400 0.15 \n", - "9890 0.37957 0.15 \n", - "9891 0.91779 0.15 \n", + " email pagerank pagerank_wt \n", + "0 [Fritz32985348841576@gmail.com] 0.29449 0.15 \n", + "1 [Carlos19791209301554@yahoo.com] 1.41297 0.15 \n", + "2 [Moses15393162790168@gmail.com, Moses153931627... 0.61351 0.15 \n", + "3 [Manuel6597069769941@gmail.com, Manuel65970697... 1.02073 0.15 \n", + "4 [Andrew32985348835764@gmail.com] 0.19768 0.15 \n", + "... ... ... ... \n", + "9887 [Li10995116286967@gmail.com, Li10995116286967@... 0.21135 0.15 \n", + "9888 [Abderraouf2199023258090@gmail.com, Abderraouf... 0.31669 0.15 \n", + "9889 [Antonio17592186053731@hotmail.com, Antonio175... 1.15352 0.15 \n", + "9890 [John4398046511145@gmail.com, John439804651114... 1.01440 0.15 \n", + "9891 [Jie2199023257716@gmail.com, Jie2199023257716@... 1.16429 0.15 \n", "\n", "[9892 rows x 13 columns]" ] @@ -1089,14 +1182,12 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAFfCAYAAACY3onHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAxOAAAMTgF/d4wjAAAhw0lEQVR4nO3dfbhldV338fdnGMRolAAZyUYYQEDxIUDwER8zNVPpxkQrKCsLL0C877kozKy7bisxa/JG8SJS0tAbRKXCJywDwlGQx8FAkAd5cFARFcWhgGbme/+x14HN4ZwzZw97n71/h/fruvY1a63fb+/1XfuwzuJzfushVYUkSZIktWjJuAuQJEmSpC1loJEkSZLULAONJEmSpGYZaCRJkiQ1y0AjSZIkqVkGGkmSJEnNMtBIkiRJatbScRcwibbZZpvaaaedxl2GJDXr1ltvvbeqthl3HZPAY4okPXRzHVcMNDPYaaedWLdu3bjLkKRmJbl93DVMCo8pkvTQzXVc8ZQzSZIkSc0y0EiSJElqloFGkiRJUrMMNJIkSZKaZaCRJEmS1CwDjSRJkqRmGWgkSZIkNctAI0mSJKlZIw80SQ5OcnWStUmeOuJ1fSjJ0aNchyRJkqTJsXQB1vEm4I+r6uMLsK6xWfnWzzxo2U3H/+IYKpGkLefvMklSa0Y6QpPkBOB5wLuSfDnJgUnOSXJJksuSvKbrtzLJ95L8WZLLk1yT5IAkJyf5apKLkjyu6/vUJF/s3v+1JH8wy7q3TnJ89961SU5P8lOj2M6Z/gdgruWSNIn8XSZJatFIA01VHQNcAhwDvAL4W+DXquoA4KXA6iQ7d913BC6oqv2ADwJfAN5fVU/rPmPqVLKbgJdU1f7A04FDkxwww+p/D1hfVc+oqn2Bq4A/Hf5WSpIkSRqXhTjlbMpzgN2BzyWZWhZgb+BmeuFj6s+AlwHrqmptN38p8PPd9E8A70+yL7AJeDywL73Q0++XgEcn+eVu/hHADTMVlmQVsGpqfrvttht02yRJkqSJNs4R91GevryQgSbAV6vq+Q9qSFYC9/Qt2gjcPW1+qta/AG4D9quqDUnOBB45y/qOrKpzNldYVa0GVk/Nr1ixojb3HkmSJEnjt5C3bf4ysGeSF08tSLJvkkcM+Dnb0xu92ZBkb+4fuZnuLGBVkm27dW2b5MlbUrgkSZKkybRggaaq7gBeBfxRkiuSfA04fgtq+DPgjUku7qZnG4E5HlgLfCXJV4EL6Z2aNnSzDaF5ZyBJLfF3mSSpRany7KrpVqxYUevWrRt3GZLUrCS3VtWKcdcxCTymSJoULV9DM9dxZSFPOZMkSZKkoTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkSZLULAONJEmSpGYZaCRJkiQ1y0AjSZIkqVkGGkmSJEnNMtBIkiRJapaBRpIkSVKzDDSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDXLQCNJkiSpWQYaSZIkSc0y0EiSJElqloFGkiRJUrMMNJIkSZKaZaCRJEmS1CwDjSRJkqRmGWgkSZIkNctAI0mSJKlZBhpJkiRJzTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkLUpJXpbk0iSXJ7kyyW90y5cnOTvJdd3yg/res22S05Jcn+TaJIf0tS1J8t4kN3TtR45juyRJD7R03AVIkjRsSQL8P+BFVfXVJCuBa5KcCRwPXFhVL09yIPCJJHtU1QbgWOCeqnpCkt2AC5KcW1V3AIcB+wB7AdsBlyU5p6quGcMmSpI6jtBIkhazn+r+fTTwfeAe4FDgRICquhi4DZgapXldX9uNwPnAwX1tJ1XVxqr6AXAG8PrRb4IkaS6O0EiSFp2qqiSHAmcmuQvYHjgEeBSwpKpu7+t+E7BLN70LcPMAbQcMu3ZJ0mAcoZEkLTpJlgJ/ABxcVbsCPwd8uGuu6d2nzdcWtk2te1WSdVOv9evXD1a8JGkgBhpJ0mK0L/C4qvoS3Hdq2beApwEk2amv767ALd30LcDKLWi7T1WtrqoVU69ly5Y91G2RJM3BQCNJWoy+CaxIsjdAkicAewDXAh8HjuqWHwjsDKzp3tffthvwAuCsvrYjkmyVZAd619R8bEG2RpI0K6+hkSQtOlV1W5Ij6N3BbBO908OOrKpbkxwHnJrkOuBe4PDuDmcA7wZOSXI9sAk4qrsBAMCpwIH0QhHAu6vq6oXaJknSzAw0kqRFqapOA06bYfltwEtnec9d9EZeZmrbSDd6I0maHJ5yJkmSJKlZBhpJkiRJzTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkSZLULAONJEmSpGYZaCRJkiQ1y0AjSZIkqVkGGkmSJEnNMtBIkiRJapaBRpIkSVKzDDSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDXLQCNJkiSpWQYaSZIkSc0y0EiSJElqloFGkiRJUrMMNJIkSZKaZaCRJEmS1CwDjSRJkqRmGWgkSZIkNctAI0mSJKlZBhpJkiRJzTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkSZLULAONJEmSpGYZaCRJkiQ1y0AjSZIkqVkGGkmSJEnNMtBIkiRJapaBRpIkSVKzDDSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDXLQCNJkiSpWQYaSZIkSc0y0EiSJElqloFGkiRJUrMMNJIkSZKaZaCRJEmS1CwDjSRJkqRmGWgkSZIkNctAI0mSJKlZBhpJkiRJzTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkSZLULAONJGlRSrJNkvcluS7JVUk+0i1fnuTsbvmVSQ7qe8+2SU5Lcn2Sa5Mc0te2JMl7k9zQtR85ju2SJD3Q0nEXIEnSiBwPbAL2qqpK8tN9yy+sqpcnORD4RJI9qmoDcCxwT1U9IcluwAVJzq2qO4DDgH2AvYDtgMuSnFNV1yz4lkmS7uMIjSRp0Unyk8BvAm+rqgKoqm93zYcCJ3bLLgZuA6ZGaV7X13YjcD5wcF/bSVW1sap+AJwBvH70WyNJmouBRpK0GO0BfB94e5JLknwxyc8l2RFYUlW39/W9Cdilm94FuHkL2iRJY2KgkSQtRlsDuwNfq6oDgKOB0+mdal3T+mbafG1hW29hsirJuqnX+vXrBy5ekjR/BhpJ0mJ0M73rZz4KUFVXADcCTwJIslNf312BW7rpW4CVW9B2n6paXVUrpl7Lli17qNsiSZqDgUaStOhU1feAfwNeBpBkV2A34OvAx4GjuuUHAjsDa7q39rftBrwAOKuv7YgkWyXZgd41NR9biO2RJM3Ou5xJkharNwGnJHkXsBH43ar6dpLjgFOTXAfcCxze3eEM4N3de66nN8JzVHcDAIBTgQOBa6f6VtXVC7UxkqSZGWgkSYtSVX0DeOEMy28DXjrLe+6iN/IyU9tGutEbSdLk8JQzSZIkSc0y0EiSJElqloFGkiRJUrMMNJIkSZKaZaCRJEmS1CwDjSRJkqRmGWgkSRMtyRPHXYMkaXIZaCRJk+7sJP+a5OAkGXcxkqTJYqCRJE263YGTgLcA30jy+0l2HHNNkqQJYaCRJE20qtpUVZ+sqhcDhwJHA99M8ndJHjfm8iRJY2agkSRNvCR7JPlr4EzgM8BBwHXA2WMtTJI0dkvHXYAkSXNJcjawF/B+4KlV9cOu6bIkvz62wiRJE8FAI0madB8AzqyqTdMbquopY6hHkjRBPOVMkjTp7gEePTWTZPskrxxjPZKkCTKvQJNkqyRvGXUxkiTN4B19p5kB/BB4x3hKkSRNmnkFmqraCLxmxLVIkrRZVVV4hoEkqTPIAeFfk7xuZJVIkjSzO5M8c2omybOAH4+xHknSBBnkpgDHADsmOQW4Cwi9P5QtH0llkiT1HAf8U5KruvknAf9jjPVIkibIIIHmgJFVIUnSLKrqgiT7AM/uFn152jU1kqSHsXkHmqq6OclyYO+q+mKSpXgOsyRpAVTVHcBnx12HJGnyzDuQJDkEuAg4tVv0ZOCfRlCTJEn3SfLyJNckuTfJxiSbkmwcd12SpMkwyAjL24CnA3cAVNUVwK6jKEqSpD4nAG8BHkPveTSPou+5NJKkh7dBrqHZVFXfT9K/7N4h1yNJ0nR3VtXnx12EJGkyDTJC8+MkjwUKIMmL6EZrJEkaoc8keeW4i5AkTaZBRmiOo3dB5m5JzgP2BF41iqIkSepzJL3HBqwH7sbHBkiS+gxyl7NLkrwYeA69g4m3zZQkLQQfGyBJmtVmA02Sbftm/xv49/62qvrPURQmSRL42ABJ0tzmc0BYD/x4jpckSSPjYwMkSXPZ7AhNVS0BSPJ24B7gZHqnnL0R2DDS6iRJuv+xAV+A3mMDkvjYAEkSMNhNAX6hqp7bN/9XSdYA7xluSZIkPYCPDZAkzWqQc5B3SPKEqZlu+jHDL0mSpAfwsQGSpFkNMkLzh8CFSS7t5vcDfnf4JUmS9AA+NkCSNKtBbtt8ZneK2TPpXUNzQVXdPrLKJEnCxwZIkuY2yAgNVfVd4FMjqkWSpBlV1Y+Az427DknS5Jn3NTRJXp7kmiT3JtmYZFOSjaMsTpKkqePN9Ne465IkTYZBRmhOAN4MXAB4IJEkLZRH9U3/BPDrwCPGVIskacIMcpezO6vq81V1Z1XdNfUaWWWSJAH9x5yq+l5VrQZePu66JEmTYZBA85kkrxxZJZIkzUOSPYHHj7sOSdJkGOSUsyOBHZOsB+6md6eZqqrlI6lMkiQgye10z6ABtqJ37DpmfBVJkibJIIHmgJFVIUnS7PqPPxuA71SV13JKkoDBnkNzc5LlwN5V9cUkSxnslDVJkgZWVTePuwZJ0uSad6BJcgiwuptdCTwZeCfwiuGXJUlSz7RTzh7QhKc+S9LD3iCnnL0NeDrwBYCquiLJriOpSpKk+50E7ACcTC/E/BZwK3D6OIuSJE2GQQLNpqr6fpL+ZfcOuR5JkqZ7flW9oG/+mCTnV9W7xlaRJGliDHINzI+TPJZu2D/Ji4A7RlKVJEn3e1ySx0zNdNM/PcZ6JEkTZJARmrcCnwV2S3IesCfw6lEUJUlSn/cAVyT5dDf/CuAvxleOJGmSDBJorqIXYPbv5i+rqluHX5IkSferqhOTfBF4Ab1raN5XVf8x5rIkSRNikECznt7pZlMX0VSS/wYuAn6nqr4+7OIkSep8B1g79diAJI+oKq/jlCQNFGj+iF6o+Xt6oeY3gG3pHWT+FnjhsIuTJKnvsQEF7IaPDZAk9RnkpgCHVNX/rao7q+pHVXUC8Mqq+hCw42jKkyTpvscG/BB6jw0AfGyAJAkYLNBsm2T3qZlueirIbBhqVZIk3W9TVX1/2jJPN5MkAYOdcvZ24KIkl9Ib9n868KYky4CPj6I4SZLwsQGSpDnMO9BU1SeTnA88i941NBdW1Xe7Zm+fKUkaleN48GMDXjXWiiRJE2OQU86oqtur6lNVdVZfmJEkaSSSLAG2Al4M/Crwl8CTq+qyAT7jfyepJE/p5pcnOTvJdUmuTHJQX99tk5yW5Pok13Y3JLivliTvTXJD137k0DZUkrTFBjnlTJKkBVVVm5K8t6qeAXxu0Pcn2Z/emQW39C0+nt5ZBi9PciDwiSR7VNUG4Fjgnqp6QpLdgAuSnFtVdwCHAfsAewHbAZclOaeqrnloWylJeigGGqGRJGkMru6/Kc18JdkGOBE4ku76m86h3XKq6mLgNmBqlOZ1fW03AucDB/e1nVRVG6vqB8AZwOsH3hpJ0lA5QiNJmnTLgbVJ1tB7HhoAVXXoZt73f4CPVNWNSe+Z0El2BJZU1e19/W4CdummdwFuHqDtgAG2Q5I0AgYaSdJESvL+qjoSOB34PAPc2SzJs4EDgbfO0FzTu8/RPkjb1LpXAaum5rfbbrs5a5UkPTQGGknSpHoWQFV9OMllVbX/AO99AfBEYGp0ZgW9UPRGgCQ79Y3S7Mr919jcAqwE+ts+O63t4hned5+qWg2snppfsWLF9AAlSRoir6GRJE2qzDK9WVV1fFU9rqpWVtVKYB3wsqr6HL1npx0F0N0UYGdgTffW/rbd6AWjs/rajkiyVZId6F1T87Et2TBJ0vA4QiNJmlTbJHkSvTDTPw1AVX1tCz/3OODUJNcB9wKHd3c4A3g3cEqS64FNwFHdDQAATqV3Gtu1U32r6uotrEGSNCQGGknSpNqW+0/3Ytp0AfO+81k3SjM1fRvw0ln63UVv5GWmto10ozeSpMlhoJEkTaT+ECJJ0my8hkaSJElSsww0kiRJkpploJEkSZLULAONJEmSpGYZaCRJkiQ1y0AjSZIkqVkGGkmSJEnNMtBIkiRJapaBRpIkSVKzDDSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDXLQCNJkiSpWQYaSZIkSc0y0EiSJElqloFGkiRJUrMMNJIkSZKaZaCRJEmS1CwDjSRJkqRmGWgkSZIkNctAI0mSJKlZBhpJkiRJzTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkSZLULAONJEmSpGYZaCRJkiQ1y0AjSZIkqVkGGkmSJEnNMtBIkiRJapaBRpIkSVKzDDSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDXLQCNJkiSpWQYaSZIkSc0y0EiSJElqloFGkiRJUrMMNJIkSZKaZaCRJEmS1CwDjSRJkqRmGWgkSZIkNctAI0mSJKlZBhpJkiRJzTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkSZLULAONJEmSpGYZaCRJkiQ1y0AjSVp0kjwyyT8luTbJ2iRnJ1nZtS3v5q9LcmWSg/ret22S05Jc3733kL62JUnem+SGrv3IMWyaJGkaA40kabE6Gdi7qvYFPt3NAxwPXFhVewK/CXw0ydKu7Vjgnqp6AvAy4P1Jtu/aDgP2AfYCngH8fpInLsiWSJJmZaCRJC06VXV3VX22qqpbdCGwezd9KHBi1+9i4DZgapTmdX1tNwLnAwf3tZ1UVRur6gfAGcDrR70tkqS5GWgkSQ8HxwCfSrIjsKSqbu9ruwnYpZveBbh5C9okSWNioJEkLWpJ3gbsCfxht6imd5k2X1vYNrW+VUnWTb3Wr18/aMmSpAEYaCRJi1aSY4FDgF+oqv+squ93y3fq67YrcEs3fQuwcgva7lNVq6tqxdRr2bJlw9gUSdIsDDSSpEUpySrgV4Cfr6of9jV9HDiq63MgsDOwZoa23YAXAGf1tR2RZKskO9C7puZjI94MSdJmLN18F0mS2pJkBfDXwDeAc5NA7+5lzwSOA05Nch1wL3B4VW3o3vpu4JQk1wObgKO6GwAAnAocCFw71beqrl6QDZIkzcpAI0ladKpqHbNc41JVtwEvnaXtLnojLzO1baQbvZEkTQ5POZMkSZLULAONJEmSpGYZaCRJkiQ1y0AjSZIkqVkGGkmSJEnNMtBIkiRJapaBRpIkSVKzDDSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDXLQCNJkiSpWQYaSZIkSc0y0EiSJElqloFGkiRJUrMMNJIkSZKaZaCRJEmS1CwDjSRJkqRmGWgkSZIkNctAI0mSJKlZBhpJkiRJzTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkSZLULAONJEmSpGYZaCRJkiQ1y0AjSZIkqVkGGkmSJEnNMtBIkiRJapaBRpIkSVKzDDSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDVr6bgLkCRJs1v51s+Mbd03Hf+LY1u3JM2XIzSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDVrUQWaJH+S5K/GXYckSZKkheFdzoZkprvQeHcYSa3xd5kkqTUTM0KTpJL8QZKLknwjyUuSvDPJ5UmuSvLkrt/OSc5Ncmm3/IQkmeUzj+0+77Ikn03y+FHUPtstNcd5q01JGpS/yyRJLZqYQNO5s6qeARwH/DOwpqr2Az4M/GHX54fAq6rq6cDTgN2B10z/oCS/CuwFPLuq9gdOA9438i2QJEmStGAm7ZSzj3X/XgZsqqqpPwteChzSTS8B3pXkICDAcmAt8Ilpn/VLwAHApd0AzlbAxplWmmQVsGpqfrvttnuImyFJkiRpIUxaoLm7+3cjcE/f8o3cX+sqYEfgmVV1d5LVwCNn+KwAf1ZVp2xupVW1Glg9Nb9ixYragtolSZIkLbBJO+VsPrYHvtOFmccCr52l31nAkUl2AEiydZL9FqpISZIkSaPXYqA5AXhOkrXAKcAXZupUVacCHwHOS3IFvdPSXjSKgma7A5B3BpLUEn+XSZJaNDGnnFVV+qZvAh7TN38evethqKqbgWfM8hl/Mm3+PcB7hlzqjDzgS1oM/F0mSWpNiyM0kiRJkgQYaCRJkiQ1zEAjSZIkqVkGGkmSJEnNMtBIkiRJapaBRpKkeUqyZ5IvJ7k2yUVJ9hl3TZL0cGegkSRp/v4WOLmq9gL+EvjgmOuRpIc9A40kSfOQZDmwP72HNgN8EtgtycqxFSVJMtBIkjRPjwe+VVUbAKqqgFuAXcZalSQ9zC0ddwGT6NZbb703ye1b+PZlwPph1jMC1jgc1jgc1jgck1bjTuMuYERq2nymd0iyCljVt2hjku88hHWO7Webd82766T99zcTaxwOaxyOh12NA/w+mc2sx5X0/sCkYUmyrqpWjLuOuVjjcFjjcFjjcLRQY+u6U86uA3asqg1JAnwbeFZV3TTC9U78z9Yah8Mah8Mah6OFGqd4ypkkSfNQVd8FLgcO6xa9BrhplGFGkrR5nnImSdL8HQF8KMnbgDuB3xhzPZL0sGegGb7V4y5gHqxxOKxxOKxxOFqosXlV9XXg2Qu82hZ+ttY4HNY4HNY4HC3UCHgNjSRJkqSGeQ2NJEmSpGYZaCRJkiQ1y0AzD0n2TPLlJNcmuSjJPrP0++0k1yW5IcnJSZb2tb0yyTVJrk/yySTLJqnGJE9Ncn5X4390bdtMUo197Unyb0m+N8z6hlVjkl2SfCrJ17vv880TWOOxSa5MsjbJhUkOXOgak6xMcl6SHyW5ZIb2se8zc9U4KfvM5r7Hrs/I9hltGY8rk1FjX7vHFY8rY69xUvaZJo8rVeVrMy/gHOAN3fQvAxfM0Gc34FvAY+k9aO0s4IiubRlwG/DEbv59wDsnrMY9gad101sBHwPeNkk19vV5M/BB4HsT+LMOcCnw2r75nSesxp8FbgaWdfOHAReNocYdgIOAXwQumdY2KfvMXDVOyj4za419fUa2z/ga6c/W48qIa+zr43HF48ok1Dgp+0xzx5WxFzDpL2A58ENgaTcf4DvAymn9fg84sW/+FcB53fRrgc/0te1D79kFE1PjDJ95LPCBSaux29m/1P071J1oSD/rlwBrJvy/x5+lOyh180cDZy50jX39Xzj9F+ak7DNz1ThDn7HsM5urcZT7jK/R/mw3sx9PxD4yV40zfKbHFY8rI62xr/+Dfh9Oyj4zV40z9PG4Ms+Xp5xt3uOBb1XVBoDq/SRvAXaZ1m8Xen+dmHJTX5+Z2n4mybC+/2HUeJ8kPwm8EfjUkOobSo3d9/V3wFHAfw+xtqHVSO8X5O1JTk9yeZJ/TLL7JNVYVVfQuxXjjUnWAf+L3l9aFrrGuUzKPjMvY95n5qpr1PuMtozHlQmp0ePKcGr0uDK0Gu/jcWUwBpr5qWnzmUe/6X2mf8awDaNGkmxNb4jzX6rqn4dU20zrnnH9M/Tr73MscH5VrR1mUXOse/r6Z+vX32dren9Ne0dV7Qd8Djh9eOU9aN3T1z9bv/v6JNkVeDWwR1WtAP4G+OhQK5x/jYN8xrANo8ZJ2WdmsxD7jLaMx5Xh8LgyHB5XhsPjypgYaDbvm8CKvoscQy/h3jKt3y3Ayr75Xfv6TG9bCdxaVZsmqMapHegM4NvAW4ZU2zBrfD7whiQ3AWuA7ZPclGT7CarxZuDyqrqqm/8I8PQkW01Qja8Frqyqb3fzfw88fww1zmVS9pk5Tcg+M5dR7zPaMh5XJqdGjyseVzyuLIbjyrjPeWvhBZzHAy+gunCGPrvz4Ivl3tS1PQr4Lg+8EO34CatxKfBJehd4ZRK/x2n9VjKaizcf6vf4k8ANwM9084cAV0xYjYcAX+X+izdfD1y10DX29X0hDz7XeSL2mc3UOBH7zFw1TmsfyT7ja3Q/283sxxOxj2ymxonYR+aqcVq/kewjQ/gePa7Ms8a+vg/6fTgp+8xmapyIfWauGqe1j2Sf2aLtGncBLbyAvYELgGuBS4And8s/ALy6r9/vANcD3+jatu5rezVwTdf+j8CjJ6lG4NfoDUNeAaztXidOUo3TPmskO9GQftYv676/K4B/n/qMSamR3oHond1/j1fQ+wvLfgtdI7ANsA64Hbi3m35n32eMfZ+Zq8ZJ2Wc29z2Oep/xNbqfbTfvcWXE32Nfn5HsI0P6WXtc8bgyETUuxD6zJa90BUmSJElSc7yGRpIkSVKzDDSSJEmSmmWgkSRJktQsA40kSZKkZhloJEmSJDXLQCNJkiSpWQYaaZHrnuD7lCF/5huS7DXMz5QkSdoSBhqpAUm2GncN07wBMNBIkqSxM9BI85SkkvxJki8luTbJr/S1fSTJJUm+muTTSZb3tf15kuuTfCXJu5Nc0td2eLf8siT/PjWS0o2AnJ3kH7r+z0iyKsnFSS5PclGSZ06r7bjus25M8puzbMMxSdYk2WmW9pcl+Xw3/VNJNib5nW7+t5N8MMkbgQOAE5KsTfKKh/TFSpIkPQRLx12A1Jiqqucm2R24KMmaqvom8D+r6nsASd4K/DFwdJJXAa8Efhb4L+ATUx+U5LnA64HnV9U9SZ4HfLTrC3AQsF9VXdf1v76qVnfTzwI+CPSfSnZ3VT0zyZO62k6tqg1d25IkfwPsAvx8Vf3XLNt3PnB6km2AFwFfAX4O+DvgJcBZVXVaksOAv6qqT2/JlyhJkjQsjtBIg/kAQFV9A1gDPK9b/mvdCM1/AG8E9u2Wvwg4o6ruqqpNwIf7PutgeuHlK0nWAu8FdkryiK59zVSY6ezXjeJcCZwE7NPXF3phiKq6GtgA7NzXdgrwSOC1c4QZura1wHPpBZh3AvsnWdJty7/N8d1IkiQtOAON9NBUkoOAo4FfqKqnAqvohQeAADXLewOcUlX79r0eV1X3du3r7+vYCy6fBFZV1VOA53fv7w80d/dNb+SBI7DnAc8BlrN5X6AXZp4HnAtcBRwO3FZV353H+yVJkhaMgUYazG8BJFlJ75SwNcD2wJ3AD7rgcURf/3OB1ybZthvlOLyv7VPAryd5fPeZS5IcMMt6HwlsDXyzm3/zgHV/CPhz4Jwku26m7xeAXwXuqKr13fyfdv9OuRPYbsAaJEmShs5AIw3mniRfAv4FeHN3/czngOuBa4DP0ztlC4CqOqtbdgW9cHMD8KOu7XzgbcA/J7kCuBJ43Uwrrao76V2Xc1GS84F7Bi28qs4Afg/4l83ccvkSemFl6vSyfwV25YGB5mTgj70pgCRJGrdUzXY2jKR+SQp4VDdqMcj7HlVVP+5GaD4AfKuq3j6SIiVJkh5mvMuZNHr/0J2i9hPAZcBfjrccSZKkxcMRGulhqHuWzNEzNL25qr640PVIkiRtKQONJEmSpGZ5UwBJkiRJzTLQSJIkSWqWgUaSJElSsww0kiRJkpploJEkSZLULAONJEmSpGb9fwUATLjD/iejAAAAAElFTkSuQmCC\n", + "image/png": "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GgAAAADWotAAAAAAsJbXC826devUu3dvJSQkaNeuXV59r7vuuktLly716nsAAAAA8B9ev8vZs88+q0cffVSTJ0/29lv51NnuQsPdYQDYhs8yAIBtvHqEZv78+Xrvvff0wAMPaPDgwcrLy9OIESOUlJSkxMRErV27VpJUWlqqK664Qg899JD69eun2NhY5efna9asWYqLi1NycrIOHDggSdq1a5eGDBmixMREXXPNNXriiSfO+t4nT55UZmamkpOTlZCQoGnTpumbb77xynae65aavrzVJgA0F59lAAAbebXQLF68WElJSVq8eLHeeOMN3XPPPfrzn/+s/Px8vf3228rIyNDBgwclSVVVVRo0aJB27typmTNnauTIkZozZ44++eQTJSUlOaeSRUZGauPGjdqxY4e2b9+u1atXKz8//4z3fvrppxUSEqJt27apoKBAffr00e9+9ztvbi4AAACAFtZiX6z5/vvvq7i4WGPGjHGeM8Zo9+7dioiIUEhIiMaNO3VaQ2JiosLCwpSQkCBJ6t+/v9555x1J0nfffac5c+aooKBAAQEB2r9/vwoKCpSUlNTg/f7yl7/o22+/1X/9139Jkk6cOKGePXueNVtWVpaysrKc5erqao9tNwAAAADvabFCY4xRXFyctmzZcsZYaWmpgoODneXAwEC1bt26wXJtba0k6Te/+Y26dOminTt3KigoSBMnTtTx48fP+n7Z2dkaMWLEebNlZGQoIyPDWQ4LC2vWtgEAAADwjRa7bfPgwYO1Z88evfvuu85zBQUFOnHiRLNe58iRIwoLC1NQUJB2797tHLn5oQkTJigrK0s1NTWSpJqaGn322WcXvgEAAAAA/E6LFZoOHTro9ddf1+9//3vFx8frmmuuUWZmptxud7Ne56GHHtKKFSs0YMAAPfTQQ+c8ApOZmamEhAQNHDhQcXFxSklJUUFBgQe25EznugMQdwYCYBM+ywAANnIZY4yvQ/ibsLAwVVRU+DoGAFiLz9H/92P/Fr68yxxlFri42Px50thnaYsdoQEAAAAAT6PQAAAAALAWhQYAAACAtSg0AAAAAKxFoQEAAABgLQoNAABNtGfPHg0ePFgxMTFKTk5WYWGhryMBwCWPQgMAQBPdc889mjVrloqKivTrX/9aM2fO9HUkALjkUWgAAGiCyspK7dixQ9OnT5ck3XbbbSopKVFp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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1149,16 +1240,55 @@ "output_type": "stream", "text": [ "Altering graph schema to save results...\n", - "\n", - "The job add_VERTEX_attr_wvBWQI completes in 28.126 seconds!\n", + "The job add_VERTEX_attr_RNguIM completes in 25.154 seconds!\n", "Installing and optimizing the queries, it might take a minute...\n", - "\n", - "Queries installed successfully\n" + "Queries installed successfully\n", + "peak memory: 194.87 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 33.4\n", + "RAM Used (GB): 10.197159936\n", + "tg_pagerank executed successfully\n", + "execution time: 63.5794951915741 seconds\n", + "\n" ] } ], "source": [ - "res = feat.runAlgorithm(\"tg_article_rank\", params=params)" + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_article_rank\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_article_rank executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_article_rank_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_centrality.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -1207,88 +1337,88 @@ " \n", " \n", " 0\n", - " 15393162796526\n", - " 15393162796526\n", - " Shweta\n", - " Khan\n", - " male\n", - " 1984-06-30 00:00:00\n", - " 2011-03-16 17:51:16\n", - " 103.1.128.123\n", - " Firefox\n", - " [or, kn, en]\n", - " [Shweta15393162796526@gmail.com, Shweta1539316...\n", - " 0.59949\n", + " 32985348841576\n", + " 32985348841576\n", + " Fritz\n", + " Becker\n", + " female\n", + " 1983-07-29 00:00:00\n", + " 2012-07-24 06:25:03\n", + " 31.13.171.49\n", + " Chrome\n", + " [de, en]\n", + " [Fritz32985348841576@gmail.com]\n", + " 0.29449\n", " 0.15\n", - " 1.029270e+31\n", + " 3.425802e+30\n", " \n", " \n", " 1\n", - " 6597069768560\n", - " 6597069768560\n", - " Jean-Pierre\n", - " Kitoko\n", + " 19791209301554\n", + " 19791209301554\n", + " Carlos\n", + " Santos\n", " female\n", - " 1988-10-28 00:00:00\n", - " 2010-07-11 12:00:01\n", - " 197.255.179.64\n", + " 1986-06-28 00:00:00\n", + " 2011-07-23 00:11:56\n", + " 198.12.38.156\n", " Firefox\n", - " [fr, ln, en]\n", - " [Jean-Pierre6597069768560@gmx.com, Jean-Pierre...\n", - " 0.30920\n", + " [pt, en]\n", + " [Carlos19791209301554@yahoo.com]\n", + " 1.41297\n", " 0.15\n", - " 3.529777e+30\n", + " 2.700411e+31\n", " \n", " \n", " 2\n", - " 2199023264346\n", - " 2199023264346\n", - " Carlos\n", - " Gutierrez\n", + " 15393162790168\n", + " 15393162790168\n", + " Moses\n", + " Znaimer\n", " male\n", - " 1985-04-19 00:00:00\n", - " 2010-03-10 12:52:07\n", - " 201.220.206.82\n", + " 1980-08-17 00:00:00\n", + " 2011-04-11 03:03:01\n", + " 77.244.155.199\n", " Firefox\n", - " [es, en]\n", - " [Carlos2199023264346@gmail.com, Carlos21990232...\n", - " 0.55265\n", + " [tg, ru, en]\n", + " [Moses15393162790168@gmail.com, Moses153931627...\n", + " 0.61351\n", " 0.15\n", - " 9.315491e+30\n", + " 1.104205e+31\n", " \n", " \n", " 3\n", - " 28587302330830\n", - " 28587302330830\n", - " Aleksandr\n", - " Dobrunov\n", + " 6597069769941\n", + " 6597069769941\n", + " Manuel\n", + " Perez\n", " male\n", - " 1990-01-01 00:00:00\n", - " 2012-04-14 07:46:31\n", - " 31.8.197.84\n", - " Firefox\n", - " [ru, en]\n", - " [Aleksandr28587302330830@gmail.com, Aleksandr2...\n", - " 2.16470\n", + " 1983-02-09 00:00:00\n", + " 2010-08-05 01:03:35\n", + " 31.177.51.194\n", + " Internet Explorer\n", + " [es, en]\n", + " [Manuel6597069769941@gmail.com, Manuel65970697...\n", + " 1.02073\n", " 0.15\n", - " 4.082070e+31\n", + " 2.007961e+31\n", " \n", " \n", " 4\n", - " 21990232566217\n", - " 21990232566217\n", - " Frank\n", - " Burns\n", - " male\n", - " 1986-07-19 00:00:00\n", - " 2011-10-31 06:33:04\n", - " 14.1.16.88\n", - " Opera\n", - " [vi, en]\n", - " [Frank21990232566217@hotmail.com]\n", - " 0.19521\n", + " 32985348835764\n", + " 32985348835764\n", + " Andrew\n", + " Yang\n", + " female\n", + " 1989-01-29 00:00:00\n", + " 2012-08-03 10:49:17\n", + " 49.128.82.58\n", + " Firefox\n", + " [zh, en]\n", + " [Andrew32985348835764@gmail.com]\n", + " 0.19768\n", " 0.15\n", - " 9.277864e+29\n", + " 9.344614e+29\n", " \n", " \n", " ...\n", @@ -1309,88 +1439,88 @@ " \n", " \n", " 9887\n", - " 26388279071595\n", - " 26388279071595\n", - " Louis\n", - " Haddou\n", - " male\n", - " 1989-04-15 00:00:00\n", - " 2012-02-18 15:01:41\n", - " 46.226.110.24\n", + " 10995116286967\n", + " 10995116286967\n", + " Li\n", + " Wang\n", + " female\n", + " 1980-06-22 00:00:00\n", + " 2010-12-20 02:17:26\n", + " 27.98.218.4\n", " Firefox\n", - " [fr, eu, en]\n", - " [Louis26388279071595@gmail.com, Louis263882790...\n", - " 0.76927\n", + " [zh, en]\n", + " [Li10995116286967@gmail.com, Li10995116286967@...\n", + " 0.21135\n", " 0.15\n", - " 1.436795e+31\n", + " 1.489761e+30\n", " \n", " \n", " 9888\n", - " 26388279076484\n", - " 26388279076484\n", + " 2199023258090\n", + " 2199023258090\n", + " Abderraouf\n", " David\n", - " Smith\n", " male\n", - " 1984-05-16 00:00:00\n", - " 2012-03-02 14:58:11\n", - " 24.53.80.154\n", - " Firefox\n", - " [fr, en]\n", - " [David26388279076484@gmail.com, David263882790...\n", - " 0.41903\n", + " 1984-02-06 00:00:00\n", + " 2010-03-28 15:46:35\n", + " 192.68.138.187\n", + " Internet Explorer\n", + " [ar, fr, en]\n", + " [Abderraouf2199023258090@gmail.com, Abderraouf...\n", + " 0.31669\n", " 0.15\n", - " 6.082426e+30\n", + " 3.608502e+30\n", " \n", " \n", " 9889\n", - " 4460\n", - " 4460\n", - " Jun\n", - " Zhu\n", + " 17592186053731\n", + " 17592186053731\n", + " Antonio\n", + " Chavez\n", " female\n", - " 1983-03-31 00:00:00\n", - " 2010-01-25 22:17:33\n", - " 14.102.159.52\n", - " Firefox\n", - " [zh, en]\n", - " [Jun4460@yahoo.com]\n", - " 0.21400\n", + " 1988-12-09 00:00:00\n", + " 2011-06-05 14:51:34\n", + " 187.161.83.235\n", + " Chrome\n", + " [es, en]\n", + " [Antonio17592186053731@hotmail.com, Antonio175...\n", + " 1.15352\n", " 0.15\n", - " 1.440586e+30\n", + " 2.076123e+31\n", " \n", " \n", " 9890\n", - " 13194139537815\n", - " 13194139537815\n", - " A. K.\n", - " Reddy\n", - " female\n", - " 1984-01-29 00:00:00\n", - " 2011-03-05 13:24:25\n", - " 49.12.84.12\n", - " Firefox\n", - " [bn, hi, en]\n", - " [A.K.13194139537815@hotmail.com]\n", - " 0.37957\n", + " 4398046511145\n", + " 4398046511145\n", + " John\n", + " Kumar\n", + " male\n", + " 1986-09-22 00:00:00\n", + " 2010-05-19 01:14:14\n", + " 27.116.33.147\n", + " Safari\n", + " [gu, mr, en]\n", + " [John4398046511145@gmail.com, John439804651114...\n", + " 1.01440\n", " 0.15\n", - " 5.192020e+30\n", + " 1.954525e+31\n", " \n", " \n", " 9891\n", - " 4398046515406\n", - " 4398046515406\n", - " S\n", - " Herath\n", + " 2199023257716\n", + " 2199023257716\n", + " Jie\n", + " Chen\n", " male\n", - " 1984-12-07 00:00:00\n", - " 2010-05-16 16:35:19\n", - " 218.100.57.4\n", - " Firefox\n", - " [ta, en]\n", - " [S4398046515406@gmail.com]\n", - " 0.91779\n", + " 1985-05-06 00:00:00\n", + " 2010-04-23 06:16:04\n", + " 1.0.63.9\n", + " Chrome\n", + " [zh, en]\n", + " [Jie2199023257716@gmail.com, Jie2199023257716@...\n", + " 1.16429\n", " 0.15\n", - " 1.665081e+31\n", + " 2.115465e+31\n", " \n", " \n", "\n", @@ -1398,57 +1528,70 @@ "" ], "text/plain": [ - " v_id id first_name last_name gender \\\n", - "0 15393162796526 15393162796526 Shweta Khan male \n", - "1 6597069768560 6597069768560 Jean-Pierre Kitoko female \n", - "2 2199023264346 2199023264346 Carlos Gutierrez male \n", - "3 28587302330830 28587302330830 Aleksandr Dobrunov male \n", - "4 21990232566217 21990232566217 Frank Burns male \n", - "... ... ... ... ... ... \n", - "9887 26388279071595 26388279071595 Louis Haddou male \n", - "9888 26388279076484 26388279076484 David Smith male \n", - "9889 4460 4460 Jun Zhu female \n", - "9890 13194139537815 13194139537815 A. K. Reddy female \n", - "9891 4398046515406 4398046515406 S Herath male \n", + " v_id id first_name last_name gender \\\n", + "0 32985348841576 32985348841576 Fritz Becker female \n", + "1 19791209301554 19791209301554 Carlos Santos female \n", + "2 15393162790168 15393162790168 Moses Znaimer male \n", + "3 6597069769941 6597069769941 Manuel Perez male \n", + "4 32985348835764 32985348835764 Andrew Yang female \n", + "... ... ... ... ... ... \n", + "9887 10995116286967 10995116286967 Li Wang female \n", + "9888 2199023258090 2199023258090 Abderraouf David male \n", + "9889 17592186053731 17592186053731 Antonio Chavez female \n", + "9890 4398046511145 4398046511145 John Kumar male \n", + "9891 2199023257716 2199023257716 Jie Chen male \n", "\n", - " birthday creation_date location_ip browser_used \\\n", - "0 1984-06-30 00:00:00 2011-03-16 17:51:16 103.1.128.123 Firefox \n", - "1 1988-10-28 00:00:00 2010-07-11 12:00:01 197.255.179.64 Firefox \n", - "2 1985-04-19 00:00:00 2010-03-10 12:52:07 201.220.206.82 Firefox \n", - "3 1990-01-01 00:00:00 2012-04-14 07:46:31 31.8.197.84 Firefox \n", - "4 1986-07-19 00:00:00 2011-10-31 06:33:04 14.1.16.88 Opera \n", - "... ... ... ... ... \n", - "9887 1989-04-15 00:00:00 2012-02-18 15:01:41 46.226.110.24 Firefox \n", - "9888 1984-05-16 00:00:00 2012-03-02 14:58:11 24.53.80.154 Firefox \n", - "9889 1983-03-31 00:00:00 2010-01-25 22:17:33 14.102.159.52 Firefox \n", - "9890 1984-01-29 00:00:00 2011-03-05 13:24:25 49.12.84.12 Firefox \n", - "9891 1984-12-07 00:00:00 2010-05-16 16:35:19 218.100.57.4 Firefox \n", + " birthday creation_date location_ip \\\n", + "0 1983-07-29 00:00:00 2012-07-24 06:25:03 31.13.171.49 \n", + "1 1986-06-28 00:00:00 2011-07-23 00:11:56 198.12.38.156 \n", + "2 1980-08-17 00:00:00 2011-04-11 03:03:01 77.244.155.199 \n", + "3 1983-02-09 00:00:00 2010-08-05 01:03:35 31.177.51.194 \n", + "4 1989-01-29 00:00:00 2012-08-03 10:49:17 49.128.82.58 \n", + "... ... ... ... \n", + "9887 1980-06-22 00:00:00 2010-12-20 02:17:26 27.98.218.4 \n", + "9888 1984-02-06 00:00:00 2010-03-28 15:46:35 192.68.138.187 \n", + "9889 1988-12-09 00:00:00 2011-06-05 14:51:34 187.161.83.235 \n", + "9890 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", + "9891 1985-05-06 00:00:00 2010-04-23 06:16:04 1.0.63.9 \n", "\n", - " speaks email \\\n", - "0 [or, kn, en] [Shweta15393162796526@gmail.com, Shweta1539316... \n", - "1 [fr, ln, en] [Jean-Pierre6597069768560@gmx.com, Jean-Pierre... \n", - "2 [es, en] [Carlos2199023264346@gmail.com, Carlos21990232... \n", - "3 [ru, en] [Aleksandr28587302330830@gmail.com, Aleksandr2... \n", - "4 [vi, en] [Frank21990232566217@hotmail.com] \n", - "... ... ... \n", - "9887 [fr, eu, en] [Louis26388279071595@gmail.com, Louis263882790... \n", - "9888 [fr, en] [David26388279076484@gmail.com, David263882790... \n", - "9889 [zh, en] [Jun4460@yahoo.com] \n", - "9890 [bn, hi, en] [A.K.13194139537815@hotmail.com] \n", - "9891 [ta, en] [S4398046515406@gmail.com] \n", + " browser_used speaks \\\n", + "0 Chrome [de, en] \n", + "1 Firefox [pt, en] \n", + "2 Firefox [tg, ru, en] \n", + "3 Internet Explorer [es, en] \n", + "4 Firefox [zh, en] \n", + "... ... ... \n", + "9887 Firefox [zh, en] \n", + "9888 Internet Explorer [ar, fr, en] \n", + "9889 Chrome [es, en] \n", + "9890 Safari [gu, mr, en] \n", + "9891 Chrome [zh, en] \n", "\n", - " pagerank pagerank_wt article_rank \n", - "0 0.59949 0.15 1.029270e+31 \n", - "1 0.30920 0.15 3.529777e+30 \n", - "2 0.55265 0.15 9.315491e+30 \n", - "3 2.16470 0.15 4.082070e+31 \n", - "4 0.19521 0.15 9.277864e+29 \n", - "... ... ... ... \n", - "9887 0.76927 0.15 1.436795e+31 \n", - "9888 0.41903 0.15 6.082426e+30 \n", - "9889 0.21400 0.15 1.440586e+30 \n", - "9890 0.37957 0.15 5.192020e+30 \n", - "9891 0.91779 0.15 1.665081e+31 \n", + " email pagerank \\\n", + "0 [Fritz32985348841576@gmail.com] 0.29449 \n", + "1 [Carlos19791209301554@yahoo.com] 1.41297 \n", + "2 [Moses15393162790168@gmail.com, Moses153931627... 0.61351 \n", + "3 [Manuel6597069769941@gmail.com, Manuel65970697... 1.02073 \n", + "4 [Andrew32985348835764@gmail.com] 0.19768 \n", + "... ... ... \n", + "9887 [Li10995116286967@gmail.com, Li10995116286967@... 0.21135 \n", + "9888 [Abderraouf2199023258090@gmail.com, Abderraouf... 0.31669 \n", + "9889 [Antonio17592186053731@hotmail.com, Antonio175... 1.15352 \n", + "9890 [John4398046511145@gmail.com, John439804651114... 1.01440 \n", + "9891 [Jie2199023257716@gmail.com, Jie2199023257716@... 1.16429 \n", + "\n", + " pagerank_wt article_rank \n", + "0 0.15 3.425802e+30 \n", + "1 0.15 2.700411e+31 \n", + "2 0.15 1.104205e+31 \n", + "3 0.15 2.007961e+31 \n", + "4 0.15 9.344614e+29 \n", + "... ... ... \n", + "9887 0.15 1.489761e+30 \n", + "9888 0.15 3.608502e+30 \n", + "9889 0.15 2.076123e+31 \n", + "9890 0.15 1.954525e+31 \n", + "9891 0.15 2.115465e+31 \n", "\n", "[9892 rows x 14 columns]" ] @@ -1480,14 +1623,12 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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aJEkacKECQoLCzPP3qSnp5ttgwcP1pQpU7RhwwazbeHChXI4HAoJCdHcuXO1du3ay8gMANDaKG4AAB1aYGCgysvLzfenTp3Sxo0bfdr2rrvu0siRI3XfffeppKREpaWl8ng8Cg0NNdeJjIxUQUGBJKmgoEAREREtbvOWkpIil8tlvioqKlqWMADgkvlU3NTU1OjZZ59t61gAAKjniSeeqHPGplevXnriiSea3e6f//ynvvrqK+3YsUN9+vTRvffeK0my2Wx11rv48dLe7S1pq5WUlKTCwkLzFRQU1GysAIDW4VNx43A49Prrr7d1LAAANMtms8nj8TS7Xnh4uCSpS5cu+tnPfqaPP/5Yffr0kSSVlJSY6+Xn55vrhoeHKy8vr8VtAICOwefL0m688UbzSTMAALSX4OBgff755+b7zz77TD169Ghym7Nnz+r06dPm+9dee01jxoyRJM2ZM0epqamSpKysLBUVFWny5Mn12nJzc7VlyxbNnDnTbFu1apVqamp08uRJpaena968ea2WJwDg8vn8tLQVK1aotLRUiYmJ6t69uwzDkM1mU3FxcVvGBwC4wi1fvly33367RowYIUn6+uuv9cYbbzS5zfHjxzVr1izV1NTIMAxdffXV5pPVli9froSEBEVFRSkgIECrV6+W03lhOly6dKkSExPldrtlt9uVmpqqkJAQSVJCQoKysrIUHR1trjt8+PC2ShsAcAlsRmMXDV8kPz+/weXeN1dahcvlUmFhob/DAIBOq7U/R0+dOqVPP/1UknTttdfWe2paR3a5xyJy2aZWjKZl8p6e4bd9A4A3Xz9LfT5zExERoeLiYu3bt0/XXXedqqurfbrmGQCAy9W7d29Nnz7d32EAADo4n++5WbdunSZOnKiEhARJ0t69e3X77be3VVwAAEiSMjMzNWzYMAUEBMjhcMhut8vhcPg7LABAB+RzcfPUU0/piy++UO/evSVJo0ePbvRSNQAAWsuSJUv07LPP6sSJEyovL9eZM2fqfO8NAAC1fL4szW63m4/QrBUQENDqAQEA4C04OFg333yzv8MAAHQCPp+56dGjh44fP25+gdnmzZvNszgAALSVGTNmaOPGjf4OAwDQCfh85mb58uWaPn26cnNz9aMf/UgHDhzQW2+91ZaxAQCgtLQ0lZaWKigoSF27duWrCAAAjfK5uBk/frw+/PBDffLJJzIMo9M9ihMA0Dlt377d3yEAADqJZoubyspK899dunTRD3/4wzpt3bp1a5vIAAAQX0UAAPBds/fcBAUFqUePHo2+AABoS3wVAQDAV82euan969iTTz6pwMBA3X///TIMQ3/+85/ldPp8VRsAAJek9qsIbrjhBkl8FQEAoHE+VyfvvPOO/vd//9d8/8gjj2jy5Mn62c9+1hZxAQAgia8iAAD4zudHQZ88eVI5OTnm+5ycHJ04caJNggIAoBZfRQAA8JXPZ25+//vfKy4uTuPGjZMkffnll3rhhRfaLDAAACS+igAA4Dufi5s77rhDkydP1ueffy7DMDRp0iSFhoa2ZWwAAPBVBAAAn7XoiQB9+/bVbbfd1laxAADQoJ49e+qWW27xdxgAgA7O53tuMjMzNWzYMAUEBMjhcMhut8vhcLRlbAAAmPPNxS8AAC7m85mbJUuW6LnnntOkSZOYVAAA7ebMmTPmv8+dO6dXXnlFVVVVfowIANBR+XzmJjg4WDfffLOCg4PVvXt38wUAQFvynnOuuuoqJSUlKTMz099hAQA6IJ+LmxkzZmjjxo1tGQsAAM06cOCADh8+7O8wAAAdkM+XpaWlpam0tFRBQUHq2rWrDMOQzWZTcXFxW8YHALjChYaGmt9xU1NTo+rqaq1YscLPUQEAOiKfi5vt27e3ZRwAADTIe/5xOp3q168f934CABrkc3ETERGh4uJi7du3T9ddd52qq6vl8XjaMjYAABQREeHvEAAAnYTPxc26deuUlJQkScrLy9PevXv1i1/8Qm+//XabBQcAgPdlad64PBoAcDGfi5unnnpKX3zxhW644QZJ0ujRo5Wfn99mgQEAIEkLFy7UyZMndf/998swDL344osaOHCg7rzzTn+HBgDoYHwubux2u/r06VNnWUBAQKsHBACAt3/+85/asmWL+X7FihWaMmWKHnvsMT9GBQDoiHx+FHSPHj10/Phx89KAzZs3q3fv3m0WGAAAknT06FGdOHHCfH/ixAkdO3bM5+1/+9vfymazac+ePZKk4uJixcfHKyoqSjExMdq6dau5bmVlpebPny+3263o6GitW7fObPN4PFq8eLGGDBkit9uttLS0VsgOANCafD5z8/TTT2v69OnKzc3Vj370Ix04cEBvvvlmW8YGAIB+9rOfafTo0br11lslSW+//bZ++ctf+rTt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acMwDEOScebMGaO6utoYP3688fXXXxuGYRhnz541Ro4caXzxxReNxvbrX//aGDhwoHH8+PEG433ttdeMGTNmGIZhGLm5uYYkY/369YZhGMY777xjREdHm+tKMkpKSoy5c+caDz30kFFTU9PCI4WOJiIiwti9e7dhGIaxZ88eY9CgQT5v27VrV+PEiRPm+7Vr1xput9vIz89v9TgBAJ1DR5pXOHMDXKJXX31V48eP18iRI/XnP//ZfKJHdHS0Jk+e7FMf77//vqZPn67o6GhJUpcuXdSzZ8866/jyF5CG3Hrrrerbt6/5/r333tOkSZMUExOj3/3ud3WeQNK9e3f9+Mc/liRNmjRJBw8erNNXfHy8YmNj9dxzz3HZkcUMHTpU3bp10yuvvGIuy8nJ0cmTJ1VeXq6jR4+ay9944w316dNHISEhki7cFPr444/rH//4h8LDw9s9dgBAx+PveYV7boBLsHXrVj3//PP65JNPFBoaqjfffFO/+93vJElBQUGtui/DMHTVVVe1+HGI3nEUFBRoyZIl2rZtm66++mrt2rVL06ZNM9u7du1q/tvhcKimpqZOX9dff73ee+89PfTQQ+rRo8elJQK/W7RokTZs2KCioiLdcMMNCgoKUk5Ojt566y39/Oc/V3JysmpqahQaGqpXX31VHo9Hs2bN0rlz52S32xUaGqqNGzfKZrNJku666y7169fPLIwl6YMPPlCfPn38lSIAoB11xHmF4ga4BKdOnVJwcLBCQkJUVVXV5DWhwcHBKisra7Dt5ptv1pNPPqn9+/crOjpa58+fV2VlZZ2zN95/AbnnnnskXfgLSEhIiPmXjuaUlZUpICBA/fr1k2EYev7551uQrfTEE0/oT3/6k2688Ua988476t27d4u2R8eQmpqq1NTUesujoqK0cePGBrfxftLfxc6fP99qsQEAOp+OOK9wfQlwCW655Ra53W4NGzZMN998s2JjYxtdNyEhQX/961/NBwp4c7vd+stf/qL58+dr1KhRmjhxovbt21dnHafTqbfeeksZGRkaNWqURowYofvuu0/nzp3zOd6RI0dqzpw5GjFihH70ox9d0qnen//851qwYIGmTZum48ePt3h7AACAtmYzDMPwdxAAAAAAcLk4cwMAAADAErjnBuikiouLddNNN9VbfuONN+qPf/yjHyICAADwLy5LAwAAAGAJXJYGAAAAwBIobgAAAABYAsUNAAAAAEuguAEAAABgCRQ3AAAAACyB4gYAAACAJfz/lnbup6CRF/IAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1496,7 +1637,7 @@ "ax = fig.add_subplot(121)\n", "df.plot.scatter(x=\"article_rank\", y=\"gender\", ax=ax)\n", "ax = fig.add_subplot(122)\n", - "df[\"article_rank\"].plot.hist(ax=ax)\n" + "df[\"article_rank\"].plot.hist(ax=ax)" ] }, { @@ -1518,7 +1659,7 @@ "source": [ "params = {\n", " \"v_type_set\": [\"Tag\", \"Tag_Class\"],\n", - " \"e_type_set\": \"Has_Type\",\n", + " \"e_type_set\": [\"Has_Type\"],\n", " \"reverse_e_type\": \"Has_Type_Reverse\",\n", " \"max_hops\": 5,\n", " \"top_k\": 10,\n", @@ -1527,12 +1668,12 @@ " \"result_attribute\": \"closeness_cent\",\n", " \"file_path\": \"\",\n", " \"display_edges\": False\n", - " }\n" + " }" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "id": "7bdd5ffd-ecf3-46ac-8ed6-0bcfa32accce", "metadata": {}, "outputs": [ @@ -1541,20 +1682,219 @@ "output_type": "stream", "text": [ "Altering graph schema to save results...\n", - "\n" + "The job add_VERTEX_attr_jrogkt completes in 26.537 seconds!\n", + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 208.47 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 29.5\n", + "RAM Used (GB): 10.207318016\n", + "tg_closeness_cent executed successfully\n", + "execution time: 70.66816473007202 seconds\n", + "\n" ] } ], "source": [ - "res = feat.runAlgorithm(\"tg_closeness_cent\", params=params)" + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_closeness_cent\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_closeness_cent executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_closeness_cent_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_centrality.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "id": "0d88865c-ffaf-4da4-953a-8921d624a744", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
v_ididnameurlcloseness_cent
01601816018Know_by_Hearthttp://dbpedia.org/resource/Know_by_Heart0.000062
11598215982Friends_in_Bellwoods_IIhttp://dbpedia.org/resource/Friends_in_Bellwoo...0.000062
21596615966Split_the_Differencehttp://dbpedia.org/resource/Split_the_Difference0.000062
31592915929Happy,_Happy_Birthday_Babyhttp://dbpedia.org/resource/Happy,_Happy_Birth...0.000062
41590415904Master_of_the_Ringshttp://dbpedia.org/resource/Master_of_the_Rings0.000062
..................
160751497814978AMotionhttp://dbpedia.org/resource/AMotion0.000062
160761504515045In_Search_of_Sunrise_5:_Los_Angeleshttp://dbpedia.org/resource/In_Search_of_Sunri...0.000062
1607767316731Holy_Diverhttp://dbpedia.org/resource/Holy_Diver0.000062
160781512615126Tweeter_and_the_Monkey_Manhttp://dbpedia.org/resource/Tweeter_and_the_Mo...0.000062
160791516515165Tomorrow_Is_a_Long_Timehttp://dbpedia.org/resource/Tomorrow_Is_a_Long...0.000062
\n", + "

16080 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " v_id id name \\\n", + "0 16018 16018 Know_by_Heart \n", + "1 15982 15982 Friends_in_Bellwoods_II \n", + "2 15966 15966 Split_the_Difference \n", + "3 15929 15929 Happy,_Happy_Birthday_Baby \n", + "4 15904 15904 Master_of_the_Rings \n", + "... ... ... ... \n", + "16075 14978 14978 AMotion \n", + "16076 15045 15045 In_Search_of_Sunrise_5:_Los_Angeles \n", + "16077 6731 6731 Holy_Diver \n", + "16078 15126 15126 Tweeter_and_the_Monkey_Man \n", + "16079 15165 15165 Tomorrow_Is_a_Long_Time \n", + "\n", + " url closeness_cent \n", + "0 http://dbpedia.org/resource/Know_by_Heart 0.000062 \n", + "1 http://dbpedia.org/resource/Friends_in_Bellwoo... 0.000062 \n", + "2 http://dbpedia.org/resource/Split_the_Difference 0.000062 \n", + "3 http://dbpedia.org/resource/Happy,_Happy_Birth... 0.000062 \n", + "4 http://dbpedia.org/resource/Master_of_the_Rings 0.000062 \n", + "... ... ... \n", + "16075 http://dbpedia.org/resource/AMotion 0.000062 \n", + "16076 http://dbpedia.org/resource/In_Search_of_Sunri... 0.000062 \n", + "16077 http://dbpedia.org/resource/Holy_Diver 0.000062 \n", + "16078 http://dbpedia.org/resource/Tweeter_and_the_Mo... 0.000062 \n", + "16079 http://dbpedia.org/resource/Tomorrow_Is_a_Long... 0.000062 \n", + "\n", + "[16080 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "df = conn.getVertexDataFrame(\"Tag\", limit=100_000)\n", "display(df)" @@ -1562,29 +1902,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "id": "86d79eec-c5a9-4a85-b22e-abf2230a3fec", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.000062 16078\n", + "0.000000 2\n", + "Name: closeness_cent, dtype: int64" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df[\"closeness_cent\"].value_counts()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "30fb1c2f-90ef-4cc6-b509-d746b23ae589", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8855798c-7f05-423a-b93a-4f1f385758c3", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -1603,7 +1940,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.6" }, "vscode": { "interpreter": { diff --git a/algos/classification.ipynb b/algos/classification.ipynb index a67ae2a..e2a04b2 100644 --- a/algos/classification.ipynb +++ b/algos/classification.ipynb @@ -62,7 +62,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8f589e902398494e81c7f58968fb6bcc", + "model_id": "0d9da94b97df457c9f53a0d73fefa953", "version_major": 2, "version_minor": 0 }, @@ -99,7 +99,29 @@ "output_type": "stream", "text": [ "---- Checking database ----\n", - "A graph with name movie already exists in the database. Please drop it first before ingesting.\n" + "---- Creating graph ----\n", + "The graph movie is created.\n", + "---- Creating schema ----\n", + "Using graph 'movie'\n", + "Successfully created schema change jobs: [movie_schema].\n", + "Kick off schema change job movie_schema\n", + "Doing schema change on graph 'movie' (current version: 0)\n", + "Trying to add local vertex 'Person' to the graph 'movie'.\n", + "Trying to add local vertex 'Movie' to the graph 'movie'.\n", + "Trying to add local edge 'Likes' and its reverse edge 'reverse_Likes' to the graph 'movie'.\n", + "Trying to add local edge 'Similarity' to the graph 'movie'.\n", + "\n", + "Graph movie updated to new version 1\n", + "The job movie_schema completes in 1.955 seconds!\n", + "---- Creating loading job ----\n", + "Using graph 'movie'\n", + "Successfully created loading jobs: [load_movie].\n", + "---- Ingesting data ----\n", + "Ingested 16 objects into VERTEX Person\n", + "Ingested 16 objects into VERTEX Movie\n", + "Ingested 15 objects into EDGE Likes\n", + "---- Cleaning ----\n", + "---- Finished ingestion ----\n" ] } ], @@ -126,7 +148,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "451e9cecdd62493795cdedf02e2d1362", + "model_id": "f91d500d73f5451c93b7505215bfa041", "version_major": 2, "version_minor": 0 }, @@ -187,8 +209,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Edges count: total 42\n", - "{'Likes': 15, 'Similarity': 12, 'reverse_Likes': 15}\n" + "Edges count: total 30\n", + "{'Likes': 15, 'Similarity': 0, 'reverse_Likes': 15}\n" ] } ], @@ -301,9 +323,86 @@ " \"print_results\": True,\n", " \"file_path\": \"\",\n", " \"result_attribute\": \"predicted_label\"\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f94fa5b9-a8f8-4e01-8f1c-c7528774b729", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.9/site-packages/memory_profiler.py:1136: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " ipython_version = LooseVersion(IPython.__version__)\n", + "/opt/conda/lib/python3.9/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " other = LooseVersion(other)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 123.75 MiB, increment: 1.43 MiB\n", + "The CPU usage is: 22.5\n", + "RAM Used (GB): 10.211319808\n", + "tg_knn_cosine_ss executed successfully\n", + "execution time: 67.69653797149658 seconds\n", + "\n" + ] + } + ], + "source": [ + "import csv\n", + "import os\n", + "import time\n", + "import psutil\n", + "!pip install memory_profiler\n", + "%load_ext memory_profiler\n", + "\n", + "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "\n", + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_knn_cosine_ss\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", "\n", - "results = feat.runAlgorithm(\"tg_knn_cosine_ss\", params=params)" + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_knn_cosine_ss executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_knn_cosine_ss_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -318,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "id": "340993dc-57f6-4639-8e29-ded24b78f3b0", "metadata": {}, "outputs": [ @@ -349,7 +448,7 @@ " \n", " \n", " 0\n", - " b\n", + " a\n", " \n", " \n", "\n", @@ -357,7 +456,7 @@ ], "text/plain": [ " predicted_label\n", - "0 b" + "0 a" ] }, "metadata": {}, @@ -365,6 +464,7 @@ } ], "source": [ + "results = feat.runAlgorithm(\"tg_knn_cosine_ss\", params=params)\n", "df_knn_cosine_ss = pd.json_normalize(results)\n", "display(df_knn_cosine_ss)" ] @@ -399,7 +499,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "id": "754253c7-0c84-488d-afeb-cd30fb6e6a56", "metadata": {}, "outputs": [], @@ -414,9 +514,69 @@ " \"print_results\": True,\n", " \"file_path\": \"\",\n", " \"result_attribute\": \"predicted_label\"\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1a1dfa8c-988f-4a3f-9a4c-b42e68ed1ff0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 130.36 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 27.3\n", + "RAM Used (GB): 10.373251072\n", + "tg_knn_cosine_all executed successfully\n", + "execution time: 71.12976360321045 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_knn_cosine_all\", params=params)\n", "\n", - "results = feat.runAlgorithm(\"tg_knn_cosine_all\", params=params)" + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_knn_cosine_all executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_knn_cosine_all_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -433,7 +593,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "id": "b5252f06-4452-4615-a842-4b3884bbbceb", "metadata": {}, "outputs": [ @@ -469,21 +629,21 @@ " \n", " \n", " 0\n", - " Neil\n", + " Jing\n", " Person\n", - " Neil\n", + " Jing\n", " \n", - " b\n", + " a\n", " a\n", " \n", " \n", " 1\n", - " Jing\n", + " Neil\n", " Person\n", - " Jing\n", + " Neil\n", " \n", - " a\n", - " a\n", + " b\n", + " b\n", " \n", " \n", " 2\n", @@ -500,13 +660,13 @@ ], "text/plain": [ " v_id v_type attributes.name attributes.known_label \\\n", - "0 Neil Person Neil \n", - "1 Jing Person Jing \n", + "0 Jing Person Jing \n", + "1 Neil Person Neil \n", "2 Elena Person Elena \n", "\n", " attributes.predicted_label attributes.@sum_predicted_label \n", - "0 b a \n", - "1 a a \n", + "0 a a \n", + "1 b b \n", "2 " ] }, @@ -515,6 +675,7 @@ } ], "source": [ + "results = feat.runAlgorithm(\"tg_knn_cosine_all\", params=params)\n", "df_knn_cosine_all = pd.json_normalize(results, record_path =['source'])\n", "display(df_knn_cosine_all)" ] @@ -547,7 +708,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 16, "id": "d6e97a6e-d992-4ff9-b1f2-a455a6a3e7c9", "metadata": {}, "outputs": [], @@ -560,9 +721,69 @@ " \"label\": \"known_label\",\n", " \"min_k\": 2,\n", " \"max_k\": 5\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b1841166-2607-41c3-942a-06bc93a42adc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 130.49 MiB, increment: 0.09 MiB\n", + "The CPU usage is: 23.9\n", + "RAM Used (GB): 10.3796736\n", + "tg_knn_cosine_cv executed successfully\n", + "execution time: 74.10642075538635 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_knn_cosine_cv\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", "\n", - "results = feat.runAlgorithm(\"tg_knn_cosine_cv\", params=params)" + "print ('tg_knn_cosine_cv executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_knn_cosine_cv_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -579,7 +800,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 19, "id": "573f554b-264c-4ab3-8315-31c06bc2802c", "metadata": {}, "outputs": [ @@ -604,6 +825,7 @@ } ], "source": [ + "results = feat.runAlgorithm(\"tg_knn_cosine_cv\", params=params)\n", "y = json.dumps(results, indent = 1)\n", "print (y)" ] @@ -630,14 +852,14 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 20, "id": "59f6af16-4bd5-4d2d-9fee-9dc6ffe174f8", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "24d53c8deade41afa343c46179af1c91", + "model_id": "9cce94d125bf4d8e880d5c974bb7d914", "version_major": 2, "version_minor": 0 }, @@ -663,7 +885,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 21, "id": "483fafc1-6396-4477-a1eb-7a2efbf5fc42", "metadata": {}, "outputs": [ @@ -672,7 +894,29 @@ "output_type": "stream", "text": [ "---- Checking database ----\n", - "A graph with name social already exists in the database. Please drop it first before ingesting.\n" + "---- Creating graph ----\n", + "The graph social is created.\n", + "---- Creating schema ----\n", + "Using graph 'social'\n", + "Successfully created schema change jobs: [social_schema].\n", + "Kick off schema change job social_schema\n", + "Doing schema change on graph 'social' (current version: 0)\n", + "Trying to add local vertex 'Person' to the graph 'social'.\n", + "Trying to add local edge 'Friend' and its reverse edge 'reverse_Friend' to the graph 'social'.\n", + "Trying to add local edge 'Coworker' to the graph 'social'.\n", + "\n", + "Graph social updated to new version 1\n", + "The job social_schema completes in 2.657 seconds!\n", + "---- Creating loading job ----\n", + "Using graph 'social'\n", + "Successfully created loading jobs: [load_social].\n", + "---- Ingesting data ----\n", + "Ingested 17 objects into VERTEX Person\n", + "Ingested 15 objects into VERTEX Person\n", + "Ingested 14 objects into EDGE Friend\n", + "Ingested 13 objects into EDGE Coworker\n", + "---- Cleaning ----\n", + "---- Finished ingestion ----\n" ] } ], @@ -690,7 +934,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 22, "id": "58337f17-4e71-4a90-b520-65da6b6a9a64", "metadata": {}, "outputs": [], @@ -711,14 +955,14 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 23, "id": "218d3a2a-7e71-4aea-8ffb-a8b8d8847570", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4d9ee0dba04d436b9d163a960fd9429b", + "model_id": "09975d1bc75744e291baaa3e574190a3", "version_major": 2, "version_minor": 0 }, @@ -726,7 +970,7 @@ "CytoscapeWidget(cytoscape_layout={'name': 'circle', 'animate': True, 'padding': 1}, cytoscape_style=[{'selecto…" ] }, - "execution_count": 18, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -745,7 +989,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 24, "id": "8edf8704-c2aa-468b-bc95-c4dafc3e2426", "metadata": {}, "outputs": [ @@ -770,7 +1014,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 25, "id": "cb88611c-0cde-49ee-84be-88c140050dab", "metadata": {}, "outputs": [ @@ -822,7 +1066,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 26, "id": "8741c725-614d-45d1-8166-9d9ce3655263", "metadata": {}, "outputs": [], @@ -833,9 +1077,67 @@ " \"maximum_iteration\": 100,\n", " \"print_results\": True,\n", " \"file_path\": \"\"\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "84368719-1c52-46f2-9bd2-448c69cc817f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 130.62 MiB, increment: 0.10 MiB\n", + "The CPU usage is: 24.7\n", + "RAM Used (GB): 10.24616448\n", + "tg_maximal_indep_set executed successfully\n", + "execution time: 65.21586489677429 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_maximal_indep_set\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_maximal_indep_set executed successfully')\n", "\n", - "results = feat.runAlgorithm(\"tg_maximal_indep_set\", params=params)" + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_maximal_indep_set_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -850,7 +1152,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 28, "id": "1be09ed9-7b67-4737-935c-a941fd6fa246", "metadata": {}, "outputs": [ @@ -889,27 +1191,27 @@ " \n", " \n", " 0\n", - " Justin\n", + " Eddie\n", " Person\n", - " Justin\n", + " Eddie\n", " 0\n", " \n", " False\n", " False\n", " True\n", - " 549453824\n", + " 347078656\n", " \n", " \n", " 1\n", - " Damon\n", + " Justin\n", " Person\n", - " Damon\n", + " Justin\n", " 0\n", " \n", " False\n", " False\n", " True\n", - " 495976448\n", + " 373293056\n", " \n", " \n", " 2\n", @@ -933,7 +1235,7 @@ " False\n", " False\n", " True\n", - " 526385152\n", + " 369098752\n", " \n", " \n", " 4\n", @@ -953,8 +1255,8 @@ ], "text/plain": [ " v_id v_type attributes.name attributes.score attributes.tag \\\n", - "0 Justin Person Justin 0 \n", - "1 Damon Person Damon 0 \n", + "0 Eddie Person Eddie 0 \n", + "1 Justin Person Justin 0 \n", "2 dirTarget Person dirTarget 0 \n", "3 Ivy Person Ivy 0 \n", "4 source Person source 0 \n", @@ -967,10 +1269,10 @@ "4 False False True \n", "\n", " attributes.@min_vid \n", - "0 549453824 \n", - "1 495976448 \n", + "0 347078656 \n", + "1 373293056 \n", "2 9223372036854775807 \n", - "3 526385152 \n", + "3 369098752 \n", "4 9223372036854775807 " ] }, @@ -979,6 +1281,7 @@ } ], "source": [ + "results = feat.runAlgorithm(\"tg_maximal_indep_set\", params=params)\n", "df_maximal_indep_set = pd.json_normalize(results, record_path =['Start'])\n", "display(df_maximal_indep_set)" ] @@ -1011,7 +1314,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 29, "id": "26786af6-5a98-4c13-b260-a2f81f628cfb", "metadata": {}, "outputs": [], @@ -1023,9 +1326,67 @@ " \"print_color_count\": True,\n", " \"print_stats\": True,\n", " \"file_path\": \"\"\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "dad1e0ab-8472-4c6b-9167-3f826aa3f04c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 130.72 MiB, increment: 0.04 MiB\n", + "The CPU usage is: 24.8\n", + "RAM Used (GB): 10.425483264\n", + "tg_greedy_graph_coloring executed successfully\n", + "execution time: 39.27679681777954 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_greedy_graph_coloring\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", "\n", - "results = feat.runAlgorithm(\"tg_greedy_graph_coloring\", params=params)" + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_greedy_graph_coloring executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_greedy_graph_coloring_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -1040,7 +1401,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 32, "id": "18643de9-76f1-40b3-ab9b-881f2162a3dd", "metadata": {}, "outputs": [ @@ -1050,75 +1411,75 @@ "text": [ "[\n", " {\n", - " \"color_count\": 3\n", + " \"color_count\": 4\n", " },\n", " {\n", " \"start\": [\n", " {\n", - " \"v_id\": \"Justin\",\n", + " \"v_id\": \"Eddie\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", " \"start.@sum_color_vertex\": 3\n", " }\n", " },\n", " {\n", - " \"v_id\": \"Damon\",\n", + " \"v_id\": \"Ivy\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", - " \"start.@sum_color_vertex\": 3\n", + " \"start.@sum_color_vertex\": 4\n", " }\n", " },\n", " {\n", - " \"v_id\": \"Eddie\",\n", + " \"v_id\": \"Justin\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", - " \"start.@sum_color_vertex\": 1\n", + " \"start.@sum_color_vertex\": 4\n", " }\n", " },\n", " {\n", - " \"v_id\": \"Ivy\",\n", + " \"v_id\": \"Damon\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", " \"start.@sum_color_vertex\": 2\n", " }\n", " },\n", " {\n", - " \"v_id\": \"Fiona\",\n", + " \"v_id\": \"Bob\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", - " \"start.@sum_color_vertex\": 1\n", + " \"start.@sum_color_vertex\": 2\n", " }\n", " },\n", " {\n", - " \"v_id\": \"Alex\",\n", + " \"v_id\": \"George\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", " \"start.@sum_color_vertex\": 2\n", " }\n", " },\n", " {\n", - " \"v_id\": \"Chase\",\n", + " \"v_id\": \"Howard\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", - " \"start.@sum_color_vertex\": 2\n", + " \"start.@sum_color_vertex\": 1\n", " }\n", " },\n", " {\n", - " \"v_id\": \"George\",\n", + " \"v_id\": \"Alex\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", - " \"start.@sum_color_vertex\": 3\n", + " \"start.@sum_color_vertex\": 1\n", " }\n", " },\n", " {\n", - " \"v_id\": \"Bob\",\n", + " \"v_id\": \"Fiona\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", - " \"start.@sum_color_vertex\": 1\n", + " \"start.@sum_color_vertex\": 3\n", " }\n", " },\n", " {\n", - " \"v_id\": \"Howard\",\n", + " \"v_id\": \"Chase\",\n", " \"v_type\": \"Person\",\n", " \"attributes\": {\n", " \"start.@sum_color_vertex\": 1\n", @@ -1131,6 +1492,7 @@ } ], "source": [ + "results = feat.runAlgorithm(\"tg_greedy_graph_coloring\", params=params)\n", "r = json.dumps(results, indent = 1)\n", "print (r)" ] diff --git a/algos/community.ipynb b/algos/community.ipynb index bd9b5c4..bcb3ac6 100644 --- a/algos/community.ipynb +++ b/algos/community.ipynb @@ -38,7 +38,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c3e73208d4ac48cf88f9ef0d0c982b07", + "model_id": "b901ddd72d41406aa4eff1b3c493646f", "version_major": 2, "version_minor": 0 }, @@ -88,7 +88,7 @@ "output_type": "stream", "text": [ "---- Checking database ----\n", - "A graph with name ldbc_snb already exists in the database. Please drop it first before ingesting.\n" + "A graph with name ldbc_snb already exists in the database. Skip ingestion.\n" ] } ], @@ -113,7 +113,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e8c7958603db47448d495a5aa2488984", + "model_id": "a7209c619e54480c88960bb6a29c924c", "version_major": 2, "version_minor": 0 }, @@ -306,24 +306,85 @@ "id": "63c71ba6-b7fa-4044-99a1-daa5aa80769a", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.9/site-packages/memory_profiler.py:1136: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " ipython_version = LooseVersion(IPython.__version__)\n", + "/opt/conda/lib/python3.9/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " other = LooseVersion(other)\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "Altering graph schema to save results...\n", - "The job add_VERTEX_attr_WwpiRB completes in 2.405 seconds!\n", + "The job add_VERTEX_attr_susmAk completes in 69.328 seconds!\n", "Installing and optimizing the queries, it might take a minute...\n", - "Queries installed successfully\n" + "Queries installed successfully\n", + "peak memory: 124.29 MiB, increment: 1.67 MiB\n", + "The CPU usage is: 32.6\n", + "RAM Used (GB): 10.552430592\n", + "tg_scc executed successfully\n", + "execution time: 115.15825653076172 seconds\n", + "\n" ] } ], "source": [ + "import csv\n", + "import os\n", + "import time\n", + "import psutil\n", + "!pip install memory_profiler\n", + "%load_ext memory_profiler\n", + "\n", + "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "\n", + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_scc\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_scc executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_scc_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_community.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)\n", "res = feat.runAlgorithm(\"tg_scc\", params=params)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "d04adc5c-01dd-4194-9df7-f5d66c1b0a53", "metadata": {}, "outputs": [ @@ -359,83 +420,101 @@ " browser_used\n", " speaks\n", " email\n", + " pagerank\n", + " pagerank_wt\n", + " article_rank\n", " tg_scc\n", " \n", " \n", " \n", " \n", " 0\n", - " 2199023264346\n", - " 2199023264346\n", - " Carlos\n", - " Gutierrez\n", - " male\n", - " 1985-04-19 00:00:00\n", - " 2010-03-10 12:52:07\n", - " 201.220.206.82\n", - " Firefox\n", - " [es, en]\n", - " [Carlos2199023264346@gmail.com, Carlos21990232...\n", + " 32985348841576\n", + " 32985348841576\n", + " Fritz\n", + " Becker\n", + " female\n", + " 1983-07-29 00:00:00\n", + " 2012-07-24 06:25:03\n", + " 31.13.171.49\n", + " Chrome\n", + " [de, en]\n", + " [Fritz32985348841576@gmail.com]\n", + " 0.29449\n", + " 0.15\n", + " 3.425802e+30\n", " 1\n", " \n", " \n", " 1\n", - " 21990232566217\n", - " 21990232566217\n", - " Frank\n", - " Burns\n", - " male\n", - " 1986-07-19 00:00:00\n", - " 2011-10-31 06:33:04\n", - " 14.1.16.88\n", - " Opera\n", - " [vi, en]\n", - " [Frank21990232566217@hotmail.com]\n", + " 19791209301554\n", + " 19791209301554\n", + " Carlos\n", + " Santos\n", + " female\n", + " 1986-06-28 00:00:00\n", + " 2011-07-23 00:11:56\n", + " 198.12.38.156\n", + " Firefox\n", + " [pt, en]\n", + " [Carlos19791209301554@yahoo.com]\n", + " 1.41297\n", + " 0.15\n", + " 2.700411e+31\n", " 1\n", " \n", " \n", " 2\n", - " 19791209304430\n", - " 19791209304430\n", - " Paul\n", - " Fayed\n", + " 15393162790168\n", + " 15393162790168\n", + " Moses\n", + " Znaimer\n", " male\n", - " 1984-11-28 00:00:00\n", - " 2011-08-05 06:38:58\n", - " 62.12.112.179\n", - " Chrome\n", - " [ar, fr, en]\n", - " [Paul19791209304430@gmx.com, Paul1979120930443...\n", + " 1980-08-17 00:00:00\n", + " 2011-04-11 03:03:01\n", + " 77.244.155.199\n", + " Firefox\n", + " [tg, ru, en]\n", + " [Moses15393162790168@gmail.com, Moses153931627...\n", + " 0.61351\n", + " 0.15\n", + " 1.104205e+31\n", " 1\n", " \n", " \n", " 3\n", - " 17592186051479\n", - " 17592186051479\n", - " Karim\n", - " Ben Dhifallah\n", + " 6597069769941\n", + " 6597069769941\n", + " Manuel\n", + " Perez\n", " male\n", - " 1980-04-06 00:00:00\n", - " 2011-05-11 04:24:17\n", - " 193.95.38.162\n", + " 1983-02-09 00:00:00\n", + " 2010-08-05 01:03:35\n", + " 31.177.51.194\n", " Internet Explorer\n", - " [ar, en]\n", - " [Karim17592186051479@gmx.com, Karim17592186051...\n", + " [es, en]\n", + " [Manuel6597069769941@gmail.com, Manuel65970697...\n", + " 1.02073\n", + " 0.15\n", + " 2.007961e+31\n", " 1\n", " \n", " \n", " 4\n", - " 8796093024532\n", - " 8796093024532\n", - " David\n", - " Jones\n", + " 32985348835764\n", + " 32985348835764\n", + " Andrew\n", + " Yang\n", " female\n", - " 1988-09-30 00:00:00\n", - " 2010-10-24 07:09:31\n", - " 24.40.220.150\n", - " Internet Explorer\n", - " [en]\n", - " [David8796093024532@gmx.com]\n", + " 1989-01-29 00:00:00\n", + " 2012-08-03 10:49:17\n", + " 49.128.82.58\n", + " Firefox\n", + " [zh, en]\n", + " [Andrew32985348835764@gmail.com]\n", + " 0.19768\n", + " 0.15\n", + " 9.344614e+29\n", " 1\n", " \n", " \n", @@ -452,24 +531,66 @@ " ...\n", " ...\n", " ...\n", + " ...\n", + " ...\n", + " ...\n", " \n", " \n", " 9887\n", - " 15393162794991\n", - " 15393162794991\n", - " Deepak\n", - " Kapoor\n", + " 10995116286967\n", + " 10995116286967\n", + " Li\n", + " Wang\n", + " female\n", + " 1980-06-22 00:00:00\n", + " 2010-12-20 02:17:26\n", + " 27.98.218.4\n", + " Firefox\n", + " [zh, en]\n", + " [Li10995116286967@gmail.com, Li10995116286967@...\n", + " 0.21135\n", + " 0.15\n", + " 1.489761e+30\n", + " 1\n", + " \n", + " \n", + " 9888\n", + " 2199023258090\n", + " 2199023258090\n", + " Abderraouf\n", + " David\n", " male\n", - " 1982-09-13 00:00:00\n", - " 2011-04-03 11:47:23\n", - " 49.156.125.15\n", + " 1984-02-06 00:00:00\n", + " 2010-03-28 15:46:35\n", + " 192.68.138.187\n", + " Internet Explorer\n", + " [ar, fr, en]\n", + " [Abderraouf2199023258090@gmail.com, Abderraouf...\n", + " 0.31669\n", + " 0.15\n", + " 3.608502e+30\n", + " 1\n", + " \n", + " \n", + " 9889\n", + " 17592186053731\n", + " 17592186053731\n", + " Antonio\n", + " Chavez\n", + " female\n", + " 1988-12-09 00:00:00\n", + " 2011-06-05 14:51:34\n", + " 187.161.83.235\n", " Chrome\n", - " [as, en]\n", - " [Deepak15393162794991@gmail.com, Deepak1539316...\n", + " [es, en]\n", + " [Antonio17592186053731@hotmail.com, Antonio175...\n", + " 1.15352\n", + " 0.15\n", + " 2.076123e+31\n", " 1\n", " \n", " \n", - " 9888\n", + " 9890\n", " 4398046511145\n", " 4398046511145\n", " John\n", @@ -481,112 +602,101 @@ " Safari\n", " [gu, mr, en]\n", " [John4398046511145@gmail.com, John439804651114...\n", - " 1\n", - " \n", - " \n", - " 9889\n", - " 24189255821919\n", - " 24189255821919\n", - " A.\n", - " Sharma\n", - " female\n", - " 1988-07-15 00:00:00\n", - " 2011-11-14 16:04:58\n", - " 14.1.115.164\n", - " Internet Explorer\n", - " [bn, kn, en]\n", - " [A.24189255821919@gmail.com, A.24189255821919@...\n", - " 1\n", - " \n", - " \n", - " 9890\n", - " 26388279076505\n", - " 26388279076505\n", - " Antonio\n", - " Alvarez\n", - " male\n", - " 1984-11-23 00:00:00\n", - " 2012-02-12 03:42:00\n", - " 200.55.184.105\n", - " Firefox\n", - " [es, en]\n", - " [Antonio26388279076505@gmail.com, Antonio26388...\n", + " 1.01440\n", + " 0.15\n", + " 1.954525e+31\n", " 1\n", " \n", " \n", " 9891\n", - " 6597069777015\n", - " 6597069777015\n", - " Albin\n", - " Delic\n", + " 2199023257716\n", + " 2199023257716\n", + " Jie\n", + " Chen\n", " male\n", - " 1988-04-29 00:00:00\n", - " 2010-08-23 15:59:50\n", - " 80.87.248.253\n", - " Internet Explorer\n", - " [bs, en]\n", - " [Albin6597069777015@gmail.com]\n", + " 1985-05-06 00:00:00\n", + " 2010-04-23 06:16:04\n", + " 1.0.63.9\n", + " Chrome\n", + " [zh, en]\n", + " [Jie2199023257716@gmail.com, Jie2199023257716@...\n", + " 1.16429\n", + " 0.15\n", + " 2.115465e+31\n", " 1\n", " \n", " \n", "\n", - "

9892 rows × 12 columns

\n", + "

9892 rows × 15 columns

\n", "" ], "text/plain": [ - " v_id id first_name last_name gender \\\n", - "0 2199023264346 2199023264346 Carlos Gutierrez male \n", - "1 21990232566217 21990232566217 Frank Burns male \n", - "2 19791209304430 19791209304430 Paul Fayed male \n", - "3 17592186051479 17592186051479 Karim Ben Dhifallah male \n", - "4 8796093024532 8796093024532 David Jones female \n", - "... ... ... ... ... ... \n", - "9887 15393162794991 15393162794991 Deepak Kapoor male \n", - "9888 4398046511145 4398046511145 John Kumar male \n", - "9889 24189255821919 24189255821919 A. Sharma female \n", - "9890 26388279076505 26388279076505 Antonio Alvarez male \n", - "9891 6597069777015 6597069777015 Albin Delic male \n", + " v_id id first_name last_name gender \\\n", + "0 32985348841576 32985348841576 Fritz Becker female \n", + "1 19791209301554 19791209301554 Carlos Santos female \n", + "2 15393162790168 15393162790168 Moses Znaimer male \n", + "3 6597069769941 6597069769941 Manuel Perez male \n", + "4 32985348835764 32985348835764 Andrew Yang female \n", + "... ... ... ... ... ... \n", + "9887 10995116286967 10995116286967 Li Wang female \n", + "9888 2199023258090 2199023258090 Abderraouf David male \n", + "9889 17592186053731 17592186053731 Antonio Chavez female \n", + "9890 4398046511145 4398046511145 John Kumar male \n", + "9891 2199023257716 2199023257716 Jie Chen male \n", "\n", " birthday creation_date location_ip \\\n", - "0 1985-04-19 00:00:00 2010-03-10 12:52:07 201.220.206.82 \n", - "1 1986-07-19 00:00:00 2011-10-31 06:33:04 14.1.16.88 \n", - "2 1984-11-28 00:00:00 2011-08-05 06:38:58 62.12.112.179 \n", - "3 1980-04-06 00:00:00 2011-05-11 04:24:17 193.95.38.162 \n", - "4 1988-09-30 00:00:00 2010-10-24 07:09:31 24.40.220.150 \n", + "0 1983-07-29 00:00:00 2012-07-24 06:25:03 31.13.171.49 \n", + "1 1986-06-28 00:00:00 2011-07-23 00:11:56 198.12.38.156 \n", + "2 1980-08-17 00:00:00 2011-04-11 03:03:01 77.244.155.199 \n", + "3 1983-02-09 00:00:00 2010-08-05 01:03:35 31.177.51.194 \n", + "4 1989-01-29 00:00:00 2012-08-03 10:49:17 49.128.82.58 \n", "... ... ... ... \n", - "9887 1982-09-13 00:00:00 2011-04-03 11:47:23 49.156.125.15 \n", - "9888 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", - "9889 1988-07-15 00:00:00 2011-11-14 16:04:58 14.1.115.164 \n", - "9890 1984-11-23 00:00:00 2012-02-12 03:42:00 200.55.184.105 \n", - "9891 1988-04-29 00:00:00 2010-08-23 15:59:50 80.87.248.253 \n", + "9887 1980-06-22 00:00:00 2010-12-20 02:17:26 27.98.218.4 \n", + "9888 1984-02-06 00:00:00 2010-03-28 15:46:35 192.68.138.187 \n", + "9889 1988-12-09 00:00:00 2011-06-05 14:51:34 187.161.83.235 \n", + "9890 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", + "9891 1985-05-06 00:00:00 2010-04-23 06:16:04 1.0.63.9 \n", "\n", " browser_used speaks \\\n", - "0 Firefox [es, en] \n", - "1 Opera [vi, en] \n", - "2 Chrome [ar, fr, en] \n", - "3 Internet Explorer [ar, en] \n", - "4 Internet Explorer [en] \n", + "0 Chrome [de, en] \n", + "1 Firefox [pt, en] \n", + "2 Firefox [tg, ru, en] \n", + "3 Internet Explorer [es, en] \n", + "4 Firefox [zh, en] \n", "... ... ... \n", - "9887 Chrome [as, en] \n", - "9888 Safari [gu, mr, en] \n", - "9889 Internet Explorer [bn, kn, en] \n", - "9890 Firefox [es, en] \n", - "9891 Internet Explorer [bs, en] \n", + "9887 Firefox [zh, en] \n", + "9888 Internet Explorer [ar, fr, en] \n", + "9889 Chrome [es, en] \n", + "9890 Safari [gu, mr, en] \n", + "9891 Chrome [zh, en] \n", "\n", - " email tg_scc \n", - "0 [Carlos2199023264346@gmail.com, Carlos21990232... 1 \n", - "1 [Frank21990232566217@hotmail.com] 1 \n", - "2 [Paul19791209304430@gmx.com, Paul1979120930443... 1 \n", - "3 [Karim17592186051479@gmx.com, Karim17592186051... 1 \n", - "4 [David8796093024532@gmx.com] 1 \n", - "... ... ... \n", - "9887 [Deepak15393162794991@gmail.com, Deepak1539316... 1 \n", - "9888 [John4398046511145@gmail.com, John439804651114... 1 \n", - "9889 [A.24189255821919@gmail.com, A.24189255821919@... 1 \n", - "9890 [Antonio26388279076505@gmail.com, Antonio26388... 1 \n", - "9891 [Albin6597069777015@gmail.com] 1 \n", + " email pagerank \\\n", + "0 [Fritz32985348841576@gmail.com] 0.29449 \n", + "1 [Carlos19791209301554@yahoo.com] 1.41297 \n", + "2 [Moses15393162790168@gmail.com, Moses153931627... 0.61351 \n", + "3 [Manuel6597069769941@gmail.com, Manuel65970697... 1.02073 \n", + "4 [Andrew32985348835764@gmail.com] 0.19768 \n", + "... ... ... \n", + "9887 [Li10995116286967@gmail.com, Li10995116286967@... 0.21135 \n", + "9888 [Abderraouf2199023258090@gmail.com, Abderraouf... 0.31669 \n", + "9889 [Antonio17592186053731@hotmail.com, Antonio175... 1.15352 \n", + "9890 [John4398046511145@gmail.com, John439804651114... 1.01440 \n", + "9891 [Jie2199023257716@gmail.com, Jie2199023257716@... 1.16429 \n", "\n", - "[9892 rows x 12 columns]" + " pagerank_wt article_rank tg_scc \n", + "0 0.15 3.425802e+30 1 \n", + "1 0.15 2.700411e+31 1 \n", + "2 0.15 1.104205e+31 1 \n", + "3 0.15 2.007961e+31 1 \n", + "4 0.15 9.344614e+29 1 \n", + "... ... ... ... \n", + "9887 0.15 1.489761e+30 1 \n", + "9888 0.15 3.608502e+30 1 \n", + "9889 0.15 2.076123e+31 1 \n", + "9890 0.15 1.954525e+31 1 \n", + "9891 0.15 2.115465e+31 1 \n", + "\n", + "[9892 rows x 15 columns]" ] }, "metadata": {}, @@ -608,16 +718,16 @@ "data": { "text/plain": [ "1 9163\n", - "11534594 1\n", - "11534629 1\n", - "11534638 1\n", - "10485762 1\n", + "15728918 1\n", + "14680070 1\n", + "14680075 1\n", + "14680077 1\n", " ... \n", - "20971620 1\n", - "20971630 1\n", - "20971640 1\n", - "20971649 1\n", - "314 1\n", + "28311731 1\n", + "28311742 1\n", + "28311758 1\n", + "28311770 1\n", + "307 1\n", "Name: tg_scc, Length: 730, dtype: int64" ] }, @@ -641,7 +751,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 13, "id": "a884a979-6fa3-4b38-94c5-d2337c29cdcd", "metadata": {}, "outputs": [], @@ -661,17 +771,69 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 14, "id": "90953be5-feda-4db9-b4fe-8e6184871d6a", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Altering graph schema to save results...\n", + "The job add_VERTEX_attr_Ebzptv completes in 26.866 seconds!\n", + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 153.48 MiB, increment: 0.09 MiB\n", + "The CPU usage is: 31.6\n", + "RAM Used (GB): 10.61070848\n", + "tg_kcore executed successfully\n", + "execution time: 68.03278827667236 seconds\n", + "\n" + ] + } + ], "source": [ - "res = feat.runAlgorithm(\"tg_kcore\", params = params)" + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_kcore\", params = params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_kcore executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_kcore_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_community.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)\n" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 15, "id": "24f71a76-b238-408c-b51a-4e7f9b02c889", "metadata": {}, "outputs": [ @@ -707,96 +869,108 @@ " browser_used\n", " speaks\n", " email\n", + " pagerank\n", + " pagerank_wt\n", + " article_rank\n", " tg_scc\n", - " tg_louvain\n", " tg_kcore\n", " \n", " \n", " \n", " \n", " 0\n", - " 2199023264346\n", - " 2199023264346\n", - " Carlos\n", - " Gutierrez\n", - " male\n", - " 1985-04-19 00:00:00\n", - " 2010-03-10 12:52:07\n", - " 201.220.206.82\n", - " Firefox\n", - " [es, en]\n", - " [Carlos2199023264346@gmail.com, Carlos21990232...\n", + " 32985348841576\n", + " 32985348841576\n", + " Fritz\n", + " Becker\n", + " female\n", + " 1983-07-29 00:00:00\n", + " 2012-07-24 06:25:03\n", + " 31.13.171.49\n", + " Chrome\n", + " [de, en]\n", + " [Fritz32985348841576@gmail.com]\n", + " 0.29449\n", + " 0.15\n", + " 3.425802e+30\n", " 1\n", - " 32505856\n", - " 20\n", + " 7\n", " \n", " \n", " 1\n", - " 21990232566217\n", - " 21990232566217\n", - " Frank\n", - " Burns\n", - " male\n", - " 1986-07-19 00:00:00\n", - " 2011-10-31 06:33:04\n", - " 14.1.16.88\n", - " Opera\n", - " [vi, en]\n", - " [Frank21990232566217@hotmail.com]\n", + " 19791209301554\n", + " 19791209301554\n", + " Carlos\n", + " Santos\n", + " female\n", + " 1986-06-28 00:00:00\n", + " 2011-07-23 00:11:56\n", + " 198.12.38.156\n", + " Firefox\n", + " [pt, en]\n", + " [Carlos19791209301554@yahoo.com]\n", + " 1.41297\n", + " 0.15\n", + " 2.700411e+31\n", " 1\n", - " 32505857\n", - " 2\n", + " 42\n", " \n", " \n", " 2\n", - " 19791209304430\n", - " 19791209304430\n", - " Paul\n", - " Fayed\n", + " 15393162790168\n", + " 15393162790168\n", + " Moses\n", + " Znaimer\n", " male\n", - " 1984-11-28 00:00:00\n", - " 2011-08-05 06:38:58\n", - " 62.12.112.179\n", - " Chrome\n", - " [ar, fr, en]\n", - " [Paul19791209304430@gmx.com, Paul1979120930443...\n", + " 1980-08-17 00:00:00\n", + " 2011-04-11 03:03:01\n", + " 77.244.155.199\n", + " Firefox\n", + " [tg, ru, en]\n", + " [Moses15393162790168@gmail.com, Moses153931627...\n", + " 0.61351\n", + " 0.15\n", + " 1.104205e+31\n", " 1\n", - " 32505858\n", - " 21\n", + " 23\n", " \n", " \n", " 3\n", - " 17592186051479\n", - " 17592186051479\n", - " Karim\n", - " Ben Dhifallah\n", + " 6597069769941\n", + " 6597069769941\n", + " Manuel\n", + " Perez\n", " male\n", - " 1980-04-06 00:00:00\n", - " 2011-05-11 04:24:17\n", - " 193.95.38.162\n", + " 1983-02-09 00:00:00\n", + " 2010-08-05 01:03:35\n", + " 31.177.51.194\n", " Internet Explorer\n", - " [ar, en]\n", - " [Karim17592186051479@gmx.com, Karim17592186051...\n", + " [es, en]\n", + " [Manuel6597069769941@gmail.com, Manuel65970697...\n", + " 1.02073\n", + " 0.15\n", + " 2.007961e+31\n", " 1\n", - " 32505859\n", - " 10\n", + " 39\n", " \n", " \n", " 4\n", - " 8796093024532\n", - " 8796093024532\n", - " David\n", - " Jones\n", + " 32985348835764\n", + " 32985348835764\n", + " Andrew\n", + " Yang\n", " female\n", - " 1988-09-30 00:00:00\n", - " 2010-10-24 07:09:31\n", - " 24.40.220.150\n", - " Internet Explorer\n", - " [en]\n", - " [David8796093024532@gmx.com]\n", + " 1989-01-29 00:00:00\n", + " 2012-08-03 10:49:17\n", + " 49.128.82.58\n", + " Firefox\n", + " [zh, en]\n", + " [Andrew32985348835764@gmail.com]\n", + " 0.19768\n", + " 0.15\n", + " 9.344614e+29\n", " 1\n", - " 32505860\n", - " 25\n", + " 2\n", " \n", " \n", " ...\n", @@ -814,26 +988,68 @@ " ...\n", " ...\n", " ...\n", + " ...\n", + " ...\n", " \n", " \n", " 9887\n", - " 15393162794991\n", - " 15393162794991\n", - " Deepak\n", - " Kapoor\n", + " 10995116286967\n", + " 10995116286967\n", + " Li\n", + " Wang\n", + " female\n", + " 1980-06-22 00:00:00\n", + " 2010-12-20 02:17:26\n", + " 27.98.218.4\n", + " Firefox\n", + " [zh, en]\n", + " [Li10995116286967@gmail.com, Li10995116286967@...\n", + " 0.21135\n", + " 0.15\n", + " 1.489761e+30\n", + " 1\n", + " 3\n", + " \n", + " \n", + " 9888\n", + " 2199023258090\n", + " 2199023258090\n", + " Abderraouf\n", + " David\n", " male\n", - " 1982-09-13 00:00:00\n", - " 2011-04-03 11:47:23\n", - " 49.156.125.15\n", + " 1984-02-06 00:00:00\n", + " 2010-03-28 15:46:35\n", + " 192.68.138.187\n", + " Internet Explorer\n", + " [ar, fr, en]\n", + " [Abderraouf2199023258090@gmail.com, Abderraouf...\n", + " 0.31669\n", + " 0.15\n", + " 3.608502e+30\n", + " 1\n", + " 8\n", + " \n", + " \n", + " 9889\n", + " 17592186053731\n", + " 17592186053731\n", + " Antonio\n", + " Chavez\n", + " female\n", + " 1988-12-09 00:00:00\n", + " 2011-06-05 14:51:34\n", + " 187.161.83.235\n", " Chrome\n", - " [as, en]\n", - " [Deepak15393162794991@gmail.com, Deepak1539316...\n", + " [es, en]\n", + " [Antonio17592186053731@hotmail.com, Antonio175...\n", + " 1.15352\n", + " 0.15\n", + " 2.076123e+31\n", " 1\n", - " 316\n", - " 42\n", + " 38\n", " \n", " \n", - " 9888\n", + " 9890\n", " 4398046511145\n", " 4398046511145\n", " John\n", @@ -845,133 +1061,103 @@ " Safari\n", " [gu, mr, en]\n", " [John4398046511145@gmail.com, John439804651114...\n", + " 1.01440\n", + " 0.15\n", + " 1.954525e+31\n", " 1\n", - " 317\n", " 40\n", " \n", " \n", - " 9889\n", - " 24189255821919\n", - " 24189255821919\n", - " A.\n", - " Sharma\n", - " female\n", - " 1988-07-15 00:00:00\n", - " 2011-11-14 16:04:58\n", - " 14.1.115.164\n", - " Internet Explorer\n", - " [bn, kn, en]\n", - " [A.24189255821919@gmail.com, A.24189255821919@...\n", - " 1\n", - " 318\n", - " 5\n", - " \n", - " \n", - " 9890\n", - " 26388279076505\n", - " 26388279076505\n", - " Antonio\n", - " Alvarez\n", - " male\n", - " 1984-11-23 00:00:00\n", - " 2012-02-12 03:42:00\n", - " 200.55.184.105\n", - " Firefox\n", - " [es, en]\n", - " [Antonio26388279076505@gmail.com, Antonio26388...\n", - " 1\n", - " 319\n", - " 1\n", - " \n", - " \n", " 9891\n", - " 6597069777015\n", - " 6597069777015\n", - " Albin\n", - " Delic\n", + " 2199023257716\n", + " 2199023257716\n", + " Jie\n", + " Chen\n", " male\n", - " 1988-04-29 00:00:00\n", - " 2010-08-23 15:59:50\n", - " 80.87.248.253\n", - " Internet Explorer\n", - " [bs, en]\n", - " [Albin6597069777015@gmail.com]\n", + " 1985-05-06 00:00:00\n", + " 2010-04-23 06:16:04\n", + " 1.0.63.9\n", + " Chrome\n", + " [zh, en]\n", + " [Jie2199023257716@gmail.com, Jie2199023257716@...\n", + " 1.16429\n", + " 0.15\n", + " 2.115465e+31\n", " 1\n", - " 320\n", - " 39\n", + " 37\n", " \n", " \n", "\n", - "

9892 rows × 14 columns

\n", + "

9892 rows × 16 columns

\n", "" ], "text/plain": [ - " v_id id first_name last_name gender \\\n", - "0 2199023264346 2199023264346 Carlos Gutierrez male \n", - "1 21990232566217 21990232566217 Frank Burns male \n", - "2 19791209304430 19791209304430 Paul Fayed male \n", - "3 17592186051479 17592186051479 Karim Ben Dhifallah male \n", - "4 8796093024532 8796093024532 David Jones female \n", - "... ... ... ... ... ... \n", - "9887 15393162794991 15393162794991 Deepak Kapoor male \n", - "9888 4398046511145 4398046511145 John Kumar male \n", - "9889 24189255821919 24189255821919 A. Sharma female \n", - "9890 26388279076505 26388279076505 Antonio Alvarez male \n", - "9891 6597069777015 6597069777015 Albin Delic male \n", + " v_id id first_name last_name gender \\\n", + "0 32985348841576 32985348841576 Fritz Becker female \n", + "1 19791209301554 19791209301554 Carlos Santos female \n", + "2 15393162790168 15393162790168 Moses Znaimer male \n", + "3 6597069769941 6597069769941 Manuel Perez male \n", + "4 32985348835764 32985348835764 Andrew Yang female \n", + "... ... ... ... ... ... \n", + "9887 10995116286967 10995116286967 Li Wang female \n", + "9888 2199023258090 2199023258090 Abderraouf David male \n", + "9889 17592186053731 17592186053731 Antonio Chavez female \n", + "9890 4398046511145 4398046511145 John Kumar male \n", + "9891 2199023257716 2199023257716 Jie Chen male \n", "\n", " birthday creation_date location_ip \\\n", - "0 1985-04-19 00:00:00 2010-03-10 12:52:07 201.220.206.82 \n", - "1 1986-07-19 00:00:00 2011-10-31 06:33:04 14.1.16.88 \n", - "2 1984-11-28 00:00:00 2011-08-05 06:38:58 62.12.112.179 \n", - "3 1980-04-06 00:00:00 2011-05-11 04:24:17 193.95.38.162 \n", - "4 1988-09-30 00:00:00 2010-10-24 07:09:31 24.40.220.150 \n", + "0 1983-07-29 00:00:00 2012-07-24 06:25:03 31.13.171.49 \n", + "1 1986-06-28 00:00:00 2011-07-23 00:11:56 198.12.38.156 \n", + "2 1980-08-17 00:00:00 2011-04-11 03:03:01 77.244.155.199 \n", + "3 1983-02-09 00:00:00 2010-08-05 01:03:35 31.177.51.194 \n", + "4 1989-01-29 00:00:00 2012-08-03 10:49:17 49.128.82.58 \n", "... ... ... ... \n", - "9887 1982-09-13 00:00:00 2011-04-03 11:47:23 49.156.125.15 \n", - "9888 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", - "9889 1988-07-15 00:00:00 2011-11-14 16:04:58 14.1.115.164 \n", - "9890 1984-11-23 00:00:00 2012-02-12 03:42:00 200.55.184.105 \n", - "9891 1988-04-29 00:00:00 2010-08-23 15:59:50 80.87.248.253 \n", + "9887 1980-06-22 00:00:00 2010-12-20 02:17:26 27.98.218.4 \n", + "9888 1984-02-06 00:00:00 2010-03-28 15:46:35 192.68.138.187 \n", + "9889 1988-12-09 00:00:00 2011-06-05 14:51:34 187.161.83.235 \n", + "9890 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", + "9891 1985-05-06 00:00:00 2010-04-23 06:16:04 1.0.63.9 \n", "\n", " browser_used speaks \\\n", - "0 Firefox [es, en] \n", - "1 Opera [vi, en] \n", - "2 Chrome [ar, fr, en] \n", - "3 Internet Explorer [ar, en] \n", - "4 Internet Explorer [en] \n", + "0 Chrome [de, en] \n", + "1 Firefox [pt, en] \n", + "2 Firefox [tg, ru, en] \n", + "3 Internet Explorer [es, en] \n", + "4 Firefox [zh, en] \n", "... ... ... \n", - "9887 Chrome [as, en] \n", - "9888 Safari [gu, mr, en] \n", - "9889 Internet Explorer [bn, kn, en] \n", - "9890 Firefox [es, en] \n", - "9891 Internet Explorer [bs, en] \n", + "9887 Firefox [zh, en] \n", + "9888 Internet Explorer [ar, fr, en] \n", + "9889 Chrome [es, en] \n", + "9890 Safari [gu, mr, en] \n", + "9891 Chrome [zh, en] \n", "\n", - " email tg_scc tg_louvain \\\n", - "0 [Carlos2199023264346@gmail.com, Carlos21990232... 1 32505856 \n", - "1 [Frank21990232566217@hotmail.com] 1 32505857 \n", - "2 [Paul19791209304430@gmx.com, Paul1979120930443... 1 32505858 \n", - "3 [Karim17592186051479@gmx.com, Karim17592186051... 1 32505859 \n", - "4 [David8796093024532@gmx.com] 1 32505860 \n", - "... ... ... ... \n", - "9887 [Deepak15393162794991@gmail.com, Deepak1539316... 1 316 \n", - "9888 [John4398046511145@gmail.com, John439804651114... 1 317 \n", - "9889 [A.24189255821919@gmail.com, A.24189255821919@... 1 318 \n", - "9890 [Antonio26388279076505@gmail.com, Antonio26388... 1 319 \n", - "9891 [Albin6597069777015@gmail.com] 1 320 \n", + " email pagerank \\\n", + "0 [Fritz32985348841576@gmail.com] 0.29449 \n", + "1 [Carlos19791209301554@yahoo.com] 1.41297 \n", + "2 [Moses15393162790168@gmail.com, Moses153931627... 0.61351 \n", + "3 [Manuel6597069769941@gmail.com, Manuel65970697... 1.02073 \n", + "4 [Andrew32985348835764@gmail.com] 0.19768 \n", + "... ... ... \n", + "9887 [Li10995116286967@gmail.com, Li10995116286967@... 0.21135 \n", + "9888 [Abderraouf2199023258090@gmail.com, Abderraouf... 0.31669 \n", + "9889 [Antonio17592186053731@hotmail.com, Antonio175... 1.15352 \n", + "9890 [John4398046511145@gmail.com, John439804651114... 1.01440 \n", + "9891 [Jie2199023257716@gmail.com, Jie2199023257716@... 1.16429 \n", "\n", - " tg_kcore \n", - "0 20 \n", - "1 2 \n", - "2 21 \n", - "3 10 \n", - "4 25 \n", - "... ... \n", - "9887 42 \n", - "9888 40 \n", - "9889 5 \n", - "9890 1 \n", - "9891 39 \n", + " pagerank_wt article_rank tg_scc tg_kcore \n", + "0 0.15 3.425802e+30 1 7 \n", + "1 0.15 2.700411e+31 1 42 \n", + "2 0.15 1.104205e+31 1 23 \n", + "3 0.15 2.007961e+31 1 39 \n", + "4 0.15 9.344614e+29 1 2 \n", + "... ... ... ... ... \n", + "9887 0.15 1.489761e+30 1 3 \n", + "9888 0.15 3.608502e+30 1 8 \n", + "9889 0.15 2.076123e+31 1 38 \n", + "9890 0.15 1.954525e+31 1 40 \n", + "9891 0.15 2.115465e+31 1 37 \n", "\n", - "[9892 rows x 14 columns]" + "[9892 rows x 16 columns]" ] }, "metadata": {}, @@ -1016,12 +1202,12 @@ "25 123\n", "31 116\n", "29 114\n", - "21 113\n", "35 113\n", + "21 113\n", "24 112\n", "30 110\n", - "33 107\n", "34 107\n", + "33 107\n", "23 107\n", "27 104\n", "32 101\n", @@ -1029,7 +1215,7 @@ "Name: tg_kcore, dtype: int64" ] }, - "execution_count": 33, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -1051,7 +1237,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 16, "id": "30fb1c2f-90ef-4cc6-b509-d746b23ae589", "metadata": {}, "outputs": [], @@ -1069,7 +1255,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 17, "id": "5864e54d-ea1f-4e3a-9212-f86377563aed", "metadata": {}, "outputs": [ @@ -1078,29 +1264,60 @@ "output_type": "stream", "text": [ "Altering graph schema to save results...\n", - "The job add_VERTEX_attr_icyFZe completes in 45.064 seconds!\n", + "The job add_VERTEX_attr_tLtyph completes in 52.418 seconds!\n", "Installing and optimizing the queries, it might take a minute...\n", - "Queries installed successfully\n" + "Queries installed successfully\n", + "peak memory: 167.86 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 35.4\n", + "RAM Used (GB): 10.626502656\n", + "tg_louvain executed successfully\n", + "execution time: 98.339604139328 seconds\n", + "\n" ] - }, - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ - "res = feat.runAlgorithm(\"tg_louvain\", params = params)" + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_louvain\", params = params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_louvain executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"community_tg_louvain_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_community.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 20, "id": "00a7738c-abe5-4105-8187-a54b6b74c1da", "metadata": {}, "outputs": [ @@ -1136,90 +1353,114 @@ " browser_used\n", " speaks\n", " email\n", + " pagerank\n", + " pagerank_wt\n", + " article_rank\n", " tg_scc\n", + " tg_kcore\n", " tg_louvain\n", " \n", " \n", " \n", " \n", " 0\n", - " 2199023264346\n", - " 2199023264346\n", - " Carlos\n", - " Gutierrez\n", - " male\n", - " 1985-04-19 00:00:00\n", - " 2010-03-10 12:52:07\n", - " 201.220.206.82\n", - " Firefox\n", - " [es, en]\n", - " [Carlos2199023264346@gmail.com, Carlos21990232...\n", + " 32985348841576\n", + " 32985348841576\n", + " Fritz\n", + " Becker\n", + " female\n", + " 1983-07-29 00:00:00\n", + " 2012-07-24 06:25:03\n", + " 31.13.171.49\n", + " Chrome\n", + " [de, en]\n", + " [Fritz32985348841576@gmail.com]\n", + " 0.29449\n", + " 0.15\n", + " 3.425802e+30\n", " 1\n", - " 32505856\n", + " 7\n", + " 63963136\n", " \n", " \n", " 1\n", - " 21990232566217\n", - " 21990232566217\n", - " Frank\n", - " Burns\n", - " male\n", - " 1986-07-19 00:00:00\n", - " 2011-10-31 06:33:04\n", - " 14.1.16.88\n", - " Opera\n", - " [vi, en]\n", - " [Frank21990232566217@hotmail.com]\n", + " 19791209301554\n", + " 19791209301554\n", + " Carlos\n", + " Santos\n", + " female\n", + " 1986-06-28 00:00:00\n", + " 2011-07-23 00:11:56\n", + " 198.12.38.156\n", + " Firefox\n", + " [pt, en]\n", + " [Carlos19791209301554@yahoo.com]\n", + " 1.41297\n", + " 0.15\n", + " 2.700411e+31\n", " 1\n", - " 32505857\n", + " 42\n", + " 63963137\n", " \n", " \n", " 2\n", - " 19791209304430\n", - " 19791209304430\n", - " Paul\n", - " Fayed\n", + " 15393162790168\n", + " 15393162790168\n", + " Moses\n", + " Znaimer\n", " male\n", - " 1984-11-28 00:00:00\n", - " 2011-08-05 06:38:58\n", - " 62.12.112.179\n", - " Chrome\n", - " [ar, fr, en]\n", - " [Paul19791209304430@gmx.com, Paul1979120930443...\n", + " 1980-08-17 00:00:00\n", + " 2011-04-11 03:03:01\n", + " 77.244.155.199\n", + " Firefox\n", + " [tg, ru, en]\n", + " [Moses15393162790168@gmail.com, Moses153931627...\n", + " 0.61351\n", + " 0.15\n", + " 1.104205e+31\n", " 1\n", - " 32505858\n", + " 23\n", + " 63963138\n", " \n", " \n", " 3\n", - " 17592186051479\n", - " 17592186051479\n", - " Karim\n", - " Ben Dhifallah\n", + " 6597069769941\n", + " 6597069769941\n", + " Manuel\n", + " Perez\n", " male\n", - " 1980-04-06 00:00:00\n", - " 2011-05-11 04:24:17\n", - " 193.95.38.162\n", + " 1983-02-09 00:00:00\n", + " 2010-08-05 01:03:35\n", + " 31.177.51.194\n", " Internet Explorer\n", - " [ar, en]\n", - " [Karim17592186051479@gmx.com, Karim17592186051...\n", + " [es, en]\n", + " [Manuel6597069769941@gmail.com, Manuel65970697...\n", + " 1.02073\n", + " 0.15\n", + " 2.007961e+31\n", " 1\n", - " 32505859\n", + " 39\n", + " 63963139\n", " \n", " \n", " 4\n", - " 8796093024532\n", - " 8796093024532\n", - " David\n", - " Jones\n", + " 32985348835764\n", + " 32985348835764\n", + " Andrew\n", + " Yang\n", " female\n", - " 1988-09-30 00:00:00\n", - " 2010-10-24 07:09:31\n", - " 24.40.220.150\n", - " Internet Explorer\n", - " [en]\n", - " [David8796093024532@gmx.com]\n", + " 1989-01-29 00:00:00\n", + " 2012-08-03 10:49:17\n", + " 49.128.82.58\n", + " Firefox\n", + " [zh, en]\n", + " [Andrew32985348835764@gmail.com]\n", + " 0.19768\n", + " 0.15\n", + " 9.344614e+29\n", " 1\n", - " 32505860\n", + " 2\n", + " 63963140\n", " \n", " \n", " ...\n", @@ -1236,146 +1477,183 @@ " ...\n", " ...\n", " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", " \n", " \n", " 9887\n", - " 15393162794991\n", - " 15393162794991\n", - " Deepak\n", - " Kapoor\n", - " male\n", - " 1982-09-13 00:00:00\n", - " 2011-04-03 11:47:23\n", - " 49.156.125.15\n", - " Chrome\n", - " [as, en]\n", - " [Deepak15393162794991@gmail.com, Deepak1539316...\n", + " 10995116286967\n", + " 10995116286967\n", + " Li\n", + " Wang\n", + " female\n", + " 1980-06-22 00:00:00\n", + " 2010-12-20 02:17:26\n", + " 27.98.218.4\n", + " Firefox\n", + " [zh, en]\n", + " [Li10995116286967@gmail.com, Li10995116286967@...\n", + " 0.21135\n", + " 0.15\n", + " 1.489761e+30\n", " 1\n", + " 3\n", " 316\n", " \n", " \n", " 9888\n", - " 4398046511145\n", - " 4398046511145\n", - " John\n", - " Kumar\n", + " 2199023258090\n", + " 2199023258090\n", + " Abderraouf\n", + " David\n", " male\n", - " 1986-09-22 00:00:00\n", - " 2010-05-19 01:14:14\n", - " 27.116.33.147\n", - " Safari\n", - " [gu, mr, en]\n", - " [John4398046511145@gmail.com, John439804651114...\n", + " 1984-02-06 00:00:00\n", + " 2010-03-28 15:46:35\n", + " 192.68.138.187\n", + " Internet Explorer\n", + " [ar, fr, en]\n", + " [Abderraouf2199023258090@gmail.com, Abderraouf...\n", + " 0.31669\n", + " 0.15\n", + " 3.608502e+30\n", " 1\n", + " 8\n", " 317\n", " \n", " \n", " 9889\n", - " 24189255821919\n", - " 24189255821919\n", - " A.\n", - " Sharma\n", + " 17592186053731\n", + " 17592186053731\n", + " Antonio\n", + " Chavez\n", " female\n", - " 1988-07-15 00:00:00\n", - " 2011-11-14 16:04:58\n", - " 14.1.115.164\n", - " Internet Explorer\n", - " [bn, kn, en]\n", - " [A.24189255821919@gmail.com, A.24189255821919@...\n", + " 1988-12-09 00:00:00\n", + " 2011-06-05 14:51:34\n", + " 187.161.83.235\n", + " Chrome\n", + " [es, en]\n", + " [Antonio17592186053731@hotmail.com, Antonio175...\n", + " 1.15352\n", + " 0.15\n", + " 2.076123e+31\n", " 1\n", + " 38\n", " 318\n", " \n", " \n", " 9890\n", - " 26388279076505\n", - " 26388279076505\n", - " Antonio\n", - " Alvarez\n", + " 4398046511145\n", + " 4398046511145\n", + " John\n", + " Kumar\n", " male\n", - " 1984-11-23 00:00:00\n", - " 2012-02-12 03:42:00\n", - " 200.55.184.105\n", - " Firefox\n", - " [es, en]\n", - " [Antonio26388279076505@gmail.com, Antonio26388...\n", + " 1986-09-22 00:00:00\n", + " 2010-05-19 01:14:14\n", + " 27.116.33.147\n", + " Safari\n", + " [gu, mr, en]\n", + " [John4398046511145@gmail.com, John439804651114...\n", + " 1.01440\n", + " 0.15\n", + " 1.954525e+31\n", " 1\n", + " 40\n", " 319\n", " \n", " \n", " 9891\n", - " 6597069777015\n", - " 6597069777015\n", - " Albin\n", - " Delic\n", + " 2199023257716\n", + " 2199023257716\n", + " Jie\n", + " Chen\n", " male\n", - " 1988-04-29 00:00:00\n", - " 2010-08-23 15:59:50\n", - " 80.87.248.253\n", - " Internet Explorer\n", - " [bs, en]\n", - " [Albin6597069777015@gmail.com]\n", + " 1985-05-06 00:00:00\n", + " 2010-04-23 06:16:04\n", + " 1.0.63.9\n", + " Chrome\n", + " [zh, en]\n", + " [Jie2199023257716@gmail.com, Jie2199023257716@...\n", + " 1.16429\n", + " 0.15\n", + " 2.115465e+31\n", " 1\n", + " 37\n", " 320\n", " \n", " \n", "\n", - "

9892 rows × 13 columns

\n", + "

9892 rows × 17 columns

\n", "" ], "text/plain": [ - " v_id id first_name last_name gender \\\n", - "0 2199023264346 2199023264346 Carlos Gutierrez male \n", - "1 21990232566217 21990232566217 Frank Burns male \n", - "2 19791209304430 19791209304430 Paul Fayed male \n", - "3 17592186051479 17592186051479 Karim Ben Dhifallah male \n", - "4 8796093024532 8796093024532 David Jones female \n", - "... ... ... ... ... ... \n", - "9887 15393162794991 15393162794991 Deepak Kapoor male \n", - "9888 4398046511145 4398046511145 John Kumar male \n", - "9889 24189255821919 24189255821919 A. Sharma female \n", - "9890 26388279076505 26388279076505 Antonio Alvarez male \n", - "9891 6597069777015 6597069777015 Albin Delic male \n", + " v_id id first_name last_name gender \\\n", + "0 32985348841576 32985348841576 Fritz Becker female \n", + "1 19791209301554 19791209301554 Carlos Santos female \n", + "2 15393162790168 15393162790168 Moses Znaimer male \n", + "3 6597069769941 6597069769941 Manuel Perez male \n", + "4 32985348835764 32985348835764 Andrew Yang female \n", + "... ... ... ... ... ... \n", + "9887 10995116286967 10995116286967 Li Wang female \n", + "9888 2199023258090 2199023258090 Abderraouf David male \n", + "9889 17592186053731 17592186053731 Antonio Chavez female \n", + "9890 4398046511145 4398046511145 John Kumar male \n", + "9891 2199023257716 2199023257716 Jie Chen male \n", "\n", " birthday creation_date location_ip \\\n", - "0 1985-04-19 00:00:00 2010-03-10 12:52:07 201.220.206.82 \n", - "1 1986-07-19 00:00:00 2011-10-31 06:33:04 14.1.16.88 \n", - "2 1984-11-28 00:00:00 2011-08-05 06:38:58 62.12.112.179 \n", - "3 1980-04-06 00:00:00 2011-05-11 04:24:17 193.95.38.162 \n", - "4 1988-09-30 00:00:00 2010-10-24 07:09:31 24.40.220.150 \n", + "0 1983-07-29 00:00:00 2012-07-24 06:25:03 31.13.171.49 \n", + "1 1986-06-28 00:00:00 2011-07-23 00:11:56 198.12.38.156 \n", + "2 1980-08-17 00:00:00 2011-04-11 03:03:01 77.244.155.199 \n", + "3 1983-02-09 00:00:00 2010-08-05 01:03:35 31.177.51.194 \n", + "4 1989-01-29 00:00:00 2012-08-03 10:49:17 49.128.82.58 \n", "... ... ... ... \n", - "9887 1982-09-13 00:00:00 2011-04-03 11:47:23 49.156.125.15 \n", - "9888 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", - "9889 1988-07-15 00:00:00 2011-11-14 16:04:58 14.1.115.164 \n", - "9890 1984-11-23 00:00:00 2012-02-12 03:42:00 200.55.184.105 \n", - "9891 1988-04-29 00:00:00 2010-08-23 15:59:50 80.87.248.253 \n", + "9887 1980-06-22 00:00:00 2010-12-20 02:17:26 27.98.218.4 \n", + "9888 1984-02-06 00:00:00 2010-03-28 15:46:35 192.68.138.187 \n", + "9889 1988-12-09 00:00:00 2011-06-05 14:51:34 187.161.83.235 \n", + "9890 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", + "9891 1985-05-06 00:00:00 2010-04-23 06:16:04 1.0.63.9 \n", "\n", " browser_used speaks \\\n", - "0 Firefox [es, en] \n", - "1 Opera [vi, en] \n", - "2 Chrome [ar, fr, en] \n", - "3 Internet Explorer [ar, en] \n", - "4 Internet Explorer [en] \n", + "0 Chrome [de, en] \n", + "1 Firefox [pt, en] \n", + "2 Firefox [tg, ru, en] \n", + "3 Internet Explorer [es, en] \n", + "4 Firefox [zh, en] \n", "... ... ... \n", - "9887 Chrome [as, en] \n", - "9888 Safari [gu, mr, en] \n", - "9889 Internet Explorer [bn, kn, en] \n", - "9890 Firefox [es, en] \n", - "9891 Internet Explorer [bs, en] \n", + "9887 Firefox [zh, en] \n", + "9888 Internet Explorer [ar, fr, en] \n", + "9889 Chrome [es, en] \n", + "9890 Safari [gu, mr, en] \n", + "9891 Chrome [zh, en] \n", + "\n", + " email pagerank \\\n", + "0 [Fritz32985348841576@gmail.com] 0.29449 \n", + "1 [Carlos19791209301554@yahoo.com] 1.41297 \n", + "2 [Moses15393162790168@gmail.com, Moses153931627... 0.61351 \n", + "3 [Manuel6597069769941@gmail.com, Manuel65970697... 1.02073 \n", + "4 [Andrew32985348835764@gmail.com] 0.19768 \n", + "... ... ... \n", + "9887 [Li10995116286967@gmail.com, Li10995116286967@... 0.21135 \n", + "9888 [Abderraouf2199023258090@gmail.com, Abderraouf... 0.31669 \n", + "9889 [Antonio17592186053731@hotmail.com, Antonio175... 1.15352 \n", + "9890 [John4398046511145@gmail.com, John439804651114... 1.01440 \n", + "9891 [Jie2199023257716@gmail.com, Jie2199023257716@... 1.16429 \n", "\n", - " email tg_scc tg_louvain \n", - "0 [Carlos2199023264346@gmail.com, Carlos21990232... 1 32505856 \n", - "1 [Frank21990232566217@hotmail.com] 1 32505857 \n", - "2 [Paul19791209304430@gmx.com, Paul1979120930443... 1 32505858 \n", - "3 [Karim17592186051479@gmx.com, Karim17592186051... 1 32505859 \n", - "4 [David8796093024532@gmx.com] 1 32505860 \n", - "... ... ... ... \n", - "9887 [Deepak15393162794991@gmail.com, Deepak1539316... 1 316 \n", - "9888 [John4398046511145@gmail.com, John439804651114... 1 317 \n", - "9889 [A.24189255821919@gmail.com, A.24189255821919@... 1 318 \n", - "9890 [Antonio26388279076505@gmail.com, Antonio26388... 1 319 \n", - "9891 [Albin6597069777015@gmail.com] 1 320 \n", + " pagerank_wt article_rank tg_scc tg_kcore tg_louvain \n", + "0 0.15 3.425802e+30 1 7 63963136 \n", + "1 0.15 2.700411e+31 1 42 63963137 \n", + "2 0.15 1.104205e+31 1 23 63963138 \n", + "3 0.15 2.007961e+31 1 39 63963139 \n", + "4 0.15 9.344614e+29 1 2 63963140 \n", + "... ... ... ... ... ... \n", + "9887 0.15 1.489761e+30 1 3 316 \n", + "9888 0.15 3.608502e+30 1 8 317 \n", + "9889 0.15 2.076123e+31 1 38 318 \n", + "9890 0.15 1.954525e+31 1 40 319 \n", + "9891 0.15 2.115465e+31 1 37 320 \n", "\n", - "[9892 rows x 13 columns]" + "[9892 rows x 17 columns]" ] }, "metadata": {}, @@ -1384,21 +1662,21 @@ { "data": { "text/plain": [ - "32505856 1\n", - "32505862 1\n", - "32505875 1\n", - "32505874 1\n", - "32505873 1\n", + "63963136 1\n", + "14680185 1\n", + "14680178 1\n", + "14680179 1\n", + "14680180 1\n", " ..\n", - "314 1\n", - "315 1\n", - "316 1\n", - "317 1\n", + "28311685 1\n", + "28311686 1\n", + "28311687 1\n", + "28311688 1\n", "320 1\n", "Name: tg_louvain, Length: 9892, dtype: int64" ] }, - "execution_count": 24, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -1421,7 +1699,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 21, "id": "1faa0b82-72ee-4ce1-a66c-b25b9def23be", "metadata": {}, "outputs": [], @@ -1439,7 +1717,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 22, "id": "b15039ae-ddd9-40a5-b7c5-eefe35488e0a", "metadata": {}, "outputs": [ @@ -1448,17 +1726,60 @@ "output_type": "stream", "text": [ "Altering graph schema to save results...\n", - "The job add_VERTEX_attr_eqlIsX completes in 37.602 seconds!\n" + "The job add_VERTEX_attr_kOLKNO completes in 42.961 seconds!\n", + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 170.28 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 32.3\n", + "RAM Used (GB): 10.631847936\n", + "tg_lcc executed successfully\n", + "execution time: 84.18365383148193 seconds\n", + "\n" ] } ], "source": [ - "res = feat.runAlgorithm(\"tg_lcc\", params = params)" + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_lcc\", params = params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_lcc executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_lcc_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_community.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 23, "id": "73613fe0-1952-4db5-8ff7-79f56921077c", "metadata": {}, "outputs": [ @@ -1494,102 +1815,120 @@ " browser_used\n", " speaks\n", " email\n", + " pagerank\n", + " pagerank_wt\n", + " article_rank\n", " tg_scc\n", - " tg_louvain\n", " tg_kcore\n", + " tg_louvain\n", " tg_lcc\n", " \n", " \n", " \n", " \n", " 0\n", - " 2199023264346\n", - " 2199023264346\n", - " Carlos\n", - " Gutierrez\n", - " male\n", - " 1985-04-19 00:00:00\n", - " 2010-03-10 12:52:07\n", - " 201.220.206.82\n", - " Firefox\n", - " [es, en]\n", - " [Carlos2199023264346@gmail.com, Carlos21990232...\n", + " 32985348841576\n", + " 32985348841576\n", + " Fritz\n", + " Becker\n", + " female\n", + " 1983-07-29 00:00:00\n", + " 2012-07-24 06:25:03\n", + " 31.13.171.49\n", + " Chrome\n", + " [de, en]\n", + " [Fritz32985348841576@gmail.com]\n", + " 0.29449\n", + " 0.15\n", + " 3.425802e+30\n", " 1\n", - " 32505856\n", - " 0\n", - " 0.16316\n", + " 7\n", + " 63963136\n", + " 0.19048\n", " \n", " \n", " 1\n", - " 21990232566217\n", - " 21990232566217\n", - " Frank\n", - " Burns\n", - " male\n", - " 1986-07-19 00:00:00\n", - " 2011-10-31 06:33:04\n", - " 14.1.16.88\n", - " Opera\n", - " [vi, en]\n", - " [Frank21990232566217@hotmail.com]\n", - " 1\n", - " 32505857\n", + " 19791209301554\n", + " 19791209301554\n", + " Carlos\n", + " Santos\n", + " female\n", + " 1986-06-28 00:00:00\n", + " 2011-07-23 00:11:56\n", + " 198.12.38.156\n", + " Firefox\n", + " [pt, en]\n", + " [Carlos19791209301554@yahoo.com]\n", + " 1.41297\n", + " 0.15\n", + " 2.700411e+31\n", " 1\n", - " 1.00000\n", + " 42\n", + " 63963137\n", + " 0.11211\n", " \n", " \n", " 2\n", - " 19791209304430\n", - " 19791209304430\n", - " Paul\n", - " Fayed\n", + " 15393162790168\n", + " 15393162790168\n", + " Moses\n", + " Znaimer\n", " male\n", - " 1984-11-28 00:00:00\n", - " 2011-08-05 06:38:58\n", - " 62.12.112.179\n", - " Chrome\n", - " [ar, fr, en]\n", - " [Paul19791209304430@gmx.com, Paul1979120930443...\n", + " 1980-08-17 00:00:00\n", + " 2011-04-11 03:03:01\n", + " 77.244.155.199\n", + " Firefox\n", + " [tg, ru, en]\n", + " [Moses15393162790168@gmail.com, Moses153931627...\n", + " 0.61351\n", + " 0.15\n", + " 1.104205e+31\n", " 1\n", - " 32505858\n", - " 0\n", - " 0.15584\n", + " 23\n", + " 63963138\n", + " 0.20949\n", " \n", " \n", " 3\n", - " 17592186051479\n", - " 17592186051479\n", - " Karim\n", - " Ben Dhifallah\n", + " 6597069769941\n", + " 6597069769941\n", + " Manuel\n", + " Perez\n", " male\n", - " 1980-04-06 00:00:00\n", - " 2011-05-11 04:24:17\n", - " 193.95.38.162\n", + " 1983-02-09 00:00:00\n", + " 2010-08-05 01:03:35\n", + " 31.177.51.194\n", " Internet Explorer\n", - " [ar, en]\n", - " [Karim17592186051479@gmx.com, Karim17592186051...\n", + " [es, en]\n", + " [Manuel6597069769941@gmail.com, Manuel65970697...\n", + " 1.02073\n", + " 0.15\n", + " 2.007961e+31\n", " 1\n", - " 32505859\n", - " 0\n", - " 0.15556\n", + " 39\n", + " 63963139\n", + " 0.13953\n", " \n", " \n", " 4\n", - " 8796093024532\n", - " 8796093024532\n", - " David\n", - " Jones\n", + " 32985348835764\n", + " 32985348835764\n", + " Andrew\n", + " Yang\n", " female\n", - " 1988-09-30 00:00:00\n", - " 2010-10-24 07:09:31\n", - " 24.40.220.150\n", - " Internet Explorer\n", - " [en]\n", - " [David8796093024532@gmx.com]\n", + " 1989-01-29 00:00:00\n", + " 2012-08-03 10:49:17\n", + " 49.128.82.58\n", + " Firefox\n", + " [zh, en]\n", + " [Andrew32985348835764@gmail.com]\n", + " 0.19768\n", + " 0.15\n", + " 9.344614e+29\n", " 1\n", - " 32505860\n", - " 0\n", - " 0.15667\n", + " 2\n", + " 63963140\n", + " 1.00000\n", " \n", " \n", " ...\n", @@ -1608,169 +1947,187 @@ " ...\n", " ...\n", " ...\n", + " ...\n", + " ...\n", + " ...\n", " \n", " \n", " 9887\n", - " 15393162794991\n", - " 15393162794991\n", - " Deepak\n", - " Kapoor\n", - " male\n", - " 1982-09-13 00:00:00\n", - " 2011-04-03 11:47:23\n", - " 49.156.125.15\n", - " Chrome\n", - " [as, en]\n", - " [Deepak15393162794991@gmail.com, Deepak1539316...\n", + " 10995116286967\n", + " 10995116286967\n", + " Li\n", + " Wang\n", + " female\n", + " 1980-06-22 00:00:00\n", + " 2010-12-20 02:17:26\n", + " 27.98.218.4\n", + " Firefox\n", + " [zh, en]\n", + " [Li10995116286967@gmail.com, Li10995116286967@...\n", + " 0.21135\n", + " 0.15\n", + " 1.489761e+30\n", " 1\n", + " 3\n", " 316\n", - " 0\n", - " 0.09959\n", + " 0.33333\n", " \n", " \n", " 9888\n", - " 4398046511145\n", - " 4398046511145\n", - " John\n", - " Kumar\n", + " 2199023258090\n", + " 2199023258090\n", + " Abderraouf\n", + " David\n", " male\n", - " 1986-09-22 00:00:00\n", - " 2010-05-19 01:14:14\n", - " 27.116.33.147\n", - " Safari\n", - " [gu, mr, en]\n", - " [John4398046511145@gmail.com, John439804651114...\n", + " 1984-02-06 00:00:00\n", + " 2010-03-28 15:46:35\n", + " 192.68.138.187\n", + " Internet Explorer\n", + " [ar, fr, en]\n", + " [Abderraouf2199023258090@gmail.com, Abderraouf...\n", + " 0.31669\n", + " 0.15\n", + " 3.608502e+30\n", " 1\n", + " 8\n", " 317\n", - " 0\n", - " 0.13511\n", + " 0.10714\n", " \n", " \n", " 9889\n", - " 24189255821919\n", - " 24189255821919\n", - " A.\n", - " Sharma\n", + " 17592186053731\n", + " 17592186053731\n", + " Antonio\n", + " Chavez\n", " female\n", - " 1988-07-15 00:00:00\n", - " 2011-11-14 16:04:58\n", - " 14.1.115.164\n", - " Internet Explorer\n", - " [bn, kn, en]\n", - " [A.24189255821919@gmail.com, A.24189255821919@...\n", + " 1988-12-09 00:00:00\n", + " 2011-06-05 14:51:34\n", + " 187.161.83.235\n", + " Chrome\n", + " [es, en]\n", + " [Antonio17592186053731@hotmail.com, Antonio175...\n", + " 1.15352\n", + " 0.15\n", + " 2.076123e+31\n", " 1\n", + " 38\n", " 318\n", - " 0\n", - " 0.20000\n", + " 0.14711\n", " \n", " \n", " 9890\n", - " 26388279076505\n", - " 26388279076505\n", - " Antonio\n", - " Alvarez\n", + " 4398046511145\n", + " 4398046511145\n", + " John\n", + " Kumar\n", " male\n", - " 1984-11-23 00:00:00\n", - " 2012-02-12 03:42:00\n", - " 200.55.184.105\n", - " Firefox\n", - " [es, en]\n", - " [Antonio26388279076505@gmail.com, Antonio26388...\n", + " 1986-09-22 00:00:00\n", + " 2010-05-19 01:14:14\n", + " 27.116.33.147\n", + " Safari\n", + " [gu, mr, en]\n", + " [John4398046511145@gmail.com, John439804651114...\n", + " 1.01440\n", + " 0.15\n", + " 1.954525e+31\n", " 1\n", + " 40\n", " 319\n", - " 1\n", - " 0.00000\n", + " 0.13511\n", " \n", " \n", " 9891\n", - " 6597069777015\n", - " 6597069777015\n", - " Albin\n", - " Delic\n", + " 2199023257716\n", + " 2199023257716\n", + " Jie\n", + " Chen\n", " male\n", - " 1988-04-29 00:00:00\n", - " 2010-08-23 15:59:50\n", - " 80.87.248.253\n", - " Internet Explorer\n", - " [bs, en]\n", - " [Albin6597069777015@gmail.com]\n", + " 1985-05-06 00:00:00\n", + " 2010-04-23 06:16:04\n", + " 1.0.63.9\n", + " Chrome\n", + " [zh, en]\n", + " [Jie2199023257716@gmail.com, Jie2199023257716@...\n", + " 1.16429\n", + " 0.15\n", + " 2.115465e+31\n", " 1\n", + " 37\n", " 320\n", - " 0\n", - " 0.13136\n", + " 0.15347\n", " \n", " \n", "\n", - "

9892 rows × 15 columns

\n", + "

9892 rows × 18 columns

\n", "" ], "text/plain": [ - " v_id id first_name last_name gender \\\n", - "0 2199023264346 2199023264346 Carlos Gutierrez male \n", - "1 21990232566217 21990232566217 Frank Burns male \n", - "2 19791209304430 19791209304430 Paul Fayed male \n", - "3 17592186051479 17592186051479 Karim Ben Dhifallah male \n", - "4 8796093024532 8796093024532 David Jones female \n", - "... ... ... ... ... ... \n", - "9887 15393162794991 15393162794991 Deepak Kapoor male \n", - "9888 4398046511145 4398046511145 John Kumar male \n", - "9889 24189255821919 24189255821919 A. Sharma female \n", - "9890 26388279076505 26388279076505 Antonio Alvarez male \n", - "9891 6597069777015 6597069777015 Albin Delic male \n", + " v_id id first_name last_name gender \\\n", + "0 32985348841576 32985348841576 Fritz Becker female \n", + "1 19791209301554 19791209301554 Carlos Santos female \n", + "2 15393162790168 15393162790168 Moses Znaimer male \n", + "3 6597069769941 6597069769941 Manuel Perez male \n", + "4 32985348835764 32985348835764 Andrew Yang female \n", + "... ... ... ... ... ... \n", + "9887 10995116286967 10995116286967 Li Wang female \n", + "9888 2199023258090 2199023258090 Abderraouf David male \n", + "9889 17592186053731 17592186053731 Antonio Chavez female \n", + "9890 4398046511145 4398046511145 John Kumar male \n", + "9891 2199023257716 2199023257716 Jie Chen male \n", "\n", " birthday creation_date location_ip \\\n", - "0 1985-04-19 00:00:00 2010-03-10 12:52:07 201.220.206.82 \n", - "1 1986-07-19 00:00:00 2011-10-31 06:33:04 14.1.16.88 \n", - "2 1984-11-28 00:00:00 2011-08-05 06:38:58 62.12.112.179 \n", - "3 1980-04-06 00:00:00 2011-05-11 04:24:17 193.95.38.162 \n", - "4 1988-09-30 00:00:00 2010-10-24 07:09:31 24.40.220.150 \n", + "0 1983-07-29 00:00:00 2012-07-24 06:25:03 31.13.171.49 \n", + "1 1986-06-28 00:00:00 2011-07-23 00:11:56 198.12.38.156 \n", + "2 1980-08-17 00:00:00 2011-04-11 03:03:01 77.244.155.199 \n", + "3 1983-02-09 00:00:00 2010-08-05 01:03:35 31.177.51.194 \n", + "4 1989-01-29 00:00:00 2012-08-03 10:49:17 49.128.82.58 \n", "... ... ... ... \n", - "9887 1982-09-13 00:00:00 2011-04-03 11:47:23 49.156.125.15 \n", - "9888 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", - "9889 1988-07-15 00:00:00 2011-11-14 16:04:58 14.1.115.164 \n", - "9890 1984-11-23 00:00:00 2012-02-12 03:42:00 200.55.184.105 \n", - "9891 1988-04-29 00:00:00 2010-08-23 15:59:50 80.87.248.253 \n", + "9887 1980-06-22 00:00:00 2010-12-20 02:17:26 27.98.218.4 \n", + "9888 1984-02-06 00:00:00 2010-03-28 15:46:35 192.68.138.187 \n", + "9889 1988-12-09 00:00:00 2011-06-05 14:51:34 187.161.83.235 \n", + "9890 1986-09-22 00:00:00 2010-05-19 01:14:14 27.116.33.147 \n", + "9891 1985-05-06 00:00:00 2010-04-23 06:16:04 1.0.63.9 \n", "\n", " browser_used speaks \\\n", - "0 Firefox [es, en] \n", - "1 Opera [vi, en] \n", - "2 Chrome [ar, fr, en] \n", - "3 Internet Explorer [ar, en] \n", - "4 Internet Explorer [en] \n", + "0 Chrome [de, en] \n", + "1 Firefox [pt, en] \n", + "2 Firefox [tg, ru, en] \n", + "3 Internet Explorer [es, en] \n", + "4 Firefox [zh, en] \n", "... ... ... \n", - "9887 Chrome [as, en] \n", - "9888 Safari [gu, mr, en] \n", - "9889 Internet Explorer [bn, kn, en] \n", - "9890 Firefox [es, en] \n", - "9891 Internet Explorer [bs, en] \n", + "9887 Firefox [zh, en] \n", + "9888 Internet Explorer [ar, fr, en] \n", + "9889 Chrome [es, en] \n", + "9890 Safari [gu, mr, en] \n", + "9891 Chrome [zh, en] \n", "\n", - " email tg_scc tg_louvain \\\n", - "0 [Carlos2199023264346@gmail.com, Carlos21990232... 1 32505856 \n", - "1 [Frank21990232566217@hotmail.com] 1 32505857 \n", - "2 [Paul19791209304430@gmx.com, Paul1979120930443... 1 32505858 \n", - "3 [Karim17592186051479@gmx.com, Karim17592186051... 1 32505859 \n", - "4 [David8796093024532@gmx.com] 1 32505860 \n", - "... ... ... ... \n", - "9887 [Deepak15393162794991@gmail.com, Deepak1539316... 1 316 \n", - "9888 [John4398046511145@gmail.com, John439804651114... 1 317 \n", - "9889 [A.24189255821919@gmail.com, A.24189255821919@... 1 318 \n", - "9890 [Antonio26388279076505@gmail.com, Antonio26388... 1 319 \n", - "9891 [Albin6597069777015@gmail.com] 1 320 \n", + " email pagerank \\\n", + "0 [Fritz32985348841576@gmail.com] 0.29449 \n", + "1 [Carlos19791209301554@yahoo.com] 1.41297 \n", + "2 [Moses15393162790168@gmail.com, Moses153931627... 0.61351 \n", + "3 [Manuel6597069769941@gmail.com, Manuel65970697... 1.02073 \n", + "4 [Andrew32985348835764@gmail.com] 0.19768 \n", + "... ... ... \n", + "9887 [Li10995116286967@gmail.com, Li10995116286967@... 0.21135 \n", + "9888 [Abderraouf2199023258090@gmail.com, Abderraouf... 0.31669 \n", + "9889 [Antonio17592186053731@hotmail.com, Antonio175... 1.15352 \n", + "9890 [John4398046511145@gmail.com, John439804651114... 1.01440 \n", + "9891 [Jie2199023257716@gmail.com, Jie2199023257716@... 1.16429 \n", "\n", - " tg_kcore tg_lcc \n", - "0 0 0.16316 \n", - "1 1 1.00000 \n", - "2 0 0.15584 \n", - "3 0 0.15556 \n", - "4 0 0.15667 \n", - "... ... ... \n", - "9887 0 0.09959 \n", - "9888 0 0.13511 \n", - "9889 0 0.20000 \n", - "9890 1 0.00000 \n", - "9891 0 0.13136 \n", + " pagerank_wt article_rank tg_scc tg_kcore tg_louvain tg_lcc \n", + "0 0.15 3.425802e+30 1 7 63963136 0.19048 \n", + "1 0.15 2.700411e+31 1 42 63963137 0.11211 \n", + "2 0.15 1.104205e+31 1 23 63963138 0.20949 \n", + "3 0.15 2.007961e+31 1 39 63963139 0.13953 \n", + "4 0.15 9.344614e+29 1 2 63963140 1.00000 \n", + "... ... ... ... ... ... ... \n", + "9887 0.15 1.489761e+30 1 3 316 0.33333 \n", + "9888 0.15 3.608502e+30 1 8 317 0.10714 \n", + "9889 0.15 2.076123e+31 1 38 318 0.14711 \n", + "9890 0.15 1.954525e+31 1 40 319 0.13511 \n", + "9891 0.15 2.115465e+31 1 37 320 0.15347 \n", "\n", - "[9892 rows x 15 columns]" + "[9892 rows x 18 columns]" ] }, "metadata": {}, @@ -1785,15 +2142,15 @@ "0.20000 222\n", "0.14286 137\n", " ... \n", - "0.12435 1\n", - "0.11739 1\n", - "0.08066 1\n", - "0.05652 1\n", - "0.09959 1\n", + "0.34615 1\n", + "0.04385 1\n", + "0.08584 1\n", + "0.05530 1\n", + "0.12706 1\n", "Name: tg_lcc, Length: 3152, dtype: int64" ] }, - "execution_count": 38, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -1815,7 +2172,7 @@ ], "metadata": { "kernelspec": { - "display_name": "PyTorch", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1829,7 +2186,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.9.6" }, "vscode": { "interpreter": { diff --git a/algos/embedding.ipynb b/algos/embedding.ipynb index cb716db..03bcd7d 100644 --- a/algos/embedding.ipynb +++ b/algos/embedding.ipynb @@ -37,7 +37,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c4d7e73157464c6c99e3a373ff6fb038", + "model_id": "8fc64711f3f74f9c8f437440248719de", "version_major": 2, "version_minor": 0 }, @@ -81,7 +81,26 @@ "output_type": "stream", "text": [ "---- Checking database ----\n", - "A graph with name Cora already exists in the database. Skip ingestion.\n" + "---- Creating graph ----\n", + "The graph Cora is created.\n", + "---- Creating schema ----\n", + "Using graph 'Cora'\n", + "Successfully created schema change jobs: [cora_schema].\n", + "Kick off schema change job cora_schema\n", + "Doing schema change on graph 'Cora' (current version: 0)\n", + "Trying to add local vertex 'Paper' to the graph 'Cora'.\n", + "Trying to add local edge 'Cite' to the graph 'Cora'.\n", + "\n", + "Graph Cora updated to new version 1\n", + "The job cora_schema completes in 2.581 seconds!\n", + "---- Creating loading job ----\n", + "Using graph 'Cora'\n", + "Successfully created loading jobs: [load_cora_data].\n", + "---- Ingesting data ----\n", + "Ingested 2708 objects into VERTEX Paper\n", + "Ingested 10556 objects into EDGE Cite\n", + "---- Cleaning ----\n", + "---- Finished ingestion ----\n" ] } ], @@ -97,7 +116,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8e8a24af533f468aa97c86382d47e99a", + "model_id": "715b3df4877d4f2faa83d83c5dd8bd43", "version_major": 2, "version_minor": 0 }, @@ -126,25 +145,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 20, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'AllVertexCount': 2708},\n", - " {'InitChangeCount': 0},\n", - " {'VertexFollowedToCommunity': 371},\n", - " {'VertexFollowedToVertex': 114},\n", - " {'VertexAssignedToItself': 0},\n", - " {'FinalCommunityCount': 2280}]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "feat = conn.gds.featurizer()\n", "\n", @@ -156,9 +159,75 @@ " \"result_attribute\": \"community_id\",\n", " \"file_path\": \"\",\n", " \"print_stats\": True\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The memory_profiler extension is already loaded. To reload it, use:\n", + " %reload_ext memory_profiler\n", + "peak memory: 383.54 MiB, increment: 0.08 MiB\n", + "The CPU usage is: 28.0\n", + "RAM Used (GB): 10.966151168\n", + "tg_louvain executed successfully\n", + "execution time: 0.7343027591705322 seconds\n", + "\n" + ] + } + ], + "source": [ + "import csv\n", + "import os\n", + "import time\n", + "import psutil\n", + "!pip install memory_profiler\n", + "%load_ext memory_profiler\n", + "\n", + "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "\n", + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_louvain\", params = params)\n", + "\n", + "algo_memory = str(algo_memory)\n", "\n", - "feat.runAlgorithm(\"tg_louvain\", params = params)" + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_louvain executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"embedding_tg_louvain_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_embedding.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -172,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -203,25 +272,11 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "tags": [] }, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'@@embedding_dim_map': {'default': {'min_dim': 0,\n", - " 'max_dim': 128,\n", - " 'weight': 1}}},\n", - " {'sample_verts': []}]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "params={\"v_type\": [\"Paper\"],\n", " \"e_type\": [\"Cite\"],\n", @@ -235,14 +290,73 @@ " \"random_seed\": 42,\n", " \"component_attribute\": \"\",\n", " \"result_attribute\": \"embedding\",\n", - " \"choose_k\": 0}\n", + " \"choose_k\": 0}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Altering graph schema to save results...\n", + "The job add_VERTEX_attr_zNbluz completes in 25.035 seconds!\n", + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 125.03 MiB, increment: 0.70 MiB\n", + "The CPU usage is: 37.8\n", + "RAM Used (GB): 10.806849536\n", + "tg_fastRP executed successfully\n", + "execution time: 72.01924395561218 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_fastRP\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", "\n", - "feat.runAlgorithm(\"tg_fastRP\", params=params)" + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_fastRP executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_fastRP_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_embedding.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -251,7 +365,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -289,63 +403,63 @@ " \n", " \n", " 0\n", - " 2696\n", - " 2696\n", + " 2706\n", + " 2706\n", " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...\n", " 3\n", " False\n", " False\n", " True\n", - " 689963009\n", - " [-0.22738, -0.32103, 0.23506, -0.40459, -0.011...\n", + " 434110464\n", + " [0.28447, 0.31007, -0.04838, 0.0147, -0.03486,...\n", " \n", " \n", " 1\n", - " 2688\n", - " 2688\n", + " 2680\n", + " 2680\n", " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...\n", - " 3\n", + " 4\n", " False\n", " False\n", " True\n", - " 770703361\n", - " [0, -0.03219, 0.1719, 0.46644, 0, 0.18486, 0, ...\n", + " 434110465\n", + " [0.08188, 0.33518, -0.34322, -0.24893, 0.13559...\n", " \n", " \n", " 2\n", - " 2656\n", - " 2656\n", + " 2482\n", + " 2482\n", " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...\n", - " 2\n", + " 3\n", " False\n", " False\n", " True\n", - " 770703362\n", - " [-0.18878, 0.27308, 0.04562, 0.10869, 0.24994,...\n", + " 434110466\n", + " [-0.13238, -0.19143, -0.19143, 0.19143, -0.378...\n", " \n", " \n", " 3\n", - " 2649\n", - " 2649\n", + " 2383\n", + " 2383\n", " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...\n", - " 6\n", + " 4\n", " False\n", " False\n", " True\n", - " 770703363\n", - " [0.07591, -0.19048, 0.04639, -0.192, 0.1164, -...\n", + " 434110467\n", + " [-0.00764, 0.24286, -0.056, 0.1696, -0.10296, ...\n", " \n", " \n", " 4\n", - " 2646\n", - " 2646\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...\n", - " 4\n", + " 2374\n", + " 2374\n", + " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...\n", + " 5\n", " False\n", " False\n", " True\n", - " 635437099\n", - " [-0.24409, 0.12149, 0.12944, 0.50041, -0.25728...\n", + " 356515917\n", + " [0.22167, -0.13319, 0.29308, -0.18034, -0.1556...\n", " \n", " \n", "\n", @@ -353,28 +467,28 @@ ], "text/plain": [ " v_id id x y \\\n", - "0 2696 2696 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3 \n", - "1 2688 2688 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3 \n", - "2 2656 2656 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 2 \n", - "3 2649 2649 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 6 \n", - "4 2646 2646 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 4 \n", + "0 2706 2706 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3 \n", + "1 2680 2680 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 4 \n", + "2 2482 2482 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 3 \n", + "3 2383 2383 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 4 \n", + "4 2374 2374 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 5 \n", "\n", " train_mask val_mask test_mask community_id \\\n", - "0 False False True 689963009 \n", - "1 False False True 770703361 \n", - "2 False False True 770703362 \n", - "3 False False True 770703363 \n", - "4 False False True 635437099 \n", + "0 False False True 434110464 \n", + "1 False False True 434110465 \n", + "2 False False True 434110466 \n", + "3 False False True 434110467 \n", + "4 False False True 356515917 \n", "\n", " embedding \n", - "0 [-0.22738, -0.32103, 0.23506, -0.40459, -0.011... \n", - "1 [0, -0.03219, 0.1719, 0.46644, 0, 0.18486, 0, ... \n", - "2 [-0.18878, 0.27308, 0.04562, 0.10869, 0.24994,... \n", - "3 [0.07591, -0.19048, 0.04639, -0.192, 0.1164, -... \n", - "4 [-0.24409, 0.12149, 0.12944, 0.50041, -0.25728... " + "0 [0.28447, 0.31007, -0.04838, 0.0147, -0.03486,... \n", + "1 [0.08188, 0.33518, -0.34322, -0.24893, 0.13559... \n", + "2 [-0.13238, -0.19143, -0.19143, 0.19143, -0.378... \n", + "3 [-0.00764, 0.24286, -0.056, 0.1696, -0.10296, ... \n", + "4 [0.22167, -0.13319, 0.29308, -0.18034, -0.1556... " ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -385,7 +499,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -402,7 +516,7 @@ "dtype: int64" ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -422,7 +536,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -435,46 +549,46 @@ "\n", "Community: 0\n", "Number of members in community: 13\n", - "Mean intra-community similarity: 0.997070929902624\n", - "Std. Dev. of intra-community similarity: 0.0071995963055932356\n", + "Mean intra-community similarity: 0.9965714170704697\n", + "Std. Dev. of intra-community similarity: 0.00842738895698873\n", "\n", "Community: 1\n", "Number of members in community: 12\n", - "Mean intra-community similarity: 0.9974883667342174\n", - "Std. Dev. of intra-community similarity: 0.005914592135088319\n", + "Mean intra-community similarity: 0.9978979744962666\n", + "Std. Dev. of intra-community similarity: 0.004950015466634065\n", "\n", "Community: 2\n", "Number of members in community: 5\n", - "Mean intra-community similarity: 0.9985160220792991\n", - "Std. Dev. of intra-community similarity: 0.0021632509671548937\n", + "Mean intra-community similarity: 0.9954623831664924\n", + "Std. Dev. of intra-community similarity: 0.006614656368356073\n", "\n", "Community: 3\n", "Number of members in community: 5\n", - "Mean intra-community similarity: 0.9887536544221532\n", - "Std. Dev. of intra-community similarity: 0.016394225014307873\n", + "Mean intra-community similarity: 0.9983262887331829\n", + "Std. Dev. of intra-community similarity: 0.0024398324706672173\n", "\n", "Community: 4\n", "Number of members in community: 5\n", - "Mean intra-community similarity: 0.9967383040968224\n", - "Std. Dev. of intra-community similarity: 0.0047546979767608\n", + "Mean intra-community similarity: 0.9885478124522032\n", + "Std. Dev. of intra-community similarity: 0.016694288670487428\n", "\n", "Inter-community similarities:\n", "\n", "Communities: 0-1\n", - "Mean inter-community similarity: -0.025874418882637314\n", - "Std. Dev. of intra-community similarity: 0.0100740757982098\n", + "Mean inter-community similarity: 0.016267563777136545\n", + "Std. Dev. of intra-community similarity: 0.00795155191510506\n", "\n", "Communities: 1-2\n", - "Mean inter-community similarity: 0.1606222979150344\n", - "Std. Dev. of intra-community similarity: 0.002778451683994925\n", + "Mean inter-community similarity: -0.08983135339807681\n", + "Std. Dev. of intra-community similarity: 0.0025482323738112217\n", "\n", "Communities: 2-3\n", - "Mean inter-community similarity: 0.07146148736261311\n", - "Std. Dev. of intra-community similarity: 0.0032011257629386276\n", + "Mean inter-community similarity: 0.19583716480713292\n", + "Std. Dev. of intra-community similarity: 0.011259379462170685\n", "\n", "Communities: 3-4\n", - "Mean inter-community similarity: -0.099816548856335\n", - "Std. Dev. of intra-community similarity: 0.018686561768284225\n", + "Mean inter-community similarity: 0.00330812238861845\n", + "Std. Dev. of intra-community similarity: 0.0021937332509694794\n", "\n" ] } @@ -519,7 +633,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -565,65 +679,36 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Collecting umap\n", - " Downloading umap-0.1.1.tar.gz (3.2 kB)\n", - " Preparing metadata (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25hBuilding wheels for collected packages: umap\n", - " Building wheel for umap (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for umap: filename=umap-0.1.1-py3-none-any.whl size=3542 sha256=161a136fabd480d557ae1cacbdbf9b13ea5b9cdaabd23a25a1bfeb86efb9598e\n", - " Stored in directory: /home/tigergraph/.cache/pip/wheels/0f/d2/29/4d21dda3eb23f4eb42bc340a0e0282333539015afc8082a7b2\n", - "Successfully built umap\n", - "Installing collected packages: umap\n", - "Successfully installed umap-0.1.1\n", - "Collecting umap-learn\n", - " Downloading umap-learn-0.5.3.tar.gz (88 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m88.2/88.2 kB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25hRequirement already satisfied: numpy>=1.17 in /opt/conda/lib/python3.9/site-packages (from umap-learn) (1.23.0)\n", - "Requirement already satisfied: scikit-learn>=0.22 in /opt/conda/lib/python3.9/site-packages (from umap-learn) (1.1.2)\n", + "Requirement already satisfied: umap in /opt/conda/lib/python3.9/site-packages (0.1.1)\n", + "Requirement already satisfied: umap-learn in /opt/conda/lib/python3.9/site-packages (0.5.3)\n", + "Requirement already satisfied: pynndescent>=0.5 in /opt/conda/lib/python3.9/site-packages (from umap-learn) (0.5.8)\n", "Requirement already satisfied: scipy>=1.0 in /opt/conda/lib/python3.9/site-packages (from umap-learn) (1.9.1)\n", - "Collecting numba>=0.49\n", - " Downloading numba-0.56.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.5 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.5/3.5 MB\u001b[0m \u001b[31m60.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", - "\u001b[?25hCollecting pynndescent>=0.5\n", - " Downloading pynndescent-0.5.8.tar.gz (1.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m66.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25hRequirement already satisfied: tqdm in /opt/conda/lib/python3.9/site-packages (from umap-learn) (4.64.1)\n", - "Collecting llvmlite<0.40,>=0.39.0dev0\n", - " Downloading llvmlite-0.39.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.6 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m34.6/34.6 MB\u001b[0m \u001b[31m43.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: setuptools in /opt/conda/lib/python3.9/site-packages (from numba>=0.49->umap-learn) (65.5.1)\n", + "Requirement already satisfied: tqdm in /opt/conda/lib/python3.9/site-packages (from umap-learn) (4.64.1)\n", + "Requirement already satisfied: scikit-learn>=0.22 in /opt/conda/lib/python3.9/site-packages (from umap-learn) (1.1.2)\n", + "Requirement already satisfied: numba>=0.49 in /opt/conda/lib/python3.9/site-packages (from umap-learn) (0.56.4)\n", + "Requirement already satisfied: numpy>=1.17 in /opt/conda/lib/python3.9/site-packages (from umap-learn) (1.23.0)\n", + "Requirement already satisfied: llvmlite<0.40,>=0.39.0dev0 in /opt/conda/lib/python3.9/site-packages (from numba>=0.49->umap-learn) (0.39.1)\n", + "Requirement already satisfied: setuptools in /opt/conda/lib/python3.9/site-packages (from numba>=0.49->umap-learn) (65.5.1)\n", "Requirement already satisfied: joblib>=0.11 in /opt/conda/lib/python3.9/site-packages (from pynndescent>=0.5->umap-learn) (1.2.0)\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/lib/python3.9/site-packages (from scikit-learn>=0.22->umap-learn) (3.1.0)\n", - "Building wheels for collected packages: umap-learn, pynndescent\n", - " Building wheel for umap-learn (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for umap-learn: filename=umap_learn-0.5.3-py3-none-any.whl size=82813 sha256=60afa34b1a6a451d9ecbac138897533ae25d8ef9efd841239a71d782d21ea846\n", - " Stored in directory: /home/tigergraph/.cache/pip/wheels/fb/99/10/ed2f3bc57ea29f540470eb43570929e30ae911b2d8353b2ee4\n", - " Building wheel for pynndescent (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for pynndescent: filename=pynndescent-0.5.8-py3-none-any.whl size=55496 sha256=6cd6f097485768bb3432cd57d6e9cdf6a93586f17865e2016052d0312b6dabe1\n", - " Stored in directory: /home/tigergraph/.cache/pip/wheels/8d/ca/f1/f60e041b5c82ae83173373a8991be5419647bdcf64026fd91f\n", - "Successfully built umap-learn pynndescent\n", - "Installing collected packages: llvmlite, numba, pynndescent, umap-learn\n", - "Successfully installed llvmlite-0.39.1 numba-0.56.4 pynndescent-0.5.8 umap-learn-0.5.3\n", "Requirement already satisfied: seaborn in /opt/conda/lib/python3.9/site-packages (0.12.0)\n", - "Requirement already satisfied: matplotlib>=3.1 in /opt/conda/lib/python3.9/site-packages (from seaborn) (3.5.3)\n", "Requirement already satisfied: numpy>=1.17 in /opt/conda/lib/python3.9/site-packages (from seaborn) (1.23.0)\n", + "Requirement already satisfied: matplotlib>=3.1 in /opt/conda/lib/python3.9/site-packages (from seaborn) (3.5.3)\n", "Requirement already satisfied: pandas>=0.25 in /opt/conda/lib/python3.9/site-packages (from seaborn) (1.5.0)\n", + "Requirement already satisfied: packaging>=20.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (21.3)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (4.38.0)\n", "Requirement already satisfied: pyparsing>=2.2.1 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (3.0.9)\n", - "Requirement already satisfied: pillow>=6.2.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (9.2.0)\n", "Requirement already satisfied: python-dateutil>=2.7 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (2.8.2)\n", - "Requirement already satisfied: packaging>=20.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (21.3)\n", + "Requirement already satisfied: pillow>=6.2.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (9.2.0)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (1.4.4)\n", "Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (0.11.0)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=3.1->seaborn) (4.38.0)\n", "Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.9/site-packages (from pandas>=0.25->seaborn) (2022.6)\n", "Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib>=3.1->seaborn) (1.16.0)\n" ] @@ -637,7 +722,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -648,12 +733,12 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAKvCAYAAACcbYKXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABfkUlEQVR4nO3dd3wUdf7H8fembfomIaRRAlKUoqKgCBZAAeWwYEFQT0FPzoYN+FlPRQU9y+md7bCL3h2Ws3t6igiCShfFgpQTCC2EJKSSnu/vj9zOZcl+Q0JCNoHX8/HYxyOZtp+dnZ1573e/M+MyxhgBAAAAqCMo0AUAAAAArRVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZzWLixIlyuVyaOHFioEvxa9OmTXK5XHK5XNq0aVOj51+wYIEz/95eeeUVuVwudenSpemFtiEvv/yyBg0apNjYWGfd/PnPfw50WQAaoKn7RBzammP7aUvHziaF5enTpzsra1+PQMjLy9P06dM1ffp05eXlWaer/abXfgQHBysuLk4DBgzQrbfeqoyMjHqfb+jQoX6XEx0drZ49e2rixIlasmTJfr0WbxhtyKMtbHho2/70pz/piiuu0JIlS1RSUqKkpCQlJycrKioq0KX5sH0maz86duy438v3LmP69OnNV/Qh6r333tP06dP13nvvNWk53n0l+8G2Y/Xq1br11lt1/PHHKzk5WWFhYfJ4POrdu7cmTJig999/XxUVFYEuEw20adMmJ3sdLEKaa0HJycnNtahmk5eXp3vvvVdSzQ40Li5un/PExsYqIiJCklRRUaHc3FytXLlSK1eu1NNPP6233npLo0aNqncZoaGhSkhIcP7Pzs7W+vXrtX79er366qu65557dM899+zXawoKClL79u3rnWZf49G8PB6PDj/8cHXo0CHQpbSYRx99VJJ0ww036NFHH1VoaGiAK6pfVFSUoqOj/Y5LSkpq4Wrgz3vvvafZs2drwoQJGjNmTKDLOeiFhobq8MMPd/4OhMLCQl199dWaM2eOjDGSar6AejwelZSUaM2aNVqzZo1effVVdevWTX//+981cODAgNQKX/VtP5s2bXKyV32BuS0dO5stLGdmZjbXogLqL3/5i09Xgj179ujNN9/UzTffrLy8PF100UX69ddffcLw3gYPHqwFCxY4/5eXl+vLL7/Utddeqw0bNmj69OkaMGCARo8e3ej6OnXqxE9mrcy5556rc889N9BltJhdu3Y5n/dJkya1+qAsSdOmTTuoWjmApurQoYN++eWXgD3/7t27dfLJJ+unn36Sy+XS+PHjdc011+iEE05QWFiYJGn79u365JNP9MQTT2j16tVavHgxYbmVaI7tpy0dO+mzvA+RkZGaOHGinnjiCUlSfn6+/vnPfzZqGWFhYRoxYoTef/99Zyfw1FNPNXutQEvYs2eP87ettRYA6nPJJZfop59+UkhIiN544w3NmTNHp5xyinOMlKS0tDT97ne/03fffadnnnlG4eHhAawYh7IWDcsVFRWaO3eubrjhBg0YMECpqakKCwtTUlKSTj/9dJ+fYvzZunWrbr75ZvXp00dRUVFyu91KS0tT//79dfPNN2v58uXOtEOHDlXXrl2d/7t27erTT3Ho0KGNqv2MM85w/v7pp58aNa9X79691b9/f0nyqbUleF/3ggULlJOToylTpqhbt26KiIhQenq6Jk+erF27djnTb968Wddcc426du2q8PBwde7cWVOnTlVhYeE+n8sYo1mzZun444+Xx+NRbGysTjrpJP3973/f57yZmZm67bbbdPTRR8vj8Sg8PFyHHXaYrrzySv3888/1zrtt2zZdddVV6tSpk9xutzp27KjLL79cGzZs2PcKkvTLL7/okksuUUpKivO8119/vXbu3FnvfPWdpODt1+/d3ubNm6fRo0erffv2Cg8PV69evXTvvfeqtLS03ud4//33ddpppykuLk7R0dE6+uij9fDDD6uioqLOc+ztzTff1KhRo5ScnKzQ0FDFxcWpR48eOvvss/X000/v87m9vCc51n6dtT9X/l7/ggULNHbsWHXo0EFut1uJiYk67bTT9PLLL6uqqsrv8+z9et5++22NHDlSSUlJCgoKOihaiL/99lvdd999OuWUU5Senq7w8HDFxcXphBNO0EMPPaSioiLrvLU/y1lZWZoyZYp69uypyMjIOueHZGdn6+abb9Zhhx2m8PBwpaamauzYsfr222/rLMvmvffe05gxY5SWlqawsDDFx8frlFNO0axZs+rtR9rQ7c67Xc2ePVuSNHv27Dr9yuurrzllZmbq//7v/9SnTx9FR0crKipKffr00S233GLdD9R38m9t/l7LDTfcIJfLpWOPPbbeeYuKihQVFSWXy6W//e1vzvCmHFPrO0Fr79e0YcMGXXHFFT771kmTJmnbtm311m3zySef6JNPPpEk3X333Ro7dmy907tcLl1zzTX6/e9/X2dcVVWVXnrpJZ166qlKTEyU2+1Whw4dNHbs2Hq3G+/5DNOnT1dVVZUef/xxHXPMMYqOjlZSUpLGjBmj77//3pl+z549mjFjhvr27auoqCi1a9dO48aN03/+8x+/y9/7uLBo0SKdddZZSkpKUlRUlI455hi9+OKLPvP861//0ogRI9S+fXtFRkbquOOO0xtvvOF3+Q09wa5Lly5yuVx65ZVX6p1/586duvHGG51jfnJyssaPH29tPbY9f5cuXTRs2DDn/70/y7V/uW/ICX6lpaV64oknNGTIECUmJiosLEwpKSkaM2aM/v3vf1vnKykp0aOPPqpBgwYpPj5eoaGhat++vdMP/u2337bO65dpgnvuucdIMg1dzPz5853pJRm3222io6N9ho0dO9ZUVVXVmfe7774z8fHxznTBwcEmPj7euFwuZ9iECROc6c8991yTmJjojEtMTDTJycnO49xzz3Wm3bhxozPdyy+/7Lf2rKwsZ5rrrrvO7zRDhgwxksyQIUOs62Ds2LFGkgkNDW3QOvOaMGGCkWTS09MbNZ+Xt/bZs2ebjh07GkkmKirKhIWFOeN69epldu/ebZYtW+asu9jYWBMSEuJMc+KJJ5rKykprfRMmTDDjxo0zkkxQUFCd9+jyyy831dXVfmv88MMPfbaH0NBQExUV5fwfFhZmZs+e7XfelStX+mwfERERzrJiY2PNG2+84YzbuHFjnfk/+eQT43a7nWmio6NNeHi4kWRSU1PNSy+9ZN3WX375Zet74/2MDBkyxDz88MPG5XIZl8tl4uLifNbLsGHD/K5XY4yZOnWqz2ckLi7OeU9OOeUUc8cdd1i3uyuuuMJn3ujoaBMZGekzzN/68Ofrr782ycnJ1s/VgAEDfKa/+eabnem8rzk4ONgZduqpp5qCgoJ619mUKVOc+ePj401wcLC55557GlSvMf/7TDZmnsbwvpbGLr/2+g8KCjJxcXE+w3r37m127txZ77zPP/+8SU5ONpJMeHi4iYmJ8dk+165da9LS0nz2t7Gxsc5n6YMPPnDGzZ8/v87zFBYWmjPPPNOnrtjYWJ/tdtCgQSY3N7fOvI3Z7rzblffzFh4e7rOvTk5ONl9//XWD1+3+7isXLFjg8z5ERkb67H/i4+PNokWL6sxX+7hWH3/revny5c7wH3/80TrvK6+84qzHoqIiv8/d2GNq7ePe3vuA2sv94osvnGXGxMT4HA/S0tLM1q1b633d/vzmN78xkozH4/F5PY2Vl5dnhg4d6pML9t63Tps2ze+83n3DHXfcYYYPH+58Lmq/59HR0Wb58uUmOzvbHHPMMc72GRER4UyTlJRkNm/eXGf5tY8Lzz//vAkKCjIul8t4PB6f9+e2224zxhhz9913O/uDvaf561//Wmf59b1/taWnpxupbrapPf9HH31kkpKSnO2+9rEwNjbWfPfddw1+/gEDBvgci/f+LN9www1+15E/69atMz169PA5juy9bq655po68xUUFJijjz66zvGn9rbb2P1Di4blJUuWmIsvvtj861//MpmZmU5oysnJMX/5y1+cHflf/vKXOvOedtppRpI59thjzeLFi515y8rKzLp168yjjz5qHn74YZ95GroxNSQsz54925nmT3/6k99pGhKWjzvuOGcDaozmCstxcXGmX79+ZsmSJcYYY8rLy82cOXOcA9nkyZNNenq6OfXUU52dd0lJiXnyySedoPP8889b6/N4PMblcpn777/f5OfnG2NqvmhMnjzZqcHf+7t06VInuF911VVmzZo1TnjcvHmzufbaa40kExISYpYvX+4zb0FBgencubORZDp37mw+++wzZ/tYvHix6dOnj89BcO9tYcuWLc62d9RRR5mlS5caY4ypqqoyn3zyienYsaPP/HtrSFiOi4szQUFB5vbbbze7du0yxhiTn5/v7CAlmRdffLHO/HPmzHHGX3zxxc6BqaSkxDz33HMmPDzc2THtvd0tWrTI2fk+9NBDJicnxxmXnZ1tPv30UzNhwgSzbdu2Os9bn4Z8rp588klnmt///vdmx44dxhhjioqKzOOPP+7stMaNG2ddZ94D9C233GKysrKMMcaUlpaaTZs2NbhW72eye/fuJj093YSFhRmPx2P69+9v7rjjjka/9r15X2Njw/Lw4cPNSy+9ZDZv3mwqKiqMMcbs2bPHvPPOO+bwww83kny+0Pt7zujoaHP44YebefPmOWFo7dq1xpiaz/WRRx5ppJovNO+8847zeVqzZo059dRTfQ5o/sLymDFjnHX3j3/8w/liU1JSYt5//31z2GGHGUlmzJgxPvPt73ZX+wt3U+zPvjIjI8P5jPfu3dt89dVXzriFCxc670lCQkKdcNiUsGyMMb179zaSzK233mqd13v8u+yyy3yGN+WY2tCwHB8fb84++2yzZs0aY0zNMfeNN95wvpxdeuml9b7uvVVUVDif7QsuuKBR8+7t/PPPd0LuE088YYqLi40xxuzYscPnC5u/sOndN8TFxZl27dqZt956y5SXl5vq6mqzbNkyZ/sePHiwOffcc02XLl3Mp59+aqqqqkxVVZX5/PPPTfv27Y0kc8kll9RZvve4EBkZacLCwswNN9zg7MdycnKc7dT7OQkODjYzZswweXl5xhhjtm/fbs444wwj1TRseYd7NWdYjo+PNyeeeKJzbK2oqDBz5841qampRpI5+eST6yy3odtPfeo7du7evdt06dLFSDUNKwsXLjSlpaXGmJovSY899pizHf35z3/2mff+++93Pq9vv/22M19VVZXZtm2befXVV82kSZPqrW1vzRaW9/72UPtR3zfm2t566y0jyXTr1q3OOO83uW+++abB9TVHWC4uLjavvPKKsyN1u91m+/btfpezr7C8dOlSExQUZCSZc845p8Gvwxjj88Gqb10nJyebRx55pM78td+n7OzsOuPvuusuZ5o+ffo4G1dtl156qZFkTjvtNGt9ksxdd93l9zX89re/dTbgkpISn3HeLxG2eY0x5oYbbvC77h566CFnh/nzzz/XmW/Hjh0+wWDvbeGaa64xkky7du38tub98MMPJjQ0tElhub5Add555xlJZvjw4T7Dq6urnW/VI0aM8Nsi731uf9udd72MHDnS7/Pur319rvbs2WMSEhKMJHPRRRf5XcYTTzzhLGPvLz+119mUKVOaVKv3MynV/FKx9y8dsbGx5p133tnv5e9vWK7P1q1bjdvtNi6Xy2+LVe3at2zZ4ncZr732mpFqWlQWLlxYZ3xJSYk54ogjrAHuo48+MpJMSkqKteVwy5YtTivcqlWrnOH7u90FMixfffXVTmjwfrGrrfYX6r1/WWxqWH7wwQeNJNOxY0e/LcBbt251jhuff/55g1+TMfUfUxsadoYNG+a3Lu9nOCIiwvnC1xAbNmxwlj1z5sxGvZ7ali5d6izn2Wef9TuNN0wnJibWOebU3jf4+8Vg3rx5zviIiAizfv36OtO8+OKLzvjy8nKfcbX3zVdeeWWdeSsrK03Xrl2daWbMmFFnmvz8fOcz9tprr/mMa86wfMQRR5g9e/bUmbf2r09772sOdFieNm2aE5Rt29c777zjvL+1pxk1apSRZB544IF6n78xmq3P8s6dO62Phl4f0Xt1iP/85z/asWOHzzjvZd/2Ht7cbrzxRqWkpCglJUXt2rVTVFSUJk6cqLy8PIWGhmr27NlKTU1t1DK3b9+u1157Teecc46qq6vlcrl000037Vd91dXV9a7rnTt31tvfcdKkSWrXrl2d4aeffrrz95QpU+R2u63TrF692rr8iIgITZs2ze+4u+++W5KUm5uruXPnOsO///57LV++XKGhoZo6dap12Zdddpkk6fPPP/fp7/r6669LksaOHatevXrVmS8lJUVXX32132UaY5w+YVdffbXfy4j17dtXF1xwgbWuhnC73db1cs4550iqu16/++47rV+/XpJ0xx13+O0TOWHCBHXu3Nnvcr2fmV27dln7Bx8Ic+fOVW5uriT7ZYOuvfZa53M0Z84cv9MEBQXp1ltvbVItQ4cO1csvv6xt27aprKxMubm52r17t15++WUlJSWpoKBA48aN0+LFi5v0PM2pQ4cOOvroo2WM0TfffGOd7tJLL7VeI/qtt96SJJ1yyik6+eST64wPDw/X//3f/1mX/cILLzjPYbusU8eOHZ2+iZ9++qkzPFDb3f4yxujNN9+UVLMPSElJqTNNx44dnX2Id3/TXH77298qKChIW7du1fz58+uM//vf/67q6mqf9d1Q9R1TG+qOO+5QUFDdqODdb5WUlDj7qYbIyclx/q7vqlL74n0fOnbsqCuvvNLvNPfff7+kmr77tY85tZ100kk66aST6gwfMmSIcxy84IIL1L179zrTeI+J+1oHt912W51hwcHBOu200yTVfB79ZYLY2FgNGjRIUv3H3aaaOnWqc8nc2kaNGuWccPnDDz8csOffmzFGL730klNbSIj/C7eNGTNGsbGxys7O1sqVK53hByIvNltYNjWt1H4f/fr1c6YrLCzUI488oiFDhigpKUlhYWFOx+/IyEhnur1PHDjzzDMl1YSDqVOn6ssvv/Q5K7+5FBQUOKHTe8CXpM6dO2v16tUaN27cPpfx5Zdf+nRo79Chgy677DJlZmYqNDRUTzzxRKNPMPRKT0+vd10bY+o9Aer444/3O7z2dbKPO+64eqfZvXu3dfkDBgxQbGys33E9evRwDu4rVqxwhn/11VeSar4IHH744c6Xlb0f3pMsi4uLnR1ueXm58yE+9dRTrXXZxm3cuNF5n/dn/obynjDkT1pamiT5bG+SnJOwQkNDNXjwYL/zulwuDRkyxO+44cOHKzw8XKtWrdLJJ5+sF198URs3btzfl9Bg3ve2U6dO6tmzp99pgoODnXVae1uorXv37k2+BvL06dM1ceJEpaWlOV82PB6PJk6cqG+++UZxcXGqqKhocihvrOrqav3jH//Q2Wefrc6dOysiIsJnn7Fs2TJJNSc125x44onWcd5tx7ZtSKp3H+T9TD733HPWz2NKSoo+//xzSTUnBHsFarvbX7X3AcOHD7dON2LECEk1Ya85X0/Hjh2d9+K1116rM9477JJLLvEbWvf3mNpQtku1efdbUt19V31MrRMOm3LDMu9+Y9iwYX7XiyT16tXL+bJn28/YjonBwcFKTEyUtO9jomQ/LiYkJKhbt271zt+7d2/rDZ0actxtKtt7HBIS4ty3oTHvcVP9/PPPzvNNnDjRuv9JTU11Ggdr74O8efGpp57SRRddpPfee0/Z2dlNqqnZrrPcEOvWrdNpp53mcwCIjIxUXFycs7F7zzguLi72mffhhx/Whg0bNH/+fD322GN67LHHFBwcrH79+mn06NH6/e9/3ywXtn755ZedszULCgr07bff6g9/+IO+/vprXX755Zo7d+4+L5dV+6YkLpdLERERSktL0+DBg3XllVdaA0RLiImJ8Tu89je3fU1TWVlpXf6+3oMOHTpo69atysrKcoZt375dUs1Zzfu68oSX94tSbm6uU099z21rgatdx/7M31C2dSrZ16v36iTt2rXzuZzS3mx1H3bYYXrhhRd09dVXa/HixU7rafv27TVs2DBdfPHFOvvss5v9DpvedbqvbcG7Tmu/B7Ud6JuFdOvWTdddd51mzpypr776StnZ2c7B8UDas2ePzjzzTJ9WxLCwMCUkJDjXrM7NzVVFRUWd/WBt9a0f77ZTO9Dszfb+VFRUOAeW/Px85efn21/Mf9VuuAjUdre/9mcfkJWV5XO1paa67LLL9MUXX+jtt9/WM88844Tc7777Tj/++KMzzd6ackxtqIYcMxpzd73an7HarcyN1Zj9zLZt26z7mYbs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b1dMTIyys7M1YsQI56xpY4w+++wzjRo1yues8pbicrl07733Sqq5NNeECROcgFlaWqoXX3xRV111lU8LQ22TJ0/WhRdeqLffftvn5JaioiLNmjVLr776qqSaA1dzioiIcELynDlzdPXVVzvdo/bs2aMnn3zS6S82bty4Rp9o0VB//OMfNWHCBH3yySc+O+yCggK9+uqrGjx4sHbv3q3Q0FA99NBDTXquPXv2KDs7u96HN1B6r+oyY8YMvfPOO85+aePGjbr44ov15ptvWt/Thho3bpz69OkjY4zOO+88vf/++04/wLVr1+rMM8+s9yf6c845x+kWcNttt+maa67x+ZWgvLxcS5cu1a233qr09HSf7Wt/t7u+fftKqrktsO0Wu41RXV29z/fEu4+64447FBcXp9zcXA0fPtznl5yvv/5aw4cPV15enhISEup8mQkNDdX5558vSXrggQf05ptvOu/12rVrde6551q/GNUWFBTktLq/+OKLeu+99yT574IhNe2Y2hr84x//UK9evVRZWakLL7xQl1xyiRYtWuRzItmOHTs0e/Zs9e/fX1dddZVKSkqccccff7yz3q+//no99dRTzjEjMzNTkyZNci6heP/99/sccw4W3i9uL730kp555hln/WzZskVXXnml3njjjYAcu3r27OkE0hdeeGG/WpfvuusudevWTZWVlTrjjDP02GOP+TSk5efn69///rcmTJhQ5/KYAwcO1A033KAFCxb4dPPZvn27rr/+eueXu0Yd+5pykebG3sHvww8/9LndYGRkpHPnuMjISPP555/7vXB77YtfSzW3tExISPC5VXNYWJh566236jyn904u+u8NRTp16mTS09N97hzWkDv4eb377rvOtB999JHPuIbcwW9/NeamJMnJySYjI8Nnfn/rtbaGXOC8vguN+7vdtb9bkl922WV+L3BvjDGfffaZadeunc/73K5duzq3yfV3gffly5fXuVVt7Vu07ut21x999JHPLT5jYmKcG+E01+2ubfZ1AfebbrrJGe+97bP3Jimnnnqquf32240kc/rpp/vMV/tGMVLNHd/2vq3ySSed1OjbzTb0Yvh73+46Pj7e5/M/bNiwfd7uuilq75+872lCQoJzgwep5o6Tb7/99n4/R+3l7+vx7rvvGmOM2bRpk3ObaqnmrpS1b+H6wAMP1Hub7n19lr3WrFljUlJSfPZ/3udxu93mww8/dMYtXry4zvzFxcVm/PjxPq8hKirKxMfH+6xDST43Ltnf7S43N9e5I5r+e6OB9PR0k56e7rc+m72fv75H7RscLViwwOd9iIqK8rn1cVxcnN8bvBhTc9OS2rcWDw0NdW5iEhMTYxYsWNCg9+2HH37wqc/j8dS5mUZt+3tMNaZ5birR0G3RJj8/31x44YU+xwjvvsJ7+3Pvo1evXmbFihU+8+fl5fncXCQkJKTOMWdft7uu74ZCtht61GZbB/u6lbMxDdvX1XeznsLCQucOkFJNPvB+1kJDQ82cOXMadFOSpt7UxN/8v/vd73y2y86dO5v09HQzdepUZ5p9raNff/3V57bV3s+h97PlfXTv3t1vzd7tKS4uzuezLMncfPPN1tfsT4teDePMM8/UwoULNXr0aMXFxamyslKJiYm6/PLL9e233zoX6N5bhw4d9MEHH+jmm2/WCSec4FxbLyQkRL1799Z1112nH3/80e+NI+644w795S9/0YABAxQaGqqtW7dq8+bN+33iwznnnOO0gHh/4mlJDbkpyc6dOwN6M4A5c+bor3/9q4455hhVVlYqKipKgwYN0quvvqrZs2dbr4k5YsQIbdiwQQ8++KBOOukkeTwe5eXlKSgoSL1799bvfvc7ffDBB87JlrUNGDBAq1ev1pVXXqkOHTqosrJSHo9HEyZM0Lfffmu9lqbX6NGj9e2332r8+PFKSkpSeXm5kpOTNXnyZK1atapZLxPVWI8//rjeeecdDR06VDExMSorK1OvXr30yCOP6NNPP3W+OXsvxO5111136YknntC5556rI444QiEhISoqKlJSUpJGjBihl156SQsWLLBe37OpHnvsMX3xxRc6//zzlZycrKKiIsXExGjYsGF66aWXNHfu3HovWdRUY8eO1d13360RI0aoa9eucrlcKigoUHx8vE466STdd999Wrt2rc4777wDVoM/6enpWrFihX73u985l3YLDw/XmWeeqU8//VS33357szzPEUccodWrV+uGG25Qly5dZIxReHi4LrzwQi1ZssTnOs17bztSzYnNc+bM0fz583XppZfqsMMOU3V1tbMNnXrqqXr44Ye1fv16n8t37e92Fx8fr4ULF2r8+PHq0KGD8vPztXnzZudqIQfakCFD9Msvv2jq1Knq1auXqqurZYxRr169NG3aNK1Zs8bvDV6kmsuTLV261Nn/SDUn7V122WX69ttv673edW19+/b1uS/BhRdeWG+L6P4eU1uL2NhYvfHGG1q1apWmTZumAQMGKDExUYWFhQoNDVWvXr00YcIEffTRR/rhhx/q/Arl8Xg0b948vfjii87+saioSCkpKTr//PM1f/78fXYjasuio6P11VdfacqUKeratatCQkKcXzoWL17sdFUJhKefflrTp0938lJGRoY2b97cqOsdd+3aVStWrNCrr76qM888U6mpqU63r65du+rcc8/VSy+9VOemUq+//rruvfdenXbaaeratavKy8tVUVGh9PR0jRs3TvPmzWtUX3lJchnTSq4nA2C/nHjiifrmm29033330T0IDTZ37lyNHDlSbrfbCScAgLpatGUZQPP68ssvnf6V3r6wwL4YY5x+2qeddhpBGQDqQVgGWrnrrrtOr7zyinNxdqnmDONnn31W55xzjqSa23EfbJdGQtPMnz9fN910k1asWOGc+GOM0cqVK3XWWWdp3rx5crlcuuWWWwJcKQC0bnTDAFq5fv36OWfTu91uRUZGKi8vzwnOvXv31meffdYst3vHweO9995zrmgh1fQJLikpcfr/ulwuPfroo5oyZUqgSgSANoGwDLRyH3zwgd59910tW7ZMO3fuVH5+vmJjY9WnTx+dd955+v3vfx+QywOhdcvMzNQLL7ygefPm6ddff9WuXbtkjFFaWppOPvlkTZ482efmQAAA/wjLAAAAgAV9lgEAAACLkEAX0FTV1dXavn27YmJi5HK5Al0OAAAA9mKMUWFhodLS0qz3W2it2nxY3r59uzp16hToMgAAALAPW7ZsUceOHQNdRqO0+bDsvQPYli1bFBsbG+BqAAAAsLeCggJ16tTpgN659UBp82HZ2/UiNjaWsAwAANCKtcUus22r0wgAAADQggjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwCIk0AUAAHxVFuSoPHuryjJ/VWhCqtyp3RQS204uF+0bANDSCMsA0IpU7M7Ujr9PV2X+LmeYyx2p1EvukTulm1wulySpuqJMVcX5UnWVXGHhComOD1TJAHBQIywDQCtRVVKoXR8+7ROUJcmU7dHONx5QhyseUUhsO1Xk71Lu/L+reM03UnWVQhNS1W7k7xTe8QgFuSMCVD0AHJz4TQ8AWomqPQUq3fKz/3HF+aosyFZlYa4y59yv4p8WSdVVkqSK3B3KfH2Gynasb8lyAeCQQFgGgFbCVFbUO766olTluzJUkbPN7/icua+osjj/QJQGAIcswjIAtBJB4VFyhfnvRuEKDVdY+84q2fSDdf7yrM0yFWUHqjwAOCQRlgGglQiJjle7MybJ5Y7838CgECUM+62Sz5+mPetXKjgy1jq/yx2pquJ8VezV5xkAsP84wQ8AAsxUVaqyMFdlmb+qek+Bks+bqqqiPOXMfUntzpikoh8XKnf+3yRJKePulFxBkqmus5yYI4co76u3VLZzo9IunaHQ+OSWfikAcNAhLANAAJnqKpVuX6/MOTNkKkqd4WFJXdThyj9pz7rlKtnwrTO8YOW/lfibq5T9yfNSdaUzPLxTL0Wk99XOlX+STLV2f/VPJZ5xpYJC3S36egDgYENYBoAAqizIUebrvkFZksqzNqlsx3+Uv+wjn+F7NqyUMdVKvuD/VFmQreo9BQpN7KSqgmxlvf8Xp8W56KeFih8yjrAMAE1EWAaAACrflSFTXup3XHXpHlWVFP5vgCtIEel9FRKToIKV/1ZIXLKC3BHa9eFTdcK2qqvlMuYAVg4AhwZO8AOAAKoq2m0dV77zV4V37i1JCu/UWynj7lBYUroqC3MVGp+imKOGqaqkqG5QlhTRvb9c4VEHrG4AOFTQsgwAARSWcljNH64gRfY8TlE9jpOCg1W65ReVbFmjpDMnKyt/l2KP+412/vNhmcpySVKJpIJvP1PSOTepYucmVeRuV8xRw+TueLgkl8JSuiq49lU1AAD7xWVM2/6drqCgQB6PR/n5+YqNtV9SCQBao8rifO366Gl5+p+h4vXLVfzTV6quLFdkt2MVf9IFCm7XUdX5Wdrx+gxVFWTXmT8oIlqpF09XdWmR8ha/p5Jfv5dcLkUdfrwShv1WoQmpAXhVAOCrLec1WpYBIIBCojxKHHmFMl+fqYrc7c7wPeuWqWTTanW44hGZ6mq/QVmSqkuKZCrLlfnWwzLle2oGGqPiX5aoJONndbj8IYXGJbXESwGAgxJ9lgEgwMq2/8cnKHuZ8lLlffOOXCH1t2tUlfrvt1y9p0DFP38t4+eazACAhiEsA0AAmapKFf28yDp+z4aVkitYQZaT9VwhYXJZblIiScXrlqu6rKRZagWAQxFhGQACyeWyBmFJCgqLUFBomNqdfqXf8QnDLtGeTT9a5w+OjJErmB53ALC/2IMCQAC5goIVe+zpKlq9wGd4cEyC4k4Yo7DUbqrM3yV3and1mPS4cua+pMrcHYo97kxFdO0rU12lcFewVFGiglXzfO7qJ0megWdxYxIAaALCMgAEWGh8qmIHnq2CpR9IkkI87ZU46mrlfP6KKua+VDORK0gx/U5T+7Oul6orlTPvVeXOmy3JSK4gRfU+UUljblTWe39xAnPscaMV1r5zgF4VABwcCMsAEGDBkTGKP/E8xfQ9WYWrFyiqxwBlffiUqgpz/jeRqVbhqrkKjvRIQUHa88sSn3HFPy2SS1LSeVNUkZWhqMOPV3BMgoIjYlr89QDAwYQ+ywDQCgRHxMidcpgSR14huVy+QbmW/OX/Uli7Dn7HFf38tdztOyv+5LEKS0onKANAMyAsA0ArU56zzTrOlJdIQZZdt6lWVWnxAaoKAA5NhGUAaGXC2nW0jnOFRUjV9usmB7kjDkRJAHDIIiwDQCsTmpCq4NhEv+M8x5+pkm3r/I4L73pUTZ9mAECzISwDQCvjCotQ6vg7FZaUXmtgkGL7j1Js/zMUd/xohSV38ZnH3fEItR99nYIjolu2WAA4yHE1DABoRar2FCp/2Ycq/H6ePAPPVmhCmkxVpYKj4xUan6yQ6DhJUsr4u1W1J09VxXkKiYpXcHScgiNjA1s8AByECMsA0IqUZ2co7+u3JUm58171GZc87k6FdI+XJLmCXHIFBSs4Kk5B4ZH13gUQALD/CMsA0EpUV5Qpf8kH1vH537yr8E5HqKowR1kfPKnyHf+RJAVFxqrd8ImK7D5AwRGEZgBoTvRZBoBWwlRWqKo43zq+qqRA1XsKtP21u52gLEnVewq064MnVLbd/4l/AID9R1gGgFYiyB2hiG7HWMdH9zlZpVt/UfWeAr/jc794rd6wDQBoPMIyALQSrqBgxRw5VEHuyLrjQt2KOXqYSjPWWOcvz8pQdVXFgSwRAA45hGUAaEVC4torbcIDCu96lDMsvHNvpU14QMFRcQpNtN+wJCQ2US5XcEuUCQCHDE7wA4BWxOUKUlj7Tko+b5qqS4okGQWFRyk4IkaSFNXjOOXO/5tUVVln3riTzldITHwLVwwAB7cD2rK8cOFCnXXWWUpLS5PL5dJ7773nM94Yo+nTpystLU0REREaOnSofvrppwNZEgC0CcHhUQqNT1ZofIoTlCUpxJOo1PF/kMunq4ZLsf1HKarn8S1fKAAc5A5oy3JxcbGOPvpoXX755Tr//PPrjH/44Yf12GOP6ZVXXlHPnj01Y8YMjRgxQmvXrlVMTIyfJQLAoc0VHKLwzr3VcdJjqszLUnV5iULbpSk4Mk7B4XX7OgMAmsZljDEt8kQul959912NGTNGUk2rclpamm666SbdeuutkqSysjIlJyfroYce0lVXXdWg5RYUFMjj8Sg/P1+xsdy9CgAAoLVpy3ktYCf4bdy4UZmZmRo5cqQzzO12a8iQIfrmm2+s85WVlamgoMDnAQAAABwIAQvLmZmZkqTk5GSf4cnJyc44fx588EF5PB7n0alTpwNaJwAAAA5dAb90nMvl8vnfGFNnWG2333678vPznceWLVsOdIkAAAA4RAXs0nEpKSmSalqYU1NTneFZWVl1Wptrc7vdcrvdB7w+AAAAIGAty127dlVKSormzp3rDCsvL9eXX36pwYMHB6osAAAAwHFAW5aLioq0YcMG5/+NGzfqu+++U0JCgjp37qybbrpJDzzwgHr06KEePXrogQceUGRkpC6++OIDWRYAAADQIAc0LK9YsULDhg1z/p8yZYokacKECXrllVd0yy23qKSkRNdee612796tgQMH6rPPPuMaywAAAGgVWuw6ywdKW75uHwAAwKGgLee1gF8NAwAAAGitCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIBFwMPy9OnT5XK5fB4pKSmBLgsAAABQSKALkKQ+ffro888/d/4PDg4OYDUAAABAjVYRlkNCQmhNBgAAQKsT8G4YkrR+/XqlpaWpa9euGj9+vH799VfrtGVlZSooKPB5AAAAAAdCwMPywIED9eqrr+rTTz/V888/r8zMTA0ePFg5OTl+p3/wwQfl8XicR6dOnVq4YgAAABwqXMYYE+giaisuLla3bt10yy23aMqUKXXGl5WVqayszPm/oKBAnTp1Un5+vmJjY1uyVAAAADRAQUGBPB5Pm8xrraLPcm1RUVE68sgjtX79er/j3W633G53C1cFAACAQ1HAu2HsraysTGvWrFFqamqgSwEAAMAhLuBhedq0afryyy+1ceNGLV26VBdccIEKCgo0YcKEQJcGAACAQ1zAu2Fs3bpVF110kbKzs9W+fXudcMIJWrJkidLT0wNdGgAAAA5xAQ/Lr7/+eqBLAAAAAPwKeDcMAAAAoLUiLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABatIiw/88wz6tq1q8LDw9W/f38tWrQo0CUBAAAAgQ/Lb7zxhm666SbdeeedWrVqlU4++WSNGjVKGRkZgS4NAAAAhziXMcYEsoCBAwfq2GOP1V//+ldnWK9evTRmzBg9+OCD+5y/oKBAHo9H+fn5io2NPZClAgAAYD+05bwW0Jbl8vJyrVy5UiNHjvQZPnLkSH3zzTd+5ykrK1NBQYHPAwAAADgQAhqWs7OzVVVVpeTkZJ/hycnJyszM9DvPgw8+KI/H4zw6derUEqUCAADgEBTwPsuS5HK5fP43xtQZ5nX77bcrPz/feWzZsqUlSgQAAMAhKCSQT56YmKjg4OA6rchZWVl1Wpu93G633G53S5QHAACAQ1xAW5bDwsLUv39/zZ0712f43LlzNXjw4ABVBQAAANQIaMuyJE2ZMkWXXnqpBgwYoEGDBum5555TRkaGrr766kCXBgAAgENcwMPyuHHjlJOTo/vuu087duxQ37599fHHHys9PT3QpQEAAOAQF/DrLDdVW75uHwAAwKGgLee1VnE1DAAAAKA1IiwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgEVIoAsAAKClVRQVqyJvt/K+Wy1TVam4fkcrLCFBoTExgS4NQCtDWAYAHFIqCgu146OPteX1N32GJ48coc6/vUhhHk+AKgPQGtENAwBwSCnZuq1OUJaknZ/NVeGaXwJQEYDWjLAMADhkVJeXq+g//1GncWPVftgQBbndPuO3vv2uKgqLAlQdgNaIsAwAOCRUlpSoeHOG8n/8WTlLl8lUVurwW6Yq4YSB/5umoFCmqjKAVQJobeizDAA46FVXVip32XKtf+wvzrA9mzYr++vF6j75WpXn5Kho/QZ5jj5SIZGRAawUQGtDyzIA4KBXlpWlX//6bN0R1dXaPPs1pY7+jYLCwtThnLMVFBbW8gUCaLUIywCAg1p5Xp72bNmqqpJSv+Mr8vMVEhOtox5+UO7kpBauDkBrRzcMAMBBrXz3bpnK+vshh8XFKaprl5YpCECbQssyAOCgVZabq5Kt2yRXkIIjwv1OExoXp9C4uJYtDECbQVgGAByUynJy9PP9DygoNEyZ//5U6Zf9tu5EQUHqPvkahSXEt3yBANoEumEAAA5Keau+kyorVVlcrIq8PBWuW69ed96mrPlfqnRHpiI6dVDK6SMVmZ4uVxBtRwD8Y+8AADjolO7KVkhMjNoNHiRTUaGeU26SXEFa99ifFRwRrvgBxyq6e3eFp6YqNCY60OUCaMVoWQYAHFTKsrO19qFHVLR+gzMsKDxch98yVcmnDnOufhHZqRPdLwDsEy3LAICDRlVZmTLmvOkTlCWpurRUax96VJXFxVr76GMqy84mKANoEMIyAOCgUZGfr10LvvQ7rrqsTOW5uYo75mjF9Tu6hSsD0FbRDQMAcNAwFRX1XlO5urxcPW68XmFcKg5AA9GyDAA4aASFhyusXYJ1fEyvIwjKABqFsAwAOGiEJSSoy8TL/I6L6t5d4UnczhpA4xCWAQAHDZfLpbhj+qnHlJucFmZXSIiSTjtVvW7/P4XFxwW2QABtDn2WAQAHldCYGLU/5SR5+vZWVWmpgkJDFerxKNjtDnRpANogwjIA4KDjcrnkbtcu0GUAOAjQDQMAAACwICwDAAAAFoRlAAAAwCKgYblLly5yuVw+j9tuuy2QJQEAAACOgJ/gd99992nSpEnO/9HR0QGsBgAAAPifgIflmJgYpaSkBLoMAAAAoI6A91l+6KGH1K5dO/Xr108zZ85UeXl5oEsCAAAAJAW4ZfnGG2/Uscceq/j4eC1btky33367Nm7cqBdeeME6T1lZmcrKypz/CwoKWqJUAAAAHIJcxhjTnAucPn267r333nqnWb58uQYMGFBn+Ntvv60LLrhA2dnZame5mLxt+fn5+YqNjd2/ogEAAHDAFBQUyOPxtMm81uxhOTs7W9nZ2fVO06VLF4WHh9cZvm3bNnXs2FFLlizRwIED/c7rr2W5U6dObXLlAwAAHAraclhu9m4YiYmJSkxM3K95V61aJUlKTU21TuN2u+V2u/dr+QAAAEBjBKzP8uLFi7VkyRINGzZMHo9Hy5cv180336yzzz5bnTt3DlRZAAAAgCNgYdntduuNN97Qvffeq7KyMqWnp2vSpEm65ZZbAlUSAAAA4CNgYfnYY4/VkiVLAvX0AAAAwD4F/DrLAAAAQGtFWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwCdrvrg0l5RZUKistljFFkeKiiIkIDXRIAAACaAWG5ibJy9+ifX6zXFyu2qLyySscenqTLz+yjDknRCgmm4R4AAKAtIyw3QXZeie6c9bUyc/Y4w1b+kqUf/5Ojx28eok7JMQGsDgAAAE1F02cT/LQxxycoe5VVVOn1uetUWlZpnTe/qEw7sou1M6dYJaUVB7JMAAAA7CdalvdTZVW1Fq3aZh2/au1OFZdUKNztu4rLyiu1YWu+Zr2zWpt2FCgoyKVBfVM18czeSmkXdaDLBgAAQCPQsryfglwueaLCrOMjw0MVFORSeUWVikoqVFVVLUnK2FmoO575Spt2FEiSqquNvl69XXc887V27S5pkdoBAADQMLQs76egIJfOGNxVny3L8Dv+6vOOUk5+qV744Edl7d6j3l3aacTAzvpieYaqTd3pd+WVaM2mHLWP73iAKwcAAEBD0bLcBCntIjV+RM86w8cN76Gs3D26+c9fauGqbfpl0269s2CDbnrsS/XrmaTkhEi/y1v+884DXTIAAAAagZbl/VBRWa3dhaWqqKzW8OM6a9iATvpixRaVlFbq5GM6KDYyTNc+/EWd+coqqvTaJ2s0+sSueunDn+qMbx8f0RLlAwAAoIEIy42UW1Cqd+dv0CdLNqmsvEpx0W5dcsYROvukw1RSXqXtu4qUlbtHVf76WkjanFlobVkeeixdMAAAAFoTwnIjFBaX6+m3vtOyWt0l8orKtOj7bYqPdeuRv61UpDtE40ccXu9ywsN8V3uQS7p+XD+1j/cfogEAABAYhOVG2F1Y6hOUvcac0k0PvLJclVXVKiuvUlJCpIJc8nsiX1pilDomRenPNw/RD//JVlR4qPp2S1RcjFsRbt4OAACA1oR01ghbs4rqDOuSGquN2wtU+d9Lw0nSou+26dyh3fX2/A0+0wYHuXT9uH5KSohSUoLUrWPcgS4ZAAAATcDVMBrBE+2uMywmMky5BaU+w75YsUXBQUGaesmxOqpHotISo3TqgE56YupQ9ewU31LlAgAAoIloWW6E5IQIxUaFqaC43Bm2bVeRhvave2Lem/PWKT7GrTNP7Krj+6bohw3Z+vLbrRpybEe1j4+kywUAAEAbQMtyI7TzROjeSYMUFf6/oJtbUKqYyDC/V7jYXVimdnEReujVFXruvR/15rz1uu6R+fp69TaVlle2ZOkAAADYDy5jjP9rnLURBQUF8ng8ys/PV2xs7AF/vupqo+y8Em3aUaDMnGJ16xintMRIlVVU67l3V2vFL1kyRkqIDdfFpx+uX7cX6OOvN/osI8gl/fW205SWGH3A6wUAAAi0ls5rzYm+AI0UFORSUkKkkvZqSS4tr9SVY47UJaWVCgsNljssSA/NXqF1W/LqLKPaSD/9J4ewDAAA0MoRlvdDXmGpsvNKtX7LbiV4wpWeEqs3Pl+nBSu3qLLKKDwsWOcM6aYRA9O1fmue/LXdF5dWtHzhAAAAaBTCciPl5Jfokb+t1E+/5kiSLj79cH24aKO+X7/Lmaa0vEpvzF2ns04+TCf366CFq7bVWc5R3du3WM0AAADYP5zg1wjlFVX657z1TlB2uaTuHeN8gnJtny7epJOOSqsz/IS+qWrnCT+gtQIAAKDpaFluhLzCMs1dluH8Hxkeqt2FZdbpyyurFR8brn492mvNplx5osM0Zmh3nXhUmsJCg5WTX6Lg4CDF+bl+MwAAAAKPsNwI1dVG037bX1VVRtXGaMHKLYqOCK13nsI95erW0aPLRvdSXLRbcTFh2p69R8+/94N++E+2PFFunX9qdx1zeJLiY2htBgAAaE0Iyw2UmVOsJ95apR821HTBiAwP0Zgh3RQbVXON5Z25e+rM069ne/34a47emb9Bb8/foKemDVNeUZlueXKRKqtqzvrLLyrX43NW6ZRjOuiqc49UbBStzAAAAK0FfZYbICe/RH+Y9Y0TlCVpT2ml/vHpWm3bVaQbxvVTYpxvq3DXtFiNGdJNn3yzyRm2JatQf317tROUa1u4apty8kvrDAcAAGiskj3lys4q0vYtecrNLlY5N0Pbb7QsN8CWnUV+W44l6R+frtXUS/rrgWtOVHZ+qTZuy1diXIRyC0r16N9WqqTsfxtnpDtU6/1cd9nr+3W71DXN09zlAwCAQ0je7j2a//EvSusUL098hPJySxS+O0TJqbGK4jypRiMsN8CGrXnWcbkFpWoX61ZqYrTiY8K1aNU2zf7XzyqvrK4zbYQ7WEGumpuS+BMWFtxMFQMAgENRUWGZvvj4F/Xt10Gf/2uNsncWSZKiosN02pm91LNXkiIJzI1CN4wGSEuMso6LcIcoLLQm5Ia7QzRqcBdV+knD4WHBSvCE67jeyX6X43JJR/fg2ssAAGD/FRWU6qhjO+qdv3/rBGVJKi4q1wevf69dtYahYQjLDdC9Y5wiw/03wp91clfFx/6vv3Ja+2jNuGqwUtv9L2B3TYvVH687SYlxkbrirL6Ki6n7je6Ks/oq3s9wAACAhiorq1TGxlyVl1X5Hb/g07Uq2VPewlW1bXTDaIB2cRGacfVgTX9+iQqK/7eBnXh0mkafeJhCgv/3ncMdGqwjuyfq4etPVnFphSqrqhUaEqSEmHAFB7mU1j5af7rxFK1cs1NLf8pUO0+EfjO4i1LaRSoyvP7L0AEAANQnOtqtrMxC6/id2wtVUV6liMgWLKqNIyw3QHCQS906xOnPU4Zq1+49KtpTodTEKIWFBmnjtnwtWLlF6Smx6pwSq/bxESorr9TWXYV69p0ftGlHgYKDXDrxqDRdNrq3khMilRQfqVGDu2r4cZ0VFORScDAN/AAAoOkiosIUlxBhHR+XEKHgEHJHYxCWGygoyKX2cRFqH1ezAW7ZWahpTyxSXq07+MXHuPXH605SYUmF7nzma+dEvqpqo4XfbdPajN3/7Y5Rs4zQUE7oAwAAzScyKkzHDuys5V9vlvFzDtWJp3bXjq35ikuIVHSMW+H7uLkaCMv7ZXdBqWa+vMwnKEvS7sIyLft5p5b8sN3vFS925u7RuozdTlgGAABobvGJURo3cYDe+fsqlf/3ErauIJcGntRFudnFmv/JWsklHTc4XSee1l2xHnJJfQjL+yG/qEzbdvk/m7SdJ1xrNuVa512xZqcGH5V2oEoDAACHuNDQYHU7vL2u/r9TlJ9borKySrlcLv38/XYtXbRRPXsnKb1bO1VVGW3fkqeIyDB+7a4HnVb2Q1mF/zNMJam4pKLeW1a3j+fbGwAAOLCCQ4IUFx+p9G7tlLW9QHNeWKbN/8nRRVceL098pJZ/vUnfr9iindsKVMgdhOtFWN4PsVFuBQW5/I776vttOvuUw/yOc7mkk/t1OJClAQAAOIwxytxRIFeQS785/0h98Pr3Wv71JuXllignq1hffrZeb7+6UgUEZivC8n6Ii3HrzBO7+h3XNc2jYf076djDk3yGB7mkm8Yfq3b0CwIAAC3E5XKpS7d26tErSet+2qmivc63kqQd2wq0bfPuAFTXNtBneT9EuEM09rQeio916+0vNqiopEIxkaG64NQeOnVAZ8XFuDXl4mOVtbtEP2zIVnRkqI7slqj4GLfC3axyAADQcg7r0V6m2uibBb9ap1m1dIu690qi77IfJLf9FBcTrnOHdNeQYzqqorJaYaHBio9xO9dM9kS75Yl2q0enuMAWCgAADmnxiZHqUpWoJQs3WqcJDnHJ5fLfxfRQRzeMJggODlL7+EiltY9WYlwENxcBAACtjsvlUnxCpI4Z2Mk6zXEndlEINyvxi7UCAABwkAsJC9ZR/TsqKTWmzrjD+yYrKTU2AFW1DXTDAAAAOATExkXo4iuPV8bGXH23bItCQoN03IldlZwWo+gY+2VvD3WEZQAAgENEbFyE+h7TQYf3SZHLJYVwQt8+EZYBAAAOMaFhhOSGos8yAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwOKBheebMmRo8eLAiIyMVFxfnd5qMjAydddZZioqKUmJiom644QaVl5cfyLIAAACABgk5kAsvLy/X2LFjNWjQIL344ot1xldVVWn06NFq3769vvrqK+Xk5GjChAkyxujJJ588kKUBAAAA+3RAw/K9994rSXrllVf8jv/ss8/0888/a8uWLUpLS5Mk/elPf9LEiRM1c+ZMxcbGHsjyAAAAgHoFtM/y4sWL1bdvXycoS9Lpp5+usrIyrVy5MoCVAQAAAAe4ZXlfMjMzlZyc7DMsPj5eYWFhyszM9DtPWVmZysrKnP8LCgoOaI0AAAA4dDW6ZXn69OlyuVz1PlasWNHg5blcrjrDjDF+h0vSgw8+KI/H4zw6derU2JcAAAAANEijW5YnT56s8ePH1ztNly5dGrSslJQULV261GfY7t27VVFRUafF2ev222/XlClTnP8LCgoIzAAAADggGh2WExMTlZiY2CxPPmjQIM2cOVM7duxQamqqpJqT/txut/r37+93HrfbLbfb3SzPDwAAANTngPZZzsjIUG5urjIyMlRVVaXvvvtOktS9e3dFR0dr5MiR6t27ty699FI98sgjys3N1bRp0zRp0iSuhAEAAICAO6Bh+e6779bs2bOd/4855hhJ0vz58zV06FAFBwfrX//6l6699lqdeOKJioiI0MUXX6xHH330QJYFAAAANIjLGGMCXURTFBQUyOPxKD8/n9ZoAACAVqgt57WAXmcZAAAAaM0IywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWIQEugAAaIxqU63dJfkqr6pQSFCI4sNjFRLMrgwAcGBwhAHQZhSUFmrxlm/1wS9zdUT7bkqMjFdqTLKOTumt+AhPoMsDAByE6IYBoE2oqKrQvF+/1obcTZp47FhVVVfrx6x1Wpv9qzKLdqmwrCjQJQIADkK0LANoE/JKC7Qhd7N6J/XQI1/Ncoavz9moLzct0Z1DrlefpJ4BrBAAcDCiZRlAm1BUvkdDuwzUP1a/V2dcZXWlZi17TbtL8lu+MADAQY2wDKBNCA8OU0llmSqqKvyO31mcrbzSfJVWlrVwZQCAgxlhGUCbEO2OUrCr/l1WVnGOlm/9XmUVBGYAQPMgLANoE2Lc0eoS30nBQcF1xkWHRWlsnzOVGJmgkKBg5Zdzsh8AoHkQlgG0GYmR8br06PN8hnVLSNf1J1yudTn/0R1zH9ITS17SnNXvaWfRrgBVCQA4mHA1DABthjvErSFdTlB6XAe9+/On2l1aoAn9LtDMhU+p7L99lauM0dcZK/Rz1nrNGH6L2kclBLhqAEBbRssygDYlKixSnWI7qE9ST43t8xvN+/VrJyjXtrs0Xyu3rw5AhQCAgwlhGUCbExserSPad1f2nlz9mLXWOt2yrd9xOTkAQJMQlgG0SYfFddJRyb0UHRZpnSY6LEpb8re3YFUAgIMNYRlAm+QOdatzXAedefhw6zQndDpG//j+PeXRugwA2E+EZQBt2lHJR6h/2pF1hp/efYi25O/QzuJsVZnqAFQGADgYcDUMAG1afEScxhxxuoZ2GaSfd61XSFCwerfvoZ92rdPbP3+sAWlHKzI0PNBlAgDaKMIygDYvITJeTy+brfiIOFWban2yfoEqqysV7ArSuCPPVERoRKBLBAC0UXTDANDmtY9K0B1DrldsWJTW5fyqyupKHRbfWfedNk1pMcmBLg8A0Ia5jDEm0EU0RUFBgTwej/Lz8xUbGxvocgAEUElFqQrLi1RdbRQZFqFYd3SgSwIAqG3nNbphADhoRISGK4L+yQCAZkQ3DAAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAWhGUAAADAgrAMAAAAWBCWAQAAAAvCMgAAAGBBWAYAAAAsQgJdQFMZYyRJBQUFAa4EAAAA/nhzmje3tSVtPiwXFhZKkjp16hTgSgAAAFCfwsJCeTyeQJfRKC7TFiN+LdXV1dq+fbtiYmLkcrmc4QUFBerUqZO2bNmi2NjYAFbYdrEOmwfrselYh03HOmw61mHTsQ6brq2uQ2OMCgsLlZaWpqCgttULuM23LAcFBaljx47W8bGxsW1qY2qNWIfNg/XYdKzDpmMdNh3rsOlYh03XFtdhW2tR9mpb0R4AAABoQYRlAAAAwOKgDctut1v33HOP3G53oEtps1iHzYP12HSsw6ZjHTYd67DpWIdNxzpseW3+BD8AAADgQDloW5YBAACApiIsAwAAABaEZQAAAMCCsAwAAABYHJRheebMmRo8eLAiIyMVFxfndxqXy1XnMWvWrJYttBVryDrMyMjQWWedpaioKCUmJuqGG25QeXl5yxbaxnTp0qXOdnfbbbcFuqxW7ZlnnlHXrl0VHh6u/v37a9GiRYEuqc2YPn16ne0tJSUl0GW1egsXLtRZZ52ltLQ0uVwuvffeez7jjTGaPn260tLSFBERoaFDh+qnn34KTLGt1L7W4cSJE+tsmyeccEJgim2FHnzwQR133HGKiYlRUlKSxowZo7Vr1/pMw3bYcg7KsFxeXq6xY8fqmmuuqXe6l19+WTt27HAeEyZMaKEKW799rcOqqiqNHj1axcXF+uqrr/T666/r7bff1tSpU1u40rbnvvvu89nu/vCHPwS6pFbrjTfe0E033aQ777xTq1at0sknn6xRo0YpIyMj0KW1GX369PHZ3n744YdAl9TqFRcX6+ijj9ZTTz3ld/zDDz+sxx57TE899ZSWL1+ulJQUjRgxQoWFhS1caeu1r3UoSWeccYbPtvnxxx+3YIWt25dffqnrrrtOS5Ys0dy5c1VZWamRI0equLjYmYbtsAWZg9jLL79sPB6P33GSzLvvvtui9bRFtnX48ccfm6CgILNt2zZn2Jw5c4zb7Tb5+fktWGHbkp6ebh5//PFAl9FmHH/88ebqq6/2GXbEEUeY2267LUAVtS333HOPOfroowNdRpu297GiurrapKSkmD/+8Y/OsNLSUuPxeMysWbMCUGHr5+94O2HCBHPOOecEpJ62KCsry0gyX375pTGG7bClHZQtyw01efJkJSYm6rjjjtOsWbNUXV0d6JLajMWLF6tv375KS0tzhp1++ukqKyvTypUrA1hZ6/fQQw+pXbt26tevn2bOnEnXFYvy8nKtXLlSI0eO9Bk+cuRIffPNNwGqqu1Zv3690tLS1LVrV40fP16//vproEtq0zZu3KjMzEyf7dLtdmvIkCFsl420YMECJSUlqWfPnpo0aZKysrICXVKrlZ+fL0lKSEiQxHbY0kICXUCg3H///TrttNMUERGhefPmaerUqcrOzuYn8QbKzMxUcnKyz7D4+HiFhYUpMzMzQFW1fjfeeKOOPfZYxcfHa9myZbr99tu1ceNGvfDCC4EurdXJzs5WVVVVne0sOTmZbayBBg4cqFdffVU9e/bUzp07NWPGDA0ePFg//fST2rVrF+jy2iTvtudvu9y8eXMgSmqTRo0apbFjxyo9PV0bN27UXXfdpVNPPVUrV67kznR7McZoypQpOumkk9S3b19JbIctrc20LPs7UWXvx4oVKxq8vD/84Q8aNGiQ+vXrp6lTp+q+++7TI488cgBfQeA19zp0uVx1hhlj/A4/mDVmvd58880aMmSIjjrqKF155ZWaNWuWXnzxReXk5AT4VbRee29Ph+I2tr9GjRql888/X0ceeaSGDx+uf/3rX5Kk2bNnB7iyto/tsmnGjRun0aNHq2/fvjrrrLP0ySefaN26dc42iv+ZPHmyVq9erTlz5tQZx3bYMtpMy/LkyZM1fvz4eqfp0qXLfi//hBNOUEFBgXbu3Fnnm9rBojnXYUpKipYuXeozbPfu3aqoqDho159NU9ar9+zvDRs20NK3l8TERAUHB9dpRc7KyjrktrHmEhUVpSOPPFLr168PdCltlvdqIpmZmUpNTXWGs102TWpqqtLT09k293L99dfrgw8+0MKFC9WxY0dnONthy2ozYTkxMVGJiYkHbPmrVq1SeHi49TJpB4PmXIeDBg3SzJkztWPHDueD+tlnn8ntdqt///7N8hxtRVPW66pVqyTJZ2eHGmFhYerfv7/mzp2rc8891xk+d+5cnXPOOQGsrO0qKyvTmjVrdPLJJwe6lDara9euSklJ0dy5c3XMMcdIqulf/+WXX+qhhx4KcHVtV05OjrZs2cK+8L+MMbr++uv17rvvasGCBeratavPeLbDltVmwnJjZGRkKDc3VxkZGaqqqtJ3330nSerevbuio6P14YcfKjMzU4MGDVJERITmz5+vO++8U7///e/pK/Vf+1qHI0eOVO/evXXppZfqkUceUW5urqZNm6ZJkyYpNjY2sMW3UosXL9aSJUs0bNgweTweLV++XDfffLPOPvtsde7cOdDltUpTpkzRpZdeqgEDBmjQoEF67rnnlJGRoauvvjrQpbUJ06ZN01lnnaXOnTsrKytLM2bMUEFBAZfJ3IeioiJt2LDB+X/jxo367rvvlJCQoM6dO+umm27SAw88oB49eqhHjx564IEHFBkZqYsvvjiAVbcu9a3DhIQETZ8+Xeeff75SU1O1adMm3XHHHUpMTPT5Ynwou+666/SPf/xD77//vmJiYpxf2DwejyIiIuRyudgOW1IgL8VxoEyYMMFIqvOYP3++McaYTz75xPTr189ER0ebyMhI07dvX/PnP//ZVFRUBLbwVmRf69AYYzZv3mxGjx5tIiIiTEJCgpk8ebIpLS0NXNGt3MqVK83AgQONx+Mx4eHh5vDDDzf33HOPKS4uDnRprdrTTz9t0tPTTVhYmDn22GOdSydh38aNG2dSU1NNaGioSUtLM+edd5756aefAl1Wqzd//ny/+78JEyYYY2ou23XPPfeYlJQU43a7zSmnnGJ++OGHwBbdytS3Dvfs2WNGjhxp2rdvb0JDQ03nzp3NhAkTTEZGRqDLbjX8rTtJ5uWXX3amYTtsOS5jjGmpYA4AAAC0JW3mahgAAABASyMsAwAAABaEZQAAAMCCsAwAAABYEJYBAAAAC8IyAAAAYEFYBgAAACwIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFj8P8gzGhCq0YviAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAKvCAYAAACcbYKXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABjiElEQVR4nO3deXwU9f3H8ffm2tybhJALQohccngByiEIKKBUEVARjypUxQu0iv5UtFY8gIrWWrWWtiqirYjWs54gcngAIkK1iAjKDQFCyEnI+f39QXeaJftNAiRZQl7Px2Mfj2Su/ezsd2feO/udGZcxxggAAABANUGBLgAAAAA4VhGWAQAAAAvCMgAAAGBBWAYAAAAsCMsAAACABWEZAAAAsCAsAwAAABaEZQAAAMCCsAwAAABYEJZRL8aNGyeXy6Vx48YFuhS/Nm3aJJfLJZfLpU2bNh32/IsWLXLmP9SLL74ol8ultm3bHn2hTcisWbPUp08fxcbGOuvmySefDHRZAOrgaLeJaN7qo/00pX3nUYXlKVOmOCurtkcg5ObmasqUKZoyZYpyc3Ot01V906s+goODFRcXp549e+ruu+/Wli1bany+gQMH+l1OdHS0OnbsqHHjxmnZsmVH9Fq8YbQuj6bQ8NC0/f73v9c111yjZcuWqbi4WElJSUpOTlZUVFSgS/Nh+0xWfbRu3fqIl+9dxpQpU+qv6Gbq7bff1pQpU/T2228f1XK820q2g03Ht99+q7vvvltnnHGGkpOTFRYWJo/Hoy5dumjs2LF65513VFZWFugyUUebNm1ystfxIqS+FpScnFxfi6o3ubm5evDBByUd3IDGxcXVOk9sbKwiIiIkSWVlZcrJydHKlSu1cuVK/elPf9Lrr7+uYcOG1biM0NBQJSQkOP9nZ2dr/fr1Wr9+vV566SU98MADeuCBB47oNQUFBally5Y1TlPbeNQvj8ejTp06qVWrVoEupdE8/vjjkqRbb71Vjz/+uEJDQwNcUc2ioqIUHR3td1xSUlIjVwN/3n77bc2ePVtjx47VyJEjA13OcS80NFSdOnVy/g6EgoIC3XjjjZozZ46MMZIOfgH1eDwqLi7W2rVrtXbtWr300ktq166d/vGPf6hXr14BqRW+amo/mzZtcrJXTYG5Ke076y0sZ2Vl1deiAuqPf/yjT1eC/fv367XXXtPtt9+u3NxcXX755fr55599wvCh+vbtq0WLFjn/l5aWavHixbr55pu1YcMGTZkyRT179tT5559/2PWlp6fzk9kxZtSoURo1alSgy2g0e/bscT7v48ePP+aDsiTdeeedx9VRDuBotWrVSj/88EPAnn/fvn3q37+/1qxZI5fLpcsuu0w33XSTevfurbCwMEnSjh079OGHH+qpp57St99+q6VLlxKWjxH10X6a0r6TPsu1iIyM1Lhx4/TUU09JkvLy8vTPf/7zsJYRFhamIUOG6J133nE2As8880y91wo0hv379zt/247WAkBNrrzySq1Zs0YhISGaO3eu5syZo7POOsvZR0pSWlqarr32Wq1evVrPPvuswsPDA1gxmrNGDctlZWWaP3++br31VvXs2VOpqakKCwtTUlKSzj33XJ+fYvzZtm2bbr/9dnXt2lVRUVFyu91KS0tTjx49dPvtt2vFihXOtAMHDlRmZqbzf2Zmpk8/xYEDBx5W7eedd57z95o1aw5rXq8uXbqoR48ekuRTa2Pwvu5FixZp7969mjRpktq1a6eIiAhlZGRo4sSJ2rNnjzP95s2bddNNNykzM1Ph4eFq06aN7rjjDhUUFNT6XMYYzZw5U2eccYY8Ho9iY2PVr18//eMf/6h13qysLN1zzz065ZRT5PF4FB4erhNOOEHXXXedvv/++xrn3b59u2644Qalp6fL7XardevW+tWvfqUNGzbUvoIk/fDDD7ryyiuVkpLiPO8tt9yiXbt21ThfTScpePv1e9vbggULdP7556tly5YKDw9X586d9eCDD+rAgQM1Psc777yjc845R3FxcYqOjtYpp5yiGTNmqKysrNpzHOq1117TsGHDlJycrNDQUMXFxalDhw668MIL9ac//anW5/bynuRY9XVW/Vz5e/2LFi3S6NGj1apVK7ndbiUmJuqcc87RrFmzVFFR4fd5Dn09b7zxhoYOHaqkpCQFBQUdF0eIv/nmGz300EM666yzlJGRofDwcMXFxal379569NFHVVhYaJ236md59+7dmjRpkjp27KjIyMhq54dkZ2fr9ttv1wknnKDw8HClpqZq9OjR+uabb6oty+btt9/WyJEjlZaWprCwMMXHx+uss87SzJkza+xHWtd2521Xs2fPliTNnj27Wr/ymuqrT1lZWfq///s/de3aVdHR0YqKilLXrl111113WbcDNZ38W5W/13LrrbfK5XKpe/fuNc5bWFioqKgouVwu/f3vf3eGH80+taYTtA59TRs2bNA111zjs20dP368tm/fXmPdNh9++KE+/PBDSdJvf/tbjR49usbpXS6XbrrpJl1//fXVxlVUVOiFF17Q2WefrcTERLndbrVq1UqjR4+usd14z2eYMmWKKioq9Ic//EGnnXaaoqOjlZSUpJEjR+rf//63M/3+/fv1yCOPqFu3boqKilKLFi00ZswY/fTTT36Xf+h+4bPPPtPw4cOVlJSkqKgonXbaaXr++ed95nn//fc1ZMgQtWzZUpGRkTr99NM1d+5cv8uv6wl2bdu2lcvl0osvvljj/Lt27dKvf/1rZ5+fnJysyy67zHr02Pb8bdu21aBBg5z/D/0sV/3lvi4n+B04cEBPPfWUBgwYoMTERIWFhSklJUUjR47URx99ZJ2vuLhYjz/+uPr06aP4+HiFhoaqZcuWTj/4N954wzqvX+YoPPDAA0aSqetiFi5c6EwvybjdbhMdHe0zbPTo0aaioqLavKtXrzbx8fHOdMHBwSY+Pt64XC5n2NixY53pR40aZRITE51xiYmJJjk52XmMGjXKmXbjxo3OdLNmzfJb++7du51pJkyY4HeaAQMGGElmwIAB1nUwevRoI8mEhobWaZ15jR071kgyGRkZhzWfl7f22bNnm9atWxtJJioqyoSFhTnjOnfubPbt22e++uorZ93FxsaakJAQZ5ozzzzTlJeXW+sbO3asGTNmjJFkgoKCqr1Hv/rVr0xlZaXfGv/1r3/5tIfQ0FATFRXl/B8WFmZmz57td96VK1f6tI+IiAhnWbGxsWbu3LnOuI0bN1ab/8MPPzRut9uZJjo62oSHhxtJJjU11bzwwgvWtj5r1izre+P9jAwYMMDMmDHDuFwu43K5TFxcnM96GTRokN/1aowxd9xxh89nJC4uznlPzjrrLHPvvfda290111zjM290dLSJjIz0GeZvffjzxRdfmOTkZOvnqmfPnj7T33777c503tccHBzsDDv77LNNfn5+jets0qRJzvzx8fEmODjYPPDAA3Wq15j/fSYPZ57D4X0th7v8qus/KCjIxMXF+Qzr0qWL2bVrV43z/u1vfzPJyclGkgkPDzcxMTE+7XPdunUmLS3NZ3sbGxvrfJbeffddZ9zChQurPU9BQYG54IILfOqKjY31abd9+vQxOTk51eY9nHbnbVfez1t4eLjPtjo5Odl88cUXdV63R7qtXLRokc/7EBkZ6bP9iY+PN5999lm1+aru12rib12vWLHCGf6f//zHOu+LL77orMfCwkK/z324+9Sq+71DtwFVl/vpp586y4yJifHZH6SlpZlt27bV+Lr9+cUvfmEkGY/H4/N6Dldubq4ZOHCgTy44dNt65513+p3Xu2249957zeDBg53PRdX3PDo62qxYscJkZ2eb0047zWmfERERzjRJSUlm8+bN1ZZfdb/wt7/9zQQFBRmXy2U8Ho/P+3PPPfcYY4z57W9/62wPDp3mz3/+c7Xl1/T+VZWRkWGk6tmm6vzvvfeeSUpKctp91X1hbGysWb16dZ2fv2fPnj774kM/y7feeqvfdeTPjz/+aDp06OCzHzl03dx0003V5svPzzennHJKtf1P1bZ7uNuHRg3Ly5YtM1dccYV5//33TVZWlhOa9u7da/74xz86G/I//vGP1eY955xzjCTTvXt3s3TpUmfekpIS8+OPP5rHH3/czJgxw2eeujamuoTl2bNnO9P8/ve/9ztNXcLy6aef7jSgw1FfYTkuLs6ceuqpZtmyZcYYY0pLS82cOXOcHdnEiRNNRkaGOfvss52Nd3FxsXn66aedoPO3v/3NWp/H4zEul8s8/PDDJi8vzxhz8IvGxIkTnRr8vb/Lly93gvsNN9xg1q5d64THzZs3m5tvvtlIMiEhIWbFihU+8+bn55s2bdoYSaZNmzZm3rx5TvtYunSp6dq1q89O8NC2sHXrVqftnXzyyWb58uXGGGMqKirMhx9+aFq3bu0z/6HqEpbj4uJMUFCQmTx5stmzZ48xxpi8vDxnAynJPP/889XmnzNnjjP+iiuucHZMxcXF5q9//asJDw93NkyHtrvPPvvM2fg++uijZu/evc647Oxs8/HHH5uxY8ea7du3V3vemtTlc/X0008701x//fVm586dxhhjCgsLzR/+8AdnozVmzBjrOvPuoO+66y6ze/duY4wxBw4cMJs2bapzrd7PZPv27U1GRoYJCwszHo/H9OjRw9x7772H/doP5X2NhxuWBw8ebF544QWzefNmU1ZWZowxZv/+/ebNN980nTp1MpJ8vtD7e87o6GjTqVMns2DBAicMrVu3zhhz8HN90kknGengF5o333zT+TytXbvWnH322T47NH9heeTIkc66e+WVV5wvNsXFxeadd94xJ5xwgpFkRo4c6TPfkba7ql+4j8aRbCu3bNnifMa7dOliPv/8c2fckiVLnPckISGhWjg8mrBsjDFdunQxkszdd99tnde7/7v66qt9hh/NPrWuYTk+Pt5ceOGFZu3atcaYg/vcuXPnOl/Orrrqqhpf96HKysqcz/Yll1xyWPMe6uKLL3ZC7lNPPWWKioqMMcbs3LnT5wubv7Dp3TbExcWZFi1amNdff92UlpaayspK89VXXzntu2/fvmbUqFGmbdu25uOPPzYVFRWmoqLCfPLJJ6Zly5ZGkrnyyiurLd+7X4iMjDRhYWHm1ltvdbZje/fuddqp93MSHBxsHnnkEZObm2uMMWbHjh3mvPPOM9LBA1ve4V71GZbj4+PNmWee6exby8rKzPz5801qaqqRZPr3719tuXVtPzWpad+5b98+07ZtWyMdPLCyZMkSc+DAAWPMwS9JTzzxhNOOnnzySZ95H374Yefz+sYbbzjzVVRUmO3bt5uXXnrJjB8/vsbaDlVvYfnQbw9VHzV9Y67q9ddfN5JMu3btqo3zfpP78ssv61xffYTloqIi8+KLLzobUrfbbXbs2OF3ObWF5eXLl5ugoCAjyYwYMaLOr8MY4/PBqmldJycnm8cee6za/FXfp+zs7Grj77//fmearl27Oo2rqquuuspIMuecc461Pknm/vvv9/safvnLXzoNuLi42Gec90uEbV5jjLn11lv9rrtHH33U2WB+//331ebbuXOnTzA4tC3cdNNNRpJp0aKF36N53333nQkNDT2qsFxToLrooouMJDN48GCf4ZWVlc636iFDhvg9Iu99bn/tzrtehg4d6vd5j1Rtn6v9+/ebhIQEI8lcfvnlfpfx1FNPOcs49MtP1XU2adKko6rV+5mUDv5ScegvHbGxsebNN9884uUfaViuybZt24zb7TYul8vvEauqtW/dutXvMl5++WUjHTyismTJkmrji4uLzYknnmgNcO+9956RZFJSUqxHDrdu3eochVu1apUz/EjbXSDD8o033uiEBu8Xu6qqfqE+9JfFow3L06dPN5JM69at/R4B3rZtm7Pf+OSTT+r8moypeZ9a17AzaNAgv3V5P8MRERHOF7662LBhg7PsqVOnHtbrqWr58uXOcv7yl7/4ncYbphMTE6vtc6puG/z9YrBgwQJnfEREhFm/fn21aZ5//nlnfGlpqc+4qtvm6667rtq85eXlJjMz05nmkUceqTZNXl6e8xl7+eWXfcbVZ1g+8cQTzf79+6vNW/XXp0O3NQ0dlu+8804nKNva15tvvum8v1WnGTZsmJFkpk2bVuPzH45667O8a9cu66Ou10f0Xh3ip59+0s6dO33GeS/7dujw+vbrX/9aKSkpSklJUYsWLRQVFaVx48YpNzdXoaGhmj17tlJTUw9rmTt27NDLL7+sESNGqLKyUi6XS7fddtsR1VdZWVnjut61a1eN/R3Hjx+vFi1aVBt+7rnnOn9PmjRJbrfbOs23335rXX5ERITuvPNOv+N++9vfSpJycnI0f/58Z/i///1vrVixQqGhobrjjjusy7766qslSZ988olPf9dXX31VkjR69Gh17ty52nwpKSm68cYb/S7TGOP0Cbvxxhv9XkasW7duuuSSS6x11YXb7baulxEjRkiqvl5Xr16t9evXS5Luvfdev30ix44dqzZt2vhdrvczs2fPHmv/4IYwf/585eTkSLJfNujmm292Pkdz5szxO01QUJDuvvvuo6pl4MCBmjVrlrZv366SkhLl5ORo3759mjVrlpKSkpSfn68xY8Zo6dKlR/U89alVq1Y65ZRTZIzRl19+aZ3uqquusl4j+vXXX5cknXXWWerfv3+18eHh4fq///s/67Kfe+455zlsl3Vq3bq10zfx448/doYHqt0dKWOMXnvtNUkHtwEpKSnVpmndurWzDfFub+rLL3/5SwUFBWnbtm1auHBhtfH/+Mc/VFlZ6bO+66qmfWpd3XvvvQoKqh4VvNut4uJiZztVF3v37nX+rumqUrXxvg+tW7fWdddd53eahx9+WNLBvvtV9zlV9evXT/369as2fMCAAc5+8JJLLlH79u2rTePdJ9a2Du65555qw4KDg3XOOedIOvh59JcJYmNj1adPH0k173eP1h133OFcMreqYcOGOSdcfvfddw32/IcyxuiFF15wagsJ8X/htpEjRyo2NlbZ2dlauXKlM7wh8mK9hWVz8Ci138epp57qTFdQUKDHHntMAwYMUFJSksLCwpyO35GRkc50h544cMEFF0g6GA7uuOMOLV682Oes/PqSn5/vhE7vDl+S2rRpo2+//VZjxoypdRmLFy/26dDeqlUrXX311crKylJoaKieeuqpwz7B0CsjI6PGdW2MqfEEqDPOOMPv8KrXyT799NNrnGbfvn3W5ffs2VOxsbF+x3Xo0MHZuX/99dfO8M8//1zSwS8CnTp1cr6sHPrwnmRZVFTkbHBLS0udD/HZZ59trcs2buPGjc77fCTz15X3hCF/0tLSJMmnvUlyTsIKDQ1V3759/c7rcrk0YMAAv+MGDx6s8PBwrVq1Sv3799fzzz+vjRs3HulLqDPve5uenq6OHTv6nSY4ONhZp1XbQlXt27c/6msgT5kyRePGjVNaWprzZcPj8WjcuHH68ssvFRcXp7KysqMO5YersrJSr7zyii688EK1adNGERERPtuMr776StLBk5ptzjzzTOs4b9uxtQ1JNW6DvJ/Jv/71r9bPY0pKij755BNJB08I9gpUuztSVbcBgwcPtk43ZMgQSQfDXn2+ntatWzvvxcsvv1xtvHfYlVde6Te0Huk+ta5sl2rzbrek6tuumpgqJxwezQ3LvNuNQYMG+V0vktS5c2fny55tO2PbJwYHBysxMVFS7ftEyb5fTEhIULt27Wqcv0uXLtYbOtVlv3u0bO9xSEiIc9+Gw3mPj9b333/vPN+4ceOs25/U1FTn4GDVbZA3Lz7zzDO6/PLL9fbbbys7O/uoaqq36yzXxY8//qhzzjnHZwcQGRmpuLg4p7F7zzguKirymXfGjBnasGGDFi5cqCeeeEJPPPGEgoODdeqpp+r888/X9ddfXy8Xtp41a5ZztmZ+fr6++eYb/eY3v9EXX3yhX/3qV5o/f36tl8uqelMSl8uliIgIpaWlqW/fvrruuuusAaIxxMTE+B1e9ZtbbdOUl5dbl1/be9CqVStt27ZNu3fvdobt2LFD0sGzmmu78oSX94tSTk6OU09Nz207Ale1jiOZv65s61Syr1fv1UlatGjhczmlQ9nqPuGEE/Tcc8/pxhtv1NKlS52jpy1bttSgQYN0xRVX6MILL6z3O2x612ltbcG7Tqu+B1U19M1C2rVrpwkTJmjq1Kn6/PPPlZ2d7ewcG9L+/ft1wQUX+BxFDAsLU0JCgnPN6pycHJWVlVXbDlZV0/rxtp2qgeZQtvenrKzM2bHk5eUpLy/P/mL+q+qBi0C1uyN1JNuA3bt3+1xt6WhdffXV+vTTT/XGG2/o2WefdULu6tWr9Z///MeZ5lBHs0+tq7rsMw7n7npVP2NVjzIfrsPZzmzfvt26nanLtvlo1sHRLL/qNA15B8NAP/+hvJlAks9VumpSdRt0xRVX6KuvvtLTTz+tV1991fkVon379ho6dKiuueYa58pkddWol4771a9+pW3btqlt27Z6/fXXtXfvXhUVFWn37t3Kysry+eZb9dundPCw+qeffqrPPvtMd911l84880yFhIRo5cqVeuihh9ShQwfrz7lHKjY2VgMHDtS8efPUtWtXLVu2TBMnTqx1vr59+yorK0tZWVnauXOnfv75Z33++eeaMWNGQINyYziSHaD3p9oTTzyx1qPm3oe/S80c7c73WNl5e3k/A7XVdehnpaorr7xSmzdv1syZMzVmzBilp6drz549eu211zRy5EgNGDBA+fn59Vq3V13Xp2264ODg+izHL+9PnMaYRrvZz9SpU7Vw4UJFREToD3/4gzZv3qwDBw5o7969znbDe6Snpve2LuvnaD6P0sGfuuvyeTz0slSBbHdH42jb7JG6+OKLFRkZqcLCQr311lvOcO9R5R49eqhLly7V5juafWqgZGRkOAecVq1addTLC9R7hoZTdRuUlZVVp21Q1UvSSdKTTz6pdevWadq0aRo2bJji4uK0YcMGPfvss+rZs+dhd4VttLC8detWp//dnDlzdMkll1Trr1SXuwD269dPjz76qD7//HPl5ubqnXfe0UknnaTi4mJdc801dT4yeTgiIyP19NNPSzp4DdCa+hE2dzX9bCz976fAqkfFvH0Ef/7558M++pGQkOCEhpqe2/YTZNU6jmT+huStLTs7W6Wlpdbpqn4L9ychIUE33HCDXn31VW3ZskUbNmzQPffcI5fLpc8++6zer1vsrXvr1q01Tudd383t9uzeoxy//e1vddttt6lNmzbVduRHe0dU7zqtqW3Y2nR4eLg8Ho+ko+un2Njt7khV3QbU1Garbh+qttmqRxdt1yyv7eh8dHS0cyczb0CuqKhwDgBdddVV1eapr31qYwsJCdFZZ50l6eD5DUd6xLu5b2fq0u6k2tvesajqeQNHsw1q3769Jk+erA8++EB79+7V0qVLNXLkSEkH79b87rvv1nlZjRqWvU477TS/03j7v9VVeHi4LrzwQr355puSDjYYb187ST79mI72W/WgQYOc/n+N3b+xKfn666+tNy7ZsGGDs+Hq2bOnM9zb97K0tNTnqEpdhIWF6eSTT5YkvyfHeH366ad+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tGnTarxNd22fZa+1a9ealJQUn+2f93ncbrf517/+5YxbunRptfmLiorMZZdd5vMaoqKiTHx8vM86lORz45IjbXc5OTnOHdH03xsNZGRkmIyMDL/12Rz6/DU9qt7gaNGiRT7vQ1RUlM+tj+Pi4vze4MWYgzctqXpr8dDQUOcmJjExMWbRokV1et++++47n/o8Hk+1m2lUdaT7VGPq56YSdW2LNnl5eebSSy/12Ud4txXe2597H507dzZff/21z/y5ubk+NxcJCQmpts+p7XbXNd1QyHZDj6ps66C2WzkbU7dtXU036ykoKHDuACkdzAfez1poaKiZM2dOnW5KcrQ3NfE3/7XXXuvTLtu0aWMyMjLMHXfc4UxT2zr6+eeffW5b7f0cej9b3kf79u391uxtT3FxcT6fZUnm9ttvt75mfxr1ahgXXHCBlixZovPPP19xcXEqLy9XYmKifvWrX+mbb75xLtB9qFatWundd9/V7bffrt69ezvX1gsJCVGXLl00YcIE/ec///F744h7771Xf/zjH9WzZ0+FhoZq27Zt2rx58xGf+DBixAjnCIj3J57GVJebkuzatSugNwOYM2eO/vznP+u0005TeXm5oqKi1KdPH7300kuaPXu29ZqYQ4YM0YYNGzR9+nT169dPHo9Hubm5CgoKUpcuXXTttdfq3XffdU62rKpnz5769ttvdd1116lVq1YqLy+Xx+PR2LFj9c0331ivpel1/vnn65tvvtFll12mpKQklZaWKjk5WRMnTtSqVavq9TJRh+sPf/iD3nzzTQ0cOFAxMTEqKSlR586d9dhjj+njjz92vjl7L8Tudf/99+upp57SqFGjdOKJJyokJESFhYVKSkrSkCFD9MILL2jRokXW63serSeeeEKffvqpLr74YiUnJ6uwsFAxMTEaNGiQXnjhBc2fP7/GSxYdrdGjR+u3v/2thgwZoszMTLlcLuXn5ys+Pl79+vXTQw89pHXr1umiiy5qsBr8ycjI0Ndff61rr73WubRbeHi4LrjgAn388ceaPHlyvTzPiSeeqG+//Va33nqr2rZtK2OMwsPDdemll2rZsmU+12k+tO1IB09snjNnjhYuXKirrrpKJ5xwgiorK502dPbZZ2vGjBlav369z+W7jrTdxcfHa8mSJbrsssvUqlUr5eXlafPmzc7VQhragAED9MMPP+iOO+5Q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tDIyMrRx40bdf//9Ovvss7Vy5cpmd+c6Y4wmTZqkfv36qVu3bpKabzs67o8s+zsJ5NDH119/7TPPjh07dN5552n06NG67rrrfMa5XK5qz2GM8Tu8qTiSdVST3/zmN+rTp49OPfVU3XHHHXrooYf02GOPNeAraHj1vY6Ox3bkz+Gst9tvv10DBgzQySefrOuuu04zZ87U888/r7179wb4VQTOoe3heGwjR2rYsGG6+OKLddJJJ2nw4MF6//33JUmzZ88OcGXHNtpUzcaMGaPzzz9f3bp10/Dhw/Xhhx/qxx9/dNpXczJx4kR9++23mjNnTrVxza0dHfdHlidOnKjLLrusxmnatm3r/L1jxw4NGjRIffr00V//+lef6VJSUrR8+XKfYfv27VNZWVm1b1lNyeGuo8PVu3dv5efna9euXU12PdXnOjpe25E/R7PevGegb9iwodkdKUxMTFRwcHC1o8i7d+8+7tpIfYmKitJJJ52k9evXB7qUY5L3SiFZWVlKTU11htOmapaamqqMjIxm165uueUWvfvuu1qyZIlat27tDG+u7ei4D8uJiYlKTEys07Tbt2/XoEGD1KNHD82aNUtBQb4H3vv06aOpU6dq586dTiOZN2+e3G63evToUe+1N5bDWUdHYtWqVQoPD7deRq0pqM91dLy2I3+OZr2tWrVKknw2yM1FWFiYevToofnz52vUqFHO8Pnz52vEiBEBrOzYVVJSorVr16p///6BLuWYlJmZqZSUFM2fP1+nnXaapIN94xcvXqxHH300wNUdu/bu3autW7c2m+2QMUa33HKL3nrrLS1atEiZmZk+45trOzruw3Jd7dixQwMHDlSbNm30+OOPa8+ePc447zepoUOHqkuXLrrqqqv02GOPKScnR3feeafGjx+v2NjYQJXeqLZs2aKcnBxt2bJFFRUVWr16tSSpffv2io6O1r/+9S9lZWWpT58+ioiI0MKFC3Xffffp+uuvbzb9vWpbR7Sj6pYuXaply5Zp0KBB8ng8WrFihW6//XZdeOGFatOmTaDLC4hJkybpqquuUs+ePZ1furZs2aIbb7wx0KUdE+68804NHz5cbdq00e7du/XII48oPz+/WV2m8lCFhYXasGGD8//GjRu1evVqJSQkqE2bNrrttts0bdo0dejQQR06dNC0adMUGRmpK664IoBVN66a1lFCQoKmTJmiiy++WKmpqdq0aZPuvfdeJSYm+nxpPZ5NmDBBr7zyit555x3FxMQ4v255PB5FRETI5XI1z3YUwCtxHFNmzZplJPl9VLV582Zz/vnnm4iICJOQkGAmTpxoDhw4EKCqG9/YsWP9rqOFCxcaY4z58MMPzamnnmqio6NNZGSk6datm3nyySdNWVlZYAtvRLWtI2NoR4dauXKl6dWrl/F4PCY8PNx06tTJPPDAA6aoqCjQpQXUn/70J5ORkWHCwsJM9+7dncs3wZgxY8aY1NRUExoaatLS0sxFF11k1qxZE+iyAmrhwoV+tz1jx441xhy87NcDDzxgUlJSjNvtNmeddZb57rvvAlt0I6tpHe3fv98MHTrUtGzZ0oSGhpo2bdqYsWPHmi1btgS67EZjy0GzZs1ypmmO7chljDENH8kBAACApue4vxoGAAAAcKQIywAAAIAFYRkAAACwICwDAAAAFoRlAAAAwIKwDAAAAFgQlgEAAAALwjIAAABgQVgGAAAALAjLAAAAgAVhGQAAALAgLAMAAAAW/w/c7/y5CShKeQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -678,18 +763,11 @@ "\n", "plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "PyTorch", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -703,7 +781,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.9.6" }, "vscode": { "interpreter": { diff --git a/algos/pathfinding.ipynb b/algos/pathfinding.ipynb index 8f9593d..19b50fa 100644 --- a/algos/pathfinding.ipynb +++ b/algos/pathfinding.ipynb @@ -26,18 +26,11 @@ "metadata": {}, "outputs": [ { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8029222c00254f4586c3fadd11c22bdf", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Downloading: 0%| | 0/286678171 [00:00\n", " \n", " \n", - " 0\n", + " 1\n", " Kat\n", " Person\n", " 0.5\n", @@ -485,7 +634,7 @@ " 0.4\n", " \n", " \n", - " 1\n", + " 0\n", " Jing\n", " Person\n", " 0.2\n", @@ -496,9 +645,9 @@ ], "text/plain": [ " v_id v_type attributes.Others.@sum_similarity\n", - "0 Kat Person 0.5\n", + "1 Kat Person 0.5\n", "2 Kevin Person 0.4\n", - "1 Jing Person 0.2" + "0 Jing Person 0.2" ] }, "metadata": {}, @@ -542,7 +691,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 25, "id": "aea0ca3d-61b0-4b78-9fcb-8663ea3c4a47", "metadata": {}, "outputs": [], @@ -559,9 +708,67 @@ " \"print_results\": True,\n", " \"print_limit\": 50,\n", " \"file_path\": \"\"\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "b6b9e02e-2c48-4cdd-b54b-6682ada3f478", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 135.75 MiB, increment: 0.49 MiB\n", + "The CPU usage is: 30.7\n", + "RAM Used (GB): 11.342086144\n", + "tg_jaccard_nbor_ap_batch executed successfully\n", + "execution time: 41.26648306846619 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", "\n", - "results = feat.runAlgorithm(\"tg_jaccard_nbor_ap_batch\", params=params)" + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_jaccard_nbor_ap_batch\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_jaccard_nbor_ap_batch executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_jaccard_nbor_ap_batch_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_similarity.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" ] }, { @@ -576,7 +783,17 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 27, + "id": "0b35f991-b4c4-4ace-83cc-b165ad5e92c7", + "metadata": {}, + "outputs": [], + "source": [ + "results = feat.runAlgorithm(\"tg_jaccard_nbor_ap_batch\", params=params)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, "id": "941aa887-d4e1-41f3-be52-3cde41feff74", "metadata": {}, "outputs": [ @@ -584,10 +801,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Kevin Person\n", - "{'ver': 'Neil', 'val': 0.4}\n", - "{'ver': 'Kat', 'val': 0.25}\n", - "{'ver': 'Alex', 'val': 0.2}\n", + "Elena Person\n", "Neil Person\n", "{'ver': 'Kat', 'val': 0.5}\n", "{'ver': 'Kevin', 'val': 0.4}\n", @@ -601,7 +815,10 @@ "Alex Person\n", "{'ver': 'Jing', 'val': 0.25}\n", "{'ver': 'Kevin', 'val': 0.2}\n", - "Elena Person\n" + "Kevin Person\n", + "{'ver': 'Neil', 'val': 0.4}\n", + "{'ver': 'Kat', 'val': 0.25}\n", + "{'ver': 'Alex', 'val': 0.2}\n" ] } ], diff --git a/algos/topologicalLinkPrediction.ipynb b/algos/topologicalLinkPrediction.ipynb index 814b026..0956fbc 100644 --- a/algos/topologicalLinkPrediction.ipynb +++ b/algos/topologicalLinkPrediction.ipynb @@ -62,7 +62,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9be1d8f44ace40f49f118e30fbbfec66", + "model_id": "78e9409cd2b44ec59347335b84573a0f", "version_major": 2, "version_minor": 0 }, @@ -99,7 +99,7 @@ "output_type": "stream", "text": [ "---- Checking database ----\n", - "A graph with name social already exists in the database. Please drop it first before ingesting.\n" + "A graph with name social already exists in the database. Skip ingestion.\n" ] } ], @@ -124,7 +124,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "24c5f60c812141e7a7fe01fd5b3a9216", + "model_id": "857faf51df034f018b3cb519c7e581d0", "version_major": 2, "version_minor": 0 }, @@ -284,8 +284,95 @@ " \"v_target\": {\"id\": \"Bob\", \"type\": \"Person\"},\n", " \"e_type_set\": [\"Coworker\"],\n", " \"print_results\": True\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "93e67a08-cab2-4d76-befb-f5eb09ce0739", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.9/site-packages/memory_profiler.py:1136: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " ipython_version = LooseVersion(IPython.__version__)\n", + "/opt/conda/lib/python3.9/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " other = LooseVersion(other)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 124.61 MiB, increment: 2.23 MiB\n", + "The CPU usage is: 30.1\n", + "RAM Used (GB): 11.353780224\n", + "tg_adamic_adar executed successfully\n", + "execution time: 35.717833042144775 seconds\n", + "\n" + ] + } + ], + "source": [ + "import csv\n", + "import os\n", + "import time\n", + "import psutil\n", + "!pip install memory_profiler\n", + "%load_ext memory_profiler\n", + "\n", + "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "\n", + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_adamic_adar\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_adamic_adar executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_adamic_adar_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "558ac4d9-60cc-4637-b3fa-b688a6abadfc", + "metadata": {}, + "outputs": [], + "source": [ "results = feat.runAlgorithm(\"tg_adamic_adar\", params=params)" ] }, @@ -301,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 14, "id": "7f56edcc-2579-43f5-b396-fe5141a5c583", "metadata": {}, "outputs": [ @@ -378,7 +465,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 15, "id": "6e6bc7b9-41b2-4992-b073-204c4be9413a", "metadata": {}, "outputs": [], @@ -388,8 +475,76 @@ " \"v_target\": {\"id\": \"Bob\", \"type\": \"Person\"},\n", " \"e_type_set\": [\"Coworker\"],\n", " \"print_results\": True\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "85d28902-5f6c-42a7-90a8-6a306e70c299", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 126.42 MiB, increment: 0.11 MiB\n", + "The CPU usage is: 33.9\n", + "RAM Used (GB): 11.365081088\n", + "tg_common_neighbors executed successfully\n", + "execution time: 32.86519742012024 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_common_neighbors\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_common_neighbors executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_common_neighbors_\" + config[\"job_id\"]\n", "\n", + "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "baeb9b87-519f-4e10-b63e-a6e04b19580d", + "metadata": {}, + "outputs": [], + "source": [ "results = feat.runAlgorithm(\"tg_common_neighbors\", params=params)" ] }, @@ -405,7 +560,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 18, "id": "8980aeaf-f344-4e0f-bc33-c8ab694091ca", "metadata": {}, "outputs": [ @@ -482,7 +637,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 19, "id": "10fd47b7-c349-428f-b05c-8388603ffc10", "metadata": {}, "outputs": [], @@ -492,8 +647,76 @@ " \"v_target\": {\"id\": \"Bob\", \"type\": \"Person\"},\n", " \"e_type_set\": [\"Coworker\"],\n", " \"print_results\": True\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "2c25fef7-22b7-450e-985a-75b35d229b8e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 126.51 MiB, increment: 0.38 MiB\n", + "The CPU usage is: 23.9\n", + "RAM Used (GB): 11.388018688\n", + "tg_preferential_attachment executed successfully\n", + "execution time: 33.8450243473053 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_preferential_attachment\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_preferential_attachment executed successfully')\n", + "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", "\n", + "algo_id = \"tg_preferential_attachment_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "66ed0d55-82cf-48b6-a9cc-01e6cee29739", + "metadata": {}, + "outputs": [], + "source": [ "results = feat.runAlgorithm(\"tg_preferential_attachment\", params=params)" ] }, @@ -509,7 +732,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 24, "id": "4ee45c39-23d6-4000-80c4-d1c3886b733b", "metadata": {}, "outputs": [ @@ -586,7 +809,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 25, "id": "76a2d7ab-bdb1-4850-94c0-ec0342806e5c", "metadata": {}, "outputs": [], @@ -596,8 +819,76 @@ " \"v_target\": {\"id\": \"Bob\", \"type\": \"Person\"},\n", " \"e_type_set\": [\"Coworker\"],\n", " \"print_results\": True\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "b720d65f-bb65-490f-b560-3b8578964266", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 126.84 MiB, increment: 0.12 MiB\n", + "The CPU usage is: 23.8\n", + "RAM Used (GB): 11.362390016\n", + "tg_resource_allocation executed successfully\n", + "execution time: 36.40755581855774 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_resource_allocation\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_resource_allocation executed successfully')\n", "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_resource_allocation_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "151b7f0b-f584-43bd-932e-35815de0bca4", + "metadata": {}, + "outputs": [], + "source": [ "results = feat.runAlgorithm(\"tg_resource_allocation\", params=params)" ] }, @@ -613,7 +904,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 28, "id": "18ff8bc7-3e90-44bc-8427-06455b7bc6b5", "metadata": {}, "outputs": [ @@ -692,7 +983,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 29, "id": "32ed10a2-3fcf-48bb-9f1d-6f28befbba96", "metadata": {}, "outputs": [], @@ -702,8 +993,76 @@ " \"v_target\": {\"id\": \"Bob\", \"type\": \"Person\"},\n", " \"e_type_set\": [\"Coworker\"],\n", " \"print_results\": True\n", - "}\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "0b5328ca-a111-41e4-a645-ad35da2980a7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installing and optimizing the queries, it might take a minute...\n", + "Queries installed successfully\n", + "peak memory: 126.92 MiB, increment: 0.14 MiB\n", + "The CPU usage is: 22.5\n", + "RAM Used (GB): 11.359371264\n", + "tg_total_neighbors executed successfully\n", + "execution time: 33.12188982963562 seconds\n", + "\n" + ] + } + ], + "source": [ + "start_time = time.time()\n", + "\n", + "algo_memory = %memit -r 1 -o feat.runAlgorithm(\"tg_total_neighbors\", params=params)\n", + "\n", + "algo_memory = str(algo_memory)\n", + "\n", + "start = algo_memory.find(\": \") + 1\n", + "end = algo_memory.find(\"M\")\n", + "\n", + "algo_memory = algo_memory[start:end].strip()\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "cpu_usage = psutil.cpu_percent(4)\n", + "\n", + "print('The CPU usage is: ', cpu_usage)\n", + "\n", + "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + "\n", + "host_memory = psutil.virtual_memory()[3]/1000000000\n", + "\n", + "print('RAM Used (GB):', host_memory)\n", + "\n", + "print ('tg_total_neighbors executed successfully')\n", "\n", + "print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", + "\n", + "algo_id = \"tg_total_neighbors_\" + config[\"job_id\"]\n", + "\n", + "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", + "\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "\n", + "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + " writer.writerow(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "d49fe8d1-af9f-4ccc-a142-b692bd882e0f", + "metadata": {}, + "outputs": [], + "source": [ "results = feat.runAlgorithm(\"tg_total_neighbors\", params=params)" ] }, @@ -719,7 +1078,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 32, "id": "dc6e6c05-cc84-4bb3-b2ee-1cc65382d379", "metadata": {}, "outputs": [ diff --git a/regression/regression.ipynb b/regression/regression.ipynb index 4dc31a4..ca81e83 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -10,26 +10,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "/home/tigergraph/GML/GNNs/PyG/gcn_link_prediction.ipynb\n", - "/home/tigergraph/GML/GNNs/PyG/gcn_node_classification.ipynb\n", - "/home/tigergraph/GML/GNNs/PyG/hgat_node_classification.ipynb\n", - "/home/tigergraph/GML/GNNs/Spektral/gcn_node_classification.ipynb\n", - "/home/tigergraph/GML/GNNs/DGL/gcn_node_classification.ipynb\n", - "/home/tigergraph/GML/GNNs/DGL/rgcn_node_classification.ipynb\n", - "/home/tigergraph/GML/algos/topologicalLinkPrediction.ipynb\n", - "/home/tigergraph/GML/algos/embedding.ipynb\n", - "/home/tigergraph/GML/algos/classification.ipynb\n", - "/home/tigergraph/GML/algos/similarity.ipynb\n", - "/home/tigergraph/GML/algos/centrality.ipynb\n", - "/home/tigergraph/GML/algos/community.ipynb\n", - "/home/tigergraph/GML/algos/pathfinding.ipynb\n", - "/home/tigergraph/GML/applications/recommendation/recommendation.ipynb\n", - "/home/tigergraph/GML/applications/fraud_detection/fraud_detection.ipynb\n", - "/home/tigergraph/GML/basics/gsql_102.ipynb\n", - "/home/tigergraph/GML/basics/datasets.ipynb\n", - "/home/tigergraph/GML/basics/pyTigergraph_101.ipynb\n", - "/home/tigergraph/GML/basics/feature_engineering.ipynb\n", - "/home/tigergraph/GML/basics/gsql_101.ipynb\n" + "/home/tigergraph/GML/graph-ml-notebooks/algos/topologicalLinkPrediction.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/embedding.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/classification.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/similarity.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/centrality.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/community.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/pathfinding.ipynb\n" ] } ], @@ -37,7 +24,7 @@ "import os\n", "\n", "# folder path\n", - "dir_path = \"/home/tigergraph/GraphML\"\n", + "dir_path = \"/home/tigergraph/GraphML/graph-ml-notebooks/algos/\"\n", "\n", "# list to store files\n", "notebook_list = []\n", @@ -45,7 +32,7 @@ "# Iterate directory\n", "for root, dirs, files in os.walk(dir_path):\n", " for file in files:\n", - " if file.endswith(\".ipynb\") and \"checkpoint\" not in file and \"benchmark\" not in file and \"Untitled\" not in file and \"test\" not in file and \"regression\" not in file:\n", + " if file.endswith(\".ipynb\") and \"checkpoint\" not in file and \"regression\" not in file:\n", " notebook_list.append(os.path.join(root, file))\n", " \n", "for notebook in notebook_list:\n", @@ -79,181 +66,32 @@ "id": "027412ab-fced-4f6a-be78-ef7def5e4a00", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.9/site-packages/memory_profiler.py:1136: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", - " ipython_version = LooseVersion(IPython.__version__)\n", - "/opt/conda/lib/python3.9/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", - " other = LooseVersion(other)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/GNNs/PyG/gcn_link_prediction.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook gcn_link_prediction.ipynb to html\n", - "[NbConvertApp] Writing 662525 bytes to /home/tigergraph/GML/output/GNNs/PyG/gcn_link_prediction.ipynb/gcn_link_prediction.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 74.75 MiB, increment: 0.45 MiB\n", - "The CPU usage is: 22.3\n", - "RAM memory % used: 34.0\n", - "RAM Used (GB): 4.99724288\n", - "/home/tigergraph/GML/GNNs/PyG/gcn_link_prediction.ipynb executed successfully\n", - "execution time: 318.173624753952 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/GNNs/PyG/gcn_node_classification.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", - "[NbConvertApp] Writing 683215 bytes to /home/tigergraph/GML/output/GNNs/PyG/gcn_node_classification.ipynb/gcn_node_classification.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 74.80 MiB, increment: 0.04 MiB\n", - "The CPU usage is: 24.5\n", - "RAM memory % used: 33.8\n", - "RAM Used (GB): 4.966948864\n", - "/home/tigergraph/GML/GNNs/PyG/gcn_node_classification.ipynb executed successfully\n", - "execution time: 206.7193534374237 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/GNNs/PyG/hgat_node_classification.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook hgat_node_classification.ipynb to html\n", - "[NbConvertApp] Writing 709765 bytes to /home/tigergraph/GML/output/GNNs/PyG/hgat_node_classification.ipynb/hgat_node_classification.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.00 MiB, increment: 0.19 MiB\n", - "The CPU usage is: 24.0\n", - "RAM memory % used: 37.0\n", - "RAM Used (GB): 5.505605632\n", - "/home/tigergraph/GML/GNNs/PyG/hgat_node_classification.ipynb executed successfully\n", - "execution time: 357.10809111595154 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/GNNs/Spektral/gcn_node_classification.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", - "2022-12-01 01:39:48.725747: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2022-12-01 01:39:49.330028: I tensorflow/core/util/util.cc:169] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", - "2022-12-01 01:39:49.507275: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", - "2022-12-01 01:39:49.507296: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n", - "2022-12-01 01:39:49.609810: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n", - "2022-12-01 01:39:51.504342: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n", - "2022-12-01 01:39:51.504519: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n", - "2022-12-01 01:39:51.504533: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n", - "2022-12-01 01:39:55.775870: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory\n", - "2022-12-01 01:39:55.776666: W tensorflow/stream_executor/cuda/cuda_driver.cc:263] failed call to cuInit: UNKNOWN ERROR (303)\n", - "2022-12-01 01:39:55.776712: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (df8d3fc244d1): /proc/driver/nvidia/version does not exist\n", - "2022-12-01 01:39:55.783791: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "[NbConvertApp] Writing 695734 bytes to /home/tigergraph/GML/output/GNNs/Spektral/gcn_node_classification.ipynb/gcn_node_classification.html\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.02 MiB, increment: 0.01 MiB\n", - "The CPU usage is: 22.6\n", - "RAM memory % used: 34.0\n", - "RAM Used (GB): 5.001146368\n", - "/home/tigergraph/GML/GNNs/Spektral/gcn_node_classification.ipynb executed successfully\n", - "execution time: 245.4487910270691 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/GNNs/DGL/gcn_node_classification.ipynb\n" + "Requirement already satisfied: memory_profiler in /opt/conda/lib/python3.9/site-packages (0.61.0)\n", + "Requirement already satisfied: psutil in /opt/conda/lib/python3.9/site-packages (from memory_profiler) (5.9.1)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", - "[NbConvertApp] Writing 704860 bytes to /home/tigergraph/GML/output/GNNs/DGL/gcn_node_classification.ipynb/gcn_node_classification.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.05 MiB, increment: 0.02 MiB\n", - "The CPU usage is: 21.9\n", - "RAM memory % used: 34.2\n", - "RAM Used (GB): 5.031469056\n", - "/home/tigergraph/GML/GNNs/DGL/gcn_node_classification.ipynb executed successfully\n", - "execution time: 204.36822628974915 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/GNNs/DGL/rgcn_node_classification.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook rgcn_node_classification.ipynb to html\n", - "[NbConvertApp] Writing 725103 bytes to /home/tigergraph/GML/output/GNNs/DGL/rgcn_node_classification.ipynb/rgcn_node_classification.html\n" + "/opt/conda/lib/python3.9/site-packages/memory_profiler.py:1136: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " ipython_version = LooseVersion(IPython.__version__)\n", + "/opt/conda/lib/python3.9/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " other = LooseVersion(other)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.06 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 21.7\n", - "RAM memory % used: 37.3\n", - "RAM Used (GB): 5.556895744\n", - "/home/tigergraph/GML/GNNs/DGL/rgcn_node_classification.ipynb executed successfully\n", - "execution time: 354.14860129356384 seconds\n", - "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", - "Executing notebook: /home/tigergraph/GML/algos/topologicalLinkPrediction.ipynb\n" + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/algos/topologicalLinkPrediction.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/algos && jupyter nbconvert --to html --execute topologicalLinkPrediction.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/algos/topologicalLinkPrediction.ipynb\n" ] }, { @@ -261,23 +99,23 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook topologicalLinkPrediction.ipynb to html\n", - "[NbConvertApp] Writing 641582 bytes to /home/tigergraph/GML/output/algos/topologicalLinkPrediction.ipynb/topologicalLinkPrediction.html\n" + "[NbConvertApp] Writing 674800 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/topologicalLinkPrediction.ipynb/topologicalLinkPrediction.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.06 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 22.0\n", - "RAM memory % used: 33.5\n", - "RAM Used (GB): 4.930695168\n", - "/home/tigergraph/GML/algos/topologicalLinkPrediction.ipynb executed successfully\n", - "execution time: 241.41627502441406 seconds\n", + "peak memory: 75.13 MiB, increment: 0.27 MiB\n", + "The CPU usage is: 26.5\n", + "RAM Used (GB): 6.797631488\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/topologicalLinkPrediction.ipynb executed successfully\n", + "execution time: 282.30571269989014 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", - "Executing notebook: /home/tigergraph/GML/algos/embedding.ipynb\n" + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/algos/embedding.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/algos && jupyter nbconvert --to html --execute embedding.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/algos/embedding.ipynb\n" ] }, { @@ -285,23 +123,23 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook embedding.ipynb to html\n", - "[NbConvertApp] Writing 682799 bytes to /home/tigergraph/GML/output/algos/embedding.ipynb/embedding.html\n" + "[NbConvertApp] Writing 687473 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/embedding.ipynb/embedding.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.06 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 22.5\n", - "RAM memory % used: 34.7\n", - "RAM Used (GB): 5.118521344\n", - "/home/tigergraph/GML/algos/embedding.ipynb executed successfully\n", - "execution time: 218.51526021957397 seconds\n", + "peak memory: 75.25 MiB, increment: 0.03 MiB\n", + "The CPU usage is: 26.4\n", + "RAM Used (GB): 6.9184512\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/embedding.ipynb executed successfully\n", + "execution time: 243.8325412273407 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", - "Executing notebook: /home/tigergraph/GML/algos/classification.ipynb\n" + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/algos/classification.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/algos && jupyter nbconvert --to html --execute classification.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/algos/classification.ipynb\n" ] }, { @@ -309,23 +147,23 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook classification.ipynb to html\n", - "[NbConvertApp] Writing 678395 bytes to /home/tigergraph/GML/output/algos/classification.ipynb/classification.html\n" + "[NbConvertApp] Writing 708898 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/classification.ipynb/classification.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.07 MiB, increment: 0.01 MiB\n", - "The CPU usage is: 22.5\n", - "RAM memory % used: 34.9\n", - "RAM Used (GB): 5.160931328\n", - "/home/tigergraph/GML/algos/classification.ipynb executed successfully\n", - "execution time: 363.59282636642456 seconds\n", + "peak memory: 75.35 MiB, increment: 0.10 MiB\n", + "The CPU usage is: 24.0\n", + "RAM Used (GB): 6.934577152\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/classification.ipynb executed successfully\n", + "execution time: 414.18331146240234 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", - "Executing notebook: /home/tigergraph/GML/algos/similarity.ipynb\n" + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/algos/similarity.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/algos && jupyter nbconvert --to html --execute similarity.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/algos/similarity.ipynb\n" ] }, { @@ -333,23 +171,23 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook similarity.ipynb to html\n", - "[NbConvertApp] Writing 635908 bytes to /home/tigergraph/GML/output/algos/similarity.ipynb/similarity.html\n" + "[NbConvertApp] Writing 657096 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/similarity.ipynb/similarity.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.07 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 23.3\n", - "RAM memory % used: 34.9\n", - "RAM Used (GB): 5.166055424\n", - "/home/tigergraph/GML/algos/similarity.ipynb executed successfully\n", - "execution time: 193.1436746120453 seconds\n", + "peak memory: 75.35 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 23.9\n", + "RAM Used (GB): 6.8861952\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/similarity.ipynb executed successfully\n", + "execution time: 217.29136562347412 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", - "Executing notebook: /home/tigergraph/GML/algos/centrality.ipynb\n" + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/algos/centrality.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/algos && jupyter nbconvert --to html --execute centrality.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/algos/centrality.ipynb\n" ] }, { @@ -357,23 +195,23 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook centrality.ipynb to html\n", - "[NbConvertApp] Writing 743372 bytes to /home/tigergraph/GML/output/algos/centrality.ipynb/centrality.html\n" + "[NbConvertApp] Writing 764722 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/centrality.ipynb/centrality.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.08 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 28.3\n", - "RAM memory % used: 51.5\n", - "RAM Used (GB): 7.943671808\n", - "/home/tigergraph/GML/algos/centrality.ipynb executed successfully\n", - "execution time: 470.4471106529236 seconds\n", + "peak memory: 75.39 MiB, increment: 0.02 MiB\n", + "The CPU usage is: 26.1\n", + "RAM Used (GB): 9.723551744\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/centrality.ipynb executed successfully\n", + "execution time: 529.8975987434387 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", - "Executing notebook: /home/tigergraph/GML/algos/community.ipynb\n" + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/algos/community.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/algos && jupyter nbconvert --to html --execute community.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/algos/community.ipynb\n" ] }, { @@ -381,23 +219,23 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook community.ipynb to html\n", - "[NbConvertApp] Writing 683972 bytes to /home/tigergraph/GML/output/algos/community.ipynb/community.html\n" + "[NbConvertApp] Writing 706541 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/community.ipynb/community.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.08 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 30.2\n", - "RAM memory % used: 52.1\n", - "RAM Used (GB): 8.04780032\n", - "/home/tigergraph/GML/algos/community.ipynb executed successfully\n", - "execution time: 542.4974973201752 seconds\n", + "peak memory: 75.42 MiB, increment: 0.03 MiB\n", + "The CPU usage is: 25.4\n", + "RAM Used (GB): 9.666461696\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/community.ipynb executed successfully\n", + "execution time: 608.2130348682404 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", - "Executing notebook: /home/tigergraph/GML/algos/pathfinding.ipynb\n" + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/algos/pathfinding.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/algos && jupyter nbconvert --to html --execute pathfinding.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/algos/pathfinding.ipynb\n" ] }, { @@ -405,263 +243,46 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook pathfinding.ipynb to html\n", - "[NbConvertApp] Writing 654313 bytes to /home/tigergraph/GML/output/algos/pathfinding.ipynb/pathfinding.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.08 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 28.8\n", - "RAM memory % used: 54.4\n", - "RAM Used (GB): 8.434761728\n", - "/home/tigergraph/GML/algos/pathfinding.ipynb executed successfully\n", - "execution time: 363.4259989261627 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/applications/recommendation/recommendation.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook recommendation.ipynb to html\n", - "[NbConvertApp] Writing 758735 bytes to /home/tigergraph/GML/output/applications/recommendation/recommendation.ipynb/recommendation.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.09 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 26.7\n", - "RAM memory % used: 35.4\n", - "RAM Used (GB): 5.246107648\n", - "/home/tigergraph/GML/applications/recommendation/recommendation.ipynb executed successfully\n", - "execution time: 131.5125663280487 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/applications/fraud_detection/fraud_detection.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook fraud_detection.ipynb to html\n", - "[NbConvertApp] Writing 1260584 bytes to /home/tigergraph/GML/output/applications/fraud_detection/fraud_detection.ipynb/fraud_detection.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.09 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 31.6\n", - "RAM memory % used: 36.1\n", - "RAM Used (GB): 5.360242688\n", - "/home/tigergraph/GML/applications/fraud_detection/fraud_detection.ipynb executed successfully\n", - "execution time: 347.6134707927704 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/basics/gsql_102.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook gsql_102.ipynb to html\n", - "[NbConvertApp] Writing 727589 bytes to /home/tigergraph/GML/output/basics/gsql_102.ipynb/gsql_102.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.09 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 23.6\n", - "RAM memory % used: 52.1\n", - "RAM Used (GB): 8.045740032\n", - "/home/tigergraph/GML/basics/gsql_102.ipynb executed successfully\n", - "execution time: 338.6693663597107 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/basics/datasets.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook datasets.ipynb to html\n", - "[NbConvertApp] Writing 630515 bytes to /home/tigergraph/GML/output/basics/datasets.ipynb/datasets.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.09 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 29.5\n", - "RAM memory % used: 36.9\n", - "RAM Used (GB): 5.492711424\n", - "/home/tigergraph/GML/basics/datasets.ipynb executed successfully\n", - "execution time: 68.28859567642212 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/basics/pyTigergraph_101.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook pyTigergraph_101.ipynb to html\n", - "[NbConvertApp] Writing 821115 bytes to /home/tigergraph/GML/output/basics/pyTigergraph_101.ipynb/pyTigergraph_101.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.09 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 25.5\n", - "RAM memory % used: 34.7\n", - "RAM Used (GB): 5.123076096\n", - "/home/tigergraph/GML/basics/pyTigergraph_101.ipynb executed successfully\n", - "execution time: 119.43766331672668 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/basics/feature_engineering.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook feature_engineering.ipynb to html\n", - "[NbConvertApp] Writing 643793 bytes to /home/tigergraph/GML/output/basics/feature_engineering.ipynb/feature_engineering.html\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "peak memory: 75.09 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 26.1\n", - "RAM memory % used: 36.3\n", - "RAM Used (GB): 5.388734464\n", - "/home/tigergraph/GML/basics/feature_engineering.ipynb executed successfully\n", - "execution time: 209.28624367713928 seconds\n", - "\n", - "Dropping all graphs, loading jobs, and queries sucessfully.\n", - "\n", - "Executing notebook: /home/tigergraph/GML/basics/gsql_101.ipynb\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook gsql_101.ipynb to html\n", - "Traceback (most recent call last):\n", - " File \"/opt/conda/bin/jupyter-nbconvert\", line 10, in \n", - " sys.exit(main())\n", - " File \"/opt/conda/lib/python3.9/site-packages/jupyter_core/application.py\", line 276, in launch_instance\n", - " return super().launch_instance(argv=argv, **kwargs)\n", - " File \"/opt/conda/lib/python3.9/site-packages/traitlets/config/application.py\", line 982, in launch_instance\n", - " app.start()\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/nbconvertapp.py\", line 426, in start\n", - " self.convert_notebooks()\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/nbconvertapp.py\", line 600, in convert_notebooks\n", - " self.convert_single_notebook(notebook_filename)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/nbconvertapp.py\", line 563, in convert_single_notebook\n", - " output, resources = self.export_single_notebook(\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/nbconvertapp.py\", line 491, in export_single_notebook\n", - " output, resources = self.exporter.from_filename(\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/exporter.py\", line 190, in from_filename\n", - " return self.from_file(f, resources=resources, **kw)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/exporter.py\", line 207, in from_file\n", - " return self.from_notebook_node(\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/html.py\", line 223, in from_notebook_node\n", - " return super().from_notebook_node(nb, resources, **kw)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/templateexporter.py\", line 385, in from_notebook_node\n", - " nb_copy, resources = super().from_notebook_node(nb, resources, **kw)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/exporter.py\", line 147, in from_notebook_node\n", - " nb_copy, resources = self._preprocess(nb_copy, resources)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/exporters/exporter.py\", line 342, in _preprocess\n", - " nbc, resc = preprocessor(nbc, resc)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/preprocessors/base.py\", line 47, in __call__\n", - " return self.preprocess(nb, resources)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py\", line 91, in preprocess\n", - " self.preprocess_cell(cell, resources, index)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py\", line 112, in preprocess_cell\n", - " cell = self.execute_cell(cell, index, store_history=True)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbclient/util.py\", line 85, in wrapped\n", - " return just_run(coro(*args, **kwargs))\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbclient/util.py\", line 60, in just_run\n", - " return loop.run_until_complete(coro)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nest_asyncio.py\", line 90, in run_until_complete\n", - " return f.result()\n", - " File \"/opt/conda/lib/python3.9/asyncio/futures.py\", line 201, in result\n", - " raise self._exception\n", - " File \"/opt/conda/lib/python3.9/asyncio/tasks.py\", line 256, in __step\n", - " result = coro.send(None)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbclient/client.py\", line 1019, in async_execute_cell\n", - " await self._check_raise_for_error(cell, cell_index, exec_reply)\n", - " File \"/opt/conda/lib/python3.9/site-packages/nbclient/client.py\", line 913, in _check_raise_for_error\n", - " raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)\n", - "nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:\n", - "------------------\n", - "results = conn.gsql(\n", - "'''\n", - "CREATE GRAPH Social_101 ()\n", - "'''\n", - ")\n", - "\n", - "print(results)\n", - "------------------\n", - "\n", - "An exception has occurred, use %tb to see the full traceback.\n", - "\n", - "\u001b[0;31mSystemExit\u001b[0m\u001b[0;31m:\u001b[0m 1\n", - "\n", - "SystemExit: 1\n", - "\n" + "[NbConvertApp] Writing 672256 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/pathfinding.ipynb/pathfinding.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.09 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 7.2\n", - "RAM memory % used: 34.3\n", - "RAM Used (GB): 5.062365184\n", - "/home/tigergraph/GML/basics/gsql_101.ipynb executed successfully\n", - "execution time: 133.9192452430725 seconds\n", + "peak memory: 75.43 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 33.3\n", + "RAM Used (GB): 10.289545216\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/pathfinding.ipynb executed successfully\n", + "execution time: 401.25413250923157 seconds\n", "\n" ] } ], "source": [ + "import csv\n", "import os\n", "import time\n", "import psutil\n", "!pip install memory_profiler\n", - "\n", "%load_ext memory_profiler\n", "\n", - "notebook_performance_out = '/home/tigergraph/GraphML/output/performance.txt'\n", + "notebook_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/notebook_' + config[\"job_id\"] + '.csv'\n", + "algorithm_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "\n", + "# notebook_header = [\"notebook_id\", \"is_failure\", \"host_cpu_usage\", \"notebook_memory\", \"execution_time\", \"host_memory\", \"error_message\", \"cron_job_id\"]\n", + "\n", + "# algorithm_header = [\"algorithm_id\", \"is_failure\", \"host_cpu_usage\", \"algo_memory\", \"execution_time\", \"host_memory\", \"algo_version\", \"error_message\", \"notebook_id\"]\n", + "\n", + "# os.makedirs(os.path.dirname(notebook_performance_out), exist_ok=True)\n", + "# with open(notebook_performance_out, mode='a+', encoding='utf-8') as f:\n", + "# writer = csv.writer(f) \n", + "# writer.writerow(notebook_header)\n", + "\n", + "os.makedirs(os.path.dirname(algorithm_performance_out), exist_ok=True)\n", + "with open(algorithm_performance_out, mode='a+', encoding='utf-8') as f:\n", + " writer = csv.writer(f) \n", + "# writer.writerow(algorithm_header)\n", "\n", "for nb_file in notebook_list:\n", " \n", @@ -670,41 +291,128 @@ " \n", " print ('Executing notebook: ' + nb_file)\n", " \n", - " root = '/home/tigergraph/GraphML/'\n", + " root = '/home/tigergraph/GraphML/graph-ml-notebooks/algos/'\n", " \n", " nb_file = nb_file.replace(\"./\", root)\n", " \n", - " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GraphML/\", \"\"))\n", + " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/graph-ml-notebooks/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\"))\n", " \n", - " # print (cmd)\n", + " print (cmd)\n", " \n", " start_time = time.time()\n", " \n", - " memory = %memit -r 1 -o os.system(cmd)\n", + " notebook_memory = %memit -r 1 -o os.system(cmd)\n", + " \n", + " notebook_memory = str(notebook_memory)\n", + " \n", + " start = notebook_memory.find(\": \") + 1\n", + " end = notebook_memory.find(\"M\")\n", + " \n", + " notebook_memory = notebook_memory[start:end].strip()\n", " \n", " execution_time = time.time() - start_time\n", " \n", - "# print('The CPU usage is: ', psutil.cpu_percent(4))\n", + " cpu_usage = psutil.cpu_percent(4)\n", + " \n", + " print('The CPU usage is: ', cpu_usage)\n", " \n", - "# print('RAM memory % used:', psutil.virtual_memory()[2])\n", + " # print('RAM memory % used:', psutil.virtual_memory()[2])\n", + " \n", + " host_memory = psutil.virtual_memory()[3]/1000000000\n", "\n", - "# print('RAM Used (GB):', psutil.virtual_memory()[3]/1000000000)\n", + " print('RAM Used (GB):', host_memory)\n", " \n", " print (nb_file + ' executed successfully')\n", + " \n", " print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", " \n", + " nb_file = nb_file.replace(\"/home/tigergraph/GraphML/graph-ml-notebooks/algos/\", \"\")\n", + " \n", + " nb_file = nb_file.replace(\"/\", \"_\")\n", + " \n", + " nb_id = nb_file + \"_\" + config[\"job_id\"]\n", + " \n", + " job_id = \"job_\" + config[\"job_id\"]\n", + " \n", + " data = [nb_id, \"false\" ,cpu_usage, notebook_memory, execution_time, host_memory, \"no errors\", job_id]\n", + " \n", " os.makedirs(os.path.dirname(notebook_performance_out), exist_ok=True)\n", " with open(notebook_performance_out, mode='a+', encoding='utf-8') as f:\n", - " f.write('executed notebook: ' + nb_file + '\\n')\n", - " f.write('execution time: ' + str(execution_time) + ' seconds\\n')\n", - " f.write(str(memory) + '\\n\\n')\n", - " " + " writer = csv.writer(f) \n", + " writer.writerow(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "02e80112-206e-46d8-9bb7-7ab5aa0d0027", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('s8jj9v3rc4oleljkr1263kjnfncf2f2g', 1674250471, '2023-01-20 21:34:31')" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pyTigerGraph import TigerGraphConnection\n", + "\n", + "conn = TigerGraphConnection(\n", + " host=\"https://mlwb-monitoring.i.tgcloud.io\",\n", + " username=\"user_1\",\n", + " password=\"Yo6Kf9Lg1Pp8Nu7|\",\n", + " graphname=\"mlwb_monitor\"\n", + ")\n", + "conn.getToken(conn.createSecret())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7bcddb06-bc2c-4b6a-8d8f-5398dd85befe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'sourceFileName': 'Online_POST', 'statistics': {'validLine': 7, 'rejectLine': 0, 'failedConditionLine': 0, 'notEnoughToken': 0, 'invalidJson': 0, 'oversizeToken': 0, 'vertex': [{'typeName': 'Notebook', 'validObject': 7, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'edge': [{'typeName': 'hasNotebook', 'validObject': 7, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'deleteVertex': [], 'deleteEdge': []}}]\n" + ] + } + ], + "source": [ + "uploadNotebookFile = conn.runLoadingJobWithFile(notebook_performance_out, \"notebook_file\", \"load_mlwb_monitor\", \",\")\n", + "print (uploadNotebookFile)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "03195591-4df2-4b9c-9c22-226c94f6f0a6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'sourceFileName': 'Online_POST', 'statistics': {'validLine': 26, 'rejectLine': 0, 'failedConditionLine': 0, 'notEnoughToken': 0, 'invalidJson': 0, 'oversizeToken': 0, 'vertex': [{'typeName': 'Algorithm', 'validObject': 26, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'edge': [{'typeName': 'runAlgorithm', 'validObject': 26, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'deleteVertex': [], 'deleteEdge': []}}]\n" + ] + } + ], + "source": [ + "uploadAlgorithmFile = conn.runLoadingJobWithFile(algorithm_performance_out, \"algorithm_file\", \"load_mlwb_monitor\", \",\")\n", + "print (uploadAlgorithmFile)" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3.10.6 64-bit", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -718,12 +426,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" - }, - "vscode": { - "interpreter": { - "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" - } + "version": "3.9.6" } }, "nbformat": 4, From 65f9c62615f8d2e248610ebe528a0cdb3284e063 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Wed, 21 Dec 2022 13:57:50 -0800 Subject: [PATCH 08/62] feat: add jenkins job id to config file --- config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/config.json b/config.json index 6ee6df9..4f091cb 100644 --- a/config.json +++ b/config.json @@ -3,4 +3,5 @@ "username": "user_1", "password": "MyPassword1!", "getToken": true + "job_id": "123" } \ No newline at end of file From 12429429f124b9b640ea9ce834457a2e5209dd4c Mon Sep 17 00:00:00 2001 From: Tris Jin Date: Wed, 21 Dec 2022 16:13:45 -0800 Subject: [PATCH 09/62] Fix config json format --- config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json b/config.json index 4f091cb..4a97c9d 100644 --- a/config.json +++ b/config.json @@ -2,6 +2,6 @@ "host": "https://subdomain.i.tgcloud.io", "username": "user_1", "password": "MyPassword1!", - "getToken": true + "getToken": true, "job_id": "123" } \ No newline at end of file From 7f990dcb26e87dadde834b52d69943e796027e36 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Wed, 21 Dec 2022 17:07:11 -0800 Subject: [PATCH 10/62] feat: fix output path --- algos/centrality.ipynb | 2 +- algos/classification.ipynb | 2 +- algos/community.ipynb | 2 +- algos/embedding.ipynb | 2 +- algos/pathfinding.ipynb | 2 +- algos/similarity.ipynb | 2 +- algos/topologicalLinkPrediction.ipynb | 2 +- regression/regression.ipynb | 12 ++++++------ 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/algos/centrality.ipynb b/algos/centrality.ipynb index 7b50913..8b2c961 100644 --- a/algos/centrality.ipynb +++ b/algos/centrality.ipynb @@ -425,7 +425,7 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "algo_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "start_time = time.time()\n", "\n", diff --git a/algos/classification.ipynb b/algos/classification.ipynb index e2a04b2..e2ee052 100644 --- a/algos/classification.ipynb +++ b/algos/classification.ipynb @@ -365,7 +365,7 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "algo_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "start_time = time.time()\n", "\n", diff --git a/algos/community.ipynb b/algos/community.ipynb index bcb3ac6..305dfc3 100644 --- a/algos/community.ipynb +++ b/algos/community.ipynb @@ -341,7 +341,7 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "algo_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "start_time = time.time()\n", "\n", diff --git a/algos/embedding.ipynb b/algos/embedding.ipynb index 03bcd7d..0247221 100644 --- a/algos/embedding.ipynb +++ b/algos/embedding.ipynb @@ -190,7 +190,7 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "algo_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "start_time = time.time()\n", "\n", diff --git a/algos/pathfinding.ipynb b/algos/pathfinding.ipynb index 19b50fa..533ed3b 100644 --- a/algos/pathfinding.ipynb +++ b/algos/pathfinding.ipynb @@ -312,7 +312,7 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "algo_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "start_time = time.time()\n", "\n", diff --git a/algos/similarity.ipynb b/algos/similarity.ipynb index 2f79e18..94a3ef3 100644 --- a/algos/similarity.ipynb +++ b/algos/similarity.ipynb @@ -324,7 +324,7 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "algo_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "start_time = time.time()\n", "\n", diff --git a/algos/topologicalLinkPrediction.ipynb b/algos/topologicalLinkPrediction.ipynb index 0956fbc..a1d40bf 100644 --- a/algos/topologicalLinkPrediction.ipynb +++ b/algos/topologicalLinkPrediction.ipynb @@ -326,7 +326,7 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "algo_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "algo_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "start_time = time.time()\n", "\n", diff --git a/regression/regression.ipynb b/regression/regression.ipynb index ca81e83..c0a5619 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -24,7 +24,7 @@ "import os\n", "\n", "# folder path\n", - "dir_path = \"/home/tigergraph/GraphML/graph-ml-notebooks/algos/\"\n", + "dir_path = \"/home/tigergraph/GraphML/algos/\"\n", "\n", "# list to store files\n", "notebook_list = []\n", @@ -267,8 +267,8 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "notebook_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/notebook_' + config[\"job_id\"] + '.csv'\n", - "algorithm_performance_out = '/home/tigergraph/GraphML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "notebook_performance_out = '/home/tigergraph/GraphML/output/notebook_' + config[\"job_id\"] + '.csv'\n", + "algorithm_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "# notebook_header = [\"notebook_id\", \"is_failure\", \"host_cpu_usage\", \"notebook_memory\", \"execution_time\", \"host_memory\", \"error_message\", \"cron_job_id\"]\n", "\n", @@ -291,11 +291,11 @@ " \n", " print ('Executing notebook: ' + nb_file)\n", " \n", - " root = '/home/tigergraph/GraphML/graph-ml-notebooks/algos/'\n", + " root = '/home/tigergraph/GraphML/algos/'\n", " \n", " nb_file = nb_file.replace(\"./\", root)\n", " \n", - " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/graph-ml-notebooks/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\"))\n", + " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\"))\n", " \n", " print (cmd)\n", " \n", @@ -326,7 +326,7 @@ " \n", " print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", " \n", - " nb_file = nb_file.replace(\"/home/tigergraph/GraphML/graph-ml-notebooks/algos/\", \"\")\n", + " nb_file = nb_file.replace(\"/home/tigergraph/GraphML/algos/\", \"\")\n", " \n", " nb_file = nb_file.replace(\"/\", \"_\")\n", " \n", From d0f4b1c4930ee82c784714e00077d82507408d83 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Wed, 21 Dec 2022 18:30:50 -0800 Subject: [PATCH 11/62] fix: update notebook id --- regression/regression.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index c0a5619..882d85a 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -326,7 +326,7 @@ " \n", " print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", " \n", - " nb_file = nb_file.replace(\"/home/tigergraph/GraphML/algos/\", \"\")\n", + " nb_file = nb_file.replace(\"/home/tigergraph/GraphML/\", \"\")\n", " \n", " nb_file = nb_file.replace(\"/\", \"_\")\n", " \n", From acef4335161eba3dee7563d5af2968e886069137 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Wed, 4 Jan 2023 09:42:28 -0800 Subject: [PATCH 12/62] fix: include all notebooks in regression test --- regression/regression.ipynb | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index 882d85a..4786771 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -5,26 +5,12 @@ "execution_count": 1, "id": "cc354491-c629-47b3-a7d6-b4b5060409de", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/home/tigergraph/GML/graph-ml-notebooks/algos/topologicalLinkPrediction.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/embedding.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/classification.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/similarity.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/centrality.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/community.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/pathfinding.ipynb\n" - ] - } - ], + "outputs": [], "source": [ "import os\n", "\n", "# folder path\n", - "dir_path = \"/home/tigergraph/GraphML/algos/\"\n", + "dir_path = \"/home/tigergraph/GraphML/\"\n", "\n", "# list to store files\n", "notebook_list = []\n", @@ -291,11 +277,11 @@ " \n", " print ('Executing notebook: ' + nb_file)\n", " \n", - " root = '/home/tigergraph/GraphML/algos/'\n", + " root = '/home/tigergraph/GraphML/'\n", " \n", " nb_file = nb_file.replace(\"./\", root)\n", " \n", - " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\"))\n", + " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GraphML/\", \"\"))\n", " \n", " print (cmd)\n", " \n", @@ -334,7 +320,7 @@ " \n", " job_id = \"job_\" + config[\"job_id\"]\n", " \n", - " data = [nb_id, \"false\" ,cpu_usage, notebook_memory, execution_time, host_memory, \"no errors\", job_id]\n", + " data = [nb_id, \"false\" ,cpu_usage, notebook_memory, execution_time, host_memory, \"no error\", job_id]\n", " \n", " os.makedirs(os.path.dirname(notebook_performance_out), exist_ok=True)\n", " with open(notebook_performance_out, mode='a+', encoding='utf-8') as f:\n", @@ -363,10 +349,10 @@ "from pyTigerGraph import TigerGraphConnection\n", "\n", "conn = TigerGraphConnection(\n", - " host=\"https://mlwb-monitoring.i.tgcloud.io\",\n", - " username=\"user_1\",\n", - " password=\"Yo6Kf9Lg1Pp8Nu7|\",\n", - " graphname=\"mlwb_monitor\"\n", + " host=\"https:/xxxxxx.i.tgcloud.io\",\n", + " username=\"xxxxxxxxxx\",\n", + " password=\"xxxxxxxxxxxx\",\n", + " graphname=\"MyGraph\"\n", ")\n", "conn.getToken(conn.createSecret())" ] From 58c5c06759656e3e757a005c729942678303aac6 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Wed, 4 Jan 2023 14:14:37 -0800 Subject: [PATCH 13/62] fix: update config file for monitoring cluster info --- config.json | 12 ++++++++---- regression/regression.ipynb | 8 ++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/config.json b/config.json index 4a97c9d..2378db0 100644 --- a/config.json +++ b/config.json @@ -1,7 +1,11 @@ { - "host": "https://subdomain.i.tgcloud.io", - "username": "user_1", - "password": "MyPassword1!", + "host": "https://xxxxxx.i.tgcloud.io", + "username": "xxxxxx", + "password": "xxxxxxx", + "job_id": "xxxx" + "monitor_host": "https:/xxxxxx.i.tgcloud.io", + "monitor_username": "xxxxxxxxxx", + "monitor_password": "xxxxxxxxxxxx", + "monitor_graph": "xxxxxx", "getToken": true, - "job_id": "123" } \ No newline at end of file diff --git a/regression/regression.ipynb b/regression/regression.ipynb index 4786771..11e9c78 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -349,10 +349,10 @@ "from pyTigerGraph import TigerGraphConnection\n", "\n", "conn = TigerGraphConnection(\n", - " host=\"https:/xxxxxx.i.tgcloud.io\",\n", - " username=\"xxxxxxxxxx\",\n", - " password=\"xxxxxxxxxxxx\",\n", - " graphname=\"MyGraph\"\n", + " host=config[\"monitor_host\"],\n", + " username=config[\"monitor_username\"],\n", + " password=config[\"monitor_password\"],\n", + " graphname=config[\"monitor_graph\"]\n", ")\n", "conn.getToken(conn.createSecret())" ] From 8b3d423b4355c9d31c80c9be83a90c2d28d0338e Mon Sep 17 00:00:00 2001 From: Tris Jin Date: Wed, 4 Jan 2023 14:54:10 -0800 Subject: [PATCH 14/62] Fix json format --- config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.json b/config.json index 2378db0..21a9c94 100644 --- a/config.json +++ b/config.json @@ -2,10 +2,10 @@ "host": "https://xxxxxx.i.tgcloud.io", "username": "xxxxxx", "password": "xxxxxxx", - "job_id": "xxxx" + "job_id": "xxxx", "monitor_host": "https:/xxxxxx.i.tgcloud.io", "monitor_username": "xxxxxxxxxx", "monitor_password": "xxxxxxxxxxxx", "monitor_graph": "xxxxxx", - "getToken": true, + "getToken": true } \ No newline at end of file From e133b488f595c4116226c898684684972e987bc3 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Thu, 5 Jan 2023 16:41:27 -0800 Subject: [PATCH 15/62] fix: add pytigergraph csv file --- regression/regression.ipynb | 596 +++++++++++++++++++++++++++++++++--- 1 file changed, 547 insertions(+), 49 deletions(-) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index 11e9c78..90f094e 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -5,12 +5,39 @@ "execution_count": 1, "id": "cc354491-c629-47b3-a7d6-b4b5060409de", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/gcn_link_prediction.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/gcn_node_classification.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/hgat_node_classification.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/Spektral/gcn_node_classification.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL/gcn_node_classification.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL/rgcn_node_classification.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/topologicalLinkPrediction.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/embedding.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/classification.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/similarity.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/centrality.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/community.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/algos/pathfinding.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/applications/recommendation/recommendation.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/applications/fraud_detection/fraud_detection.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/gsql_102.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/datasets.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/pyTigergraph_101.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/feature_engineering.ipynb\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/gsql_101.ipynb\n" + ] + } + ], "source": [ "import os\n", "\n", "# folder path\n", - "dir_path = \"/home/tigergraph/GraphML/\"\n", + "dir_path = \"/home/tigergraph/GML/graph-ml-notebooks/\"\n", "\n", "# list to store files\n", "notebook_list = []\n", @@ -27,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 8, "id": "f5249446-1e9d-4c03-a2c2-cd8d69febb5e", "metadata": {}, "outputs": [], @@ -74,6 +101,164 @@ "name": "stdout", "output_type": "stream", "text": [ + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/gcn_link_prediction.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG && jupyter nbconvert --to html --execute gcn_link_prediction.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/GNNs/PyG/gcn_link_prediction.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gcn_link_prediction.ipynb to html\n", + "[NbConvertApp] Writing 662519 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/GNNs/PyG/gcn_link_prediction.ipynb/gcn_link_prediction.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.61 MiB, increment: 0.20 MiB\n", + "The CPU usage is: 21.5\n", + "RAM Used (GB): 7.553880064\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/gcn_link_prediction.ipynb executed successfully\n", + "execution time: 308.41598892211914 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/gcn_node_classification.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG && jupyter nbconvert --to html --execute gcn_node_classification.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/GNNs/PyG/gcn_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", + "[NbConvertApp] Writing 683222 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/GNNs/PyG/gcn_node_classification.ipynb/gcn_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.66 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 21.2\n", + "RAM Used (GB): 7.539929088\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/gcn_node_classification.ipynb executed successfully\n", + "execution time: 201.66628551483154 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/hgat_node_classification.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG && jupyter nbconvert --to html --execute hgat_node_classification.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/GNNs/PyG/hgat_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook hgat_node_classification.ipynb to html\n", + "[NbConvertApp] Writing 709749 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/GNNs/PyG/hgat_node_classification.ipynb/hgat_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.68 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 21.7\n", + "RAM Used (GB): 7.761166336\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/hgat_node_classification.ipynb executed successfully\n", + "execution time: 355.144394159317 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/GNNs/Spektral/gcn_node_classification.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/GNNs/Spektral && jupyter nbconvert --to html --execute gcn_node_classification.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/GNNs/Spektral/gcn_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", + "2023-01-04 21:19:28.487625: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2023-01-04 21:19:28.647241: I tensorflow/core/util/util.cc:169] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", + "2023-01-04 21:19:28.654959: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", + "2023-01-04 21:19:28.654982: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n", + "2023-01-04 21:19:28.694762: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n", + "2023-01-04 21:19:29.525295: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n", + "2023-01-04 21:19:29.525402: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n", + "2023-01-04 21:19:29.525414: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n", + "2023-01-04 21:19:31.768213: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory\n", + "2023-01-04 21:19:31.768249: W tensorflow/stream_executor/cuda/cuda_driver.cc:263] failed call to cuInit: UNKNOWN ERROR (303)\n", + "2023-01-04 21:19:31.768276: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (df8d3fc244d1): /proc/driver/nvidia/version does not exist\n", + "2023-01-04 21:19:31.768850: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "[NbConvertApp] Writing 695733 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/GNNs/Spektral/gcn_node_classification.ipynb/gcn_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.74 MiB, increment: 0.06 MiB\n", + "The CPU usage is: 22.6\n", + "RAM Used (GB): 7.440146432\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/Spektral/gcn_node_classification.ipynb executed successfully\n", + "execution time: 233.41414785385132 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL/gcn_node_classification.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL && jupyter nbconvert --to html --execute gcn_node_classification.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/GNNs/DGL/gcn_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gcn_node_classification.ipynb to html\n", + "[NbConvertApp] Writing 707551 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/GNNs/DGL/gcn_node_classification.ipynb/gcn_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.77 MiB, increment: 0.02 MiB\n", + "The CPU usage is: 27.0\n", + "RAM Used (GB): 7.50467072\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL/gcn_node_classification.ipynb executed successfully\n", + "execution time: 201.00557255744934 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL/rgcn_node_classification.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL && jupyter nbconvert --to html --execute rgcn_node_classification.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/GNNs/DGL/rgcn_node_classification.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook rgcn_node_classification.ipynb to html\n", + "[NbConvertApp] Writing 724115 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/GNNs/DGL/rgcn_node_classification.ipynb/rgcn_node_classification.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.77 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 21.8\n", + "RAM Used (GB): 8.076378112\n", + "/home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL/rgcn_node_classification.ipynb executed successfully\n", + "execution time: 350.3775565624237 seconds\n", + "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/algos/topologicalLinkPrediction.ipynb\n", @@ -85,18 +270,18 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook topologicalLinkPrediction.ipynb to html\n", - "[NbConvertApp] Writing 674800 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/topologicalLinkPrediction.ipynb/topologicalLinkPrediction.html\n" + "[NbConvertApp] Writing 674799 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/topologicalLinkPrediction.ipynb/topologicalLinkPrediction.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.13 MiB, increment: 0.27 MiB\n", - "The CPU usage is: 26.5\n", - "RAM Used (GB): 6.797631488\n", + "peak memory: 77.78 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 21.9\n", + "RAM Used (GB): 7.312748544\n", "/home/tigergraph/GML/graph-ml-notebooks/algos/topologicalLinkPrediction.ipynb executed successfully\n", - "execution time: 282.30571269989014 seconds\n", + "execution time: 265.50346183776855 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", @@ -109,18 +294,18 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook embedding.ipynb to html\n", - "[NbConvertApp] Writing 687473 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/embedding.ipynb/embedding.html\n" + "[NbConvertApp] Writing 690624 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/embedding.ipynb/embedding.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.25 MiB, increment: 0.03 MiB\n", - "The CPU usage is: 26.4\n", - "RAM Used (GB): 6.9184512\n", + "peak memory: 77.79 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 21.8\n", + "RAM Used (GB): 7.458516992\n", "/home/tigergraph/GML/graph-ml-notebooks/algos/embedding.ipynb executed successfully\n", - "execution time: 243.8325412273407 seconds\n", + "execution time: 228.1082730293274 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", @@ -140,11 +325,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.35 MiB, increment: 0.10 MiB\n", - "The CPU usage is: 24.0\n", - "RAM Used (GB): 6.934577152\n", + "peak memory: 77.80 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 21.6\n", + "RAM Used (GB): 7.396671488\n", "/home/tigergraph/GML/graph-ml-notebooks/algos/classification.ipynb executed successfully\n", - "execution time: 414.18331146240234 seconds\n", + "execution time: 380.5423550605774 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", @@ -164,11 +349,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.35 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 23.9\n", - "RAM Used (GB): 6.8861952\n", + "peak memory: 77.80 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 20.8\n", + "RAM Used (GB): 7.334014976\n", "/home/tigergraph/GML/graph-ml-notebooks/algos/similarity.ipynb executed successfully\n", - "execution time: 217.29136562347412 seconds\n", + "execution time: 205.19513034820557 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", @@ -181,18 +366,18 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook centrality.ipynb to html\n", - "[NbConvertApp] Writing 764722 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/centrality.ipynb/centrality.html\n" + "[NbConvertApp] Writing 764684 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/centrality.ipynb/centrality.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.39 MiB, increment: 0.02 MiB\n", - "The CPU usage is: 26.1\n", - "RAM Used (GB): 9.723551744\n", + "peak memory: 77.81 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 22.5\n", + "RAM Used (GB): 9.964990464\n", "/home/tigergraph/GML/graph-ml-notebooks/algos/centrality.ipynb executed successfully\n", - "execution time: 529.8975987434387 seconds\n", + "execution time: 485.6545944213867 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", @@ -205,18 +390,18 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook community.ipynb to html\n", - "[NbConvertApp] Writing 706541 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/community.ipynb/community.html\n" + "[NbConvertApp] Writing 706542 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/community.ipynb/community.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.42 MiB, increment: 0.03 MiB\n", - "The CPU usage is: 25.4\n", - "RAM Used (GB): 9.666461696\n", + "peak memory: 77.82 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 23.0\n", + "RAM Used (GB): 10.02795008\n", "/home/tigergraph/GML/graph-ml-notebooks/algos/community.ipynb executed successfully\n", - "execution time: 608.2130348682404 seconds\n", + "execution time: 556.4984426498413 seconds\n", "\n", "Dropping all graphs, loading jobs, and queries sucessfully.\n", "\n", @@ -229,32 +414,199 @@ "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook pathfinding.ipynb to html\n", - "[NbConvertApp] Writing 672256 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/pathfinding.ipynb/pathfinding.html\n" + "[NbConvertApp] Writing 672272 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/algos/pathfinding.ipynb/pathfinding.html\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 75.43 MiB, increment: 0.00 MiB\n", - "The CPU usage is: 33.3\n", - "RAM Used (GB): 10.289545216\n", + "peak memory: 77.82 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 23.6\n", + "RAM Used (GB): 10.346160128\n", "/home/tigergraph/GML/graph-ml-notebooks/algos/pathfinding.ipynb executed successfully\n", - "execution time: 401.25413250923157 seconds\n", + "execution time: 377.67410349845886 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/applications/recommendation/recommendation.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/applications/recommendation && jupyter nbconvert --to html --execute recommendation.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/applications/recommendation/recommendation.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook recommendation.ipynb to html\n", + "[NbConvertApp] Writing 758920 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/applications/recommendation/recommendation.ipynb/recommendation.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.83 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 22.6\n", + "RAM Used (GB): 7.444975616\n", + "/home/tigergraph/GML/graph-ml-notebooks/applications/recommendation/recommendation.ipynb executed successfully\n", + "execution time: 127.89344096183777 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/applications/fraud_detection/fraud_detection.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/applications/fraud_detection && jupyter nbconvert --to html --execute fraud_detection.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/applications/fraud_detection/fraud_detection.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook fraud_detection.ipynb to html\n", + "[NbConvertApp] Writing 1139882 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/applications/fraud_detection/fraud_detection.ipynb/fraud_detection.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.83 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 23.4\n", + "RAM Used (GB): 7.491518464\n", + "/home/tigergraph/GML/graph-ml-notebooks/applications/fraud_detection/fraud_detection.ipynb executed successfully\n", + "execution time: 330.2850160598755 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/basics/gsql_102.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/basics && jupyter nbconvert --to html --execute gsql_102.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/basics/gsql_102.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gsql_102.ipynb to html\n", + "[NbConvertApp] Writing 727585 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/basics/gsql_102.ipynb/gsql_102.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.83 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 21.5\n", + "RAM Used (GB): 9.972473856\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/gsql_102.ipynb executed successfully\n", + "execution time: 332.4458079338074 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/basics/datasets.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/basics && jupyter nbconvert --to html --execute datasets.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/basics/datasets.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook datasets.ipynb to html\n", + "[NbConvertApp] Writing 630515 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/basics/datasets.ipynb/datasets.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.84 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 26.7\n", + "RAM Used (GB): 7.578284032\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/datasets.ipynb executed successfully\n", + "execution time: 66.88913416862488 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/basics/pyTigergraph_101.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/basics && jupyter nbconvert --to html --execute pyTigergraph_101.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/basics/pyTigergraph_101.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook pyTigergraph_101.ipynb to html\n", + "[NbConvertApp] Writing 820049 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/basics/pyTigergraph_101.ipynb/pyTigergraph_101.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.84 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 28.8\n", + "RAM Used (GB): 7.245090816\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/pyTigergraph_101.ipynb executed successfully\n", + "execution time: 125.02234935760498 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/basics/feature_engineering.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/basics && jupyter nbconvert --to html --execute feature_engineering.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/basics/feature_engineering.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook feature_engineering.ipynb to html\n", + "[NbConvertApp] Writing 643077 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/basics/feature_engineering.ipynb/feature_engineering.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.85 MiB, increment: 0.00 MiB\n", + "The CPU usage is: 29.4\n", + "RAM Used (GB): 7.512264704\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/feature_engineering.ipynb executed successfully\n", + "execution time: 204.19608330726624 seconds\n", + "\n", + "Dropping all graphs, loading jobs, and queries sucessfully.\n", + "\n", + "Executing notebook: /home/tigergraph/GML/graph-ml-notebooks/basics/gsql_101.ipynb\n", + "cd /home/tigergraph/GML/graph-ml-notebooks/basics && jupyter nbconvert --to html --execute gsql_101.ipynb --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/basics/gsql_101.ipynb\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook gsql_101.ipynb to html\n", + "[NbConvertApp] Writing 639089 bytes to /home/tigergraph/GML/graph-ml-notebooks/output/basics/gsql_101.ipynb/gsql_101.html\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "peak memory: 77.86 MiB, increment: 0.01 MiB\n", + "The CPU usage is: 22.4\n", + "RAM Used (GB): 7.32223488\n", + "/home/tigergraph/GML/graph-ml-notebooks/basics/gsql_101.ipynb executed successfully\n", + "execution time: 155.99732637405396 seconds\n", "\n" ] } ], "source": [ "import csv\n", - "import os\n", "import time\n", "import psutil\n", "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "notebook_performance_out = '/home/tigergraph/GraphML/output/notebook_' + config[\"job_id\"] + '.csv'\n", - "algorithm_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "notebook_performance_out = '/home/tigergraph/GML/graph-ml-notebooks/output/notebook_' + config[\"job_id\"] + '.csv'\n", + "algorithm_performance_out = '/home/tigergraph/GML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "# notebook_header = [\"notebook_id\", \"is_failure\", \"host_cpu_usage\", \"notebook_memory\", \"execution_time\", \"host_memory\", \"error_message\", \"cron_job_id\"]\n", "\n", @@ -277,12 +629,11 @@ " \n", " print ('Executing notebook: ' + nb_file)\n", " \n", - " root = '/home/tigergraph/GraphML/'\n", + " root = '/home/tigergraph/GML/graph-ml-notebooks/'\n", " \n", " nb_file = nb_file.replace(\"./\", root)\n", " \n", - " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GraphML/\", \"\"))\n", - " \n", + " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\"))\n", " print (cmd)\n", " \n", " start_time = time.time()\n", @@ -312,7 +663,7 @@ " \n", " print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", " \n", - " nb_file = nb_file.replace(\"/home/tigergraph/GraphML/\", \"\")\n", + " nb_file = nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\")\n", " \n", " nb_file = nb_file.replace(\"/\", \"_\")\n", " \n", @@ -330,17 +681,17 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "id": "02e80112-206e-46d8-9bb7-7ab5aa0d0027", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "('s8jj9v3rc4oleljkr1263kjnfncf2f2g', 1674250471, '2023-01-20 21:34:31')" + "('2gv9fsarue5i0c2usaqpvt4qqagpubfe', 1675546065, '2023-02-04 21:27:45')" ] }, - "execution_count": 5, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -359,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "id": "7bcddb06-bc2c-4b6a-8d8f-5398dd85befe", "metadata": {}, "outputs": [ @@ -367,7 +718,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[{'sourceFileName': 'Online_POST', 'statistics': {'validLine': 7, 'rejectLine': 0, 'failedConditionLine': 0, 'notEnoughToken': 0, 'invalidJson': 0, 'oversizeToken': 0, 'vertex': [{'typeName': 'Notebook', 'validObject': 7, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'edge': [{'typeName': 'hasNotebook', 'validObject': 7, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'deleteVertex': [], 'deleteEdge': []}}]\n" + "[{'sourceFileName': 'Online_POST', 'statistics': {'validLine': 20, 'rejectLine': 0, 'failedConditionLine': 0, 'notEnoughToken': 0, 'invalidJson': 0, 'oversizeToken': 0, 'vertex': [{'typeName': 'Notebook', 'validObject': 20, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'edge': [{'typeName': 'hasNotebook', 'validObject': 20, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'deleteVertex': [], 'deleteEdge': []}}]\n" ] } ], @@ -378,7 +729,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 14, "id": "03195591-4df2-4b9c-9c22-226c94f6f0a6", "metadata": {}, "outputs": [ @@ -394,6 +745,153 @@ "uploadAlgorithmFile = conn.runLoadingJobWithFile(algorithm_performance_out, \"algorithm_file\", \"load_mlwb_monitor\", \",\")\n", "print (uploadAlgorithmFile)" ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0c49192e-7a32-47bf-8b1c-6c3078973187", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pypistats in /opt/conda/lib/python3.9/site-packages (1.2.1)\n", + "Requirement already satisfied: python-dateutil in /opt/conda/lib/python3.9/site-packages (from pypistats) (2.8.2)\n", + "Requirement already satisfied: pytablewriter[html]>=0.63 in /opt/conda/lib/python3.9/site-packages (from pypistats) (0.64.2)\n", + "Requirement already satisfied: platformdirs in /opt/conda/lib/python3.9/site-packages (from pypistats) (2.5.2)\n", + "Requirement already satisfied: termcolor in /opt/conda/lib/python3.9/site-packages (from pypistats) (2.1.1)\n", + "Requirement already satisfied: python-slugify in /opt/conda/lib/python3.9/site-packages (from pypistats) (7.0.0)\n", + "Requirement already satisfied: prettytable>=2.4 in /opt/conda/lib/python3.9/site-packages (from pypistats) (3.5.0)\n", + "Requirement already satisfied: httpx>=0.19 in /opt/conda/lib/python3.9/site-packages (from pypistats) (0.23.2)\n", + "Requirement already satisfied: httpcore<0.17.0,>=0.15.0 in /opt/conda/lib/python3.9/site-packages (from httpx>=0.19->pypistats) (0.16.3)\n", + "Requirement already satisfied: rfc3986[idna2008]<2,>=1.3 in /opt/conda/lib/python3.9/site-packages (from httpx>=0.19->pypistats) (1.5.0)\n", + "Requirement already satisfied: sniffio in /opt/conda/lib/python3.9/site-packages (from httpx>=0.19->pypistats) (1.3.0)\n", + "Requirement already satisfied: certifi in /opt/conda/lib/python3.9/site-packages (from httpx>=0.19->pypistats) (2022.9.24)\n", + "Requirement already satisfied: wcwidth in /opt/conda/lib/python3.9/site-packages (from prettytable>=2.4->pypistats) (0.2.5)\n", + "Requirement already satisfied: pathvalidate<3,>=2.3.0 in /opt/conda/lib/python3.9/site-packages (from pytablewriter[html]>=0.63->pypistats) (2.5.2)\n", + "Requirement already satisfied: DataProperty<2,>=0.55.0 in /opt/conda/lib/python3.9/site-packages (from pytablewriter[html]>=0.63->pypistats) (0.55.0)\n", + "Requirement already satisfied: setuptools>=38.3.0 in /opt/conda/lib/python3.9/site-packages (from pytablewriter[html]>=0.63->pypistats) (65.5.1)\n", + "Requirement already satisfied: mbstrdecoder<2,>=1.0.0 in /opt/conda/lib/python3.9/site-packages (from pytablewriter[html]>=0.63->pypistats) (1.1.1)\n", + "Requirement already satisfied: tabledata<2,>=1.3.0 in /opt/conda/lib/python3.9/site-packages (from pytablewriter[html]>=0.63->pypistats) (1.3.0)\n", + "Requirement already satisfied: typepy[datetime]<2,>=1.2.0 in /opt/conda/lib/python3.9/site-packages (from pytablewriter[html]>=0.63->pypistats) (1.3.0)\n", + "Requirement already satisfied: tcolorpy<1,>=0.0.5 in /opt/conda/lib/python3.9/site-packages (from pytablewriter[html]>=0.63->pypistats) (0.1.2)\n", + "Requirement already satisfied: dominate<3,>=2.1.5 in /opt/conda/lib/python3.9/site-packages (from pytablewriter[html]>=0.63->pypistats) (2.7.0)\n", + "Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.9/site-packages (from python-dateutil->pypistats) (1.16.0)\n", + "Requirement already satisfied: text-unidecode>=1.3 in /opt/conda/lib/python3.9/site-packages (from python-slugify->pypistats) (1.3)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /opt/conda/lib/python3.9/site-packages (from httpcore<0.17.0,>=0.15.0->httpx>=0.19->pypistats) (0.14.0)\n", + "Requirement already satisfied: anyio<5.0,>=3.0 in /opt/conda/lib/python3.9/site-packages (from httpcore<0.17.0,>=0.15.0->httpx>=0.19->pypistats) (3.6.2)\n", + "Requirement already satisfied: chardet<6,>=3.0.4 in /opt/conda/lib/python3.9/site-packages (from mbstrdecoder<2,>=1.0.0->pytablewriter[html]>=0.63->pypistats) (5.1.0)\n", + "Requirement already satisfied: idna in /opt/conda/lib/python3.9/site-packages (from rfc3986[idna2008]<2,>=1.3->httpx>=0.19->pypistats) (3.4)\n", + "Requirement already satisfied: pytz>=2018.9 in /opt/conda/lib/python3.9/site-packages (from typepy[datetime]<2,>=1.2.0->pytablewriter[html]>=0.63->pypistats) (2022.6)\n", + "Requirement already satisfied: packaging in /opt/conda/lib/python3.9/site-packages (from typepy[datetime]<2,>=1.2.0->pytablewriter[html]>=0.63->pypistats) (21.3)\n", + "Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /opt/conda/lib/python3.9/site-packages (from packaging->typepy[datetime]<2,>=1.2.0->pytablewriter[html]>=0.63->pypistats) (3.0.9)\n" + ] + } + ], + "source": [ + "!pip install pypistats\n", + "import pypistats" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "cb69ff42-2ae9-41e0-84e1-aad0aabeda06", + "metadata": {}, + "outputs": [], + "source": [ + "pyTigergraph_statistic_out = '/home/tigergraph/GML/graph-ml-notebooks/output/pytigergraph_' + config[\"job_id\"] + '.csv' \n", + "os.makedirs(os.path.dirname(pyTigergraph_statistic_out), exist_ok=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "803468cc-d1de-4e58-94af-7f74443a65a6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " category date percent downloads pytigergraph_id \\\n", + "350 with_mirrors 2022-07-08 0.23% 215 pytigergraph_123 \n", + "317 with_mirrors 2022-07-09 0.30% 281 pytigergraph_123 \n", + "98 with_mirrors 2022-07-10 0.56% 532 pytigergraph_123 \n", + "126 with_mirrors 2022-07-11 0.50% 472 pytigergraph_123 \n", + "127 with_mirrors 2022-07-12 0.50% 472 pytigergraph_123 \n", + ".. ... ... ... ... ... \n", + "345 with_mirrors 2022-12-31 0.24% 232 pytigergraph_123 \n", + "187 with_mirrors 2023-01-01 0.41% 389 pytigergraph_123 \n", + "151 with_mirrors 2023-01-02 0.46% 440 pytigergraph_123 \n", + "226 with_mirrors 2023-01-03 0.37% 351 pytigergraph_123 \n", + "105 with_mirrors 2023-01-04 0.54% 514 pytigergraph_123 \n", + "\n", + " cron_job_id download_id pytg_version git_download \n", + "350 job_123 download_123_1 1.2.2 0 \n", + "317 job_123 download_123_2 1.2.2 0 \n", + "98 job_123 download_123_3 1.2.2 0 \n", + "126 job_123 download_123_4 1.2.2 0 \n", + "127 job_123 download_123_5 1.2.2 0 \n", + ".. ... ... ... ... \n", + "345 job_123 download_123_177 1.2.2 0 \n", + "187 job_123 download_123_178 1.2.2 0 \n", + "151 job_123 download_123_179 1.2.2 0 \n", + "226 job_123 download_123_180 1.2.2 0 \n", + "105 job_123 download_123_181 1.2.2 0 \n", + "\n", + "[181 rows x 9 columns]\n" + ] + } + ], + "source": [ + "data = pypistats.overall(\"pyTigerGraph\", total=True, format=\"pandas\")\n", + "data = data.groupby(\"category\").get_group(\"with_mirrors\").sort_values(\"date\")\n", + "data = data.sort_values(\"date\")\n", + "data[\"pytigergraph_id\"] = \"pytigergraph_\" + config[\"job_id\"] \n", + "data[\"cron_job_id\"] = \"job_\" + config[\"job_id\"] \n", + "download_id_list = []\n", + "for i in range(len(data.index)):\n", + " download_id_list.append(\"download_\" + config[\"job_id\"] + \"_\" + str(i + 1))\n", + " \n", + "data[\"download_id\"] = download_id_list\n", + "data[\"pytg_version\"] = \"1.2.2\"\n", + "data[\"git_download\"] = 0\n", + "print(data)\n", + "data.to_csv(pyTigergraph_statistic_out, index=False, header=False, columns=['date', 'downloads', 'pytigergraph_id', 'cron_job_id', 'download_id', 'pytg_version', 'git_download'])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c126cfe1-762f-4dee-a934-dc885043ebf0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'sourceFileName': 'Online_POST', 'statistics': {'validLine': 181, 'rejectLine': 0, 'failedConditionLine': 0, 'notEnoughToken': 0, 'invalidJson': 0, 'oversizeToken': 0, 'vertex': [{'typeName': 'Download', 'validObject': 181, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'edge': [{'typeName': 'usePyTigerGraph', 'validObject': 181, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}, {'typeName': 'hasDownload', 'validObject': 181, 'noIdFound': 0, 'invalidAttribute': 0, 'invalidVertexType': 0, 'invalidPrimaryId': 0, 'invalidSecondaryId': 0, 'incorrectFixedBinaryLength': 0}], 'deleteVertex': [], 'deleteEdge': []}}]\n" + ] + } + ], + "source": [ + "uploadPyTigerGraphFile = conn.runLoadingJobWithFile(pyTigergraph_statistic_out, \"pyTigerGraph_file\", \"load_mlwb_monitor\", \",\")\n", + "print (uploadPyTigerGraphFile)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d243167e-df1f-4e3a-997d-1e3a3432af93", + "metadata": {}, + "outputs": [], + "source": [ + "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/notebook_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/notebook/\n", + "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/algorithm_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/notebook/\n", + "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/pyTigerGraph_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/notebook/" + ] } ], "metadata": { From bfe9de6a8d3e60eaeb2462f124b1065f7b9fa16a Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Thu, 5 Jan 2023 17:28:27 -0800 Subject: [PATCH 16/62] fix: update file path --- regression/regression.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index 90f094e..fce35ba 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -37,7 +37,7 @@ "import os\n", "\n", "# folder path\n", - "dir_path = \"/home/tigergraph/GML/graph-ml-notebooks/\"\n", + "dir_path = \"/home/tigergraph/GraphML/\"\n", "\n", "# list to store files\n", "notebook_list = []\n", @@ -605,8 +605,8 @@ "!pip install memory_profiler\n", "%load_ext memory_profiler\n", "\n", - "notebook_performance_out = '/home/tigergraph/GML/graph-ml-notebooks/output/notebook_' + config[\"job_id\"] + '.csv'\n", - "algorithm_performance_out = '/home/tigergraph/GML/graph-ml-notebooks/output/algorithm_' + config[\"job_id\"] + '.csv'\n", + "notebook_performance_out = '/home/tigergraph/GraphML/output/notebook_' + config[\"job_id\"] + '.csv'\n", + "algorithm_performance_out = '/home/tigergraph/GraphML/output/algorithm_' + config[\"job_id\"] + '.csv'\n", "\n", "# notebook_header = [\"notebook_id\", \"is_failure\", \"host_cpu_usage\", \"notebook_memory\", \"execution_time\", \"host_memory\", \"error_message\", \"cron_job_id\"]\n", "\n", @@ -629,11 +629,11 @@ " \n", " print ('Executing notebook: ' + nb_file)\n", " \n", - " root = '/home/tigergraph/GML/graph-ml-notebooks/'\n", + " root = '/home/tigergraph/GraphML/'\n", " \n", " nb_file = nb_file.replace(\"./\", root)\n", " \n", - " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GML/graph-ml-notebooks/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\"))\n", + " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\"))\n", " print (cmd)\n", " \n", " start_time = time.time()\n", From 81ac8d917c6be9313000301a4e9dce1068d6f093 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Thu, 5 Jan 2023 22:23:26 -0800 Subject: [PATCH 17/62] fix: notebook path --- algos/centrality.ipynb | 8 +++--- algos/classification.ipynb | 10 +++---- algos/community.ipynb | 8 +++--- algos/embedding.ipynb | 4 +-- algos/pathfinding.ipynb | 6 ++-- algos/similarity.ipynb | 6 ++-- algos/topologicalLinkPrediction.ipynb | 10 +++---- regression/regression.ipynb | 41 +++++---------------------- 8 files changed, 33 insertions(+), 60 deletions(-) diff --git a/algos/centrality.ipynb b/algos/centrality.ipynb index 8b2c961..fe5aae2 100644 --- a/algos/centrality.ipynb +++ b/algos/centrality.ipynb @@ -458,7 +458,7 @@ "\n", "nb_id = \"algos_centrality.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -868,7 +868,7 @@ "\n", "nb_id = \"algos_centrality.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -1284,7 +1284,7 @@ "\n", "nb_id = \"algos_centrality.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -1726,7 +1726,7 @@ "\n", "nb_id = \"algos_centrality.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", diff --git a/algos/classification.ipynb b/algos/classification.ipynb index e2ee052..205c5e4 100644 --- a/algos/classification.ipynb +++ b/algos/classification.ipynb @@ -398,7 +398,7 @@ "\n", "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -572,7 +572,7 @@ "\n", "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -779,7 +779,7 @@ "\n", "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -1133,7 +1133,7 @@ "\n", "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -1382,7 +1382,7 @@ "\n", "nb_id = \"algos_classification.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", diff --git a/algos/community.ipynb b/algos/community.ipynb index 305dfc3..3af3a4a 100644 --- a/algos/community.ipynb +++ b/algos/community.ipynb @@ -374,7 +374,7 @@ "\n", "nb_id = \"algos_community.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -824,7 +824,7 @@ "\n", "nb_id = \"algos_community.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -1308,7 +1308,7 @@ "\n", "nb_id = \"algos_community.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -1770,7 +1770,7 @@ "\n", "nb_id = \"algos_community.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", diff --git a/algos/embedding.ipynb b/algos/embedding.ipynb index 0247221..f2fd0a5 100644 --- a/algos/embedding.ipynb +++ b/algos/embedding.ipynb @@ -223,7 +223,7 @@ "\n", "nb_id = \"algos_embedding.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -347,7 +347,7 @@ "\n", "nb_id = \"algos_embedding.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", diff --git a/algos/pathfinding.ipynb b/algos/pathfinding.ipynb index 533ed3b..5a1a1cd 100644 --- a/algos/pathfinding.ipynb +++ b/algos/pathfinding.ipynb @@ -345,7 +345,7 @@ "\n", "nb_id = \"algos_pathfinding.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -483,7 +483,7 @@ "\n", "nb_id = \"algos_pathfinding.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -629,7 +629,7 @@ "\n", "nb_id = \"algos_pathfinding.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", diff --git a/algos/similarity.ipynb b/algos/similarity.ipynb index 94a3ef3..f731eb5 100644 --- a/algos/similarity.ipynb +++ b/algos/similarity.ipynb @@ -357,7 +357,7 @@ "\n", "nb_id = \"algos_similarity.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -553,7 +553,7 @@ "\n", "nb_id = \"algos_similarity.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -764,7 +764,7 @@ "\n", "nb_id = \"algos_similarity.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", diff --git a/algos/topologicalLinkPrediction.ipynb b/algos/topologicalLinkPrediction.ipynb index a1d40bf..b25cc7e 100644 --- a/algos/topologicalLinkPrediction.ipynb +++ b/algos/topologicalLinkPrediction.ipynb @@ -359,7 +359,7 @@ "\n", "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -531,7 +531,7 @@ "\n", "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -703,7 +703,7 @@ "\n", "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -875,7 +875,7 @@ "\n", "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", @@ -1049,7 +1049,7 @@ "\n", "nb_id = \"algos_topologicalLinkPrediction.ipynb_\" + config[\"job_id\"]\n", "\n", - "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no errors\", nb_id]\n", + "data = [algo_id, \"false\" ,cpu_usage, algo_memory, execution_time, host_memory, \"3.8\", \"no error\", nb_id]\n", "\n", "with open(algo_performance_out, mode='a+', encoding='utf-8') as f:\n", " writer = csv.writer(f) \n", diff --git a/regression/regression.ipynb b/regression/regression.ipynb index fce35ba..e259ef6 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -2,37 +2,10 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "cc354491-c629-47b3-a7d6-b4b5060409de", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/gcn_link_prediction.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/gcn_node_classification.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/GNNs/PyG/hgat_node_classification.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/GNNs/Spektral/gcn_node_classification.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL/gcn_node_classification.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/GNNs/DGL/rgcn_node_classification.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/topologicalLinkPrediction.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/embedding.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/classification.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/similarity.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/centrality.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/community.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/algos/pathfinding.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/applications/recommendation/recommendation.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/applications/fraud_detection/fraud_detection.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/basics/gsql_102.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/basics/datasets.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/basics/pyTigergraph_101.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/basics/feature_engineering.ipynb\n", - "/home/tigergraph/GML/graph-ml-notebooks/basics/gsql_101.ipynb\n" - ] - } - ], + "outputs": [], "source": [ "import os\n", "\n", @@ -633,7 +606,7 @@ " \n", " nb_file = nb_file.replace(\"./\", root)\n", " \n", - " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\"))\n", + " cmd = 'cd {} && jupyter nbconvert --to html --execute {} --output-dir=/home/tigergraph/GraphML/output/{}'.format(os.path.dirname(nb_file), os.path.basename(nb_file), nb_file.replace(\"/home/tigergraph/GraphML/\", \"\"))\n", " print (cmd)\n", " \n", " start_time = time.time()\n", @@ -663,7 +636,7 @@ " \n", " print ('execution time: ' + str(execution_time) + ' seconds\\n')\n", " \n", - " nb_file = nb_file.replace(\"/home/tigergraph/GML/graph-ml-notebooks/\", \"\")\n", + " nb_file = nb_file.replace(\"/home/tigergraph/GraphML/\", \"\")\n", " \n", " nb_file = nb_file.replace(\"/\", \"_\")\n", " \n", @@ -801,7 +774,7 @@ "metadata": {}, "outputs": [], "source": [ - "pyTigergraph_statistic_out = '/home/tigergraph/GML/graph-ml-notebooks/output/pytigergraph_' + config[\"job_id\"] + '.csv' \n", + "pyTigergraph_statistic_out = '/home/tigergraph/GraphML/output/pytigergraph_' + config[\"job_id\"] + '.csv' \n", "os.makedirs(os.path.dirname(pyTigergraph_statistic_out), exist_ok=True)" ] }, @@ -889,8 +862,8 @@ "outputs": [], "source": [ "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/notebook_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/notebook/\n", - "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/algorithm_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/notebook/\n", - "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/pyTigerGraph_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/notebook/" + "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/algorithm_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/algorithm/\n", + "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/pyTigerGraph_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/pyTigergraph/" ] } ], From eea25413c4e7c24548dd73e319fbf2fea90c3243 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Fri, 6 Jan 2023 13:38:04 -0800 Subject: [PATCH 18/62] fix: fix the typo uploading pytigergraph.csv to server --- regression/regression.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index e259ef6..f35d662 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -863,7 +863,7 @@ "source": [ "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/notebook_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/notebook/\n", "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/algorithm_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/algorithm/\n", - "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/pyTigerGraph_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/pyTigergraph/" + "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/pytigerGraph_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/pyTigergraph/" ] } ], From b2ed3c0e58c1cb92a3ea71e0386ccd005a899941 Mon Sep 17 00:00:00 2001 From: kbzhoulu Date: Fri, 6 Jan 2023 13:40:44 -0800 Subject: [PATCH 19/62] fix: fix the typo uploading pytigergraph.csv to server --- regression/regression.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression/regression.ipynb b/regression/regression.ipynb index f35d662..ea6186d 100644 --- a/regression/regression.ipynb +++ b/regression/regression.ipynb @@ -863,7 +863,7 @@ "source": [ "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/notebook_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/notebook/\n", "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/algorithm_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/algorithm/\n", - "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/pytigerGraph_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/pyTigergraph/" + "!curl --insecure --user graphsql:graphsql -T /home/tigergraph/GraphML/output/pytigergraph_* sftp://192.168.99.219/home/graphsql/app-e2e/workspace/mlwb_regression_cron_trigger/monitoring_metrics/pyTigergraph/" ] } ], From e6658f745a3949b31632183f62b2f52d4e7eff91 Mon Sep 17 00:00:00 2001 From: Bill Shi Date: Fri, 13 Jan 2023 05:37:15 +0000 Subject: [PATCH 20/62] fix(pyTG_101): getVer error when DB has nontypical version --- basics/pyTigergraph_101.ipynb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/basics/pyTigergraph_101.ipynb b/basics/pyTigergraph_101.ipynb index bec60eb..844ab85 100644 --- a/basics/pyTigergraph_101.ipynb +++ b/basics/pyTigergraph_101.ipynb @@ -2007,7 +2007,10 @@ "source": [ "print(json.dumps(conn.getVersion(), indent=2))\n", "print(\"-----------------\")\n", - "print(json.dumps(conn.getVer(\"gle\"), indent=2))" + "try:\n", + " print(json.dumps(conn.getVer(\"gle\"), indent=2))\n", + "except AttributeError:\n", + " print(\"Unknown version format\")" ] }, { @@ -2083,7 +2086,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.9" + "version": "3.9.13" }, "vscode": { "interpreter": { From 123cf9bb87a429411c80f860670023b01ba99adc Mon Sep 17 00:00:00 2001 From: Bill Shi Date: Wed, 18 Jan 2023 09:32:30 -0800 Subject: [PATCH 21/62] feat(basics): add template query --- basics/template_query.ipynb | 426 ++++++++++++++++++++++++++++++++++++ 1 file changed, 426 insertions(+) create mode 100644 basics/template_query.ipynb diff --git a/basics/template_query.ipynb b/basics/template_query.ipynb new file mode 100644 index 0000000..968d847 --- /dev/null +++ b/basics/template_query.ipynb @@ -0,0 +1,426 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f72bea19-a48c-4a6c-96e5-1e5c98646be2", + "metadata": {}, + "source": [ + "# Template Query" + ] + }, + { + "cell_type": "markdown", + "id": "aaf7b111-39a2-4a8e-8d6d-0c8079322feb", + "metadata": {}, + "source": [ + "This notebook demostrates the use of [template query](https://docs.tigergraph.com/graph-ml/current/using-an-algorithm/#_packaged_template_queries), which is a new feature since TigerGraph Database `3.9` and pyTigerGraph `1.3`. That means, this notebook only runs with DB 3.9 and above and pyTigerGraph 1.3 and above.\n", + "\n", + "## What are template queries?\n", + "\n", + "Template queries, in this context, are the \"static\" version of the [graph algorithms](https://docs.tigergraph.com/graph-ml/current/intro/). \"Static\" means that a query is bound to the vertex type(s) and/or edge type(s) given to a query as input parameters at installation time. If you change the input vertex or edge types later, a new query will be generated and installed. \n", + "\n", + "## How current user experience is impacted?\n", + "\n", + "As a user, there is not much difference in calling a template graph algorithm (See below for examples). You will only notice the query installation when you change input vertex or edge types. Changing other query parameters such as `iterations` won't generate a new query. \n", + "\n", + "## What is the benefit of using template queries?\n", + "\n", + "As a template query is bound to certain vertex and edge types, it runs faster than the \"schema-less\" version. Therefore, it is useful when speed is the main concern. However, there is a tradeoff of flexibility when you are experimenting with vertex and edge types. \n", + "\n", + "## Example" + ] + }, + { + "cell_type": "markdown", + "id": "c1635df7-998a-4649-aba2-6ee00a973d12", + "metadata": {}, + "source": [ + "### Connection to Database\n", + "\n", + "The `TigerGraphConnection` class represents a connection to the TigerGraph database. Under the hood, it stores the necessary information to communicate with the database. It is able to perform quite a few database tasks. Please see its [documentation](https://docs.tigergraph.com/pytigergraph/current/intro/) for details.\n", + "\n", + "To connect your database, modify the `config.json` file accompanying this notebook. Set the value of `getToken` based on whether token auth is enabled for your database. Token auth is always enabled for tgcloud databases. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "8b5dd915-2645-4e4d-ae16-33ed63c1a02d", + "metadata": {}, + "outputs": [], + "source": [ + "from pyTigerGraph import TigerGraphConnection\n", + "import json\n", + "\n", + "# Read in DB configs\n", + "with open('../config.json', \"r\") as config_file:\n", + " config = json.load(config_file)\n", + " \n", + "conn = TigerGraphConnection(\n", + " host=config[\"host\"],\n", + " username=config[\"username\"],\n", + " password=config[\"password\"]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "84febfb9-ff4d-4d46-8a45-f8ad6e59c7ce", + "metadata": {}, + "source": [ + "### Ingest Data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ddd2fa65-40a0-44b2-9335-3d109de1239f", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a5b94aab37674b679946c767e851a008", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading: 0%| | 0/286678171 [00:00 Date: Mon, 23 Jan 2023 09:15:35 -0800 Subject: [PATCH 22/62] fix(topoLinkPred): add print for testcase --- algos/topologicalLinkPrediction.ipynb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/algos/topologicalLinkPrediction.ipynb b/algos/topologicalLinkPrediction.ipynb index b25cc7e..9b57aed 100644 --- a/algos/topologicalLinkPrediction.ipynb +++ b/algos/topologicalLinkPrediction.ipynb @@ -1066,6 +1066,16 @@ "results = feat.runAlgorithm(\"tg_total_neighbors\", params=params)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "13662066", + "metadata": {}, + "outputs": [], + "source": [ + "print(results)" + ] + }, { "cell_type": "markdown", "id": "9281c0ae-ef03-4e5a-98d6-02802f6afbd2", From 137db6b8e6a530fb441883dfdcddae545517b6ba Mon Sep 17 00:00:00 2001 From: Bill Shi Date: Mon, 23 Jan 2023 09:33:31 -0800 Subject: [PATCH 23/62] fix(template_query): note some template queries are missing --- basics/template_query.ipynb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/basics/template_query.ipynb b/basics/template_query.ipynb index 968d847..b453c88 100644 --- a/basics/template_query.ipynb +++ b/basics/template_query.ipynb @@ -9,6 +9,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "id": "aaf7b111-39a2-4a8e-8d6d-0c8079322feb", "metadata": {}, @@ -19,6 +20,8 @@ "\n", "Template queries, in this context, are the \"static\" version of the [graph algorithms](https://docs.tigergraph.com/graph-ml/current/intro/). \"Static\" means that a query is bound to the vertex type(s) and/or edge type(s) given to a query as input parameters at installation time. If you change the input vertex or edge types later, a new query will be generated and installed. \n", "\n", + "But note not every graph algorithm has a template query currently. More template queries will be added in future versions.\n", + "\n", "## How current user experience is impacted?\n", "\n", "As a user, there is not much difference in calling a template graph algorithm (See below for examples). You will only notice the query installation when you change input vertex or edge types. Changing other query parameters such as `iterations` won't generate a new query. \n", @@ -404,7 +407,7 @@ ], "metadata": { "kernelspec": { - "display_name": "PyTorch", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -418,7 +421,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.9.6 (default, Oct 18 2022, 12:41:40) \n[Clang 14.0.0 (clang-1400.0.29.202)]" + }, + "vscode": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + } } }, "nbformat": 4, From ddde456825414a277e56ff1fe3f76b9d1f5172e4 Mon Sep 17 00:00:00 2001 From: Bill Shi Date: Mon, 23 Jan 2023 16:22:54 -0800 Subject: [PATCH 24/62] fix(app): add print in fraud for testing --- applications/fraud_detection/fraud_detection.ipynb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/applications/fraud_detection/fraud_detection.ipynb b/applications/fraud_detection/fraud_detection.ipynb index ce81505..718d5e1 100644 --- a/applications/fraud_detection/fraud_detection.ipynb +++ b/applications/fraud_detection/fraud_detection.ipynb @@ -1509,6 +1509,18 @@ "epoch_bar.close()" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "da6f3e12", + "metadata": {}, + "outputs": [], + "source": [ + "# Print the final performance metric for the GNN model\n", + "print(\"Accuracy {:.4f}, Precision {:.4f}, Recall {:.4f}\".format(\n", + " metrics[\"acc_gnn_val\"][-1], metrics[\"prec_gnn_val\"][-1], metrics[\"rec_gnn_val\"][-1]))" + ] + }, { "cell_type": "code", "execution_count": 30, From 47d77d41f1694eadf41df2305408af5830aab8a6 Mon Sep 17 00:00:00 2001 From: Bill Shi Date: Thu, 26 Jan 2023 12:45:22 -0800 Subject: [PATCH 25/62] chore(basics): save template query for later --- basics/template_query.ipynb | 434 ------------------------------------ 1 file changed, 434 deletions(-) delete mode 100644 basics/template_query.ipynb diff --git a/basics/template_query.ipynb b/basics/template_query.ipynb deleted file mode 100644 index b453c88..0000000 --- a/basics/template_query.ipynb +++ /dev/null @@ -1,434 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "f72bea19-a48c-4a6c-96e5-1e5c98646be2", - "metadata": {}, - "source": [ - "# Template Query" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "aaf7b111-39a2-4a8e-8d6d-0c8079322feb", - "metadata": {}, - "source": [ - "This notebook demostrates the use of [template query](https://docs.tigergraph.com/graph-ml/current/using-an-algorithm/#_packaged_template_queries), which is a new feature since TigerGraph Database `3.9` and pyTigerGraph `1.3`. That means, this notebook only runs with DB 3.9 and above and pyTigerGraph 1.3 and above.\n", - "\n", - "## What are template queries?\n", - "\n", - "Template queries, in this context, are the \"static\" version of the [graph algorithms](https://docs.tigergraph.com/graph-ml/current/intro/). \"Static\" means that a query is bound to the vertex type(s) and/or edge type(s) given to a query as input parameters at installation time. If you change the input vertex or edge types later, a new query will be generated and installed. \n", - "\n", - "But note not every graph algorithm has a template query currently. More template queries will be added in future versions.\n", - "\n", - "## How current user experience is impacted?\n", - "\n", - "As a user, there is not much difference in calling a template graph algorithm (See below for examples). You will only notice the query installation when you change input vertex or edge types. Changing other query parameters such as `iterations` won't generate a new query. \n", - "\n", - "## What is the benefit of using template queries?\n", - "\n", - "As a template query is bound to certain vertex and edge types, it runs faster than the \"schema-less\" version. Therefore, it is useful when speed is the main concern. However, there is a tradeoff of flexibility when you are experimenting with vertex and edge types. \n", - "\n", - "## Example" - ] - }, - { - "cell_type": "markdown", - "id": "c1635df7-998a-4649-aba2-6ee00a973d12", - "metadata": {}, - "source": [ - "### Connection to Database\n", - "\n", - "The `TigerGraphConnection` class represents a connection to the TigerGraph database. Under the hood, it stores the necessary information to communicate with the database. It is able to perform quite a few database tasks. Please see its [documentation](https://docs.tigergraph.com/pytigergraph/current/intro/) for details.\n", - "\n", - "To connect your database, modify the `config.json` file accompanying this notebook. Set the value of `getToken` based on whether token auth is enabled for your database. Token auth is always enabled for tgcloud databases. " - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "8b5dd915-2645-4e4d-ae16-33ed63c1a02d", - "metadata": {}, - "outputs": [], - "source": [ - "from pyTigerGraph import TigerGraphConnection\n", - "import json\n", - "\n", - "# Read in DB configs\n", - "with open('../config.json', \"r\") as config_file:\n", - " config = json.load(config_file)\n", - " \n", - "conn = TigerGraphConnection(\n", - " host=config[\"host\"],\n", - " username=config[\"username\"],\n", - " password=config[\"password\"]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "84febfb9-ff4d-4d46-8a45-f8ad6e59c7ce", - "metadata": {}, - "source": [ - "### Ingest Data" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "ddd2fa65-40a0-44b2-9335-3d109de1239f", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a5b94aab37674b679946c767e851a008", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Downloading: 0%| | 0/286678171 [00:00 Date: Sun, 12 Mar 2023 19:35:35 -0500 Subject: [PATCH 26/62] feat(environments): first commit --- environments/tg-tensorflow-cpu | 21 +++++++++++++++++++++ environments/tg-torch-cpu.yml | 30 ++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 environments/tg-tensorflow-cpu create mode 100644 environments/tg-torch-cpu.yml diff --git a/environments/tg-tensorflow-cpu b/environments/tg-tensorflow-cpu new file mode 100644 index 0000000..dc1d1fd --- /dev/null +++ b/environments/tg-tensorflow-cpu @@ -0,0 +1,21 @@ +name: tigergraph-tensorflow-cpu +channels: + - conda-forge +dependencies: + - python=3.9 + - ipywidgets=8.0.1 + - ipykernel=6.15.2 + - tqdm=4.64.1 + - matplotlib=3.5.3 + - seaborn=0.12.0 + - numpy=1.23.0 + - scipy=1.9.1 + - pandas=1.5.0 + - scikit-learn=1.1.2 + - ipycytoscape=1.3.3 + - pip + - pip: + - https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - spektral==1.2.0 + - xgboost==1.7.1 + - umap-learn==0.5.3 diff --git a/environments/tg-torch-cpu.yml b/environments/tg-torch-cpu.yml new file mode 100644 index 0000000..67e5d68 --- /dev/null +++ b/environments/tg-torch-cpu.yml @@ -0,0 +1,30 @@ +name: tigergraph-torch-cpu +channels: + - pyg + - pytorch + - dglteam + - conda-forge +dependencies: + - python=3.9 + - conda + - pip + - matplotlib-base + - numpy + - scipy + - pandas + - pytorch + - cpuonly + - pyg + - dgl + - tqdm=4.64.1 + - matplotlib=3.5.3 + - seaborn=0.12.0 + - scikit-learn=1.1.2 + - ipycytoscape=1.3.3 + - pip: + - pyTigerGraph + - tigergraph-mlworkbench + - class-resolver==0.3.9 + - kafka-python==2.0.2 + - xgboost==1.7.1 + - umap-learn==0.5.3 From d185fb3e456bdcea5d965f61edfe2fa2ea393281 Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Sun, 12 Mar 2023 20:03:04 -0500 Subject: [PATCH 27/62] fix(tensorflow env): add yml file extension --- environments/{tg-tensorflow-cpu => tg-tensorflow-cpu.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename environments/{tg-tensorflow-cpu => tg-tensorflow-cpu.yml} (100%) diff --git a/environments/tg-tensorflow-cpu b/environments/tg-tensorflow-cpu.yml similarity index 100% rename from environments/tg-tensorflow-cpu rename to environments/tg-tensorflow-cpu.yml From b877ba3e1d7f42d1f53cc675c83787f0bd11f554 Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Sun, 12 Mar 2023 20:59:41 -0500 Subject: [PATCH 28/62] fix(torch env): add ipykernel --- environments/tg-torch-cpu.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/environments/tg-torch-cpu.yml b/environments/tg-torch-cpu.yml index 67e5d68..36d3c04 100644 --- a/environments/tg-torch-cpu.yml +++ b/environments/tg-torch-cpu.yml @@ -9,6 +9,7 @@ dependencies: - conda - pip - matplotlib-base + - ipykernel=6.15.2 - numpy - scipy - pandas From e02cad332059504da8e27af43ceffb8aa2af044d Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Thu, 12 Jan 2023 09:04:15 -0600 Subject: [PATCH 29/62] feat(fastrp_embedding): add fast rp embeddings to xgboost --- .../fraud_detection/fraud_detection.ipynb | 886 ++++++++++++------ 1 file changed, 613 insertions(+), 273 deletions(-) diff --git a/applications/fraud_detection/fraud_detection.ipynb b/applications/fraud_detection/fraud_detection.ipynb index 718d5e1..97f017d 100644 --- a/applications/fraud_detection/fraud_detection.ipynb +++ b/applications/fraud_detection/fraud_detection.ipynb @@ -3,11 +3,56 @@ { "cell_type": "markdown", "id": "4cbb8325-7d5b-4e6d-aaf9-040961c7fa4b", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "# Fraud Detection with Ethereum Data" ] }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e7404e6a-d7c4-4328-99fe-5ca1eb5ee1b8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found existing installation: pyTigerGraph 1.2.6\n", + "Uninstalling pyTigerGraph-1.2.6:\n", + " Successfully uninstalled pyTigerGraph-1.2.6\n", + "Collecting git+https://github.com/tigergraph/pyTigerGraph.git\n", + " Cloning https://github.com/tigergraph/pyTigerGraph.git to /tmp/pip-req-build-k9kw9v5y\n", + " Running command git clone --filter=blob:none --quiet https://github.com/tigergraph/pyTigerGraph.git /tmp/pip-req-build-k9kw9v5y\n", + " Resolved https://github.com/tigergraph/pyTigerGraph.git to commit 5e6fa285aecf6d06b2b8ad17947a85cb7b9228b5\n", + " Installing build dependencies ... \u001b[?25ldone\n", + "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", + "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25hRequirement already satisfied: requests in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (2.28.1)\n", + "Requirement already satisfied: validators in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (0.20.0)\n", + "Requirement already satisfied: pyTigerDriver in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (1.0.15)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2.1.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (3.4)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (1.26.11)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2022.9.24)\n", + "Requirement already satisfied: decorator>=3.4.0 in /opt/conda/lib/python3.9/site-packages (from validators->pyTigerGraph==1.2.6) (5.1.1)\n", + "Building wheels for collected packages: pyTigerGraph\n", + " Building wheel for pyTigerGraph (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for pyTigerGraph: filename=pyTigerGraph-1.2.6-py3-none-any.whl size=136853 sha256=740d05d0236d3c1fe1cf8833ce61ccbfbf800aa568671b3318082852b1c7ee54\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-lat49em3/wheels/cc/41/7a/6b8eee74c439c99b3cdb01357d4b426b9a18e51e9571b28b18\n", + "Successfully built pyTigerGraph\n", + "Installing collected packages: pyTigerGraph\n", + "Successfully installed pyTigerGraph-1.2.6\n" + ] + } + ], + "source": [ + "!pip uninstall pyTigerGraph -y\n", + "!pip install git+https://github.com/tigergraph/pyTigerGraph.git --no-cache" + ] + }, { "cell_type": "markdown", "id": "2cdc9404-be58-401a-be8a-3dca48822d65", @@ -56,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "21d25e93-beaa-4b28-aa49-1e96f3f9a667", "metadata": {}, "outputs": [], @@ -85,48 +130,18 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "abb4d783", "metadata": {}, "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a6f3b6c8026846b19d111bfeef5a09d6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Downloading: 0%| | 0/1950077 [00:00\n", " 0\n", " 0x903bb9cd3a276d8f18fa6efed49b9bc52ccf06e5\n", - " 741.63861\n", + " 741.66101\n", " \n", " \n", " 1\n", " 0x47779ea9849c7eec04197b21f9554931b8fcd5f4\n", - " 607.40045\n", + " 607.41815\n", " \n", " \n", " 2\n", " 0xbfa82fbe0e66d8e2b7dcc16328db9ecd70533d13\n", - " 212.12326\n", + " 212.12238\n", " \n", " \n", " 3\n", " 0x3cbd2e6143f057bd49ffb4c7058217a5900c35d3\n", - " 179.57898\n", + " 179.57887\n", " \n", " \n", " 4\n", " 0x5df65e16d6ec1a8090ffa11c8185ad372a8786cd\n", - " 173.81105\n", + " 173.81029\n", " \n", " \n", "\n", @@ -279,14 +286,14 @@ ], "text/plain": [ " Vertex_ID score\n", - "0 0x903bb9cd3a276d8f18fa6efed49b9bc52ccf06e5 741.63861\n", - "1 0x47779ea9849c7eec04197b21f9554931b8fcd5f4 607.40045\n", - "2 0xbfa82fbe0e66d8e2b7dcc16328db9ecd70533d13 212.12326\n", - "3 0x3cbd2e6143f057bd49ffb4c7058217a5900c35d3 179.57898\n", - "4 0x5df65e16d6ec1a8090ffa11c8185ad372a8786cd 173.81105" + "0 0x903bb9cd3a276d8f18fa6efed49b9bc52ccf06e5 741.66101\n", + "1 0x47779ea9849c7eec04197b21f9554931b8fcd5f4 607.41815\n", + "2 0xbfa82fbe0e66d8e2b7dcc16328db9ecd70533d13 212.12238\n", + "3 0x3cbd2e6143f057bd49ffb4c7058217a5900c35d3 179.57887\n", + "4 0x5df65e16d6ec1a8090ffa11c8185ad372a8786cd 173.81029" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -315,26 +322,17 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "id": "8faf664a-2d7a-4246-b67e-aaf9ff213727", "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installing and optimizing the queries, it might take a minute...\n", - "Queries installed successfully\n", - "Default parameters are: None\n" - ] - }, { "data": { "text/plain": [ "[{'Status': 'Degrees computed Successfully'}]" ] }, - "execution_count": 9, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -359,15 +357,6 @@ "id": "f0cb6260-6b61-46fe-85de-86e6597fc35f", "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installing and optimizing the queries, it might take a minute...\n", - "Queries installed successfully\n", - "Default parameters are: None\n" - ] - }, { "data": { "text/plain": [ @@ -385,6 +374,52 @@ "f.runAlgorithm(\"amounts\", custom_query=True)" ] }, + { + "cell_type": "markdown", + "id": "8e972b4f", + "metadata": {}, + "source": [ + "### FastRP Embeddings" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "12299281-6a94-48f7-a33d-67f88d16c83b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'@@embedding_dim_map': {'default': {'min_dim': 0,\n", + " 'max_dim': 128,\n", + " 'weight': 1}}},\n", + " {'sample_verts': []}]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "params={\"v_type\": [\"Account\"],\n", + " \"e_type\": [\"Transaction\", \"reverse_Transaction\"],\n", + " \"output_v_type\": [\"Account\"],\n", + " \"iteration_weights\": \"1,2,4\",\n", + " \"beta\": -0.1,\n", + " \"embedding_dimension\": 128,\n", + " \"embedding_dim_map\": [],\n", + " \"default_length\": 128,\n", + " \"sampling_constant\": 3,\n", + " \"random_seed\": 42,\n", + " \"component_attribute\": \"\",\n", + " \"result_attribute\": \"embedding\",\n", + " \"choose_k\": 0}\n", + "\n", + "f.runAlgorithm(\"tg_fastRP\", params=params)" + ] + }, { "cell_type": "markdown", "id": "41029516-5e7b-41cf-925c-a1034319c118", @@ -436,16 +471,7 @@ "execution_count": 11, "id": "b7fad407-8ce1-4b0d-b5a2-448d0f861e34", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installing and optimizing queries. It might take a minute if this is the first time you use this loader.\n", - "Query installation finished.\n" - ] - } - ], + "outputs": [], "source": [ "split = conn.gds.vertexSplitter(is_training=0.8, is_validation=0.2)" ] @@ -487,40 +513,55 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 1, + "id": "b8cf8c49-17c6-414a-905d-c76a8b6e9fdd", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "def process_embedding(df):\n", + " def helper(x):\n", + " try: # some unconnected vertices will not have a valid embedding, fill with 0s if that is the case.\n", + " return np.array(x[\"embedding\"].split(\" \")[:-1], dtype=np.float64)\n", + " except:\n", + " return np.zeros(128)\n", + " df[\"embedding\"] = df.apply(lambda x: helper(x), axis=1)\n", + " emb_df = pd.DataFrame(df[\"embedding\"].tolist()).add_prefix(\"emb\")\n", + " df.drop(columns=[\"embedding\"], inplace=True)\n", + " df = df.join(emb_df)\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 14, "id": "e0b6895e-78eb-40e3-9e41-8774cf5c58df", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installing and optimizing queries. It might take a minute if this is the first time you use this loader.\n", - "Query installation finished.\n" - ] - } - ], + "outputs": [], "source": [ "train_loader = conn.gds.vertexLoader(\n", " attributes=[\"in_degree\",\"out_degree\",\"send_amount\",\"send_min\",\n", - " \"recv_amount\",\"recv_min\",\"pagerank\", \"is_fraud\"],\n", + " \"recv_amount\",\"recv_min\",\"pagerank\", \"is_fraud\", \"embedding\"],\n", " num_batches=1,\n", - " filter_by=\"is_training\"\n", + " filter_by=\"is_training\",\n", + " callback_fn = lambda x: process_embedding(x)\n", ")" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "id": "41299632-b660-49e6-98a5-f6536733757c", "metadata": {}, "outputs": [], "source": [ "valid_loader = conn.gds.vertexLoader(\n", " attributes=[\"in_degree\",\"out_degree\",\"send_amount\",\"send_min\",\n", - " \"recv_amount\",\"recv_min\",\"pagerank\", \"is_fraud\"],\n", + " \"recv_amount\",\"recv_min\",\"pagerank\", \"is_fraud\", \"embedding\"],\n", " num_batches=1,\n", - " filter_by=\"is_validation\"\n", + " filter_by=\"is_validation\",\n", + " callback_fn = lambda x: process_embedding(x)\n", ")" ] }, @@ -534,7 +575,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "id": "20da4479-e3bd-42af-bff6-77bb14ed9fe3", "metadata": {}, "outputs": [ @@ -568,24 +609,24 @@ " recv_min\n", " pagerank\n", " is_fraud\n", + " emb0\n", + " ...\n", + " emb118\n", + " emb119\n", + " emb120\n", + " emb121\n", + " emb122\n", + " emb123\n", + " emb124\n", + " emb125\n", + " emb126\n", + " emb127\n", " \n", " \n", " \n", " \n", " 0\n", - " 167772160\n", - " 1\n", - " 1\n", - " 0.51914\n", - " 0.51914\n", - " 0.52000\n", - " 0.52000\n", - " 0.155100\n", - " 1\n", - " \n", - " \n", - " 1\n", - " 167772161\n", + " 234881025\n", " 8\n", " 1\n", " 0.19912\n", @@ -594,10 +635,22 @@ " 0.00426\n", " 1.051000\n", " 1\n", + " -0.047130\n", + " ...\n", + " 0.045751\n", + " 0.009796\n", + " 0.246114\n", + " 0.135275\n", + " 0.188289\n", + " 0.145758\n", + " 0.163340\n", + " -0.540732\n", + " -0.009876\n", + " 0.114094\n", " \n", " \n", - " 2\n", - " 167772162\n", + " 1\n", + " 234881026\n", " 5\n", " 2\n", " 10.69120\n", @@ -606,10 +659,22 @@ " 0.50000\n", " 0.667945\n", " 1\n", + " -0.056560\n", + " ...\n", + " -0.335258\n", + " -0.067109\n", + " -0.294415\n", + " -0.028373\n", + " -0.181596\n", + " -0.340700\n", + " 0.238586\n", + " -0.199453\n", + " -0.000079\n", + " 0.008715\n", " \n", " \n", - " 3\n", - " 167772163\n", + " 2\n", + " 234881027\n", " 9\n", " 2\n", " 10.77360\n", @@ -618,10 +683,22 @@ " 0.04306\n", " 0.985464\n", " 1\n", + " 0.174347\n", + " ...\n", + " -0.112702\n", + " -0.049264\n", + " 0.064580\n", + " 0.165827\n", + " -0.235902\n", + " -0.225494\n", + " -0.329536\n", + " -0.065534\n", + " -0.223186\n", + " 0.042215\n", " \n", " \n", - " 4\n", - " 167772164\n", + " 3\n", + " 234881028\n", " 10\n", " 9\n", " 441.30000\n", @@ -630,28 +707,74 @@ " 0.37828\n", " 0.867988\n", " 1\n", + " 0.170441\n", + " ...\n", + " 0.166607\n", + " -0.230478\n", + " 0.456073\n", + " 0.023082\n", + " 0.065435\n", + " 0.134760\n", + " -0.182918\n", + " 0.130709\n", + " 0.204439\n", + " 0.003432\n", + " \n", + " \n", + " 4\n", + " 234881029\n", + " 1\n", + " 1\n", + " 6.99000\n", + " 6.99000\n", + " 7.00000\n", + " 7.00000\n", + " 0.277500\n", + " 1\n", + " 0.000000\n", + " ...\n", + " 0.190411\n", + " 0.190411\n", + " 0.060774\n", + " 0.000000\n", + " 0.060774\n", + " 0.000000\n", + " -0.190411\n", + " 0.251185\n", + " 0.000000\n", + " -0.251185\n", " \n", " \n", "\n", + "

5 rows × 137 columns

\n", "" ], "text/plain": [ " vid in_degree out_degree send_amount send_min recv_amount \\\n", - "0 167772160 1 1 0.51914 0.51914 0.52000 \n", - "1 167772161 8 1 0.19912 0.19912 0.71332 \n", - "2 167772162 5 2 10.69120 3.69118 9.99248 \n", - "3 167772163 9 2 10.77360 3.77460 10.67570 \n", - "4 167772164 10 9 441.30000 0.05000 188.48900 \n", + "0 234881025 8 1 0.19912 0.19912 0.71332 \n", + "1 234881026 5 2 10.69120 3.69118 9.99248 \n", + "2 234881027 9 2 10.77360 3.77460 10.67570 \n", + "3 234881028 10 9 441.30000 0.05000 188.48900 \n", + "4 234881029 1 1 6.99000 6.99000 7.00000 \n", "\n", - " recv_min pagerank is_fraud \n", - "0 0.52000 0.155100 1 \n", - "1 0.00426 1.051000 1 \n", - "2 0.50000 0.667945 1 \n", - "3 0.04306 0.985464 1 \n", - "4 0.37828 0.867988 1 " + " recv_min pagerank is_fraud emb0 ... emb118 emb119 emb120 \\\n", + "0 0.00426 1.051000 1 -0.047130 ... 0.045751 0.009796 0.246114 \n", + "1 0.50000 0.667945 1 -0.056560 ... -0.335258 -0.067109 -0.294415 \n", + "2 0.04306 0.985464 1 0.174347 ... -0.112702 -0.049264 0.064580 \n", + "3 0.37828 0.867988 1 0.170441 ... 0.166607 -0.230478 0.456073 \n", + "4 7.00000 0.277500 1 0.000000 ... 0.190411 0.190411 0.060774 \n", + "\n", + " emb121 emb122 emb123 emb124 emb125 emb126 emb127 \n", + "0 0.135275 0.188289 0.145758 0.163340 -0.540732 -0.009876 0.114094 \n", + "1 -0.028373 -0.181596 -0.340700 0.238586 -0.199453 -0.000079 0.008715 \n", + "2 0.165827 -0.235902 -0.225494 -0.329536 -0.065534 -0.223186 0.042215 \n", + "3 0.023082 0.065435 0.134760 -0.182918 0.130709 0.204439 0.003432 \n", + "4 0.000000 0.060774 0.000000 -0.190411 0.251185 0.000000 -0.251185 \n", + "\n", + "[5 rows x 137 columns]" ] }, - "execution_count": 14, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -663,7 +786,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "id": "cb619e88-3c61-4d51-9da8-21e223dbb8ba", "metadata": {}, "outputs": [ @@ -697,90 +820,172 @@ " recv_min\n", " pagerank\n", " is_fraud\n", + " emb0\n", + " ...\n", + " emb118\n", + " emb119\n", + " emb120\n", + " emb121\n", + " emb122\n", + " emb123\n", + " emb124\n", + " emb125\n", + " emb126\n", + " emb127\n", " \n", " \n", " \n", " \n", " 0\n", - " 171966464\n", + " 234881024\n", " 1\n", " 1\n", - " 0.99903\n", - " 0.99903\n", - " 2.00000\n", - " 2.0000\n", - " 0.277500\n", + " 0.51914\n", + " 0.51914\n", + " 0.52000\n", + " 0.52000\n", + " 0.155100\n", " 1\n", + " -0.107753\n", + " ...\n", + " -0.374269\n", + " -0.144818\n", + " -0.134207\n", + " -0.160478\n", + " -0.024463\n", + " 0.171150\n", + " 0.311766\n", + " 0.307944\n", + " -0.247571\n", + " 0.189567\n", " \n", " \n", " 1\n", - " 171966468\n", - " 2\n", - " 1\n", - " 0.00166\n", - " 0.00166\n", - " 17.99820\n", - " 0.9982\n", - " 0.405000\n", + " 234881033\n", + " 9\n", + " 6\n", + " 31.68790\n", + " 0.07000\n", + " 24.90020\n", + " 0.07000\n", + " 1.371310\n", " 1\n", + " -0.125151\n", + " ...\n", + " -0.090309\n", + " 0.323673\n", + " 0.096190\n", + " -0.175554\n", + " -0.273964\n", + " 0.237006\n", + " -0.245389\n", + " -0.067310\n", + " -0.088549\n", + " 0.056987\n", " \n", " \n", " 2\n", - " 171966472\n", - " 15\n", - " 4\n", - " 5.91436\n", - " 0.03230\n", - " 15.57540\n", - " 0.0050\n", - " 1.044210\n", + " 234881039\n", + " 8\n", + " 1\n", + " 39.30500\n", + " 39.30500\n", + " 39.30540\n", + " 0.08309\n", + " 1.170000\n", " 1\n", + " -0.281923\n", + " ...\n", + " 0.000000\n", + " -0.281923\n", + " -0.501023\n", + " -0.219100\n", + " -0.375897\n", + " -0.313074\n", + " -0.187948\n", + " 0.093974\n", + " 0.093974\n", + " -0.281923\n", " \n", " \n", " 3\n", - " 171966479\n", - " 7\n", - " 2\n", - " 1.13103\n", - " 0.31338\n", - " 4.13438\n", - " 0.0015\n", - " 0.592835\n", + " 234881041\n", + " 4\n", " 1\n", + " 7.68433\n", + " 7.68433\n", + " 7.68519\n", + " 0.50000\n", + " 0.445214\n", + " 1\n", + " 0.174309\n", + " ...\n", + " -0.046449\n", + " -0.021162\n", + " 0.058503\n", + " -0.172840\n", + " -0.238037\n", + " 0.183829\n", + " -0.292503\n", + " -0.119214\n", + " 0.102231\n", + " 0.217926\n", " \n", " \n", " 4\n", - " 171966490\n", - " 29\n", - " 3\n", - " 65.11350\n", - " 0.78000\n", - " 36.59950\n", - " 0.1000\n", - " 2.805870\n", + " 234881043\n", + " 2\n", + " 0\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + " 0.00000\n", + " 1.000000\n", " 1\n", + " 0.014363\n", + " ...\n", + " 0.448090\n", + " 0.179457\n", + " 0.054849\n", + " 0.184936\n", + " 0.061575\n", + " -0.015394\n", + " 0.154578\n", + " 0.014534\n", + " -0.151962\n", + " 0.154064\n", " \n", " \n", "\n", + "

5 rows × 137 columns

\n", "" ], "text/plain": [ " vid in_degree out_degree send_amount send_min recv_amount \\\n", - "0 171966464 1 1 0.99903 0.99903 2.00000 \n", - "1 171966468 2 1 0.00166 0.00166 17.99820 \n", - "2 171966472 15 4 5.91436 0.03230 15.57540 \n", - "3 171966479 7 2 1.13103 0.31338 4.13438 \n", - "4 171966490 29 3 65.11350 0.78000 36.59950 \n", + "0 234881024 1 1 0.51914 0.51914 0.52000 \n", + "1 234881033 9 6 31.68790 0.07000 24.90020 \n", + "2 234881039 8 1 39.30500 39.30500 39.30540 \n", + "3 234881041 4 1 7.68433 7.68433 7.68519 \n", + "4 234881043 2 0 0.00000 0.00000 0.00000 \n", + "\n", + " recv_min pagerank is_fraud emb0 ... emb118 emb119 emb120 \\\n", + "0 0.52000 0.155100 1 -0.107753 ... -0.374269 -0.144818 -0.134207 \n", + "1 0.07000 1.371310 1 -0.125151 ... -0.090309 0.323673 0.096190 \n", + "2 0.08309 1.170000 1 -0.281923 ... 0.000000 -0.281923 -0.501023 \n", + "3 0.50000 0.445214 1 0.174309 ... -0.046449 -0.021162 0.058503 \n", + "4 0.00000 1.000000 1 0.014363 ... 0.448090 0.179457 0.054849 \n", + "\n", + " emb121 emb122 emb123 emb124 emb125 emb126 emb127 \n", + "0 -0.160478 -0.024463 0.171150 0.311766 0.307944 -0.247571 0.189567 \n", + "1 -0.175554 -0.273964 0.237006 -0.245389 -0.067310 -0.088549 0.056987 \n", + "2 -0.219100 -0.375897 -0.313074 -0.187948 0.093974 0.093974 -0.281923 \n", + "3 -0.172840 -0.238037 0.183829 -0.292503 -0.119214 0.102231 0.217926 \n", + "4 0.184936 0.061575 -0.015394 0.154578 0.014534 -0.151962 0.154064 \n", "\n", - " recv_min pagerank is_fraud \n", - "0 2.0000 0.277500 1 \n", - "1 0.9982 0.405000 1 \n", - "2 0.0050 1.044210 1 \n", - "3 0.0015 0.592835 1 \n", - "4 0.1000 2.805870 1 " + "[5 rows x 137 columns]" ] }, - "execution_count": 15, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -800,7 +1005,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "id": "62e65f88-fd43-4206-b38e-386a075e107a", "metadata": {}, "outputs": [], @@ -818,12 +1023,12 @@ "id": "a191f817-3fd0-4b22-8b43-d1cc2789bcf4", "metadata": {}, "source": [ - "### Train xgboost model" + "### Train xgboost model - No Embeddings" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "id": "1d921d2c-af32-40ac-9a5c-3d6d1a83ad53", "metadata": {}, "outputs": [ @@ -833,37 +1038,37 @@ "
XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n",
        "              colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,\n",
        "              early_stopping_rounds=None, enable_categorical=False,\n",
-       "              eval_metric=None, gamma=10, gpu_id=-1, grow_policy='depthwise',\n",
-       "              importance_type=None, interaction_constraints='',\n",
-       "              learning_rate=0.1, max_bin=256, max_cat_to_onehot=4,\n",
-       "              max_delta_step=2, max_depth=2, max_leaves=0, min_child_weight=80,\n",
-       "              missing=nan, monotone_constraints='()', n_estimators=100,\n",
-       "              n_jobs=-1, nthread=-1, num_parallel_tree=1, predictor='auto',\n",
-       "              random_state=0, reg_alpha=0, ...)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n", " colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,\n", " early_stopping_rounds=None, enable_categorical=False,\n", - " eval_metric=None, gamma=10, gpu_id=-1, grow_policy='depthwise',\n", - " importance_type=None, interaction_constraints='',\n", - " learning_rate=0.1, max_bin=256, max_cat_to_onehot=4,\n", - " max_delta_step=2, max_depth=2, max_leaves=0, min_child_weight=80,\n", - " missing=nan, monotone_constraints='()', n_estimators=100,\n", - " n_jobs=-1, nthread=-1, num_parallel_tree=1, predictor='auto',\n", - " random_state=0, reg_alpha=0, ...)" + " eval_metric=None, feature_types=None, gamma=10, gpu_id=-1,\n", + " grow_policy='depthwise', importance_type=None,\n", + " interaction_constraints='', learning_rate=0.1, max_bin=256,\n", + " max_cat_threshold=64, max_cat_to_onehot=4, max_delta_step=2,\n", + " max_depth=2, max_leaves=0, min_child_weight=80, missing=nan,\n", + " monotone_constraints='()', n_estimators=100, n_jobs=-1,\n", + " nthread=-1, num_parallel_tree=1, predictor='auto', ...)" ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -885,7 +1090,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "id": "9f4c697b-da4a-4d20-a3a4-684b8cd4bfd4", "metadata": {}, "outputs": [ @@ -893,7 +1098,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Accuracy 0.7622, Precision 0.1412, Recall 0.9960\n" + "Accuracy 0.7567, Precision 0.1271, Recall 1.0000\n" ] } ], @@ -924,23 +1129,131 @@ " metrics[\"acc_tree\"][-1], metrics[\"prec_tree\"][-1], metrics[\"rec_tree\"][-1]))" ] }, + { + "cell_type": "markdown", + "id": "92ae98fc-ab8b-4f46-b464-bdd93071f98f", + "metadata": {}, + "source": [ + "### Add FastRP Embeddings to XGBoost Model" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "cfa17370-c74d-4be1-9f6a-49a2469197da", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n",
+       "              colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,\n",
+       "              early_stopping_rounds=None, enable_categorical=False,\n",
+       "              eval_metric=None, feature_types=None, gamma=10, gpu_id=-1,\n",
+       "              grow_policy='depthwise', importance_type=None,\n",
+       "              interaction_constraints='', learning_rate=0.1, max_bin=256,\n",
+       "              max_cat_threshold=64, max_cat_to_onehot=4, max_delta_step=2,\n",
+       "              max_depth=2, max_leaves=0, min_child_weight=80, missing=nan,\n",
+       "              monotone_constraints='()', n_estimators=100, n_jobs=-1,\n",
+       "              nthread=-1, num_parallel_tree=1, predictor='auto', ...)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n", + " colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,\n", + " early_stopping_rounds=None, enable_categorical=False,\n", + " eval_metric=None, feature_types=None, gamma=10, gpu_id=-1,\n", + " grow_policy='depthwise', importance_type=None,\n", + " interaction_constraints='', learning_rate=0.1, max_bin=256,\n", + " max_cat_threshold=64, max_cat_to_onehot=4, max_delta_step=2,\n", + " max_depth=2, max_leaves=0, min_child_weight=80, missing=nan,\n", + " monotone_constraints='()', n_estimators=100, n_jobs=-1,\n", + " nthread=-1, num_parallel_tree=1, predictor='auto', ...)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "emb_tree_model = XGBClassifier(\n", + " nthread=-1, n_estimators=100, learning_rate=0.1, \n", + " objective='binary:logistic', max_depth=2, scale_pos_weight=400, \n", + " min_child_weight=80, gamma = 10, max_delta_step=2) \n", + "\n", + "features = [\"in_degree\",\"out_degree\",\"send_amount\",\"send_min\",\n", + " \"recv_amount\",\"recv_min\",\"pagerank\"] + [x for x in train_data.columns if \"emb\" in x]\n", + "# Train model\n", + "emb_tree_model.fit(train_data[features], train_data[\"is_fraud\"])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "d226f65b-29a0-448b-b283-abf06ceb8d84", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy 0.8900, Precision 0.2425, Recall 0.9912\n" + ] + } + ], + "source": [ + "from pyTigerGraph.gds.metrics import Accuracy, BinaryPrecision, BinaryRecall\n", + "from collections import defaultdict\n", + "\n", + "# Get predictions\n", + "pred = emb_tree_model.predict(valid_data[features].values)\n", + "# Get prediction scores for later use\n", + "yhat_tree = emb_tree_model.predict_proba(valid_data[features].values)[:,1]\n", + "ytrue_tree = valid_data[\"is_fraud\"].values\n", + "\n", + "m = Accuracy()\n", + "m.update(pred, ytrue_tree)\n", + "metrics[\"acc_fastrp_tree\"].append(m.value)\n", + "\n", + "m = BinaryPrecision()\n", + "m.update(pred, ytrue_tree)\n", + "metrics[\"prec_fastrp_tree\"].append(m.value)\n", + "\n", + "m = BinaryRecall()\n", + "m.update(pred, ytrue_tree)\n", + "metrics[\"rec_fastrp_tree\"].append(m.value)\n", + "\n", + "print(\"Accuracy {:.4f}, Precision {:.4f}, Recall {:.4f}\".format(\n", + " metrics[\"acc_fastrp_tree\"][-1], metrics[\"prec_fastrp_tree\"][-1], metrics[\"rec_fastrp_tree\"][-1]))" + ] + }, { "cell_type": "markdown", "id": "36a39d08-3b14-409d-91c7-440d950a6426", "metadata": {}, "source": [ - "### Explain model" + "### Explain models\n", + "Here, we are going to look at the feature importance values of both of the XGBoost models. For the model trained on the FastRP embeddings, we summed all dimensions of the embedding into one feature importance score. One can see that the embedding contributes heavily to the model's performance." ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 23, "id": "de1d3541-5fa1-479f-9234-b68b265d427d", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmsAAAGwCAYAAAD2XSKVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9M0lEQVR4nO3deVxV1f7/8fdBmeFATgwFYo6ooJhaSqapOWT+NCvNuA6lDSaZpWlewyE1yTHT23CtxEyzsjIz07zmkDjhgGbgRHK1bxg2CIoKBuv3R1/O1yMOWNbZ0Ov5eOzH45y91177s8/qIe/W3vscmzHGCAAAAJbk5uoCAAAAcGmENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhVV0dQH444qKivT999/L399fNpvN1eUAAIBSMMbo5MmTCg0NlZvbpefPCGvlwPfff6+wsDBXlwEAAH6Ho0eP6oYbbrjkdsJaOeDv7y/pt8G22+0urgYAAJRGbm6uwsLCHH/HL4WwVg4UX/q02+2ENQAAypgr3cLEAwYAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAur6OoCcO00HLtKbp4+ri4DAIByIzOxi6tLYGYNAADAyghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrLtamTRsNHTrU1WUAAACLIqwBAABYGGHtdygoKHB1CQAA4G/C0mGtTZs2io+PV3x8vAICAlSlShUlJCTIGCNJWrBggZo2bSp/f38FBwfrgQceUHZ2tlMfy5YtU+3ateXl5aXbb79d8+fPl81m04kTJxxtNm7cqFatWsnb21thYWEaMmSI8vLyHNsjIiI0YcIE9e3bV3a7XY888ogkaeTIkapTp458fHx04403KiEhQefOnXPsN27cODVu3FgLFixQRESEAgICdP/99+vkyZOXPOfPPvtMAQEBWrhw4bX4CAEAQBln6bAmSfPnz1fFihW1bds2zZo1SzNmzNAbb7whSTp37pwmTJig3bt3a+nSpcrMzFT//v0d+x4+fFj33nuvunfvrt27d+vRRx/V6NGjnfrPyMhQp06ddM8992jPnj167733tHHjRsXHxzu1mzZtmho1aqRdu3YpISFBkuTv76+kpCSlpaVp1qxZmjt3rmbOnFmi/6VLl2r58uVavny51q9fr8TExIue66JFi9S7d28tXLhQcXFxl/xM8vPzlZub67QAAIDyyWaKp6ksqE2bNsrOztY333wjm80mSXr22We1bNkypaWllWi/fft2NWvWTCdPnpSfn5+effZZffbZZ/r6668dbZ577jlNmjRJv/zyiwIDAzVw4EBVqFBBr7/+uqPNxo0b1bp1a+Xl5cnLy0sRERGKiYnRxx9/fNl6p02bpsWLF2v79u2SfptZmzp1qo4dOyZ/f39J0ogRI7RhwwZt2bLFcY6NGzdW7dq1NXr0aH3yySdq3br1ZY8zbtw4jR8/vsT6sKHvy83T57L7AgCA0stM7PKn9Z2bm6uAgADl5OTIbrdfsp3lZ9ZuueUWR1CTpBYtWujgwYMqLCzUjh071LVrV4WHh8vf398Rco4cOSJJ2r9/v5o1a+bUX/PmzZ3e7969W0lJSfLz83MsHTt2VFFRkQ4fPuxo17Rp0xK1vffee4qNjVVwcLD8/Pz03HPPOY5dLCIiwhHUJCkkJKTEpdolS5boqaee0urVq68Y1CRp1KhRysnJcSxHjx694j4AAKBssnxYu5SzZ8+qY8eOstvtWrhwoVJSUhwzX1fzAMCpU6f06KOPKjU11bHs3r1bBw8eVM2aNR3tfH19nfbbvHmz4uLidOedd2r58uXatWuXRo8eXeLY7u7uTu9tNpuKioqc1sXExKhq1ap66623VJqJTk9PT9ntdqcFAACUTxVdXcCVbN261en9li1bVLt2be3bt08//fSTEhMTFRYWJkmOy4/F6tatqxUrVjitS0lJcXrfpEkTpaWlqVatWldV16ZNm1S9enWne+D++9//XlUfxWrWrKnp06erTZs2qlChgubMmfO7+gEAAOWP5WfWjhw5oqefflr79+/Xu+++q9mzZ+vJJ59UeHi4PDw8NHv2bH377bdatmyZJkyY4LTvo48+qn379mnkyJE6cOCA3n//fSUlJUmS49LqyJEjtWnTJsXHxys1NVUHDx7UJ598UuIBgwvVrl1bR44c0eLFi5WRkaGXX375ive0XU6dOnW0du1affjhh3xJLgAAcLB8WOvbt6/OnDmj5s2ba/DgwXryySf1yCOPqGrVqkpKStIHH3yg+vXrKzExUdOmTXPat0aNGlqyZIk++ugjRUdH69VXX3XMhHl6ekqSoqOjtX79eh04cECtWrVSTEyMxowZo9DQ0MvW9f/+3//TU089pfj4eDVu3FibNm1yPCX6e9WtW1dffvml3n33XQ0bNuwP9QUAAMoHyz8N2rhxY7300kvXrM9JkybptddeK1c35Rc/TcLToAAAXFtWeBrU8ves/VGvvPKKmjVrpsqVKys5OVlTp0694iVOAAAAqyj3Ye3gwYOaOHGifv75Z4WHh2vYsGEaNWqUq8sCAAAoFUtfBkXpcBkUAIA/hxUug1r+AQMAAIC/M8IaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAur6OoCcO3sHd9Rdrvd1WUAAIBriJk1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwML4bdBypOHYVXLz9HF1GSinMhO7uLoEAPhbYmYNAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrAAAAFkZY+wslJSUpMDDQ1WUAAIAyhLD2F+rVq5cOHDjg6jIAAEAZUtHVBfxeBQUF8vDwcHUZV8Xb21ve3t6uLgMAAJQhZWZmrU2bNoqPj9fQoUNVpUoVdezYUXv37lXnzp3l5+enoKAg9enTRz/++KNjn6KiIk2ZMkW1atWSp6enwsPDNWnSJElSy5YtNXLkSKdjHD9+XO7u7tqwYcMV64mIiNDEiRPVt29f+fn5qXr16lq2bJmOHz+ubt26yc/PT9HR0dq+fbtjnwsvg44bN06NGzfWggULFBERoYCAAN1///06efLkZY+dn5+v3NxcpwUAAJRPZSasSdL8+fPl4eGh5ORkJSYmqm3btoqJidH27du1cuVK/fDDD+rZs6ej/ahRo5SYmKiEhASlpaVp0aJFCgoKkiTFxcVp8eLFMsY42r/33nsKDQ1Vq1atSlXPzJkzFRsbq127dqlLly7q06eP+vbtq3/84x/auXOnatasqb59+zod40IZGRlaunSpli9fruXLl2v9+vVKTEy87HEnT56sgIAAxxIWFlaqegEAQNljM5dLEhbSpk0b5ebmaufOnZKkiRMn6quvvtKqVascbb777juFhYVp//79CgkJUdWqVTVnzhwNHDiwRH/Hjx9XaGiovvzyS0c4a9mypW677bYrhiXpt5m1Vq1aacGCBZKkY8eOKSQkRAkJCXr++eclSVu2bFGLFi2UlZWl4OBgJSUlaejQoTpx4oSk32bWpk6dqmPHjsnf31+SNGLECG3YsEFbtmy55LHz8/OVn5/veJ+bm6uwsDCFDX1fbp4+V6wd+D0yE7u4ugQAKFdyc3MVEBCgnJwc2e32S7YrU/es3XTTTY7Xu3fv1tq1a+Xn51eiXUZGhk6cOKH8/Hy1a9fuon1VrVpVHTp00MKFC9WqVSsdPnxYmzdv1uuvv17qeqKjox2vi2fsoqKiSqzLzs5WcHDwRfuIiIhwBDVJCgkJUXZ29mWP6+npKU9Pz1LXCQAAyq4ydRnU19fX8frUqVPq2rWrUlNTnZaDBw/qtttuK9WN/HFxcVqyZInOnTunRYsWKSoqyilsXYm7u7vjtc1mu+S6oqKiUvVRvM/l2gMAgL+XMhXWztekSRN98803ioiIUK1atZwWX19f1a5dW97e3lqzZs0l++jWrZvOnj2rlStXatGiRYqLi/sLzwAAAODKymxYGzx4sH7++Wf17t1bKSkpysjI0KpVq/Tggw+qsLBQXl5eGjlypEaMGKG3335bGRkZ2rJli958801HH76+vurevbsSEhKUnp6u3r17u/CMAAAASipT96ydLzQ0VMnJyRo5cqQ6dOig/Px8Va9eXZ06dZKb228ZNCEhQRUrVtSYMWP0/fffKyQkRI899phTP3Fxcbrzzjt12223KTw83BWnAgAAcEll5mlQXFrx0yQ8DYo/E0+DAsC1VdqnQcvsZVAAAIC/A8LaRXz11Vfy8/O75AIAAPBXKbP3rP2ZmjZtqtTUVFeXAQAAQFi7GG9vb9WqVcvVZQAAAHAZFAAAwMoIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwfhu0HNk7vqPsdrurywAAANcQM2sAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhfHboOVIw7Gr5Obp4+oyAKBUMhO7uLoEoExgZg0AAMDCCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlizkDZt2mjo0KGuLgMAAFjINQ1rBQUF17I7AACAv70/FNbatGmj+Ph4DR06VFWqVFHHjh21d+9ede7cWX5+fgoKClKfPn30448/OvYpKirSlClTVKtWLXl6eio8PFyTJk2SJLVs2VIjR450Osbx48fl7u6uDRs2XLGeBQsWqGnTpvL391dwcLAeeOABZWdnO7avW7dONptNq1atUkxMjLy9vdW2bVtlZ2fr888/V2RkpOx2ux544AGdPn3asV9+fr6GDBmiatWqycvLS7feeqtSUlIc25OSkhQYGOhUy9KlS2Wz2Rzvx40bp8aNG2vBggWKiIhQQECA7r//fp08eVKS1L9/f61fv16zZs2SzWaTzWZTZmbmlQcBAACUa394Zm3+/Pny8PBQcnKyEhMT1bZtW8XExGj79u1auXKlfvjhB/Xs2dPRftSoUUpMTFRCQoLS0tK0aNEiBQUFSZLi4uK0ePFiGWMc7d977z2FhoaqVatWV6zl3LlzmjBhgnbv3q2lS5cqMzNT/fv3L9Fu3LhxmjNnjjZt2qSjR4+qZ8+eeumll7Ro0SJ99tln+uKLLzR79mxH+xEjRujDDz/U/PnztXPnTtWqVUsdO3bUzz//fFWfVUZGhpYuXarly5dr+fLlWr9+vRITEyVJs2bNUosWLfTwww8rKytLWVlZCgsLu2g/+fn5ys3NdVoAAED5VPGPdlC7dm1NmTJFkjRx4kTFxMTohRdecGx/6623FBYWpgMHDigkJESzZs3SnDlz1K9fP0lSzZo1deutt0qSevbsqaFDh2rjxo2OcLZo0SL17t3baZbqUh566CHH6xtvvFEvv/yymjVrplOnTsnPz8+xbeLEiYqNjZUkDRgwQKNGjVJGRoZuvPFGSdK9996rtWvXauTIkcrLy9Orr76qpKQkde7cWZI0d+5crV69Wm+++aaeeeaZUn9WRUVFSkpKkr+/vySpT58+WrNmjSZNmqSAgAB5eHjIx8dHwcHBl+1n8uTJGj9+fKmPCwAAyq4/PLN20003OV7v3r1ba9eulZ+fn2OpV6+epN9mldLT05Wfn6927dpdtK+qVauqQ4cOWrhwoSTp8OHD2rx5s+Li4kpVy44dO9S1a1eFh4fL399frVu3liQdOXLEqV10dLTjdVBQkHx8fBxBrXhd8eXTjIwMnTt3zhHuJMnd3V3NmzdXenp6qeoqFhER4QhqkhQSEuJ0mba0Ro0apZycHMdy9OjRq+4DAACUDX84rPn6+jpenzp1Sl27dlVqaqrTcvDgQd12223y9va+Yn9xcXFasmSJzp07p0WLFikqKkpRUVFX3C8vL08dO3aU3W7XwoULlZKSoo8//lhSyQcf3N3dHa9tNpvT++J1RUVFVzxmMTc3N6dLt9Jvl2Qv9EePU8zT01N2u91pAQAA5dM1fRq0SZMm+uabbxQREaFatWo5Lb6+vqpdu7a8vb21Zs2aS/bRrVs3nT17VitXrtSiRYtKPau2b98+/fTTT0pMTFSrVq1Ur1693zVrdaGaNWs67skrdu7cOaWkpKh+/fqSfpsRPHnypPLy8hxtUlNTr/pYHh4eKiws/MM1AwCA8uOahrXBgwfr559/Vu/evZWSkqKMjAytWrVKDz74oAoLC+Xl5aWRI0dqxIgRevvtt5WRkaEtW7bozTffdPTh6+ur7t27KyEhQenp6erdu3epjh0eHi4PDw/Nnj1b3377rZYtW6YJEyb84XPy9fXVoEGD9Mwzz2jlypVKS0vTww8/rNOnT2vAgAGSpJtvvlk+Pj765z//qYyMDC1atEhJSUlXfayIiAht3bpVmZmZ+vHHH3/XrBsAAChfrmlYCw0NVXJysgoLC9WhQwdFRUVp6NChCgwMlJvbb4dKSEjQsGHDNGbMGEVGRqpXr14lZsDi4uK0e/dutWrVSuHh4aU6dtWqVZWUlKQPPvhA9evXV2JioqZNm3ZNzisxMVH33HOP+vTpoyZNmujQoUNatWqVrrvuOklSpUqV9M4772jFihWKiorSu+++q3Hjxl31cYYPH64KFSqofv36qlq1aol77QAAwN+PzVx4sxXKnNzcXAUEBChs6Pty8/RxdTkAUCqZiV1cXQLgUsV/v3Nyci57/zk/NwUAAGBhZSasffXVV05fCXLhAgAAUB794S/F/as0bdr0dz1hCQAAUJaVmbDm7e2tWrVquboMAACAv1SZuQwKAADwd0RYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyszPyQO65s7/iOstvtri4DAABcQ8ysAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABbGb4OWIw3HrpKbp4+ry0ApZSZ2cXUJAIAygJk1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsnScpKUmBgYF/6jFsNpuWLl36px4DAACUHxVdXcDfTVZWlq677jpXlwEAAMoIwtpfLDg42NUlAACAMsTSl0GXLFmiqKgoeXt7q3Llymrfvr3y8vIkSW+88YYiIyPl5eWlevXq6ZVXXnHsl5mZKZvNpo8++ki33367fHx81KhRI23evNmp/6SkJIWHh8vHx0d33323fvrpp1LXNm7cODVu3FhvvfWWwsPD5efnp8cff1yFhYWaMmWKgoODVa1aNU2aNMlpv/Mvg5a2TgAA8Pdl2bCWlZWl3r1766GHHlJ6errWrVunHj16yBijhQsXasyYMZo0aZLS09P1wgsvKCEhQfPnz3fqY/To0Ro+fLhSU1NVp04d9e7dW7/++qskaevWrRowYIDi4+OVmpqq22+/XRMnTryqGjMyMvT5559r5cqVevfdd/Xmm2+qS5cu+u6777R+/Xq9+OKLeu6557R169bL9nO5Oi8mPz9fubm5TgsAACifLHsZNCsrS7/++qt69Oih6tWrS5KioqIkSWPHjtX06dPVo0cPSVKNGjWUlpam119/Xf369XP0MXz4cHXp0kWSNH78eDVo0ECHDh1SvXr1NGvWLHXq1EkjRoyQJNWpU0ebNm3SypUrS11jUVGR3nrrLfn7+6t+/fq6/fbbtX//fq1YsUJubm6qW7euXnzxRa1du1Y333zzJfu5XJ0XM3nyZI0fP77UdQIAgLLLsjNrjRo1Urt27RQVFaX77rtPc+fO1S+//KK8vDxlZGRowIAB8vPzcywTJ05URkaGUx/R0dGO1yEhIZKk7OxsSVJ6enqJANWiRYurqjEiIkL+/v6O90FBQapfv77c3Nyc1hUf81IuV+fFjBo1Sjk5OY7l6NGjV1U3AAAoOyw7s1ahQgWtXr1amzZt0hdffKHZs2dr9OjR+vTTTyVJc+fOLRG2KlSo4PTe3d3d8dpms0n6bTbsWjm//+JjXGzdlY55tXV6enrK09PzassFAABlkGXDmvRbcImNjVVsbKzGjBmj6tWrKzk5WaGhofr2228VFxf3u/uOjIwscS/Zli1b/mjJAAAA15Rlw9rWrVu1Zs0adejQQdWqVdPWrVt1/PhxRUZGavz48RoyZIgCAgLUqVMn5efna/v27frll1/09NNPl6r/IUOGKDY2VtOmTVO3bt20atWqq7pfDQAA4K9g2XvW7Ha7NmzYoDvvvFN16tTRc889p+nTp6tz584aOHCg3njjDc2bN09RUVFq3bq1kpKSVKNGjVL3f8stt2ju3LmaNWuWGjVqpC+++ELPPffcn3hGAAAAV89mjDGuLgJ/TG5urgICAhQ29H25efq4uhyUUmZiF1eXAABwoeK/3zk5ObLb7ZdsZ9mZNQAAABDWLqlBgwZOXw1y/rJw4UJXlwcAAP4mLPuAgautWLFC586du+i2oKCgv7gaAADwd0VYu4TiX00AAABwJS6DAgAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwfsi9HNk7vqPsdrurywAAANcQM2sAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhfHboOVIw7Gr5Obp4+oyAAB/kszELq4uAS7AzBoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFWT6sJSUlKTAw0NVlAAAAuITlw9rfCcEUAABciLAGAABgYVcd1pYsWaKoqCh5e3urcuXKat++vfLy8iRJb7zxhiIjI+Xl5aV69erplVdeceyXmZkpm82mjz76SLfffrt8fHzUqFEjbd682an/pKQkhYeHy8fHR3fffbd++umnUteWkZGhbt26KSgoSH5+fmrWrJn+85//OLWJiIjQxIkT1bdvX/n5+al69epatmyZjh8/rm7dusnPz0/R0dHavn27034ffvihGjRoIE9PT0VERGj69OlO2202m5YuXeq0LjAwUElJSaU6/3Xr1unBBx9UTk6ObDabbDabxo0bV+pzBwAA5dNVhbWsrCz17t1bDz30kNLT07Vu3Tr16NFDxhgtXLhQY8aM0aRJk5Senq4XXnhBCQkJmj9/vlMfo0eP1vDhw5Wamqo6deqod+/e+vXXXyVJW7du1YABAxQfH6/U1FTdfvvtmjhxYqnrO3XqlO68806tWbNGu3btUqdOndS1a1cdOXLEqd3MmTMVGxurXbt2qUuXLurTp4/69u2rf/zjH9q5c6dq1qypvn37yhgjSdqxY4d69uyp+++/X19//bXGjRunhIQERxC7Gpc6/5YtW+qll16S3W5XVlaWsrKyNHz48Iv2kZ+fr9zcXKcFAACUTxWvpnFWVpZ+/fVX9ejRQ9WrV5ckRUVFSZLGjh2r6dOnq0ePHpKkGjVqKC0tTa+//rr69evn6GP48OHq0qWLJGn8+PFq0KCBDh06pHr16mnWrFnq1KmTRowYIUmqU6eONm3apJUrV5aqvkaNGqlRo0aO9xMmTNDHH3+sZcuWKT4+3rH+zjvv1KOPPipJGjNmjF599VU1a9ZM9913nyRp5MiRatGihX744QcFBwdrxowZateunRISEhx1paWlaerUqerfv//VfISXPf+AgADZbDYFBwdfto/Jkydr/PjxV3VcAABQNl3VzFqjRo3Url07RUVF6b777tPcuXP1yy+/KC8vTxkZGRowYID8/Pwcy8SJE5WRkeHUR3R0tON1SEiIJCk7O1uSlJ6erptvvtmpfYsWLUpd36lTpzR8+HBFRkYqMDBQfn5+Sk9PLzGzdn4NQUFBkv4vdJ6/7vy6YmNjnfqIjY3VwYMHVVhYWOr6Ljz2hedfWqNGjVJOTo5jOXr06FXtDwAAyo6rmlmrUKGCVq9erU2bNumLL77Q7NmzNXr0aH366aeSpLlz55YIWxUqVHB67+7u7nhts9kkSUVFRb+r+AsNHz5cq1ev1rRp01SrVi15e3vr3nvvVUFBwRVr+KN12Ww2x2XTYufOnSvR7lqcv6enpzw9Pa9qHwAAUDZdVViTfgsYsbGxio2N1ZgxY1S9enUlJycrNDRU3377reLi4n53MZGRkdq6davTui1btpR6/+TkZPXv31933323pN9m2jIzM393PefXlZycXOJYderUcYTRqlWrKisry7H94MGDOn369FUdx8PD46pn6gAAQPl2VWFt69atWrNmjTp06KBq1app69atOn78uCIjIzV+/HgNGTJEAQEB6tSpk/Lz87V9+3b98ssvevrpp0vV/5AhQxQbG6tp06apW7duWrVqVanvV5Ok2rVr66OPPlLXrl1ls9mUkJBwTWbthg0bpmbNmmnChAnq1auXNm/erDlz5jg97dq2bVvNmTNHLVq0UGFhoUaOHOk0i1YaEREROnXqlNasWaNGjRrJx8dHPj4+f7h+AABQdl3VPWt2u10bNmzQnXfeqTp16ui5557T9OnT1blzZw0cOFBvvPGG5s2bp6ioKLVu3VpJSUmqUaNGqfu/5ZZbNHfuXM2aNUuNGjXSF198oeeee67U+8+YMUPXXXedWrZsqa5du6pjx45q0qTJ1ZziRTVp0kTvv/++Fi9erIYNG2rMmDF6/vnnnR4umD59usLCwtSqVSs98MADGj58+FUHrZYtW+qxxx5Tr169VLVqVU2ZMuUP1w4AAMo2m7nwRiuUObm5uQoICFDY0Pfl5slMHACUV5mJXVxdAq6h4r/fOTk5stvtl2zHLxgAAABYWJkKaw0aNHD6apDzl4ULF7q6PAAAgGvuqp8GdaUVK1Zc9OswpP/7bjQAAIDypEyFteJfTQAAAPi7KFOXQQEAAP5uCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhZWpH3LH5e0d31F2u93VZQAAgGuImTUAAAALI6wBAABYGGENAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwvht0HKk4dhVcvP0cXUZQLmRmdjF1SUAADNrAAAAVkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrAAAAFmbJsNamTRsNHTr0T+k7MzNTNptNqampf0r/AAAA11JFVxdwMR999JHc3d1dXQYAAIDLWTKsVapUydUl/GEFBQXy8PBwdRkAAKCMs/xl0IiICL3wwgt66KGH5O/vr/DwcP373/8udV/btm1TTEyMvLy81LRpU+3atatEm71796pz587y8/NTUFCQ+vTpox9//NGx/eTJk4qLi5Ovr69CQkI0c+bMEpdqIyIiNGHCBPXt21d2u12PPPKIJGnjxo1q1aqVvL29FRYWpiFDhigvL8+xX35+voYPH67rr79evr6+uvnmm7Vu3bqr+8AAAEC5ZcmwdqHp06c7gtbjjz+uQYMGaf/+/Vfc79SpU7rrrrtUv3597dixQ+PGjdPw4cOd2pw4cUJt27ZVTEyMtm/frpUrV+qHH35Qz549HW2efvppJScna9myZVq9erW++uor7dy5s8Txpk2bpkaNGmnXrl1KSEhQRkaGOnXqpHvuuUd79uzRe++9p40bNyo+Pt6xT3x8vDZv3qzFixdrz549uu+++9SpUycdPHjwkueVn5+v3NxcpwUAAJRPlrwMeqE777xTjz/+uCRp5MiRmjlzptauXau6detedr9FixapqKhIb775pry8vNSgQQN99913GjRokKPNnDlzFBMToxdeeMGx7q233lJYWJgOHDigkJAQzZ8/X4sWLVK7du0kSfPmzVNoaGiJ47Vt21bDhg1zvB84cKDi4uIcM3C1a9fWyy+/rNatW+vVV19Vdna25s2bpyNHjjj6Gz58uFauXKl58+Y51XS+yZMna/z48aX45AAAQFlXJsJadHS047XNZlNwcLCys7OvuF96erqio6Pl5eXlWNeiRQunNrt379batWvl5+dXYv+MjAydOXNG586dU/PmzR3rAwICLhoUmzZtWqLvPXv2aOHChY51xhgVFRXp8OHD+vbbb1VYWKg6deo47Zefn6/KlStf8rxGjRqlp59+2vE+NzdXYWFhl2wPAADKrjIR1i58MtRms6moqOia9H3q1Cl17dpVL774YoltISEhOnTo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pJTYxphZ07fffqtXX31VTz/9tP75z38qJSVFQ4YMkYeHh/r16+cYm4v9m8m4uc6zzz6r3Nxc1atXTxUqVFBhYaEmTZqkuLg4SWLc/hdhDfiLDB48WHv37tXGjRtdXQou4+jRo3ryySe1evVqeXl5uboclFJRUZGaNm2qF154QZIUExOjvXv36rXXXlO/fv1cXB0u5f3339fChQu1aNEiNWjQQKmpqRo6dKhCQ0MZt/NwGbSMqlKliipUqFDiCbQffvhBwcHBLqoKlxIfH6/ly5dr7dq1uuGGGxzrg4ODVVBQoBMnTji1ZxxdZ8eOHcrOzlaTJk1UsWJFVaxYUevXr9fLL7+sihUrKigoiDGzoJCQENWvX99pXWRkpI4cOSJJjrHh30xreeaZZ/Tss8/q/vvvV1RUlPr06aOnnnpKkydPlsS4FSOslVEeHh666aabtGbNGse6oqIirVmzRi1atHBhZTifMUbx8fH6+OOP9eWXX6pGjRpO22+66Sa5u7s7jeP+/ft15MgRxtFF2rVrp6+//lqpqamOpWnTpoqLi3O8ZsysJzY2tsTX4hw4cEDVq1eXJNWoUUPBwcFO45abm6utW7cybi50+vRpubk5R5EKFSqoqKhIEuPm4OonHPD7LV682Hh6epqkpCSTlpZmHnnkERMYGGiOHTvm6tLwvwYNGmQCAgLMunXrTFZWlmM5ffq0o81jjz1mwsPDzZdffmm2b99uWrRoYVq0aOHCqnGh858GNYYxs6Jt27aZihUrmkmTJpmDBw+ahQsXGh8fH/POO+842iQmJprAwEDzySefmD179phu3bqZGjVqmDNnzriw8r+3fv36meuvv94sX77cHD582Hz00UemSpUqZsSIEY42jJsxhLUybvbs2SY8PNx4eHiY5s2bmy1btri6JJxH0kWXefPmOdqcOXPGPP744+a6664zPj4+5u677zZZWVmuKxolXBjWGDNr+vTTT03Dhg2Np6enqVevnvn3v//ttL2oqMgkJCSYoKAg4+npadq1a2f279/vomphjDG5ubnmySefNOHh4cbLy8vceOONZvTo0SY/P9/RhnEzxmbMeV8TDAAAAEvhnjUAAAALI6wBAABYGGENAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUA14QxRo888ogqVaokm82m1NRUV5d0zdhsNi1dutTVZQD4myKsAbgmVq5cqaSkJC1fvlxZWVlq2LDhNem3f//+6t69+zXp6/fKyspS586dXVrD5YwbN06NGzd2dRkA/iQVXV0AgPIhIyNDISEhatmypatLuajCwkLZbDa5uV39/6MGBwf/CRX9ccYYFRYWuroMSysoKJCHh4erywD+EGbWAPxh/fv31xNPPKEjR47IZrMpIiJCklRUVKTJkyerRo0a8vb2VqNGjbRkyRLHfoWFhRowYIBje926dTVr1izH9nHjxmn+/Pn65JNPZLPZZLPZtG7dOq1bt042m00nTpxwtE1NTZXNZlNmZqYkKSkpSYGBgVq2bJnq168vT09PHTlyRPn5+Ro+fLiuv/56+fr66uabb9a6desue37nXwbNzMyUzWbT+++/r1atWsnb21vNmjXTgQMHlJKSoqZNm8rPz0+dO3fW8ePHnT6j7t27a/z48apatarsdrsee+wxFRQUONrk5+dryJAhqlatmry8vHTrrbcqJSXFsb34vD///HPddNNN8vT01DvvvKPx48dr9+7djs8oKSlJkjRjxgxFRUXJ19dXYWFhevzxx3Xq1ClHf8Wf0apVqxQZGSk/Pz916tRJWVlZTuf/1ltvqUGDBvL09FRISIji4+Md206cOKGBAwc6zqlt27bavXv3JT/LgoICxcfHKyQkRF5eXqpevbomT57s1N+jjz6qoKAgeXl5qWHDhlq+fLlj+4cffuioJSIiQtOnT3fqPyIiQhMmTFDfvn1lt9v1yCOPSJI2btzoGK+wsDANGTJEeXl5l6wTsBTX/o48gPLgxIkT5vnnnzc33HCDycrKMtnZ2cYYYyZOnGjq1atnVq5caTIyMsy8efOMp6enWbdunTHGmIKCAjNmzBiTkpJivv32W/POO+8YHx8f89577xljjDl58qTp2bOn6dSpk8nKyjJZWVkmPz/frF271kgyv/zyi6OGXbt2GUnm8OHDxhhj5s2bZ9zd3U3Lli1NcnKy2bdvn8nLyzMDBw40LVu2NBs2bDCHDh0yU6dONZ6enubAgQOXPD9J5uOPPzbGGHP48GEjyXFeaWlp5pZbbjE33XSTadOmjdm4caPZuXOnqVWrlnnsscccffTr18/4+fmZXr16mb1795rly5ebqlWrmn/+85+ONkOGDDGhoaFmxYoV5ptvvjH9+vUz1113nfnpp5+MMcZx3tHR0eaLL74whw4dMt99950ZNmyYadCggeMzOn36tDHGmJkzZ5ovv/zSHD582KxZs8bUrVvXDBo0yHG84s+offv2JiUlxezYscNERkaaBx54wNHmlVdeMV5eXuall14y+/fvN9u2bTMzZ850bG/fvr3p2rWrSUlJMQcOHDDDhg0zlStXdtR8oalTp5qwsDCzYcMGk5mZab766iuzaNEiY4wxhYWF5pZbbjENGjQwX3zxhcnIyDCffvqpWbFihTHGmO3btxs3Nzfz/PPPm/3795t58+YZb29vM2/ePEf/1atXN3a73UybNs0cOnTIsfj6+pqZM2eaAwcOmOTkZBMTE2P69+9/yTEHrISwBuCamDlzpqlevbrj/dmzZ42Pj4/ZtGmTU7sBAwaY3r17X7KfwYMHm3vuucfxvl+/fqZbt25ObUob1iSZ1NRUR5v//ve/pkKFCuZ//ud/nPpr166dGTVq1CVrulhYe+ONNxzb3333XSPJrFmzxrFu8uTJpm7duk7nUalSJZOXl+dY9+qrrxo/Pz9TWFhoTp06Zdzd3c3ChQsd2wsKCkxoaKiZMmWK03kvXbrUqb6xY8eaRo0aXbL+Yh988IGpXLmy433xZ3To0CHHun/9618mKCjI8T40NNSMHj36ov199dVXxm63m7Nnzzqtr1mzpnn99dcvus8TTzxh2rZta4qKikpsW7VqlXFzczP79++/6L4PPPCAueOOO5zWPfPMM6Z+/fqO99WrVzfdu3d3ajNgwADzyCOPlKjdzc3NnDlz5qLHAqyEe9YA/CkOHTqk06dP64477nBaX1BQoJiYGMf7f/3rX3rrrbd05MgRnTlzRgUFBdfsZnkPDw9FR0c73n/99dcqLCxUnTp1nNrl5+ercuXKV9X3+f0GBQVJkqKiopzWZWdnO+3TqFEj+fj4ON63aNFCp06d0tGjR5WTk6Nz584pNjbWsd3d3V3NmzdXenq6Uz9NmzYtVY3/+c9/NHnyZO3bt0+5ubn69ddfdfbsWZ0+fdpRh4+Pj2rWrOnYJyQkxFF3dna2vv/+e7Vr1+6i/e/evVunTp0q8dmdOXNGGRkZF92nf//+uuOOO1S3bl116tRJd911lzp06CDpt0vZN9xwQ4nxKZaenq5u3bo5rYuNjdVLL72kwsJCVahQQVLJz2f37t3as2ePFi5c6FhnjFFRUZEOHz6syMjIix4PsArCGoA/RfG9UZ999pmuv/56p22enp6SpMWLF2v48OGaPn26WrRoIX9/f02dOlVbt269bN/FDwkYYxzrzp07V6Kdt7e3bDabU00VKlTQjh07HH/Yi/n5+V3F2f0WpIoVH+PCdUVFRVfVZ2n5+vpesU1mZqbuuusuDRo0SJMmTVKlSpW0ceNGDRgwQAUFBY6wdn7NxXUXf67e3t6XPcapU6cUEhJy0Xv+AgMDL7pPkyZNdPjwYX3++ef6z3/+o549e6p9+/ZasmTJFY9XWhd+PqdOndKjjz6qIUOGlGgbHh5+TY4J/JkIawD+FOff1N+6deuLtklOTlbLli31+OOPO9ZdOCPj4eFR4onHqlWrSvrtKzWuu+46SSrV97rFxMSosLBQ2dnZatWq1dWczjWxe/dunTlzxhFKtmzZIj8/P4WFhalKlSry8PBQcnKyqlevLum3AJqSkqKhQ4dett+LfUY7duxQUVGRpk+f7gi377///lXV6+/vr4iICK1Zs0a33357ie1NmjTRsWPHVLFiRcdDJaVht9vVq1cv9erVS/fee686deqkn3/+WdHR0fruu+904MCBi86uRUZGKjk52WldcnKy6tSpUyJ8X1hnWlqaatWqVeoaASshrAH4U/j7+2v48OF66qmnVFRUpFtvvVU5OTlKTk6W3W5Xv379VLt2bb399ttatWqVatSooQULFiglJUU1atRw9BMREaFVq1Zp//79qly5sgICAlSrVi2FhYVp3LhxmjRpkg4cOFDiqcCLqVOnjuLi4tS3b19Nnz5dMTExOn78uNasWaPo6Gh16dLlz/xIVFBQoAEDBui5555TZmamxo4dq/j4eLm5ucnX11eDBg3SM888o0qVKik8PFxTpkzR6dOnNWDAgMv2GxERocOHDzsuI/r7+6tWrVo6d+6cZs+era5duyo5OVmvvfbaVdc8btw4PfbYY6pWrZo6d+6skydPKjk5WU888YTat2+vFi1aqHv37poyZYrq1Kmj77//Xp999pnuvvvui16unTFjhkJCQhQTEyM3Nzd98MEHCg4OVmBgoFq3bq3bbrtN99xzj2bMmKFatWpp3759stls6tSpk4YNG6ZmzZppwoQJ6tWrlzZv3qw5c+bolVdeuew5jBw5Urfccovi4+M1cOBA+fr6Ki0tTatXr9acOXOu+jMB/nIuvmcOQDlx4QMGxhhTVFRkXnrpJVO3bl3j7u5uqlatajp27GjWr19vjPntIYT+/fubgIAAExgYaAYNGmSeffZZp5vls7OzzR133GH8/PyMJLN27VpjjDEbN240UVFRxsvLy7Rq1cp88MEHJR4wCAgIKFFn8ROoERERxt3d3YSEhJi7777b7Nmz55Lnpos8YLBr1y7H9os98HDh8YsflBgzZoypXLmy8fPzMw8//LDTzflnzpwxTzzxhKlSpYrx9PQ0sbGxZtu2bZc9TvHneM8995jAwEAjyfF05IwZM0xISIjx9vY2HTt2NG+//bbT/hf7jD7++GNz4Z+G1157zTGGISEh5oknnnBsy83NNU888YQJDQ017u7uJiwszMTFxZkjR45c9LP897//bRo3bmx8fX2N3W437dq1Mzt37nRs/+mnn8yDDz5oKleubLy8vEzDhg3N8uXLHduXLFli6tevb9zd3U14eLiZOnWqU//Vq1d3elq12LZt2xz/Hfn6+pro6GgzadKki9YIWI3NmPNu+gAA/Cn69++vEydO8LNVAK4aX4oLAABgYYQ1AAAAC+MyKAAAgIUxswYAAGBhhDUAAAALI6wBAABYGGENAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACzs/wOKrvLK/qn/xgAAAABJRU5ErkJggg==", + "image/png": "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+IeesAQAACjJSkxY8/LyUlhYWHGXAQAAcEuVmMugAAAAf0WENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALKzEfCkuru3r8dFX/SFYAABQ8jCzBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGH8goELqfPSWrl5eBd3GZCUFtu+uEsAALgIZtYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWLtEXFycypYte1OPYbPZtGLFipt6DAAA4DpKF3cBfzXp6em67bbbirsMAABQQhDWbrFKlSoVdwkAAKAEsfRl0KVLlyoiIkJeXl4qX768WrVqpaysLEnSvHnzVKtWLXl6eqpmzZp64403HPulpaXJZrPp448/VsuWLeXt7a169erpyy+/dOo/Li5OISEh8vb21kMPPaSffvqpyLXFxMQoMjJS7777rkJCQmS329W/f3/l5uZq2rRpqlSpkipWrKhJkyY57XfpZdCi1gkAAP66LBvW0tPT1a1bN/Xt21dJSUnatGmTOnfuLGOM5syZo9GjR2vSpElKSkrS5MmTNXbsWM2fP9+pj9GjR+u5555TQkKCqlevrm7duum3336TJO3cuVN9+/bVM888o4SEBLVs2VITJ068rhpTUlL02Wefac2aNVqyZIneffddtW/fXt999502b96sqVOnasyYMdqxY8dV+7lanYXJzs5WZmam0wIAAFyTZS+Dpqen67ffflPnzp1VuXJlSVJERIQkacKECZoxY4Y6d+4sSapSpYoSExP19ttvq3fv3o4+nnvuObVv316SNH78eNWuXVtHjx5VzZo19dprryk6OlovvPCCJKl69eravn271qxZU+Qa8/Ly9O6778rX11fh4eFq2bKlDh8+rNWrV8vNzU01atTQ1KlTtWnTJt13331X7OdqdRZmypQpGj9+fJHrBAAAJZdlZ9bq1aunBx54QBEREfrHP/6hOXPm6Oeff9bJkyd14sQJ9evXT3a73bFMnDhRKSkpTn3UrVvX8TowMFCSlJGRIUlKSkpSVFSUU/vL319LaGiofH19He8D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qKgolx3ngAED1L59e7Vq1cppvauNNzk5WUFBQapSpYoeffRRHTt2TJLrjXPlypVq2LCh/vGPf6hixYqqX7++5syZ49juauPNl5OTo4ULF6pv376y2WwuN877779fGzZs0JEjRyRJBw4c0LZt29SuXTtJ1vhc+SH3EurUqVPKzc1VQECA0/qAgAD98MMPxVTVzZc/tsLG/e233xZHSTeMMUbDhg3T/fffrzp16khyvfEePHhQUVFRunDhgux2u5YvX67w8HDH/+C5yjgl6f3339e+ffu0e/fuAttc6XO999579d5776l69er68ccfNXHiRDVu3FiHDh1yqXFK0rFjx/Tmm29q2LBhevHFF7Vr1y4NHjxYHh4e6tWrl8uNN9+KFSt05swZ9enTR5Jr/fuVpJEjR+rs2bOqWbOmSpUqpdzcXE2aNEndunWTZI3xEtZKOJvN5vTeGFNgnStyxXEPHDhQX331lbZt21Zgm6uMt0aNGkpISNCZM2e0bNky9e7dW5s3b3Zsd5VxnjhxQkOGDNG6devk6el5xXauMN62bds6XkdERCgqKkrVqlXT/Pnzdd9990lyjXFKUl5enho2bKjJkydLkurXr69Dhw7pzTffVK9evRztXGW8+d555x21bdtWQUFBTutdZZwffPCBFi5cqMWLF6t27dpKSEjQ0KFDFRQUpN69ezvaFed4uQxaQt1+++0qVapUgVm0jIyMAunfleQ/ZeZq4x40aJBWrlypjRs36s4773Ssd7XxlilTRmFhYWrYsKGmTJmievXq6bXXXnO5ce7du1cZGRm6++67Vbp0aZUuXVqbN2/Wv/71L5UuXdoxJlcZ76V8fHwUERGh5ORkl/tcAwMDFR4e7rSuVq1aOn78uCTX++9Vkr799lt9/vnnevzxxx3rXG2czz//vF544QU9+uijioiIUM+ePfXss89qypQpkqwxXsJaCVWmTBndfffdWr9+vdP69evXq3HjxsVU1c1XpUoVVapUyWncOTk52rx5c4kctzFGAwcO1Mcff6wvvvhCVapUcdruauO9nDFG2dnZLjfOBx54QAcPHlRCQoJjadiwoXr06KGEhARVrVrVpcZ7qezsbCUlJSkwMNDlPtcmTZoU+GqdI0eOqHLlypJc87/XefPmqWLFimrfvr1jnauN85dffpGbm3McKlWqlOOrOywx3lvyGANuivyv7njnnXdMYmKiGTp0qPHx8TFpaWnFXdqfcu7cObN//36zf/9+I8m8+uqrZv/+/Y6vJImNjTX+/v7m448/NgcPHjTdunUrsY+M9+/f3/j7+5tNmzY5PSb/yy+/ONq4ynhHjRpltmzZYlJTU81XX31lXnzxRePm5mbWrVtnjHGdcV7JpU+DGuM64x0+fLjZtGmTOXbsmNmxY4f5+9//bnx9fR3/O+Qq4zTm969hKV26tJk0aZJJTk42ixYtMt7e3mbhwoWONq403tzcXBMSEmJGjhxZYJsrjbN3797mjjvucHx1x8cff2xuv/12M2LECEeb4h4vYa2E+/e//20qV65sypQpYxo0aOD4yoeSbOPGjUZSgaV3797GmN8fo37ppZdMpUqVjIeHh2nWrJk5ePBg8Rb9BxU2Tklm3rx5jjauMt6+ffs6/q1WqFDBPPDAA46gZozrjPNKLg9rrjLe/O+bcnd3N0FBQaZz587m0KFDju2uMs58n3zyialTp47x8PAwNWvWNP/5z3+ctrvSeNeuXWskmcOHDxfY5krjzMzMNEOGDDEhISHG09PTVK1a1YwePdpkZ2c72hT3eG3GGHNr5vAAAABwvbhnDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDcANYYzRk08+qXLlyslmsykhIaG4S7phbDabVqxYUdxlAPiLIqwBuCHWrFmjuLg4rVq1Sunp6apTp84N6bdPnz7q1KnTDenrj0pPT1fbtm2LtYariYmJUWRkZHGXAeAmKV3cBQBwDSkpKQoMDFTjxo2Lu5RC5ebmymazyc3t+v8/aqVKlW5CRX+eMUa5ubnFXYal5eTkqEyZMsVdBvCnMLMG4E/r06ePBg0apOPHj8tmsyk0NFTS72Fi2rRpqlq1qry8vFSvXj0tXbrUsV9ubq769eunKlWqyMvLSzVq1NBrr73m2B4TE6P58+frv//9r2w2m2w2mzZt2qRNmzbJZrPpzJkzjrYJCQmy2WxKS0uTJMXFxals2bJatWqVwsPD5eHhoW+//VY5OTkaMWKE7rjjDvn4+Ojee+/Vpk2brjq+Sy+DpqWlyWaz6cMPP1TTpk3l5eWle+65R0eOHNHu3bvVsGFD2e12tWnTRidPnnQ6R506ddL48eNVsWJF+fn56amnnlJOTo6jTXZ2tgYPHqyKFSvK09NT999/v3bv3u3Ynj/utWvXqmHDhvLw8NCCBQs0fvx4HThwwHGO4uLiJEmvvvqqIiIi5OPjo+DgYD3zzDM6f/68o7/8c7R27VrVqlXLUXd6errT+N99913Vrl1bHh4eCgwM1MCBAx3bzp49qyeffNIxpr/97W86cODAFc9lTk6OBg4cqMDAQHl6eio0NFRTpkxxbD9z5oyefPJJBQQEyNPTU3Xq1NGqVasc25ctW+aoJTQ0VDNmzHDqPzQ0VBMnTlSfPn3k7++vJ554QpK0fft2NWvWTF5eXgoODtbgwYOVlZV1xToBS7llPxkPwGWdOXPGvPzyy+bOO+806enpJiMjwxhjzIsvvmhq1qxp1qxZY1JSUsy8efOMh4eH2bRpkzHGmJycHDNu3Diza9cuc+zYMbNw4ULj7e1tPvjgA2OMMefOnTNdunQxbdq0Menp6SY9Pd1kZ2ebjRs3Gknm559/dtSwf/9+I8mkpqYaY4yZN2+ecXd3N40bNzbx8fHmm2++MefPnzfdu3c3jRs3Nlu2bDFHjx4106dPNx4eHubIkSNXHJ8ks3z5cmOMMampqUaSY1yJiYnmvvvuMw0aNDAtWrQw27ZtM/v27TNhYWHm6aefdvTRu3dvY7fbTdeuXc3XX39tVq1aZSpUqGBefPFFR5vBgweboKAgs3r1anPo0CHTu3dvc9ttt5mffvrJGGMc465bt65Zt26dOXr0qPnuu+/M8OHDTe3atR3n6JdffjHGGDNz5kzzxRdfmGPHjpkNGzaYGjVqmP79+zuOl3+OWrVqZXbv3m327t1ratWqZbp37+5o88YbbxhPT08za9Ysc/jwYbNr1y4zc+ZMY4wxeXl5pkmTJqZDhw5m9+7d5siRI2b48OGmfPnyjpovN336dBMcHGy2bNli0tLSzNatW83ixYuNMcbk5uaa++67z9SuXdusW7fOpKSkmE8++cSsXr3aGGPMnj17jJubm3n55ZfN4cOHzbx584yXl5eZN2+eo//KlSsbPz8/M336dJOcnGySk5PNV199Zex2u5k5c6Y5cuSIiY+PN/Xr1zd9+vS54mcOWAlhDcANMXPmTFO5cmXH+/PnzxtPT0+zfft2p3b9+vUz3bp1u2I/zzzzjHn44Ycd73v37m06duzo1KaoYU2SSUhIcLQ5evSosdls5n//+59Tfw888IAZNWrUFWsqLKzNnTvXsX3JkiVGktmwYYNj3ZQpU0yNGjWcxlGuXDmTlZXlWPfmm28au91ucnNzzfnz5427u7tZtGiRY3tOTo4JCgoy06ZNcxr3ihUrnOp76aWXTL169a5Yf74PP/zQlC9f3vE+/xwdPXrUse7f//63CQgIcLwPCgoyo0ePLrS/DRs2GD8/P3PhwgWn9dWqVTNvv/12ofsMGjTI/O1vfzN5eXkFtq1du9a4ubmZw4cPF7pv9+7dTevWrZ3WPf/88yY8PNzxvnLlyqZTp05ObXr27GmefPJJp3Vbt241bm5u5tdffy30WICVcM8agJsiMTFRFy5cUOvWrZ3W5+TkqH79+o73b731lubOnatvv/1Wv/76q3Jycm7YzfJlypRR3bp1He/37dsnY4yqV6/u1C47O1vly5e/rr4v7TcgIECSFBER4bQuIyPDaZ969erJ29vb8T4qKkrnz5/XiRMndPbsWV28eFFNmjRxbHd3d1ejRo2UlJTk1E/Dhg2LVOPGjRs1efJkJSYmKjMzU7/99psuXLigrKws+fj4SJK8vb1VrVo1xz6BgYGOujMyMvT999/rgQceKLT/vXv36vz58wXO3a+//qqUlJRC9+nTp49at26tGjVqqE2bNvr73/+uBx98UNLvl7LvvPPOAp9PvqSkJHXs2NFpXZMmTTRr1izl5uaqVKlSkgqen7179+ro0aNatGiRY50xRnl5eUpNTVWtWrUKPR5gFYQ1ADdFXl6eJOnTTz/VHXfc4bTNw8NDkvThhx/q2Wef1YwZMxQVFSVfX19Nnz5dO3fuvGrf+Q8JGGMc6y5evFignZeXl2w2m1NNpUqV0t69ex1/2PPZ7fbrGN3vQSpf/jEuX5d/Dq7FZrM5xnJpvdLvY7x8XX7Quppvv/1W7dq109NPP60JEyaoXLly2rZtm/r16+d0ri6t+fJavLy8rnqMvLw8BQYGFnrPX9myZQvdp0GDBkpNTdVnn32mzz//XF26dFGrVq20dOnSax6vsHNx6b+BfJefn7y8PD311FMaPHhwgbYhISFXPSZgBYQ1ADdF/k39x48fV/PmzQtts3XrVjVu3FjPPPOMY93lMzJlypQp8MRjhQoVJP3+lRq33XabJBXpe93q16+v3NxcZWRkqGnTptcznBviwIED+vXXXx2hZMeOHbLb7brzzjtVvnx5lSlTRtu2bVP37t0l/R5A9+zZo6FDh16138LO0Z49e/Tbb79pxowZjnD74YcfXle9vr6+Cg0N1YYNG9SyZcsC2xs0aKAffvhBpUuXdjxUUhR+fn7q2rWrunbtqkceeURt2rTR6dOnVbduXX333Xc6cuRIobNr4eHh2rZtm9O67du3q3r16gXC9+V1Hjp0SGFhYUWuEbASwhqAm8LX11fPPfecnn32WeXl5en+++9XZmamtm/fLrvdrt69eyssLEzvvfee1q5dqypVqmjBggXavXu3qlSp4ugnNDRUa9eu1eHDh1W+fHn5+/srLCxMwcHBiomJ0cSJE5WcnFzgqcDCVK9eXT169FCvXr00Y8YM1a9fX6dOndIXX3yhiIgItWvX7maeEuXk5Khfv34aM2aMvv32W7300ksaOHCg3Nzc5OPjo/79++v5559XuXLlFBISomnTpumXX35Rv379rtpvaGioUlNTHZcRfX19Va1aNf3222+aPXu2OnTooPj4eL311lvXXXNMTIyefvppVaxYUW3bttW5c+cUHx+vQYMGqVWrVoqKilKnTp00depU1ahRQ99//71Wr16tTp06FXq5dubMmQoMDFRkZKTc3Nz00UcfqVKlSipbtqyaN2+uZs2a6eGHH9arr76qsLAwffPNN7LZbGrTpo2GDx+ue+65RxMmTFDXrl315Zdf6vXXX9cbb7xx1TGMHDlS9913nwYMGKAnnnhCPj4+SkpK0vr16zV79uzrPifALVd8t8sBcCWXP2BgzO9PC7722mumRo0axt3d3VSoUMFER0ebzZs3G2OMuXDhgunTp4/x9/c3ZcuWNf379zcvvPCC083yGRkZpnXr1sZutxtJZuPGjcYYY7Zt22YiIiKMp6enadq0qfnoo48KPGDg7+9foM78J1BDQ0ONu7u7qVSpknnooYfMV199dcWxqZAHDPbv3+/YXtgDD5cfP/9BiXHjxpny5csbu91uHn/8caeb83/99VczaNAgc/vttxsPDw/TpEkTs2vXrqseJ/88Pvzww6Zs2bJGkuPpyFdffdUEBgYaLy8vEx0dbd577z2n/Qs7R8uXLzeX/2l46623HJ9hYGCgGTRokGNbZmamGTRokAkKCjLu7u4mODjY9OjRwxw/frzQc/mf//zHREZGGh8fH+Pn52ceeOABs2/fPsf2n376yfzzn/805cuXN56enqZOnTpm1apVju1Lly414eHhxt3d3YSEhJjp06c79V+5cmXH06qX2rVrl+PfkY+Pj6lbt66ZNGlSoTUCVmMzppAL/gCAG6pPnz46c+YMP1sF4LrxpbgAAAAWRlgDAACwMC6DAgAAWBgzawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwML+H8L9t7rLKzrkAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -959,6 +1272,40 @@ "plt.xlabel(\"feature importance score\");" ] }, + { + "cell_type": "code", + "execution_count": 24, + "id": "d4604309-3ea3-407c-b7cd-b1f2546545c4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAs7J4MazabTStWrMjtMgAAAG4qT4W18PBw1axZM7fLAAAAuGvyVFjLS9LS0nK7BAAAkA/c1bCWmpqq/v37q0SJEnJ3d1fDhg21a9cuSVJERIQKFy7s1H/FihWy2WyO7ePGjdO+fftks9lks9kUERFx02PGxcXpkUcekbu7uypXrqz169dn6fPTTz+pY8eOuu+++1S0aFG1a9dOx48fd2y/fPmy+vfvr8KFC6to0aIaMWKEunXrpvbt2zv6NGnSRH379tXgwYNVrFgxtWjRQpIUGxurNm3ayG63q2TJkuratatOnz7t2M8Yo2nTpqlcuXLy8PBQjRo1tHTp0hzOKAAAyO/ualgbPny4vvjiC82fP1979uxRcHCwWrZsqT/++OOm+3bs2FFDhgxRlSpVlJiYqMTERHXs2PGG+2RkZOjpp59WgQIFtH37dr333nsaMWKEU5/z58+radOmstvt+vbbbxUZGSm73a5WrVo5VsemTp2qhQsXat68eYqKilJycnK297zNnz9fBQsWVFRUlN5//30lJiaqcePGqlmzpnbv3q01a9bo119/VYcOHRz7jB49WvPmzdPcuXN14MABDRo0SM8//7y2bNly3fNKTU1VcnKy0wsAAORPBe/WgVJSUjR37lxFRESodevWkqQPP/xQ69ev13//+18VL178hvt7eHjIbrerYMGC8vPzy9ExN2zYoIMHD+r48eO6//77JUmTJk1yHF+SFi9eLBcXF3300UeOVbx58+apcOHC2rx5sx577DHNnj1bI0eO1FNPPSVJmjNnjlavXp3leMHBwZo2bZrj/dixY1WrVi1NmjTJ0fbxxx8rMDBQR44cUalSpfTWW2/pm2++Ub169SRJ5cqVU2RkpN5//301btw42/OaPHmyxo0bl6M5AAAAedtdC2vx8fG6dOmSGjRo4GhzdXVV3bp1dfDgwZuGtb/j4MGDKl26tCOoSXKEokzR0dE6evSovL29ndovXryo+Ph4nTlzRr/++qvq1q3r2FagQAE9+OCDysjIcNqndu3aWcbetGmT7HZ7ltoyx7548aLjkmmmtLQ0hYaGXve8Ro4cqcGDBzveJycnKzAw8Lr9AQBA3nXXwpoxRpIcq1dXt9tsNrm4uDj6ZLp06dIdOebVrj1+RkaGHnzwQS1cuDBL36sDZHZ1X8vLyyvL2G3bttXUqVOz9PX399cPP/wgSfrqq69UqlQpp+1ubm5Z9rl62422AwCA/OOuhbXg4GAVKlRIkZGR6ty5s6QrYWz37t0aOHCgihcvrrNnzyolJcURemJiYpzGKFSokNLT03N8zMqVK+vkyZP6+eefFRAQIEn67rvvnPrUqlVLn3/+uUqUKCEfH59sxylZsqR27typRo0aSZLS09O1d+/em/4ZkVq1aumLL75QUFCQChbMOtWVK1eWm5ubTp48ed1LngAA4N521x4w8PLyUu/evTVs2DCtWbNGsbGxevHFF3X+/Hn17NlTDz30kDw9PfXaa6/p6NGjWrRoUZanPYOCgpSQkKCYmBidPn1aqampNzxm8+bNVbFiRYWFhWnfvn3aunWrRo0a5dSnS5cuKlasmNq1a6etW7cqISFBW7Zs0YABA/Tjjz9Kkvr166fJkyfr//7v/3T48GENGDBAf/75Z5bVtmv16dNHf/zxhzp16qSdO3fq2LFjWrdunXr06KH09HR5e3tr6NChGjRokObPn6/4+Hjt3btX//nPfzR//vxbn2QAAJDv3NWnQadMmaJnnnlGXbt2Va1atXT06FGtXbtW9913n4oUKaIFCxZo9erVqlatmj777DOFh4c77f/MM8+oVatWatq0qYoXL67PPvvshsdzcXHR8uXLlZqaqrp16+qFF17QxIkTnfp4enrq22+/VenSpfX0008rJCREPXr00IULFxwrbSNGjFCnTp0UFhamevXqyW63q2XLlnJ3d7/h8QMCAhQVFaX09HS1bNlSVatW1YABA+Tr6ysXlytTP378eI0dO1aTJ09WSEiIWrZsqS+//FJly5a9xdkFAAD5kc1kd/MVbigjI0MhISHq0KGDxo8fn9vlKDk5Wb6+vgocuEQubp65Xc4/4viUx3O7BAAA7qjM399nzpy57q1Y0l28Zy0vO3HihNatW6fGjRsrNTVVc+bMUUJCguPeOwAAgH9Knv64qYULF8put2f7qlKlyh07jouLiyIiIlSnTh01aNBA33//vTZs2KCQkJA7dgwAAIDs5OmVtSeffFIPPfRQtttcXV3v2HECAwMVFRV1x8YDAADIqTwd1ry9vbP8MVsAAID8JE9fBgUAAMjvCGsAAAAWRlgDAACwMMIaAACAhRHWAAAA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lwEAAO4gVtYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAAC+OzQfORqq+vlYubZ26XAQBAvnF8yuO5XQIrawAAAFZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABaW58NakyZNNHDgwDs+bkREhAoXLnzDPuHh4apZs6bjfffu3dW+ffs7XgsAALh3FcztAvKTWbNmyRiT22UAAIB8hLB2B/n6+uZ2CQAAIJ+5q5dBjTGaNm2aypUrJw8PD9WoUUNLly6VJG3evFk2m01r165VaGioPDw89OijjyopKUlff/21QkJC5OPjo06dOun8+fNO416+fFl9+/ZV4cKFVbRoUY0ePdpphSstLU3Dhw9XqVKl5OXlpYceekibN292GiMiIkKlS5eWp6ennnrqKf3+++9Z6p8yZYpKliwpb29v9ezZUxcvXnTafu1l0CZNmqh///4aPny4ihQpIj8/P4WHhzvtc+jQITVs2FDu7u6qXLmyNmzYIJvNphUrVtz6BAMAgHznroa10aNHa968eZo7d64OHDigQYMG6fnnn9eWLVscfcLDwzVnzhxt27ZNp06dUocOHfT2229r0aJF+uqrr7R+/XrNnj3badz58+erYMGC2rFjh9555x3NnDlTH330kWP7v//9b0VFRWnx4sXav3+/nn32WbVq1UpxcXGSpB07dqhHjx565ZVXFBMTo6ZNm2rChAlOx1iyZIlef/11TZw4Ubt375a/v7/efffdm57z/Pnz5eXlpR07dmjatGl64403tH79eklSRkaG2rdvL09PT+3YsUMffPCBRo0addMxU1NTlZyc7PQCAAD5k83cpZusUlJSVKxYMX3zzTeqV6+eo/2FF17Q+fPn9dJLL6lp06basGGDmjVrJunKStbIkSMVHx+vcuXKSZJefvllHT9+XGvWrJF0ZfUqKSlJBw4ckM1mkyS9+uqrWrlypWJjYxUfH68HHnhAP/74owICAhzHbd68uerWratJkyapc+fO+vPPP/X11187tj/33HNas2aN/vrrL0lS/fr1VaNG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LV68WJGRkTp37pyeeOIJpaen363TuG03mofz589rz549GjNmjPbs2aNly5bpyJEjevLJJ5365fd5uNqKFSu0Y8eObD/iybLzYJBn1a1b17z88stObZUqVTKvvvpqLlV09yUlJRlJZsuWLcYYYzIyMoyfn5+ZMmWKo8/FixeNr6+vee+993KrzH/M2bNnzQMPPGDWr19vGjdubAYMGGCMuXfmYcSIEaZhw4bX3X6vzMPjjz9uevTo4dT29NNPm+eff94Yc2/MgySzfPlyx/ucnPNff/1lXF1dzeLFix19fvrpJ+Pi4mLWrFlz12q/k66dh+zs3LnTSDInTpwwxtxb8/Djjz+aUqVKmR9++MGUKVPGzJw507HNyvPAyloelZaWpujoaD322GNO7Y899pi2bduWS1XdfWfOnJH0/z/MPiEhQb/88ovTvLi5ualx48b5cl769Omjxx9/XM2bN3dqv1fmYeXKlapdu7aeffZZlShRQqGhofrwww8d2++VeWjYsKE2btyoI0eOSJL27dunyMhItWnTRtK9Mw9Xy8k5R0dH69KlS059AgICVLVq1Xw7L9KVn5s2m82xAn2vzENGRoa6du2qYcOGqUqVKlm2W3ke+CD3POr06dNKT09XyZIlndpLliypX375JZequruMMRo8eLAaNmyoqlWrSpLj3LOblxMnTtz1Gv9Jixcv1p49e7Rr164s2+6VeTh27Jjmzp2rwYMH67XXXtPOnTvVv39/ubm5KSws7J6ZhxEjRujMmTOqVKmSChQooPT0dE2cOFGdOnWSdO/8e7haTs75l19+UaFChXTfffdl6ZNff45evHhRr776qjp37uz4APN7ZR6mTp2qggULqn///tlut/I8ENbyOJvN5vTeGJOlLb/q27ev9u/fr8jIyCzb8vu8nDp1SgMGDNC6devk7u5+3X75fR4yMjJUu3ZtTZo0SZIUGhqqAwcOaO7cuQoLC3P0y+/z8Pnnn2vBggVatGiRqlSpopiYGA0cOFABAQHq1q2bo19+n4fs/J1zzq/zcunSJT333HPKyMjQu+++e9P++WkeoqOjNWvWLO3Zs+eWz8kK88Bl0DyqWLFiKlCgQJa0n5SUlOX/JPOjfv36aeXKldq0aZPuv/9+R7ufn58k5ft5iY6OVlJSkh588EEVLFhQBQsW1JYtW/TOO++oYMGCjnPN7/Pg7++vypUrO7WFhIQ4HrK5V/49DBs2TK+++qqee+45VatWTV27dtWgQYM0efJkSffOPFwtJ+fs5+entLQ0/fnnn9ftk19cunRJHTp0UEJCgtavX+9YVZPujXnYunWrkpKSVLp0acfPzBMnTmjIkCEKCgqSZO15IKzlUYUKFdKDDz6o9evXO7WvX79e9evXz6Wq/nnGGPXt21fLli3TN998o7JlyzptL1u2rPz8/JzmJS0tTVu2bMlX89KsWTN9//33iomJcbxq166tLl26KCYmRuXKlbsn5qFBgwZZ/nTLkSNHVKZMGUn3zr+H8+fPy8XF+cd5gQIFHH+6416Zh6vl5JwffPBBubq6OvVJTEzUDz/8kK/mJTOoxcXFacOGDSpatKjT9nthHrp27ar9+/c7/cwMCAjQsGHDtHbtWkkWn4dcerABd8DixYuNq6ur+e9//2tiY2PNwIEDjZeXlzl+/Hhul/aP6d27t/H19TWbN282iYmJjtf58+cdfaZMmWJ8fX3NsmXLzPfff286depk/P39TXJyci5W/s+7+mlQY+6Nedi5c6cpWLCgmThxoomLizMLFy40np6eZsGCBY4+98I8dOvWzZQqVcqsWrXKJCQkmGXLlplixYqZ4cOHO/rkx3k4e/as2bt3r9m7d6+RZN566y2zd+9ex1OOOTnnl19+2dx///1mw4YNZs+ePebRRx81NWrUMJcvX86t07plN5qHS5cumSeffNLcf//9JiYmxunnZmpqqmOM/D4P2bn2aVBjrDsPhLU87j//+Y8pU6aMKVSokKlVq5bjT1jkV5Kyfc2bN8/RJyMjw7z++uvGz8/PuLm5mUceecR8//33uVf0XXJtWLtX5uHLL780VatWNW5ubqZSpUrmgw8+cNp+L8xDcnKyGTBggCldurRxd3c35cqVM6NGjXL6ZZwf52HTpk3Z/jzo1q2bMSZn53zhwgXTt29fU6RIEePh4WGeeOIJc/LkyVw4m7/vRvOQkJBw3Z+bmzZtcoyR3+chO9mFNavOg80YY+7GCh4AAABuHfesAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAbgjjDF66aWXVKRIEdlsNsXExOR2SXeMzWbTihUrcrsMAPcowhqAO2LNmjWKiIjQqlWrlJiYqKpVq96Rcbt376727dvfkbH+rsTERLVu3TpXa7iR8PBw1axZM7fLAPAPKZjbBQDIH+Lj4+Xv76/69evndinZSk9Pl81mk4vLrf8/qp+f3z9Q0e0zxig9PT23y7C0tLQ0FSpUKLfLAG4LK2sAblv37t3Vr18/nTx5UjabTUFBQZKuhIlp06apXLly8vDwUI0aNbR06VLHfunp6erZs6fKli0rDw8PVaxYUbNmzXJsDw8P1/z58/V///d/stlsstls2rx5szZv3iybzaa//vrL0TcmJkY2m03Hjx+XJEVERKhw4cJatWqVKleuLDc3N504cUJpaWkaPny4SpUqJS8vLz300EPavHnzDc/v6sugx48fl81m05IlS9SoUSN5eHioTp06OnLkiHbt2qXatWvLbrerVatW+u2335zmqH379ho3bpxKlCghHx8f9erVS2lpaY4+qamp6t+/v0qUKCF3d3c1bNhQu3btcmzPPO+1a9eqdu3acnNz06effqpx48Zp3759jjmKiIiQJL311luqVq2avLy8FBgYqFdeeUXnzp1zjJc5R2vXrlVISIij7sTERKfz//jjj1WlShW5ubnJ399fffv2dWw7c+aMXnrpJcc5Pfroo9q3b9915zItLU19+/aVv7+/3N3dFRQUpMmTJzu2//XXX3rppZdUsmRJubu7q2rVqlq1apVj+xdffOGoJSgoSDNmzHAaPygoSBMmTFD37t3l6+urF198UZK0bds2PfLII/Lw8FBgYKD69++vlJSU69YJWEqufow8gHzhr7/+Mm+88Ya5//77TWJioklKSjLGGPPaa6+ZSpUqmTVr1pj4+Hgzb9484+bmZjZv3myMMSYtLc2MHTvW7Ny50xw7dswsWLDAeHp6ms8//9wYY8zZs2dNhw4dTKtWrUxiYqJJTEw0qampZtOmTUaS+fPPPx017N2710gyCQkJxhhj5s2bZ1xdXU39+vVNVFSUOXTokDl37pzp3LmzqV+/vvn222/N0aNHzfTp042bm5s5cuTIdc9Pklm+fLkxxpiEhAQjyXFesbGx5uGHHza1atUyTZo0MZGRkWbPnj0mODjYvPzyy44xunXrZux2u+nYsaP54YcfzKpVq0zx4sXNa6+95ujTv39/ExAQYFavXm0OHDhgunXrZu677z7z+++/G2OM47yrV69u1q1bZ44ePWp+/PFHM2TIEFOlShXH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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "feature_importance = emb_tree_model.get_booster().get_fscore()\n", + "\n", + "condensed_feat_imp = {\"embedding\": 0}\n", + "for feat in feature_importance.keys():\n", + " if \"emb\" in feat:\n", + " condensed_feat_imp[\"embedding\"] += feature_importance[feat]\n", + " else:\n", + " condensed_feat_imp[feat] = feature_importance[feat]\n", + "\n", + "plt.barh(range(len(condensed_feat_imp)), condensed_feat_imp.values());\n", + "plt.yticks(range(len(condensed_feat_imp)), condensed_feat_imp.keys());\n", + "plt.xlabel(\"feature importance score\");" + ] + }, { "cell_type": "markdown", "id": "22727e65-2956-4df8-afcc-b4f221121a01", @@ -977,16 +1324,16 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 25, "id": "690b9e45-726a-4d20-b79b-a84961145d50", "metadata": {}, "outputs": [], "source": [ "hp = {\n", - " \"batch_size\": 5000, \n", + " \"batch_size\": 1024, \n", " \"num_neighbors\": 200, \n", " \"num_hops\": 3, \n", - " \"hidden_dim\": 128, \n", + " \"hidden_dim\": 256, \n", " \"num_layers\": 2, \n", " \"dropout\": 0.05, \n", " \"lr\": 0.0075, \n", @@ -1012,19 +1359,10 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 26, "id": "17c31955-8824-40a1-9c62-966d99fe60e6", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installing and optimizing queries. It might take a minute if this is the first time you use this loader.\n", - "Query installation finished.\n" - ] - } - ], + "outputs": [], "source": [ "train_loader = conn.gds.neighborLoader(\n", " v_in_feats=[\"in_degree\",\"out_degree\",\"send_amount\",\"send_min\",\"recv_amount\",\"recv_min\",\"pagerank\"],\n", @@ -1042,7 +1380,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 27, "id": "3d5869ff-4a56-4979-a09e-1b49999cf902", "metadata": {}, "outputs": [], @@ -1071,7 +1409,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 28, "id": "4f6d90e9-9c40-4758-b19d-dd883817d7da", "metadata": {}, "outputs": [], @@ -1105,14 +1443,14 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 29, "id": "fea32d40-93a7-418f-ab53-966197106f3c", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "90f1b29af6604e26a668f2cd3f3f76eb", + "model_id": "19174a23ff9e472fa6d7ad94a5a2ba96", "version_major": 2, "version_minor": 0 }, @@ -1131,7 +1469,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1145,7 +1483,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1159,7 +1497,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1173,7 +1511,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1187,7 +1525,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1201,7 +1539,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1215,7 +1553,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1229,7 +1567,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1243,7 +1581,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1257,7 +1595,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1271,7 +1609,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1285,7 +1623,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1299,7 +1637,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1313,7 +1651,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1327,7 +1665,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1341,7 +1679,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1355,7 +1693,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1369,7 +1707,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1383,7 +1721,7 @@ "version_minor": 0 }, "text/plain": [ - "Train Batch 0/6 | | [00:00,?batch/s]" + "Train Batch 0/26 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1397,7 +1735,7 @@ "version_minor": 0 }, "text/plain": [ - "Valid 0/2 | | [00:00,?batch/s]" + "Valid 0/7 | | [00:00,?batch/s]" ] }, "metadata": {}, @@ -1529,7 +1867,7 @@ "outputs": [ { "data": { - "image/png": "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TB7ZiYhAH3eW3ua06bA1e/ZsJk6cyMyZMxkyZAjTp09nzpw5pKSkEB0dfcz5Cxcu5NChQ/Ts2ROr1cp3333Hn/70J77//nvGjh3bqNdU2BIRERERd0vLL+Oqt5aSV2LjnG6RvH3zQL7dkMGbC3ezL78MgGBfL24d0YlbR3Qk1L9ttl53tzYdtoYMGcLgwYN54403AHA4HCQmJnLvvffyyCOPNOoaAwYM4JJLLuG5555r1PkKWyIiIiLiCTbuL+D6f6ygzGbH32qhzObs+hceYGXyyE5MHNahbsRLmsepZINWNcHSZrOxZs0axowZU7fPbDYzZswYli9fftLnG4bBggULSElJYdSoUcc9r7KykqKionqbiIiIiIi79WsXyowbB2Axmyiz2YkM9OHxcb1Y8vB53H1eVwUtD9OquhHm5eVht9uJiYmptz8mJobt27cf93mFhYUkJCRQWVmJxWLhzTff5MILj9+jf+rUqTzzzDMuq1tERERExFXO6xHNR5OHcKCgnEv7xeHr3bZa3rclrSpsNVVQUBDr16+npKSEBQsW8MADD9C5c2dGjx7d4PmPPvooDzzwQN33RUVFJCYmtlC1IiIiIiInNqxLhLtLkEZoVWErMjISi8VCdnZ2vf3Z2dnExh6/777ZbKZrV+eCa/3792fbtm1MnTr1uGHLx8cHHx91bRERERERkaZrVfdsWa1WBg4cyIIFC+r2ORwOFixYwLBhwxp9HYfDQWVl0xduExEREREROZlWNbIF8MADDzBp0iQGDRpEcnIy06dPp7S0lFtvvRWAiRMnkpCQwNSpUwHn/VeDBg2iS5cuVFZW8sMPP/Dhhx/y1ltvufNtiIiIiIhIG9fqwtb48ePJzc3lySefJCsri/79+zN37ty6phlpaWmYzYcH7EpLS/n973/P/v378fPzo2fPnnz00UeMHz/eXW9BRERERETOAK1unS130DpbIiIiIiICbXidLRERERERkdai1U0jdIfawT8tbiwiIiIicmarzQSNmSCosNUIxcXFAFprS0REREREAGdGCAkJOeE5umerERwOBxkZGQQFBWEymdxaS+0Cy+np6bp/rA3S59t26bNtu/TZtm36fNsufbZtW3N+voZhUFxcTHx8fL3GfA3RyFYjmM1m2rVr5+4y6gkODtZfDG2YPt+2S59t26XPtm3T59t26bNt25rr8z3ZiFYtNcgQERERERFpBgpbIiIiIiIizUBhq5Xx8fHhqaeewsfHx92lSDPQ59t26bNtu/TZtm36fNsufbZtm6d8vmqQISIiIiIi0gw0siUiIiIiItIMFLZERERERESagcKWiIiIiIhIM1DYEhERERERaQYKW63MjBkz6NixI76+vgwZMoRVq1a5uyQ5Rf/73/+47LLLiI+Px2Qy8dVXX9U7bhgGTz75JHFxcfj5+TFmzBh27tzpnmLllEydOpXBgwcTFBREdHQ0V1xxBSkpKfXOqaio4O677yYiIoLAwECuvvpqsrOz3VSxnIq33nqLfv361S2QOWzYMH788ce64/ps244XX3wRk8nE/fffX7dPn2/r9fTTT2MymeptPXv2rDuuz7Z1O3DgADfddBMRERH4+fnRt29ffv3117rj7v69SmGrFZk9ezYPPPAATz31FGvXriUpKYmxY8eSk5Pj7tLkFJSWlpKUlMSMGTMaPP63v/2N1157jZkzZ7Jy5UoCAgIYO3YsFRUVLVypnKpFixZx9913s2LFCubPn09VVRW/+c1vKC0trTvnj3/8I99++y1z5sxh0aJFZGRkcNVVV7mxammsdu3a8eKLL7JmzRp+/fVXzj//fC6//HK2bNkC6LNtK1avXs3bb79Nv3796u3X59u6nXXWWWRmZtZtS5YsqTumz7b1OnToECNGjMDb25sff/yRrVu38vLLLxMWFlZ3jtt/rzKk1UhOTjbuvvvuuu/tdrsRHx9vTJ061Y1VyekAjC+//LLue4fDYcTGxhrTpk2r21dQUGD4+PgYn3zyiRsqlNORk5NjAMaiRYsMw3B+lt7e3sacOXPqztm2bZsBGMuXL3dXmXIawsLCjH/+85/6bNuI4uJio1u3bsb8+fONc88917jvvvsMw9Cf3dbuqaeeMpKSkho8ps+2dXv44YeNkSNHHve4J/xepZGtVsJms7FmzRrGjBlTt89sNjNmzBiWL1/uxsrElVJTU8nKyqr3OYeEhDBkyBB9zq1QYWEhAOHh4QCsWbOGqqqqep9vz549ad++vT7fVsZut/Ppp59SWlrKsGHD9Nm2EXfffTeXXHJJvc8R9Ge3Ldi5cyfx8fF07tyZG2+8kbS0NECfbWv3zTffMGjQIK699lqio6M5++yzeeedd+qOe8LvVQpbrUReXh52u52YmJh6+2NiYsjKynJTVeJqtZ+lPufWz+FwcP/99zNixAj69OkDOD9fq9VKaGhovXP1+bYemzZtIjAwEB8fH+666y6+/PJLevfurc+2Dfj0009Zu3YtU6dOPeaYPt/WbciQIcyaNYu5c+fy1ltvkZqayjnnnENxcbE+21Zuz549vPXWW3Tr1o158+YxZcoU/vCHP/D+++8DnvF7lVeLvIqIyBnm7rvvZvPmzfXuC5DWr0ePHqxfv57CwkI+//xzJk2axKJFi9xdlpym9PR07rvvPubPn4+vr6+7yxEXu/jii+se9+vXjyFDhtChQwc+++wz/Pz83FiZnC6Hw8GgQYN44YUXADj77LPZvHkzM2fOZNKkSW6uzkkjW61EZGQkFovlmO442dnZxMbGuqkqcbXaz1Kfc+t2zz338N133/HLL7/Qrl27uv2xsbHYbDYKCgrqna/Pt/WwWq107dqVgQMHMnXqVJKSknj11Vf12bZya9asIScnhwEDBuDl5YWXlxeLFi3itddew8vLi5iYGH2+bUhoaCjdu3dn165d+rPbysXFxdG7d+96+3r16lU3TdQTfq9S2GolrFYrAwcOZMGCBXX7HA4HCxYsYNiwYW6sTFypU6dOxMbG1vuci4qKWLlypT7nVsAwDO655x6+/PJLfv75Zzp16lTv+MCBA/H29q73+aakpJCWlqbPt5VyOBxUVlbqs23lLrjgAjZt2sT69evrtkGDBnHjjTfWPdbn23aUlJSwe/du4uLi9Ge3lRsxYsQxS6zs2LGDDh06AB7ye1WLtOEQl/j0008NHx8fY9asWcbWrVuNO+64wwgNDTWysrLcXZqcguLiYmPdunXGunXrDMB45ZVXjHXr1hn79u0zDMMwXnzxRSM0NNT4+uuvjY0bNxqXX3650alTJ6O8vNzNlcvJTJkyxQgJCTEWLlxoZGZm1m1lZWV159x1111G+/btjZ9//tn49ddfjWHDhhnDhg1zY9XSWI888oixaNEiIzU11di4caPxyCOPGCaTyfjvf/9rGIY+27bmyG6EhqHPtzX705/+ZCxcuNBITU01li5daowZM8aIjIw0cnJyDMPQZ9uarVq1yvDy8jKef/55Y+fOnca///1vw9/f3/joo4/qznH371UKW63M66+/brRv396wWq1GcnKysWLFCneXJKfol19+MYBjtkmTJhmG4WxT+pe//MWIiYkx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XQgPDycpKYk777yTPn360K1bN5577jm6dOly0pGqW265hQkTJtC1a1deeOEFSkpKWLVqVbPW7lEjW6+88gq33347t956KwAzZ87k+++/59133+WRRx455vwPP/yQxx9/nHHjxgEwZcoUfvrpJ15++WU++uijuvO8vLyIjY1tmTchzaNeG/iZ0G88H67YC8AVZycQ4ufdLC/bLSaIr+4ewYs/bmfWsr28uzSVdemHeHfSYMICrM3ymiIiIiKu4OdtYeuzY9322q4yaNCget+XlJTw9NNP8/3335OZmUl1dTXl5eWkpaWd8Dr9+vWrexwQEEBwcPBxB3VcxWNGtmw2G2vWrGHMmDF1+8xmM2PGjGH58uUNPqeyshJfX996+/z8/I4Zudq5cyfx8fF07tyZG2+88aQfRGVlJUVFRfU28QBHtIHPT1nKvC3ZwOk1xmgMX28LT//2LP41aRAhft6sSyvg2reXk1FQ3qyvKyIiInI6TCYT/lYvt2ym46yN2hQBAQH1vn/wwQf58ssveeGFF1i8eDHr16+nb9++2Gy2E17H27v+P86bTCYcDofL6myIx4StvLw87HY7MTEx9fbHxMSQlZXV4HPGjh3LK6+8ws6dO3E4HMyfP58vvviCzMzDHeuGDBnCrFmzmDt3Lm+99Rapqamcc845FBcXH7eWqVOnEhISUrclJia65k3K6TmiDXzuT69hdxgkdwynV1xwi7z8Bb1i+M+UYcSF+LIrp4Sr31rGrpzj/3ckIiIiIq63dOlSbrnlFq688kr69u1LbGwse/fudXdZDfKYsNUUr776Kt26daNnz55YrVbuuecebr31Vszmw2/r4osv5tprr6Vfv36MHTuWH374gYKCAj777LPjXvfRRx+lsLCwbktPT2+JtyONUdMGvmveT0RziJubeVTraF2jg/jPlOF0iQogs7CCa2YuZ13aoRatQURERORM1q1bN7744gvWr1/Phg0buOGGG5p9hKqpPCZsRUZGYrFYyM7Orrc/Ozv7uPdbRUVF8dVXX1FaWsq+ffvYvn07gYGBdO7c+bivExoaSvfu3dm1a9dxz/Hx8SE4OLjeJh4ivj/5EQPxws7t/gsZe1bL34sXH+rH53cNp39iKAVlVdzwzkoWpjTvfF8RERERcXrllVcICwtj+PDhXHbZZYwdO5YBAwa4u6wGmYzGNsFvAUOG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z+Wvf/0rr776KtOnT6dv374EBARw//33Y7PZmqlw11LYkhZXUWXn3yvTeGvhbvJq7lVqH+7PHy7oxhX940/cCONkBtwCC/96uA184smHl90tOsiX2XcM4+6P17IwJZe7/72Wr+8ZceyaYiIiIiKnwmRq9FQ+d7vuuuu47777+Pjjj/nggw+YMmUKJpOJpUuXcvnll3PTTTcBznuwduzYQe/evRt13V69epGenk5mZiZxcXEArFixotnex9E0jVBajGEY/HvlPkb97Ree+24reSWVtAvz429X92PBn87lmoHtTi9oAQREHNEGfubpF91CAny8eGfiIIZ2DqfUZueOD9ZQVFHl7rJEREREWkRgYCDjx4/n0UcfJTMzk1tuuQWAbt26MX/+fJYtW8a2bdu48847yc7ObvR1x4wZQ/fu3Zk0aRIbNmxg8eLFPP744830Lo6lsCUtIqe4glveW83jX24mp7iShFA/XryqL788OJrrBififboh60h1beC/9tg28A3xtph544YBxIf4sievlAdmr8ehdbhERETkDDF58mQOHTrE2LFj6+6xeuKJJxgwYABjx45l9OjRxMbGcsUVVzT6mmazmS+//JLy8nKSk5P53e9+x/PPP99M7+BYJsNoZF/GM1hRUREhISEUFhYSHBzs7nJanQXbsnno843kl9rw8TLz57E9mDisI1avZsz6714Mactg1ENwfsv964UrbNxfwDUzl2OrdnD/mG7cP6a7u0sSERERD1dRUUFqaiqdOnXC19fX3eW0eif6eZ5KNtDIljSbiio7T369mcnv/0p+qY2esUF8e+9IfndO5+YNWnB4dOvXd6G6da1h1a9dKM9f0QeA6T/tZP7Wxg+Vi4iIiIjnUNiSZrE1o4jLXl/CB8v3Ac6FfL+6ewTdY1qo6UNtG/iyPNj8Rcu8pgtdOyiRScM6APDH2evZlVPi5opERERE5FQpbIlLORwG/1y8hytmLGVnTglRQT58cFsyf7m0N77elpYrpLYNPDgbZbTC2bJPXNqb5I7hlFRWc+eHv1KshhkiIiIirYrClrhMTlEFk95bxf99vw2b3cGYXjHMve+cxi9K7GoDbgGLz+E28K2Mt8XMjBsHEBvsy+7cUv702QY1zBARERFpRRS2xCXmb83molcXs3hnHr7eZp6/sg/vTBxIRKCP+4pqpW3gjxQV5MPM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kMcee4wvv/wSsI7rKrsWOYoQQrQxDz/8MPv37683LkDYvi5durB7927y8/P58ccfmTJlCuvWrbN0WKKZkpOTefzxx1mxYgWOjo6WDkeY2Lhx42of9+rVi9jYWMLDw1m8eDFOTk4WjEw0l9FopH///sycOROAPn36sH//fubNm8eUKVMsHJ1KWrZshK+vLzqd7pzqOBkZGQQGBlooKmFqNedSzrNte+SRR/j9999Zs2YN7dq1q309MDCQiooK8vLy6m0v59d22Nvb07FjR/r168esWbOIjo7mvffek3Nr4+Li4sjMzKRv377Y2dlhZ2fHunXreP/997GzsyMgIEDObyvi6elJ586dSUhIkN9dGxcUFERUVFS917p161bbTdQarqsk2bIR9vb29OvXj1WrVtW+ZjQaWbVqFYMGDbJgZMKU2rdvT2BgYL3zXFBQwNatW+U82wBFUXjkkUdYunQpq1evpn379vXW9+vXD71eX+/8HjlyhKSkJDm/NspoNFJeXi7n1saNGjWKffv2sXv37tqlf//+3H777bWP5fy2HkVFRRw7doygoCD53bVxQ4YMOWeKlaNHjxIeHg5YyXVVi5ThECbx/fffKw4ODsqCBQuUgwcPKvfdd5/i6emppKenWzo00QSFhYXKrl27lF27dimAMnv2bGXXrl1KYmKioiiK8sYbbyienp7KL7/8ouzdu1e57rrrlPbt2yulpaUWjlxczIMPPqh4eHgoa9euVdLS0mqXkpKS2m0eeOABJSwsTFm9erWyY8cOZdCgQcqgQYMsGLVorBkzZijr1q1TTpw4oezdu1eZMWOGotFolOXLlyuKIue2tTmzGqGiyPm1ZU899ZSydu1a5cSJE8rGjRuV0aNHK76+vkpmZqaiKHJubdm2bdsUOzs75fXXX1fi4+OVb7/9VnF2dla++eab2m0sfV0lyZaNmTt3rhIWFqbY29srMTExypYtWywdkmiiNWvWKMA5y5QpUxRFUcuUvvDCC0pAQIDi4OCgjBo1Sjly5IhlgxaN0tB5BZQvvviidpvS0lLloYceUry8vBRnZ2dlwoQJSlpamuWCFo121113KeHh4Yq9vb3i5+enjBo1qjbRUhQ5t63N2cmWnF/bdfPNNytBQUGKvb29EhISotx8881KQkJC7Xo5t7btt99+U3r06KE4ODgoXbt2VT799NN66y19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30xSUhJ2u52hQ4fyyiuvtNjXokWLMJlMvPXWW/zhD38gOTmZsLAwLrroIvLy8nz5LYqISCejkS0REekWevbsydKlS9m0aRPDhg1rdZv/+7//45e//CXjx4/ntttuA6Bv374AFBYWMnHiREwmE3feeScJCQl89tln3HLLLVRWVnLPPfe02Nfjjz+OyWTivvvuo6ioiLlz5zJlyhTWrVtHSEiIT79XERHpHHTPloiIdAtfffUV559/PgDjx4/n1FNP5eyzz+bMM8/EarV6tzvcPVu//OUv+fTTT9m4cSNxcXHe9ddccw2fffYZ+fn5hISEsGjRIs4880zS0tLYsmULERERACxYsICrrrqK559/nt/85je+/4ZFRMTvdBmhiIh0C+eccw5Lly7loosuYv369Tz11FNMnTqVtLQ0PvzwwyO+1zAM3n33XS688EIMw6CkpMT7mDp1KhUVFaxZs6bFe2644QZv0AK44oorSElJ4dNPP/XJ9yciIp2PwpaIiHQb48aN47333qOsrIwVK1Zw//33U1VVxRVXXMHmzZsP+77i4mLKy8v5+9//TkJCQovHTTfdBBzaZKN///4tnptMJvr168fOnTvb/fsSEZHOSfdsiYhIt2Oz2Rg3bhzjxo1jwIAB3HTTTSxYsICHH3641e3dbjcA119/PdOnT291mxEjRvisXhERCUwKWyIi0q2NHTsWgPz8fMAzAnWwhIQEIiIicLlcTJkypU373b59e4vnhmGwY8cOhTIRkW5ElxGKiEi38O2339JaT6jme6gGDhwIQFhYGOXl5S22sVgsXH755bz77rts2rTpkH0UFxcfsu5f//oXVVVV3ufvvPMO+fn53iYdIiLS9akboYiIdAvDhg2jtraWSy+9lEGDBuFwOFiyZAlvvfUW6enprF27lujoaC644AIWL17MY489RmpqKr1792bChAkUFhYyYcIEiouLufXWWxkyZAilpaWsWbOGr7/+mtLSUgBvN8Lhw4djMpm46aabKCwsZO7cufTo0YP169cTGhrq55+GiIh0BIUtERHpFj7//HMWLFjAkiVL2L17Nw6Hg4yMDM4//3wefPBB78TGmZmZ3HbbbaxcuZK6ujqmT5/ubQNfVFTEY489xocffkhBQQFxcXEMHTqUadOmceuttwL7w9Ybb7zBhg0b+Oc//0lVVRVnnXUWf/3rX8nIyPDXj0BERDqYwpaIiEg7ag5bCxYs4IorrvB3OSIi4ke6Z0tERERERMQHFLZERERERER8QGFLRERERETEB3TPloiIiIiIiA9oZEtERERERMQHFLZERERERER8QGFLRERERETEBxS2REREREREfEBhS0RERERExAcUtkRERERERHxAYUtERERERMQHFLZERERERER8QGFLRERERETEB/5/1avcqzOcXJsAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA08AAAPcCAYAAACZzID3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3xb1f3/8dfVtmVb3isecfYkJA4JCXs0kLJpS+hgFb6FUtpS2n6BLy2rI52MX2mgtAXKKE1ZLatAGAmBEAohAbJ3nHhv2Za17+8P2U6c2ImdJSd+Px+P+7B0dXV1ZC6K3j7nfI5hmqaJiIiIiIiI7JUl3g0QERERERE5Eig8iYiIiIiI9IHCk4iIiIiISB8oPImIiIiIiPSBwpOIiIiIiEgfKDyJiIiIiIj0gcKTiIiIiIhIHyg8iYiIiIiI9IEt3g2Ih2g0SkVFBcnJyRiGEe/miIiIiIhInJimSUtLC/n5+Vgse+9bGpThqaKigsLCwng3Q0REREREBojt27dTUFCw12MGZXhKTk4GYr+glJSUOLdGRERERETixev1UlhY2JUR9mZQhqfOoXopKSkKTyIiIiIi0qfpPCoYISIiIiIi0gcKTyIiIiIiIn2g8CQiIiIiItIHg3LOk4iIiIjIkcI0TcLhMJFIJN5NOWLZ7XasVusBn0fhKc6iUZPVlV5cdgsjsvdd4UNEREREBo9gMEhlZSU+ny/eTTmiGYZBQUEBSUlJB3Qehac4+90b65i3cBNzphby6y8fE+/miIiIiMgAEY1G2bJlC1arlfz8fBwOR58qwkl3pmlSW1vLjh07GDly5AH1QA2I8DRv3jx++9vfUllZyfjx47nvvvs46aSTejz2yiuv5G9/+9se+8eNG8eqVasOdVMPuhnDM5i3cBPvrKvBNE39DyEiIiIiQKzXKRqNUlhYSGJiYrybc0TLyspi69athEKhAwpPcS8YMX/+fG688UZuu+02li9fzkknncTs2bMpKyvr8fj777+fysrKrm379u2kp6fzla985TC3/OCYVpJOosNKTUuAVRXeeDdHRERERAYYiyXuX9mPeAergyLu/yXuuecerr76aq655hrGjh3LfffdR2FhIQ8++GCPx3s8HnJzc7u2jz/+mMbGRq666qrD3PKDw2mzcsKITAAWrquJc2tERERERKQ3cQ1PwWCQZcuWMWvWrG77Z82axZIlS/p0jr/+9a+ceeaZFBcXH4omHhanjc4G4J11tXFuiYiIiIiI9Cau4amuro5IJEJOTk63/Tk5OVRVVe3z+ZWVlfznP//hmmuu2etxgUAAr9fbbRtITh2dBcDyskYa24Jxbo2IiIiIyMBy6qmncuONN8a7GfEftgd7jkHsa+GExx57jNTUVC688MK9Hjd37lw8Hk/XVlhYeCDNPejyUxMYk5tM1IR3N6j3SURERESOTIZh7HW78sor9+u8zz//PD/72c8ObmP3Q1zDU2ZmJlardY9eppqamj16o3ZnmiaPPPIIl112GQ6HY6/H3nrrrTQ3N3dt27dvP+C2H2yndg7dW6t5TyIiIiJyZNq1sNt9991HSkpKt333339/t+NDoVCfzpuenk5ycvzXRI1reHI4HJSWlrJgwYJu+xcsWMDMmTP3+txFixaxceNGrr766n2+jtPpJCUlpds20JzWMXRv0fpaIlEzzq0RERERkYHGNE18wXBcNtPs2/fTXQu7eTweDMPouu/3+0lNTeWf//wnp556Ki6XiyeffJL6+nq++tWvUlBQQGJiIhMnTuTpp5/udt7dh+0NHTqUX/7yl3zzm98kOTmZoqIiHn744YP56+5R3Nd5uummm7jsssuYOnUqM2bM4OGHH6asrIzrrrsOiPUalZeX8/jjj3d73l//+lemT5/OhAkT4tHsg660OI1kl41GX4gV25soLU6Ld5NEREREZABpD0UYd/vrcXnt1XefRaLj4ESHm2++md///vc8+uijOJ1O/H4/paWl3HzzzaSkpPDKK69w2WWXMWzYMKZPn97reX7/+9/zs5/9jP/7v//j2Wef5dvf/jYnn3wyY8aMOSjt7Encw9OcOXOor6/n7rvvprKykgkTJvDqq692Vc+rrKzcY82n5uZmnnvuuT26/Y5kNquFU0Zl8fJnlby+qkrhSURERESOSjfeeCMXX3xxt30/+tGPum5/97vf5bXXXuOZZ57Za3j64he/yPXXXw/EAtm9997LwoULj+7wBHD99dd3vfHdPfbYY3vs83g8+Hy+Q9yqw+/cY/J5+bNKXvq0glvOHoPFcnAW8xIRERGRI1+C3crqu8+K22sfLFOnTu12PxKJ8Ktf/Yr58+dTXl5OIBAgEAjgdrv3ep5jjjmm63bn8MCamkNbP2BAhCeJOXV0FskuG5XNfj7a2sD0YRnxbpKIiIiIDBCGYRy0oXPxtHso+v3vf8+9997Lfffdx8SJE3G73dx4440Eg3tfwsdut3e7bxgG0Wj0oLd3VwOiVLnEuOxWZk/IBeDfn1bEuTUiIiIiIofe4sWLueCCC/jGN77BpEmTGDZsGBs2bIh3s3qk8DTAnD9pCACvfl5JMHxok7OIiIiISLyNGDGCBQsWsGTJEtasWcO11167x1JGA4XC0wAzY3gGmUlOmnwh3tuoBXNFRERE5Oj205/+lClTpnDWWWdx6qmnkpuby4UXXhjvZvXIMPtatP0o4vV68Xg8NDc3D8g1n+56aRWPvr+VC47N5/5LJ8e7OSIiIiISB36/ny1btlBSUoLL5Yp3c45oe/td9icbqOdpADp/Uj4Ab6yqpsXft1WXRURERETk0FJ4GoCOLUxlRHYS7aEIj3+wLd7NERERERERFJ4GJMMwuOG0EQD8ZfFm2gLhOLdIREREREQUngaoc4/JoyTTTaMvxJNL1fskIiIiIhJvCk8DlM1q4fpThwPw8LubaQ9G4twiEREREZHBTeFpALtw8hAK0xOobwvy1IfqfRIRERERiSeFpwHMbrXwnVNjc5/mLdxEc7sq74mIiIiIxIvC0wD3pdIChme5aWgL8oe3NsS7OSIiIiIig5bC0wBnt1r46bnjAHhsyVY21bbGuUUiIiIiIofOqaeeyo033th1f+jQodx33317fY5hGPzrX/86pO0Chacjwqmjszl9TDbhqMkvXlkT7+aIiIiIiPTovPPO48wzz+zxsQ8++ADDMPjkk0/6dc6PPvqIb33rWwejeQdM4ekI8ZNzxmKzGLy9toa31lTHuzkiIiIiInu4+uqrefvtt9m2bc9iZ4888gjHHnssU6ZM6dc5s7KySExMPFhNPCAKT0eIYVlJXHXCUABu+uenbK1ri2+DRERERER2c+6555Kdnc1jjz3Wbb/P52P+/PlceOGFfPWrX6WgoIDExEQmTpzI008/vddz7j5sb8OGDZx88sm4XC7GjRvHggULDsE76ZnC0xHkh7NGc2xhKs3tIa55/GO8flXfExERERk0TBOCbfHZTLNPTbTZbFx++eU89thjmLs855lnniEYDHLNNddQWlrKyy+/zMqVK/nWt77FZZddxocfftin80ejUS6++GKsVitLly7loYce4uabb96vX+f+sB22V5ID5rJbefiyUs5/4H021rTyvaeX85fLp2KzKgOLiIiIHPVCPvhlfnxe+/8qwOHu06Hf/OY3+e1vf8vChQs57bTTgNiQvYsvvpghQ4bwox/9qOvY7373u7z22ms888wzTJ8+fZ/nfvPNN1mzZg1bt26loKAAgF/+8pfMnj17P95U/+lb9xEmO8XFny+fistuYeG6Wv732c+IRPv2lwARERERkUNtzJgxzJw5k0ceeQSATZs2sXjxYr75zW8SiUT4xS9+wTHHHENGRgZJSUm88cYblJWV9enca9asoaioqCs4AcyYMeOQvI+eqOfpCDSxwMP9l07m+qc+4fnl5ditFuZePBGLxYh300RERETkULEnxnqA4vXa/XD11Vdzww038Mc//pFHH32U4uJizjjjDH77299y7733ct999zFx4kTcbjc33ngjwWCwT+c1exg+aBiH7zvwgOh5mjdvHiUlJbhcLkpLS1m8ePFejw8EAtx2220UFxfjdDoZPnx4V7IdLM4an8v9lx6LxYD5H2/nrpdWxbtJIiIiInIoGUZs6Fw8tn4GlEsuuQSr1crf//53/va3v3HVVVdhGAaLFy/mggsu4Bvf+AaTJk1i2LBhbNiwoc/nHTduHGVlZVRU7AyRH3zwQb/adiDiHp7mz5/PjTfeyG233cby5cs56aSTmD179l677i655BLeeust/vrXv7Ju3TqefvppxowZcxhbPTCce0w+91xyLIYBf/tgG+9tqIt3k0RERERESEpKYs6cOfzf//0fFRUVXHnllQCMGDGCBQsWsGTJEtasWcO1115LVVVVn8975plnMnr0aC6//HI+/fRTFi9ezG233XaI3sWe4h6e7rnnHq6++mquueYaxo4dy3333UdhYSEPPvhgj8e/9tprLFq0iFdffZUzzzyToUOHMm3aNGbOnHmYWz4wXDh5CFfMGArAHS+uJBiOxrdBIiIiIiLEhu41NjZy5plnUlRUBMBPf/pTpkyZwllnncWpp55Kbm4uF154YZ/PabFYeOGFFwgEAkybNo1rrrmGX/ziF4foHezJMHsaOHiYBINBEhMTeeaZZ7jooou69n//+99nxYoVLFq0aI/nXH/99axfv56pU6fyxBNP4Ha7Of/88/nZz35GQkJCj68TCAQIBAJd971eL4WFhTQ3N5OSknLw39hh1twe4vTfLaS+Lcj/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OOOMM9i8efPBaaEMOp7OeU/tmvckIiIiIgPHfoenjIwMtm/fDsA777xDTk4OI0aMAGJrMWnOk+yvzqIRzSoaISIiIiIDyH4vknvSSSdx5513UldXx7333ss555zT9diGDRsoLCw8KA2UwSdV5cpFREREZADa756nuXPnYhgG3//+93E6ndx+++1djz3zzDMcf/zxB6WBMvh4VK5cRERERAag/e55KikpYe3atTQ0NJCent7tsQceeIDc3NwDbpwMTp3lyhWeRERERGQg2e/w1Gn34OT3+5k4ceKBnlYGsa45TyoYISIiIiIDyH4P25s/fz7z5s3rur9x40bGjRuH2+3mpJNOorGx8aA0UAafrjlPKlUuIiIiIgPIfoen3/3ud7S1tXXd//GPf0xjYyPf//73Wbt2Lb/85S8PSgNl8FGpchEREREZiPY7PG3evJkJEyYAsaF6r7/+Or/+9a+55557+PnPf86//vWvg9VGGWQ050lEREREBqL9Dk8+nw+32w3Ahx9+SCAQYPbs2QCMGzeO8vLyg9NCGXRSE2PD9jTnSUREREQGkv0OT3l5eaxYsQKA1157jdGjR5OVlQVAY2MjiYmJB6WBMvikdpUq15wnERERERk49rva3sUXX8xtt93GokWL+M9//sPNN9/c9dhnn33G8OHDD0oDZfDpHLbX3B4iGjWxWIw4t0hERERE5ADC089+9jNaW1tZsmQJX/va1/jf//3frsdefvllzjzzzIPSQBl8UjrCU9SElkAYT8d9EREREZF42u/wlJCQwEMPPdTjY0uXLt3vBom47FYS7FbaQxGafSGFJxEREREZEPZ7ztOu1q9fzwcffMCGDRsOxulEds57ate8JxEREREZGA4oPD3zzDMUFxczduxYTjzxRMaMGUNxcTHPPvvswWqfDFIelSsXERERkQFmv8PTq6++yqWXXorH4+FXv/oVjz/+OHPnzsXj8XDppZfyn//8p8/nmjdvHiUlJbhcLkpLS1m8eHGfnvf+++9js9k49thj9/NdyECVqoVyRURERGSAMUzTNPfniSeccAIpKSm88sorWCw7M5hpmsyePZuWlhbef//9fZ5n/vz5XHbZZcybN48TTjiBP/3pT/zlL39h9erVFBUV9fq85uZmpkyZwogRI6iuru4qm94XXq8Xj8dDc3MzKSkpfX6eHD7ffnIZ/1lZxc8uGM9lM4bGuzkiIiIicpTqTzbY756nFStWcP3113cLTgCGYXD99dfz6aef9uk899xzD1dffTXXXHMNY8eO5b777qOwsJAHH3xwr8+79tpr+drXvsaMGTP29y3IANbZ89SoYXsiIiIiMkDsd3iyWq0Egz1P5g+FQnuEqp4Eg0GWLVvGrFmzuu2fNWsWS5Ys6fV5jz76KJs2beKOO+7oU1sDgQBer7fbJgObJ8EBaM6TiIiIiAwc+x2ejjvuOH7zm9/Q3t7ebX8gEOB3v/sd06dP3+c56urqiEQi5OTkdNufk5NDVVVVj8/ZsGEDt9xyC0899RQ2W98qrXfOxercCgsL+/Q8iR9V2xMRERGRgWa/13m66667OOOMMxg2bBhf+cpXyM3NpbKykueff576+nrefvvtPp/LMIxu903T3GMfQCQS4Wtf+xp33XUXo0aN6vP5b731Vm666aau+16vVwFqgEvtqLbX3NHzVOP10x6KUJzhjmezRERERGQQ2+/wdOKJJ/LGG29wyy238Mc//hHTNLFYLEyfPp2nn36agoKCfZ4jMzMTq9W6Ry9TTU3NHr1RAC0tLXz88ccsX76cG264AYBoNIppmthsNt544w1OP/30PZ7ndDpxOp37+U4lHnattheORLnwj+9T3RLgVxdP5CtTFXxFRERE5PA7oHWeTjnlFD744ANaWlrYvn07Xq+X999/n9raWkpKSvb5fIfDQWlpKQsWLOi2f8GCBcycOXOP41NSUvj8889ZsWJF13bdddcxevRoVqxY0aehgnJk2DnnKchHWxupaPYTiZr8+NnP+MNbG2gPRvikrJF/LS9nxfYm/KFInFssIiIiIke7/e552lViYiKJiYn79dybbrqJyy67jKlTpzJjxgwefvhhysrKuO6664DYkLvy8nIef/xxLBYLEyZM6Pb87OxsXC7XHvvlyNbZ89TcHuKN1bGeyTyPi8pmP79fsJ573lzPrkX2bRaDaSXp3HfpsWQnu+LRZBERERE5yh2U8HQg5syZQ319PXfffTeVlZVMmDCBV199leLiYgAqKyspKyuLcyvlcOsatucL8caqagDuOn881V4/d7y4iqgJmUlOhmYksqWujfq2IEs21XPrc5/zlyum9jhnTkRERETkQOz3Irl789xzz3HJJZcQiQzMoVRaJHfgaw9GGHv7a133XXYLy386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iHNq8MjTTz/9xFNPPUVUVBQALi4udOnShRdffJHS0lIeeughFixYUO/zTZ48mezsbJ599lnS0tLo27cvixcvJi4uDoC0tLQaAZmfnx9LlizhgQceYMiQIbRv354bbriBv/71rw19K06pauSpvUaeREREREScSoODp5SUFDp27IirqysuLi4UFRVVP3fNNddw8803N7gT9913H/fdd99pn5s/f36ttp49e7JkyZIGv875ILsyeArVyJOIiIiIiFNpcNpeSEgIeXl5AERFRbFjx47q53JycqioqGi63rVBJ9L2NPIkIiIiIuJMGjzyFB8fz86dO7nqqqu48sorefbZZwkICMDDw4PHHnuMYcOGNUc/24xsFYwQEREREXFKDQ6eZs6cyYEDBwD4y1/+wtq1a6sLOnTp0oVXXnmlaXvYhpSU2SgqswEqGCEiIiIi4mwaHDyNHTuWsWPHAhAaGkpiYiI7duzAYrHQs2dP3NwatXSUcKJYhIebC/6e+j2KiIiIiDiTBs15Kikp4aKLLuLHH3+sbrNYLPTr14++ffsqcDpH2UXmfKcQX48a62aJiIiIiIjjNSh48vb2Zvv27QqSmklWgcqUi4iIiIg4qwZX20tISGD9+vXN0Zc2L7uoqliE5juJiIiIiDibBg8hzZkzhwkTJhAREcGkSZPw8/Nrjn61SSpTLiIiIiLivBo18pSSksLtt99OYGAg/v7+BAQEVG+BgYHN0c82IUtlykVEREREnFaDR56uv/56FTNoJtmVI09K2xMRERERcT4NDp7mz5/fDN0QgILScgACvNwd3BMRERERETlVg9P2pPlYK+wAeLrrn0VERERExNk0eOTpvffeO+s+U6dObVRn2rqyquDJTcGTiIiIiIizaXDwNG3atNO2nzwPSsFT41SPPLm5OrgnIiIiIiJyqgYHT4cOHarVlpWVxZdffsnChQv5+OOPm6RjbZG1wgaAh0aeREREREScToODp7i4uNO2xcfHU15eziuvvKKiEo2ktD0REREREefVpHfpl156KV999VVTnrJNqUrb08iTiIiIiIjzadK79MOHD+Pqqvk6jVWmOU8iIiIiIk6rwWl7y5cvr9VmtVrZtm0bs2fP5tJLL22SjrVFGnkSEREREXFeDQ6eRo8eXaOyHoBhGACMHTuW//u//2uanrVBmvMkIiIiIuK8Ghw8LV26tFabl5cXHTt2JDw8vEk61RbZ7QZlNo08iYiIiIg4qwYHT6NGjWqOfrR5VYETaORJRERERMQZNfgufd++ffzyyy+nfe6XX35h//7959yptqhqvhNo5ElERERExBk1+C79wQcf5Msvvzztc19//TV//OMfz7lTbVHZycGTq4InERERERFn0+C79A0bNjBy5MjTPjdq1Cg2bNhwzp1qi6wVNsBM2Tu1IIeIiIiIiDheg4OnvLw8/Pz8Tvuct7c3x48fP+dOtUVlKlMuIiIiIuLUGnyn3qFDB9avX3/a59avX09kZOQ5d6otsmqBXBERERERp9bg4GnixIk8//zztUqWL1u2jBdeeIHrrruuyTrXlmiNJxERERER59bgUuVPPvkk33//PWPHjqV79+5ER0eTkpLCvn376N27N08//XQzdLP1syp4EhERERFxag2+Uw8MDGTt2rU8/fTTBAcHc/jwYYKDg3nmmWdYs2YNAQEBzdHPVk9znkREREREnFuDR54A/Pz8eOKJJ3jiiSeauj9t1snV9kRERERExPk0+E49MzOTffv2nfa5ffv2kZWV1eBOzJs3j06dOuHl5UV8fDwrVqyo13GrVq3Czc2NgQMHNvg1nY1VI08iIiIiIk6twXfq999/Py+++OJpn5szZw4PPPBAg863cOFCZs2axeOPP05iYiIjRoxg/PjxJCcn13lcXl4eU6dO5dJLL23Q6zmrMlXbExERERFxag0OnlatWsXll19+2ucuv/xyVq5c2aDzvfTSS0yfPp0777yTXr16MXfuXGJiYnjttdfqPO6ee+7h5ptvJiEhoUGv56yq0vY08iQiIiIi4pwafKeelZVF+/btT/tcu3btyMzMrPe5ysrK2LRpE+PGjavRPm7cOFavXn3G49555x0OHDjAU089Va/XsVqt5Ofn19icjUqVi4iIiIg4twbfqYeHh7N9+/bTPrd9+/YzBlank5WVhc1mIzw8vNZrpKenn/aY/fv388gjj/Dhhx/i5la/ehezZ88mMDCweouJial3H1uK5jyJiIiIiDi3Bt+pX3HFFfztb3+rVTRi//79zJ49myuvvLLBnbBYLDUeG4ZRqw3AZrNx880388wzz9C9e/d6n//RRx8lLy+vejty5EiD+9jctM6TiIiIiIhza3Cp8qeffppvvvmG/v37M2bMmOpFcpcuXUr79u155pln6n2ukJAQXF1da40yZWRk1BqNAigoKGDjxo0kJiYyc+ZMAOx2O4Zh4Obmxg8//MAll1xS6zhPT088PT0b+E5blkaeREREREScW4Pv1KOioti4cSO33HIL27Zt491332Xbtm3ceuutbNy4EXd393qfy8PDg/j4eJYsWVKjfcmSJQwfPrzW/gEBAWzfvp0tW7ZUbzNmzKBHjx5s2bKFoUOHNvTtOA1V2xMRERERcW6NWiQ3KiqKt956q/qx3W7nu+++Y+bMmXzzzTdYrdZ6n+vBBx9kypQpDBkyhISEBN544w2Sk5OZMWMGYKbcpaam8t577+Hi4kLfvn1rHB8WFoaXl1et9vONFskVEREREXFujQqeqhw4cIC3336bd999l7S0NDw8PLj++usbdI7JkyeTnZ3Ns88+S1paGn379mXx4sXExcUBkJaWdtY1n1qDMqXtiYiIiIg4NYthGEZDDigtLWXRokW89dZbrFixorq4w4MPPsgjjzzSoGp7jpKfn09gYCB5eXkEBAQ4ujsAPLRoK59sSuHhK3py7+guju6OiIiIiEib0JDYoN7DHBs2bGDGjBlEREQwbdo0Nm/ezLRp0/jmm28wDINrrrnmvAicnJVGnkREREREnFu90vb69+/Pzp07AUhISOCOO+5g8uTJ+Pr6kpeX16wdbCs050lERERExLnVK3jasWMHFouFq666iueff57evXs3d7/aHI08iYiIiIg4t3rdqc+dO5f+/fvzzTff0K9fPxISEvjPf/5DQUFBc/evzdAiuSIiIiIizq1ed+q/+93vSExMZP369dx9993s2bOHu+++m8jISO6++24sFgsWi6W5+9qqlSl4EhERERFxag26Ux8yZAivvfYaaWlpvPvuuwwZMoRPPvkEwzCYPn06c+bMITs7u7n62qpZtUiuiIiIiIhTa9Qwh5eXF1OmTGHZsmXs27ePRx55hOLiYv70pz8RExPT1H1sE6oKRmjOk4iIiIiIczrnO/UuXbrw3HPPkZyczFdffcUVV1zRFP1qc5S2JyIiIiLi3OpVba8+XFxcuPrqq7n66qub6pRtilXV9kREREREnJru1J1EmeY8iYiIiIg4NQVPTkIjTyIiIiIizk136k5Cc55ERERERJyb7tSdgN1uUGZT8CQiIiIi4sx0p+4EqgInUNqeiIiIiIiz0p26E6ia7wQqGCEiIiIi4qwUPDmBspOCJ3dXiwN7IiIiIiIiZ9Jk6zxJ41krbIA538liUfAkIiIiIicYhkFFRQU2m83RXTlvubu74+p67hleCp6cQJnKlIuIiIjIaZSVlZGWlkZxcbGju3Jes1gsREdH4+fnd07nUfDkBKxaIFdERERETmG32zl06BCurq5ERUXh4eGhLKVGMAyDzMxMUlJS6Nat2zmNQCl4cgJa40lERERETlVWVobdbicmJgYfHx9Hd+e8FhoaSlJSEuXl5ecUPOlu3QlYFTyJiIiIyBm4uOge8Vw11Yid/iWcgOY8iYiIiIg4P92tO4GTq+2JiIiIiEhNo0ePZtasWY7uhuY8OQOrRp5EREREpBU4W3rcbbfdxvz58xt83s8++wx3d/dG9qrpKHhyAmWqticiIiIirUBaWlr1zwsXLuTJJ59k79691W3e3t419i8vL69XUBQcHNx0nTwHGupwAlVpexp5EhEREZHzWURERPUWGBiIxWKpflxaWkpQUBD//e9/GT16NF5eXnzwwQdkZ2dz0003ER0djY+PD/369WPBggU1zntq2l7Hjh157rnnuOOOO/D39yc2NpY33nij2d+f7tadgEqVi4iIiMjZGIZBcVmFQzbDMJrsfTz88MP87ne/Y/fu3Vx++eWUlpYSHx/PN998w44dO7j77ruZMmUK69atq/M8c+bMYciQISQmJnLfffdx7733smfPnibr5+kobc8JqFS5iIiIiJxNSbmN3k9+75DX3vXs5fh4NE3oMGvWLCZNmlSj7aGHHqr++YEHHuC7775j0aJFDB069IznufLKK7nvvvsAMyB7+eWXWbZsGT179mySfp6OgicnoIIRIiIiItJWDBkypMZjm83G888/z8KFC0lNTcVqtWK1WvH19a3zPP3796/+uSo9MCMjo1n6XEXBkxOwqmCEiIiIiJyFt7sru5693GGv3VRODYrmzJnDyy+/zNy5c+nXrx++vr7MmjWLsrKyOs9zaqEJi8WC3W5vsn6ejoInJ6BFckVERETkbCwWS5OlzjmTFStWMGHCBG699VYA7HY7+/fvp1evXg7uWW1Ocbc+b948OnXqhJeXF/Hx8axYseKM+3722WdcdtllhIaGEhAQQEJCAt9/75jcz6aiRXJFREREpK3q2rUrS5YsYfXq1ezevZt77rmH9PR0R3frtBx+t75w4UJmzZrF448/TmJiIiNGjGD8+PEkJyefdv/ly5dz2WWXsXjxYjZt2sSYMWO45pprSExMbOGeNx2NPImIiIhIW/XEE08wePBgLr/8ckaPHk1ERAQTJ050dLdOy2I0Zd3BRhg6dCiDBw/mtddeq27r1asXEydOZPbs2fU6R58+fZg8eTJPPvlkvfbPz88nMDCQvLw8AgICGtXvpvTQoq18simFh6/oyb2juzi6OyIiIiLiBEpLSzl06FB1hpY0Xl2/y4bEBg4d6igrK2PTpk2MGzeuRvu4ceNYvXp1vc5ht9spKCioc9Vhq9VKfn5+jc2ZaORJRERERMT5OfRuPSsrC5vNRnh4eI328PDweuc5zpkzh6KiIm644YYz7jN79mwCAwOrt5iYmHPqd1PTnCcREREREefnFHfrFoulxmPDMGq1nc6CBQt4+umnWbhwIWFhYWfc79FHHyUvL696O3LkyDn3uSlp5ElERERExPk5tNZhSEgIrq6utUaZMjIyao1GnWrhwoVMnz6dRYsWMXbs2Dr39fT0xNPT85z721xOrPOk4ElERERExFk59G7dw8OD+Ph4lixZUqN9yZIlDB8+/IzHLViwgGnTpvHRRx9x1VVXNXc3m12ZgicREREREafn8FW2HnzwQaZMmcKQIUNISEjgjTfeIDk5mRkzZgBmyl1qairvvfceYAZOU6dO5ZVXXmHYsGHVo1be3t4EBgY67H2cixMjT023crOIiIiIiDQthwdPkydPJjs7m2effZa0tDT69u3L4sWLiYuLAyAtLa3Gmk+vv/46FRUV3H///dx///3V7bfddhvz589v6e43iaqCEZrzJCIiIiLivBwePAHcd9993Hfffad97tSAaNmyZc3foRamtD0REREREeenu3UnoLQ9ERERERHnp+DJCahUuYiIiIiIafTo0cyaNav6cceOHZk7d26dx1gsFr744otm7RcoeHIKKlUuIiIiIq3BNddcc8ZlhNasWYPFYmHz5s0NOueGDRu4++67m6J750x3605AI08iIiIi0hpMnz6dn3/+mcOHD9d67u2332bgwIEMHjy4QecMDQ3Fx8enqbp4TnS37mB2u0GZTSNPIiIiInL+u/rqqwkLC6tV9K24uJiFCxcyceJEbrrpJqKjo/Hx8aFfv34sWLCgznOemra3f/9+Ro4ciZeXF7179661Zmxzcopqe21ZVeAEGnkSERERkToYBpQXO+a13X3AYjnrbm5ubkydOpX58+fz5JNPYqk8ZtGiRZSVlXHnnXeyYMECHn74YQICAvj222+ZMmUKnTt3ZujQoWc9v91uZ9KkSYSEhLB27Vry8/NrzI9qbgqeHKxqvhOo2p6IiIiI1KG8GJ6LcsxrP3YUPHzrtesdd9zBiy++yLJlyxgzZgxgpuxNmjSJDh068NBDD1Xv+8ADD/Ddd9+xaNGiegVPP/74I7t37yYpKYno6GgAnnvuOcaPH9+IN9VwCp4crOyk4Mnd9ezRvIiIiIiIM+vZsyfDhw/n7bffZsyYMRw4cIAVK1bwww8/YLPZeP7551m4cCGpqalYrVasViu+vvULzHbv3k1sbGx14ASQkJDQXG+lFgVPDmatsAHmfCdLPYZCRURERKSNcvcxR4Ac9doNMH36dGbOnMmrr77KO++8Q1xcHJdeeikvvvgiL7/8MnPnzqVfv374+voya9YsysrK6nVewzBqtbXkPbSCJwdTpT0RERERqReLpd6pc452ww038Pvf/56PPvqId999l7vuuguLxcKKFSuYMGECt956K2DOYdq/fz+9evWq13l79+5NcnIyR48eJSrKTGFcs2ZNs72PU+mO3cFOrPGk+U4iIiIi0jr4+fkxefJkHnvsMY4ePcq0adMA6Nq1K0uWLGH16tXs3r2be+65h/T09Hqfd+zYsfTo0YOpU6eydetWVqxYweOPP95M76I2BU8OVqYFckVERESkFZo+fTrHjx9n7NixxMbGAvDEE08wePBgLr/8ckaPHk1ERAQTJ06s9zldXFz4/PPPsVqtXHjhhdx555387W9/a6Z3UJvS9hzMquBJRERERFqhhISEWnOUgoOD+eKLL+o8btmyZTUeJyUl1XjcvXt3VqxYUaPtdHOhmoPu2B1Mc55ERERERM4PumN3sJOr7YmIiIiIiPPSHbuDqWCEiIiIiMj5QcGTgyltT0RERETk/KA7dgdT2p6IiIiIyPlBd+wOppEnEREREalLS1WSa82a6neoUuUO1isygLtHdqZ7uL+juyIiIiIiTsTd3R2A4uJivL29Hdyb81tZWRkArq7nVmdAwZODDekYzJCOwY7uhoiIiIg4GVdXV4KCgsjIyADAx8cHi8Xi4F6df+x2O5mZmfj4+ODmdm7hj4InEREREREnFRERAVAdQEnjuLi4EBsbe87Bp4InEREREREnZbFYiIyMJCwsjPLyckd357zl4eGBi8u51xhQ8CQiIiIi4uRcXV3Peb6OnDuVeBMREREREakHBU8iIiIiIiL1oOBJRERERESkHtrknKeqRbLy8/Md3BMREREREXGkqpigPgvptsngqaCgAICYmBgH90RERERERJxBQUEBgYGBde5jMeoTYrUydrudo0eP4u/v7xQLjeXn5xMTE8ORI0cICAhwdHfEyej6kLro+pC66PqQuuj6kLq0pevDMAwKCgqIioo6aznzNjny5OLiQnR0tKO7UUtAQECrvzil8XR9SF10fUhddH1IXXR9SF3ayvVxthGnKioYISIiIiIiUg8KnkREREREROpBwZMT8PT05KmnnsLT09PRXREnpOtD6qLrQ+qi60PqoutD6qLr4/TaZMEIERERERGRhtLIk4iIiIiISD0oeBIREREREakHBU8iIiIiIiL1oOBJRERERESkHhQ8Odi8efPo1KkTXl5exMfHs2LFCkd3SRzg6aefxmKx1NgiIiKqnzcMg6effpqoqCi8vb0ZPXo0O3fudGCPpTktX76ca665hqioKCwWC1988UWN5+tzPVitVh544AFCQkLw9fXl2muvJSUlpQXfhTSXs10f06ZNq/V5MmzYsBr76PponWbPns0FF1yAv78/YWFhTJw4kb1799bYR58fbVd9rg99fpydgicHWrhwIbNmzeLxxx8nMTGRESNGMH78eJKTkx3dNXGAPn36kJaWVr1t3769+rm///3vvPTSS/zrX/9iw4YNREREcNlll1FQUODAHktzKSoqYsCAAfzrX/867fP1uR5mzZrF559/zscff8zKlSspLCzk6quvxmaztdTbkGZytusD4IorrqjxebJ48eIaz+v6aJ1++eUX7r//ftauXcuSJUuoqKhg3LhxFBUVVe+jz4+2qz7XB+jz46wMcZgLL7zQmDFjRo22nj17Go888oiDeiSO8tRTTxkDBgw47XN2u92IiIgwnn/++eq20tJSIzAw0Pj3v//dQj0URwGMzz//vPpxfa6H3Nxcw93d3fj444+r90lNTTVcXFyM7777rsX6Ls3v1OvDMAzjtttuMyZMmHDGY3R9tB0ZGRkGYPzyyy+GYejzQ2o69fowDH1+1IdGnhykrKyMTZs2MW7cuBrt48aNY/Xq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3n777eKFCxcc2GLqSgcPHhQBNHosWLBAFEX7+kN1dbW4dOlS0cfHR3RxcRFnzZolZmZmOuDTUGdrqX9UVVWJ06dPF/39/UW5XC5GRESICxYsaPS7Z//onZrqFwDEjz/+2LoPzx99V2v9g+cP+wiiKIrdN85FRERERETUM3HOExERERERkR0YPBEREREREdmBwRMREREREZEdGDwRERERERHZgcETERERERGRHRg8ERERERER2YHBExERERERkR0YPBEREREREdmBwRMREREREZEdGDwRERERERHZgcETERERERGRHRg8ERERERER2YHBExERERERkR0YPBEREREREdmBwRMREREREZEdGDwRERERERHZweHB0w8//IDZs2cjJCQEgiBg165drb7m8OHDGDVqFFQqFWJiYvD+++93fUOJiIiIiKhPkzm6AVqtFsOHD8djjz2G//u//2t1/7S0NNx999144okn8Omnn+LYsWN45pln4O/vb9frAcBsNiM3NxceHh4QBKGjH4GIiIiIiHooURRRUVGBkJAQSCQtjy0JoiiK3dSuVgmCgJ07d2LOnDnN7vPCCy9g9+7dSEpKsm5bsmQJzp07hxMnTtj1PtnZ2QgPD+9oc4mIiIiIqJfIyspCWFhYi/s4fOSprU6cOIHp06fbbJsxYwY2btwIg8EAuVze6DU6nQ46nc76fV28mJWVBU9Pz65tMBEREREROS2NRoPw8HB4eHi0um+PC57y8/MRGBhosy0wMBBGoxFFRUUIDg5u9Jo1a9bgT3/6U6Ptnp6eDJ6IiIiIiMiu6TwOLxjRHjd/sLqRpOY+8KpVq1BeXm59ZGVldXkbiYiIiIiod+lxI09BQUHIz8+32VZQUACZTAZfX98mX6NUKqFUKrujeURERERE1Ev1uJGncePGYd++fTbbvvvuOyQkJDQ534mIiIiIiKgzODx4qqysxNmzZ3H27FkAllLkZ8+eRWZmJgBLyt38+fOt+y9ZsgQZGRlYsWIFkpKS8NFHH2Hjxo14/vnnHdF8IiIiIiLqIxyetnf69GlMmTLF+v2KFSsAAAsWLMCmTZuQl5dnDaQAIDo6Gnv27MFzzz2Hd999FyEhIfj73/9u9xpPzsZgMqPaYIJEEOCudPivg4iIiIiImuFU6zx1F41GA7VajfLycodX29t0LA2v/O8yZg0LxjsPj3Ro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NCIlJaUbPjERETka0/aIiKhH8vX1xZEjR3Dq1CmsXbsW9913H65evYpVq1Zh6NChKCoqavH1X331FeLj4zFixAgYjUbrY8aMGRAEoVGwNW3aNGvgBABSqRTz5s3DtWvXrMUpiIiod2PwREREPVpCQgJeeOEFbN++Hbm5uXjuueeQnp6ON954o8XX3bhxA+fPn4dcLrd5eHh4QBTFRsFXUFBQo2PUbSsuLu68D0RERE6Lc56IiKjXkMvlWL16Nd566y1cvHixxX39/Pzg4uKCjz76qNnnG8rPz2+0T902X1/fdraYiIh6EgZPRETUI+Xl5SE4OLjR9qSkJABASEgIAEuBiOrq6kb7zZo1C6+//jp8fX0RHR3d6vt9//33uHHjhs2cp23btiE2NhZhYWEd+ShERNRDsGAEERH1SMOGDUNYWBhmz56NuLg4mM1mnD17FuvWrUNFRQWOHz+OoUOHYuHChdi6dSs++eQTxMTEQKVSYejQodBqtZg4cSIKCwvx3HPPYdiwYTCbzcjMzMR3332HlStXYuzYsQAsBSPCw8Ph4eGBl156yVptb+/evdi6dSvmzZvn4J8GERF1BwZPRETUI33++ef48ssvcerUKeTl5UGn0yE4OBiTJk3CqlWrMGjQIABARkYGnnzySZw4cQIVFRWIjIxEeno6AECr1WLt2rXYvn070tLS4OLigoiICNxxxx144YUXrKNMgiDg2WefxZAhQ7Bu3TpkZmYiNjYWL730Eh5++GFH/QiIiKibMXgiIiJqRV3w9M477zi6KURE5ECstkdERERERGQHBk9ERERERER2YLU9IiKiVjDDnYiIAI48ERERERER2YXBExERERERkR0YPBEREREREdmBwRMREREREZEdGDwRERERERHZgcETERERERGRHRg8ERERERER2YHBExERERERkR0YPBEREREREdnh/wMgpcy0LhXPKgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -1580,7 +1918,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 38, "id": "665606bd-ebb6-4d67-87cb-21275025840c", "metadata": {}, "outputs": [ @@ -1588,12 +1926,12 @@ "name": "stderr", "output_type": "stream", "text": [ - "Explain node 1406: 100%|█████████████████████████████████| 100/100 [00:00<00:00, 422.78it/s]\n" + "Explain node 53: 100%|██████████| 100/100 [00:00<00:00, 285.03it/s]\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1625,13 +1963,13 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 32, "id": "160adf41-29d0-423e-901a-f995027f79b7", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmsAAAGwCAYAAAD2XSKVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFh0lEQVR4nO3deXyNZ/7/8fdJZD9ZrJF0siBoaBCURpqiVUuNoctQjKVDt2lqtLTG2GtLlWKYLkMrqlRbbbWDEWpoiS2WaBFbKoNvo3QhEpVocv3+8HB+PRIkSHInfT0fj/vxOOe+r/u6PveVVN69l3NsxhgjAAAAWJJLeRcAAACAqyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsrEp5F4CbV1BQoG+//Va+vr6y2WzlXQ4AACgGY4zOnTun4OBgubhc/fwZYa0S+PbbbxUSElLeZQAAgBtw/Phx/e53v7vqdsJaJeDr6yvp0g/bz8+vnKsBAADFkZWVpZCQEMff8ashrFUCly99+vn5EdYAAKhgrncLEw8YAAAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsrEp5F4Bb545xSXLx8C7vMoBSl5HQtbxLAIAyw5k1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdbKWbt27TR06NDyLgMAAFgUYQ0AAMDCCGs3IC8vr7xLAAAAvxGWDmvt2rVTfHy84uPj5e/vrxo1amjMmDEyxkiSFi1apJYtW8rX11e1a9dWnz59dOrUKac+PvvsM9WvX1+enp5q3769Fi5cKJvNpjNnzjjabNq0SXFxcfLy8lJISIiGDBminJwcx/bw8HBNnDhR/fv3l5+fn5544glJ0ogRI9SgQQN5e3urbt26GjNmjC5evOjYb/z48WrWrJkWLVqk8PBw+fv769FHH9W5c+eueswrV66Uv7+/Fi9efCumEAAAVHCWDmuStHDhQlWpUkXbt2/X7Nmz9eqrr2r+/PmSpIsXL2rixInas2ePli9froyMDA0cONCx79GjR/XII4+oR48e2rNnj5588kmNGjXKqf/09HR17txZDz/8sL766iu9//772rRpk+Lj453aTZ8+XU2bNtXu3bs1ZswYSZKvr68SExO1f/9+zZ49W/PmzdPMmTML9b98+XKtWLFCK1as0BdffKGEhIQij3XJkiXq3bu3Fi9erL59+151TnJzc5WVleW0AACAyslmLp+msqB27drp1KlT2rdvn2w2myTpb3/7mz777DPt37+/UPsdO3bozjvv1Llz52S32/W3v/1NK1eu1Ndff+1oM3r0aE2ePFk//fSTAgICNHjwYLm6uurNN990tNm0aZPatm2rnJwceXp6Kjw8XNHR0frkk0+uWe/06dO1dOlS7dixQ9KlM2uvvPKKTp48KV9fX0nSiy++qC+//FJbt251HGOzZs1Uv359jRo1Sp9++qnatm17zXHGjx+vCRMmFFofMvQDuXh4X3NfoDLISOha3iUAwE3LysqSv7+/zp49Kz8/v6u2s/yZtbvuussR1CQpJiZGhw8fVn5+vnbu3Klu3bopNDRUvr6+jpBz7NgxSdLBgwd15513OvXXqlUrp/d79uxRYmKi7Ha7Y+nUqZMKCgp09OhRR7uWLVsWqu39999XbGysateuLbvdrtGjRzvGviw8PNwR1CQpKCio0KXaZcuW6bnnntPatWuvG9QkaeTIkTp79qxjOX78+HX3AQAAFZPlw9rVXLhwQZ06dZKfn58WL16slJQUx5mvkjwAkJ2drSeffFKpqamOZc+ePTp8+LDq1avnaOfj4+O035YtW9S3b1898MADWrFihXbv3q1Ro0YVGtvNzc3pvc1mU0FBgdO66Oho1axZU2+//baKc6LTw8NDfn5+TgsAAKicqpR3Adezbds2p/dbt25V/fr1deDAAf3www9KSEhQSEiIJDkuP17WsGFDrVq1ymldSkqK0/vmzZtr//79ioiIKFFdmzdvVlhYmNM9cP/73/9K1Mdl9erV04wZM9SuXTu5urpq7ty5N9QPAACofCx/Zu3YsWN6/vnndfDgQb333nuaM2eO/vrXvyo0NFTu7u6aM2eOvvnmG3322WeaOHGi075PPvmkDhw4oBEjRujQoUP64IMPlJiYKEmOS6sjRozQ5s2bFR8fr9TUVB0+fFiffvppoQcMrlS/fn0dO3ZMS5cuVXp6uv7xj39c9562a2nQoIHWr1+vjz76iA/JBQAADpYPa/3799fPP/+sVq1a6ZlnntFf//pXPfHEE6pZs6YSExP14YcfqlGjRkpISND06dOd9q1Tp46WLVumjz/+WE2aNNHrr7/uOBPm4eEhSWrSpIm++OILHTp0SHFxcYqOjtbYsWMVHBx8zbr+8Ic/6LnnnlN8fLyaNWumzZs3O54SvVENGzbUf//7X7333nsaNmzYTfUFAAAqB8s/DdqsWTPNmjXrlvU5efJkvfHGG5XqpvzLT5PwNCh+K3gaFEBlUNynQS1/z9rNeu2113TnnXeqevXqSk5O1iuvvHLdS5wAAABWUenD2uHDhzVp0iT9+OOPCg0N1bBhwzRy5MjyLgsAAKBYLH0ZFMXDZVD81nAZFEBlUGk+FBcAAOC3jLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsrNJ/3dRvyd4Jna75CcgAAKDi4cwaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhfENBpXIHeOS5OLhXd5lANeUkdC1vEsAgAqFM2sAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYa0MJSYmKiAgoLzLAAAAFQhhrQz16tVLhw4dKu8yAABABVKlvAu4UXl5eXJ3dy/vMkrEy8tLXl5e5V0GAACoQCrMmbV27dopPj5eQ4cOVY0aNdSpUyft3btXXbp0kd1uV2BgoPr166fvv//esU9BQYGmTZumiIgIeXh4KDQ0VJMnT5YktWnTRiNGjHAa4/Tp03Jzc9OXX3553XrCw8M1adIk9e/fX3a7XWFhYfrss890+vRpde/eXXa7XU2aNNGOHTsc+1x5GXT8+PFq1qyZFi1apPDwcPn7++vRRx/VuXPnrjl2bm6usrKynBYAAFA5VZiwJkkLFy6Uu7u7kpOTlZCQoHvvvVfR0dHasWOHVq9ere+++049e/Z0tB85cqQSEhI0ZswY7d+/X0uWLFFgYKAkqW/fvlq6dKmMMY7277//voKDgxUXF1esembOnKnY2Fjt3r1bXbt2Vb9+/dS/f3/96U9/0q5du1SvXj3179/faYwrpaena/ny5VqxYoVWrFihL774QgkJCdccd+rUqfL393csISEhxaoXAABUPDZzrSRhIe3atVNWVpZ27dolSZo0aZI2btyopKQkR5sTJ04oJCREBw8eVFBQkGrWrKm5c+dq8ODBhfo7ffq0goOD9d///tcRztq0aaN77rnnumFJunRmLS4uTosWLZIknTx5UkFBQRozZoxeeuklSdLWrVsVExOjzMxM1a5dW4mJiRo6dKjOnDkj6dKZtVdeeUUnT56Ur6+vJOnFF1/Ul19+qa1bt1517NzcXOXm5jreZ2VlKSQkRCFDP5CLh/d1awfKU0ZC1/IuAQAsISsrS/7+/jp79qz8/Pyu2q5C3bPWokULx+s9e/Zo/fr1stvthdqlp6frzJkzys3N1X333VdkXzVr1lTHjh21ePFixcXF6ejRo9qyZYvefPPNYtfTpEkTx+vLZ+yioqIKrTt16pRq165dZB/h4eGOoCZJQUFBOnXq1DXH9fDwkIeHR7HrBAAAFVeFugzq4+PjeJ2dna1u3bopNTXVaTl8+LDuueeeYt3I37dvXy1btkwXL17UkiVLFBUV5RS2rsfNzc3x2mazXXVdQUFBsfq4vM+12gMAgN+WChXWfq158+bat2+fwsPDFRER4bT4+Piofv368vLy0rp1667aR/fu3XXhwgWtXr1aS5YsUd++fcvwCAAAAK6vwoa1Z555Rj/++KN69+6tlJQUpaenKykpSY899pjy8/Pl6empESNG6MUXX9Q777yj9PR0bd26VW+99ZajDx8fH/Xo0UNjxoxRWlqaevfuXY5HBAAAUFiFumft14KDg5WcnKwRI0aoY8eOys3NVVhYmDp37iwXl0sZdMyYMapSpYrGjh2rb7/9VkFBQXrqqaec+unbt68eeOAB3XPPPQoNDS2PQwEAALiqCvM0KK7u8tMkPA2KioCnQQHgkuI+DVphL4MCAAD8FhDWirBx40bZ7farLgAAAGWlwt6zVppatmyp1NTU8i4DAACAsFYULy8vRURElHcZAAAAXAYFAACwMsIaAACAhRHWAAAALIywBgAAYGGENQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWxofiViJ7J3S65hfBAgCAioczawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYYQ1AAAA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", + "image/png": "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whoAAICFEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABbGNxiUIHVfWiMXN8+iLgMAgAKXNKV9UZdQaJhZAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrAAAAFkZYAwAAsDDCGgAAgIUR1gAAACyMsAYAAGBhhDUAAAALI6wBAABYGGENAADAwghrFtKqVSsNGTKkqMsAAAAWkq9hLT09PT+7AwAA+Me7qbDWqlUrDRgwQEOHDtWtt96qtm3bKi4uTg8++KDsdrv8/PzUo0cPnTp1yrFPZmampk6dqqCgILm5ualq1aqaNGmSJCksLEwjR450OsbJkyfl6uqqDRs2XLeejz76SI0aNZK3t7cqVaqkbt266cSJE47tGzdulM1m05o1a9SgQQN5eHjo3nvv1YkTJ/T111+rdu3a8vHxUdeuXfXnn3869ktLS9OgQYNUsWJFubu765577tGuXbsc26OiolS2bFmnWpYvXy6bzeZ4HRkZqdDQUC1YsECBgYHy9fXVY489pnPnzkmSevfurU2bNumNN96QzWaTzWZTUlLS9d8EAABQot30zNr8+fNVunRpRUdHa8qUKQoPD1doaKh2796t1atX67ffflPnzp0d7UeNGqWpU6dq7NixiouL06JFi+Tn5ydJ6t69uxYvXixjjKP9J598Ij8/P4WHh1+3lvT0dE2YMEH79u3T8uXLlZiYqN69e2drFxkZqdmzZ2vr1q06fvy4OnfurNdff12LFi3SV199pXXr1mnWrFmO9sOHD9fSpUs1f/587d27V0FBQYqIiNDp06fzdK4SEhK0fPlyrVy5UitXrtSmTZs0ZcoUSdIbb7yhsLAwPfnkk0pOTlZycrICAgJy7CctLU0pKSlOCwAAKJlK32wHQUFBmjZtmiRp3LhxatiwoV555RXH9rlz5yogIECHDh2Sv7+/3njjDc2ePVu9evWSJN1xxx265557JEldunTRc889py1btqhFixaSpEWLFqlbt25ycbl+ruzTp4/j59tvv13/+9//1LhxY50/f152u92xbeLEiWrevLkkqW/fvho1apQSEhJ0++23S5IeffRRbdiwQSNGjFBqaqrefvttRUVFqV27dpKkOXPmaN26dfrggw/0wgsv5PpcZWZmKioqSt7e3pKkHj16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z56y2+2qVq2avvjiC508eVIdO3aU3W5XSEiIdu/e7bTf0qVLVadOHbm5uSkwMFAzZsxw2m6z2bR8+XKndWXLllVUVFSuxr9x40b997//1dmzZ2Wz2WSz2RQZGZnjONPS0pSSkuK0AACAkilPYS05OVldu3ZVnz59FB8fr40bN+rhhx+WMUZz5szR6NGjNWnSJMXHx+uVV17R2LFjNX/+fKc+Ro8erWHDhik2NlY1atRQ165ddenSJUnSjh071KdPHz3zzDOKjY1V69atNXHixFzXd/78eT344IP65ptvFBMTo4iICHXo0EHHjh1zajdz5kw1b95cMTExat++vXr06KGePXvq8ccf1969exUUFKSePXvKGCNJ2rNnjzp37qzHHntMP/zwgyIjIzV27FhHEMuLq42/WbNmev311+Xj46Pk5GQlJydr2LBhOfYxefJk+fr6OpaAgIA81wEAAIoHm8lKJLmwd+9e3XXXXUpKSlK1atWctlWtWlVTp05V165dHesmTpyoVatWaevWrUpKSlL16tX1/vvvq2/fvpKkuLg41alTR/Hx8apVq5a6deumP/74Q19//bWjj8cee0yrV6/WmTNnbmiAderUUf/+/TVgwABJf8+stWjRQgsWLJAk/frrr/L399fYsWP18ssvS5K2b9+usLAwJScnq1KlSurevbtOnjyptWvXOvodPny4vvrqK+3fv1/S3zNry5YtU6dOnRxtypYtq9dff129e/fO1fijoqI0ZMiQ6441LS1NaWlpjtcpKSkKCAhQwJBP5eLmeUPnCbCKpCnti7oEACgUKSkp8vX11dmzZ+Xj43PVdnmaWatfv77uu+8+hYSE6D//+Y/mzJmjP/74QydPntTx48fVt29f2e12xzJx4kQlJCQ49VGvXj3Hz/7+/pKkEydOSJLi4+MVFhbm1P7K19eSmpqq4cOHKzg4WGXLlpXdbteBAweyzaxdXoOfn58kKSQkJNu6y+tq3ry5Ux/NmzfX4cOHlZGRkev6rjz2lePPLTc3N/n4+DgtAACgZCqdl8alSpXSunXrtHXrVq1du1azZs3S6NGj9eWXX0qS5syZoyZNmmTb53Kurq6On202myQpMzNTkpSHSb4cvfDCC1qzZo1effVVBQUFycPDQ48++qjS09OvW8P16spal+XKWm02W7Z1Fy9ezFbjtY4DAABwpTyF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DA4O1rFjx/TLL7+ocuXKkqRt27Y5tWnYsKE++eQTVaxYUT4+Pjn24+fnp507d6pFixaSpIyMDMXExFz3Y0QaNmyopUuXKjAwUKVLZz/VwcHBcnNz07Fjx656yRMAAPyzFdoDBl5eXurfv79eeOEFrV69WnFxcXryySf1559/qm/fvmrSpIk8PT314osv6siRI1q0aFG2pz0DAwOVmJio2NhYnTp1Smlpadc8Zps2bVSzZk317NlT+/bt0+bNmzV69GinNt27d9ett96qjh07avPmzUpMTNSmTZs0ePBg/fzzz5KkgQMHavLkyfriiy908OBBDR48WH/88Ue22bYrPfvsszp9+rS6du2qnTt36ujRo1q7dq369OmjjIwMeXt7a9iwYXruuec0f/58JSQkKCYmRm+++abmz5+f95MMAABKnEJ9GnTKlCl65JFH1KNHDzVs2FBHjhzRmjVrdMstt6hcuXL66KOPtGrVKoWEhGjx4sWKjIx02v+RRx7RAw88oNatW6tChQpavHjxNY/n4uKiZcuWKS0tTY0bN9YTTzyhSZMmObXx9PTUd999p6pVq+rhhx9W7dq11adPH124cMEx0zZixAh17dpVPXv2VFhYmOx2uyIiIuTu7n7N41euXFnR0dHKyMhQRESE6tatq8GDB8vX11cuLn+f+gkTJmjcuHGaPHmyateurYiICH355ZeqXr16Hs8uAAAoiWwmp5uvcE2ZmZmqXbu2OnfurAkTJhR1OUpJSZGvr68ChnwqFzfPoi4HyJOkKe2LugQAKBJZv7/Pnj171VuxpEK8Z604++mnn7R27VqFh4crLS1Ns2fPVmJiouPeOwAAgIJSrL9uauHChbLb7TkuderUybfjuLi4KCoqSnfffbeaN2+uH374Qd98841q166db8cAAADISbGeWfv3v/+tJk2a5LjN1dU1344TEBCg6OjofOsPAAAgt4p1WPP29s72YbYAAAAlSbG+DAoAAFDSEdYAAAAsjLAGAABgYYQ1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFFetvMICzH8dHyMfHp6jLAAAA+YiZNQAAAAsjrAEAAFgYYQ0AAMDCCGsAAAAWRlgDAACwMMIaAACAhRHWAAAALIywBgAAYGF8KG4JUvelNXJx8yzqMgAAKDGSprQv6hKYWQMAALAy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zPvfoEED+fv767777tOGDRsKsswCcyPjX7FihRo1aqRp06apSpUqqlGjhoYNG6YLFy4URsn5Kj/+/n/wwQdq06aNqlWrVhAlFhq+yN3CTp06pYyMDPn5+Tmt9/Pz06+//prjPr/++muO7S9duqRTp07J39+/wOrNbzcy/pImP87BjBkzlJqaqs6dOxdEiQXqZsZ/22236eTJk7p06ZIiIyP1xBNPFGSpBeJGxn/48GGNHDlSmzdvVunSxfuf+BsZv7+/v9577z3dddddSktL04IFC3Tfffdp48aNatmyZWGUnW9uZPxHjx7Vli1b5O7urmXLlunUqVN65plndPr06WJ339rN/vuXnJysr7/+WosWLSqoEgtN8f6b/A9hs9mcXhtjsq27Xvuc1hcXeR1/SXSj52Dx4sWKjIzUF198oYoVKxZUeQXuRsa/efNmnT9/Xtu3b9fIkSMVFBSkrl27FmSZBSa348/IyFC3bt00fvx41ahRo7DKK3B5ef9r1qypmjVrOl6HhYXp+PHjevXVV4tdWMuSl/FnZmbKZrNp4cKF8vX1lSS99tprevTRR/Xmm2/Kw8OjwOvNbzf6719UVJTKli2rTp06FVBlhYewZmG33nqrSpUqle1/ECdOnMj2P40slSpVyrF96dKlVb58+QKrtSDcyPhLmps5B5988on69u2rzz77TG3atCnIMgvMzYy/evXqkqSQkBD99ttvioyMLHZhLa/jP3funHbv3q2YmBgNGDBA0t+/vI0xKl26tNauXat77723UGrPD/n1b0DTpk310Ucf5Xd5Be5Gxu/v768qVao4gpok1a5dW8YY/fzzz7rzzjsLtOb8dDPvvzFGc+fOVY8ePVSmTJmCLLNQcM+ahZUpU0Z33XWX1q1b57R+3bp1atasWY77hIWFZWu/du1aNWrUSK6urgVWa0G4kfGXNDd6DhYvXqzevXtr0aJFat++fUGXWWDy68+AMUZpaWn5XV6By+v4fXx89MMPPyg2Ntax9OvXTzVr1lRsbKyaNGlSWKXni/x6/2NiYorVLSBZbmT8zZs31y+//KLz58871h06dEguLi667bbbCrTe/HYz7/+mTZt05MgR9e3btyBLLDxF8lgDci3rseUPPvjAxMXFmSFDhhgvLy/Hky0jR440PXr0cLTP+uiO5557zsTFxZkPPvigRHx0R27Hb4wx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earX29tbgYGBWr9+vVq3bp1te8OGDfXrr7+qdOnSjodKcsPHx0ddunRRly5d9Oijj+qBBx7Q6dOnVa9ePf388886dOhQjrNrwcHB2rJli9O6rVu3qkaNGtnC95V17t+/X0FBQbmuEbASwhqAAuHt7a1hw4bpueeeU2Zmpu655x6lpKRo69atstvt6tWrl4KCgvThhx9qzZo1ql69uhYsWKBdu3apevXqjn4CAwO1Zs0aHTx4UOXLl5evr6+CgoIUEBCgyMhITZw4UYcPH872VGBOatSooe7du6tnz56aMWOGGjRooFOnTunbb79VSEiIHnzwwYI8JUpPT1ffvn01ZswY/fTTT3rppZc0YMAAubi4yMvLS/3799cLL7ygcuXKqWrVqpo2bZr+/PNP9e3b95r9BgYGKjEx0XEZ0dvbW3fccYcuXbqkWbNmqUOHDoqOjtY777yT55ojIyPVr18/VaxYUe3atdO5c+cUHR2tgQMHqk2bNgoLC1OnTp00depU1axZU7/88otWrVqlTp065Xi5dubMmfL391doaKhcXFz02WefqVKlSipbtqzCw8PVsmVLPfLII3rttdcUFBSkAwcOyGaz6YEHHtDzzz+vu+++WxMmTFCXLl20bds2zZ49W2+99dY1xzBixAg1bdpUzz77rJ588kl5eXkpPj5e69at06xZs/J8ToBCV3S3ywEoSa58wMCYv58WfOONN0zNmjWNq6urqVChgomIiDCbNm0yxhjz119/md69extfX19TtmxZ079/fzNy5Einm+VPnDhh2rZta+x2u5FkNmzYYIwxZsuWLSYkJMS4u7ubFi1amM8++yzbAwa+vr7Z6sx6AjUwMNC4urqaSpUqmYceesh8//33Vx2bcnjAICYmxrE9pwcerjx+1oMS48aNM+XLlzd2u9088cQTTjfnX7hwwQwcONDceuutxs3NzTRv3tzs3LnzmsfJOo+PPPKIKVu2rJHkeDrytddeM/7+/sbDw8NERESYDz/80Gn/nM7RsmXLzJW/Gt555x3He+jv728GDhzo2JaSkmIGDhxoKleubFxdXU1AQIDp3r27OXbsWI7n8r333jOhoaHGy8vL+Pj4mPvuu8/s3bvXsf333383//3vf0358uWNu7u7qVu3rlm5cqVj+5IlS0xwcLBxdXU1VatWNdOnT3fqv1q1ao6nVS+3c+dOx58jLy8vU69ePTNp0qQcawSsxmZMDhf8AQD5qnfv3jpz5gxfWwUgz/hQXAAAAAsjrAEAAFgYl0EBAAAsjJk1AAAACyOsAQAAWBhhDQAAwMIIawAAABZGWAMAALAwwhoAAICFEdYAAAAsjLAGAABgYf8Ple9fIQ3Ntj0AAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -1667,13 +2005,13 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 33, "id": "f799aeb3-5799-432d-a9b8-e19ccaddc42f", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAGwCAYAAAC0HlECAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA4EklEQVR4nO3deXwO5/7/8fedXRKJXYJIREItsTWHorWUWttycOxLStVyiha1nLYELaoVRVG1JKqWtqiqqio9HFsVTdRpHFES6oRTrSV2kszvD7/c397WK0Fu0tfz8bgfD5m57pnPXE3N2zXXzNgsy7IEAACA23JxdgEAAAAPA0ITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAATdnF5BXZGZmKjU1Vfnz55fNZnN2OQAAwIBlWTp79qxKlCghF5fbjyURmu6R1NRUBQUFObsMAACQA7/88otKlSp12zaEpnskf/78kq51up+fn5OrAQAAJtLS0hQUFGQ/j98Ooekeybok5+fnR2gCAOAhYzK1hongAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABghNAAAABtycXUBeU3n013Lx9HZ2GQAASSkTWzq7BOQhjDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYyFFo2rZtm1xdXdWsWbN7XQ8AAMADKUehaf78+RowYIC2bNmiI0eO3OuajF29etVp+wYAAH8u2Q5N58+f1yeffKJ+/frp6aefVlxcnMP6VatWKTIyUl5eXipSpIjatGljX3f58mUNGzZMQUFB8vT0VHh4uObNmydJiouLU4ECBRy2tXLlStlsNvvP0dHRqlatmubPn6/Q0FB5enrKsiytXbtWjz/+uAoUKKDChQvr6aef1sGDBx22dfToUXXs2FGFChWSj4+PIiMjtWPHDqWkpMjFxUW7du1yaD99+nQFBwfLsqzsdhEAAMiDsh2aPv74Y5UvX17ly5dX165dFRsbaw8WX375pdq0aaOWLVsqPj5eGzZsUGRkpP273bt319KlSzVt2jTt27dP77//vnx9fbO1/59//lmffPKJli9froSEBEnXgtzgwYO1c+dObdiwQS4uLvrrX/+qzMxMSdK5c+dUv359paamatWqVdqzZ4+GDRumzMxMhYSEqHHjxoqNjXXYT2xsrKKiohxC2x9dvnxZaWlpDh8AAJB3uWX3C/PmzVPXrl0lSc2aNdO5c+e0YcMGNW7cWG+++aY6duyoMWPG2NtXrVpVkpSUlKRPPvlE33zzjRo3bixJCg0NzXbBV65c0cKFC1W0aFH7srZt295QY7FixZSYmKjKlStr8eLFOnHihHbu3KlChQpJksLCwuztn3/+efXt21cxMTHy9PTUnj17lJCQoBUrVtyyjgkTJjgcZ5Z/e/WSn+fNgxYAIJdFO7sAJ4o+4+wK8pxsjTTt379f33//vTp27ChJcnNzU4cOHTR//nxJUkJCgho1anTT7yYkJMjV1VX169e/q4KDg4MdApMkHTx4UJ07d1ZoaKj8/PxUpkwZSbLPt0pISFD16tXtgel6rVu3lpubmz777DNJ1+ZsNWzYUCEhIbesY+TIkTpz5oz988svv9zVcQEAgAdbtkaa5s2bp/T0dJUsWdK+zLIsubu769SpU8qXL98tv3u7dZLk4uJyw/yhm0309vHxuWHZM888o6CgIM2ZM0clSpRQZmamKleurCtXrhjt28PDQ926dVNsbKzatGmjxYsX6913373tdzw9PeXp6XnbNgAAIO8wHmlKT0/Xhx9+qMmTJyshIcH+2bNnj4KDg7Vo0SJVqVJFGzZsuOn3IyIilJmZqU2bNt10fdGiRXX27FmdP3/evixrztLt/P7779q3b59ee+01NWrUSBUqVNCpU6cc2lSpUkUJCQk6efLkLbfz/PPPa/369Zo5c6auXr3qMIEdAADAeKRp9erVOnXqlHr16iV/f3+Hde3atdO8efM0ZcoUNWrUSGXLllXHjh2Vnp6ur776SsOGDVNISIh69Oihnj17atq0aapataoOHz6sX3/9Ve3bt1etWrXk7e2tf/zjHxowYIC+//77G+7Mu5mCBQuqcOHC+uCDDxQYGKgjR45oxIgRDm06deqk8ePHq3Xr1powYYICAwMVHx+vEiVKqHbt2pKkChUq6LHHHtPw4cPVs2fPO45OAQCAPxfjkaZ58+apcePGNwQm6dpE7ISEBPn5+enTTz/VqlWrVK1aNT355JPasWOHvd2sWbPUrl079e/fX4888oh69+5tH1kqVKiQPvroI61Zs0YRERFasmSJoqOj73wALi5aunSpdu/ercqVK+vll1/W22+/7dDGw8ND69atU7FixdSiRQtFRERo4sSJcnV1dWjXq1cvXblyRT179jTtFgAA8Cdhs3gQkd2bb76ppUuXau/evdn+blpamvz9/XVmRH7ungMAOB93zxmxn7/PnJGfn99t2/LuOV17jtPOnTs1ffp0DRw40NnlAACABxChSdKLL76oxx9/XPXr1+fSHAAAuKlsP9wyL4qLizOadA4AAP68GGkCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAw4ObsAvKax4JLyTWfq7PLAAD82S2IuO+72Ntj733fx4OEkSYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADbs4uIK/5rvN38vPzc3YZAADgHmOkCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwICbswvIayqP/lount7OLiNXpExs6ewSAADINYw0AQAA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zHR2CUC23at73njkAADgjjw8POTi4qLU1FQVLVpUHh4eN7yaBHgQWZalEydOyGazyd3d/a62RWgCANyRi4uLypQpo2PHjik1NdXZ5QDZYrPZVKpUKbm63t0jgQhNAAAjHh4eKl26tNLT05WRkeHscgBj7u7udx2YJEITACAbsi5x3O1lDuBhxERwAAAAA4QmAAAAA4QmAAAAA8xpuse+6/zdHV/4BwAAHj6MNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABhwc3YBeU3l0V/LxdPb2WUAAJCnpExs6ewSGGkCAAAwQWgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGj6/0JCQvTuu+/af7bZbFq5cqXT6gEAAA+WByI0RUVFyWazyWazyc3NTaVLl1a/fv106tQpZ5cGAAAg6QEJTZLUrFkzHTt2TCkpKZo7d66++OIL9e/f39llAQAASHqAQpOnp6cCAgJUqlQpNWnSRB06dNC6devs62NjY1WhQgV5eXnpkUce0cyZMx2+f/ToUXXs2FGFChWSj4+PIiMjtWPHDknSwYMH1apVKxUvXly+vr76y1/+ovXr199VvZcvX1ZaWprDBwAA5F1uzi7gZg4dOqS1a9fK3d1dkjRnzhyNHj1a7733nqpXr674+Hj17t1bPj4+6tGjh86dO6f69eurZMmSWrVqlQICAvTDDz8oMzNTknTu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", "text/plain": [ "
" ] @@ -1686,10 +2024,12 @@ "tick_labels = [\"Accuracy\", \"Precision\", \"Recall\"]\n", "x_tree = [metrics['acc_tree'][-1], metrics['prec_tree'][-1], metrics['rec_tree'][-1]]\n", "x_gat = [metrics['acc_gnn_val'][-1], metrics['prec_gnn_val'][-1], metrics['rec_gnn_val'][-1]]\n", + "x_fastrp_tree = [metrics['acc_fastrp_tree'][-1], metrics['prec_fastrp_tree'][-1], metrics['rec_fastrp_tree'][-1]]\n", "y = np.arange(len(tick_labels))\n", - "bar_width = 0.35\n", - "plt.barh(y-bar_width/2, x_tree, bar_width, label=\"xgboost\")\n", - "plt.barh(y+bar_width/2, x_gat, bar_width, label=\"GAT\")\n", + "bar_width = 0.30\n", + "plt.barh(y-bar_width/3, x_tree, 0.2, label=\"XGBoost\")\n", + "plt.barh(y+bar_width/3, x_fastrp_tree, 0.2, label=\"XGBoost + FastRP\")\n", + "plt.barh(y+bar_width, x_gat, 0.2, label=\"GAT\")\n", "plt.yticks(y, tick_labels);\n", "plt.legend();\n", "plt.gca().invert_yaxis();\n", @@ -1699,7 +2039,7 @@ { "cell_type": "code", "execution_count": null, - "id": "be8a6dad-e54f-4421-9e19-d03004fb30d2", + "id": "3f252618-be01-40d7-b96d-9ba7c93a04fd", "metadata": {}, "outputs": [], "source": [] @@ -1707,7 +2047,7 @@ ], "metadata": { "kernelspec": { - "display_name": "PyTorch", + "display_name": "Python 3.9.12 ('pytg_dev')", "language": "python", "name": "python3" }, @@ -1721,11 +2061,11 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.9.12" }, "vscode": { "interpreter": { - "hash": "96daeecb52bbbb8e3aef04d2f9c6a1e01f271d07cea30059f3c558ef00b717d2" + "hash": "1c3872f25492526ae0a7ed66aa11b82cc2d33aacfd3b6e5e18da7e09a4c57038" } } }, From 51f66a9a5e451d35e5b279a29ec5e0f9ede74a57 Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Mon, 30 Jan 2023 14:31:03 -0600 Subject: [PATCH 30/62] clean(ethereum fraud): remove pyTG upgrade --- .../fraud_detection/fraud_detection.ipynb | 43 ------------------- 1 file changed, 43 deletions(-) diff --git a/applications/fraud_detection/fraud_detection.ipynb b/applications/fraud_detection/fraud_detection.ipynb index 97f017d..c170611 100644 --- a/applications/fraud_detection/fraud_detection.ipynb +++ b/applications/fraud_detection/fraud_detection.ipynb @@ -10,49 +10,6 @@ "# Fraud Detection with Ethereum Data" ] }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e7404e6a-d7c4-4328-99fe-5ca1eb5ee1b8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found existing installation: pyTigerGraph 1.2.6\n", - "Uninstalling pyTigerGraph-1.2.6:\n", - " Successfully uninstalled pyTigerGraph-1.2.6\n", - "Collecting git+https://github.com/tigergraph/pyTigerGraph.git\n", - " Cloning https://github.com/tigergraph/pyTigerGraph.git to /tmp/pip-req-build-k9kw9v5y\n", - " Running command git clone --filter=blob:none --quiet https://github.com/tigergraph/pyTigerGraph.git /tmp/pip-req-build-k9kw9v5y\n", - " Resolved https://github.com/tigergraph/pyTigerGraph.git to commit 5e6fa285aecf6d06b2b8ad17947a85cb7b9228b5\n", - " Installing build dependencies ... \u001b[?25ldone\n", - "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", - "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n", - "\u001b[?25hRequirement already satisfied: requests in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (2.28.1)\n", - "Requirement already satisfied: validators in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (0.20.0)\n", - "Requirement already satisfied: pyTigerDriver in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (1.0.15)\n", - "Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2.1.1)\n", - "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (3.4)\n", - "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (1.26.11)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2022.9.24)\n", - "Requirement already satisfied: decorator>=3.4.0 in /opt/conda/lib/python3.9/site-packages (from validators->pyTigerGraph==1.2.6) (5.1.1)\n", - "Building wheels for collected packages: pyTigerGraph\n", - " Building wheel for pyTigerGraph (pyproject.toml) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for pyTigerGraph: filename=pyTigerGraph-1.2.6-py3-none-any.whl size=136853 sha256=740d05d0236d3c1fe1cf8833ce61ccbfbf800aa568671b3318082852b1c7ee54\n", - " Stored in directory: /tmp/pip-ephem-wheel-cache-lat49em3/wheels/cc/41/7a/6b8eee74c439c99b3cdb01357d4b426b9a18e51e9571b28b18\n", - "Successfully built pyTigerGraph\n", - "Installing collected packages: pyTigerGraph\n", - "Successfully installed pyTigerGraph-1.2.6\n" - ] - } - ], - "source": [ - "!pip uninstall pyTigerGraph -y\n", - "!pip install git+https://github.com/tigergraph/pyTigerGraph.git --no-cache" - ] - }, { "cell_type": "markdown", "id": "2cdc9404-be58-401a-be8a-3dca48822d65", From 2f3c482cfa5a78fbe8bb2bec47ef9c8b1377e0be Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Thu, 15 Dec 2022 19:38:08 -0600 Subject: [PATCH 31/62] feat(nodepiece notebooks): first commit --- applications/nodepiece/nodepiece.ipynb | 694 +++++++++++++++ applications/nodepiece/nodepiece_gnn.ipynb | 969 +++++++++++++++++++++ 2 files changed, 1663 insertions(+) create mode 100644 applications/nodepiece/nodepiece.ipynb create mode 100644 applications/nodepiece/nodepiece_gnn.ipynb diff --git a/applications/nodepiece/nodepiece.ipynb b/applications/nodepiece/nodepiece.ipynb new file mode 100644 index 0000000..6dd7e34 --- /dev/null +++ b/applications/nodepiece/nodepiece.ipynb @@ -0,0 +1,694 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c3d828cc-62e5-4cdd-8bb5-eab2593f0652", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found existing installation: pyTigerGraph 1.2.6\n", + "Uninstalling pyTigerGraph-1.2.6:\n", + " Successfully uninstalled pyTigerGraph-1.2.6\n", + "Collecting git+https://github.com/tigergraph/pyTigerGraph.git\n", + " Cloning https://github.com/tigergraph/pyTigerGraph.git to /tmp/pip-req-build-0at5b8lw\n", + " Running command git clone --filter=blob:none --quiet https://github.com/tigergraph/pyTigerGraph.git /tmp/pip-req-build-0at5b8lw\n", + " Resolved https://github.com/tigergraph/pyTigerGraph.git to commit 886de415393d16d7ffab8f90824d2a7e34b8b16a\n", + " Installing build dependencies ... \u001b[?25ldone\n", + "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", + "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25hRequirement already satisfied: requests in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (2.28.1)\n", + "Requirement already satisfied: pyTigerDriver in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (1.0.15)\n", + "Requirement already satisfied: validators in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (0.20.0)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (1.26.11)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2.1.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (3.4)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2022.9.24)\n", + "Requirement already satisfied: decorator>=3.4.0 in /opt/conda/lib/python3.9/site-packages (from validators->pyTigerGraph==1.2.6) (5.1.1)\n", + "Building wheels for collected packages: pyTigerGraph\n", + " Building wheel for pyTigerGraph (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for pyTigerGraph: filename=pyTigerGraph-1.2.6-py3-none-any.whl size=135918 sha256=146c29f306c32c7d198c8898915d2ad2347227bb927fac5f02544d86fe378d7c\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-_4_upi93/wheels/cc/41/7a/6b8eee74c439c99b3cdb01357d4b426b9a18e51e9571b28b18\n", + "Successfully built pyTigerGraph\n", + "Installing collected packages: pyTigerGraph\n", + "Successfully installed pyTigerGraph-1.2.6\n" + ] + } + ], + "source": [ + "!pip uninstall pyTigerGraph -y\n", + "!pip install git+https://github.com/tigergraph/pyTigerGraph.git --no-cache" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7d892ae1-357d-43c1-bdca-275a5c68e818", + "metadata": {}, + "outputs": [], + "source": [ + "from pyTigerGraph import TigerGraphConnection\n", + "import json\n", + "\n", + "# Read in DB configs\n", + "with open('../config.json', \"r\") as config_file:\n", + " config = json.load(config_file)\n", + " \n", + "conn = TigerGraphConnection(\n", + " host=config[\"host\"],\n", + " username=config[\"username\"],\n", + " password=config[\"password\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "307a1b22-8853-408b-9c62-788b4376d481", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A folder with name imdb already exists in ./tmp. Skip downloading.\n", + "---- Checking database ----\n", + "A graph with name imdb already exists in the database. Skip ingestion.\n", + "Graph name is set to imdb for this connection.\n" + ] + } + ], + "source": [ + "from pyTigerGraph.datasets import Datasets\n", + "\n", + "dataset = Datasets(\"imdb\")\n", + "\n", + "conn.ingestDataset(dataset, getToken=config[\"getToken\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8971ad89-2740-4ba7-809a-126f6c33066c", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ecaac2bea40d49378988b3c9092c00a5", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "CytoscapeWidget(cytoscape_layout={'name': 'circle', 'animate': True, 'padding': 1}, cytoscape_style=[{'selecto…" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pyTigerGraph.visualization import drawSchema\n", + "\n", + "drawSchema(conn.getSchema(force=True))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "1d97680c-9368-475d-b44b-3d75eb908fbd", + "metadata": {}, + "outputs": [], + "source": [ + "def process_batch(batch):\n", + " x = {\"relational_context\": torch.tensor(batch[\"Movie\"][\"relational_context\"], dtype=torch.long), \n", + " \"anchors\": torch.tensor(batch[\"Movie\"][\"anchors\"], dtype=torch.long), \n", + " \"distance\": torch.tensor(batch[\"Movie\"][\"anchor_distances\"], dtype=torch.long),\n", + " \"feats\": torch.tensor(np.stack(batch[\"Movie\"][\"x\"].apply(lambda x: np.fromstring(x, sep=\" \")).values), dtype=torch.float),\n", + " \"y\": torch.tensor(batch[\"Movie\"][\"y\"].astype(int))}\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a9ff0f1e-c474-4275-98fa-7696775ae770", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of Anchors: 1161\n" + ] + } + ], + "source": [ + "np_loader = conn.gds.nodepieceLoader(filter_by = \"train_mask\",\n", + " batch_size = 128,\n", + " compute_anchors = True,\n", + " clear_cache = True,\n", + " anchor_percentage = 0.1,\n", + " v_feats = {\"Movie\": [\"y\", \"x\"], \"Actor\": [], \"Director\": []}, \n", + " target_vertex_types=[\"Movie\"], \n", + " max_anchors=5,\n", + " max_relational_context=5,\n", + " e_types=conn.getEdgeTypes(),\n", + " timeout=204_800_000,\n", + " callback_fn = lambda x: process_batch(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ea2e5e8b-201e-4911-bf3a-9fe657cdb24f", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b77deb55-34ca-4dd8-bd85-868f8d4bb67c", + "metadata": {}, + "outputs": [], + "source": [ + "class BaseNodePiece(nn.Module):\n", + " def __init__(self, \n", + " vocab_size:int,\n", + " sequence_length:int,\n", + " embedding_dim:int=768):\n", + " super().__init__()\n", + " self.embedding_dim = embedding_dim\n", + " self.sequence_length = sequence_length\n", + " self.embedding = nn.Embedding(vocab_size, embedding_dim)\n", + " torch.nn.init.xavier_uniform_(self.embedding.weight)\n", + "\n", + " def forward(self, x):\n", + " anc_emb = self.embedding(x[\"anchors\"])\n", + " rel_emb = self.embedding(x[\"relational_context\"])\n", + " anc_emb += self.embedding(x[\"distance\"])\n", + " out = torch.concat([anc_emb, rel_emb], dim=1)\n", + " return out" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "76558ce2-9030-48c4-82dd-d2f44044ba5d", + "metadata": {}, + "outputs": [], + "source": [ + "class MLP(nn.Module):\n", + " def __init__(self,\n", + " embedding_model:BaseNodePiece,\n", + " out_dim:int=2,\n", + " num_hidden_layers:int=2,\n", + " hidden_dim:int=128):\n", + " super().__init__()\n", + " self.out_dim = out_dim\n", + " self.num_layers = num_hidden_layers + 2\n", + " self.hidden_layers = nn.ModuleList([nn.Linear(hidden_dim, hidden_dim) for _ in range(num_hidden_layers)])\n", + " self.out_layer = nn.Linear(hidden_dim, out_dim)\n", + " self.in_layer = nn.Linear((embedding_model.embedding_dim*embedding_model.sequence_length)+3066, hidden_dim)\n", + " self.emb_model = embedding_model\n", + "\n", + " def forward(self, x):\n", + " feats = x[\"feats\"]\n", + " x = self.emb_model(x)\n", + " x = torch.flatten(x, start_dim=1)\n", + " x = torch.cat((x, feats), dim=1)\n", + " x = self.in_layer(x)\n", + " for layer in self.hidden_layers:\n", + " x = F.dropout(F.relu(layer(x)), p=0.6)\n", + " x = self.out_layer(x)\n", + " x = F.log_softmax(x, dim=1)\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ab2a4af9-1782-4717-b074-eecb1cf9d2ed", + "metadata": {}, + "outputs": [], + "source": [ + "emb_model = BaseNodePiece(vocab_size=np_loader.num_tokens, # add in special tokens\n", + " sequence_length=np_loader._payload[\"max_rel_context\"] + np_loader._payload[\"max_anchors\"],\n", + " embedding_dim=128)\n", + "\n", + "model = MLP(emb_model, out_dim=3, num_hidden_layers=2, hidden_dim=128)\n", + "\n", + "loss = nn.CrossEntropyLoss()\n", + "optimizer = torch.optim.Adam(model.parameters(), lr=5e-3, weight_decay=5e-5)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "6eb3eb26-4666-43f3-816a-0c1b3cb0c322", + "metadata": {}, + "outputs": [], + "source": [ + "np_loader.saveTokens(\"./npAncs.pkl\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "cb23e6cb-5aff-4087-a40e-b5780553c915", + "metadata": {}, + "outputs": [], + "source": [ + "valid_loader = conn.gds.nodepieceLoader(anchor_cache_attr=\"anchors\", \n", + " filter_by = \"val_mask\",\n", + " batch_size = 8192,\n", + " v_feats = {\"Movie\": [\"y\", \"x\"], \"Actor\": [], \"Director\": []}, \n", + " target_vertex_types=[\"Movie\"], \n", + " compute_anchors=False,\n", + " max_anchors=5,\n", + " max_relational_context=5,\n", + " use_cache = True,\n", + " e_types=conn.getEdgeTypes(),\n", + " timeout=204_800_000,\n", + " tokenMap=\"./npAncs.pkl\",\n", + " callback_fn = lambda x: process_batch(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b9618494-ab14-43b1-872b-eec8e6466e15", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EPOCH 0: 1.0881156623363495 Train Accuracy: 0.3775 Time: 0.4022190570831299 Valid Loss: 1.0691777467727661 Valid Accuracy: 0.37\n", + "EPOCH 1: 1.057876855134964 Train Accuracy: 0.4525 Time: 0.4199380874633789 Valid Loss: 1.0587773323059082 Valid Accuracy: 0.395\n", + "EPOCH 2: 0.9416443258523941 Train Accuracy: 0.525 Time: 0.43010425567626953 Valid Loss: 1.0353225469589233 Valid Accuracy: 0.4475\n", + "EPOCH 3: 0.616402730345726 Train Accuracy: 0.7925 Time: 0.4489316940307617 Valid Loss: 1.2440041303634644 Valid Accuracy: 0.5275\n", + "EPOCH 4: 0.20122080855071545 Train Accuracy: 0.9525 Time: 0.4667513370513916 Valid Loss: 2.2939810752868652 Valid Accuracy: 0.53\n", + "EPOCH 5: 0.1021158336661756 Train Accuracy: 0.97 Time: 0.49501729011535645 Valid Loss: 3.529735803604126 Valid Accuracy: 0.5225\n", + "EPOCH 6: 0.025811166735365987 Train Accuracy: 0.995 Time: 0.4997241497039795 Valid Loss: 4.4678778648376465 Valid Accuracy: 0.475\n", + "EPOCH 7: 0.020088251680135727 Train Accuracy: 0.9925 Time: 0.49360108375549316 Valid Loss: 6.286280632019043 Valid Accuracy: 0.4825\n", + "EPOCH 8: 0.055298279999988154 Train Accuracy: 0.9925 Time: 0.5181808471679688 Valid Loss: 4.8935546875 Valid Accuracy: 0.5075\n", + "EPOCH 9: 0.02419520722469315 Train Accuracy: 0.995 Time: 0.5230767726898193 Valid Loss: 3.963881731033325 Valid Accuracy: 0.54\n" + ] + } + ], + "source": [ + "import time\n", + "import numpy as np\n", + "from pyTigerGraph.gds.metrics import Accuracy\n", + "\n", + "\n", + "for i in range(10):\n", + " acc = Accuracy()\n", + " epoch_loss = 0\n", + " start = time.time()\n", + " for batch in np_loader:\n", + " labels = batch[\"y\"]\n", + " out = model(batch)\n", + " loss_val = loss(out, labels)\n", + " acc.update(out.argmax(dim=1), labels)\n", + " optimizer.zero_grad()\n", + " loss_val.backward()\n", + " optimizer.step()\n", + " epoch_loss += loss_val.item()\n", + " end = time.time()\n", + " val_acc = Accuracy()\n", + " val_epoch_loss = 0\n", + " for val_batch in valid_loader:\n", + " with torch.no_grad():\n", + " labels = val_batch[\"y\"]\n", + " out = model(val_batch)\n", + " loss_val = loss(out, labels)\n", + " val_acc.update(out.argmax(dim=1), labels)\n", + " val_epoch_loss += loss_val.item()\n", + " print(\"EPOCH {}: {}\".format(i, epoch_loss/np_loader.num_batches), \n", + " \"Train Accuracy:\", acc.value, \n", + " \"Time:\", end-start, \n", + " \"Valid Loss: {}\".format(val_epoch_loss/valid_loader.num_batches), \n", + " \"Valid Accuracy:\", val_acc.value)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "049f1e0a-0ed6-4f6d-a1ba-cd3f395f4525", + "metadata": {}, + "outputs": [], + "source": [ + "test_loader = conn.gds.nodepieceLoader(anchor_cache_attr=\"anchors\", \n", + " filter_by = \"test_mask\",\n", + " batch_size = 4096,\n", + " v_feats = {\"Movie\": [\"y\", \"x\"], \"Actor\": [], \"Director\": []},\n", + " target_vertex_types=[\"Movie\"], \n", + " compute_anchors=False,\n", + " max_anchors=5,\n", + " max_relational_context=5,\n", + " use_cache = True,\n", + " e_types=conn.getEdgeTypes(),\n", + " timeout=204_800_000,\n", + " tokenMap=\"./npAncs.pkl\",\n", + " callback_fn=lambda x: process_batch(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5b3f01f6-788b-4913-babb-8e77de3e7642", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loss: 4.582667350769043, Accuracy: 0.48591144335825187 Time: 2.114243984222412\n" + ] + } + ], + "source": [ + "acc = Accuracy()\n", + "\n", + "epoch_loss = 0\n", + "start = time.time()\n", + "model.eval()\n", + "for batch in test_loader:\n", + " labels = batch[\"y\"]\n", + " out = model(batch)\n", + " loss_val = loss(out, labels)\n", + " acc.update(out.argmax(dim=1), labels)\n", + " epoch_loss += loss_val.item()\n", + "end = time.time()\n", + "print(\"Loss: {}, Accuracy: {}\".format(epoch_loss/test_loader.num_batches, acc.value), \"Time:\", end-start)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "7baf57d6-8cc2-42b7-a1cf-e817e19ae249", + "metadata": {}, + "outputs": [], + "source": [ + "infer_loader = conn.gds.nodepieceLoader(anchor_cache_attr=\"anchors\", \n", + " use_cache = True,\n", + " clear_cache = False,\n", + " v_feats = {\"Movie\": [\"y\", \"x\"], \"Actor\": [], \"Director\": []},\n", + " target_vertex_types=[\"Movie\"], \n", + " max_anchors=5,\n", + " max_relational_context=5,\n", + " e_types=conn.getEdgeTypes(),\n", + " timeout=204_800_000,\n", + " tokenMap=\"./npAncs.pkl\",\n", + " callback_fn = process_batch)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8d550955-04ab-4c05-adf3-84740968fd89", + "metadata": {}, + "outputs": [], + "source": [ + "df = conn.getVertexDataFrame(\"Movie\", limit=1_000)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "bee2371d-389f-4b3c-bfc7-26f3fc88177d", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
v_ididxytrain_maskval_masktest_maskis_anchoranchors
041194119[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...2FalseFalseTrueFalse{'1088421899': 1}
140944094[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...2FalseFalseTrueFalse{'897581108': 1}
240594059[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...2FalseFalseTrueFalse{'933232699': 1}
340504050[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...1FalseFalseTrueFalse{'905969675': 5, '911212569': 5, '972029958': 3}
439743974[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...1FalseFalseTrueFalse{'988807183': 3, '922747005': 3, '909115445': ...
\n", + "
" + ], + "text/plain": [ + " v_id id x y \\\n", + "0 4119 4119 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 2 \n", + "1 4094 4094 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 2 \n", + "2 4059 4059 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 2 \n", + "3 4050 4050 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 \n", + "4 3974 3974 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 1 \n", + "\n", + " train_mask val_mask test_mask is_anchor \\\n", + "0 False False True False \n", + "1 False False True False \n", + "2 False False True False \n", + "3 False False True False \n", + "4 False False True False \n", + "\n", + " anchors \n", + "0 {'1088421899': 1} \n", + "1 {'897581108': 1} \n", + "2 {'933232699': 1} \n", + "3 {'905969675': 5, '911212569': 5, '972029958': 3} \n", + "4 {'988807183': 3, '922747005': 3, '909115445': ... " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "29d96a6b-350d-47e5-bc6d-17edc82b5c77", + "metadata": {}, + "outputs": [], + "source": [ + "sample = [{\"primary_id\": x, \"type\": \"Movie\"} for x in df[\"v_id\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "264a65f2-ae1f-4aa0-9390-0d8b1dbf571d", + "metadata": {}, + "outputs": [], + "source": [ + "batch = infer_loader.fetch(sample)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "09e216a7-9ab6-42a0-8219-99244d60f48e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "embeddings = torch.flatten(emb_model(batch), start_dim=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "2c311430-b713-40b5-b3a8-2664db6111c2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "torch.Size([1000, 1280])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "embeddings.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3961a4d-32e8-4b11-97d4-e92b42d0f2e2", + "metadata": {}, + "outputs": [], + "source": [ + "import umap.umap_ as umap\n", + "\n", + "embd_x = umap.UMAP().fit_transform(embeddings.detach().numpy())" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "50f4dafb-d5b7-4ba2-a9ca-9faacfef4e69", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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u3blvvvua/H7Fo7L5eKll15iyJAhxMfHYzabad26NRMnTmTlypURy+Xk5KDRaHj//fepqanh73//O927dyc6OjrsQzgrVqzg6quvJjc3F6vVSlRUFD179uShhx7ab9//gz3fDoRSitdff50BAwYQGxtLTEwMw4YN4+OPP26ybGVlJVarFY1Gw2effdbseh9++GE0Gg1t27Zt8WeEx+Ph3nvvBaBLly5MmjQJk8nUbJlu3brx4Ycftmj9AHV1dUydOpXrrruOXr16kZycjMlkIiMjg3PPPXe/96CNGzdy/fXX06FDB6xWKxaLhaysLAYNGsT//d//sXHjxiZl8vPzufPOO+natSs2my24vb59+3LnnXeGfG41CPdMTMNzEu+//z4AH3zwQcizEQ3TW/JQ2IF+fnm9Xn766Sduu+02+vXrR3p6erAv/KmnnsrkyZPDvs85OTmMGjWqyX41/DW+J7XkobBt27Zx44030r59eywWCzExMfTp04fHH38ch8MRtsy+D/xu3bqVq6++mqysLEwmE5mZmVx33XUUFBRE3O4BUaKJRx55RAGqdevWSimlRowYoQA1atSoJsvu2LFDAQpQs2bNajK/qqpKjRw5MriMTqdTcXFxSqPRBKfdc889YesRCATUVVddFVxOo9Go+Ph4pdVqFaAuueQSdeWVVypAXXnllWHX8eabbyqDwRBch8lkUhaLJfg6JiZGzZgxo9n9eu+998Ku2+l0Bpe57rrrgtP3V6dvv/1WRUVFBcsaDAZls9mCr41Go/rggw/Cli0tLVUnnXRScFlAxcbGhuzjOeec06Tc5s2bVfv27UOOZWxsbMh6brzxxrDb3J+G82PEiBEHXLbxcf7yyy9VXFxc8H3R6XTBecOHD1cej0d99913ymq1Bve78Xk0fvz4Zuv3wAMPqOHDhytA6fX64LYa/h555JGI9TzY80gppaZNm6ZMJlNw2aioKGU2mxWg0tPT1bvvvhucF84777wTPOcb9ttoNCpAderUSb344osh12tjDddyuPem8Xl68803K0Bptdomx2XixIlh6+Xz+dT48eMjXp+XXnppxGvB5/OpsWPHNjmPGx+nA709FxUVBbd9zTXXHFDZfc2ePTvkOFit1pBrND4+Xv32229hyzZ3P8zPz1fdunULufYbX4darVa98sorYdfbunVrBajnn39edejQ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/X7atGkTfH9aquHcOdjR+lqquLiYRx55hMGDB5OYmIherw9+tnTp0gWozySwbw7cMWPGAHDaaafx97//nUWLFuHxeJrd1plnngnAlVdeyd13382vv/561NLTHeznV4Pq6mqee+45RowYQUpKSnCEMo1GE5Iv95A9XPW75cuXB8+NltwPVq9eHTE2GjhwYNjpDfdYaHqfPVAysMIBePTRR/n444/Zvn07r7/+Orfeemuzy5eUlADsNx9dZmYmBQUFweUPtGw4DR+OHo+nRU8k19XVRZzXeGAFnU5HTEwMHTp04LTTTmPixInYbLb9rr9xnfx+f4ufkm64AZWXlwcvlNatW7eobONtApSWlh7QNo+06OjosNMbf1nY3zLNfdFq7lwymUwkJiZSXFwcch7+kfOo8Xqa23akc/iPlm+pSMcUIh/XhnOp8c04nEj1HjZsGP/85z956KGHmD59ejDLRmZmJieffDITJ04MeUK5JZKSkoL/V1RU7Ldu4RzMMS8pKYkY1Idbd3PrNZvNJCUlNTkPG2ucRmpfDedrXV1ds/e0Bo2v9SN1vu1v/Q3z8/PzmxyDqKgoLr/8cl577TXefPNNzj//fKC+keCdd94B4LrrrjvgwLTh3GloQDgcFixYwOmnn05VVVVwWkO2FI1Gg9/vD2afcDqdIefz22+/zdlnn82qVat44okneOKJJzAajfTv359zzjmHa665psmgNc8++yxbt25l1qxZvPjii7z44ovodDp69erFGWecwfXXX3/EcsUe7OcXwObNmxkzZgz5+fnBaVarlbi4uOAX8YZ7c+NsOIfCgV4TPp+PioqKsCOnteTzrSUNhc2RFtoD0KpVq2AQ++STT7Y4hUtLby7hljvYb8x+vx+o/0a7v1bDhr9IGg+sUFBQwIYNG/jmm2+48cYbWxzMNq5Tp06dWlyncGlEDuSYNGwT6tMQtWSbJ+o46wdzLh2q8+hwt/wcaS1t0Wruurr33nvZsWMH//rXvzj33HNJSUkhPz+f999/n9GjR3PRRRcd0A2+cU7QFStWtLhcJH/kvnU419vQghtOw/n617/+tUXnaqTUSofbH7kebrzxRgB++umnYP1nzJhBXl4eer0++EvigWg4d7Zt2xYxBdMf4fP5uPTSS6mqqqJXr1788MMPOBwOqqurKS4upqioiIULFwaX3/e6yc7OZvny5UyfPp3bbruNvn37EggEmDdvHvfddx/t2rXjl19+CSkTFxfHL7/8wm+//cZ9993H0KFD0ev1LFu2jMcff5z27dszefLkQ76v+3Og7/1VV11Ffn4+OTk5fP7555SXl+N0OikpKQl+Jjc4FL/S/FFH814vAe0BeuCBB4iPj6ekpIQXXnih2WUbWhJ2797d7HIN37ySk5OblG38rSycSD8xpKWlAXtHNjkWNNRp+/btB/xNMjExMTiU4IF8CDVsE46tY3E0NHcuud3uYOtM4xawP3IeNV5Pc9uOdA43Lt/cT2mH+me2lmio2/66CexvfkZGBnfccQdTpkyhuLiY1atXc+211wL1eXFfe+21FtepcdemKVOmtLhcY42PeXP3rcbvZ+P7VkvW3dx6XS5X8Dxs6XobO1Tn6+E+31p6Xw/XGt29e3eGDBkS0ir71ltvAXDOOeeE3PNaquEn/UAgwNSpUw+4/P4sWLCAvLw8dDod3333HePGjWvSYldUVNTsOrRaLaeeeiovv/wyS5cupaKigo8//pjs7GwqKyu57LLLwnZDaPg1ZO7cuVRVVfHNN9/QvXt36urquPrqq/9QTuWWOtjPr927dzN//nygftjdCy+8sElL9P6O2x/R0nt4wzy9Xk98fPxhq8/+SEB7gOLi4rj//vsBeOGFFyL+LAb1/aQAZs2aFTE5+8aNG4M3r8b9IxvK7t69m23btoUt63A4WLZsWdh5Df3MCgoKgv3KjraGOnk8ngP+wNXr9cE+pvv2HWtOt27dgn3VPvnkkwPa5onm119/jfgN/rfffsPn8wF7zz34Y+dRmzZtgjffWbNmRVxu35aVBn369AkGaAdT/nDq06cPUN8HM9IHVE1NTcTrM5Lu3bvz1ltvBY/7Tz/91OKyqampXHDBBQD873//O6DhuhvOi8bvWXPDYM6cOROo/6BuSXcD2HteNbfe2bNnB8/DSP3Fm9Nw3BYuXHjAfeGP5Pm2dOlSqqurw87bunVrMEBofC021tBK++6771JQUBC8J15//fUHVZ9zzjkn+LPx008/HTKUeXOaG3SksYYvMcnJyRF/um44p1oqOjqayy67LBjUFxcX7/eLjNls5uyzzw4OQe5yuY7I5+PBfn41/vLXu3fvsMs0d9waPxtwMK23ja+JltwPevbsGQzcjwYJaA/CbbfdRmZmJtXV1Tz55JMRl7vkkkuA+mDg7bffDrvM3//+d6C+D1PjTtdjx44NftN54oknwpZ99tlnI/YTO+uss0hPTwfg9ttv32+/0D/aGbsl+vXrF7woH3zwwf32ad23Ttdccw0AP/zwAz/88EOLtqnX67n66quB+tFd9nfzOhLH4WjZtWsXH3zwQZPpgUAgOORl586d6d69e3DeHzmPNBoNF198MQCvv/562NGZ1q9fzxdffBF2XXFxcZxyyikAPP/882E/ZGfOnBlswTiSTjnllOAXpYZjt69//etfEY+X2+1udv2N+6wfiCeffJKoqCjq6uo4//zz99uaWFlZyQUXXIDdbgfq37Px48cD8MYbb4Rt/SksLOSNN94A4NJLL21x3RruhwsWLGDGjBlN5vt8vuDDWt26daNbt24tXneDCRMmYLFY8Pv93HzzzSFdjvYVCARC+nMeyfOtrq4u4i98DZ8pCQkJER/uuuiii0hMTKSwsJDLLrsMr9d7UA+DNTAajTz77LNA/TV55ZVX7vehq/Xr1zNx4sQWrb9hJLri4uKwLaL5+fm88sorYcvurx4N1wrsvV58Pl+zwXa4MofbwXx+NR7Bb9WqVU3m7y8GafzgYeNzvaXi4uI49dRTAXjuuefC3s9WrVrFl19+CRzY/eCw+EM5Ek5Q4dJ27ashp1zjv/0NrPDqq6+GDKzQOHF7uIEVGkakgfr8no0Ttz/++OMtGlihIeVGr1691PTp04OJzJVSavv27er1119X/fv3V0888URI2ZbkoY1kfwMrNIww0qZNG/X555+H5LbLz89XH374oTr55JOb5P70er3BfIlms1k9++yzwcEmGhJTv/jii+q+++4LKVdeXq5yc3ODqcBeeOGFYEJrperTn02bNk1NnDixSR7WljhUAyuEG1lGqZalXmkuj2DjgRXMZrN68803QwZWaEi5AqivvvqqSfk/ch7l5eUFE2f36tUrOFhGIBBQP/74o8rOzm52YIUlS5YEUxGNHj1abdy4USlVfy58+umnKj4+/g8PrBApBY9SzR/Xf/zjH8F633vvvaq8vFwpVZ+u65lnngmOABVuG6eddpq66qqr1A8//KAqKyuD08vLy9UTTzzRolQ5kUyZMiU4eElSUpJ65plnQlL/+Xw+tXz5cvXwww8Hj13jOuzevTs4vWvXrmrevHnBeXPnzg2mePqjAyt8/PHHwdRT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l1NeXn7YY/Lz87Hb7UBTmJ08eTKjR4/mr3/9K0bjsWfsXr16ccstt3D//fe3ub+tHtq8vDxqamrwer3HfD8RETnx9hTX4G/YRfErj0L80MBqIH36LZhSc9jn8PPG3EK+evFAMlI1jlbkdBIIBPD5fEeV1477kAO/34/f7z+qY/ft28fkyZMZPnw4zz333BcKsxUVFRQUFJCTk9PuMTabrd3hCCIicmrqlOGhob4HnW5+nJolc4iU7cackoXnrIkkTBYCjhT++c4uZp3TB59b1W5EzmQdNoa2sLCQSZMm0aVLF5544gnKysqa9x1awaBv37489thjXHrppdTV1fHQQw9x+eWXk5OTw65du/je976H3+/n0ksv7Yi3ISIiJ4jJZMTjdYPXTerk60iE6kkkEkQTsKUqzuv/2cPU0fnk+l1YLaaObq6IdKAOC7Tvvfce27ZtY9u2bXTu3LnFvkNHQWzevJmamhoATCYTa9eu5fnnn6e6upqcnBwmT57MK6+8gsejOoQiIqcri8sLLi8lFfXUBiM4rXFuv/QsUj12nA5LRzdPRDrYcR9DmwyOZUyGiIiIiJx8x5LXTqk6tCIiIiIix0qBVkRERESSmgKtiIiIiCQ1BVoRERERSWoKtCIiIiKS1BRoRURERCSpKdCKiIiISFJToBURERGRpKZAKyIiIiJJTYFWRERERJKaAq2IiIiIJDUFWhERERFJagq0IiIiIpLUFGhFREREJKkp0IqIiIhIUlOgFREREZGkpkArIiIiIklNgVZEREREkpoCrYiIiIgkNQVaEREREUlqCrQiIiIiktQUaEVEREQkqSnQioiIiEhSU6AVERERkaSmQCsiIiIiSU2BVkRERESSmgKtiIiIiCQ1BVoRERERSWoKtCIiIiKS1BRoRURERCSpKdCKiIiISFJToBURERGRpKZAKyIiIiJJTYFWRERERJKaAq2IiIiIJDUFWhERERFJagq0IiIiIpLUFGhFREREJKkp0IqIiIhIUlOgFREREZGkpkArIiIiIklNgVZEREREkpoCrYiIiIgkNQVaEREREUlqCrQiIiIiktQUaEVEREQkqSnQioiIiEhSU6AVERERkaSmQCsiIiIiSU2BVkRERESSmgKtiIiIiCQ1BVoRERERSWoKtCIiIiKS1BRoRURERCSpKdCKiIiISFJToBURERGRpKZAKyIiIiJJTYFWRERERJKaAq2IiIiIJDUFWhERERFJagq0IiIiIpLUOjTQ5ufnYzAYWvx897vfPew5iUSChx56iNzcXBwOB5MmTWL9+vUnqcUiIiIicqrp8B7aH//4xxQVFTX//OAHPzjs8T//+c/55S9/yW9/+1uWLl1KdnY2559/PrW1tSepxSIiIiJyKunwQOvxeMjOzm7+cbvd7R6bSCT41a9+xfe//30uu+wyBg4cyN/+9jcaGhp46aWXTmKrRURERORU0eGB9mc/+xnp6ekMGTKERx99lHA43O6xO3fupLi4mKlTpzZvs9lsTJw4kUWLFrV7XigUIhAItPgRERERkdODuSNv/q1vfYthw4aRmprKkiVLeOCBB9i5cyd/+ctf2jy+uLgYgKysrBbbs7Ky2L17d7v3eeyxx3j44YePX8NFRERE5JRx3HtoH3rooVYTvT7/s2zZMgDuueceJk6cyKBBg7jlllv4wx/+wDPPPENFRcVh72EwGFq8TiQSrbYd6oEHHqCmpqb5p6Cg4H9/oyIiIiJySjjuPbR33XUXV1999WGPyc/Pb3P7mDFjANi2bRvp6emt9mdnZwNNPbU5OTnN20tLS1v12h7KZrNhs9mO1HQRERERSULHPdD6/X78fv8XOnflypUALcLqobp160Z2djZz585l6NChAITDYebPn8/PfvazL9ZgEREREUlqHTYp7NNPP+XJJ59k1apV7Ny5k3/+85/cfvvtzJw5ky5dujQf17dvX15//XWgaajB3XffzU9/+lNef/111q1bx4033ojT6eSaa67pqLciIiIiIh2owyaF2Ww2XnnlFR5++GFCoRBdu3bl1ltv5b777mtx3ObNm6mpqWl+fd999xEMBvna175GVVUVo0eP5r333sPj8ZzstyAiIiIipwBDIpFIdHQjTrZAIIDP56Ompgav19vRzRERERGRzzmWvNbhdWhFRERERP4XCrQiIiIiktQUaEVEREQkqSnQioiIiEhSU6AVERERkaSmQCsiIiIiSU2BVkRERESSmgKtiIiIiCQ1BVoRERERSWoKtCIiIiKS1BRoRURERCSpKdCKiIiISFJToBURERGRpKZAKyIiIiJJTYFWRERERJKaAq2IiIiIJDUFWhERERFJagq0IiIiIpLUFGhFREREJKkp0IqIiIhIUlOgFREREZGkpkArIiIiIklNgVZEREREkpoCrYiIiIgkNQVaEREREUlqCrQiIiIiktQUaEVEREQkqSnQioiIiEhSU6AVERERkaSmQCsiIiIiSU2BVkRERESSmgKtiIiIiCQ1BVoRERERSWoKtCIiIiKS1BRoRURERCSpKdCKiIiISFJToBURERGRpKZAKyIiIiJJTYFWRERERJKaAq2IiIiIJDUFWhERERFJagq0IiIiIpLUFGhFREREJKkp0IqIiIhIUlOgFREREZGkpkArIiIiIklNgVZEREREkpoCrYiIiIgkNQVaEREREUlqCrQiIiIiktQUaEVEREQkqSnQioiIiEhSU6AVERERkaSmQCsiIiIiSU2BVkRERESSmgKtiIiIiCQ1BVoRERERSWoKtCIiIiKS1BRoRURERCSpKdCKiIiISFJToBURERGRpNZhgXbevHkYDIY2f5YuXdrueTfeeGOr48eMGXMSWy4iIiIipxJzR9143LhxFBUVtdj2wx/+kPfff58RI0Yc9tzp06fz3HPPNb+2Wq0npI0iIiIicurrsEBrtVrJzs5ufh2JRJg9ezZ33XUXBoPhsOfabLYW54qIiIjImeuUGUM7e/ZsysvLufHGG4947Lx588jMzKR3797ceuutlJaWHvb4UChEIBBo8SMiIiIipwdDIpFIdHQjAC644AIA3n777cMe98orr+B2u+natSs7d+7khz/8IdFolOXLl2Oz2do856GHHuLhhx9utb2mpgav1/u/N15EREREjqtAIIDP5zuqvHbcA2174fFQS5cubTFOdu/evXTt2pV//vOfXH755cd0v6KiIrp27crLL7/MZZdd1uYxoVCIUCjU/DoQCJCXl6dAKyIiInKKOpZAe9zH0N51111cffXVhz0mPz+/xevnnnuO9PR0Zs6cecz3y8nJoWvXrmzdurXdY2w2W7u9tyIiIiKS3I57oPX7/fj9/qM+PpFI8Nxzz3HDDTdgsViO+X4VFRUUFBSQk5NzzOeKiIiISPLr8ElhH374ITt37uTmm29uc3/fvn15/fXXAairq+M73/kOn376Kbt27WLevHlcfPHF+P1+Lr300pPZbBERERE5RXRY2a4DnnnmGcaNG0e/fv3a3L9582ZqamoAMJlMrF27lueff57q6mpycnKYPHkyr7zyCh6P52Q2W0REREROEadMlYOT6VgGGYuIiIjIyXcs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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "fig, axs = plt.subplots(nrows=1, ncols=1, figsize=(8,8))\n", + "sns.set(font_scale=1)\n", + "\n", + "palette = {}\n", + "for n, i in enumerate(set([0, 1, 2])):\n", + " palette[i] = f'C{n}'\n", + " \n", + "sns.scatterplot(ax=axs, x=embd_x.T[0], y=embd_x.T[1], hue=df[\"y\"], palette=palette)\n", + "axs.get_legend().remove()\n", + "plt.title(\"NodePiece Embeddings Colored by Classification\", fontsize=18)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c69fd5d7-ac81-47dc-bfbd-07359fc5ba57", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "PyTorch", + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/applications/nodepiece/nodepiece_gnn.ipynb b/applications/nodepiece/nodepiece_gnn.ipynb new file mode 100644 index 0000000..f53f530 --- /dev/null +++ b/applications/nodepiece/nodepiece_gnn.ipynb @@ -0,0 +1,969 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "d883ff1e-fa69-44f7-9746-4ada262fa0ec", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mWARNING: Skipping pyTigerGraph as it is not installed.\u001b[0m\u001b[33m\n", + "\u001b[0mCollecting git+https://github.com/tigergraph/pyTigerGraph.git\n", + " Cloning https://github.com/tigergraph/pyTigerGraph.git to /tmp/pip-req-build-ajzr_fe6\n", + " Running command git clone --filter=blob:none --quiet https://github.com/tigergraph/pyTigerGraph.git /tmp/pip-req-build-ajzr_fe6\n", + " Resolved https://github.com/tigergraph/pyTigerGraph.git to commit 886de415393d16d7ffab8f90824d2a7e34b8b16a\n", + " Installing build dependencies ... \u001b[?25ldone\n", + "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", + "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25hRequirement already satisfied: requests in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (2.28.1)\n", + "Requirement already satisfied: pyTigerDriver in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (1.0.15)\n", + "Requirement already satisfied: validators in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (0.20.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (3.4)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2.1.1)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (1.26.11)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2022.9.24)\n", + "Requirement already satisfied: decorator>=3.4.0 in /opt/conda/lib/python3.9/site-packages (from validators->pyTigerGraph==1.2.6) (5.1.1)\n", + "Building wheels for collected packages: pyTigerGraph\n", + " Building wheel for pyTigerGraph (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for pyTigerGraph: filename=pyTigerGraph-1.2.6-py3-none-any.whl size=135918 sha256=db81300282c8d54d176edd70ac08244cd05d243356d526f3d1cc2d88402f19e6\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-cm1os_8o/wheels/cc/41/7a/6b8eee74c439c99b3cdb01357d4b426b9a18e51e9571b28b18\n", + "Successfully built pyTigerGraph\n", + "Installing collected packages: pyTigerGraph\n", + "Successfully installed pyTigerGraph-1.2.6\n" + ] + } + ], + "source": [ + "!pip uninstall pyTigerGraph -y\n", + "!pip install git+https://github.com/tigergraph/pyTigerGraph.git --no-cache" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "abb1a8bb-8d0b-4a3a-b3f0-58c9b1280087", + "metadata": {}, + "outputs": [], + "source": [ + "from pyTigerGraph import TigerGraphConnection\n", + "import json\n", + "\n", + "# Read in DB configs\n", + "with open('../config.json', \"r\") as config_file:\n", + " config = json.load(config_file)\n", + " \n", + "conn = TigerGraphConnection(\n", + " host=config[\"host\"],\n", + " username=config[\"username\"],\n", + " password=config[\"password\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f58e7087-dd9c-443f-b3e7-f0c9a4f87452", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A folder with name imdb already exists in ./tmp. Skip downloading.\n", + "---- Checking database ----\n", + "A graph with name imdb already exists in the database. Skip ingestion.\n", + "Graph name is set to imdb for this connection.\n" + ] + } + ], + "source": [ + "from pyTigerGraph.datasets import Datasets\n", + "\n", + "dataset = Datasets(\"imdb\")\n", + "\n", + "conn.ingestDataset(dataset, getToken=config[\"getToken\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f6fefd34-5fe6-4b97-9f2d-e9fc07d2ff07", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9b01a496e3dc4d4bafd3c13ecaa01685", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "CytoscapeWidget(cytoscape_layout={'name': 'circle', 'animate': True, 'padding': 1}, cytoscape_style=[{'selecto…" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pyTigerGraph.visualization import drawSchema\n", + "\n", + "drawSchema(conn.getSchema(force=True))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ff399450-8de7-4d55-b8fd-471a6e563121", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bc3908cc-9203-4b10-beaf-07ad3c02d298", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of Anchors: 1223\n" + ] + } + ], + "source": [ + "np_loader = conn.gds.nodepieceLoader(batch_size = 64,\n", + " compute_anchors = True,\n", + " anchor_percentage = 0.1,\n", + " v_feats = {\"Movie\": [], \"Actor\": [], \"Director\": []}, \n", + " target_vertex_types=[\"Movie\", \"Actor\", \"Director\"], \n", + " max_anchors=5,\n", + " max_relational_context=5,\n", + " clear_cache=True,\n", + " use_cache=True,\n", + " e_types=conn.getEdgeTypes(),\n", + " timeout=204_800_000)\n", + "np_loader.precompute()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "32e6109c-fdfa-4330-96c0-33dc42e858f3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def process_anchors(batch):\n", + " for v_type in batch.metadata()[0]:\n", + " batch_ancs = []\n", + " batch_dists = []\n", + " for v in batch[v_type][\"anchors\"]:\n", + " anchors = [np_loader.idToIdx[x] for x in v.keys()]\n", + " dists = [np_loader.idToIdx[\"dist_\"+v[str(y)]] for y in v.keys()]\n", + " dists = dists + [np_loader.idToIdx[\"PAD\"] for z in range(len(dists), np_loader._payload[\"max_anchors\"])]\n", + " anchors = anchors + [np_loader.idToIdx[\"PAD\"] for z in range(len(anchors), np_loader._payload[\"max_anchors\"])]\n", + " batch_ancs.append(torch.tensor(anchors, dtype=torch.long))\n", + " batch_dists.append(torch.tensor(dists, dtype=torch.long))\n", + " batch[v_type][\"anchors\"] = torch.stack(batch_ancs)\n", + " batch[v_type][\"distance\"] = torch.stack(batch_dists)\n", + " return batch" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fb90f0d4-76bf-4a4f-af6c-8bfaed58f9ac", + "metadata": {}, + "outputs": [], + "source": [ + "# Hyperparameters\n", + "hp = {\n", + " \"hidden_dim\": 128,\n", + " \"num_layers\": 2,\n", + " \"dropout\": 0.5,\n", + " \"lr\": 0.0005,\n", + " \"l2_penalty\": 0.01,\n", + " \"batch_size\": 128, \n", + " \"num_neighbors\": 10, \n", + " \"num_hops\": 2\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b880e1a0-b6c3-4081-9116-9c2c367dd278", + "metadata": {}, + "outputs": [], + "source": [ + "train_loader = conn.gds.neighborLoader(\n", + " v_in_feats={\"Movie\": [\"x\"], \"Actor\": [\"x\"], \"Director\": [\"x\"]}, \n", + " v_out_labels={\"Movie\": [\"y\"]},\n", + " v_extra_feats={\"Movie\": [\"train_mask\", \"val_mask\", \"test_mask\", \"anchors\"], \"Actor\": [\"anchors\"], \"Director\": [\"anchors\"]},\n", + " output_format=\"PyG\",\n", + " batch_size=hp[\"batch_size\"],\n", + " num_neighbors=hp[\"num_neighbors\"],\n", + " num_hops=hp[\"num_hops\"],\n", + " shuffle=True,\n", + " filter_by={\"Movie\":\"train_mask\"},\n", + " callback_fn = lambda x: process_anchors(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4231b2e8-0797-40fa-b63c-2c865e800be4", + "metadata": {}, + "outputs": [], + "source": [ + "valid_loader = conn.gds.neighborLoader(\n", + " v_in_feats={\"Movie\": [\"x\"], \"Actor\": [\"x\"], \"Director\": [\"x\"]}, \n", + " v_out_labels={\"Movie\": [\"y\"]},\n", + " v_extra_feats={\"Movie\": [\"train_mask\", \"val_mask\", \"test_mask\", \"anchors\"], \"Actor\": [\"anchors\"], \"Director\": [\"anchors\"]},\n", + " output_format=\"PyG\",\n", + " batch_size=hp[\"batch_size\"],\n", + " num_neighbors=hp[\"num_neighbors\"],\n", + " num_hops=hp[\"num_hops\"],\n", + " shuffle=True,\n", + " filter_by={\"Movie\":\"val_mask\"},\n", + " callback_fn = lambda x: process_anchors(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d4234330-4417-4230-8039-96c23c093759", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HeteroData(\n", + " \u001b[1mMovie\u001b[0m={\n", + " x=[1085, 3066],\n", + " y=[1085],\n", + " train_mask=[1085],\n", + " val_mask=[1085],\n", + " test_mask=[1085],\n", + " anchors=[1085, 5],\n", + " is_seed=[1085],\n", + " distance=[1085, 5]\n", + " },\n", + " \u001b[1mActor\u001b[0m={\n", + " x=[260, 3066],\n", + " anchors=[260, 5],\n", + " is_seed=[260],\n", + " distance=[260, 5]\n", + " },\n", + " \u001b[1mDirector\u001b[0m={\n", + " x=[89, 3066],\n", + " anchors=[89, 5],\n", + " is_seed=[89],\n", + " distance=[89, 5]\n", + " },\n", + " \u001b[1m(Movie, movie_actor, Actor)\u001b[0m={ edge_index=[2, 279] },\n", + " \u001b[1m(Movie, movie_director, Director)\u001b[0m={ edge_index=[2, 93] },\n", + " \u001b[1m(Actor, actor_movie, Movie)\u001b[0m={ edge_index=[2, 1174] },\n", + " \u001b[1m(Director, director_movie, Movie)\u001b[0m={ edge_index=[2, 321] }\n", + ")\n" + ] + } + ], + "source": [ + "for batch in train_loader:\n", + " print(batch)\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f96fe01c-0a26-45e5-9257-352146fcf57b", + "metadata": {}, + "outputs": [], + "source": [ + "class BaseNodePiece(nn.Module):\n", + " def __init__(self, \n", + " vocab_size:int,\n", + " sequence_length:int,\n", + " embedding_dim:int=128):\n", + " super().__init__()\n", + " self.embedding_dim = embedding_dim\n", + " self.sequence_length = sequence_length\n", + " self.embedding = nn.Embedding(vocab_size, embedding_dim)\n", + " torch.nn.init.xavier_uniform_(self.embedding.weight)\n", + "\n", + " def forward(self, anchors, distances):\n", + " anc_emb = self.embedding(anchors)\n", + " anc_emb += self.embedding(distances)\n", + " return anc_emb" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "3f0a82ba-8b8f-4174-9b52-616ed5bdba2d", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn.functional as F\n", + "from torch_geometric.nn import SAGEConv, to_hetero" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "0ec83899-79b4-4ae7-a06d-f2c08a13e5d5", + "metadata": {}, + "outputs": [], + "source": [ + "emb_model = BaseNodePiece(np_loader.num_tokens, np_loader._payload[\"max_rel_context\"] + np_loader._payload[\"max_anchors\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0863da44-a56b-41c7-a2fb-bb07ee72cc7a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.9/site-packages/torch_geometric/nn/to_hetero_transformer.py:295: UserWarning: 'embedding' will be duplicated, but its parameters cannot be reset. To suppress this warning, add a 'reset_parameters()' method to 'embedding'\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "# Create a normal (homogeneous) GAT model\n", + "class GraphSAGE(torch.nn.Module):\n", + " def __init__(\n", + " self, num_features, num_layers, out_dim, dropout, hidden_dim\n", + " ):\n", + " super().__init__()\n", + " self.dropout = dropout\n", + " self.embedding = emb_model\n", + " self.layers = torch.nn.ModuleList()\n", + " for i in range(num_layers):\n", + " in_units = num_features if i == 0 else hidden_dim\n", + " out_units = out_dim if i == (num_layers - 1) else hidden_dim\n", + " self.layers.append(\n", + " SAGEConv(in_units, out_units)\n", + " )\n", + "\n", + " def reset_parameters(self):\n", + " for layer in self.layers:\n", + " layer.reset_parameters()\n", + " \n", + " def get_embedding(self, x, edge_index, anchors, distances):\n", + " emb = self.embedding(anchors, distances)\n", + " x = x.float()\n", + " x = torch.concat([x, torch.flatten(emb, start_dim=1)], dim=1)\n", + " #x = torch.flatten(emb, start_dim=1)\n", + " for layer in self.layers[:-1]:\n", + " x = layer(x, edge_index)\n", + " x = F.elu(x)\n", + " x = F.dropout(x, p=self.dropout, training=self.training)\n", + " return x\n", + "\n", + " def forward(self, x, edge_index, anchors, distances):\n", + " emb = self.embedding(anchors, distances)\n", + " x = x.float()\n", + " x = torch.concat([x, torch.flatten(emb, start_dim=1)], dim=1)\n", + " #x = torch.flatten(emb, start_dim=1)\n", + " for layer in self.layers[:-1]:\n", + " x = layer(x, edge_index)\n", + " x = F.elu(x)\n", + " x = F.dropout(x, p=self.dropout, training=self.training)\n", + " x = self.layers[-1](x, edge_index)\n", + " return x\n", + " \n", + "model = GraphSAGE(\n", + " num_features=3066+(128*5),\n", + " num_layers=hp[\"num_layers\"],\n", + " out_dim=3,\n", + " dropout=hp[\"dropout\"],\n", + " hidden_dim=hp[\"hidden_dim\"],\n", + ")\n", + "\n", + "# Convert it to a heterogeneous model. See https://pytorch-geometric.readthedocs.io/en/latest/modules/nn.html#torch_geometric.nn.to_hetero_transformer.to_hetero for details.\n", + "metadata = (['Actor', 'Movie', 'Director'], \n", + " [('Actor', 'actor_movie', 'Movie'), \n", + " ('Movie', 'movie_actor', 'Actor'), \n", + " ('Movie', 'movie_director', 'Director'), \n", + " ('Director', 'director_movie', 'Movie')])\n", + "model = to_hetero(model, metadata, aggr='sum').to(device)\n", + "\n", + "optimizer = torch.optim.Adam(\n", + " model.parameters(), lr=hp[\"lr\"], weight_decay=hp[\"l2_penalty\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "6f3e3ebe-de3c-486c-9a6e-136f4683d756", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "GraphModule(\n", + " (embedding): ModuleDict(\n", + " (Actor): BaseNodePiece(\n", + " (embedding): Embedding(1237, 128)\n", + " )\n", + " (Movie): BaseNodePiece(\n", + " (embedding): Embedding(1237, 128)\n", + " )\n", + " (Director): BaseNodePiece(\n", + " (embedding): Embedding(1237, 128)\n", + " )\n", + " )\n", + " (layers): ModuleList(\n", + " (0): ModuleDict(\n", + " (Actor__actor_movie__Movie): SAGEConv(3706, 128)\n", + " (Movie__movie_actor__Actor): SAGEConv(3706, 128)\n", + " (Movie__movie_director__Director): SAGEConv(3706, 128)\n", + " (Director__director_movie__Movie): SAGEConv(3706, 128)\n", + " )\n", + " (1): ModuleDict(\n", + " (Actor__actor_movie__Movie): SAGEConv(128, 3)\n", + " (Movie__movie_actor__Actor): SAGEConv(128, 3)\n", + " (Movie__movie_director__Director): SAGEConv(128, 3)\n", + " (Director__director_movie__Movie): SAGEConv(128, 3)\n", + " )\n", + " )\n", + ")" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "cb1a964d-e5a9-41e8-9d34-ecf0ac091417", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.9/site-packages/torch/utils/tensorboard/__init__.py:4: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " if not hasattr(tensorboard, \"__version__\") or LooseVersion(\n" + ] + } + ], + "source": [ + "from datetime import datetime\n", + "\n", + "from pyTigerGraph.gds.metrics import Accumulator, Accuracy\n", + "from torch.utils.tensorboard import SummaryWriter" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "cfbb89e3-32dd-4be0-8d3c-7043b08b8cfd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 0, Train Batch 0, Loss 1.1079, Accuracy 0.3333\n", + "Epoch 0, Train Batch 1, Loss 1.1028, Accuracy 0.3420\n", + "Epoch 0, Train Batch 2, Loss 1.0927, Accuracy 0.3527\n", + "Epoch 0, Train Batch 3, Loss 1.0809, Accuracy 0.3650\n", + "Epoch 0, Valid Loss 1.0732, Valid Accuracy 0.3975\n", + "Epoch 1, Train Batch 0, Loss 1.0278, Accuracy 0.4298\n", + "Epoch 1, Train Batch 1, Loss 0.9860, Accuracy 0.4862\n", + "Epoch 1, Train Batch 2, Loss 0.9707, Accuracy 0.4904\n", + "Epoch 1, Train Batch 3, Loss 0.9623, Accuracy 0.5075\n", + "Epoch 1, Valid Loss 1.0524, Valid Accuracy 0.4225\n", + "Epoch 2, Train Batch 0, Loss 0.9170, Accuracy 0.5922\n", + "Epoch 2, Train Batch 1, Loss 0.9019, Accuracy 0.5949\n", + "Epoch 2, Train Batch 2, Loss 0.8805, Accuracy 0.6589\n", + "Epoch 2, Train Batch 3, Loss 0.8704, Accuracy 0.6925\n", + "Epoch 2, Valid Loss 1.0490, Valid Accuracy 0.4600\n", + "Epoch 3, Train Batch 0, Loss 0.7794, Accuracy 0.8636\n", + "Epoch 3, Train Batch 1, Loss 0.8013, Accuracy 0.8009\n", + "Epoch 3, Train Batch 2, Loss 0.7928, Accuracy 0.7966\n", + "Epoch 3, Train Batch 3, Loss 0.7745, Accuracy 0.8025\n", + "Epoch 3, Valid Loss 1.0315, Valid Accuracy 0.4425\n", + "Epoch 4, Train Batch 0, Loss 0.7003, Accuracy 0.8246\n", + "Epoch 4, Train Batch 1, Loss 0.6980, Accuracy 0.8169\n", + "Epoch 4, Train Batch 2, Loss 0.6902, Accuracy 0.8133\n", + "Epoch 4, Train Batch 3, Loss 0.6981, Accuracy 0.7975\n", + "Epoch 4, Valid Loss 1.0246, Valid Accuracy 0.4550\n", + "Epoch 5, Train Batch 0, Loss 0.6619, Accuracy 0.8140\n", + "Epoch 5, Train Batch 1, Loss 0.6315, Accuracy 0.8689\n", + "Epoch 5, Train Batch 2, Loss 0.6174, Accuracy 0.8770\n", + "Epoch 5, Train Batch 3, Loss 0.6160, Accuracy 0.8900\n", + "Epoch 5, Valid Loss 1.0083, Valid Accuracy 0.4750\n", + "Epoch 6, Train Batch 0, Loss 0.5752, Accuracy 0.9099\n", + "Epoch 6, Train Batch 1, Loss 0.5475, Accuracy 0.9420\n", + "Epoch 6, Train Batch 2, Loss 0.5407, Accuracy 0.9579\n", + "Epoch 6, Train Batch 3, Loss 0.5454, Accuracy 0.9500\n", + "Epoch 6, Valid Loss 1.0078, Valid Accuracy 0.5075\n", + "Epoch 7, Train Batch 0, Loss 0.5167, Accuracy 0.9358\n", + "Epoch 7, Train Batch 1, Loss 0.5141, Accuracy 0.9481\n", + "Epoch 7, Train Batch 2, Loss 0.4805, Accuracy 0.9590\n", + "Epoch 7, Train Batch 3, Loss 0.4779, Accuracy 0.9675\n", + "Epoch 7, Valid Loss 1.0063, Valid Accuracy 0.4750\n", + "Epoch 8, Train Batch 0, Loss 0.4572, Accuracy 1.0000\n", + "Epoch 8, Train Batch 1, Loss 0.4276, Accuracy 0.9899\n", + "Epoch 8, Train Batch 2, Loss 0.4177, Accuracy 0.9828\n", + "Epoch 8, Train Batch 3, Loss 0.4186, Accuracy 0.9750\n", + "Epoch 8, Valid Loss 0.9978, Valid Accuracy 0.4775\n", + "Epoch 9, Train Batch 0, Loss 0.3715, Accuracy 0.9789\n", + "Epoch 9, Train Batch 1, Loss 0.3625, Accuracy 0.9781\n", + "Epoch 9, Train Batch 2, Loss 0.3761, Accuracy 0.9762\n", + "Epoch 9, Train Batch 3, Loss 0.3661, Accuracy 0.9825\n", + "Epoch 9, Valid Loss 1.0043, Valid Accuracy 0.4825\n" + ] + } + ], + "source": [ + "log_dir = \"logs/imdb/hgat/subgraph/\" + datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n", + "train_log = SummaryWriter(log_dir+\"/train\")\n", + "valid_log = SummaryWriter(log_dir+\"/valid\")\n", + "global_steps = 0\n", + "logs = {}\n", + "for epoch in range(10):\n", + " # Train\n", + " model.train()\n", + " epoch_train_loss = Accumulator()\n", + " epoch_train_acc = Accuracy()\n", + " # Iterate through the loader to get a stream of subgraphs instead of the whole graph\n", + " for bid, batch in enumerate(train_loader):\n", + " batchsize = batch[\"Movie\"].x.shape[0]\n", + " batch.to(device)\n", + " # Forward pass\n", + " out = model(batch.x_dict, batch.edge_index_dict, batch.anchors_dict, batch.distance_dict)\n", + " # Calculate loss\n", + " mask = batch[\"Movie\"].is_seed\n", + " loss = F.cross_entropy(out[\"Movie\"][mask], batch[\"Movie\"].y[mask])\n", + " # Backward pass\n", + " optimizer.zero_grad()\n", + " loss.backward()\n", + " optimizer.step()\n", + " epoch_train_loss.update(loss.item() * batchsize, batchsize)\n", + " # Predict on training data\n", + " with torch.no_grad():\n", + " pred = out[\"Movie\"].argmax(dim=1)\n", + " epoch_train_acc.update(pred[mask], batch[\"Movie\"].y[mask])\n", + " # Log training status after each batch\n", + " logs[\"loss\"] = epoch_train_loss.mean\n", + " logs[\"acc\"] = epoch_train_acc.value\n", + " print(\n", + " \"Epoch {}, Train Batch {}, Loss {:.4f}, Accuracy {:.4f}\".format(\n", + " epoch, bid, logs[\"loss\"], logs[\"acc\"]\n", + " )\n", + " )\n", + " train_log.add_scalar(\"Loss\", logs[\"loss\"], global_steps)\n", + " train_log.add_scalar(\"Accuracy\", logs[\"acc\"], global_steps)\n", + " train_log.flush()\n", + " global_steps += 1\n", + " # Evaluate\n", + " model.eval()\n", + " epoch_val_loss = Accumulator()\n", + " epoch_val_acc = Accuracy()\n", + " for batch in valid_loader:\n", + " batchsize = batch[\"Movie\"].x.shape[0]\n", + " batch.to(device)\n", + " with torch.no_grad():\n", + " # Forward pass\n", + " out = model(batch.x_dict, batch.edge_index_dict, batch.anchors_dict, batch.distance_dict)\n", + " # Calculate loss\n", + " mask = batch[\"Movie\"].is_seed\n", + " valid_loss = F.cross_entropy(out[\"Movie\"][mask], batch[\"Movie\"].y[mask])\n", + " epoch_val_loss.update(valid_loss.item() * batchsize, batchsize)\n", + " # Prediction\n", + " pred = out[\"Movie\"].argmax(dim=1)\n", + " epoch_val_acc.update(pred[mask], batch[\"Movie\"].y[mask])\n", + " # Log testing result after each epoch\n", + " logs[\"val_loss\"] = epoch_val_loss.mean\n", + " logs[\"val_acc\"] = epoch_val_acc.value\n", + " print(\n", + " \"Epoch {}, Valid Loss {:.4f}, Valid Accuracy {:.4f}\".format(\n", + " epoch, logs[\"val_loss\"], logs[\"val_acc\"]\n", + " )\n", + " )\n", + " valid_log.add_scalar(\"Loss\", logs[\"val_loss\"], global_steps)\n", + " valid_log.add_scalar(\"Accuracy\", logs[\"val_acc\"], global_steps)\n", + " valid_log.flush()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "02cceb89-6cee-460f-ac77-e610d23f5322", + "metadata": {}, + "outputs": [], + "source": [ + "test_loader = conn.gds.neighborLoader(\n", + " v_in_feats={\"Movie\": [\"x\"], \"Actor\": [\"x\"], \"Director\": [\"x\"]}, \n", + " v_out_labels={\"Movie\": [\"y\"]},\n", + " v_extra_feats={\"Movie\": [\"train_mask\", \"val_mask\", \"test_mask\", \"anchors\"], \"Actor\": [\"anchors\"], \"Director\": [\"anchors\"]},\n", + " output_format=\"PyG\",\n", + " batch_size=hp[\"batch_size\"],\n", + " num_neighbors=hp[\"num_neighbors\"],\n", + " num_hops=hp[\"num_hops\"],\n", + " shuffle=True,\n", + " filter_by={\"Movie\":\"test_mask\"},\n", + " callback_fn = lambda x: process_anchors(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "27b64562-d9aa-4ff0-9f43-233bb58b342c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.4882\n" + ] + } + ], + "source": [ + "model.eval()\n", + "acc = Accuracy()\n", + "for batch in test_loader:\n", + " batch.to(device)\n", + " with torch.no_grad():\n", + " pred = model(batch.x_dict, batch.edge_index_dict, batch.anchors_dict, batch.distance_dict)[\"Movie\"].argmax(dim=1)\n", + " mask = batch[\"Movie\"].is_seed\n", + " acc.update(pred[mask], batch[\"Movie\"].y[mask])\n", + "print(\"Accuracy: {:.4f}\".format(acc.value))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "e77eb4ba-bf26-41a0-9e28-0717e377726b", + "metadata": {}, + "outputs": [], + "source": [ + "infer_loader = conn.gds.neighborLoader(\n", + " v_in_feats={\"Movie\": [\"x\"], \"Actor\": [\"x\"], \"Director\": [\"x\"]}, \n", + " v_out_labels={\"Movie\": [\"y\"]},\n", + " v_extra_feats={\"Movie\": [\"train_mask\", \"val_mask\", \"test_mask\", \"anchors\"], \"Actor\": [\"anchors\"], \"Director\": [\"anchors\"]},\n", + " output_format=\"PyG\",\n", + " batch_size=hp[\"batch_size\"],\n", + " num_neighbors=hp[\"num_neighbors\"],\n", + " num_hops=hp[\"num_hops\"],\n", + " shuffle=False,\n", + " filter_by={\"Movie\":\"test_mask\"},\n", + " callback_fn = lambda x: process_anchors(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "4dcdd55d-f9f7-447b-abd0-4917ca050f0c", + "metadata": {}, + "outputs": [], + "source": [ + "# Fetch specific nodes by their IDs and do prediction. \n", + "# Each node is represented by a dict with two mandatory keys: primary_id and type.\n", + "input_nodes = [{\"primary_id\": 7, \"type\": \"Movie\"}, \n", + " {\"primary_id\": 55, \"type\": \"Movie\"}]\n", + "data = infer_loader.fetch(input_nodes)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "4fadc6e0-3aed-42e0-bf99-990c49453189", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "HeteroData(\n", + " \u001b[1mMovie\u001b[0m={\n", + " x=[54, 3066],\n", + " y=[54],\n", + " train_mask=[54],\n", + " val_mask=[54],\n", + " test_mask=[54],\n", + " anchors=[54, 5],\n", + " is_seed=[54],\n", + " primary_id=[54],\n", + " distance=[54, 5]\n", + " },\n", + " \u001b[1mActor\u001b[0m={\n", + " x=[6, 3066],\n", + " anchors=[6, 5],\n", + " is_seed=[6],\n", + " primary_id=[6],\n", + " distance=[6, 5]\n", + " },\n", + " \u001b[1mDirector\u001b[0m={\n", + " x=[2, 3066],\n", + " anchors=[2, 5],\n", + " is_seed=[2],\n", + " primary_id=[2],\n", + " distance=[2, 5]\n", + " },\n", + " \u001b[1m(Movie, movie_actor, Actor)\u001b[0m={ edge_index=[2, 6] },\n", + " \u001b[1m(Movie, movie_director, Director)\u001b[0m={ edge_index=[2, 2] },\n", + " \u001b[1m(Actor, actor_movie, Movie)\u001b[0m={ edge_index=[2, 54] },\n", + " \u001b[1m(Director, director_movie, Movie)\u001b[0m={ edge_index=[2, 11] }\n", + ")" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "0041c079-96ad-4e60-bd04-f57e776204c9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ID: Label\n", + "55:0\n", + "7:0\n", + "4157:1\n", + "326:0\n", + "1239:1\n", + "3597:2\n", + "1346:1\n", + "89:0\n", + "464:0\n", + "2263:1\n", + "1863:0\n", + "111:0\n", + "3718:1\n", + "3242:2\n", + "553:1\n", + "387:0\n", + "1074:0\n", + "9:0\n", + "1940:2\n", + "1901:0\n", + "1206:0\n", + "2382:2\n", + "1858:1\n", + "1543:2\n", + "178:0\n", + "211:2\n", + "963:2\n", + "3983:2\n", + "633:0\n", + "69:0\n", + "3150:1\n", + "2429:0\n", + "70:0\n", + "588:1\n", + "520:2\n", + "1116:0\n", + "1452:0\n", + "712:0\n", + "15:0\n", + "3124:0\n", + "2789:1\n", + "3137:2\n", + "1433:1\n", + "2077:2\n", + "138:1\n", + "22:0\n", + "40:0\n", + "3454:2\n", + "3174:0\n", + "1673:0\n", + "2897:2\n", + "109:0\n", + "768:1\n", + "2184:1\n" + ] + } + ], + "source": [ + "# Predict. Predictions for both the input nodes and others in their \n", + "# neighborhoods are generated.\n", + "model.eval()\n", + "pred = model(data.x_dict, data.edge_index_dict, data.anchors_dict, data.distance_dict)[\"Movie\"].argmax(dim=1)\n", + "print(\"ID: Label\")\n", + "for i,j in zip(data[\"Movie\"].primary_id, pred):\n", + " print(\"{}:{}\".format(i, j.item()))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "a9841d7c-dcc0-4223-a93a-328b91c2669b", + "metadata": {}, + "outputs": [], + "source": [ + "df = conn.getVertexDataFrame(\"Movie\", limit=1_000)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "0ccde7b0-6ffd-4cf8-8a54-145790ce4404", + "metadata": {}, + "outputs": [], + "source": [ + "sample = [{\"primary_id\": x, \"type\": \"Movie\"} for x in df[\"v_id\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "36c1760c-a591-494f-bb72-bf0ca2464f2a", + "metadata": {}, + "outputs": [], + "source": [ + "batch = infer_loader.fetch(sample)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "dd7dd987-b7fd-4642-a3f8-dd2a6efe5411", + "metadata": {}, + "outputs": [], + "source": [ + "embeddings = model.embedding[\"Movie\"](batch.anchors_dict[\"Movie\"], batch.distance_dict[\"Movie\"]).flatten(start_dim=1)[batch[\"Movie\"].is_seed]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "af84ffc7-5014-4159-a4fc-a7dcc45e42b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "torch.Size([1000, 640])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "embeddings.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "004ff3ab-e2b0-41b7-8e39-b2b401ec429e", + "metadata": {}, + "outputs": [], + "source": [ + "import umap.umap_ as umap\n", + "\n", + "embd_x = umap.UMAP().fit_transform(embeddings.detach().numpy())" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "5ecd3577-b5f4-4e4e-baa6-cc5e885f434f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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/vnPf4oePXqEjxX19SwoKAiX/dvf/haxb+h0uvA2U7/dbdiwIepyTmR7a07D7aF+25HJZCIpKSmivtdff70IhUJRp508eXLM+QcCAdGhQwcBQPz9739vcb0++eST8LLfe++9Y16vek3tb2+99VbEtq3VasPHsvqfP//5z1Hnu3Dhwoh9Q6lUNnv82rRpk0hKSoo49x79OUc7R0Xbfi+++GKRkZERPm5pNBqRkZER/vnoo4+EEJHH84bbY73jOX8tWbIkorxarY44fwIQl112mQgGgxHTDR06NGL9G9Y3IyND3HXXXY3+N7G26Y8//jji8zcajRF/5+TkiB07djSarmHdf/rpp3C9jUajUCgU4XHZ2dmiqKgo6rKP1WkVTlevXh3+EL///vuIss2F0+nTp4cPoi+++KJwOp1CCCFKSkrEDTfcEJ72pZdeajTtCy+8EB5/xx13iIqKCiFEXeCdNWuWkCQpvING28m++OKL8I78wAMPiIMHD4pQKCRCoZDYtWuXuOyyy8LB4tChQzHXK1Y43b59e7jMX/7yl/DwpsLpmjVrwgf6W2+9VezcuVMEAgEhhBCHDh0Sf/jDH8Lhae3atRHT+v1+MXr06PAO+o9//EOUl5cLIeoOygUFBeKVV14RDz74YMR0NTU1onPnzgKAmDRpkvj555+Fx+MJf5Zz5swJ7zTPP/981HVtyskKpxaLRUyePFls375dCCGEy+USL774YjikPvzww8JsNovLL79cHDx4UAghhN1uFw899FB4HosWLYpZv/rw8/LLLwu32y2EEOLw4cPi0ksvDU//1VdfNZr+RLajwsJCYTKZBADRv39/sWbNGiGEEMFgUHz//feiY8eOESeZo61fvz58EJswYYLYuXOnEEIIn88n5s6dKywWS3j64w2nSUlJQqVSiTlz5gir1SqEEKKyslLcdNNN4Xr9+OOPjaafPXt2ePw999wjKisrhRBCWK1W8dRTT4XDarR94b333guf5F5//XVht9uFEHVfSMvKysS8efPE9OnTGy2zKXPnzg3X55tvvjmmaRs6fPhw+DPt06ePWL58eXjczz//LHr27CkAiOTk5KgnlFjHw0AgIEaMGBHeFt9//33h9XqFEELs379fnHfeeeFpv/vuu0bzrQ+nBoNBZGZminnz5gmfzyeEqNvO6o+tzz33XPgEOHv2bFFSUhJe/rp168SkSZMEANGxY8fw517vRLe35tRvc/VfLJ944onwNldeXi7uuOOO8GfwwgsvRExbfx6SJEns378/6vznz58fPn7Wr3dL3HrrreGgXF+f49HU/vbFF1+IW265RSxZsiS8rwghRHFxsXjsscfCAS3aMah79+4CgJgyZYrYunVreLjb7RZbt24Vs2bNEm+++WbENJMnTxYAxODBg8WqVavCYd/r9Yo9e/aIf/7zn+KZZ55ptKymzufNXXhpKpwe7/lr9erV4qqrrhLffvutKC0tDa9HVVWVeOGFF8LH16O3FyEiw2FTmgqn69evD/9vRo8eLTZv3iyEqDuGz58/X2RlZQkAolu3bo32p4bLT0pKEhdccEF4n/J6veLjjz8WRqNRABAzZsxoso4tdVqFUyHqvjkBEAMHDoz4RttUOF2zZk143CuvvBJ1WfXhNTU1NRwYhKjb6ZKTk5v8pz3wwAMxvwF6vd7wN+g33ngj5rpecMEFAoD44x//GDG8JeG0/moTAPHFF1+Ehze1Aw8bNkwAEI888kjMOt11111Rv0G+/vrr4YPzt99+G3P6o917773hYOr3+6OWmTdvXvj/EKtMLPXhT6lUNvp2evRP/Tfseg0/5759+4ZDc0MzZswIlznrrLMaXVERQoSviEa7YlZfv1jbQjAYDH+b79OnT8S4E92ObrvtNgFApKSkiLKyskbTbd26NeKqwdGmTZsmAIgePXoIl8vVaPyCBQvC0x5vOG1qGx8yZIgAIG666aaI4U6nM3xSiHWVsn7Z0faF+s/llltuiTrt8Xj44YfDyzty5Mhxz+f3v/99+GQSLeA0/MJx++23Nxof63j40UcfhcctWLCg0XR+vz8cXvPz8xuNrw+ncrk85lXPiooKodPphCRJYvHixVHL+P3+8P/1ueeeixh3ottbcxpuc7GOgddcc004/Dc8JwghxKBBgwQA8cADD0Sdtj7gX3LJJcdUrzFjxggAIi8v75imO1pT+1tznn32WQE0vjJcVlYW/syKi4tbPL/6OzsrV648pnq0Vjg93vNXcz799NNwODzayQinU6dOFQBE9+7dw18AG9qwYUP4C92zzz4bc/kTJ05sdHVXCCFefPFFAdRdST/Wc280p1043blzZ/gK1gcffBAe3lQ4/dOf/hT+hh7tnyKEEDt27AhPP3/+/PDwr776Kjx87969Uaetra0N32Y4emf58ssvBVB3KT9amKn32WefCaDudlVDscKp1+sVO3bsEHfeeWf41ldeXl7ERhVrB960aVM4xNXW1sas07p16wQAodfrw1dVhRBi1KhRAoA499xzY057tFAoFA75TR0QQqFQ+IS7evXqFs9fiMjw19zP0SGo4ef8+uuvR53/+++/Hy4T7QqeEEI8+eSTAoAYNmxYzPrl5OTE3BYWLlwYXsaWLVvCw09kO2r42T/00EMxp73yyiujHkBramrC29hrr70Wc/ozzjjjhMJpTk5OzP3zscceEwDE8OHDI4bXf5kBIA4cOBB1WpvNFr5tefS+8OCDDwoA4oILLoi5XseqPvACaBRqWqrh/+zoKzgN3X///eEvHUeLdTys/4J/xhlnxJzvd999F3U7FOK3cNrU/v/888/H3A8a+uc//ykAiKlTp4aHnYztrTn125xWq415hXLPnj1RzwlCCPHKK6+E98f6q8b1ioqKwueoH3744Zjq1bt3bwFAjBgx4thW6CgnEk7rz4U6nS7iuO9yucL/l/Xr17d4fvVX9D7//PNjqkdrhdPjOX+1hMvlihneTzSc1tTUhB+DiHWBTQghfve73wmg7ip1rOVHu6snRN0d0/oy0R4NOFanxQtRDfXq1QvXX389gLoHzlvy8sm6desAABMnToRMFv0j6927d7jJifryDX/PyclB9+7do05rNpsxZMiQqOOWL18OoO5B+qysLGRmZkb9ufnmmwEAhw4dirke119/ffihZrVajT59+uDf//43QqEQunTpgvnz50OhaL7p2/o6hUIh9OzZM2adpk6dCgBwOp2oqqoCUPfySP3D6+eff36zy6q3Y8cOVFdXA6h7ASbWMrOyssIvOzT1WTRl/PjxEHVf3GL+NPWSWLSmSwBENPA8bNiwJss0bJvwaPUP9Uczbty48P+w4XZ4IttRQUFB+LOfNGlSzHrFGrdhw4bwy0jHM31LDRs2LOb+mZ2dDQDh9WhYNwDo1KkTunTpEnVao9EYc/8855xzIEkS5s+fj2nTpmHu3LlNdvbREqKFL780peH/7Mwzz4xZ7qyzzgIAVFVVoaCgoEXzrt+umprvxIkTIZfLI8ofbfTo0TGnr99et23bFnNbzczMxOOPPw4gcnttq+0NAIYOHQqTyRR1XF5eXvhFtqM/g6uuugomkwllZWX4+uuvI8a9+eabCAaD6NKlS/j/01L1287x9tLWUmVlZXj00UdxxhlnICUlBQqFInxu6dOnD4C6N+KPbmN18uTJAICpU6fib3/7G9asWQOfz9fkss477zwAwLXXXos///nPWLZsWdyaTDve81c9u92OZ599FuPHj0d6enq4ZypJkiLaYz2pLxahbp+o3zZacjzYsmVLzGw0YsSIqMPrj7FA4+Ps8ThtGuFvaNasWfjggw9w4MABvPzyy7jzzjubLF9eXg4AzbZ31rFjRxw5ciRc/linjab+ROfz+Vr0Zq3b7Y45rmEj/HK5HCaTCT169MDUqVMxc+ZM6PX6ZuffsE7BYLDFb/vWH0yqqqrCG31ubm6Lpm24TACoqKg4pmW2NaPRGHV4w+DfXJmmvjQ1tS2p1WqkpKSgrKwsYjs8ke2o4XyaWnasbfhEp2+pWJ8pEPtzrd+WGh5Yo4lV7zFjxuAf//gHHn74YSxYsCDcWkTHjh1x5plnYubMmRFv2rZEampq+Pfq6upm6xbN8Xzm5eXlMQN6tHk3NV+NRoPU1NRG22FDDZs2Olr99up2u5s8ptVruK+31fbW3PzrxxcVFTX6DAwGA66++mq89NJLePXVV3HJJZcAqPvC/8YbbwAAbr755mMOmfXbTv3FgNawatUqnHPOOaitrQ0Pq2/1Q5IkBIPBcCsKTqczYnt+/fXXccEFF2Dz5s144okn8MQTT0ClUmHYsGG48MILceONNzbq4OSZZ57Bvn37sGTJEsyZMwdz5syBXC7HwIEDce655+KWW25ps7ZIj/f8BQB79uzB5MmTUVRUFB6m0+lgsVjCX6rrj80NW3U5GY51nwgEAqiuro7aY1ZLzm8tuejXnNPuyilQ98+pD6RPPvlki5sVaemBIlq54/0mGwwGAdR902zual79TywNG+E/cuQIdu7cia+++gq33XZbi4Npwzr16tWrxXWK1rTFsXwm9csE6prGackyT9V+r49nWzpZ21FrX5Fpay290tTUfnXfffehoKAAzz33HC666CKkp6ejqKgIb7/9NiZNmoTLLrvsmA7WDduc3LhxY4uni+VEjlutOd/6K6vR1G+vv//971u0rcar//MT2R9uu+02AMCiRYvC9V+4cCEOHToEhUIRvsN3LOq3nf3798dsFuhEBAIBXHnllaitrcXAgQPx3XffwWazwW63o6ysDKWlpVi9enW4/NH7TadOnbBhwwYsWLAAd911F4YMGYJQKIQVK1bg/vvvR/fu3fHTTz9FTGOxWPDTTz/hl19+wf3334/Ro0dDoVBg/fr1ePzxx5GXl4e5c+ee9HVtzrH+76+//noUFRWhc+fO+PTTT1FVVQWn04ny8vLwObneybh7cqLifaw/LcMpADz44INISkpCeXk5/vWvfzVZtv4bfmFhYZPl6r8RpaWlNZq24belaGJdxs/MzATwW48WiaC+TgcOHDjmb3gpKSnh7uCO5YRSv0wgsT6LeGhqW/J6veGrJg2vTJ3IdtRwPk0tO9Y23HD6pm5XnexbWS1RX7fmbsU3Nz47Oxt33303vvjiC5SVlWHLli246aabANS1u/rSSy+1uE4NHx/64osvWjxdQw0/86aOWw3/nw2PWy2Zd1Pz9Xg84e2wpfNt6GRtr629vbX0uB7tKnG/fv0watSoiKulr732GgDgwgsvjDjmtVT9bfNQKIT58+cf8/TNWbVqFQ4dOgS5XI5vvvkG06ZNa3QlrbS0tMl5yGQynH322XjhhRewbt06VFdX44MPPkCnTp1QU1ODq666Kuqt/vq7FMuXL0dtbS2++uor9OvXD263GzfccMMJtdnbUsd7/iosLMTKlSsB1HWdeumllza6Qtzc53YiWnoMrx+nUCiQlJTUavVpidM2nFosFjzwwAMAgH/9618xbz0BCPc3v2TJkpgNee/atSt8IGr4PGH9tIWFhdi/f3/UaW02G9avXx91XP1zWUeOHAk/hxVv9XXy+XzHfPJUKBThZzKPftaqKfn5+eFnuz766KNjWuapZtmyZTG/Wf/yyy8IBAIAftv2gBPbjrp06RI+kC5ZsiRmuaOveNQbPHhwOGwdz/StafDgwQDqnlmMdbJxOBwx989Y+vXrh9deey38uS9atKjF02ZkZGD69OkAgA8//PCYulyu3y4a/s+a6spw8eLFAOpOui25pQ/8tl01Nd+lS5eGt8NYz1c3pf5zW7169TE/O96W29u6detgt9ujjtu3b1/4ZN9wX2yo/urpm2++iSNHjoSPibfccstx1efCCy8M35qdPXt2RHfUTWmqg4qG6r+QpKWlxbw9XL9NtZTRaMRVV10VDuhlZWXNfinRaDS44IILwt1IezyeNjk/Hu/5q+EXuUGDBkUt09Tn1vBZ+uO5qtpwn2jJ8WDAgAHhEB4vp204BYC77roLHTt2hN1ux5NPPhmz3BVXXAGg7sT++uuvRy3zt7/9DUDdMz8NHzg+66yzwt9AnnjiiajTPvPMMzGfqzr//PORlZUFAPjjH//Y7HOUJ+NB5OYMHTo0vIM99NBDzT4DenSdbrzxRgDAd999h++++65Fy1QoFLjhhhsA1PXq0dyBqC0+h3g5fPgw3nnnnUbDQ6FQuNvC3r17o1+/fuFxJ7IdSZKE3/3udwCAl19+OWqvPDt27MBnn30WdV4WiwVTpkwBAPzzn/+MesJcvHhx+MpCW5oyZUr4S0/9Z3e05557Lubn5fV6m5x/w2e8j8WTTz4Jg8EAt9uNSy65pNmrfDU1NZg+fTqsViuAuv/Z5ZdfDgB45ZVXol6VKS4uxiuvvAIAuPLKK1tct/rj4apVq7Bw4cJG4wOBQPhFpfz8fOTn57d43vVmzJgBrVaLYDCI22+/PeKxnqOFQqGI5x/bcntzu90x77zVn1OSk5Njvth02WWXISUlBcXFxbjqqqvg9/uP60WoeiqVCs888wyAun3y2muvbfaFox07dmDmzJktmn99D2RlZWVRr1QWFRXhxRdfjDptc/Wo31eA3/aXQCDQZHCONk1rO57zV8Oe2zZv3txofHMZpOFLdw239ZayWCw4++yzAQDPPvts1OPZ5s2b8fnnnwM4tuNBqznR1/0TWbSmpI5W32ZZw5/mGuH/97//HdEIf8NGvqM1wl/fEwlQ135kw0a+H3/88RY1wl/fDMTAgQPFggULwo1eCyHEgQMHxMsvvyyGDRsmnnjiiYhpW9LOaSzNNcJf37NEly5dxKeffhrRdlpRUZF47733xJlnntmobUm/3x9uj0+j0Yhnnnkm3DFBfSPGc+bMEffff3/EdFVVVaJbt27h5qn+9a9/hRs/FqKuSa7vv/9ezJw5s1E7ny1xshrhj9ajiBAtaw6kqXbqGjbCr9FoxKuvvhrRCH99MyAAxLx58xpNfyLb0aFDh8KNLA8cODDcsUIoFBI//PCD6NSpU5ON8K9duzbcPM6kSZPErl27hBB128LHH38skpKSTrgR/ljNwgjR9Of697//PVzv++67T1RVVQkh6pqQevrpp8M9/0RbxtSpU8X1118vvvvuO1FTUxMeXlVVJZ544okWNd8SyxdffBHu6CI1NVU8/fTTEc3RBQIBsWHDBvHII4+EP7uGdSgsLAwP79u3r1ixYkV43PLly8PNDp1oI/wffPBBuDmkAwcOhNvKBZpuhL+541HDzksmTpwoli9fHm6aKBQKiZ07d4p//etfonfv3o16QzrR7a05DRvhl8lk4qmnnhI2m00IUddGa30bz0DjNliP9uc//zni/PPUU08dc32OVt9EGFDX5vG7774bcax0u91i8eLF4vrrrxcKhUIMGDAgYvpY+1ttbW24h7Fx48aJ3bt3CyHqtokFCxaIbt26iZSUlKjHwiVLloh+/fqJOXPmiB07doSbfQuFQmLFihWiX79+AqhrsrH+/1xQUCC6du0qnnjiCbFhw4aIpg43b94c7rVRr9eH99t6TZ3PT7QR/mM9f4VCIdGpU6fwvrhu3brwuJUrV4rBgwdHfG5H19npdIaPBc8880zM5gCbOs5t2LAh3Bb1mDFjwk28BYNB8e2334rs7GwBNN8If1Oa+syP1WkfTgOBgOjVq1ez4bS2tjaiHUyFQtGoC7VY3ZcGg8GIBtjrT3b1B8+WdF/6/vvvR3QRp1AoREpKSqNuEp988smI6VornApR16Zmwx1KLpeLlJSURl3ZHR1Ohag7gNc3OA8gHNCb6770wIEDYsCAARHzt1gs4bZN63+6d+9+TOsqxLE1wp+RkRExbVuG0wcffDB8cFQqlRFd2wF1PVDFcrzbkRBCfPPNN426vqtvILsl3Ze+8sorEftLw24+T1b3pbE09bn6/f6I3rWO3j9nzJghZs6cKYC63tAaOrptXJPJ1GhbvPTSS2O2v9qc5cuXh3vVqf9RqVQiOTk5omtOSZLElVde2ajNzKVLl0Z0K6rX6yO6L7VYLOLnn3+OuuymjodFRUWib9++EXVq+OVEJpNF7elGiJaHUyGEeOaZZyK6/1WpVCIlJSXiOAFAvP/++42mPZHtrTnRui+N1q3mzJkzm/3f7927NzzNsfYI1ZRXXnmlUdegOp0u6rCje1hqan976aWXIqZv2I1xampquHero4+FR3ffqVQqRUpKSkT3lyaTKWJ7bHhcrf+Mk5OTI7qwValU4tNPP21Uz6a23xMJp0Ic3/nr66+/jlhXnU4XPhbrdDqxePHiJut84403RkzbqVMnkZubG9FVbHPdl3700UcRn53JZAr/74CWdV/alKbqf6xO+3AqRGRD3E19sIFAQLzxxhtiwoQJIikpSSiVSpGVlSWmT5/eon/Gu+++K0aOHCn0er0wGo1i2LBh4uWXXxahUKhFJ9ji4mLx8MMPi6FDhwqLxSLkcrkwm81i4MCB4o477hCLFy9u1DNDa4ZTIeoa9509e7YYM2aMSE5OFnK5XBgMBtGnTx9x4403ivnz58dsSDwYDIr3339fTJs2TaSnpwulUinS09PFkCFDxAMPPBDu/vNofr9fvPvuu+K8884TWVlZQqlUCo1GI7p06SIuvvhi8eabb4a/yR6LY2mE/+idtC3D6aOPPiq8Xq946qmnRH5+vtDpdMJsNovJkye3qMeS49mO6m3fvl1cccUVIj09XajVatG5c2dxxx13iNLS0hat38qVK8X5558vkpOThUajET169BAPPvigsNlsTa57a4ZTIequbLz++uti+PDh4f1zxIgR4Q4V6q8GNuzeVwghtmzZIv7xj3+Ic845R+Tl5Qmj0SiUSqXIzs4WF1xwwTE3HB5NIBAQc+fOFVdffbXo3r27MJlMQqlUitTUVDFmzBjx0EMPha8MRlNSUiL+/Oc/i969e4f7Qe/du7e49957mwxCzR0P3W63mDNnjhg5cmS43/qcnBwxY8YMsXHjxpjzPZZwKkRdePvTn/4k+vfvL0wmUzgEDhs2TNx///1i5cqVMa8kHe/21pyG21woFBIvvfSSGDp0qDAajcJgMIgzzjhDvPvuuy2eX32PUcfa1W1zamtrxfPPPy/OOecckZOTI7RarVCr1aJDhw5i2rRp4oUXXoh6rGyuEf5vv/1WTJgwIRxMu3XrJu68805x5MiRmMdCh8MhPvnkE3HbbbeJIUOGiKysLKFQKITBYBADBw4U999/f6Me0Xw+n5g/f77405/+JEaOHCk6duwoVCqV0Ol0ok+fPuL2228Xe/bsiVrH1gynQhzf+WvlypXi3HPPFRaLRahUKtGpUydx/fXXh/ffpurs8XjErFmzwsf8+rIN16El2/TevXvFrbfeKrp16ybUanX483/sscdidigRj3Aq/W+GREQUhRACnTp1QlFREd59913MmDEj3lWiU0hpaSlycnIQCATwww8/hJ+XJTqdndYvRBERNee9995DUVERFApFuKkeopPl5ZdfRiAQQPfu3Y/7RSiiUw3DKRGd9q688kp89tlnES0RlJWV4emnnw536Tpz5szj6q2JKJZ169aF3/a/5557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QmE4JaJTnl6lQ6/0PHRK6ghvwAeNQgWtMlaT/0REFE8Mp0R02tAptdAxlBIRJTQ+c0pERERECYPhlIiIiIgSBsMpERERESUMhlMiIiIiShgMp0RERESUMBhOiYiIiChhMJwSERERUcJgOCUiIiKihMFwSkREREQJg+GUiIiIiBIGwykRERERJQyGUyIiIiJKGAynRERERJQwGE6JiIiIKGEwnBIRERFRwmA4JSIiIqKEwXBKRERERAmD4ZSIiIiIEgbDKRERERElDIZTIiIiIkoYDKdERERElDAYTomIiIgoYTCcEhEREVHCYDglIiIiooTBcEpERERECYPhlIiIiIgSBsMpERERESUMhlMiIiIiShgMp0RERESUMBhOiYiIiChhMJwSERERUcJgOCUiIiKihMFwSkREREQJg+GUiIiIiBIGwykRERERJQyGUyIiIiJKGAynRERERJQwGE6JiIiIKGEwnBIRERFRwmA4JSIiIqKEwXBKRERERAmD4ZSIiIiIEgbDKRERERElDIZTIiIiIkoYDKdERERElDAYTomIiIgoYTCcEhEREVHCYDglIiIiooTBcEpERERECYPhlIiIiIgSBsMpERERESUMhlMiIiIiShgMp0RERESUMBhOiYiIiChhMJwSERERUcJgOCUiIiKihMFwSkREREQJg+GUiIiIiBIGwykRERERJQyGUyIiIiJKGAynRERERJQwGE6JiIiIKGEwnBIRERFRwmA4JSIiIqKEwXBKRERERAmD4ZSIiIiIEgbDKRERERElDIZTIiIiIkoYDKdERERElDAYTomIiIgoYcQ9nM6aNQuSJEX8ZGZmxrtaRERERBQHinhXAAD69u2LxYsXh/+Wy+VxrA0RERERxUtChFOFQsGrpUREREQU/9v6ALB3715kZ2ejS5cuuOKKK3DgwIF4V4mIiIiI4iDuV05HjBiBd999Fz169EBZWRmefPJJjBo1Ctu3b0dKSkqj8l6vF16vN/y3zWZry+oSERERUSuShBAi3pVoyOl0olu3brj//vtxzz33NBo/a9YsPPbYY42GW61WmEymtqgiERERER0Dm80Gs9ncoryWELf1G9Lr9ejXrx/27t0bdfyDDz4Iq9Ua/iksLGzjGhIRERFRa4n7bf2jeb1e7Ny5E2PHjo06Xq1WQ61Wt3GtiIiIiKgtxP3K6b333otl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XFzcoS0UCsnpdKqmpiZHVZnTd7/7XU2ZMkWhUEgrV67UTTfdpC1btujBBx/MdWmmUVdXp0wm0+mcKi4u5nzahxkzZujRRx/VmDFjtHv3bv34xz/WMccco/Xr16uwsDDX5Q0Yn59nXZ2D27Zty0VJA8YZZ5yhCy64QCNGjNCWLVv0ox/9SCeffLJWr149KJ+A1BXDMHTdddfpuOOOU2VlpaTBe84dsjOnXd0A8M9fb7/99n7v75ZbbtGsWbM0efJkXX/99brjjjt0zz33HMSfIDf6etwsFkunNsMwumw/1BzIWF577bWaPXu2Jk6cqG9/+9t64IEH9NBDD6m+vj7HP4X5/PO5M1jOp94444wzdP7552vChAn60pe+pBdeeEGS9Mgjj+S4soGJc/DAXXjhhZo7d64qKys1b948vfTSS/roo4/az0V8+unsunXr9Pjjj3fqG2zn3CE7c7pw4UJddNFFe92moqKix/ufOXOmotGodu/e3ekvmoGsL8etpKREb731Voe2xsZGpVKpQ2rMutObsfz8LtZNmzYxs/WZcDgsm83WaZa0trZ2UJxPfcnn82nChAn6+OOPc13KgPL5Cgc1NTUqLS1tb+ccPHClpaUaMWIE5+Bnrr76aj333HNatmyZhg0b1t4+WM+5QzachsNhhcPhg7b/NWvWyO12d7uE0kDVl+M2a9YsLVq0SNXV1e3/qV555RW5XC5NnTq1T45hZr0ZyzVr1khShzejwc7pdGrq1KlavHixzj333Pb2xYsX6+yzz85hZQNPIpHQhg0bdPzxx+e6lAFl5MiRKikp0eLFi3XUUUdJ+vRa6KVLl+ruu+/OcXUDS319vbZv3z7o3+MMw9DVV1+tZ555Rq+99ppGjhzZoX+wnnOHbDg9EFVVVWpoaFBVVZUymYzWrl0rSRo1apT8fr+ef/551dTUaNasWfJ4PFqyZIluvvlmXXbZZYP6Wpl9jducOXN05JFHav78+brnnnvU0NCgG264QQsWLFAgEMht8SayfPlyrVixQieddJKCwaBWrVqla6+9VmeddZbKy8tzXZ6pXHfddZo/f76mTZumWbNm6X/+539UVVWlK664ItelmdoNN9ygefPmqby8XLW1tfrxj3+saDQ66JfD60pzc7M2bdrU/v2WLVu0du1aFRQUqLy8XN/73vf0k5/8RKNHj9bo0aP1k5/8RF6vV1/72tdyWHXu7W3cCgoKdNttt+n8889XaWmptm7dqh/+8IcKh8Md/tAcjK666io99thjevbZZ5WXl9f+yVAwGJTH45HFYhmc51wulwowi0suucSQ1OlryZIlhmEYxksvvWRMnjzZ8Pv9htfrNSorK41f/epXRiqVym3hObavcTMMw9i2bZsxd+5cw+PxGAUFBcbChQuNeDyeu6JNaPXq1caMGTOMYDBouN1uY+zYscatt95qtLS05Lo0U7r//vuNESNGGE6n05gyZUr7kivo3oUXXmiUlpYaDofDKCsrM8477zxj/fr1uS7LlJYsWdLl+9oll1xiGManS/vceuutRklJieFyuYwTTjjBeO+993JbtAnsbdxaW1uNOXPmGEVFRYbD4TDKy8uNSy65xKiqqsp12TnX1ZhJMh5++OH2bQbjOWcxDMPoryAMAAAA7M0he7c+AAAABh7CKQAAAEyDcAoAAADTIJwCAADANAinAAAAMA3CKQAAAEyDcAoAAADTIJwCAADANAinAAAAMA3CKQAAAEyDcAoAAADTIJwCAADANP5/4RTpSXj97T0AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "fig, axs = plt.subplots(nrows=1, ncols=1, figsize=(8,8))\n", + "sns.set(font_scale=1)\n", + "\n", + "palette = {}\n", + "for n, i in enumerate(set([0, 1, 2])):\n", + " palette[i] = f'C{n}'\n", + " \n", + "sns.scatterplot(ax=axs, x=embd_x.T[0], y=embd_x.T[1], hue=df[\"y\"], palette=palette)\n", + "axs.get_legend().remove()\n", + "plt.title(\"NodePiece Embeddings Colored by Classification\", fontsize=18)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "628c1314-d86b-4190-9799-5abcde5bf8d8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "PyTorch", + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 414d2c9497e55f0d9b8d1e66daeeb2fdd19deed4 Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Fri, 16 Dec 2022 13:13:21 -0600 Subject: [PATCH 32/62] feat(nodepiece_gnn): update embedding table --- applications/nodepiece/nodepiece_gnn.ipynb | 380 +++++++++++---------- 1 file changed, 201 insertions(+), 179 deletions(-) diff --git a/applications/nodepiece/nodepiece_gnn.ipynb b/applications/nodepiece/nodepiece_gnn.ipynb index f53f530..df3b35a 100644 --- a/applications/nodepiece/nodepiece_gnn.ipynb +++ b/applications/nodepiece/nodepiece_gnn.ipynb @@ -10,10 +10,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[33mWARNING: Skipping pyTigerGraph as it is not installed.\u001b[0m\u001b[33m\n", - "\u001b[0mCollecting git+https://github.com/tigergraph/pyTigerGraph.git\n", - " Cloning https://github.com/tigergraph/pyTigerGraph.git to /tmp/pip-req-build-ajzr_fe6\n", - " Running command git clone --filter=blob:none --quiet https://github.com/tigergraph/pyTigerGraph.git /tmp/pip-req-build-ajzr_fe6\n", + "Found existing installation: pyTigerGraph 1.2.6\n", + "Uninstalling pyTigerGraph-1.2.6:\n", + " Successfully uninstalled pyTigerGraph-1.2.6\n", + "Collecting git+https://github.com/tigergraph/pyTigerGraph.git\n", + " Cloning https://github.com/tigergraph/pyTigerGraph.git to /tmp/pip-req-build-jd_wqmo6\n", + " Running command git clone --filter=blob:none --quiet https://github.com/tigergraph/pyTigerGraph.git /tmp/pip-req-build-jd_wqmo6\n", " Resolved https://github.com/tigergraph/pyTigerGraph.git to commit 886de415393d16d7ffab8f90824d2a7e34b8b16a\n", " Installing build dependencies ... \u001b[?25ldone\n", "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", @@ -22,14 +24,14 @@ "Requirement already satisfied: pyTigerDriver in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (1.0.15)\n", "Requirement already satisfied: validators in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (0.20.0)\n", "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (3.4)\n", - "Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2.1.1)\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (1.26.11)\n", "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2022.9.24)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2.1.1)\n", "Requirement already satisfied: decorator>=3.4.0 in /opt/conda/lib/python3.9/site-packages (from validators->pyTigerGraph==1.2.6) (5.1.1)\n", "Building wheels for collected packages: pyTigerGraph\n", " Building wheel for pyTigerGraph (pyproject.toml) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for pyTigerGraph: filename=pyTigerGraph-1.2.6-py3-none-any.whl size=135918 sha256=db81300282c8d54d176edd70ac08244cd05d243356d526f3d1cc2d88402f19e6\n", - " Stored in directory: /tmp/pip-ephem-wheel-cache-cm1os_8o/wheels/cc/41/7a/6b8eee74c439c99b3cdb01357d4b426b9a18e51e9571b28b18\n", + "\u001b[?25h Created wheel for pyTigerGraph: filename=pyTigerGraph-1.2.6-py3-none-any.whl size=135918 sha256=e55deb6cea85cded360af16caa5886e2275b8e570a4799732fb69abf7b5eb6ad\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-7606alh1/wheels/cc/41/7a/6b8eee74c439c99b3cdb01357d4b426b9a18e51e9571b28b18\n", "Successfully built pyTigerGraph\n", "Installing collected packages: pyTigerGraph\n", "Successfully installed pyTigerGraph-1.2.6\n" @@ -96,7 +98,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9b01a496e3dc4d4bafd3c13ecaa01685", + "model_id": "081ddb3b31d24fa4909e87c31cc8b058", "version_major": 2, "version_minor": 0 }, @@ -138,7 +140,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of Anchors: 1223\n" + "Number of Anchors: 1161\n" ] } ], @@ -254,31 +256,31 @@ "text": [ "HeteroData(\n", " \u001b[1mMovie\u001b[0m={\n", - " x=[1085, 3066],\n", - " y=[1085],\n", - " train_mask=[1085],\n", - " val_mask=[1085],\n", - " test_mask=[1085],\n", - " anchors=[1085, 5],\n", - " is_seed=[1085],\n", - " distance=[1085, 5]\n", + " x=[1001, 3066],\n", + " y=[1001],\n", + " train_mask=[1001],\n", + " val_mask=[1001],\n", + " test_mask=[1001],\n", + " anchors=[1001, 5],\n", + " is_seed=[1001],\n", + " distance=[1001, 5]\n", " },\n", " \u001b[1mActor\u001b[0m={\n", - " x=[260, 3066],\n", - " anchors=[260, 5],\n", - " is_seed=[260],\n", - " distance=[260, 5]\n", + " x=[242, 3066],\n", + " anchors=[242, 5],\n", + " is_seed=[242],\n", + " distance=[242, 5]\n", " },\n", " \u001b[1mDirector\u001b[0m={\n", - " x=[89, 3066],\n", - " anchors=[89, 5],\n", - " is_seed=[89],\n", - " distance=[89, 5]\n", + " x=[81, 3066],\n", + " anchors=[81, 5],\n", + " is_seed=[81],\n", + " distance=[81, 5]\n", " },\n", - " \u001b[1m(Movie, movie_actor, Actor)\u001b[0m={ edge_index=[2, 279] },\n", - " \u001b[1m(Movie, movie_director, Director)\u001b[0m={ edge_index=[2, 93] },\n", - " \u001b[1m(Actor, actor_movie, Movie)\u001b[0m={ edge_index=[2, 1174] },\n", - " \u001b[1m(Director, director_movie, Movie)\u001b[0m={ edge_index=[2, 321] }\n", + " \u001b[1m(Movie, movie_actor, Actor)\u001b[0m={ edge_index=[2, 252] },\n", + " \u001b[1m(Movie, movie_director, Director)\u001b[0m={ edge_index=[2, 84] },\n", + " \u001b[1m(Actor, actor_movie, Movie)\u001b[0m={ edge_index=[2, 1083] },\n", + " \u001b[1m(Director, director_movie, Movie)\u001b[0m={ edge_index=[2, 276] }\n", ")\n" ] } @@ -340,16 +342,7 @@ "execution_count": 15, "id": "0863da44-a56b-41c7-a2fb-bb07ee72cc7a", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.9/site-packages/torch_geometric/nn/to_hetero_transformer.py:295: UserWarning: 'embedding' will be duplicated, but its parameters cannot be reset. To suppress this warning, add a 'reset_parameters()' method to 'embedding'\n", - " warnings.warn(\n" - ] - } - ], + "outputs": [], "source": [ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "\n", @@ -360,7 +353,6 @@ " ):\n", " super().__init__()\n", " self.dropout = dropout\n", - " self.embedding = emb_model\n", " self.layers = torch.nn.ModuleList()\n", " for i in range(num_layers):\n", " in_units = num_features if i == 0 else hidden_dim\n", @@ -372,20 +364,8 @@ " def reset_parameters(self):\n", " for layer in self.layers:\n", " layer.reset_parameters()\n", - " \n", - " def get_embedding(self, x, edge_index, anchors, distances):\n", - " emb = self.embedding(anchors, distances)\n", - " x = x.float()\n", - " x = torch.concat([x, torch.flatten(emb, start_dim=1)], dim=1)\n", - " #x = torch.flatten(emb, start_dim=1)\n", - " for layer in self.layers[:-1]:\n", - " x = layer(x, edge_index)\n", - " x = F.elu(x)\n", - " x = F.dropout(x, p=self.dropout, training=self.training)\n", - " return x\n", "\n", - " def forward(self, x, edge_index, anchors, distances):\n", - " emb = self.embedding(anchors, distances)\n", + " def forward(self, x, edge_index, emb):\n", " x = x.float()\n", " x = torch.concat([x, torch.flatten(emb, start_dim=1)], dim=1)\n", " #x = torch.flatten(emb, start_dim=1)\n", @@ -396,7 +376,7 @@ " x = self.layers[-1](x, edge_index)\n", " return x\n", " \n", - "model = GraphSAGE(\n", + "GNN = GraphSAGE(\n", " num_features=3066+(128*5),\n", " num_layers=hp[\"num_layers\"],\n", " out_dim=3,\n", @@ -410,34 +390,19 @@ " ('Movie', 'movie_actor', 'Actor'), \n", " ('Movie', 'movie_director', 'Director'), \n", " ('Director', 'director_movie', 'Movie')])\n", - "model = to_hetero(model, metadata, aggr='sum').to(device)\n", - "\n", - "optimizer = torch.optim.Adam(\n", - " model.parameters(), lr=hp[\"lr\"], weight_decay=hp[\"l2_penalty\"]\n", - ")" + "hetero_gnn = to_hetero(GNN, metadata, aggr='sum').to(device)" ] }, { "cell_type": "code", "execution_count": 16, - "id": "6f3e3ebe-de3c-486c-9a6e-136f4683d756", + "id": "d5531881-366f-4061-8ec8-db4040a8e8fe", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "GraphModule(\n", - " (embedding): ModuleDict(\n", - " (Actor): BaseNodePiece(\n", - " (embedding): Embedding(1237, 128)\n", - " )\n", - " (Movie): BaseNodePiece(\n", - " (embedding): Embedding(1237, 128)\n", - " )\n", - " (Director): BaseNodePiece(\n", - " (embedding): Embedding(1237, 128)\n", - " )\n", - " )\n", " (layers): ModuleList(\n", " (0): ModuleDict(\n", " (Actor__actor_movie__Movie): SAGEConv(3706, 128)\n", @@ -461,12 +426,94 @@ } ], "source": [ - "model" + "hetero_gnn" ] }, { "cell_type": "code", "execution_count": 17, + "id": "6f3e3ebe-de3c-486c-9a6e-136f4683d756", + "metadata": {}, + "outputs": [], + "source": [ + "class NodePieceGNN(nn.Module):\n", + " def __init__(self, embedding_model, gnn_model):\n", + " super().__init__()\n", + " self.emb_model = embedding_model\n", + " self.gnn_model = gnn_model\n", + " \n", + " def forward(self, x_dict, edge_index_dict, anchors_dict, distances_dict):\n", + " emb_dict = {}\n", + " for key in anchors_dict.keys():\n", + " emb_dict[key] = self.emb_model(anchors_dict[key], distances_dict[key])\n", + " return self.gnn_model(x_dict, edge_index_dict, emb_dict) " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "2f731c85-ff88-4168-971b-8b9acbf8a6c5", + "metadata": {}, + "outputs": [], + "source": [ + "model = NodePieceGNN(emb_model, hetero_gnn)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "a3b4dbaa-1683-4c3d-8fb4-4127a06455b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NodePieceGNN(\n", + " (emb_model): BaseNodePiece(\n", + " (embedding): Embedding(1175, 128)\n", + " )\n", + " (gnn_model): GraphModule(\n", + " (layers): ModuleList(\n", + " (0): ModuleDict(\n", + " (Actor__actor_movie__Movie): SAGEConv(3706, 128)\n", + " (Movie__movie_actor__Actor): SAGEConv(3706, 128)\n", + " (Movie__movie_director__Director): SAGEConv(3706, 128)\n", + " (Director__director_movie__Movie): SAGEConv(3706, 128)\n", + " )\n", + " (1): ModuleDict(\n", + " (Actor__actor_movie__Movie): SAGEConv(128, 3)\n", + " (Movie__movie_actor__Actor): SAGEConv(128, 3)\n", + " (Movie__movie_director__Director): SAGEConv(128, 3)\n", + " (Director__director_movie__Movie): SAGEConv(128, 3)\n", + " )\n", + " )\n", + " )\n", + ")" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "9d90ad46-c582-4a41-99f7-95dd99994a99", + "metadata": {}, + "outputs": [], + "source": [ + "loss = nn.CrossEntropyLoss()\n", + "optimizer = torch.optim.Adam(model.parameters(), lr=5e-3, weight_decay=5e-5)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, "id": "cb1a964d-e5a9-41e8-9d34-ecf0ac091417", "metadata": {}, "outputs": [ @@ -488,7 +535,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 22, "id": "cfbb89e3-32dd-4be0-8d3c-7043b08b8cfd", "metadata": {}, "outputs": [ @@ -496,56 +543,31 @@ "name": "stdout", "output_type": "stream", "text": [ - "Epoch 0, Train Batch 0, Loss 1.1079, Accuracy 0.3333\n", - "Epoch 0, Train Batch 1, Loss 1.1028, Accuracy 0.3420\n", - "Epoch 0, Train Batch 2, Loss 1.0927, Accuracy 0.3527\n", - "Epoch 0, Train Batch 3, Loss 1.0809, Accuracy 0.3650\n", - "Epoch 0, Valid Loss 1.0732, Valid Accuracy 0.3975\n", - "Epoch 1, Train Batch 0, Loss 1.0278, Accuracy 0.4298\n", - "Epoch 1, Train Batch 1, Loss 0.9860, Accuracy 0.4862\n", - "Epoch 1, Train Batch 2, Loss 0.9707, Accuracy 0.4904\n", - "Epoch 1, Train Batch 3, Loss 0.9623, Accuracy 0.5075\n", - "Epoch 1, Valid Loss 1.0524, Valid Accuracy 0.4225\n", - "Epoch 2, Train Batch 0, Loss 0.9170, Accuracy 0.5922\n", - "Epoch 2, Train Batch 1, Loss 0.9019, Accuracy 0.5949\n", - "Epoch 2, Train Batch 2, Loss 0.8805, Accuracy 0.6589\n", - "Epoch 2, Train Batch 3, Loss 0.8704, Accuracy 0.6925\n", - "Epoch 2, Valid Loss 1.0490, Valid Accuracy 0.4600\n", - "Epoch 3, Train Batch 0, Loss 0.7794, Accuracy 0.8636\n", - "Epoch 3, Train Batch 1, Loss 0.8013, Accuracy 0.8009\n", - "Epoch 3, Train Batch 2, Loss 0.7928, Accuracy 0.7966\n", - "Epoch 3, Train Batch 3, Loss 0.7745, Accuracy 0.8025\n", - "Epoch 3, Valid Loss 1.0315, Valid Accuracy 0.4425\n", - "Epoch 4, Train Batch 0, Loss 0.7003, Accuracy 0.8246\n", - "Epoch 4, Train Batch 1, Loss 0.6980, Accuracy 0.8169\n", - "Epoch 4, Train Batch 2, Loss 0.6902, Accuracy 0.8133\n", - "Epoch 4, Train Batch 3, Loss 0.6981, Accuracy 0.7975\n", - "Epoch 4, Valid Loss 1.0246, Valid Accuracy 0.4550\n", - "Epoch 5, Train Batch 0, Loss 0.6619, Accuracy 0.8140\n", - "Epoch 5, Train Batch 1, Loss 0.6315, Accuracy 0.8689\n", - "Epoch 5, Train Batch 2, Loss 0.6174, Accuracy 0.8770\n", - "Epoch 5, Train Batch 3, Loss 0.6160, Accuracy 0.8900\n", - "Epoch 5, Valid Loss 1.0083, Valid Accuracy 0.4750\n", - "Epoch 6, Train Batch 0, Loss 0.5752, Accuracy 0.9099\n", - "Epoch 6, Train Batch 1, Loss 0.5475, Accuracy 0.9420\n", - "Epoch 6, Train Batch 2, Loss 0.5407, Accuracy 0.9579\n", - "Epoch 6, Train Batch 3, Loss 0.5454, Accuracy 0.9500\n", - "Epoch 6, Valid Loss 1.0078, Valid Accuracy 0.5075\n", - "Epoch 7, Train Batch 0, Loss 0.5167, Accuracy 0.9358\n", - "Epoch 7, Train Batch 1, Loss 0.5141, Accuracy 0.9481\n", - "Epoch 7, Train Batch 2, Loss 0.4805, Accuracy 0.9590\n", - "Epoch 7, Train Batch 3, Loss 0.4779, Accuracy 0.9675\n", - "Epoch 7, Valid Loss 1.0063, Valid Accuracy 0.4750\n", - "Epoch 8, Train Batch 0, Loss 0.4572, Accuracy 1.0000\n", - "Epoch 8, Train Batch 1, Loss 0.4276, Accuracy 0.9899\n", - "Epoch 8, Train Batch 2, Loss 0.4177, Accuracy 0.9828\n", - "Epoch 8, Train Batch 3, Loss 0.4186, Accuracy 0.9750\n", - "Epoch 8, Valid Loss 0.9978, Valid Accuracy 0.4775\n", - "Epoch 9, Train Batch 0, Loss 0.3715, Accuracy 0.9789\n", - "Epoch 9, Train Batch 1, Loss 0.3625, Accuracy 0.9781\n", - "Epoch 9, Train Batch 2, Loss 0.3761, Accuracy 0.9762\n", - "Epoch 9, Train Batch 3, Loss 0.3661, Accuracy 0.9825\n", - "Epoch 9, Valid Loss 1.0043, Valid Accuracy 0.4825\n" + "Epoch 0, Train Batch 0, Loss 1.0988, Accuracy 0.3011\n", + "Epoch 0, Train Batch 1, Loss 1.3776, Accuracy 0.3518\n", + "Epoch 0, Train Batch 2, Loss 1.5310, Accuracy 0.3559\n", + "Epoch 0, Train Batch 3, Loss 1.4577, Accuracy 0.3750\n", + "Epoch 0, Valid Loss 1.4446, Valid Accuracy 0.2875\n", + "Epoch 1, Train Batch 0, Loss 0.9156, Accuracy 0.4583\n", + "Epoch 1, Train Batch 1, Loss 0.8088, Accuracy 0.5950\n", + "Epoch 1, Train Batch 2, Loss 0.7708, Accuracy 0.6442\n", + "Epoch 1, Train Batch 3, Loss 0.6965, Accuracy 0.6750\n", + "Epoch 1, Valid Loss 1.0890, Valid Accuracy 0.4550\n", + "Epoch 2, Train Batch 0, Loss 0.2725, Accuracy 0.9615\n", + "Epoch 2, Train Batch 1, Loss 0.2926, Accuracy 0.9333\n", + "Epoch 2, Train Batch 2, Loss 0.3095, Accuracy 0.9258\n", + "Epoch 2, Train Batch 3, Loss 0.2888, Accuracy 0.9275\n", + "Epoch 2, Valid Loss 1.1078, Valid Accuracy 0.4850\n", + "Epoch 3, Train Batch 0, Loss 0.1520, Accuracy 0.9610\n", + "Epoch 3, Train Batch 1, Loss 0.1321, Accuracy 0.9674\n", + "Epoch 3, Train Batch 2, Loss 0.1091, Accuracy 0.9797\n", + "Epoch 3, Train Batch 3, Loss 0.0970, Accuracy 0.9850\n", + "Epoch 3, Valid Loss 1.0602, Valid Accuracy 0.4975\n", + "Epoch 4, Train Batch 0, Loss 0.0523, Accuracy 1.0000\n", + "Epoch 4, Train Batch 1, Loss 0.0437, Accuracy 1.0000\n", + "Epoch 4, Train Batch 2, Loss 0.0393, Accuracy 1.0000\n", + "Epoch 4, Train Batch 3, Loss 0.0402, Accuracy 1.0000\n", + "Epoch 4, Valid Loss 1.1972, Valid Accuracy 0.5125\n" ] } ], @@ -555,7 +577,7 @@ "valid_log = SummaryWriter(log_dir+\"/valid\")\n", "global_steps = 0\n", "logs = {}\n", - "for epoch in range(10):\n", + "for epoch in range(5):\n", " # Train\n", " model.train()\n", " epoch_train_loss = Accumulator()\n", @@ -622,7 +644,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 23, "id": "02cceb89-6cee-460f-ac77-e610d23f5322", "metadata": {}, "outputs": [], @@ -642,7 +664,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 24, "id": "27b64562-d9aa-4ff0-9f43-233bb58b342c", "metadata": {}, "outputs": [ @@ -650,7 +672,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Accuracy: 0.4882\n" + "Accuracy: 0.5178\n" ] } ], @@ -668,7 +690,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 25, "id": "e77eb4ba-bf26-41a0-9e28-0717e377726b", "metadata": {}, "outputs": [], @@ -688,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 26, "id": "4dcdd55d-f9f7-447b-abd0-4917ca050f0c", "metadata": {}, "outputs": [], @@ -702,7 +724,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 27, "id": "4fadc6e0-3aed-42e0-bf99-990c49453189", "metadata": {}, "outputs": [ @@ -742,7 +764,7 @@ ")" ] }, - "execution_count": 23, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -753,7 +775,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 28, "id": "0041c079-96ad-4e60-bd04-f57e776204c9", "metadata": {}, "outputs": [ @@ -764,58 +786,58 @@ "ID: Label\n", "55:0\n", "7:0\n", - "4157:1\n", - "326:0\n", - "1239:1\n", - "3597:2\n", - "1346:1\n", + "1346:0\n", "89:0\n", "464:0\n", - "2263:1\n", "1863:0\n", - "111:0\n", - "3718:1\n", - "3242:2\n", - "553:1\n", - "387:0\n", - "1074:0\n", - "9:0\n", - "1940:2\n", - "1901:0\n", - "1206:0\n", - "2382:2\n", - "1858:1\n", - "1543:2\n", + "1543:0\n", "178:0\n", "211:2\n", - "963:2\n", + "963:0\n", "3983:2\n", "633:0\n", - "69:0\n", - "3150:1\n", - "2429:0\n", - "70:0\n", - "588:1\n", - "520:2\n", - "1116:0\n", - "1452:0\n", - "712:0\n", - "15:0\n", - "3124:0\n", - "2789:1\n", + "3150:2\n", + "1206:0\n", + "2525:2\n", + "3597:0\n", + "1153:2\n", "3137:2\n", - "1433:1\n", - "2077:2\n", - "138:1\n", + "326:0\n", "22:0\n", "40:0\n", + "712:0\n", + "4157:2\n", + "1530:0\n", + "2263:2\n", + "553:0\n", + "387:0\n", + "2289:2\n", + "1074:0\n", + "111:0\n", + "3718:2\n", + "2642:2\n", + "15:0\n", + "3124:0\n", + "2789:2\n", + "2429:0\n", + "588:1\n", + "520:2\n", + "76:0\n", + "9:0\n", + "1940:2\n", + "1433:0\n", + "2077:0\n", + "138:2\n", + "1239:2\n", + "714:2\n", "3454:2\n", "3174:0\n", - "1673:0\n", + "856:2\n", + "1077:2\n", "2897:2\n", "109:0\n", "768:1\n", - "2184:1\n" + "2184:2\n" ] } ], @@ -831,7 +853,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 29, "id": "a9841d7c-dcc0-4223-a93a-328b91c2669b", "metadata": {}, "outputs": [], @@ -841,7 +863,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 30, "id": "0ccde7b0-6ffd-4cf8-8a54-145790ce4404", "metadata": {}, "outputs": [], @@ -851,7 +873,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 31, "id": "36c1760c-a591-494f-bb72-bf0ca2464f2a", "metadata": {}, "outputs": [], @@ -861,17 +883,17 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 32, "id": "dd7dd987-b7fd-4642-a3f8-dd2a6efe5411", "metadata": {}, "outputs": [], "source": [ - "embeddings = model.embedding[\"Movie\"](batch.anchors_dict[\"Movie\"], batch.distance_dict[\"Movie\"]).flatten(start_dim=1)[batch[\"Movie\"].is_seed]" + "embeddings = model.emb_model(batch.anchors_dict[\"Movie\"], batch.distance_dict[\"Movie\"]).flatten(start_dim=1)[batch[\"Movie\"].is_seed]" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 33, "id": "af84ffc7-5014-4159-a4fc-a7dcc45e42b4", "metadata": {}, "outputs": [ @@ -881,7 +903,7 @@ "torch.Size([1000, 640])" ] }, - "execution_count": 29, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -892,7 +914,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 34, "id": "004ff3ab-e2b0-41b7-8e39-b2b401ec429e", "metadata": {}, "outputs": [], @@ -904,13 +926,13 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 35, "id": "5ecd3577-b5f4-4e4e-baa6-cc5e885f434f", "metadata": {}, "outputs": [ { "data": { - "image/png": "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/vnPf4oePXqEjxX19SwoKAiX/dvf/haxb+h0uvA2U7/dbdiwIepyTmR7a07D7aF+25HJZCIpKSmivtdff70IhUJRp508eXLM+QcCAdGhQwcBQPz9739vcb0++eST8LLfe++9Y16vek3tb2+99VbEtq3VasPHsvqfP//5z1Hnu3Dhwoh9Q6lUNnv82rRpk0hKSoo49x79OUc7R0Xbfi+++GKRkZERPm5pNBqRkZER/vnoo4+EEJHH84bbY73jOX8tWbIkorxarY44fwIQl112mQgGgxHTDR06NGL9G9Y3IyND3HXXXY3+N7G26Y8//jji8zcajRF/5+TkiB07djSarmHdf/rpp3C9jUajUCgU4XHZ2dmiqKgo6rKP1WkVTlevXh3+EL///vuIss2F0+nTp4cPoi+++KJwOp1CCCFKSkrEDTfcEJ72pZdeajTtCy+8EB5/xx13iIqKCiFEXeCdNWuWkCQpvING28m++OKL8I78wAMPiIMHD4pQKCRCoZDYtWuXuOyyy8LB4tChQzHXK1Y43b59e7jMX/7yl/DwpsLpmjVrwgf6W2+9VezcuVMEAgEhhBCHDh0Sf/jDH8Lhae3atRHT+v1+MXr06PAO+o9//EOUl5cLIeoOygUFBeKVV14RDz74YMR0NTU1onPnzgKAmDRpkvj555+Fx+MJf5Zz5swJ7zTPP/981HVtyskKpxaLRUyePFls375dCCGEy+USL774YjikPvzww8JsNovLL79cHDx4UAghhN1uFw899FB4HosWLYpZv/rw8/LLLwu32y2EEOLw4cPi0ksvDU//1VdfNZr+RLajwsJCYTKZBADRv39/sWbNGiGEEMFgUHz//feiY8eOESeZo61fvz58EJswYYLYuXOnEEIIn88n5s6dKywWS3j64w2nSUlJQqVSiTlz5gir1SqEEKKyslLcdNNN4Xr9+OOPjaafPXt2ePw999wjKisrhRBCWK1W8dRTT4XDarR94b333guf5F5//XVht9uFEHVfSMvKysS8efPE9OnTGy2zKXPnzg3X55tvvjmmaRs6fPhw+DPt06ePWL58eXjczz//LHr27CkAiOTk5KgnlFjHw0AgIEaMGBHeFt9//33h9XqFEELs379fnHfeeeFpv/vuu0bzrQ+nBoNBZGZminnz5gmfzyeEqNvO6o+tzz33XPgEOHv2bFFSUhJe/rp168SkSZMEANGxY8fw517vRLe35tRvc/VfLJ944onwNldeXi7uuOOO8GfwwgsvRExbfx6SJEns378/6vznz58fPn7Wr3dL3HrrreGgXF+f49HU/vbFF1+IW265RSxZsiS8rwghRHFxsXjsscfCAS3aMah79+4CgJgyZYrYunVreLjb7RZbt24Vs2bNEm+++WbENJMnTxYAxODBg8WqVavCYd/r9Yo9e/aIf/7zn+KZZ55ptKymzufNXXhpKpwe7/lr9erV4qqrrhLffvutKC0tDa9HVVWVeOGFF8LH16O3FyEiw2FTmgqn69evD/9vRo8eLTZv3iyEqDuGz58/X2RlZQkAolu3bo32p4bLT0pKEhdccEF4n/J6veLjjz8WRqNRABAzZsxoso4tdVqFUyHqvjkBEAMHDoz4RttUOF2zZk143CuvvBJ1WfXhNTU1NRwYhKjb6ZKTk5v8pz3wwAMxvwF6vd7wN+g33ngj5rpecMEFAoD44x//GDG8JeG0/moTAPHFF1+Ehze1Aw8bNkwAEI888kjMOt11111Rv0G+/vrr4YPzt99+G3P6o917773hYOr3+6OWmTdvXvj/EKtMLPXhT6lUNvp2evRP/Tfseg0/5759+4ZDc0MzZswIlznrrLMaXVERQoSviEa7YlZfv1jbQjAYDH+b79OnT8S4E92ObrvtNgFApKSkiLKyskbTbd26NeKqwdGmTZsmAIgePXoIl8vVaPyCBQvC0x5vOG1qGx8yZIgAIG666aaI4U6nM3xSiHWVsn7Z0faF+s/llltuiTrt8Xj44YfDyzty5Mhxz+f3v/99+GQSLeA0/MJx++23Nxof63j40UcfhcctWLCg0XR+vz8cXvPz8xuNrw+ncrk85lXPiooKodPphCRJYvHixVHL+P3+8P/1ueeeixh3ottbcxpuc7GOgddcc004/Dc8JwghxKBBgwQA8cADD0Sdtj7gX3LJJcdUrzFjxggAIi8v75imO1pT+1tznn32WQE0vjJcVlYW/syKi4tbPL/6OzsrV648pnq0Vjg93vNXcz799NNwODzayQinU6dOFQBE9+7dw18AG9qwYUP4C92zzz4bc/kTJ05sdHVXCCFefPFFAdRdST/Wc280p1043blzZ/gK1gcffBAe3lQ4/dOf/hT+hh7tnyKEEDt27AhPP3/+/PDwr776Kjx87969Uaetra0N32Y4emf58ssvBVB3KT9amKn32WefCaDudlVDscKp1+sVO3bsEHfeeWf41ldeXl7ERhVrB960aVM4xNXW1sas07p16wQAodfrw1dVhRBi1KhRAoA499xzY057tFAoFA75TR0QQqFQ+IS7evXqFs9fiMjw19zP0SGo4ef8+uuvR53/+++/Hy4T7QqeEEI8+eSTAoAYNmxYzPrl5OTE3BYWLlwYXsaWLVvCw09kO2r42T/00EMxp73yyiujHkBramrC29hrr70Wc/ozzjjjhMJpTk5OzP3zscceEwDE8OHDI4bXf5kBIA4cOBB1WpvNFr5tefS+8OCDDwoA4oILLoi5XseqPvACaBRqWqrh/+zoKzgN3X///eEvHUeLdTys/4J/xhlnxJzvd999F3U7FOK3cNrU/v/888/H3A8a+uc//ykAiKlTp4aHnYztrTn125xWq415hXLPnj1RzwlCCPHKK6+E98f6q8b1ioqKwueoH3744Zjq1bt3bwFAjBgx4thW6CgnEk7rz4U6nS7iuO9yucL/l/Xr17d4fvVX9D7//PNjqkdrhdPjOX+1hMvlihneTzSc1tTUhB+DiHWBTQghfve73wmg7ip1rOVHu6snRN0d0/oy0R4NOFanxQtRDfXq1QvXX389gLoHzlvy8sm6desAABMnToRMFv0j6927d7jJifryDX/PyclB9+7do05rNpsxZMiQqOOWL18OoO5B+qysLGRmZkb9ufnmmwEAhw4dirke119/ffihZrVajT59+uDf//43QqEQunTpgvnz50OhaL7p2/o6hUIh9OzZM2adpk6dCgBwOp2oqqoCUPfySP3D6+eff36zy6q3Y8cOVFdXA6h7ASbWMrOyssIvOzT1WTRl/PjxEHVf3GL+NPWSWLSmSwBENPA8bNiwJss0bJvwaPUP9Uczbty48P+w4XZ4IttRQUFB+LOfNGlSzHrFGrdhw4bwy0jHM31LDRs2LOb+mZ2dDQDh9WhYNwDo1KkTunTpEnVao9EYc/8855xzIEkS5s+fj2nTpmHu3LlNdvbREqKFL780peH/7Mwzz4xZ7qyzzgIAVFVVoaCgoEXzrt+umprvxIkTIZfLI8ofbfTo0TGnr99et23bFnNbzczMxOOPPw4gcnttq+0NAIYOHQqTyRR1XF5eXvhFtqM/g6uuugomkwllZWX4+uuv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SSiVSpGVlSWmT5/eon/Gu+++K0aOHCn0er0wGo1i2LBh4uWXXxahUKhFJ9ji4mLx8MMPi6FDhwqLxSLkcrkwm81i4MCB4o477hCLFy9u1DNDa4ZTIeoa9509e7YYM2aMSE5OFnK5XBgMBtGnTx9x4403ivnz58dsSDwYDIr3339fTJs2TaSnpwulUinS09PFkCFDxAMPPBDu/vNofr9fvPvuu+K8884TWVlZQqlUCo1GI7p06SIuvvhi8eabb4a/yR6LY2mE/+idtC3D6aOPPiq8Xq946qmnRH5+vtDpdMJsNovJkye3qMeS49mO6m3fvl1cccUVIj09XajVatG5c2dxxx13iNLS0hat38qVK8X5558vkpOThUajET169BAPPvigsNlsTa57a4ZTIequbLz++uti+PDh4f1zxIgR4Q4V6q8GNuzeVwghtmzZIv7xj3+Ic845R+Tl5Qmj0SiUSqXIzs4WF1xwwTE3HB5NIBAQc+fOFVdffbXo3r27MJlMQqlUitTUVDFmzBjx0EMPha8MRlNSUiL+/Oc/i969e4f7Qe/du7e49957mwxCzR0P3W63mDNnjhg5cmS43/qcnBwxY8YMsXHjxpjzPZZwKkRdePvTn/4k+vfvL0wmUzgEDhs2TNx///1i5cqVMa8kHe/21pyG21woFBIvvfSSGDp0qDAajcJgMIgzzjhDvPvuuy2eX32PUcfa1W1zamtrxfPPPy/OOecckZOTI7RarVCr1aJDhw5i2rRp4oUXXoh6rGyuEf5vv/1WTJgwIRxMu3XrJu68805x5MiRmMdCh8MhPvnkE3HbbbeJIUOGiKysLKFQKITBYBADBw4U999/f6Me0Xw+n5g/f77405/+JEaOHCk6duwoVCqV0Ol0ok+fPuL2228Xe/bsiVrH1gynQhzf+WvlypXi3HPPFRaLRahUKtGpUydx/fXXh/ffpurs8XjErFmzwsf8+rIN16El2/TevXvFrbfeKrp16ybUanX483/sscdidigRj3Aq/W+GREQUhRACnTp1QlFREd59913MmDEj3lWiU0hpaSlycnIQCATwww8/hJ+XJTqdndYvRBERNee9995DUVERFApFuKkeopPl5ZdfRiAQQPfu3Y/7RSiiUw3DKRGd9q688kp89tlnES0RlJWV4emnnw536Tpz5szj6q2JKJZ169aF3/a/5557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QmE4JaJTnl6lQ6/0PHRK6ghvwAeNQgWtMlaT/0REFE8Mp0R02tAptdAxlBIRJTQ+c0pERERECYPhlIiIiIgSBsMpERERESUMhlMiIiIiShgMp0RERESUMBhOiYiIiChhMJwSERERUcJgOCUiIiKihMFwSkREREQJg+GUiIiIiBIGwykRERERJQyGUyIiIiJKGAynRERERJQwGE6JiIiIKGEwnBIRERFRwmA4JSIiIqKEwXBKRERERAmD4ZSIiIiIEgbDKRERERElDIZTIiIiIkoYDKdERERElDAYTomIiIgoYTCcEhEREVHCYDglIiIiooTBcEpERERECYPhlIiIiIgSBsMpERERESUMhlMiIiIiShgMp0RERESUMBhOiYiIiChhMJwSERERUcJgOCUiIiKihMFwSkREREQJg+GUiIiIiBIGwykRERERJQyGUyIiIiJKGAynRERERJQwGE6JiIiIKGEwnBIRERFRwmA4JSIiIqKEwXBKRERERAmD4ZSIiIiIEgbDKRERERElDIZTIiIiIkoYDKdERERElDAYTomIiIgoYTCcEhEREVHCYDglIiIiooTBcEpERERECYPhlIiIiIgSBsMpERERESUMhlMiIiIiShgMp0RERESUMBhOiYiIiChhMJwSERERUcJgOCUiIiKihMFwSkREREQJg+GUiIiIiBIGwykRERERJQyGUyIiIiJKGAynRERERJQwGE6JiIiIKGEwnBIRERFRwmA4JSIiIqKEwXBKRERERAmD4ZSIiIiIEgbDKRERERElDIZTIiIiIkoYDKdERERElDAYTomIiIgoYcQ9nM6aNQuSJEX8ZGZmxrtaRERERBQHinhXAAD69u2LxYsXh/+Wy+VxrA0RERERxUtChFOFQsGrpUREREQU/9v6ALB3715kZ2ejS5cuuOKKK3DgwIF4V4mIiIiI4iDuV05HjBiBd999Fz169EBZWRmefPJJjBo1Ctu3b0dKSkqj8l6vF16vN/y3zWZry+oSERERUSuShBAi3pVoyOl0olu3brj//vtxzz33NBo/a9YsPPbYY42GW61WmEymtqgiERERER0Dm80Gs9ncoryWELf1G9Lr9ejXrx/27t0bdfyDDz4Iq9Ua/iksLGzjGhIRERFRa4n7bf2jeb1e7Ny5E2PHjo06Xq1WQ61Wt3GtiIiIiKgtxP3K6b333otl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XFzcoS0UCsnpdKqmpiZHVZnTd7/7XU2ZMkWhUEgrV67UTTfdpC1btujBBx/MdWmmUVdXp0wm0+mcKi4u5nzahxkzZujRRx/VmDFjtHv3bv34xz/WMccco/Xr16uwsDDX5Q0Yn59nXZ2D27Zty0VJA8YZZ5yhCy64QCNGjNCWLVv0ox/9SCeffLJWr149KJ+A1BXDMHTdddfpuOOOU2VlpaTBe84dsjOnXd0A8M9fb7/99n7v75ZbbtGsWbM0efJkXX/99brjjjt0zz33HMSfIDf6etwsFkunNsMwumw/1BzIWF577bWaPXu2Jk6cqG9/+9t64IEH9NBDD6m+vj7HP4X5/PO5M1jOp94444wzdP7552vChAn60pe+pBdeeEGS9Mgjj+S4soGJc/DAXXjhhZo7d64qKys1b948vfTSS/roo4/az0V8+unsunXr9Pjjj3fqG2zn3CE7c7pw4UJddNFFe92moqKix/ufOXOmotGodu/e3ekvmoGsL8etpKREb731Voe2xsZGpVKpQ2rMutObsfz8LtZNmzYxs/WZcDgsm83WaZa0trZ2UJxPfcnn82nChAn6+OOPc13KgPL5Cgc1NTUqLS1tb+ccPHClpaUaMWIE5+Bnrr76aj333HNatmyZhg0b1t4+WM+5QzachsNhhcPhg7b/NWvWyO12d7uE0kDVl+M2a9YsLVq0SNXV1e3/qV555RW5XC5NnTq1T45hZr0ZyzVr1khShzejwc7pdGrq1KlavHixzj333Pb2xYsX6+yzz85hZQNPIpHQhg0bdPzxx+e6lAFl5MiRKikp0eLFi3XUUUdJ+vRa6KVLl+ruu+/OcXUDS319vbZv3z7o3+MMw9DVV1+tZ555Rq+99ppGjhzZoX+wnnOHbDg9EFVVVWpoaFBVVZUymYzWrl0rSRo1apT8fr+ef/551dTUaNasWfJ4PFqyZIluvvlmXXbZZYP6Wpl9jducOXN05JFHav78+brnnnvU0NCgG264QQsWLFAgEMht8SayfPlyrVixQieddJKCwaBWrVqla6+9VmeddZbKy8tzXZ6pXHfddZo/f76mTZumWbNm6X/+539UVVWlK664ItelmdoNN9ygefPmqby8XLW1tfrxj3+saDQ66JfD60pzc7M2bdrU/v2WLVu0du1aFRQUqLy8XN/73vf0k5/8RKNHj9bo0aP1k5/8RF6vV1/72tdyWHXu7W3cCgoKdNttt+n8889XaWmptm7dqh/+8IcKh8Md/tAcjK666io99thjevbZZ5WXl9f+yVAwGJTH45HFYhmc51wulwowi0suucSQ1OlryZIlhmEYxksvvWRMnjzZ8Pv9htfrNSorK41f/epXRiqVym3hObavcTMMw9i2bZsxd+5cw+PxGAUFBcbChQuNeDyeu6JNaPXq1caMGTOMYDBouN1uY+zYscatt95qtLS05Lo0U7r//vuNESNGGE6n05gyZUr7kivo3oUXXmiUlpYaDofDKCsrM8477zxj/fr1uS7LlJYsWdLl+9oll1xiGManS/vceuutRklJieFyuYwTTjjBeO+993JbtAnsbdxaW1uNOXPmGEVFRYbD4TDKy8uNSy65xKiqqsp12TnX1ZhJMh5++OH2bQbjOWcxDMPoryAMAAAA7M0he7c+AAAABh7CKQAAAEyDcAoAAADTIJwCAADANAinAAAAMA3CKQAAAEyDcAoAAADTIJwCAADANAinAAAAMA3CKQAAAEyDcAoAAADTIJwCAADANP5/4RTpSXj97T0AAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp4AAAKvCAYAAADDUM+bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAADsTUlEQVR4nOzdd3RU1cIF8D29t/SEJCT03pGuNFFAAXsFxe6zPZ9Pxd7Fiu17T/FZsWBBUGwoSBPpvfeWQhJSZibT2/n+iBkzZCaEkkmI+7fWrAW3nrm5Zc+5954jEUIIEBERERE1MGljF4CIiIiI/h4YPImIiIgoLhg8iYiIiCguGDyJiIiIKC4YPImIiIgoLhg8iYiIiCguGDyJiIiIKC4YPImIiIgoLhg8iYiIiCguGDzj5Prrr4dEIsH111/f2EUJa4pl+jsbOnQoJBIJnnzyycYuSlSLFy+GRCKBRCI5qfk/+ugjSCQS5OTk1Br35JNPQiKRYOjQoadWSKq36r/l4sWLG7soDaKu/e14mvu5sTkcb8fbfw8fPozJkycjOzsbSqUSEokEZrMZAHDw4MHw/AcPHoxbmU/VqezTTckZHTyrDx6JRAKdTofCwsKY09bc0ZrTibbm96r5kclkSEhIwIABA/D000+jtLS0sYva6KqDXX0+Z/IJmc4swWAQX331FSZNmoR27drBbDZDqVQiJSUFgwcPxkMPPYStW7c2djGpCbLb7Xjrrbdw4YUXomXLltDpdNBoNMjMzMSYMWMwbdo0FBUVNXYx485ms2HQoEH46KOPkJeXB61Wi9TUVKSmpjZ20aI6ePAgnnzyySZb6XC6yRu7AKeLy+XCU089henTpzd2URqN0WiERqMBAPh8PlRUVGDlypVYuXIl/vOf/+DHH39Enz59wtOnp6ejffv2SE9Pb6wiNwqFQoGEhIQ6pzneeDq9kpKS0L59e2RnZzd2UeJq5cqVuO6667B79+7wMIVCAYPBgLKyMvzxxx/4448/8MILL+Diiy/GzJkzoVQqG7HE1FS8//77uP/++1FRUREeptFooFKpUFBQgIKCAvz888945JFH8Oijj+KRRx5pxNKefu3btwcAaLXaWuNmzpyJ/Px8WCwWLF++HB06dIgYr1AowvMrFIqGL+xxHDx4EE899RQA1Bk+TSYT2rdvjxYtWsSpZA3jjK7xPNYHH3wQcQL/u3njjTdQVFSEoqIilJeXo7y8HM8++ywUCgVKSkpw8cUXw+PxhKefOnUqdu7cialTpzZiqeNv4MCB4e0U6zN79uzGLubfyp133omdO3dixowZjV2UuPn+++8xdOhQ7N69G4mJiZg6dSp2794Nn8+HsrIy+Hw+rFmzBlOmTIHRaMTs2bPhcrkau9jUBDzyyCO46aabUFFRgY4dO+Ljjz9GcXExXC4XrFYrXC4XfvnlF1x77bXw+/34+uuvG7vIp93OnTuxc+dOnHXWWbXGbdmyBQAwfPjwWqETAFq0aBGe/0wKcRdddBF27tyJ3377rbGLckqaRfDMyspCt27dEAgE8PDDDzd2cZoMi8WCRx55BA8++CAAIC8vD999910jl4qI9uzZg2uvvRZerxedOnXCxo0bMWXKFLRt2zY8jUwmQ58+fTB16lQcOHAA48ePb8QSU1Px5Zdf4vnnnwcAXHbZZdiwYQMmTZqElJSU8DQajQajRo3CJ598go0bN6Jz586NVdxGUf0DTa/XN3JJKJpmETylUmm41u6bb77B6tWrT2o5wWAQH3zwAYYPH46kpCSoVCq0aNECl112Wb2eC/3ss88waNAgGAwGmEwm9OvXD++++y6EEPVa/759+3DXXXehY8eO0Ov10Gq16NixI/75z3/i8OHDJ/WdAGDixInhf69Zsyb87/o8QF9UVIQpU6age/fuMJlMUKvVaNWqFW666SZs3769zvWGQiF89dVXmDBhAlq0aAGVSoXk5GT07t0bU6ZMifncmsfjwZtvvolzzjkHSUlJUCqVSEtLw4QJEzBv3rwT+/KnybEPox86dAg333wzsrOzoVar0bp1azz66KNwOp3hebZu3Yprr70WWVlZUKvVaNu2LZ599ln4/f7jrs/n8+GFF15At27doNPpYLFYcO655+Lnn38+7rynsh/t3LkT11xzDdLS0sJ/67vuugvFxcXH30iounU8YcIEJCUlQaPRoH379njkkUfgcDjqnK+ulx2O3U9nzZqFoUOHIiEhAVqtFj169MAbb7yBUCgUc/lCCHz44YcYMGBA1OOzrmMhEAjg3XffxdChQ5GUlASFQoHExES0b98eV1xxBT744IN6bZuaHn30UdjtdqjVasyZMweZmZl1Tp+QkIBvv/0WJpOp1riioiLcf//96Ny5M/R6PXQ6HTp37owHHnig3n+3aDweD15//XUMHDgQFosFarUaLVu2xKRJk7Bx48aY8+Xk5EAikeCjjz6Cw+HA448/jq5du8JgMER9mWPDhg244YYb0Lp1a2i1Wuj1enTv3h2PPvrocZ9NP9n97UQIIfDOO+/grLPOgslkgtFoxODBg/HZZ5/VmraiogJarRYSiQRfffVVnct97LHHIJFI0KpVq3pfI3w+H+6//34AQKdOnTBjxgyoVKo65+nSpQs++eSTei0fANxuN+bOnYubb74ZPXr0QHJyMlQqFTIyMjBhwoTjnoN27tyJW265Be3atYNWq4VGo0FWVhb69++Phx9+GDt37qw1T35+Pu6991507twZOp0uvL7evXvj3nvvjbhuVYv2zkb1c/wfffQRAODjjz+OeHa/enh9Xi460euX3+/H/Pnzcffdd6NPnz5IT08PP6t93nnnYebMmVH/zjk5ORg2bFit71X9qXlOqs/LRfv27cPtt9+Otm3bQqPRwGg0olevXnj66adht9ujznPsi6N79+7FDTfcgKysLKhUKmRmZuLmm29GQUFBzPWeEHEGe+KJJwQA0bJlSyGEEOecc44AIIYNG1Zr2gMHDggAAoBYtGhRrfFWq1UMHTo0PI1MJhNms1lIJJLwsH//+99RyxEKhcTkyZPD00kkEmGxWIRUKhUAxJVXXimuu+46AUBcd911UZfx7rvvCoVCEV6GSqUSGo0m/H+j0Sh+/fXXOr/Xhx9+GHXZTqczPM3NN98cHn68Mn3//fdCr9eH51UoFEKn04X/r1Qqxccffxx13qNHj4qzzz47PC0AYTKZIr7j+PHja823e/du0bZt24htaTKZIpZz++23R13n8VTvH+ecc84Jz1tzO3/zzTfCbDaH/y4ymSw8bsiQIcLn84kffvhBaLXa8PeuuR9dccUVdZbvoYceEkOGDBEAhFwuD6+r+vPEE0/ELOfJ7kdCCPHzzz8LlUoVnlav1wu1Wi0AiPT0dPHBBx+Ex0Xz/vvvh/f56u+tVCoFANGhQwcxbdq0iOO1pupjOdrfpuZ+escddwgAQiqV1toukyZNilquQCAgrrjiipjH51VXXRXzWAgEAuLcc8+ttR/X3E4nehotKioKr/vGG288oXmPtXjx4ojtoNVqI45Ri8Uifv/996jz1nU+zM/PF126dIk49mseh1KpVLz55ptRl9uyZUsBQLzyyiuiXbt24XNFdTkPHDgQnvbxxx+PODa0Wm14n6ne79avXx91Paeyvx1Pzf2het+RSqXCYrFElHfy5MkiFApFnXfEiBExlx8IBESLFi0EAPHcc8/Vu1xfffVVeN2ffPLJCX+vanUdbx9++GHEvq3RaMLnsurPfffdF3W5v/76a8SxoVAojnv+2rhxo7BYLBHX3mO3c7RrVLT996KLLhKpqanh85ZarRapqanhzxdffCGEiDyf19wfq53M9WvRokUR06tUqojrJwBx2WWXiWAwGDFfnz59Ir5/zfKmpqaKu+++u9bfJtY+/eWXX0Zsf4PBEPH/rKwssX379lrz1Sz7woULw+U2GAxCLpeHx2VkZIj8/Pyo6z4RzSp4rly5MryBfv7554hpjxc8L7nkkvAJ8s033xROp1MIIcSRI0fEDTfcEJ737bffrjXvG2+8ER5/5513iqNHjwohqsLsk08+KSQSSfjgi3YAzZkzJ3yQTpkyRRw8eFCEQiERCoXEzp07xWWXXRYODYcOHYr5vWIFz23btoWnefDBB8PD6wqeq1atCp/Eb731VrFjxw4RCASEEEIcOnRI/OMf/wgHozVr1kTM6/f7xaBBg8IH34svvihKSkqEEFUn3AMHDojp06eLhx56KGK+iooKkZOTIwCI4cOHi6VLlwqPxxPeltOmTQsfEK+//nrU71qX0xU8zWazGDFihNi2bZsQQgiXyyXefPPNcAB99NFHhclkEldccYU4ePCgEEKIyspK8cgjj4SXMX/+/Jjlqw4277zzjnC73UIIIQ4fPiwuvfTS8PzfffddrflPZT/Ky8sTRqNRABDdunUTq1atEkIIEQwGxc8//ywyMzMjLiDHWrduXfgENXToULFjxw4hhBA+n0/MnDlTmM3m8PwnGzwtFotQKpVi2rRpwmazCSGEKC0tFTfddFO4XL/99lut+adOnRoe/69//UuUlpYKIYSw2Wzi+eefDwfRaMfCJ598Er6Avffee6KyslIIUfVjs7i4WMyePVtccskltdZZl5kzZ4bL88MPP5zQvDUdPnw4vE07deokli1bFh63dOlS0b59ewFAJCQkRL1YxDofBgIB0a9fv/C++Omnnwqv1yuEEGLfvn3iggsuCM/7008/1VpudfDU6/UiLS1NzJ49W/h8PiFE1X5WfW597bXXwhe3qVOniiNHjoTXv3bt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JwwGg+jbt6945513RCgUqtfFs7CwUDz66KOiT58+wmw2C5lMJkwmk+jRo4e48847xYIFC2r1GNCQwVOIqoZpp06dKgYPHiwSEhKETCYTer1edOrUSdx4441i7ty5MRvBDgaD4tNPPxWjR48WKSkpQqFQiJSUFNG7d28xZcqUcJeTx/L7/WLGjBniggsuEOnp6UKhUAi1Wi1yc3PFRRddJD744IPwL9ATcSINyB97AMYzeD7xxBPC6/WK559/XnTp0kVotVphMpnEiBEj6tWTxsnsR9W2bdsmrrzySpGSkiJUKpXIyckRd955pygqKqrX91u+fLm48MILRUJCglCr1aJdu3bioYceEna7vc7v3pDBU4iqGon33ntPnHXWWeHjs1+/fuHOAKpr8Wp2KSuEEJs3bxYvvviiGDNmjGjbtq0wGAxCoVCIjIwMMW7cuBNu9DqaQCAgZs6cKa655hrRpk0bYTQahUKhEElJSWLw4MHikUceCdfoRXPkyBFx3333iY4dO4b71e7YsaP497//XWfIOd750O12i2nTpon+/fuH+0HPysoSEydOFBs2bIi53BMJnkJUBbN7771XdOvWTRiNxnDA69u3r3jggQfE8uXLY9YAnez+djw197lQKCTefvtt0adPH2EwGIRerxcDBgwQM2bMqPfyqnsyOtHuVY/HarWK119/XYwZM0ZkZWUJjUYjVCqVaNGihRg9erR44403op4rj9eA/I8//iiGDh0aDp2tW7cWd911lygoKIh5LnQ4HOKrr74St99+u+jdu7dIT08Xcrlc6PV60aNHD/HAAw/U6qnL5/OJuXPninvvvVf0799fZGZmCqVSKbRarejUqZO44447xO7du6OWsSGDpxAnd/1avny5GDt2rDCbzUKpVIrs7GwxefLk8PFbV5k9Ho948sknw+f86mlrfof67NN79uwRt956q2jdunW4v/gePXqIp556KmZnCPEOnpI/F0ZE9LckhEB2djby8/MxY8YMTJw4sbGLRM1IUVERsrKyEAgE8Msvv4SfTyX6u2rWLxcRER3PJ598gvz8fMjl8nBzNUSnyzvvvINAIIA2bdqc9EtFRM0JgycRNXtXXXUVZs2aFfHGfnFxMV544YVwN6KTJk06qV6EiGJZu3Zt+K34f/3rX82ugwaik8Fb7UTU7JnN5nBTRFqtFgqFIvx/ABgyZAh++OGHmP1yE52InJwceL3ecDNXPXv2xKpVqxq17USipoLBk4iavRkzZuDnn3/Ghg0bUFJSAofDAbPZjB49euDKK6/ExIkTGQrotKmu2UxLS8P555+PF154IWq/2ER/RwyeRERERBQXfMaTiIiIiOJC3tgFqEsoFEJhYSEMBgMfyiYiIiJqgoQQqKysREZGRkTf89E06eBZWFiIrKysxi4GERERER1HXl4eMjMz65ymSQdPg8EAoOqL8G1TIiIioqbHbrcjKysrnNvq0qSDZ/XtdaPRyOBJRERE1ITV57FIvlxERERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxIW/sAjQVnoAHFS4btpbsgtvvRufUDkjWJsCoNjR20YiIiIiaBQZPAC6vEyvy1uHddV9AQISH90rvglv7XguLxtSIpSMiIiJqHnirHUCpswzT182MCJ0AsP7IVqw4vBZCiBhzEhEREVF9/e2Dp9Npw9IDK2KO/373b7B67HEsEREREVHz9LcPntJQAGXeypjj7V4HQiIUxxIRERERNU9/++Dp8bnR05Ibc3zHxFZQy1VxLBERERFR88TgKZOhjakFkrQJtcZJJVJc1XUcdEptI5SMiIiIqHn52wdPmUwNIZHgkV7Xon9Gd0glVZukpTkTTwz+B5KVlkYuIREREVHzIBFN+JVtu90Ok8kEm80Go9HYYOspspfCbi2AUSJHUCpBSCKFSqWDWqGD0Vi7JpSIiIiIqpxIXmvQGs9AIIBHH30Uubm50Gg0aNWqFZ5++mmEQk3rZZ00YxKSEnMRMCRC6BKgMqZApU1g6CQiIiI6jRq0AfkXX3wR77zzDj7++GN07twZa9euxeTJk2EymXDPPfc05KpPWILOiAQ0XK0qERER0d9dgwbPFStWYPz48Rg7diwAICcnBzNnzsTatWsbcrVERERE1AQ16K32wYMH47fffsPu3bsBAJs2bcKyZcswZsyYqNN7vV7Y7faIDxERERE1Dw1a4/nggw/CZrOhQ4cOkMlkCAaDeO6553DVVVdFnX7q1Kl46qmnGrJIRERERNRIGrTG88svv8Snn36Kzz//HOvXr8fHH3+MV155BR9//HHU6R966CHYbLbwJy8vryGLR0RERERx1KDNKWVlZWHKlCm44447wsOeffZZfPrpp9i5c+dx549Xc0pEREREdHKaTHNKLpcLUmnkKmQyWZNrTomIiIiIGl6DPuN54YUX4rnnnkN2djY6d+6MDRs2YNq0abjhhhsacrVERERE1AQ16K32yspKPPbYY5gzZw5KSkqQkZGBq666Co8//jiUSuVx5+etdiIiIqKm7UTyGrvMJCIiIqKT1mSe8SQiIiIiqsbgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERx0eDBs6CgANdeey0SExOh1WrRo0cPrFu3rqFXS0RERERNjLwhF15RUYFBgwZh2LBh+Pnnn5GSkoJ9+/bBbDY35GqJiIiIqAlq0OD54osvIisrCx9++GF4WE5OTkOukoiIiIiaqAa91T537lz06dMHl112GVJSUtCzZ0/873//izm91+uF3W6P+BARERFR89CgwXP//v14++230bZtW/zyyy+47bbbcPfdd2PGjBlRp586dSpMJlP4k5WV1ZDFIyIiIqI4kgghREMtXKlUok+fPli+fHl42N133401a9ZgxYoVtab3er3wer3h/9vtdmRlZcFms8FoNDZUMYmIiIjoJNntdphMpnrltQat8UxPT0enTp0ihnXs2BGHDx+OOr1KpYLRaIz4EBEREVHz0KDBc9CgQdi1a1fEsN27d6Nly5YNuVoiIiIiaoIaNHjee++9WLlyJZ5//nns3bsXn3/+Od59913ccccdDblaIiIiImqCGjR49u3bF3PmzMHMmTPRpUsXPPPMM3j99ddxzTXXNORqiYiIiKgJatCXi07ViTysSkRERETx12ReLiIiIiIiqsbgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREcSFv7AIQERE1FqfbD6fPBXfIgf3lh6FRqpFryYJFY4JSpmjs4hE1O3ELnlOnTsXDDz+Me+65B6+//nq8VktERBSVrdILZ8CJWTvmYlneqvBwuVSOu/pNRq+MzlDJVY1YQqLmJy632tesWYN3330X3bp1i8fqiIiI6hQIhuBw+7G6YGNE6ASAQCiA11e+hxJHeSOVjqj5avDg6XA4cM011+B///sfLBZLQ6+OiIjouCqdXlS4bfjt4KKo44UQWHZ4dZxLRdT8NXjwvOOOOzB27FiMHDnyuNN6vV7Y7faIDxER0enmC4Tg9vlR7rHFnKbIcRTBoD+OpSJq/ho0eH7xxRdYv349pk6dWq/pp06dCpPJFP5kZWU1ZPGIiOhvSiGTwlYZQCtzdsxpOia3hd3riGOpiJq/BgueeXl5uOeee/Dpp59CrVbXa56HHnoINpst/MnLy2uo4hER0d+Y2aBGC7MZY1uNgQSSWuNNKgNS9UnwBHyNUDqi5qvBgue6detQUlKC3r17Qy6XQy6XY8mSJXjzzTchl8sRDAZrzaNSqWA0GiM+REREp5tUKkFqog72MiVu63kTUnRJ4XGdktthypA78PXWH6CUKxuxlETNT4M1pzRixAhs2bIlYtjkyZPRoUMHPPjgg5DJZA21aiIiouNKMGnQvU0iSh0a3NTlZkjlAejUSti9drzw+38woeN5sKhNjV1MomalwYKnwWBAly5dIobpdDokJibWGk5ERNQYUi0WBKQezNkxH0ddZdhfkYdgKIgL243A4JZnQSplB39EpxN7LiIior+1FqZ0TOxxCeyeSnhDPhiUepjVRqh4m53otItr8Fy8eHE8V0dERFQvJrUBJrWhsYtB1OzxHgIRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUF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\n", "text/plain": [ "
" ] From e979e4a98c57238a0dd08d21fd1b0a978ff1b468 Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Wed, 21 Dec 2022 14:19:20 -0600 Subject: [PATCH 33/62] doc(nodepiece_gnn): update doc --- applications/nodepiece/nodepiece_gnn.ipynb | 139 ++++++++++++++++++++- 1 file changed, 136 insertions(+), 3 deletions(-) diff --git a/applications/nodepiece/nodepiece_gnn.ipynb b/applications/nodepiece/nodepiece_gnn.ipynb index df3b35a..9f8ff52 100644 --- a/applications/nodepiece/nodepiece_gnn.ipynb +++ b/applications/nodepiece/nodepiece_gnn.ipynb @@ -43,6 +43,47 @@ "!pip install git+https://github.com/tigergraph/pyTigerGraph.git --no-cache" ] }, + { + "cell_type": "markdown", + "id": "2f5a010e", + "metadata": {}, + "source": [ + "# NodePiece - Heterogenous GraphSAGE\n", + "This notebook demonstrates the training of a Heterogenous GraphSAGE model with trainable embeddings using the NodePiece algorithm. We train the model on the IMDB dataset from [PyG datasets](https://pytorch-geometric.readthedocs.io/en/latest/modules/datasets.html#torch_geometric.datasets.IMDB) with TigerGraph as the data store. The dataset contains 3 types of vertices: 4278 movies, 5257 actors, and 2081 directors; and 4 types of edges: 12828 actor to movie edges, 12828 movie to actor edges, 4278 director to movie edges, and 4278 movie to director edges. Each vertex is described by a 0/1-valued word vector indicating the absence/presence of the corresponding keywords from the plot (for movie) or from movies they participated (for actors and directors). Each movie is classified into one of three classes, action, comedy, and drama according to their genre. The goal is to predict the class of each movie in the graph." + ] + }, + { + "cell_type": "markdown", + "id": "3ba2dee4", + "metadata": {}, + "source": [ + "## Table of Contents\n", + "* [Data Processing](#data_processing) \n", + "* [NodePiece Algorithm](#nodepiece_algorithm)\n", + "* [Train on neighborhood subgraphs](#train_subgraph) \n", + "* [Inference](#inference)" + ] + }, + { + "cell_type": "markdown", + "id": "db2cb7d8", + "metadata": {}, + "source": [ + "## Data Processing " + ] + }, + { + "cell_type": "markdown", + "id": "3fd18792", + "metadata": {}, + "source": [ + "### Connect to TigerGraph\n", + "\n", + "The `TigerGraphConnection` class represents a connection to the TigerGraph database. Under the hood, it stores the necessary information to communicate with the database. It is able to perform quite a few database tasks. Please see its [documentation](https://docs.tigergraph.com/pytigergraph/current/intro/) for details.\n", + "\n", + "To connect your database, modify the `config.json` file accompanying this notebook. Set the value of `getToken` based on whether token auth is enabled for your database. Token auth is always enabled for tgcloud databases. " + ] + }, { "cell_type": "code", "execution_count": 2, @@ -64,6 +105,14 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "798ff2cc", + "metadata": {}, + "source": [ + "### Ingest Data" + ] + }, { "cell_type": "code", "execution_count": 3, @@ -89,6 +138,14 @@ "conn.ingestDataset(dataset, getToken=config[\"getToken\"])" ] }, + { + "cell_type": "markdown", + "id": "b821dc06", + "metadata": {}, + "source": [ + "### Visualize Schema" + ] + }, { "cell_type": "code", "execution_count": 4, @@ -117,6 +174,24 @@ "drawSchema(conn.getSchema(force=True))" ] }, + { + "cell_type": "markdown", + "id": "c695e9c3", + "metadata": {}, + "source": [ + "## NodePiece Algorithm " + ] + }, + { + "cell_type": "markdown", + "id": "6d676fb9", + "metadata": {}, + "source": [ + "The [NodePiece algorithm](https://arxiv.org/abs/2106.12144) was introduced as a way to both conserve the memory cost of vertex embeddings, as well as be able to generalize to unseen vertices during the testing process. This makes NodePiece a much more scalable approach for large, real-world graphs compared to other transductive techniques such as FastRP or Node2Vec. For more information about the algorithm, check out the author's [Medium post](https://towardsdatascience.com/nodepiece-tokenizing-knowledge-graphs-6dd2b91847aa).\n", + "\n", + "We implement the NodePiece dataloader, and take advantage of its `precompute()` method. This stores the closest anchor vertices to each vertex as an attribute on each vertex. This attribute will then be consumed later in our Neighbor Sampler." + ] + }, { "cell_type": "code", "execution_count": 5, @@ -204,6 +279,15 @@ "}" ] }, + { + "cell_type": "markdown", + "id": "9d3965a5", + "metadata": {}, + "source": [ + "## Train on Neighborhood Subgraphs \n", + "We train the model on the neighborhood subgraphs. Each subgraph contains the 2 hop neighborhood of certain seed vertices. This method will allow us to train the model on graphs that are way larger than the IMDB dataset because we don't load the whole graph into memory all at once. We get both the feature vectors for each vertex (`x`), as well as their closest anchors in the `v_extra_feats` parameter. We then utilize the dataloader's callback functionality to process the anchor dictionary before the batch is passed into the training loop.\n" + ] + }, { "cell_type": "code", "execution_count": 9, @@ -291,6 +375,14 @@ " break" ] }, + { + "cell_type": "markdown", + "id": "cfdc17a4", + "metadata": {}, + "source": [ + "### Construct model and optimizer" + ] + }, { "cell_type": "code", "execution_count": 12, @@ -511,6 +603,14 @@ "optimizer = torch.optim.Adam(model.parameters(), lr=5e-3, weight_decay=5e-5)" ] }, + { + "cell_type": "markdown", + "id": "9d99c311", + "metadata": {}, + "source": [ + "### Train the model" + ] + }, { "cell_type": "code", "execution_count": 21, @@ -642,6 +742,14 @@ " valid_log.flush()" ] }, + { + "cell_type": "markdown", + "id": "cef2b6b8", + "metadata": {}, + "source": [ + "### Test the model" + ] + }, { "cell_type": "code", "execution_count": 23, @@ -688,6 +796,16 @@ "print(\"Accuracy: {:.4f}\".format(acc.value))" ] }, + { + "cell_type": "markdown", + "id": "6d6aba62", + "metadata": {}, + "source": [ + "## Inference \n", + "\n", + "Finally, we use the trained model for node classification. At this stage, we typically do inference/prediction for specific nodes instead of random batches, so we will create a new data loader. " + ] + }, { "cell_type": "code", "execution_count": 25, @@ -851,6 +969,16 @@ " print(\"{}:{}\".format(i, j.item()))" ] }, + { + "cell_type": "markdown", + "id": "df86e849", + "metadata": {}, + "source": [ + "## Visualize Embeddings \n", + "\n", + "To view the embeddings, we sample 1000 Movie vertices from the graph and plot them in 2D using UMAP." + ] + }, { "cell_type": "code", "execution_count": 29, @@ -932,7 +1060,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp4AAAKvCAYAAADDUM+bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAADsTUlEQVR4nOzdd3RU1cIF8D29t/SEJCT03pGuNFFAAXsFxe6zPZ9Pxd7Fiu17T/FZsWBBUGwoSBPpvfeWQhJSZibT2/n+iBkzZCaEkkmI+7fWrAW3nrm5Zc+5954jEUIIEBERERE1MGljF4CIiIiI/h4YPImIiIgoLhg8iYiIiCguGDyJiIiIKC4YPImIiIgoLhg8iYiIiCguGDyJiIiIKC4YPImIiIgoLhg8iYiIiCguGDzj5Prrr4dEIsH111/f2EUJa4pl+jsbOnQoJBIJnnzyycYuSlSLFy+GRCKBRCI5qfk/+ugjSCQS5OTk1Br35JNPQiKRYOjQoadWSKq36r/l4sWLG7soDaKu/e14mvu5sTkcb8fbfw8fPozJkycjOzsbSqUSEokEZrMZAHDw4MHw/AcPHoxbmU/VqezTTckZHTyrDx6JRAKdTofCwsKY09bc0ZrTibbm96r5kclkSEhIwIABA/D000+jtLS0sYva6KqDXX0+Z/IJmc4swWAQX331FSZNmoR27drBbDZDqVQiJSUFgwcPxkMPPYStW7c2djGpCbLb7Xjrrbdw4YUXomXLltDpdNBoNMjMzMSYMWMwbdo0FBUVNXYx485ms2HQoEH46KOPkJeXB61Wi9TUVKSmpjZ20aI6ePAgnnzyySZb6XC6yRu7AKeLy+XCU089henTpzd2URqN0WiERqMBAPh8PlRUVGDlypVYuXIl/vOf/+DHH39Enz59wtOnp6ejffv2SE9Pb6wiNwqFQoGEhIQ6pzneeDq9kpKS0L59e2RnZzd2UeJq5cqVuO6667B79+7wMIVCAYPBgLKyMvzxxx/4448/8MILL+Diiy/GzJkzoVQqG7HE1FS8//77uP/++1FRUREeptFooFKpUFBQgIKCAvz888945JFH8Oijj+KRRx5pxNKefu3btwcAaLXaWuNmzpyJ/Px8WCwWLF++HB06dIgYr1AowvMrFIqGL+xxHDx4EE899RQA1Bk+TSYT2rdvjxYtWsSpZA3jjK7xPNYHH3wQcQL/u3njjTdQVFSEoqIilJeXo7y8HM8++ywUCgVKSkpw8cUXw+PxhKefOnUqdu7cialTpzZiqeNv4MCB4e0U6zN79uzGLubfyp133omdO3dixowZjV2UuPn+++8xdOhQ7N69G4mJiZg6dSp2794Nn8+HsrIy+Hw+rFmzBlOmTIHRaMTs2bPhcrkau9jUBDzyyCO46aabUFFRgY4dO+Ljjz9GcXExXC4XrFYrXC4XfvnlF1x77bXw+/34+uuvG7vIp93OnTuxc+dOnHXWWbXGbdmyBQAwfPjwWqETAFq0aBGe/0wKcRdddBF27tyJ3377rbGLckqaRfDMyspCt27dEAgE8PDDDzd2cZoMi8WCRx55BA8++CAAIC8vD999910jl4qI9uzZg2uvvRZerxedOnXCxo0bMWXKFLRt2zY8jUwmQ58+fTB16lQcOHAA48ePb8QSU1Px5Zdf4vnnnwcAXHbZZdiwYQMmTZqElJSU8DQajQajRo3CJ598go0bN6Jz586NVdxGUf0DTa/XN3JJKJpmETylUmm41u6bb77B6tWrT2o5wWAQH3zwAYYPH46kpCSoVCq0aNECl112Wb2eC/3ss88waNAgGAwGmEwm9OvXD++++y6EEPVa/759+3DXXXehY8eO0Ov10Gq16NixI/75z3/i8OHDJ/WdAGDixInhf69Zsyb87/o8QF9UVIQpU6age/fuMJlMUKvVaNWqFW666SZs3769zvWGQiF89dVXmDBhAlq0aAGVSoXk5GT07t0bU6ZMifncmsfjwZtvvolzzjkHSUlJUCqVSEtLw4QJEzBv3rwT+/KnybEPox86dAg333wzsrOzoVar0bp1azz66KNwOp3hebZu3Yprr70WWVlZUKvVaNu2LZ599ln4/f7jrs/n8+GFF15At27doNPpYLFYcO655+Lnn38+7rynsh/t3LkT11xzDdLS0sJ/67vuugvFxcXH30iounU8YcIEJCUlQaPRoH379njkkUfgcDjqnK+ulx2O3U9nzZqFoUOHIiEhAVqtFj169MAbb7yBUCgUc/lCCHz44YcYMGBA1OOzrmMhEAjg3XffxdChQ5GUlASFQoHExES0b98eV1xxBT744IN6bZuaHn30UdjtdqjVasyZMweZmZl1Tp+QkIBvv/0WJpOp1riioiLcf//96Ny5M/R6PXQ6HTp37owHHnig3n+3aDweD15//XUMHDgQFosFarUaLVu2xKRJk7Bx48aY8+Xk5EAikeCjjz6Cw+HA448/jq5du8JgMER9mWPDhg244YYb0Lp1a2i1Wuj1enTv3h2PPvrocZ9NP9n97UQIIfDOO+/grLPOgslkgtFoxODBg/HZZ5/VmraiogJarRYSiQRfffVVnct97LHHIJFI0KpVq3pfI3w+H+6//34AQKdOnTBjxgyoVKo65+nSpQs++eSTei0fANxuN+bOnYubb74ZPXr0QHJyMlQqFTIyMjBhwoTjnoN27tyJW265Be3atYNWq4VGo0FWVhb69++Phx9+GDt37qw1T35+Pu6991507twZOp0uvL7evXvj3nvvjbhuVYv2zkb1c/wfffQRAODjjz+OeHa/enh9Xi460euX3+/H/Pnzcffdd6NPnz5IT08PP6t93nnnYebMmVH/zjk5ORg2bFit71X9qXlOqs/LRfv27cPtt9+Otm3bQqPRwGg0olevXnj66adht9ujznPsi6N79+7FDTfcgKysLKhUKmRmZuLmm29GQUFBzPWeEHEGe+KJJwQA0bJlSyGEEOecc44AIIYNG1Zr2gMHDggAAoBYtGhRrfFWq1UMHTo0PI1MJhNms1lIJJLwsH//+99RyxEKhcTkyZPD00kkEmGxWIRUKhUAxJVXXimuu+46AUBcd911UZfx7rvvCoVCEV6GSqUSGo0m/H+j0Sh+/fXXOr/Xhx9+GHXZTqczPM3NN98cHn68Mn3//fdCr9eH51UoFEKn04X/r1Qqxccffxx13qNHj4qzzz47PC0AYTKZIr7j+PHja823e/du0bZt24htaTKZIpZz++23R13n8VTvH+ecc84Jz1tzO3/zzTfCbDaH/y4ymSw8bsiQIcLn84kffvhBaLXa8PeuuR9dccUVdZbvoYceEkOGDBEAhFwuD6+r+vPEE0/ELOfJ7kdCCPHzzz8LlUoVnlav1wu1Wi0AiPT0dPHBBx+Ex0Xz/vvvh/f56u+tVCoFANGhQwcxbdq0iOO1pupjOdrfpuZ+escddwgAQiqV1toukyZNilquQCAgrrjiipjH51VXXRXzWAgEAuLcc8+ttR/X3E4nehotKioKr/vGG288oXmPtXjx4ojtoNVqI45Ri8Uifv/996jz1nU+zM/PF126dIk49mseh1KpVLz55ptRl9uyZUsBQLzyyiuiXbt24XNFdTkPHDgQnvbxxx+PODa0Wm14n6ne79avXx91Paeyvx1Pzf2het+RSqXCYrFElHfy5MkiFApFnXfEiBExlx8IBESLFi0EAPHcc8/Vu1xfffVVeN2ffPLJCX+vanUdbx9++GHEvq3RaMLnsurPfffdF3W5v/76a8SxoVAojnv+2rhxo7BYLBHX3mO3c7RrVLT996KLLhKpqanh85ZarRapqanhzxdffCGEiDyf19wfq53M9WvRokUR06tUqojrJwBx2WWXiWAwGDFfnz59Ir5/zfKmpqaKu+++u9bfJtY+/eWXX0Zsf4PBEPH/rKwssX379lrz1Sz7woULw+U2GAxCLpeHx2VkZIj8/Pyo6z4RzSp4rly5MryBfv7554hpjxc8L7nkkvAJ8s033xROp1MIIcSRI0fEDTfcEJ737bffrjXvG2+8ER5/5513iqNHjwohqsLsk08+KSQSSfjgi3YAzZkzJ3yQTpkyRRw8eFCEQiERCoXEzp07xWWXXRYODYcOHYr5vWIFz23btoWnefDBB8PD6wqeq1atCp/Eb731VrFjxw4RCASEEEIcOnRI/OMf/wgHozVr1kTM6/f7xaBBg8IH34svvihKSkqEEFUn3AMHDojp06eLhx56KGK+iooKkZOTIwCI4cOHi6VLlwqPxxPeltOmTQsfEK+//nrU71qX0xU8zWazGDFihNi2bZsQQgiXyyXefPPNcAB99NFHhclkEldccYU4ePCgEEKIyspK8cgjj4SXMX/+/Jjlqw4277zzjnC73UIIIQ4fPiwuvfTS8PzfffddrflPZT/Ky8sTRqNRABDdunUTq1atEkIIEQwGxc8//ywyMzMjLiDHWrduXfgENXToULFjxw4hhBA+n0/MnDlTmM3m8PwnGzwtFotQKpVi2rRpwmazCSGEKC0tFTfddFO4XL/99lut+adOnRoe/69//UuUlpYKIYSw2Wzi+eefDwfRaMfCJ598Er6Avffee6KyslIIUfVjs7i4WMyePVtccskltdZZl5kzZ4bL88MPP5zQvDUdPnw4vE07deokli1bFh63dOlS0b59ewFAJCQkRL1YxDofBgIB0a9fv/C++Omnnwqv1yuEEGLfvn3iggsuCM/7008/1VpudfDU6/UiLS1NzJ49W/h8PiFE1X5WfW597bXXwhe3qVOniiNHjoTXv3bt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JwwGg+jbt6945513RCgUqtfFs7CwUDz66KOiT58+wmw2C5lMJkwmk+jRo4e48847xYIFC2r1GNCQwVOIqoZpp06dKgYPHiwSEhKETCYTer1edOrUSdx4441i7ty5MRvBDgaD4tNPPxWjR48WKSkpQqFQiJSUFNG7d28xZcqUcJeTx/L7/WLGjBniggsuEOnp6UKhUAi1Wi1yc3PFRRddJD744IPwL9ATcSINyB97AMYzeD7xxBPC6/WK559/XnTp0kVotVphMpnEiBEj6tWTxsnsR9W2bdsmrrzySpGSkiJUKpXIyckRd955pygqKqrX91u+fLm48MILRUJCglCr1aJdu3bioYceEna7vc7v3pDBU4iqGon33ntPnHXWWeHjs1+/fuHOAKpr8Wp2KSuEEJs3bxYvvviiGDNmjGjbtq0wGAxCoVCIjIwMMW7cuBNu9DqaQCAgZs6cKa655hrRpk0bYTQahUKhEElJSWLw4MHikUceCdfoRXPkyBFx3333iY4dO4b71e7YsaP497//XWfIOd750O12i2nTpon+/fuH+0HPysoSEydOFBs2bIi53BMJnkJUBbN7771XdOvWTRiNxnDA69u3r3jggQfE8uXLY9YAnez+djw197lQKCTefvtt0adPH2EwGIRerxcDBgwQM2bMqPfyqnsyOtHuVY/HarWK119/XYwZM0ZkZWUJjUYjVCqVaNGihRg9erR44403op4rj9eA/I8//iiGDh0aDp2tW7cWd911lygoKIh5LnQ4HOKrr74St99+u+jdu7dIT08Xcrlc6PV60aNHD/HAAw/U6qnL5/OJuXPninvvvVf0799fZGZmCqVSKbRarejUqZO44447xO7du6OWsSGDpxAnd/1avny5GDt2rDCbzUKpVIrs7GwxefLk8PFbV5k9Ho948sknw+f86mlrfof67NN79uwRt956q2jdunW4v/gePXqIp556KmZnCPEOnpI/F0ZE9LckhEB2djby8/MxY8YMTJw4sbGLRM1IUVERsrKyEAgE8Msvv4SfTyX6u2rWLxcRER3PJ598gvz8fMjl8nBzNUSnyzvvvINAIIA2bdqc9EtFRM0JgycRNXtXXXUVZs2aFfHGfnFxMV544YVwN6KTJk06qV6EiGJZu3Zt+K34f/3rX82ugwaik8Fb7UTU7JnN5nBTRFqtFgqFIvx/ABgyZAh++OGHmP1yE52InJwceL3ecDNXPXv2xKpVqxq17USipoLBk4iavRkzZuDnn3/Ghg0bUFJSAofDAbPZjB49euDKK6/ExIkTGQrotKmu2UxLS8P555+PF154IWq/2ER/RwyeRERERBQXfMaTiIiIiOJC3tgFqEsoFEJhYSEMBgMfyiYiIiJqgoQQqKysREZGRkTf89E06eBZWFiIrKysxi4GERERER1HXl4eMjMz65ymSQdPg8EAoOqL8G1TIiIioqbHbrcjKysrnNvq0qSDZ/XtdaPRyOBJRERE1ITV57FIvlxERERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxIW/sAjQVnoAHFS4btpbsgtvvRufUDkjWJsCoNjR20YiIiIiaBQZPAC6vEyvy1uHddV9AQISH90rvglv7XguLxtSIpSMiIiJqHnirHUCpswzT182MCJ0AsP7IVqw4vBZCiBhzEhEREVF9/e2Dp9Npw9IDK2KO/373b7B67HEsEREREVHz9LcPntJQAGXeypjj7V4HQiIUxxIRERERNU9/++Dp8bnR05Ibc3zHxFZQy1VxLBERERFR88TgKZOhjakFkrQJtcZJJVJc1XUcdEptI5SMiIiIqHn52wdPmUwNIZHgkV7Xon9Gd0glVZukpTkTTwz+B5KVlkYuIREREVHzIBFN+JVtu90Ok8kEm80Go9HYYOspspfCbi2AUSJHUCpBSCKFSqWDWqGD0Vi7JpSIiIiIqpxIXmvQGs9AIIBHH30Uubm50Gg0aNWqFZ5++mmEQk3rZZ00YxKSEnMRMCRC6BKgMqZApU1g6CQiIiI6jRq0AfkXX3wR77zzDj7++GN07twZa9euxeTJk2EymXDPPfc05KpPWILOiAQ0XK0qERER0d9dgwbPFStWYPz48Rg7diwAICcnBzNnzsTatWsbcrVERERE1AQ16K32wYMH47fffsPu3bsBAJs2bcKyZcswZsyYqNN7vV7Y7faIDxERERE1Dw1a4/nggw/CZrOhQ4cOkMlkCAaDeO6553DVVVdFnX7q1Kl46qmnGrJIRERERNRIGrTG88svv8Snn36Kzz//HOvXr8fHH3+MV155BR9//HHU6R966CHYbLbwJy8vryGLR0RERERx1KDNKWVlZWHKlCm44447wsOeffZZfPrpp9i5c+dx549Xc0pEREREdHKaTHNKLpcLUmnkKmQyWZNrTomIiIiIGl6DPuN54YUX4rnnnkN2djY6d+6MDRs2YNq0abjhhhsacrVERERE1AQ16K32yspKPPbYY5gzZw5KSkqQkZGBq666Co8//jiUSuVx5+etdiIiIqKm7UTyGrvMJCIiIqKT1mSe8SQiIiIiqsbgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERx0eDBs6CgANdeey0SExOh1WrRo0cPrFu3rqFXS0RERERNjLwhF15RUYFBgwZh2LBh+Pnnn5GSkoJ9+/bBbDY35GqJiIiIqAlq0OD54osvIisrCx9++GF4WE5OTkOukoiIiIiaqAa91T537lz06dMHl112GVJSUtCzZ0/873//izm91+uF3W6P+BARERFR89CgwXP//v14++230bZtW/zyyy+47bbbcPfdd2PGjBlRp586dSpMJlP4k5WV1ZDFIyIiIqI4kgghREMtXKlUok+fPli+fHl42N133401a9ZgxYoVtab3er3wer3h/9vtdmRlZcFms8FoNDZUMYmIiIjoJNntdphMpnrltQat8UxPT0enTp0ihnXs2BGHDx+OOr1KpYLRaIz4EBEREVHz0KDBc9CgQdi1a1fEsN27d6Nly5YNuVoiIiIiaoIaNHjee++9WLlyJZ5//nns3bsXn3/+Od59913ccccdDblaIiIiImqCGjR49u3bF3PmzMHMmTPRpUsXPPPMM3j99ddxzTXXNORqiYiIiKgJatCXi07ViTysSkRERETx12ReLiIiIiIiqsbgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREcSFv7AIQERE1FqfbD6fPBXfIgf3lh6FRqpFryYJFY4JSpmjs4hE1O3ELnlOnTsXDDz+Me+65B6+//nq8VktERBSVrdILZ8CJWTvmYlneqvBwuVSOu/pNRq+MzlDJVY1YQqLmJy632tesWYN3330X3bp1i8fqiIiI6hQIhuBw+7G6YGNE6ASAQCiA11e+hxJHeSOVjqj5avDg6XA4cM011+B///sfLBZLQ6+OiIjouCqdXlS4bfjt4KKo44UQWHZ4dZxLRdT8NXjwvOOOOzB27FiMHDnyuNN6vV7Y7faIDxER0enmC4Tg9vlR7rHFnKbIcRTBoD+OpSJq/ho0eH7xxRdYv349pk6dWq/pp06dCpPJFP5kZWU1ZPGIiOhvSiGTwlYZQCtzdsxpOia3hd3riGOpiJq/BgueeXl5uOeee/Dpp59CrVbXa56HHnoINpst/MnLy2uo4hER0d+Y2aBGC7MZY1uNgQSSWuNNKgNS9UnwBHyNUDqi5qvBgue6detQUlKC3r17Qy6XQy6XY8mSJXjzzTchl8sRDAZrzaNSqWA0GiM+REREp5tUKkFqog72MiVu63kTUnRJ4XGdktthypA78PXWH6CUKxuxlETNT4M1pzRixAhs2bIlYtjkyZPRoUMHPPjgg5DJZA21aiIiouNKMGnQvU0iSh0a3NTlZkjlAejUSti9drzw+38woeN5sKhNjV1MomalwYKnwWBAly5dIobpdDokJibWGk5ERNQYUi0WBKQezNkxH0ddZdhfkYdgKIgL243A4JZnQSplB39EpxN7LiIior+1FqZ0TOxxCeyeSnhDPhiUepjVRqh4m53otItr8Fy8eHE8V0dERFQvJrUBJrWhsYtB1OzxHgIRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUF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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp4AAAKvCAYAAADDUM+bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAADsTUlEQVR4nOzdd3RU1cIF8D29t/SEJCT03pGuNFFAAXsFxe6zPZ9Pxd7Fiu17T/FZsWBBUGwoSBPpvfeWQhJSZibT2/n+iBkzZCaEkkmI+7fWrAW3nrm5Zc+5954jEUIIEBERERE1MGljF4CIiIiI/h4YPImIiIgoLhg8iYiIiCguGDyJiIiIKC4YPImIiIgoLhg8iYiIiCguGDyJiIiIKC4YPImIiIgoLhg8iYiIiCguGDzj5Prrr4dEIsH111/f2EUJa4pl+jsbOnQoJBIJnnzyycYuSlSLFy+GRCKBRCI5qfk/+ugjSCQS5OTk1Br35JNPQiKRYOjQoadWSKq36r/l4sWLG7soDaKu/e14mvu5sTkcb8fbfw8fPozJkycjOzsbSqUSEokEZrMZAHDw4MHw/AcPHoxbmU/VqezTTckZHTyrDx6JRAKdTofCwsKY09bc0ZrTibbm96r5kclkSEhIwIABA/D000+jtLS0sYva6KqDXX0+Z/IJmc4swWAQX331FSZNmoR27drBbDZDqVQiJSUFgwcPxkMPPYStW7c2djGpCbLb7Xjrrbdw4YUXomXLltDpdNBoNMjMzMSYMWMwbdo0FBUVNXYx485ms2HQoEH46KOPkJeXB61Wi9TUVKSmpjZ20aI6ePAgnnzyySZb6XC6yRu7AKeLy+XCU089henTpzd2URqN0WiERqMBAPh8PlRUVGDlypVYuXIl/vOf/+DHH39Enz59wtOnp6ejffv2SE9Pb6wiNwqFQoGEhIQ6pzneeDq9kpKS0L59e2RnZzd2UeJq5cqVuO6667B79+7wMIVCAYPBgLKyMvzxxx/4448/8MILL+Diiy/GzJkzoVQqG7HE1FS8//77uP/++1FRUREeptFooFKpUFBQgIKCAvz888945JFH8Oijj+KRRx5pxNKefu3btwcAaLXaWuNmzpyJ/Px8WCwWLF++HB06dIgYr1AowvMrFIqGL+xxHDx4EE899RQA1Bk+TSYT2rdvjxYtWsSpZA3jjK7xPNYHH3wQcQL/u3njjTdQVFSEoqIilJeXo7y8HM8++ywUCgVKSkpw8cUXw+PxhKefOnUqdu7cialTpzZiqeNv4MCB4e0U6zN79uzGLubfyp133omdO3dixowZjV2UuPn+++8xdOhQ7N69G4mJiZg6dSp2794Nn8+HsrIy+Hw+rFmzBlOmTIHRaMTs2bPhcrkau9jUBDzyyCO46aabUFFRgY4dO+Ljjz9GcXExXC4XrFYrXC4XfvnlF1x77bXw+/34+uuvG7vIp93OnTuxc+dOnHXWWbXGbdmyBQAwfPjwWqETAFq0aBGe/0wKcRdddBF27tyJ3377rbGLckqaRfDMyspCt27dEAgE8PDDDzd2cZoMi8WCRx55BA8++CAAIC8vD999910jl4qI9uzZg2uvvRZerxedOnXCxo0bMWXKFLRt2zY8jUwmQ58+fTB16lQcOHAA48ePb8QSU1Px5Zdf4vnnnwcAXHbZZdiwYQMmTZqElJSU8DQajQajRo3CJ598go0bN6Jz586NVdxGUf0DTa/XN3JJKJpmETylUmm41u6bb77B6tWrT2o5wWAQH3zwAYYPH46kpCSoVCq0aNECl112Wb2eC/3ss88waNAgGAwGmEwm9OvXD++++y6EEPVa/759+3DXXXehY8eO0Ov10Gq16NixI/75z3/i8OHDJ/WdAGDixInhf69Zsyb87/o8QF9UVIQpU6age/fuMJlMUKvVaNWqFW666SZs3769zvWGQiF89dVXmDBhAlq0aAGVSoXk5GT07t0bU6ZMifncmsfjwZtvvolzzjkHSUlJUCqVSEtLw4QJEzBv3rwT+/KnybEPox86dAg333wzsrOzoVar0bp1azz66KNwOp3hebZu3Yprr70WWVlZUKvVaNu2LZ599ln4/f7jrs/n8+GFF15At27doNPpYLFYcO655+Lnn38+7rynsh/t3LkT11xzDdLS0sJ/67vuugvFxcXH30iounU8YcIEJCUlQaPRoH379njkkUfgcDjqnK+ulx2O3U9nzZqFoUOHIiEhAVqtFj169MAbb7yBUCgUc/lCCHz44YcYMGBA1OOzrmMhEAjg3XffxdChQ5GUlASFQoHExES0b98eV1xxBT744IN6bZuaHn30UdjtdqjVasyZMweZmZl1Tp+QkIBvv/0WJpOp1riioiLcf//96Ny5M/R6PXQ6HTp37owHHnig3n+3aDweD15//XUMHDgQFosFarUaLVu2xKRJk7Bx48aY8+Xk5EAikeCjjz6Cw+HA448/jq5du8JgMER9mWPDhg244YYb0Lp1a2i1Wuj1enTv3h2PPvrocZ9NP9n97UQIIfDOO+/grLPOgslkgtFoxODBg/HZZ5/VmraiogJarRYSiQRfffVVnct97LHHIJFI0KpVq3pfI3w+H+6//34AQKdOnTBjxgyoVKo65+nSpQs++eSTei0fANxuN+bOnYubb74ZPXr0QHJyMlQqFTIyMjBhwoTjnoN27tyJW265Be3atYNWq4VGo0FWVhb69++Phx9+GDt37qw1T35+Pu6991507twZOp0uvL7evXvj3nvvjbhuVYv2zkb1c/wfffQRAODjjz+OeHa/enh9Xi460euX3+/H/Pnzcffdd6NPnz5IT08PP6t93nnnYebMmVH/zjk5ORg2bFit71X9qXlOqs/LRfv27cPtt9+Otm3bQqPRwGg0olevXnj66adht9ujznPsi6N79+7FDTfcgKysLKhUKmRmZuLmm29GQUFBzPWeEHEGe+KJJwQA0bJlSyGEEOecc44AIIYNG1Zr2gMHDggAAoBYtGhRrfFWq1UMHTo0PI1MJhNms1lIJJLwsH//+99RyxEKhcTkyZPD00kkEmGxWIRUKhUAxJVXXimuu+46AUBcd911UZfx7rvvCoVCEV6GSqUSGo0m/H+j0Sh+/fXXOr/Xhx9+GHXZTqczPM3NN98cHn68Mn3//fdCr9eH51UoFEKn04X/r1Qqxccffxx13qNHj4qzzz47PC0AYTKZIr7j+PHja823e/du0bZt24htaTKZIpZz++23R13n8VTvH+ecc84Jz1tzO3/zzTfCbDaH/y4ymSw8bsiQIcLn84kffvhBaLXa8PeuuR9dccUVdZbvoYceEkOGDBEAhFwuD6+r+vPEE0/ELOfJ7kdCCPHzzz8LlUoVnlav1wu1Wi0AiPT0dPHBBx+Ex0Xz/vvvh/f56u+tVCoFANGhQwcxbdq0iOO1pupjOdrfpuZ+escddwgAQiqV1toukyZNilquQCAgrrjiipjH51VXXRXzWAgEAuLcc8+ttR/X3E4nehotKioKr/vGG288oXmPtXjx4ojtoNVqI45Ri8Uifv/996jz1nU+zM/PF126dIk49mseh1KpVLz55ptRl9uyZUsBQLzyyiuiXbt24XNFdTkPHDgQnvbxxx+PODa0Wm14n6ne79avXx91Paeyvx1Pzf2het+RSqXCYrFElHfy5MkiFApFnXfEiBExlx8IBESLFi0EAPHcc8/Vu1xfffVVeN2ffPLJCX+vanUdbx9++GHEvq3RaMLnsurPfffdF3W5v/76a8SxoVAojnv+2rhxo7BYLBHX3mO3c7RrVLT996KLLhKpqanh85ZarRapqanhzxdffCGEiDyf19wfq53M9WvRokUR06tUqojrJwBx2WWXiWAwGDFfnz59Ir5/zfKmpqaKu+++u9bfJtY+/eWXX0Zsf4PBEPH/rKwssX379lrz1Sz7woULw+U2GAxCLpeHx2VkZIj8/Pyo6z4RzSp4rly5MryBfv7554hpjxc8L7nkkvAJ8s033xROp1MIIcSRI0fEDTfcEJ737bffrjXvG2+8ER5/5513iqNHjwohqsLsk08+KSQSSfjgi3YAzZkzJ3yQTpkyRRw8eFCEQiERCoXEzp07xWWXXRYODYcOHYr5vWIFz23btoWnefDBB8PD6wqeq1atCp/Eb731VrFjxw4RCASEEEIcOnRI/OMf/wgHozVr1kTM6/f7xaBBg8IH34svvihKSkqEEFUn3AMHDojp06eLhx56KGK+iooKkZOTIwCI4cOHi6VLlwqPxxPeltOmTQsfEK+//nrU71qX0xU8zWazGDFihNi2bZsQQgiXyyXefPPNcAB99NFHhclkEldccYU4ePCgEEKIyspK8cgjj4SXMX/+/Jjlqw4277zzjnC73UIIIQ4fPiwuvfTS8PzfffddrflPZT/Ky8sTRqNRABDdunUTq1atEkIIEQwGxc8//ywyMzMjLiDHWrduXfgENXToULFjxw4hhBA+n0/MnDlTmM3m8PwnGzwtFotQKpVi2rRpwmazCSGEKC0tFTfddFO4XL/99lut+adOnRoe/69//UuUlpYKIYSw2Wzi+eefDwfRaMfCJ598Er6Avffee6KyslIIUfVjs7i4WMyePVtccskltdZZl5kzZ4bL88MPP5zQvDUdPnw4vE07deokli1bFh63dOlS0b59ewFAJCQkRL1YxDofBgIB0a9fv/C++Omnnwqv1yuEEGLfvn3iggsuCM/7008/1VpudfDU6/UiLS1NzJ49W/h8PiFE1X5WfW597bXXwhe3qVOniiNHjoTXv3bt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JwwGg+jbt6945513RCgUqtfFs7CwUDz66KOiT58+wmw2C5lMJkwmk+jRo4e48847xYIFC2r1GNCQwVOIqoZpp06dKgYPHiwSEhKETCYTer1edOrUSdx4441i7ty5MRvBDgaD4tNPPxWjR48WKSkpQqFQiJSUFNG7d28xZcqUcJeTx/L7/WLGjBniggsuEOnp6UKhUAi1Wi1yc3PFRRddJD744IPwL9ATcSINyB97AMYzeD7xxBPC6/WK559/XnTp0kVotVphMpnEiBEj6tWTxsnsR9W2bdsmrrzySpGSkiJUKpXIyckRd955pygqKqrX91u+fLm48MILRUJCglCr1aJdu3bioYceEna7vc7v3pDBU4iqGon33ntPnHXWWeHjs1+/fuHOAKpr8Wp2KSuEEJs3bxYvvviiGDNmjGjbtq0wGAxCoVCIjIwMMW7cuBNu9DqaQCAgZs6cKa655hrRpk0bYTQahUKhEElJSWLw4MHikUceCdfoRXPkyBFx3333iY4dO4b71e7YsaP497//XWfIOd750O12i2nTpon+/fuH+0HPysoSEydOFBs2bIi53BMJnkJUBbN7771XdOvWTRiNxnDA69u3r3jggQfE8uXLY9YAnez+djw197lQKCTefvtt0adPH2EwGIRerxcDBgwQM2bMqPfyqnsyOtHuVY/HarWK119/XYwZM0ZkZWUJjUYjVCqVaNGihRg9erR44403op4rj9eA/I8//iiGDh0aDp2tW7cWd911lygoKIh5LnQ4HOKrr74St99+u+jdu7dIT08Xcrlc6PV60aNHD/HAAw/U6qnL5/OJuXPninvvvVf0799fZGZmCqVSKbRarejUqZO44447xO7du6OWsSGDpxAnd/1avny5GDt2rDCbzUKpVIrs7GwxefLk8PFbV5k9Ho948sknw+f86mlrfof67NN79uwRt956q2jdunW4v/gePXqIp556KmZnCPEOnpI/F0ZE9LckhEB2djby8/MxY8YMTJw4sbGLRM1IUVERsrKyEAgE8Msvv4SfTyX6u2rWLxcRER3PJ598gvz8fMjl8nBzNUSnyzvvvINAIIA2bdqc9EtFRM0JgycRNXtXXXUVZs2aFfHGfnFxMV544YVwN6KTJk06qV6EiGJZu3Zt+K34f/3rX82ugwaik8Fb7UTU7JnN5nBTRFqtFgqFIvx/ABgyZAh++OGHmP1yE52InJwceL3ecDNXPXv2xKpVqxq17USipoLBk4iavRkzZuDnn3/Ghg0bUFJSAofDAbPZjB49euDKK6/ExIkTGQrotKmu2UxLS8P555+PF154IWq/2ER/RwyeRERERBQXfMaTiIiIiOJC3tgFqEsoFEJhYSEMBgMfyiYiIiJqgoQQqKysREZGRkTf89E06eBZWFiIrKysxi4GERERER1HXl4eMjMz65ymSQdPg8EAoOqL8G1TIiIioqbHbrcjKysrnNvq0qSDZ/XtdaPRyOBJRERE1ITV57FIvlxERERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxIW/sAjQVnoAHFS4btpbsgtvvRufUDkjWJsCoNjR20YiIiIiaBQZPAC6vEyvy1uHddV9AQISH90rvglv7XguLxtSIpSMiIiJqHnirHUCpswzT182MCJ0AsP7IVqw4vBZCiBhzEhEREVF9/e2Dp9Npw9IDK2KO/373b7B67HEsEREREVHz9LcPntJQAGXeypjj7V4HQiIUxxIRERERNU9/++Dp8bnR05Ibc3zHxFZQy1VxLBERERFR88TgKZOhjakFkrQJtcZJJVJc1XUcdEptI5SMiIiIqHn52wdPmUwNIZHgkV7Xon9Gd0glVZukpTkTTwz+B5KVlkYuIREREVHzIBFN+JVtu90Ok8kEm80Go9HYYOspspfCbi2AUSJHUCpBSCKFSqWDWqGD0Vi7JpSIiIiIqpxIXmvQGs9AIIBHH30Uubm50Gg0aNWqFZ5++mmEQk3rZZ00YxKSEnMRMCRC6BKgMqZApU1g6CQiIiI6jRq0AfkXX3wR77zzDj7++GN07twZa9euxeTJk2EymXDPPfc05KpPWILOiAQ0XK0qERER0d9dgwbPFStWYPz48Rg7diwAICcnBzNnzsTatWsbcrVERERE1AQ16K32wYMH47fffsPu3bsBAJs2bcKyZcswZsyYqNN7vV7Y7faIDxERERE1Dw1a4/nggw/CZrOhQ4cOkMlkCAaDeO6553DVVVdFnX7q1Kl46qmnGrJIRERERNRIGrTG88svv8Snn36Kzz//HOvXr8fHH3+MV155BR9//HHU6R966CHYbLbwJy8vryGLR0RERERx1KDNKWVlZWHKlCm44447wsOeffZZfPrpp9i5c+dx549Xc0pEREREdHKaTHNKLpcLUmnkKmQyWZNrTomIiIiIGl6DPuN54YUX4rnnnkN2djY6d+6MDRs2YNq0abjhhhsacrVERERE1AQ16K32yspKPPbYY5gzZw5KSkqQkZGBq666Co8//jiUSuVx5+etdiIiIqKm7UTyGrvMJCIiIqKT1mSe8SQiIiIiqsbgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERx0eDBs6CgANdeey0SExOh1WrRo0cPrFu3rqFXS0RERERNjLwhF15RUYFBgwZh2LBh+Pnnn5GSkoJ9+/bBbDY35GqJiIiIqAlq0OD54osvIisrCx9++GF4WE5OTkOukoiIiIiaqAa91T537lz06dMHl112GVJSUtCzZ0/873//izm91+uF3W6P+BARERFR89CgwXP//v14++230bZtW/zyyy+47bbbcPfdd2PGjBlRp586dSpMJlP4k5WV1ZDFIyIiIqI4kgghREMtXKlUok+fPli+fHl42N133401a9ZgxYoVtab3er3wer3h/9vtdmRlZcFms8FoNDZUMYmIiIjoJNntdphMpnrltQat8UxPT0enTp0ihnXs2BGHDx+OOr1KpYLRaIz4EBEREVHz0KDBc9CgQdi1a1fEsN27d6Nly5YNuVoiIiIiaoIaNHjee++9WLlyJZ5//nns3bsXn3/+Od59913ccccdDblaIiIiImqCGjR49u3bF3PmzMHMmTPRpUsXPPPMM3j99ddxzTXXNORqiYiIiKgJatCXi07ViTysSkRERETx12ReLiIiIiIiqsbgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREccHgSURERERxweBJRERERHHB4ElEREREcSFv7AIQERE1FqfbD6fPBXfIgf3lh6FRqpFryYJFY4JSpmjs4hE1O3ELnlOnTsXDDz+Me+65B6+//nq8VktERBSVrdILZ8CJWTvmYlneqvBwuVSOu/pNRq+MzlDJVY1YQqLmJy632tesWYN3330X3bp1i8fqiIiI6hQIhuBw+7G6YGNE6ASAQCiA11e+hxJHeSOVjqj5avDg6XA4cM011+B///sfLBZLQ6+OiIjouCqdXlS4bfjt4KKo44UQWHZ4dZxLRdT8NXjwvOOOOzB27FiMHDnyuNN6vV7Y7faIDxER0enmC4Tg9vlR7rHFnKbIcRTBoD+OpSJq/ho0eH7xxRdYv349pk6dWq/pp06dCpPJFP5kZWU1ZPGIiOhvSiGTwlYZQCtzdsxpOia3hd3riGOpiJq/BgueeXl5uOeee/Dpp59CrVbXa56HHnoINpst/MnLy2uo4hER0d+Y2aBGC7MZY1uNgQSSWuNNKgNS9UnwBHyNUDqi5qvBgue6detQUlKC3r17Qy6XQy6XY8mSJXjzzTchl8sRDAZrzaNSqWA0GiM+REREp5tUKkFqog72MiVu63kTUnRJ4XGdktthypA78PXWH6CUKxuxlETNT4M1pzRixAhs2bIlYtjkyZPRoUMHPPjgg5DJZA21aiIiouNKMGnQvU0iSh0a3NTlZkjlAejUSti9drzw+38woeN5sKhNjV1MomalwYKnwWBAly5dIobpdDokJibWGk5ERNQYUi0WBKQezNkxH0ddZdhfkYdgKIgL243A4JZnQSplB39EpxN7LiIior+1FqZ0TOxxCeyeSnhDPhiUepjVRqh4m53otItr8Fy8eHE8V0dERFQvJrUBJrWhsYtB1OzxHgIRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUFgycRERERxQWDJxERERHFBYMnEREREcUF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", "text/plain": [ "
" ] @@ -969,7 +1097,7 @@ ], "metadata": { "kernelspec": { - "display_name": "PyTorch", + "display_name": "Python 3.8.9 64-bit", "language": "python", "name": "python3" }, @@ -983,7 +1111,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.8.9" + }, + "vscode": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + } } }, "nbformat": 4, From ffa9dbbc972fe4a8e2a5634677326fe109f77890 Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Wed, 21 Dec 2022 14:28:18 -0600 Subject: [PATCH 34/62] docs(nodepiece): update notebook comments --- applications/nodepiece/nodepiece.ipynb | 144 +++++++++++++++++++-- applications/nodepiece/nodepiece_gnn.ipynb | 3 +- 2 files changed, 136 insertions(+), 11 deletions(-) diff --git a/applications/nodepiece/nodepiece.ipynb b/applications/nodepiece/nodepiece.ipynb index 6dd7e34..b6f4ca8 100644 --- a/applications/nodepiece/nodepiece.ipynb +++ b/applications/nodepiece/nodepiece.ipynb @@ -43,6 +43,48 @@ "!pip install git+https://github.com/tigergraph/pyTigerGraph.git --no-cache" ] }, + { + "cell_type": "markdown", + "id": "ddb81024", + "metadata": {}, + "source": [ + "# NodePiece - Multilayer Perceptron\n", + "This notebook demonstrates the training of a Multilayer Perceptron model with trainable embeddings using the NodePiece algorithm. We train the model on the IMDB dataset from [PyG datasets](https://pytorch-geometric.readthedocs.io/en/latest/modules/datasets.html#torch_geometric.datasets.IMDB) with TigerGraph as the data store. The dataset contains 3 types of vertices: 4278 movies, 5257 actors, and 2081 directors; and 4 types of edges: 12828 actor to movie edges, 12828 movie to actor edges, 4278 director to movie edges, and 4278 movie to director edges. Each vertex is described by a 0/1-valued word vector indicating the absence/presence of the corresponding keywords from the plot (for movie) or from movies they participated (for actors and directors). Each movie is classified into one of three classes, action, comedy, and drama according to their genre. The goal is to predict the class of each movie in the graph." + ] + }, + { + "cell_type": "markdown", + "id": "66509bda", + "metadata": {}, + "source": [ + "## Table of Contents\n", + "* [Data Processing](#data_processing) \n", + "* [NodePiece Algorithm](#nodepiece_algorithm)\n", + "* [Train on Vertex Samples](#train_vertex) \n", + "* [Inference](#inference)\n", + "* [Embedding Visualization](#viz)" + ] + }, + { + "cell_type": "markdown", + "id": "fabe9354", + "metadata": {}, + "source": [ + "## Data Processing " + ] + }, + { + "cell_type": "markdown", + "id": "0249c028", + "metadata": {}, + "source": [ + "### Connect to TigerGraph\n", + "\n", + "The `TigerGraphConnection` class represents a connection to the TigerGraph database. Under the hood, it stores the necessary information to communicate with the database. It is able to perform quite a few database tasks. Please see its [documentation](https://docs.tigergraph.com/pytigergraph/current/intro/) for details.\n", + "\n", + "To connect your database, modify the `config.json` file accompanying this notebook. Set the value of `getToken` based on whether token auth is enabled for your database. Token auth is always enabled for tgcloud databases. " + ] + }, { "cell_type": "code", "execution_count": 2, @@ -64,6 +106,14 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "b2565a60", + "metadata": {}, + "source": [ + "### Ingest Data" + ] + }, { "cell_type": "code", "execution_count": 3, @@ -89,6 +139,14 @@ "conn.ingestDataset(dataset, getToken=config[\"getToken\"])" ] }, + { + "cell_type": "markdown", + "id": "c9554895", + "metadata": {}, + "source": [ + "### Visualize Schema" + ] + }, { "cell_type": "code", "execution_count": 4, @@ -117,6 +175,37 @@ "drawSchema(conn.getSchema(force=True))" ] }, + { + "cell_type": "markdown", + "id": "be6ee850", + "metadata": {}, + "source": [ + "## NodePiece Algorithm " + ] + }, + { + "cell_type": "markdown", + "id": "28632ef5", + "metadata": {}, + "source": [ + "The [NodePiece algorithm](https://arxiv.org/abs/2106.12144) was introduced as a way to both conserve the memory cost of vertex embeddings, as well as be able to generalize to unseen vertices during the testing process. This makes NodePiece a much more scalable approach for large, real-world graphs compared to other transductive techniques such as FastRP or Node2Vec. For more information about the algorithm, check out the author's [Medium post](https://towardsdatascience.com/nodepiece-tokenizing-knowledge-graphs-6dd2b91847aa).\n", + "\n", + "We implement the NodePiece dataloader, which will allow us to iterate through batches of vertices. We take advantage of the callback functionality to process the batch into PyTorch tensors for less data manipulation in the training loop." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ea2e5e8b-201e-4911-bf3a-9fe657cdb24f", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "import pandas as pd" + ] + }, { "cell_type": "code", "execution_count": 5, @@ -163,16 +252,20 @@ ] }, { - "cell_type": "code", - "execution_count": 7, - "id": "ea2e5e8b-201e-4911-bf3a-9fe657cdb24f", + "cell_type": "markdown", + "id": "d61fb38f", "metadata": {}, - "outputs": [], "source": [ - "import torch\n", - "import torch.nn as nn\n", - "import torch.nn.functional as F\n", - "import pandas as pd" + "## Train on Vertex Samples \n", + "We train the model on batches of vertices. We utilize both the trainable embeddings provided by NodePiece, as well as the `x` feature vector stored as an attribute on all Movie vertices." + ] + }, + { + "cell_type": "markdown", + "id": "8a955d66", + "metadata": {}, + "source": [ + "### Construct model and optimizer" ] }, { @@ -284,6 +377,14 @@ " callback_fn = lambda x: process_batch(x))" ] }, + { + "cell_type": "markdown", + "id": "5347a5b8", + "metadata": {}, + "source": [ + "### Train the model" + ] + }, { "cell_type": "code", "execution_count": 13, @@ -343,6 +444,14 @@ " \"Valid Accuracy:\", val_acc.value)" ] }, + { + "cell_type": "markdown", + "id": "87a34242", + "metadata": {}, + "source": [ + "### Test the model" + ] + }, { "cell_type": "code", "execution_count": 14, @@ -395,6 +504,16 @@ "print(\"Loss: {}, Accuracy: {}\".format(epoch_loss/test_loader.num_batches, acc.value), \"Time:\", end-start)" ] }, + { + "cell_type": "markdown", + "id": "f3a389dd", + "metadata": {}, + "source": [ + "## Visualize Embeddings \n", + "\n", + "To view the embeddings, we sample 1000 Movie vertices from the graph and plot them in 2D using UMAP." + ] + }, { "cell_type": "code", "execution_count": 16, @@ -672,7 +791,7 @@ ], "metadata": { "kernelspec": { - "display_name": "PyTorch", + "display_name": "Python 3.8.9 64-bit", "language": "python", "name": "python3" }, @@ -686,7 +805,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.8.9" + }, + "vscode": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + } } }, "nbformat": 4, diff --git a/applications/nodepiece/nodepiece_gnn.ipynb b/applications/nodepiece/nodepiece_gnn.ipynb index 9f8ff52..d0d0223 100644 --- a/applications/nodepiece/nodepiece_gnn.ipynb +++ b/applications/nodepiece/nodepiece_gnn.ipynb @@ -61,7 +61,8 @@ "* [Data Processing](#data_processing) \n", "* [NodePiece Algorithm](#nodepiece_algorithm)\n", "* [Train on neighborhood subgraphs](#train_subgraph) \n", - "* [Inference](#inference)" + "* [Inference](#inference)\n", + "* [Embedding Visualization](#viz)" ] }, { From 2b4a0146bcd43a82ba7dc3498eaf3b5bf7f40496 Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Mon, 9 Jan 2023 10:24:45 -0600 Subject: [PATCH 35/62] fix(nodepiece nb): fix config.json path --- applications/nodepiece/nodepiece.ipynb | 2 +- applications/nodepiece/nodepiece_gnn.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/nodepiece/nodepiece.ipynb b/applications/nodepiece/nodepiece.ipynb index b6f4ca8..dad7859 100644 --- a/applications/nodepiece/nodepiece.ipynb +++ b/applications/nodepiece/nodepiece.ipynb @@ -96,7 +96,7 @@ "import json\n", "\n", "# Read in DB configs\n", - "with open('../config.json', \"r\") as config_file:\n", + "with open('../../config.json', \"r\") as config_file:\n", " config = json.load(config_file)\n", " \n", "conn = TigerGraphConnection(\n", diff --git a/applications/nodepiece/nodepiece_gnn.ipynb b/applications/nodepiece/nodepiece_gnn.ipynb index d0d0223..19c14ac 100644 --- a/applications/nodepiece/nodepiece_gnn.ipynb +++ b/applications/nodepiece/nodepiece_gnn.ipynb @@ -96,7 +96,7 @@ "import json\n", "\n", "# Read in DB configs\n", - "with open('../config.json', \"r\") as config_file:\n", + "with open('../../config.json', \"r\") as config_file:\n", " config = json.load(config_file)\n", " \n", "conn = TigerGraphConnection(\n", From a2f76634b7a22c07b9630943961b60f7560ed1db Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Thu, 26 Jan 2023 15:32:47 -0600 Subject: [PATCH 36/62] clean(nodepiece): remove unneeded git install --- applications/nodepiece/nodepiece.ipynb | 45 +--------------------- applications/nodepiece/nodepiece_gnn.ipynb | 43 --------------------- 2 files changed, 1 insertion(+), 87 deletions(-) diff --git a/applications/nodepiece/nodepiece.ipynb b/applications/nodepiece/nodepiece.ipynb index dad7859..ffefffe 100644 --- a/applications/nodepiece/nodepiece.ipynb +++ b/applications/nodepiece/nodepiece.ipynb @@ -1,48 +1,5 @@ { "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c3d828cc-62e5-4cdd-8bb5-eab2593f0652", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found existing installation: pyTigerGraph 1.2.6\n", - "Uninstalling pyTigerGraph-1.2.6:\n", - " Successfully uninstalled pyTigerGraph-1.2.6\n", - "Collecting git+https://github.com/tigergraph/pyTigerGraph.git\n", - " Cloning https://github.com/tigergraph/pyTigerGraph.git to /tmp/pip-req-build-0at5b8lw\n", - " Running command git clone --filter=blob:none --quiet https://github.com/tigergraph/pyTigerGraph.git /tmp/pip-req-build-0at5b8lw\n", - " Resolved https://github.com/tigergraph/pyTigerGraph.git to commit 886de415393d16d7ffab8f90824d2a7e34b8b16a\n", - " Installing build dependencies ... \u001b[?25ldone\n", - "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", - "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n", - "\u001b[?25hRequirement already satisfied: requests in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (2.28.1)\n", - "Requirement already satisfied: pyTigerDriver in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (1.0.15)\n", - "Requirement already satisfied: validators in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (0.20.0)\n", - "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (1.26.11)\n", - "Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2.1.1)\n", - "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (3.4)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2022.9.24)\n", - "Requirement already satisfied: decorator>=3.4.0 in /opt/conda/lib/python3.9/site-packages (from validators->pyTigerGraph==1.2.6) (5.1.1)\n", - "Building wheels for collected packages: pyTigerGraph\n", - " Building wheel for pyTigerGraph (pyproject.toml) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for pyTigerGraph: filename=pyTigerGraph-1.2.6-py3-none-any.whl size=135918 sha256=146c29f306c32c7d198c8898915d2ad2347227bb927fac5f02544d86fe378d7c\n", - " Stored in directory: /tmp/pip-ephem-wheel-cache-_4_upi93/wheels/cc/41/7a/6b8eee74c439c99b3cdb01357d4b426b9a18e51e9571b28b18\n", - "Successfully built pyTigerGraph\n", - "Installing collected packages: pyTigerGraph\n", - "Successfully installed pyTigerGraph-1.2.6\n" - ] - } - ], - "source": [ - "!pip uninstall pyTigerGraph -y\n", - "!pip install git+https://github.com/tigergraph/pyTigerGraph.git --no-cache" - ] - }, { "cell_type": "markdown", "id": "ddb81024", @@ -731,7 +688,7 @@ } ], "source": [ - "embeddings.shape" + "print(embeddings.shape)" ] }, { diff --git a/applications/nodepiece/nodepiece_gnn.ipynb b/applications/nodepiece/nodepiece_gnn.ipynb index 19c14ac..03fb043 100644 --- a/applications/nodepiece/nodepiece_gnn.ipynb +++ b/applications/nodepiece/nodepiece_gnn.ipynb @@ -1,48 +1,5 @@ { "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "d883ff1e-fa69-44f7-9746-4ada262fa0ec", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found existing installation: pyTigerGraph 1.2.6\n", - "Uninstalling pyTigerGraph-1.2.6:\n", - " Successfully uninstalled pyTigerGraph-1.2.6\n", - "Collecting git+https://github.com/tigergraph/pyTigerGraph.git\n", - " Cloning https://github.com/tigergraph/pyTigerGraph.git to /tmp/pip-req-build-jd_wqmo6\n", - " Running command git clone --filter=blob:none --quiet https://github.com/tigergraph/pyTigerGraph.git /tmp/pip-req-build-jd_wqmo6\n", - " Resolved https://github.com/tigergraph/pyTigerGraph.git to commit 886de415393d16d7ffab8f90824d2a7e34b8b16a\n", - " Installing build dependencies ... \u001b[?25ldone\n", - "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", - "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n", - "\u001b[?25hRequirement already satisfied: requests in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (2.28.1)\n", - "Requirement already satisfied: pyTigerDriver in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (1.0.15)\n", - "Requirement already satisfied: validators in /opt/conda/lib/python3.9/site-packages (from pyTigerGraph==1.2.6) (0.20.0)\n", - "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (3.4)\n", - "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (1.26.11)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2022.9.24)\n", - "Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.9/site-packages (from requests->pyTigerGraph==1.2.6) (2.1.1)\n", - "Requirement already satisfied: decorator>=3.4.0 in /opt/conda/lib/python3.9/site-packages (from validators->pyTigerGraph==1.2.6) (5.1.1)\n", - "Building wheels for collected packages: pyTigerGraph\n", - " Building wheel for pyTigerGraph (pyproject.toml) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for pyTigerGraph: filename=pyTigerGraph-1.2.6-py3-none-any.whl size=135918 sha256=e55deb6cea85cded360af16caa5886e2275b8e570a4799732fb69abf7b5eb6ad\n", - " Stored in directory: /tmp/pip-ephem-wheel-cache-7606alh1/wheels/cc/41/7a/6b8eee74c439c99b3cdb01357d4b426b9a18e51e9571b28b18\n", - "Successfully built pyTigerGraph\n", - "Installing collected packages: pyTigerGraph\n", - "Successfully installed pyTigerGraph-1.2.6\n" - ] - } - ], - "source": [ - "!pip uninstall pyTigerGraph -y\n", - "!pip install git+https://github.com/tigergraph/pyTigerGraph.git --no-cache" - ] - }, { "cell_type": "markdown", "id": "2f5a010e", From bed8d49e32c46bbc755c21ccc181a56a882bf7cb Mon Sep 17 00:00:00 2001 From: Parker Erickson Date: Mon, 30 Jan 2023 14:29:43 -0600 Subject: [PATCH 37/62] doc(nodepiece nb): add pyTG compatibility --- applications/nodepiece/nodepiece.ipynb | 2 +- applications/nodepiece/nodepiece_gnn.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/nodepiece/nodepiece.ipynb b/applications/nodepiece/nodepiece.ipynb index ffefffe..13f58b5 100644 --- a/applications/nodepiece/nodepiece.ipynb +++ b/applications/nodepiece/nodepiece.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "source": [ "# NodePiece - Multilayer Perceptron\n", - "This notebook demonstrates the training of a Multilayer Perceptron model with trainable embeddings using the NodePiece algorithm. We train the model on the IMDB dataset from [PyG datasets](https://pytorch-geometric.readthedocs.io/en/latest/modules/datasets.html#torch_geometric.datasets.IMDB) with TigerGraph as the data store. The dataset contains 3 types of vertices: 4278 movies, 5257 actors, and 2081 directors; and 4 types of edges: 12828 actor to movie edges, 12828 movie to actor edges, 4278 director to movie edges, and 4278 movie to director edges. Each vertex is described by a 0/1-valued word vector indicating the absence/presence of the corresponding keywords from the plot (for movie) or from movies they participated (for actors and directors). Each movie is classified into one of three classes, action, comedy, and drama according to their genre. The goal is to predict the class of each movie in the graph." + "This notebook demonstrates the training of a Multilayer Perceptron model with trainable embeddings using the NodePiece algorithm. We train the model on the IMDB dataset from [PyG datasets](https://pytorch-geometric.readthedocs.io/en/latest/modules/datasets.html#torch_geometric.datasets.IMDB) with TigerGraph as the data store. The dataset contains 3 types of vertices: 4278 movies, 5257 actors, and 2081 directors; and 4 types of edges: 12828 actor to movie edges, 12828 movie to actor edges, 4278 director to movie edges, and 4278 movie to director edges. Each vertex is described by a 0/1-valued word vector indicating the absence/presence of the corresponding keywords from the plot (for movie) or from movies they participated (for actors and directors). Each movie is classified into one of three classes, action, comedy, and drama according to their genre. The goal is to predict the class of each movie in the graph. NodePiece is compatible with pyTigerGraph versions 1.3+." ] }, { diff --git a/applications/nodepiece/nodepiece_gnn.ipynb b/applications/nodepiece/nodepiece_gnn.ipynb index 03fb043..10155e2 100644 --- a/applications/nodepiece/nodepiece_gnn.ipynb +++ b/applications/nodepiece/nodepiece_gnn.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "source": [ "# NodePiece - Heterogenous GraphSAGE\n", - "This notebook demonstrates the training of a Heterogenous GraphSAGE model with trainable embeddings using the NodePiece algorithm. We train the model on the IMDB dataset from [PyG datasets](https://pytorch-geometric.readthedocs.io/en/latest/modules/datasets.html#torch_geometric.datasets.IMDB) with TigerGraph as the data store. The dataset contains 3 types of vertices: 4278 movies, 5257 actors, and 2081 directors; and 4 types of edges: 12828 actor to movie edges, 12828 movie to actor edges, 4278 director to movie edges, and 4278 movie to director edges. Each vertex is described by a 0/1-valued word vector indicating the absence/presence of the corresponding keywords from the plot (for movie) or from movies they participated (for actors and directors). Each movie is classified into one of three classes, action, comedy, and drama according to their genre. The goal is to predict the class of each movie in the graph." + "This notebook demonstrates the training of a Heterogenous GraphSAGE model with trainable embeddings using the NodePiece algorithm. We train the model on the IMDB dataset from [PyG datasets](https://pytorch-geometric.readthedocs.io/en/latest/modules/datasets.html#torch_geometric.datasets.IMDB) with TigerGraph as the data store. The dataset contains 3 types of vertices: 4278 movies, 5257 actors, and 2081 directors; and 4 types of edges: 12828 actor to movie edges, 12828 movie to actor edges, 4278 director to movie edges, and 4278 movie to director edges. Each vertex is described by a 0/1-valued word vector indicating the absence/presence of the corresponding keywords from the plot (for movie) or from movies they participated (for actors and directors). Each movie is classified into one of three classes, action, comedy, and drama according to their genre. The goal is to predict the class of each movie in the graph. NodePiece is compatible with pyTigerGraph versions 1.3+." ] }, { From d9f4e6c4841057a40c809373dfbc9b20b67b4cf3 Mon Sep 17 00:00:00 2001 From: Bill Date: Tue, 7 Feb 2023 20:40:11 +0000 Subject: [PATCH 38/62] feat(template_query): add example for BFS --- basics/template_query.ipynb | 708 ++++++++++++++++++++++++++++++++++++ 1 file changed, 708 insertions(+) create mode 100644 basics/template_query.ipynb diff --git a/basics/template_query.ipynb b/basics/template_query.ipynb new file mode 100644 index 0000000..36e27c3 --- /dev/null +++ b/basics/template_query.ipynb @@ -0,0 +1,708 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f72bea19-a48c-4a6c-96e5-1e5c98646be2", + "metadata": {}, + "source": [ + "# Template Query" + ] + }, + { + "cell_type": "markdown", + "id": "aaf7b111-39a2-4a8e-8d6d-0c8079322feb", + "metadata": {}, + "source": [ + "This notebook demostrates the use of [template query](https://docs.tigergraph.com/graph-ml/current/using-an-algorithm/#_packaged_template_queries), which is a new feature since TigerGraph Database `3.9` and pyTigerGraph `1.3`. That means, this notebook only runs with DB 3.9 and above and pyTigerGraph 1.3 and above.\n", + "\n", + "## What are template queries?\n", + "\n", + "Template queries, in this context, are the \"static\" version of the [graph algorithms](https://docs.tigergraph.com/graph-ml/current/intro/). \"Static\" means that a query is bound to the vertex type(s) and/or edge type(s) given to a query as input parameters at installation time. If you change the input vertex or edge types later, a new query will be generated and installed. \n", + "\n", + "But note not every graph algorithm has a template query currently. More template queries will be added in future versions.\n", + "\n", + "## How is current user experience impacted?\n", + "\n", + "As a user, there is not much difference in calling a template graph algorithm (See below for examples). You will only notice the query installation when you change input vertex or edge types. Changing other query parameters such as `iterations` won't generate a new query. \n", + "\n", + "## What is the benefit of using template queries?\n", + "\n", + "As a template query is bound to certain vertex and edge types, it runs faster than the \"schema-less\" version. Therefore, it is useful when speed is the main concern. However, there is a tradeoff of flexibility when you are experimenting with vertex and edge types. \n", + "\n", + "## Examples" + ] + }, + { + "cell_type": "markdown", + "id": "c1635df7-998a-4649-aba2-6ee00a973d12", + "metadata": {}, + "source": [ + "### Connection to Database\n", + "\n", + "The `TigerGraphConnection` class represents a connection to the TigerGraph database. Under the hood, it stores the necessary information to communicate with the database. It is able to perform quite a few database tasks. Please see its [documentation](https://docs.tigergraph.com/pytigergraph/current/intro/) for details.\n", + "\n", + "To connect your database, modify the `config.json` file accompanying this notebook. Set the value of `getToken` based on whether token auth is enabled for your database. Token auth is always enabled for tgcloud databases. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "8b5dd915-2645-4e4d-ae16-33ed63c1a02d", + "metadata": {}, + "outputs": [], + "source": [ + "from pyTigerGraph import TigerGraphConnection\n", + "import json\n", + "\n", + "# Read in DB configs\n", + "with open('../config.json', \"r\") as config_file:\n", + " config = json.load(config_file)\n", + " \n", + "conn = TigerGraphConnection(\n", + " host=config[\"host\"],\n", + " username=config[\"username\"],\n", + " password=config[\"password\"]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "84febfb9-ff4d-4d46-8a45-f8ad6e59c7ce", + "metadata": {}, + "source": [ + "### Ingest Data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ddd2fa65-40a0-44b2-9335-3d109de1239f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A folder with name ldbc_snb already exists in ./tmp. Skip downloading.\n" + ] + } + ], + "source": [ + "from pyTigerGraph.datasets import Datasets\n", + "\n", + "dataset = Datasets(\"ldbc_snb\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "10063fbb-5522-40cc-82c4-c33ae0a5f3d3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Checking database ----\n", + "A graph with name ldbc_snb already exists in the database. Skip ingestion.\n", + "Graph name is set to ldbc_snb for this connection.\n" + ] + } + ], + "source": [ + "conn.ingestDataset(dataset, getToken=config[\"getToken\"])" + ] + }, + { + "cell_type": "markdown", + "id": "cdac1aa7-f786-42f2-9d28-d685bc3c4cb5", + "metadata": {}, + "source": [ + "### Visualize Schema" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "583574f7-3bf9-4869-b88e-84c237f2ddd2", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d0c3b6df24c4438081e4b43557f2aade", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "CytoscapeWidget(cytoscape_layout={'name': 'circle', 'animate': True, 'padding': 1}, cytoscape_style=[{'selecto…" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pyTigerGraph.visualization import drawSchema\n", + "\n", + "drawSchema(conn.getSchema(force=True))" + ] + }, + { + "cell_type": "markdown", + "id": "0827e34f-4c8f-4bed-8da0-3912303eac72", + "metadata": {}, + "source": [ + "### Featurizer\n", + "\n", + "`pyTigerGraph` provides the `featurizer` as a friendly interface to the graph algorithms. Please see the `feature_engineering` notebook for details on the `featurizer` and the notebooks under `algos` folder for details on the algorithms. Below we briefy review how to run a non-template graph algorithm with the featurizer first, and then we will learn how to run the template version with just one change of the parameters." + ] + }, + { + "cell_type": "markdown", + "id": "b00977f6-bce6-465a-b570-b475d0975924", + "metadata": { + "tags": [] + }, + "source": [ + "### Example 1: PageRank\n", + "\n", + "#### Non-Template Query " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "64ce67bf-e68a-4174-b653-45b21e8da468", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cannot read manifest file. Trying master branch.\n" + ] + } + ], + "source": [ + "# Create a featurizer\n", + "f = conn.gds.featurizer()\n", + "\n", + "# Run an algorithm with paramters\n", + "params = {\n", + " 'v_type': 'Person', \n", + " 'e_type': 'Knows', \n", + " 'max_change': 0.001, \n", + " 'maximum_iteration': 25, \n", + " 'damping': 0.85,\n", + " 'top_k': 10, \n", + " 'print_results': True, \n", + " 'result_attribute': '', \n", + " 'file_path': '', \n", + " 'display_edges': False}\n", + "\n", + "res = f.runAlgorithm(\n", + " 'tg_pagerank', \n", + " params=params\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "11787b46-8ad0-40ba-a1ad-008d7bbd0039", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'@@top_scores_heap': [{'Vertex_ID': '2199023262543', 'score': 24.85992},\n", + " {'Vertex_ID': '6597069777240', 'score': 23.86707},\n", + " {'Vertex_ID': '17592186053137', 'score': 23.6497},\n", + " {'Vertex_ID': '4398046513018', 'score': 23.56558},\n", + " {'Vertex_ID': '30786325585162', 'score': 23.43321},\n", + " {'Vertex_ID': '2199023259756', 'score': 22.87003},\n", + " {'Vertex_ID': '24189255819727', 'score': 22.31711},\n", + " {'Vertex_ID': '19791209302403', 'score': 20.59326},\n", + " {'Vertex_ID': '8796093029267', 'score': 20.49563},\n", + " {'Vertex_ID': '4139', 'score': 20.41319}]}]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Check result\n", + "res" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "eae59324-1e47-4f08-9e0a-b2160c37008a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time elapsed: 1.36 seconds\n" + ] + } + ], + "source": [ + "#Rerun the algorithm and record its run time for comparison later\n", + "import time\n", + "\n", + "start_time = time.perf_counter()\n", + "res = f.runAlgorithm(\n", + " 'tg_pagerank', \n", + " params=params\n", + ")\n", + "non_template_time = time.perf_counter() - start_time\n", + "print(\"Time elapsed: {:.3} seconds\".format(non_template_time))" + ] + }, + { + "cell_type": "markdown", + "id": "ea476c4e-50f8-4f12-b62b-7e1ec72b3cb0", + "metadata": {}, + "source": [ + "#### Template Query\n", + "\n", + "To use template query, there is only one change: set `templateQuery` to `True` when running an algorithm with the featurizer." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "e7629332-95f2-41b1-92f0-be532e93eba2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cannot read manifest file. Trying master branch.\n" + ] + } + ], + "source": [ + "# Create a featurizer\n", + "f = conn.gds.featurizer()\n", + "\n", + "# Run an algorithm with paramters\n", + "params = {\n", + " 'v_type': 'Person', \n", + " 'e_type': 'Knows', \n", + " 'max_change': 0.001, \n", + " 'maximum_iteration': 25, \n", + " 'damping': 0.85,\n", + " 'top_k': 10, \n", + " 'print_results': True, \n", + " 'result_attribute': '', \n", + " 'file_path': '', \n", + " 'display_edges': False}\n", + "\n", + "res = f.runAlgorithm(\n", + " 'tg_pagerank', \n", + " params=params,\n", + " templateQuery=True # Set this to True to use template query. Default False.\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a3fb8010-e208-419f-895b-cc9d9cb14f00", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'@@top_scores_heap': [{'score': 24.85992, 'Vertex_ID': '2199023262543'},\n", + " {'score': 23.86707, 'Vertex_ID': '6597069777240'},\n", + " {'score': 23.6497, 'Vertex_ID': '17592186053137'},\n", + " {'score': 23.56558, 'Vertex_ID': '4398046513018'},\n", + " {'score': 23.4332, 'Vertex_ID': '30786325585162'},\n", + " {'score': 22.87003, 'Vertex_ID': '2199023259756'},\n", + " {'score': 22.3171, 'Vertex_ID': '24189255819727'},\n", + " {'score': 20.59327, 'Vertex_ID': '19791209302403'},\n", + " {'score': 20.49563, 'Vertex_ID': '8796093029267'},\n", + " {'score': 20.41318, 'Vertex_ID': '4139'}]}]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Check result\n", + "res" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "ffe060bf-9df7-4431-a7d2-b5f9235f766e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time elapsed: 0.708 seconds\n" + ] + } + ], + "source": [ + "# Rerun the template query and record its run time.\n", + "\n", + "start_time = time.perf_counter()\n", + "res = f.runAlgorithm(\n", + " 'tg_pagerank', \n", + " params=params,\n", + " templateQuery=True\n", + ")\n", + "template_time = time.perf_counter() - start_time\n", + "print(\"Time elapsed: {:.3} seconds\".format(template_time))" + ] + }, + { + "cell_type": "markdown", + "id": "e0a18b87-c639-446b-8400-f43be6a966da", + "metadata": {}, + "source": [ + "### Example 2: Breadth-First Search\n", + "\n", + "#### Non-Template Query " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "53541f17-f179-401c-92ad-31a9f324f5f9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cannot read manifest file. Trying master branch.\n" + ] + } + ], + "source": [ + "# Create a featurizer\n", + "f = conn.gds.featurizer()\n", + "\n", + "# Run an algorithm with paramters\n", + "params = {\n", + " \"v_type_set\": [\"Person\"],\n", + " \"e_type_set\": [\"Knows\"],\n", + " \"max_hops\": 2,\n", + " \"v_start\": {\"id\": \"21990232556463\", \"type\": \"Person\"}, ##{\"id\": \"vertex_id\", \"type\": \"vertex_type\"}\n", + " \"print_results\": True,\n", + " \"result_attribute\": \"\",\n", + " \"file_path\": \"\",\n", + " \"display_edges\": False\n", + "}\n", + "\n", + "res = f.runAlgorithm(\n", + " 'tg_bfs', \n", + " params=params\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "13f1e195-8413-4144-894c-9483995e3929", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'v_id': '30786325580605',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '13194139540951',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '6597069769055',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '15393162796423',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '15393162792715',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '28587302332123',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '6597069774914',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '13194139542969',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '15393162795179',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}},\n", + " {'v_id': '4398046519923',\n", + " 'v_type': 'Person',\n", + " 'attributes': {'Start.@sum_step': 2}}]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Check result\n", + "res[0]['Start'][:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "743fa651-2d95-4ada-b67a-2268596e8ee8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time elapsed: 0.14 seconds\n" + ] + } + ], + "source": [ + "#Rerun the algorithm and record its run time for comparison later\n", + "import time\n", + "\n", + "start_time = time.perf_counter()\n", + "res = f.runAlgorithm(\n", + " 'tg_bfs', \n", + " params=params\n", + ")\n", + "bfs_non_template_time = time.perf_counter() - start_time\n", + "print(\"Time elapsed: {:.3} seconds\".format(bfs_non_template_time))" + ] + }, + { + "cell_type": "markdown", + "id": "b5fdc85e-b41c-4ffe-bd51-7231f54b7e26", + "metadata": {}, + "source": [ + "#### Template Query\n", + "\n", + "To use template query, there is only one change: set `templateQuery` to `True` when running an algorithm with the featurizer." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "3c2c7e9f-212f-492e-8063-03b5904ed703", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cannot read manifest file. Trying master branch.\n", + "Running the algorithm. It might take a minute to install the query if this is the first time it runs.\n" + ] + } + ], + "source": [ + "# Create a featurizer\n", + "f = conn.gds.featurizer()\n", + "\n", + "# Run an algorithm with paramters\n", + "params = {\n", + " \"v_type_set\": [\"Person\"],\n", + " \"e_type_set\": [\"Knows\"],\n", + " \"max_hops\": 2,\n", + " \"v_start\": {\"id\": \"21990232556463\", \"type\": \"Person\"}, ##{\"id\": \"vertex_id\", \"type\": \"vertex_type\"}\n", + " \"print_results\": True,\n", + " \"result_attribute\": \"\",\n", + " \"file_path\": \"\",\n", + " \"display_edges\": False\n", + "}\n", + "\n", + "res = f.runAlgorithm(\n", + " 'tg_bfs', \n", + " params=params,\n", + " templateQuery=True # Set this to True to use template query. Default False.\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "fb976464-906b-4f92-8fba-dcad76e94289", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'v_id': '30786325580605',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'},\n", + " {'v_id': '13194139540951',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'},\n", + " {'v_id': '6597069769055',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'},\n", + " {'v_id': '15393162796423',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'},\n", + " {'v_id': '15393162792715',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'},\n", + " {'v_id': '28587302332123',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'},\n", + " {'v_id': '6597069774914',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'},\n", + " {'v_id': '9079', 'attributes': {'Start.@sum_step': 2}, 'v_type': 'Person'},\n", + " {'v_id': '21990232561273',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'},\n", + " {'v_id': '15393162792433',\n", + " 'attributes': {'Start.@sum_step': 2},\n", + " 'v_type': 'Person'}]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Check result\n", + "res[0]['Start'][:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "cccc25d0-4074-4e87-a1ba-6cb44e682af4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running the algorithm. It might take a minute to install the query if this is the first time it runs.\n", + "Time elapsed: 0.146 seconds\n" + ] + } + ], + "source": [ + "# Rerun the template query and record its run time.\n", + "\n", + "start_time = time.perf_counter()\n", + "res = f.runAlgorithm(\n", + " 'tg_bfs', \n", + " params=params,\n", + " templateQuery=True\n", + ")\n", + "bfs_template_time = time.perf_counter() - start_time\n", + "print(\"Time elapsed: {:.3} seconds\".format(bfs_template_time))" + ] + }, + { + "cell_type": "markdown", + "id": "ec026b5a-b632-47a9-b89d-64ade8d33eb4", + "metadata": {}, + "source": [ + "### Takeaways" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "c77069ac-1e53-42bc-aaea-0ed865baef90", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The template version of PageRank is 47% faster than the non-template version.\n" + ] + } + ], + "source": [ + "print(\n", + " \"The template version of PageRank is {}% faster than the non-template version.\".format(\n", + " int(100*(non_template_time-template_time)/non_template_time)))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "47fa15eb-dd6f-4da3-b548-6dc645f3cb3c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The template and non-template versions of BFS show almost the same performance (0.14555528794880956 v.s. 0.14016598195303231) as this graph is small.\n" + ] + } + ], + "source": [ + "print(\n", + " \"The template and non-template versions of BFS show almost the same performance ({} v.s. {}) as this graph is small.\".format(\n", + " bfs_template_time, bfs_non_template_time))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0c358c8f-ab85-49fb-a7c3-504a526392ac", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "PyTorch", + "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.9.13" + }, + "vscode": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 8f29b2b9c0a328f047898fd7cc2f4b9400d4851a Mon Sep 17 00:00:00 2001 From: Bill Shi Date: Tue, 7 Mar 2023 21:04:04 +0000 Subject: [PATCH 39/62] feat(fraud): add model with non-graph features --- .../fraud_detection/fraud_detection.ipynb | 853 +++++++++++------- 1 file changed, 531 insertions(+), 322 deletions(-) diff --git a/applications/fraud_detection/fraud_detection.ipynb b/applications/fraud_detection/fraud_detection.ipynb index c170611..97f858d 100644 --- a/applications/fraud_detection/fraud_detection.ipynb +++ b/applications/fraud_detection/fraud_detection.ipynb @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "21d25e93-beaa-4b28-aa49-1e96f3f9a667", "metadata": {}, "outputs": [], @@ -87,7 +87,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "abb4d783", "metadata": {}, "outputs": [ @@ -120,14 +120,14 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "35b90386-358d-44e2-988f-9b78d0fd9bbe", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ad73e54483554a5f9559976876091246", + "model_id": "5711692d55b048acbba7ad1676be66fe", "version_major": 2, "version_minor": 0 }, @@ -135,7 +135,7 @@ "CytoscapeWidget(cytoscape_layout={'name': 'circle', 'animate': True, 'padding': 1}, cytoscape_style=[{'selecto…" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -164,7 +164,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "f5d8a995-6d20-4bdc-a985-b68730abc2d7", "metadata": {}, "outputs": [], @@ -182,7 +182,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "b2fc73a9-fc10-494f-9c75-59b0dcc80474", "metadata": {}, "outputs": [ @@ -215,27 +215,27 @@ " \n", " 0\n", " 0x903bb9cd3a276d8f18fa6efed49b9bc52ccf06e5\n", - " 741.66101\n", + " 741.63989\n", " \n", " \n", " 1\n", " 0x47779ea9849c7eec04197b21f9554931b8fcd5f4\n", - " 607.41815\n", + " 607.40997\n", " \n", " \n", " 2\n", " 0xbfa82fbe0e66d8e2b7dcc16328db9ecd70533d13\n", - " 212.12238\n", + " 212.12228\n", " \n", " \n", " 3\n", " 0x3cbd2e6143f057bd49ffb4c7058217a5900c35d3\n", - " 179.57887\n", + " 179.57889\n", " \n", " \n", " 4\n", " 0x5df65e16d6ec1a8090ffa11c8185ad372a8786cd\n", - " 173.81029\n", + " 173.80997\n", " \n", " \n", "\n", @@ -243,14 +243,14 @@ ], "text/plain": [ " Vertex_ID score\n", - "0 0x903bb9cd3a276d8f18fa6efed49b9bc52ccf06e5 741.66101\n", - "1 0x47779ea9849c7eec04197b21f9554931b8fcd5f4 607.41815\n", - "2 0xbfa82fbe0e66d8e2b7dcc16328db9ecd70533d13 212.12238\n", - "3 0x3cbd2e6143f057bd49ffb4c7058217a5900c35d3 179.57887\n", - "4 0x5df65e16d6ec1a8090ffa11c8185ad372a8786cd 173.81029" + "0 0x903bb9cd3a276d8f18fa6efed49b9bc52ccf06e5 741.63989\n", + "1 0x47779ea9849c7eec04197b21f9554931b8fcd5f4 607.40997\n", + "2 0xbfa82fbe0e66d8e2b7dcc16328db9ecd70533d13 212.12228\n", + "3 0x3cbd2e6143f057bd49ffb4c7058217a5900c35d3 179.57889\n", + "4 0x5df65e16d6ec1a8090ffa11c8185ad372a8786cd 173.80997" ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -269,6 +269,96 @@ "pd.json_normalize(results[0]['@@top_scores_heap'])" ] }, + { + "cell_type": "code", + "execution_count": 6, + "id": "134ef93b-0b21-42e3-b995-2c93415c4a52", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Vertex_IDscore
00x3cbd2e6143f057bd49ffb4c7058217a5900c35d3890320.12500
10x9ef89d10d8c77755bfe263903966eebb73f721e8234678.92188
20x89474953d6bc8275b88e331fdf1a92d552563712210692.48438
30xa0bf76c8de60a1089fbb8567b2beeca6ec01ca32138791.56250
40x4121cc82607ebab3f334e067f37fe2709c403bf691240.42969
\n", + "
" + ], + "text/plain": [ + " Vertex_ID score\n", + "0 0x3cbd2e6143f057bd49ffb4c7058217a5900c35d3 890320.12500\n", + "1 0x9ef89d10d8c77755bfe263903966eebb73f721e8 234678.92188\n", + "2 0x89474953d6bc8275b88e331fdf1a92d552563712 210692.48438\n", + "3 0xa0bf76c8de60a1089fbb8567b2beeca6ec01ca32 138791.56250\n", + "4 0x4121cc82607ebab3f334e067f37fe2709c403bf6 91240.42969" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "tg_pagerank_params = {\n", + " \"v_type_set\": [\"Account\"],\n", + " \"e_type_set\": [\"Transaction\"],\n", + " \"reverse_e_type\": \"reverse_Transaction\",\n", + " \"result_attribute\": \"betweenness\",\n", + " \"top_k\":5 \n", + "}\n", + "results = f.runAlgorithm(\"tg_betweenness_cent\", tg_pagerank_params)\n", + "\n", + "pd.json_normalize(results[0]['top_scores'])" + ] + }, { "cell_type": "markdown", "id": "5fb9766e-3304-4d85-b8fa-a9a5327309ce", @@ -279,7 +369,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "8faf664a-2d7a-4246-b67e-aaf9ff213727", "metadata": {}, "outputs": [ @@ -289,7 +379,7 @@ "[{'Status': 'Degrees computed Successfully'}]" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -310,7 +400,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "f0cb6260-6b61-46fe-85de-86e6597fc35f", "metadata": {}, "outputs": [ @@ -320,7 +410,7 @@ "[{'Status': 'Amounts computed successfully'}]" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -341,7 +431,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "id": "12299281-6a94-48f7-a33d-67f88d16c83b", "metadata": {}, "outputs": [ @@ -350,19 +440,18 @@ "text/plain": [ "[{'@@embedding_dim_map': {'default': {'min_dim': 0,\n", " 'max_dim': 128,\n", - " 'weight': 1}}},\n", - " {'sample_verts': []}]" + " 'weight': 1}}}]" ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "params={\"v_type\": [\"Account\"],\n", - " \"e_type\": [\"Transaction\", \"reverse_Transaction\"],\n", - " \"output_v_type\": [\"Account\"],\n", + "params={\"v_type_set\": [\"Account\"],\n", + " \"e_type_set\": [\"Transaction\", \"reverse_Transaction\"],\n", + " \"output_v_type_set\": [\"Account\"],\n", " \"iteration_weights\": \"1,2,4\",\n", " \"beta\": -0.1,\n", " \"embedding_dimension\": 128,\n", @@ -387,7 +476,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "id": "f95353ec-a52b-43f1-b916-4750f544429a", "metadata": {}, "outputs": [ @@ -425,7 +514,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "id": "b7fad407-8ce1-4b0d-b5a2-448d0f861e34", "metadata": {}, "outputs": [], @@ -435,7 +524,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "id": "aded6448-a0e4-432c-9366-6e11d7210a18", "metadata": {}, "outputs": [ @@ -470,7 +559,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 15, "id": "b8cf8c49-17c6-414a-905d-c76a8b6e9fdd", "metadata": {}, "outputs": [], @@ -492,14 +581,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "id": "e0b6895e-78eb-40e3-9e41-8774cf5c58df", "metadata": {}, "outputs": [], "source": [ "train_loader = conn.gds.vertexLoader(\n", " attributes=[\"in_degree\",\"out_degree\",\"send_amount\",\"send_min\",\n", - " \"recv_amount\",\"recv_min\",\"pagerank\", \"is_fraud\", \"embedding\"],\n", + " \"recv_amount\",\"recv_min\",\"pagerank\", \"is_fraud\", \"embedding\", \"betweenness\"],\n", " num_batches=1,\n", " filter_by=\"is_training\",\n", " callback_fn = lambda x: process_embedding(x)\n", @@ -508,14 +597,14 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "id": "41299632-b660-49e6-98a5-f6536733757c", "metadata": {}, "outputs": [], "source": [ "valid_loader = conn.gds.vertexLoader(\n", " attributes=[\"in_degree\",\"out_degree\",\"send_amount\",\"send_min\",\n", - " \"recv_amount\",\"recv_min\",\"pagerank\", \"is_fraud\", \"embedding\"],\n", + " \"recv_amount\",\"recv_min\",\"pagerank\", \"is_fraud\", \"embedding\", \"betweenness\"],\n", " num_batches=1,\n", " filter_by=\"is_validation\",\n", " callback_fn = lambda x: process_embedding(x)\n", @@ -532,7 +621,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "id": "20da4479-e3bd-42af-bff6-77bb14ed9fe3", "metadata": {}, "outputs": [ @@ -566,7 +655,7 @@ " recv_min\n", " pagerank\n", " is_fraud\n", - " emb0\n", + " betweenness\n", " ...\n", " emb118\n", " emb119\n", @@ -583,155 +672,155 @@ " \n", " \n", " 0\n", - " 234881025\n", - " 8\n", " 1\n", - " 0.19912\n", - " 0.19912\n", - " 0.71332\n", - " 0.00426\n", - " 1.051000\n", " 1\n", - " -0.047130\n", + " 1\n", + " 0.51914\n", + " 0.51914\n", + " 0.52000\n", + " 0.5200\n", + " 0.155100\n", + " 1\n", + " 0.0\n", " ...\n", - " 0.045751\n", - " 0.009796\n", - " 0.246114\n", - " 0.135275\n", - " 0.188289\n", - " 0.145758\n", - " 0.163340\n", - " -0.540732\n", - " -0.009876\n", - " 0.114094\n", + " -0.170769\n", + " 0.149965\n", + " -0.003247\n", + " 0.163435\n", + " -0.087337\n", + " -0.247276\n", + " -0.021542\n", + " 0.145283\n", + " 0.089173\n", + " -0.176496\n", " \n", " \n", " 1\n", - " 234881026\n", - " 5\n", - " 2\n", - " 10.69120\n", - " 3.69118\n", - " 9.99248\n", - " 0.50000\n", - " 0.667945\n", + " 3\n", + " 21\n", + " 0\n", + " 0.00000\n", + " 0.00000\n", + " 22.23430\n", + " 0.0000\n", + " 1.000000\n", " 1\n", - " -0.056560\n", + " 0.0\n", " ...\n", - " -0.335258\n", - " -0.067109\n", - " -0.294415\n", - " -0.028373\n", - " -0.181596\n", - " -0.340700\n", - " 0.238586\n", - " -0.199453\n", - " -0.000079\n", - " 0.008715\n", + " 0.131913\n", + " 0.238894\n", + " -0.126640\n", + " -0.011612\n", + " 0.185735\n", + " -0.058437\n", + " 0.097737\n", + " -0.058469\n", + " 0.058980\n", + " 0.178130\n", " \n", " \n", " 2\n", - " 234881027\n", - " 9\n", - " 2\n", - " 10.77360\n", - " 3.77460\n", - " 10.67570\n", - " 0.04306\n", - " 0.985464\n", + " 4\n", + " 1\n", + " 1\n", + " 0.71020\n", + " 0.71020\n", + " 0.71120\n", + " 0.7112\n", + " 0.277500\n", " 1\n", - " 0.174347\n", + " 0.0\n", " ...\n", - " -0.112702\n", - " -0.049264\n", - " 0.064580\n", - " 0.165827\n", - " -0.235902\n", - " -0.225494\n", - " -0.329536\n", - " -0.065534\n", - " -0.223186\n", - " 0.042215\n", + " 0.000000\n", + " 0.253459\n", + " 0.193492\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " -0.253459\n", + " 0.000000\n", + " -0.446950\n", " \n", " \n", " 3\n", - " 234881028\n", - " 10\n", - " 9\n", - " 441.30000\n", - " 0.05000\n", - " 188.48900\n", - " 0.37828\n", - " 0.867988\n", + " 5\n", + " 4\n", + " 1\n", + " 7.68433\n", + " 7.68433\n", + " 7.68519\n", + " 0.5000\n", + " 0.445214\n", " 1\n", - " 0.170441\n", + " 0.0\n", " ...\n", - " 0.166607\n", - " -0.230478\n", - " 0.456073\n", - " 0.023082\n", - " 0.065435\n", - " 0.134760\n", - " -0.182918\n", - " 0.130709\n", - " 0.204439\n", - " 0.003432\n", + " -0.020017\n", + " -0.148870\n", + " -0.232387\n", + " -0.017547\n", + " -0.146013\n", + " -0.057437\n", + " -0.082745\n", + " -0.060825\n", + " -0.006063\n", + " 0.075458\n", " \n", " \n", " 4\n", - " 234881029\n", - " 1\n", - " 1\n", - " 6.99000\n", - " 6.99000\n", - " 7.00000\n", - " 7.00000\n", - " 0.277500\n", + " 7\n", + " 6\n", + " 0\n", + " 0.00000\n", + " 0.00000\n", + " 0.75000\n", + " 0.1000\n", + " 1.000000\n", " 1\n", - " 0.000000\n", + " 0.0\n", " ...\n", - " 0.190411\n", - " 0.190411\n", - " 0.060774\n", + " -0.109982\n", + " -0.219964\n", + " 0.001398\n", + " -0.329947\n", + " 0.219964\n", " 0.000000\n", - " 0.060774\n", + " -0.111380\n", " 0.000000\n", - " -0.190411\n", - " 0.251185\n", + " -0.331344\n", " 0.000000\n", - " -0.251185\n", " \n", " \n", "\n", - "

5 rows × 137 columns

\n", + "

5 rows × 138 columns

\n", "" ], "text/plain": [ - " vid in_degree out_degree send_amount send_min recv_amount \\\n", - "0 234881025 8 1 0.19912 0.19912 0.71332 \n", - "1 234881026 5 2 10.69120 3.69118 9.99248 \n", - "2 234881027 9 2 10.77360 3.77460 10.67570 \n", - "3 234881028 10 9 441.30000 0.05000 188.48900 \n", - "4 234881029 1 1 6.99000 6.99000 7.00000 \n", + " vid in_degree out_degree send_amount send_min recv_amount recv_min \\\n", + "0 1 1 1 0.51914 0.51914 0.52000 0.5200 \n", + "1 3 21 0 0.00000 0.00000 22.23430 0.0000 \n", + "2 4 1 1 0.71020 0.71020 0.71120 0.7112 \n", + "3 5 4 1 7.68433 7.68433 7.68519 0.5000 \n", + "4 7 6 0 0.00000 0.00000 0.75000 0.1000 \n", "\n", - " recv_min pagerank is_fraud emb0 ... emb118 emb119 emb120 \\\n", - "0 0.00426 1.051000 1 -0.047130 ... 0.045751 0.009796 0.246114 \n", - "1 0.50000 0.667945 1 -0.056560 ... -0.335258 -0.067109 -0.294415 \n", - "2 0.04306 0.985464 1 0.174347 ... -0.112702 -0.049264 0.064580 \n", - "3 0.37828 0.867988 1 0.170441 ... 0.166607 -0.230478 0.456073 \n", - "4 7.00000 0.277500 1 0.000000 ... 0.190411 0.190411 0.060774 \n", + " pagerank is_fraud betweenness ... emb118 emb119 emb120 \\\n", + "0 0.155100 1 0.0 ... -0.170769 0.149965 -0.003247 \n", + "1 1.000000 1 0.0 ... 0.131913 0.238894 -0.126640 \n", + "2 0.277500 1 0.0 ... 0.000000 0.253459 0.193492 \n", + "3 0.445214 1 0.0 ... -0.020017 -0.148870 -0.232387 \n", + "4 1.000000 1 0.0 ... -0.109982 -0.219964 0.001398 \n", "\n", " emb121 emb122 emb123 emb124 emb125 emb126 emb127 \n", - "0 0.135275 0.188289 0.145758 0.163340 -0.540732 -0.009876 0.114094 \n", - "1 -0.028373 -0.181596 -0.340700 0.238586 -0.199453 -0.000079 0.008715 \n", - "2 0.165827 -0.235902 -0.225494 -0.329536 -0.065534 -0.223186 0.042215 \n", - "3 0.023082 0.065435 0.134760 -0.182918 0.130709 0.204439 0.003432 \n", - "4 0.000000 0.060774 0.000000 -0.190411 0.251185 0.000000 -0.251185 \n", + "0 0.163435 -0.087337 -0.247276 -0.021542 0.145283 0.089173 -0.176496 \n", + "1 -0.011612 0.185735 -0.058437 0.097737 -0.058469 0.058980 0.178130 \n", + "2 0.000000 0.000000 0.000000 0.000000 -0.253459 0.000000 -0.446950 \n", + "3 -0.017547 -0.146013 -0.057437 -0.082745 -0.060825 -0.006063 0.075458 \n", + "4 -0.329947 0.219964 0.000000 -0.111380 0.000000 -0.331344 0.000000 \n", "\n", - "[5 rows x 137 columns]" + "[5 rows x 138 columns]" ] }, - "execution_count": 16, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -743,7 +832,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "id": "cb619e88-3c61-4d51-9da8-21e223dbb8ba", "metadata": {}, "outputs": [ @@ -777,7 +866,7 @@ " recv_min\n", " pagerank\n", " is_fraud\n", - " emb0\n", + " betweenness\n", " ...\n", " emb118\n", " emb119\n", @@ -794,155 +883,155 @@ " \n", " \n", " 0\n", - " 234881024\n", - " 1\n", + " 0\n", " 1\n", - " 0.51914\n", - " 0.51914\n", - " 0.52000\n", - " 0.52000\n", - " 0.155100\n", + " 0\n", + " 0.00000\n", + " 0.00000\n", + " 0.38852\n", + " 0.38852\n", + " 1.000000\n", " 1\n", - " -0.107753\n", + " 0.000000\n", " ...\n", - " -0.374269\n", - " -0.144818\n", - " -0.134207\n", - " -0.160478\n", - " -0.024463\n", - " 0.171150\n", - " 0.311766\n", - " 0.307944\n", - " -0.247571\n", - " 0.189567\n", + " 0.058842\n", + " -0.079308\n", + " 0.016719\n", + " 0.073622\n", + " -0.116555\n", + " -0.042266\n", + " -0.049522\n", + " -0.186541\n", + " 0.060647\n", + " -0.010090\n", " \n", " \n", " 1\n", - " 234881033\n", + " 2\n", " 9\n", - " 6\n", - " 31.68790\n", - " 0.07000\n", - " 24.90020\n", - " 0.07000\n", - " 1.371310\n", " 1\n", - " -0.125151\n", + " 4.17173\n", + " 4.17173\n", + " 4.17221\n", + " 0.00895\n", + " 1.279060\n", + " 1\n", + " 0.000000\n", " ...\n", - " -0.090309\n", - " 0.323673\n", - " 0.096190\n", - " -0.175554\n", - " -0.273964\n", - " 0.237006\n", - " -0.245389\n", - " -0.067310\n", - " -0.088549\n", - " 0.056987\n", + " 0.027117\n", + " -0.070538\n", + " 0.075439\n", + " -0.041690\n", + " -0.003316\n", + " 0.236107\n", + " 0.293033\n", + " -0.065921\n", + " 0.305077\n", + " -0.066108\n", " \n", " \n", " 2\n", - " 234881039\n", - " 8\n", - " 1\n", - " 39.30500\n", - " 39.30500\n", - " 39.30540\n", - " 0.08309\n", - " 1.170000\n", + " 6\n", + " 54\n", + " 109\n", + " 168.19900\n", + " 0.00000\n", + " 4.58864\n", + " 0.00252\n", + " 7.708460\n", " 1\n", - " -0.281923\n", + " 77730.400000\n", " ...\n", - " 0.000000\n", - " -0.281923\n", - " -0.501023\n", - " -0.219100\n", - " -0.375897\n", - " -0.313074\n", - " -0.187948\n", - " 0.093974\n", - " 0.093974\n", - " -0.281923\n", + " -0.195414\n", + " 0.228841\n", + " 0.014891\n", + " -0.003736\n", + " -0.172676\n", + " -0.301267\n", + " 0.281467\n", + " -0.179643\n", + " 0.250067\n", + " -0.106176\n", " \n", " \n", " 3\n", - " 234881041\n", - " 4\n", - " 1\n", - " 7.68433\n", - " 7.68433\n", - " 7.68519\n", - " 0.50000\n", - " 0.445214\n", + " 11\n", + " 8\n", + " 5\n", + " 3.56824\n", + " 0.01000\n", + " 4.13316\n", + " 0.02000\n", + " 0.899117\n", " 1\n", - " 0.174309\n", + " 0.000477\n", " ...\n", - " -0.046449\n", - " -0.021162\n", - " 0.058503\n", - " -0.172840\n", - " -0.238037\n", - " 0.183829\n", - " -0.292503\n", - " -0.119214\n", - " 0.102231\n", - " 0.217926\n", + " -0.078731\n", + " 0.107357\n", + " 0.033681\n", + " 0.166547\n", + " 0.234418\n", + " -0.050931\n", + " -0.054243\n", + " -0.399332\n", + " 0.038920\n", + " -0.157760\n", " \n", " \n", " 4\n", - " 234881043\n", - " 2\n", - " 0\n", - " 0.00000\n", - " 0.00000\n", - " 0.00000\n", - " 0.00000\n", - " 1.000000\n", + " 13\n", + " 12\n", + " 10\n", + " 14.82330\n", + " 0.06000\n", + " 14.83130\n", + " 0.02000\n", + " 1.144500\n", " 1\n", - " 0.014363\n", + " 0.000000\n", " ...\n", - " 0.448090\n", - " 0.179457\n", - " 0.054849\n", - " 0.184936\n", - " 0.061575\n", - " -0.015394\n", - " 0.154578\n", - " 0.014534\n", - " -0.151962\n", - " 0.154064\n", + " -0.059028\n", + " -0.021422\n", + " -0.018799\n", + " -0.076610\n", + " 0.044715\n", + " 0.018447\n", + " 0.408290\n", + " -0.118205\n", + " -0.066336\n", + " 0.201289\n", " \n", " \n", "\n", - "

5 rows × 137 columns

\n", + "

5 rows × 138 columns

\n", "" ], "text/plain": [ - " vid in_degree out_degree send_amount send_min recv_amount \\\n", - "0 234881024 1 1 0.51914 0.51914 0.52000 \n", - "1 234881033 9 6 31.68790 0.07000 24.90020 \n", - "2 234881039 8 1 39.30500 39.30500 39.30540 \n", - "3 234881041 4 1 7.68433 7.68433 7.68519 \n", - "4 234881043 2 0 0.00000 0.00000 0.00000 \n", + " vid in_degree out_degree send_amount send_min recv_amount recv_min \\\n", + "0 0 1 0 0.00000 0.00000 0.38852 0.38852 \n", + "1 2 9 1 4.17173 4.17173 4.17221 0.00895 \n", + "2 6 54 109 168.19900 0.00000 4.58864 0.00252 \n", + "3 11 8 5 3.56824 0.01000 4.13316 0.02000 \n", + "4 13 12 10 14.82330 0.06000 14.83130 0.02000 \n", "\n", - " recv_min pagerank is_fraud emb0 ... emb118 emb119 emb120 \\\n", - "0 0.52000 0.155100 1 -0.107753 ... -0.374269 -0.144818 -0.134207 \n", - "1 0.07000 1.371310 1 -0.125151 ... -0.090309 0.323673 0.096190 \n", - "2 0.08309 1.170000 1 -0.281923 ... 0.000000 -0.281923 -0.501023 \n", - "3 0.50000 0.445214 1 0.174309 ... -0.046449 -0.021162 0.058503 \n", - "4 0.00000 1.000000 1 0.014363 ... 0.448090 0.179457 0.054849 \n", + " pagerank is_fraud betweenness ... emb118 emb119 emb120 \\\n", + "0 1.000000 1 0.000000 ... 0.058842 -0.079308 0.016719 \n", + "1 1.279060 1 0.000000 ... 0.027117 -0.070538 0.075439 \n", + "2 7.708460 1 77730.400000 ... -0.195414 0.228841 0.014891 \n", + "3 0.899117 1 0.000477 ... -0.078731 0.107357 0.033681 \n", + "4 1.144500 1 0.000000 ... -0.059028 -0.021422 -0.018799 \n", "\n", " emb121 emb122 emb123 emb124 emb125 emb126 emb127 \n", - "0 -0.160478 -0.024463 0.171150 0.311766 0.307944 -0.247571 0.189567 \n", - "1 -0.175554 -0.273964 0.237006 -0.245389 -0.067310 -0.088549 0.056987 \n", - "2 -0.219100 -0.375897 -0.313074 -0.187948 0.093974 0.093974 -0.281923 \n", - "3 -0.172840 -0.238037 0.183829 -0.292503 -0.119214 0.102231 0.217926 \n", - "4 0.184936 0.061575 -0.015394 0.154578 0.014534 -0.151962 0.154064 \n", + "0 0.073622 -0.116555 -0.042266 -0.049522 -0.186541 0.060647 -0.010090 \n", + "1 -0.041690 -0.003316 0.236107 0.293033 -0.065921 0.305077 -0.066108 \n", + "2 -0.003736 -0.172676 -0.301267 0.281467 -0.179643 0.250067 -0.106176 \n", + "3 0.166547 0.234418 -0.050931 -0.054243 -0.399332 0.038920 -0.157760 \n", + "4 -0.076610 0.044715 0.018447 0.408290 -0.118205 -0.066336 0.201289 \n", "\n", - "[5 rows x 137 columns]" + "[5 rows x 138 columns]" ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -962,7 +1051,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "id": "62e65f88-fd43-4206-b38e-386a075e107a", "metadata": {}, "outputs": [], @@ -977,16 +1066,16 @@ }, { "cell_type": "markdown", - "id": "a191f817-3fd0-4b22-8b43-d1cc2789bcf4", + "id": "80cf477e-e44d-4a26-8b47-daa82c2cb512", "metadata": {}, "source": [ - "### Train xgboost model - No Embeddings" + "### Train xgboost model - No graph feature" ] }, { "cell_type": "code", - "execution_count": 19, - "id": "1d921d2c-af32-40ac-9a5c-3d6d1a83ad53", + "execution_count": 21, + "id": "6c05e3a3-9444-417a-87fe-dc86cb7551c7", "metadata": {}, "outputs": [ { @@ -1025,16 +1114,127 @@ " nthread=-1, num_parallel_tree=1, predictor='auto', ...)" ] }, - "execution_count": 19, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "features = [\"in_degree\",\"out_degree\", \"send_amount\",\"send_min\", \n", + " \"recv_amount\",\"recv_min\"]\n", + "# Train model\n", + "tree_model.fit(train_data[features], train_data[\"is_fraud\"])" + ] + }, + { + "cell_type": "markdown", + "id": "19e54e75-0663-47a6-b77f-e0572f4aff5b", + "metadata": {}, + "source": [ + "Evaluate model" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "54257430-34e8-4b41-9ed9-ab827a4862a6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy 0.7474, Precision 0.1217, Recall 1.0000\n" + ] + } + ], + "source": [ + "from pyTigerGraph.gds.metrics import Accuracy, BinaryPrecision, BinaryRecall\n", + "from collections import defaultdict\n", + "\n", + "# Get predictions\n", + "pred = tree_model.predict(valid_data[features].values)\n", + "# Get prediction scores for later use\n", + "yhat_tree = tree_model.predict_proba(valid_data[features].values)[:,1]\n", + "ytrue_tree = valid_data[\"is_fraud\"].values\n", + "\n", + "metrics = defaultdict(list)\n", + "m = Accuracy()\n", + "m.update(pred, ytrue_tree)\n", + "metrics[\"acc_tree_base\"].append(m.value)\n", + "\n", + "m = BinaryPrecision()\n", + "m.update(pred, ytrue_tree)\n", + "metrics[\"prec_tree_base\"].append(m.value)\n", + "\n", + "m = BinaryRecall()\n", + "m.update(pred, ytrue_tree)\n", + "metrics[\"rec_tree_base\"].append(m.value)\n", + "\n", + "print(\"Accuracy {:.4f}, Precision {:.4f}, Recall {:.4f}\".format(\n", + " metrics[\"acc_tree_base\"][-1], metrics[\"prec_tree_base\"][-1], metrics[\"rec_tree_base\"][-1]))" + ] + }, + { + "cell_type": "markdown", + "id": "a191f817-3fd0-4b22-8b43-d1cc2789bcf4", + "metadata": {}, + "source": [ + "### Train xgboost model - Graph feature" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "1d921d2c-af32-40ac-9a5c-3d6d1a83ad53", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n",
+       "              colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,\n",
+       "              early_stopping_rounds=None, enable_categorical=False,\n",
+       "              eval_metric=None, feature_types=None, gamma=10, gpu_id=-1,\n",
+       "              grow_policy='depthwise', importance_type=None,\n",
+       "              interaction_constraints='', learning_rate=0.1, max_bin=256,\n",
+       "              max_cat_threshold=64, max_cat_to_onehot=4, max_delta_step=2,\n",
+       "              max_depth=2, max_leaves=0, min_child_weight=80, missing=nan,\n",
+       "              monotone_constraints='()', n_estimators=100, n_jobs=-1,\n",
+       "              nthread=-1, num_parallel_tree=1, predictor='auto', ...)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n", + " colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,\n", + " early_stopping_rounds=None, enable_categorical=False,\n", + " eval_metric=None, feature_types=None, gamma=10, gpu_id=-1,\n", + " grow_policy='depthwise', importance_type=None,\n", + " interaction_constraints='', learning_rate=0.1, max_bin=256,\n", + " max_cat_threshold=64, max_cat_to_onehot=4, max_delta_step=2,\n", + " max_depth=2, max_leaves=0, min_child_weight=80, missing=nan,\n", + " monotone_constraints='()', n_estimators=100, n_jobs=-1,\n", + " nthread=-1, num_parallel_tree=1, predictor='auto', ...)" + ] + }, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features = [\"in_degree\",\"out_degree\",\"send_amount\",\"send_min\",\n", - " \"recv_amount\",\"recv_min\",\"pagerank\"]\n", + " \"recv_amount\",\"recv_min\",\"pagerank\",\"betweenness\"]\n", "# Train model\n", - "tree_model.fit(train_data[features], train_data[\"is_fraud\"])\n" + "tree_model.fit(train_data[features], train_data[\"is_fraud\"])" ] }, { @@ -1042,12 +1242,12 @@ "id": "a9b9ceec-7220-4c34-8ca1-0ce7c9af8e22", "metadata": {}, "source": [ - "### Evaluate model" + "Evaluate model" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 24, "id": "9f4c697b-da4a-4d20-a3a4-684b8cd4bfd4", "metadata": {}, "outputs": [ @@ -1055,7 +1255,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Accuracy 0.7567, Precision 0.1271, Recall 1.0000\n" + "Accuracy 0.7770, Precision 0.1356, Recall 1.0000\n" ] } ], @@ -1069,21 +1269,20 @@ "yhat_tree = tree_model.predict_proba(valid_data[features].values)[:,1]\n", "ytrue_tree = valid_data[\"is_fraud\"].values\n", "\n", - "metrics = defaultdict(list)\n", "m = Accuracy()\n", "m.update(pred, ytrue_tree)\n", - "metrics[\"acc_tree\"].append(m.value)\n", + "metrics[\"acc_tree_graph\"].append(m.value)\n", "\n", "m = BinaryPrecision()\n", "m.update(pred, ytrue_tree)\n", - "metrics[\"prec_tree\"].append(m.value)\n", + "metrics[\"prec_tree_graph\"].append(m.value)\n", "\n", "m = BinaryRecall()\n", "m.update(pred, ytrue_tree)\n", - "metrics[\"rec_tree\"].append(m.value)\n", + "metrics[\"rec_tree_graph\"].append(m.value)\n", "\n", "print(\"Accuracy {:.4f}, Precision {:.4f}, Recall {:.4f}\".format(\n", - " metrics[\"acc_tree\"][-1], metrics[\"prec_tree\"][-1], metrics[\"rec_tree\"][-1]))" + " metrics[\"acc_tree_graph\"][-1], metrics[\"prec_tree_graph\"][-1], metrics[\"rec_tree_graph\"][-1]))" ] }, { @@ -1091,19 +1290,19 @@ "id": "92ae98fc-ab8b-4f46-b464-bdd93071f98f", "metadata": {}, "source": [ - "### Add FastRP Embeddings to XGBoost Model" + "### Train xgboost model - FastRP Embeddings " ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 25, "id": "cfa17370-c74d-4be1-9f6a-49a2469197da", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n",
+       "
XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n",
        "              colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,\n",
        "              early_stopping_rounds=None, enable_categorical=False,\n",
        "              eval_metric=None, feature_types=None, gamma=10, gpu_id=-1,\n",
@@ -1112,7 +1311,7 @@
        "              max_cat_threshold=64, max_cat_to_onehot=4, max_delta_step=2,\n",
        "              max_depth=2, max_leaves=0, min_child_weight=80, missing=nan,\n",
        "              monotone_constraints='()', n_estimators=100, n_jobs=-1,\n",
-       "              nthread=-1, num_parallel_tree=1, predictor='auto', ...)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.