{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# DiscRates class\n", "\n", "This class contains the discount rates for every year and discounts given values. Its attributes are:\n", "\n", " * tag (Tag): information about the source data\n", " * years (np.array): years\n", " * rates (np.array): discount rates for each year (between 0 and 1)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2019-05-15 07:50:11,301 - climada - DEBUG - Loading default config file: /Users/aznarsig/Documents/Python/climada_python/climada/conf/defaults.conf\n", "Help on class DiscRates in module climada.entity.disc_rates.base:\n", "\n", "class DiscRates(builtins.object)\n", " | Defines discount rates and basic methods. Loads from\n", " | files with format defined in FILE_EXT.\n", " | \n", " | Attributes:\n", " | tag (Tag): information about the source data\n", " | years (np.array): years\n", " | rates (np.array): discount rates for each year (between 0 and 1)\n", " | \n", " | Methods defined here:\n", " | \n", " | __init__(self)\n", " | Empty initialization.\n", " | \n", " | Examples:\n", " | Fill discount rates with values and check consistency data:\n", " | \n", " | >>> disc_rates = DiscRates()\n", " | >>> disc_rates.years = np.array([2000, 2001])\n", " | >>> disc_rates.rates = np.array([0.02, 0.02])\n", " | >>> disc_rates.check()\n", " | \n", " | Read discount rates from year_2050.mat and checks consistency data.\n", " | \n", " | >>> disc_rates = DiscRates(ENT_TEMPLATE_XLS)\n", " | \n", " | append(self, disc_rates)\n", " | Check and append discount rates to current DiscRates. Overwrite\n", " | discount rate if same year.\n", " | \n", " | Parameters:\n", " | disc_rates (DiscRates): DiscRates instance to append\n", " | \n", " | Raises:\n", " | ValueError\n", " | \n", " | check(self)\n", " | Check attributes consistency.\n", " | \n", " | Raises:\n", " | ValueError\n", " | \n", " | clear(self)\n", " | Reinitialize attributes.\n", " | \n", " | net_present_value(self, ini_year, end_year, val_years)\n", " | Compute net present value between present year and future year.\n", " | \n", " | Parameters:\n", " | ini_year (float): initial year\n", " | end_year (float): end year\n", " | val_years (np.array): cash flow at each year btw ini_year and\n", " | end_year (both included)\n", " | Returns:\n", " | float\n", " | \n", " | plot(self)\n", " | Plot discount rates per year.\n", " | \n", " | read_excel(self, file_name, description='', var_names={'sheet_name': 'discount', 'col_name': {'year': 'year', 'disc': 'discount_rate'}})\n", " | Read excel file following template and store variables.\n", " | \n", " | Parameters:\n", " | file_name (str): absolute file name\n", " | description (str, optional): description of the data\n", " | var_names (dict, optional): name of the variables in the file\n", " | \n", " | read_mat(self, file_name, description='', var_names={'sup_field_name': 'entity', 'field_name': 'discount', 'var_name': {'year': 'year', 'disc': 'discount_rate'}})\n", " | Read MATLAB file generated with previous MATLAB CLIMADA version.\n", " | \n", " | Parameters:\n", " | file_name (str): absolute file name\n", " | description (str, optional): description of the data\n", " | var_names (dict, optional): name of the variables in the file\n", " | \n", " | select(self, year_range)\n", " | Select discount rates in given years.\n", " | \n", " | Parameters:\n", " | year_range (np.array): continuous sequence of selected years.\n", " | \n", " | Returns:\n", " | DiscRates\n", " | \n", " | write_excel(self, file_name, var_names={'sheet_name': 'discount', 'col_name': {'year': 'year', 'disc': 'discount_rate'}})\n", " | Write excel file following template.\n", " | \n", " | Parameters:\n", " | file_name (str): absolute file name to write\n", " | var_names (dict, optional): name of the variables in the file\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data descriptors defined here:\n", " | \n", " | __dict__\n", " | dictionary for instance variables (if defined)\n", " | \n", " | __weakref__\n", " | list of weak references to the object (if defined)\n", "\n" ] } ], "source": [ "from climada.entity import DiscRates\n", "help(DiscRates)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An example of use:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "net present value: 1.01099e+08\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAARYAAAEjCAYAAAD3+i5RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XmYXGWZ/vHvnaQRSAJhCcq+CDgiI4JhEzCggsAPVBxQFBERdXRghAEVcMONGcXR3wwuA17iMgooalRAUNGkkR0SDBDZAiRhCRgBSUIQ0p1+5o9zylQ61VWnu8/W3ffnuurqqlPvOf3UW9VPv+ecOu+jiMDMLE/jqg7AzEYfJxYzy50Ti5nlzonFzHLnxGJmuXNiMbPcObGMUpIukPSpquOwscmJZQSStFDS3yQtl/SMpBslfVDS39/PiPhgRHy+yjgHksb/hpy32S3pfXlu04bOiWXkOjIiJgPbAl8EzgQuqjakYkiaUHUMNjhOLCNcRCyNiMuBtwMnSNoVQNL3JH0hvb+ppCvT0c3Tkq5rjG4kbS1phqS/SHpK0tfT5eMkfVLSIklLJP2vpA3T5w6U9GhzHM2jEEmfkXRZus5ySX+SNC197gfANsAVkp6V9LH+r6mxfUlnSnoC+K6kjdLX8BdJf03vb5W2Pxc4APh6us3Ga/gHSdekr/k+SW9r+h2HS7o7je8xSR/J8W0Z85xYRomIuBV4lOQPrL8z0uemAi8GPg6EpPHAlcAiYDtgS+BH6TrvSW8HATsAk4CvDyKkN6XbmgJc3lg3Io4HHiYZcU2KiPMGWP8lwMYkI7IPkHxWv5s+3gb4W9M2PwFcB5ySbvMUSROBa4BLgM2AdwDflPSKdPsXAf+cjvp2BWYO4rVZB04so8tikj/G/nqAzYFtI6InIq6L5CKxvYAtgI9GxIqIeD4irk/XOQ74akQ8FBHPAmcDxw5it+T6iLgqIlYBPwB2G+Rr6QPOiYgXIuJvEfFURPwsIp6LiOXAucD0NusfASyMiO9GRG9E3A78DDg6fb4H2EXSBhHx1/R5y4kTy+iyJfB0i+VfBh4AfivpIUlnpcu3BhZFRG+LdbYgGck0LAImkIx4snii6f5zwLqDPFbyl4h4vvFA0vqSLkx3zZYBfwCmpKOuVrYF9k53/56R9AxJsnxJ+vw/AYcDiyRdK2nfQcRmHfig2CghaU+SxHJ9/+fS//BnAGekuwKzJN0GPAJsI2lCi+SymOSPs2EboBf4M0nSWb/pd48n2c3KKssl9f3bnAG8DNg7Ip6Q9Crgj4AGaP8IcG1EHNxy4xG3AW+W1AWcAlxGkmgtBx6xjHCSNpB0BMnxjB9GxF0t2hwhaUdJApYBq9LbrcDjwBclTZS0rqT90tUuBf5N0vaSJgH/Dvw4TUD3k4xA/l/6h/lJ4EWDCPvPJMdtBmMyyXGVZyRtDJzTYZtXAjtLOl5SV3rbU9LLJa0j6ThJG0ZED6v7xHLixDJyXSFpOcl/5k8AXwVOHKDtTsDvgGeBm4BvRkR3evzjSGBHkgOqj5KcXQL4DsmxkT8AC4DngX+F5EwU8C/At4HHgBXpuln9B/DJdBcl69mY/wLWA54EbgZ+3e/5/waOTs8YnZ+O0g4BjiUZfT0BfInVCfB4YGG6W/VB4F2DiN86kCd6MrO8ecRiZrlzYjGz3DmxmFnunFjMLHdOLGaWOycWM8udE4uZ5c6Jxcxy58RiZrlzYjGz3DmxmFnunFjMLHdOLGaWOycWM8udE4uZ5c6Jxcxy58RiZrkbcZNpT5kyJXbccceqw1jLihUrmDhxYtVhrKGOMUE943JMnc2ZM+fJiMg2aXpEjKjbzjvvHHU0a9asqkNYSx1jiqhnXI6pM2B2ZPw79a6QmeXOicXMcufEYma5c2Ixs9w5sZhZ7pxYzCx3TixmlrsR9wU5s8F64QU4/3xYvnzgNgsXbsfMmeXFtOGGcOqpMGGU/gWO0pdlttptt8HHPpbclwZqtW1Z4dAolz59OkybVtqvLZV3hWzU6+lJfs6aBX19rW8zZ1474HN53666Komnt7e6PimaE4uNen19yc9xNfm0N+JoxDUa1aSrzYrjxFK+mnS1WXGcWMpXk642K44TS/lq0tVmxXFiKV9NutqsOE4s5atJV5sVx4mlfDXparPiNL6QVrfE0ohrNCqsqyWtK+lWSXdI+pOkz7Zpe7SkkDRKv4doVfKIpXxFfqX/BeB1EfGspC7geklXR8TNzY0kTQY+DNxSYCw2hjmxlK+wrk7n3302fdiV3loN/j4PnAc8X1QsNrY5sZSv0IsQJY0H5gA7At+IiFv6Pb87sHVEXCnpI2228wHgAwBTp06lu7u7uKCH6Nlnn61dXHWMCcqPa968zYBdmD37VpYsea7ymObPnwRM44477mLy5KcGbFfX9y+TrNP5D+cGTAFmAbs2LRsHdAPbpY+7gWmdtuXyH9nVMaaI8uO6+OIIiLjvvoHblBnT3LlJPDNmtG9Xt/ePupX/iIhn0sRxaNPiycCuQLekhcA+wOU+gGt5865Q+Yo8KzRV0pT0/nrAG4B7G89HxNKI2DQitouI7YCbgTdFxOyiYrKxyYmlfEV29ebALEl3ArcB10RyLOVzkt5U4O81W0PjD3jgSZ7K1YhjNCeWwg7eRsSdwO4tln96gPYHFhWLjW0esZSvJl1tVhwnlvLVpKvNiuPEUr6adLVZcZxYyleTrjYrjhNL+WrS1WbFcWIpX0262qw4Tizlq0lXmxXHiaV8Nelqs+J4oqfy1aSrzYrjEUv5atLVZsVxYilfTbrarDhOLOWrSVebFceJpXw16Wqz4jixlK8mXW1WHCeW8tWkq82K48RSvpp0tVlxPNFT+ZxYbNTr66tPUgGPWIYlSyVESadLulvSnZJ+L2nbouKxsauvrz67QeDEMlyNSoi7Aa8CDpW0T782fyQp+fFK4KckhcvMcuXEUr5KKyFGxKyIaFSQuhnYqqh4bOxyYilfod0tabykucASkln629VnPgm4ush4bGyqW2IZCwdvCy2xGhGrgFel9YV+LmnXiJjXv52kdwHTgOmttuMSq0NTx5ig/LgWLXopEVvQ3X1dbWIaN246CxY8THf3gtrElKusJROHewPOAT7SYvkbgHuAzbJsxyVWs6tjTBHlx3XaaRGTJ7dvU3ZMEyZEnH12+zZ1e/+oQ4nVTpUQ0+W7AxeSVEBcUlQsNrbVbVcIkni8KzQ0mwPflzSe5FjOZZFWQiTJfJcDXwYmAT9RsuP5cES4SqLlKqKeiWU0T/RUaSXEiHhDUb/frMEjlvLVrLvN8ufEUr6adbdZ/pxYylez7jbLnxNL+WrW3Wb5c2IpX8262yx/Tizlq1l3m+XPiaV8Netus/zVbT4WSOJxYjEbwTxiKV/Nutssf04s5atZd5vlz4mlfDXrbrP8ObGUr2bdbZY/J5by1ay7zfLnxFK+TFc3S9oM2A/YAvgbMI9k6oNR3DU2WjixlK9tYpF0EHAWsDHJjPpLgHWBtwAvlfRT4CsRsazoQM2GyvOxlK/TiOVw4P0R8XD/JyRNAI4ADgZ+VkBsZrnwiKV8bRNLRHy0zXO9wC9yj8gsZ04s5RtUd0vaR9JMSTdIOqqooMzy5MRSvrbdLekl/RadDrwJOBT4XId1s5RYfZGkH0t6QNItkrYbXPhmnTmxlK9Td18g6VOS1k0fPwO8E3g70OmAbZYSqycBf42IHYH/D3xpUNGbZeDEUr623R0RbwHmAldKOh44DegD1ic5M9Ru3YgOJVaBNwPfT+//FHi9VLfrUG2kc2IpX8fvsUTEFZKuAv4FmAGcGxEDl5Rrkpb+mAPsCHwj1i6xuiXwSPp7eiUtBTYBnuy3HVdCHII6xgTlx/X007vR1ye6u+fWJqYVK/bgySd76O6+qzYx5apdNTOS4ynXA9cCBwFTgK8ClwIvzVoVLV1vFrBrv+V/ArZqevwgsEm7bbkSYnZ1jCmi/Lhe+9qI6dPbtyk7pr32injjG9u3qdv7xyAqIXYasXwB2BdYD7gqIvYCTpe0E3AucGzG5PWMpG6Sg77NtZsfBbYGHk2/F7Mh8HSWbZpl1dcHXV1VR7Gm0b4r1GnPcylJ8jiW5Fu3AETE/Ihom1SylFgFLgdOSO8fDcxMM6NZbnyMpXyduvsokgO1vSRngwZjc2CWpDuB24BrIi2xKqlRRvUiYBNJD5Ccyj5rkL/DrCMnlvJ12hV6PiK+1q6BpEmx+uzP30W2EqvPA8dkjNVsSJxYytepu38p6SuSXitpYmOhpB0knSTpNyTHTcxqy4mlfJ2uFXq9pMOBfwb2k7QRyW7RfcCvgBMi4oniwzQburomlp6eqqMoTpbvsVwFXFVCLGaFqGtiGc0jlpp1t1n+nFjKV7PuNsufJ3oqX8262yx/HrGUL3N3S9pf0onp/amSti8uLLP8OLGUL1N3SzoHOBM4O13UBfywqKDM8uTEUr6s3X0UyQWJKwAiYjEwuaigzPLkxFK+rN29Mr2GJwCavyxnVndOLOXL2t2XSboQmCLp/cDvgG8XF5ZZfpxYypepYFlE/Kekg0mmo3wZ8OmIuKbQyMxy4sRSvqyVEL8UEWcC17RYZlZrfX1QtwlPpdGdWLLm8YNbLDssz0DMiuIRS/k6lVj9EMlctzuk86o0TAZuKDIws7w4sZSv067QJcDVwH+w5iRMyyPCU0jaiODEUr5O0yYsJZme8h0AkjYjKQo/KZ3gaa2azmZ148RSvqzfvD1S0nxgAcmM/QtJRjLt1tla0ixJ96SVEE9t0WZDSVc0VUs8cQivwawtJ5byZe3uLwD7APdHxPbA6+l8jKUXOCMiXp6ue7KkXfq1ORm4O5JqiQcCX5G0TtbgzbJwYilf1u7uiYingHGSxkXELJKyqQOKiMcj4vb0/nLgHpICZWs0Ayan1Q8nkZT+6B3MCzDrxImlfJm+xwI8I2kS8AfgYklLGEQCSIu97w70r4T4dZISII1rj94eEWt1tyshDk0dY4Ly4+rt3Z/Fix+nu/vB2sT0xBM788ILm9LdfWNtYspVlqpmwESS0c0EkjpAH6ZDxcKmdSeRlFl9a4vnjiYpBi+SMqwLgA3abc+VELOrY0wR5cc1aVLE6ae3b1N2TB/6UMTUqe3b1O39YxCVEDsOENP6y7+MiL6I6I2I70fE+ZHsGnVatwv4GXBxRMxo0eREYEYa9wNpYvmHTts1GwzvCpWvY3dHxCrgOUkbDmbD6XGTi4B7IuKrAzR7mORAMJJeTHId0kOD+T1mnTixlC/rMZbngbskXUM6JwtARHy4zTr7Acen681Nl30c2CZd9wLg88D3JN1Fsjt0ZkQ8ObiXYNaeE0v5siaWX6W3zCLiepJk0a7NYuCQwWzXbLCcWMqXddqE7xcdiFlRnFjKV7PuNsufE0v5atbdZvlq1O7xfCzlynqt0DFZlpnVTeOP1yOWcmXt7rMzLjOrFSeWanSa6Okw4HBgS0nnNz21Ab6mx0YAJ5ZqdDortBiYTVJTaE7T8uXAvxUVlFle6pxYIpJb3Y7/5KHTRE93AHdIuiQiekqKySw3dU4sMEYTS5O9JH0G2DZdR0BExA5FBWaWh7onljqeCs9D1sRyEcmuzxxgVXHhmOVrJCSW0ShrYlkaEW2nojSrIyeWamRNLLMkfRmYAbzQWBjpDHFmddX4glxdE0sjvtEma2LZO/05rWlZAK/LNxyzfHnEUo2sFyEeVHQgZkVwYqlG1trNn261PCI+l284ZvlyYqlG1l2hFU331wWOIJl136zWnFiqkXVX6CvNjyX9J8ns+ma15sRSjaF29/pA2y/HZamEmLY7UNLctM21Q4zHrCUnlmpkPcZyF8lZIIDxwFSg0/GVRiXE2yVNBuZIuiYi7m7a7hTgm8ChEfFwWhvaLDdOLNXIeozliKb7vcCfI6Lt1c0R8TjweHp/uaRGJcS7m5q9k6T8x8NpuyVZAzfLovGHW7frcRrxjNbEkimPR8QiYApwJHAU0L8Gc1ttKiHuDGwkqVvSHEnvHsx2zTrxiKUaWXeFTgXeT/LNW0jKrH4rIr6WYd1JJEXLTouIZS1+/6tJagutB9wk6eaIuL/fNlxidQjqGBOUG9cjj6wH7M29995Nd/fAA+Ky+2r+/M2Bl3HDDTex2WYvtGxT1/cvkyzlEoE7gYlNjycCd2ZYrwv4DXD6AM+fBXym6fFFwDHttukSq9nVMaaIcuO6555k1pNLLmnfruy+uuiiJK6FCwduU7f3jzxLrKbEmlc1r6JDzaCMlRB/CRwgaYKk9UkuHfD3Yyw33hWqRtaDt98FbpH08/TxW0iSRjsdKyFGxD2Sfk0yIuoDvh0R8wbzAszacWKpRtYvyH1VUjewP8lI5cSI+GOHdTpWQkzbfRn4cpY4zAbLiaUaWQ/e7gP8KdJpEiRNlrR3RPQ/y2NWK04s1cja3f8DPNv0eEW6zKzWnFiqkfngbXpUGICI6CP78Rmzyniip2pk7e6HJH1YUld6OxV4qMjAzPLgEUs1snb3B4HXAI8Bj5KcFv5AUUGZ5cWJpRpZzwotAY4tOBaz3DmxVCNrUfjzJG2Q7gb9XtKTkt5VdHBmw+XEUo2sB2APiYiPSTqKZFfoGGAW8MPCIrNhW7lSvPOd8NRTay4/5BA444xqYiqbE0s1snZ3V/rzcODSiHi6oHgsR4sXr8ell8KCBbBsWXKbMwcuvLDqyMrjxFKNrN19haR7Scp//F7SVOD54sKyPPT2Jm/veefBTTcltyOOgJ4xVIXbiaUaWedjOQvYF5gWSXH4FcCbiwzMhq+nJ7mioqtr9bKuLli5sqKAKuCJnqrR9hiLpNdFxExJb21a1txkxtprWV00RizrrLN62TrrjM3E4hFLuTodvJ0OzCSZOa6/wIml1hojFicWJ5aytU0sEXFO+vPEcsKxPHnE4sRSlU67Qqe3e77NBE5WA729rUcsPnhbvTGdWIDJ6c+XAXuyukjZkcAfigrK8jHQrtCqVclt/PiKAiuRE0s1Ou0KfRZA0m+BPSJiefr4M8BPCo/OhqWxK9T/rBAkoxYnluqM9sSStbu3AZr3zFcC2+UejeVqoBELjJ3jLE4s1cja3T8AbpX0GUnnkNQH+n67FbKWWE3b7ilplaSjs4dunQx08BbGTmLxfCzVyHp187mSrgYOSBd1nPOWDCVWASSNB75EUibEcjTQwVsYO4nFI5ZqZJ4FLp3v9vZBtM9SYhXgX0kKmu2ZdduWTbsRy1g5M+TEUo1SppccqMSqpC1JSra+jjaJxZUQh2bFihcDcPPNf2DddZNP8Pz5mwG7cN11t7Bgwd8qiavMvpo3L3m9s2ffypIlz9UiJoD58ycB07jjjruYPPmplm3q+JnKLGtls6HegEnAHOCtLZ77CbBPev97wNGdtudKiNm9970PBUSsXLl62WWXJRX45s2rLq4y++rii5PXe9997duV/f7NnZvENWPGwG3q9pliEJUQCx2xSOoi2c25OCJaff1/GvCj9PqjTYHDJfVGxC+KjGusaJwVmtD0LvsYSz14V2iIspRYjYjtm9p/D7jSSSU/vb3jWGedNa/sdWKpByeWoetYYrXA320kZ4WaD9yCE0tdOLEMUWQssdrU/j1FxTJWtUoszd+8HQs8H0s1apbHLU89PeM8YvGIpRI1627LU2+v1rhOCJxY6sKJxUYsj1icWKpSs+62PPngrRNLVWrW3ZanxunmZk4s9eDEYiOWzwo5sVSlZt1tefIxFieWqtSsuy1PPivkxFKVmnW35ckHbz3RU1Vq1t2WJ+8KecRSlZp1t+Wp1Yhl/Pjk6+ROLNVyYrERq9XpZhhbtYWcWKpRs+62PPX0rD1igbFVDdGJpRo1627LU2/vuLXOCoETSx04sdiI1eoYCzix1IETi41Yrc4KwdhMLHWbj8WJxUasgUYsXV1jK7HULamAJ3oasiyVECUdJ+nO9HajpN2KimcsajdiGUtnheq2GwSjf8RS5Jy3WSohLgCmR8RfJR0GfAvYu8CYxoy+Pujr8zEWJ5ZqFDnnbcdKiBFxY9MqNwNbFRXPWNMYkfiskBNLFUrp8oEqIfZzEnB1GfGMBY3E4RFLPRPLaD/GUniJVUmTSIqWnRYRywZocxBJYtl/gOddYnWQli6dAOzPokXz6e5+bI3nVqzYjaVLRXf33NYrF6zMvlq06KVEbEF393W1ialh3LjpLFjwMN3dC2oTU26ylkwcyg3oAn4DnN6mzSuBB4Gds2zTJVazWbw4KeF5wQVrP/fGN0bstVf5MTWU2VennRYxeXLndlW8fxMmRJx99sDP1+0zxSBKrBZ5VqhjJURJ2wAzgOMj4v6iYhmLOu0K+axQ9caN867QUGSphPhpYBPgm2n95t6ImFZgTGOGj7EkIuqdWEbrfCyVVkKMiPcB7ysqhrHMZ4USHrFUo6ZdbsPlEUvCiaUaNe1yG652iWWsfaXfiaV8Ne1yGy6PWBJOLNWoaZfbcPmsUMKJpRo17XIbrkbi8IjFiaUKNe1yG65G4vBZISeWKtS0y224Oh287euDVavKjakKdZ2PBZK4nFhsROl0jKW5zWjmEUs1atrlNlxOLAknlmrUtMttuLIklrFwZsiJpRo17XIbrk5nhcAjlqo5sdiI0+msUHOb0cyJpRo17XIbrk5nhZrbjGZOLNWoaZfbcPngbcKJpRo17XIbrpUrQQrGj1/7OSeWenBisRGnpwcmTIiWXw4bS2eFPNFTNWra5TZcK1dCV1frf4cesdSDRyw24qxcmYxYWvHB23pwYhmCjCVWJel8SQ+kZVb3KCqesSZJLB6xOLFUo+oSq4cBO6W3vYH/wSVWc5HsCrUesTix1IMTyxBEhhKrwJuB/01rltwsaYqkzdN1W1q4cCKveEVRUQ/dihV7MnFi1VGs9uijMGlS+8Ryyinw8Y+XGFSqzL5auBB2372c3zVY48bBzJkM+Hmu22dqMAqvhAhtS6xuCTzS9PjRdNkaiaW5EuKLXvRypk5dUlSoQ7bRRr1MmLCi6jD+bupUeMUrnqC7++m1nuvpEUceuRPLlpXy9q+lzL6aOhUOOOBJurvbf2aqqDp48MEvZtKkTQZ8vm6fqUHJWtlsqDdgEjAHeGuL534F7N/0+PfAq9ttz5UQs6tjTBH1jMsxdUYdKiECSOoiqdt8cUTMaNHkUWDrpsdbAYuLjMnMildpiVXgcuDd6dmhfYCl0eb4ipmNDFWXWL0KOBx4AHgOOLHAeMysJFWXWA3g5KJiMLNq1PQMv5mNZE4sZpY7JxYzy50Ti5nlTjHCJoSQtBy4r+o4WtgUeLLqIPqpY0xQz7gcU2fbRsTULA2r+U738NwXEdOqDqI/SbPrFlcdY4J6xuWY8uVdITPLnROLmeVuJCaWb1UdwADqGFcdY4J6xuWYcjTiDt6aWf2NxBGLmdVcLRKLpO9IWiJpXtOy3STdJOkuSVdI2iBdvp2kv0mam94uaFrn1Wn7B9K5dNteq5RjTMc1xTNXUp+kV6XPdUu6r+m5zYYRU8t5hCVtLOkaSfPTnxulywecU1jSCWn7+ZJOGGpMQ4zruDSeOyXdKGm3pm0tTPt3rqTZJcZ0oKSlTe/Tp5u2dWj6Hj4g6ayhxjTEuD7aFNM8SaskbZxnXxUi68QtRd6A1wJ7APOalt0GTE/vvxf4fHp/u+Z2/bZzK7AvycWPVwOHlRFTv/X+EXio6XE3MC2nftoc2CO9Pxm4H9gFOA84K11+FvCl9P7haT8I2Ae4JV2+MfBQ+nOj9P5GJcb1msbvI5n3+JambS0ENq2grw4ErmyxnfHAg8AOwDrAHcAuZcXVb90jgZl591URt8oDaOqkNRIGsIzVx4C2Bu5u1a7fG3Zv0+N3ABeWEVO/df4dOLfpcW6JpcXv+iVwMMkXBjdv6of70vsXAu9oan9f+vwafdO/XdFx9Wu7EfBY0+NC/lgy9NVAiWVf4DdNj88Gzq6ory4B3l90X+Vxq8Wu0ADmAW9K7x/DmjPNbS/pj5KulXRAumxLkhnpGhrz55YVU8PbgUv7LftuOlz91HB2z5ppzXmEXxzpBFnpz8bu1kBzCg+0vKy4mp1EMqpqCOC3kuYomeu4zJj2lXSHpKslNaa4rkVfSVofOJRkRsaG3PsqL3VOLO8FTpY0h2TI2ChW8TiwTUTsDpwOXJIe62j1B5v3Ka+BYgJA0t7AcxExr2nxcRHxj8AB6e344QYhaRLJB+y0iFjWrmmLZdFmeVlxNdofRJJYzmxavF9E7EGyi3SypNeWFNPtJF9Z3w34GvCLxiZatC29r0h2g26IiObZ0XPtqzzVNrFExL0RcUhEvJpkBPBguvyFiHgqvT8nXb4zyX+SrZo2kfv8uQPF1ORY+o1WIuKx9OdykqHsXsOJQa3nEf6zpM3T5zcHGlPSDzSncO5zDQ8yLiS9Evg28ObG+wkQEYvTn0uAnzOM/hpMTBGxLCKeTe9fBXRJ2pQa9FWq1Wcrt77KW20TS+PsiaRxwCeBC9LHUyWNT+/vQFLs7KF0+Lhc0j7p7sa7SfZfC4+padkxwI+alk1IP5yND9MRJLtTQ/39A80jfDnQOLNzAqtf90BzCv8GOETSRunZh0PSZaXEJWkbYAZwfETc37SdiUqK2yFpYhrXkPprCDG9pLGbKmkvkr+Np0gO2O8kaXtJ65D8gV8+lJiGEle6zobA9H7LcuurQlR9kCc9CHUpyS5OD8l/iJOAU0mOmN8PfJHVB03/CfgTydH524Ejm7YzjaRzHwS+3lin6Jhi9cG/m/ttYyJJ6ZM705j/Gxg/jJj2JxmG3wnMTW+HA5uQlE6Zn/7cOG0v4Btpf9xF00Fkkt26B9LbicN8/wYb17eBvza1nZ0u3yF9X+9I++sTJcZ0StPn6mbgNU3bOjx9zx8cTkxDiStd5z3Aj/ptJ7e+KuLmb96aWe5quytkZiOXE4uZ5c6Jxcxy58RiZrlzYjGz3Dmx2LCl35O5XtJhTcveJunXVcZl1fHpZsuFpF2Bn5Bc+zKe5PsZh0ZE/28nD2abEyKiN6cQrUROLJYbSecBK0i+GLg8Ij6vZK6Xk0mmHLgROCUi+iR9i2RaivWAH0fE59JtPEplxyayAAABCUlEQVRytfWhwH9FxE8qeCk2TCOx/IfV12dJvg29EpiWjmKOIvkWa2+aTI4luWbqrIh4WtIEYJakn0bE3el2VkTEflW8AMuHE4vlJiJWSPox8GxEvCDpDcCewOz0Mpz1WD0FwTsknUTyGdyCZLKjRmL5cbmRW96cWCxvfekNkmuVvhMRn2puIGknkuuu9oqIZyT9EFi3qcmKUiK1wviskBXpd8Dbmq7w3iS9snkDYDmwLJ0i4I0VxmgF8IjFChMRd0n6LPC7dFqJHuCDwGyS3Z55JPPt3lBdlFYEnxUys9x5V8jMcufEYma5c2Ixs9w5sZhZ7pxYzCx3TixmljsnFjPLnROLmeXu/wBOoxI9BJ+BQwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "from climada.entity import DiscRates\n", "\n", "# define discount rates\n", "disc = DiscRates()\n", "disc.years = np.arange(1950, 2100)\n", "disc.rates = np.ones(disc.years.size) * 0.02\n", "disc.rates[51:55] = 0.025\n", "disc.rates[95:120] = 0.035\n", "disc.check()\n", "disc.plot()\n", "\n", "# Compute net present value between present year and future year.\n", "ini_year = 2019\n", "end_year = 2050\n", "val_years = np.zeros(end_year-ini_year+1)\n", "val_years[0] = 100000000 # initial investment\n", "val_years[10:] = 75000 # maintenance from 10th year\n", "npv = disc.net_present_value(ini_year, end_year, val_years)\n", "print('net present value: {:.5e}'.format(npv))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Read discount rates of an Excel file\n", "\n", "Discount rates defined in an excel file following the template provided in sheet `discount` of `climada_python/data/system/entity_template.xlsx` can be ingested directly using the method `read_excel()`." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Read file: /Users/aznarsig/Documents/Python/climada_python/data/system/entity_template.xlsx\n" ] }, { "data": { "text/plain": [ "(
,\n", " [])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from climada.entity import DiscRates\n", "from climada.util import ENT_TEMPLATE_XLS\n", "\n", "# Fill DataFrame from Excel file\n", "file_name = ENT_TEMPLATE_XLS # provide absolute path of the excel file\n", "disc = DiscRates()\n", "disc.read_excel(file_name)\n", "print('Read file:', disc.tag.file_name)\n", "disc.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Write discount rates" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Discount rates defined in an excel file following the template provided in sheet `discount` of `climada_python/data/system/entity_template.xlsx` can be ingested directly using the method `read_excel()`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from climada.entity import DiscRates\n", "from climada.util import ENT_TEMPLATE_XLS\n", "\n", "# Fill DataFrame from Excel file\n", "file_name = ENT_TEMPLATE_XLS # provide absolute path of the excel file\n", "disc = DiscRates()\n", "disc.read_excel(file_name)\n", "\n", "# write file\n", "disc.write_excel('results/tutorial_disc.xlsx')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pickle can always be used as well:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2019-05-15 07:50:15,188 - climada.util.save - INFO - Written file /Users/aznarsig/Documents/Python/climada_python/doc/tutorial/results/tutorial_disc.p\n" ] } ], "source": [ "from climada.util.save import save\n", "# this generates a results folder in the current path and stores the output there\n", "save('tutorial_disc.p', disc)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }