{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## ADM1F: Execution time \n", "\n", "Here we calculate the execution time for a sample of size 100. We perturb a certain number of elements in one of the inputs files (e.g. influent.dat, ic.dat, params.dat) by some 'percent' value. We sample perturbed elements 100 times in a non-repeatable fashion using latin hypercube 'lhs' or 'uniform' sampling methods. Then we calculate the execution time 100 times. Note, if you do not have any of the packages used in this script, use `pip install package_name`.\n", "\n", "Authors: Wenjuan Zhang and Elchin Jafarov" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import adm1f_utils as adm1fu\n", "import os\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# navigate to simulations folder\n", "os.chdir('../../simulations')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1.** Let's vary elements of the influent.dat" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "#Set the path to the ADM1F executable\n", "ADM1F_EXE = '/Users/elchin/project/ADM1F_WM/build/adm1f'\n", "\n", "# Set the value of percentage and sample size for lhs\n", "percent = 0.1 # NOTE: for params percent should be <= 0.05 \n", "sample_size = 100\n", "variable = 'influent' # influent/params/ic\n", "method = 'lhs' #'uniform' or 'lhs'" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#use help command to learn more about create_a_sample_matrix function\n", "#help(adm1fu.create_a_sample_matrix)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saves a sampling matrix [sample_size,array_size] into var_influent.csv\n", "sample_size,array_size: (100, 11)\n", "Each column of the matrix corresponds to a variable perturbed 100 times around its original value \n", "var_influent.csv SAVED!\n", "\n", "Number of elements participated in the sampling: 11\n" ] } ], "source": [ "index=adm1fu.create_a_sample_matrix(variable,method,percent,sample_size)\n", "print ()\n", "print ('Number of elements participated in the sampling:',len(index))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "All 100 runs were successfully computed\n", "outputs_influent.csv SAVED!\n" ] } ], "source": [ "exe_time=adm1fu.adm1f_output_sampling(ADM1F_EXE,variable,index)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Note:** Depending on the computer system configuration, the computational time might vary. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cumulative time: 23.97 seconds\n", "mean time: 0.24 seconds\n", "min time: 0.16 seconds\n", "max time: 0.34 seconds\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_exec_time(exe_time):\n", " plt.plot(exe_time,'*')\n", " plt.axhline(exe_time.mean(),linestyle='--', alpha=0.6,color='green')\n", " plt.xlabel('sample size',fontsize=14)\n", " plt.ylabel('Time [secs]',fontsize=14)\n", " plt.legend(['exec time','mean'])\n", " print('cumulative time:',round(exe_time.sum(),2),'seconds',)\n", " print('mean time:',round(exe_time.mean(),2),'seconds')\n", " print('min time:',round(exe_time.min(),2),'seconds')\n", " print('max time:',round(exe_time.max(),2),'seconds')\n", " ax = plt.gca()\n", " ax.tick_params(axis = 'both', which = 'major', labelsize = 14)\n", "\n", "plot_exec_time(exe_time)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.** Let's vary the param.dat elements and compute the execution time." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Set the value of percentage and sample size for lhs\n", "percent = 0.05 # NOTE: for params percent should be <= 0.05 \n", "sample_size = 100\n", "variable = 'params' # influent/params/ic\n", "method = 'lhs' #'uniform' or 'lhs'" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saves a sampling matrix [sample_size,array_size] into var_params.csv\n", "sample_size,array_size: (100, 92)\n", "Each column of the matrix corresponds to a variable perturbed 100 times around its original value \n", "var_params.csv SAVED!\n", "\n", "Number of elements participated in the sampling: 92\n" ] } ], "source": [ "index=adm1fu.create_a_sample_matrix(variable,method,percent,sample_size)\n", "print ()\n", "print ('Number of elements participated in the sampling:',len(index))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "All 100 runs were successfully computed\n", "outputs_params.csv SAVED!\n" ] } ], "source": [ "exe_time=adm1fu.adm1f_output_sampling(ADM1F_EXE,variable,index)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cumulative time: 20.32 seconds\n", "mean time: 0.2 seconds\n", "min time: 0.0 seconds\n", "max time: 0.34 seconds\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEOCAYAAAB1g0unAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAr+ElEQVR4nO3de5xVdb3/8ddnhmFGBT2KXEMEU1FucRngKJp4NzuZlOlJNM1DQqTlz3uF/qwos7SToCZmPLyQ5dGORhl5K29A4hDeEIWUAclkRhBxkBmGmc/5Y+0Z9+zZe2btPfs+7+fjsR/MrMte3+9izfqs9b2auyMiIhJGSa4TICIihUNBQ0REQlPQEBGR0BQ0REQkNAUNEREJrUeuE5Ap+++/vw8dOjTXyRARKSgrV658z937JlpftEFj6NChVFVV5ToZIiIFxcw2dLRexVMiIhKagoaIiISmoCEiIqEVbZ2GiBSXxsZGNm3aRH19fa6TUhQqKioYPHgwZWVlSe2noCEiBWHTpk307t2boUOHYma5Tk5Bc3e2bNnCpk2bGDZsWFL7qngqRTXb6zlzwXJqPtRTj0g21NfX06dPHwWMNDAz+vTpk9Jbm4JGiuY9uY4Xqrcy74l1uU6KSLehgJE+qZ5LFU8laficJTTsbm79fdHzG1n0/EbKe5TwxtzP5DBlIiKZpzeNJD175bGcNnYQFWXBqasoK+HzYwfx7FXH5jhlIlIs7rrrLt55553W32fMmMFrr72WwxR9TEEjSf32rqB3eQ8adjdT3qOEht3N9C7vQb/eFblOmojEKNS6x9igceeddzJixIgcpuhjChopeK+ugemTD+Sh2VOYPvlAausacp0kEYkj3XWPixYtYtKkSYwdO5aZM2fS1NTECy+8wJgxY6ivr2fHjh2MHDmSV199lR07dnDBBRcwadIkxo0bx+9//3sAmpqauPzyyxk1ahRjxoxh/vz5bY7x4IMPUlVVxfTp0xk7diw7d+5k6tSprcMi9erViyuuuIKRI0dywgknsGLFCqZOncpBBx3E4sWLW49xxRVXMHHiRMaMGcOCBQvSkn9QnUZKFpxb2frz3NNH5TAlIhJPJuoe16xZw/3338/SpUspKytj9uzZ/PrXv+YrX/kKp512GnPmzGHnzp2cc845jBo1iu985zscd9xxLFy4kG3btjFp0iROOOEE7rnnHqqrq3nxxRfp0aMHW7dubXOcM844g1tuuYUbb7yRysrKdunYsWMHxx13HD/96U+ZNm0ac+bM4fHHH+e1117jvPPO47TTTuNXv/oV++yzDy+88AINDQ1MmTKFk046KenmtfEoaIhI0Xn2ymOZ+6c1PLb6Xeobm6koK+HkkQP47mcPT/k7n3zySVauXMnEiRMB2LlzJ/369QPg2muvZeLEiVRUVDBv3jwAHnvsMRYvXsyNN94IBE2GN27cyBNPPMGsWbPo0SO4/e63335JpaNnz56ccsopAIwePZry8nLKysoYPXo01dXVrcd++eWXefDBBwH44IMPWLdunYKGiEg8mah7dHfOO+88rr/++nbrtmzZQl1dHY2NjdTX17PXXnvh7vzud79j+PDhXclKO2VlZa3NZUtKSigvL2/9effu3a1pnT9/PieffHJajw2q0xCRIpXuusfjjz+eBx98kJqaGgC2bt3Khg3BKOIzZ87kBz/4AdOnT+eqq64C4OSTT2b+/Pm4OwCrVq0C4MQTT2TBggWtN/jY4imA3r178+GHH6ac1pNPPplf/OIXNDY2ArB27Vp27NiR8vdF05uGiBSldNc9jhgxgrlz53LSSSfR3NxMWVkZt956K08//TRlZWWcffbZNDU1ceSRR/KXv/yFa665hksuuYQxY8bQ3NzMsGHD+OMf/8iMGTNYu3YtY8aMoaysjK997WtcdNFFbY51/vnnM2vWLPbYYw+WL1+edFpnzJhBdXU148ePx93p27cvDz/8cJfPAYC1RMFiU1lZ6emehKlmez0X/WYVt5w9Tk1sRbJszZo1HH546nUS0l68c2pmK929fQ18hIqnkqChQ0Sku1PxVAgaOkREJKA3jRA0dIiISEBBIwQNHSIiElDxVEgtzffOnjSE+1ZspLbAxrIREUkHBY2QNHSIiIiKp0REJAkKGiIiEpqChohISNXV1Rx22GGcf/75HHrooUyfPp0nnniCKVOmcMghh7BixYqEQ6JXV1dz9NFHM378eMaPH8+yZcsAeOqpp5g6dSpnnHEGhx12GNOnTyefO12rTkNECtJNy25qt2zCoAlMHTqVXU27mP/8/HbrjzjgCI484EjqdtWxoKrtHBOXHXlZqOP+4x//4IEHHmDhwoVMnDiR++67j+eee47Fixfzox/9iBEjRsQdEr1fv348/vjjVFRUsG7d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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_exec_time(exe_time)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 2 }