{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import os\n", "import pandas as pd\n", "\n", "from bestiapop import bestiapop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Storing climate data in a pandas dataframe\n", "\n", "In this example we will download data to a pandas dataframe\n", "\n", "### Define your climate extraction variables\n", "\n", "We need to define the scope of what type of data and output we expect from BestiaPop." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Define variables to pass in to ClimateBeast\n", "action='generate-climate-file'\n", "data_source='silo'\n", "year_range='2015-2016'\n", "climate_variables=['radiation', 'max_temp', 'min_temp', 'daily_rain']\n", "lat_range=[-41.15, -41.05]\n", "lon_range=[145.5, 145.6]\n", "output_type='dataframe' # <-- selecting pandas dataframe as output of our data processing\n", "output_path=None # <-- no dir since we are not dumping data to a file" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instantiate and run BestiaPop" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "climate_data = bestiapop.CLIMATEBEAST(\n", " action=action,\n", " data_source=data_source,\n", " output_path=output_path,\n", " output_type=output_type,\n", " input_path=None,\n", " climate_variables=climate_variables,\n", " year_range=year_range,\n", " lat_range=lat_range,\n", " lon_range=lon_range,\n", " multiprocessing=None\n", " )" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data = climate_data.process_records(action)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# let's show the dataframe\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Storing climate data in met files\n", "\n", "In this example we will download data to met files\n", "\n", "### Define your climate extraction variables\n", "\n", "We need to define the scope of what type of data and output we expect from BestiaPop." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Define variables to pass in to ClimateBeast\n", "action='generate-climate-file'\n", "data_source='silo'\n", "year_range='2015-2016'\n", "climate_variables=['radiation', 'max_temp', 'min_temp', 'daily_rain']\n", "lat_range=[-41.15, -41.05]\n", "lon_range=[145.5, 145.6]\n", "output_type='met'\n", "output_path=os.getcwd() # current dir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instantiate and run BestiaPop" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "climate_data = bestiapop.CLIMATEBEAST(\n", " action='generate-climate-file',\n", " data_source=data_source,\n", " output_path=output_path,\n", " output_type=output_type,\n", " input_path=None,\n", " climate_variables=climate_variables,\n", " year_range=year_range,\n", " lat_range=lat_range,\n", " lon_range=lon_range,\n", " multiprocessing=None\n", " )" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "climate_data.process_records(action) # no need to store the results in a variable since they are dumped to disk" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Zip the generated MET files & Download them\n", "\n", "Let's now grab all the MET files and compress them. We need to get rid of the ocasional minus sign at the beginning of some \n", "MET files (depending on your lat/lon range), because `tar` does not do well with such filenames. In any case, this code should work for you.\n", "\n", "> NOTE: make sure to change the extension of the file, depending on which format you chose for the output." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%bash\n", "for f in *.met; do\n", " mv -- \"$f\" \"bpop.${f}\"\n", "done\n", "\n", "tar chvfz bestiapop_files.tar.gz bpop*.met" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Search for your file by clicking `file --> open` in the top left menu of this JupterNotebook. You can download the compressed file and unzip in your own machine (we recommend you use `7zip` if using a Windows machine)." ] }, { "attachments": { "image-2.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAToAAAG+CAYAAAADY8iSAAAgAElEQVR4Ae29/ZMdxZX3OX/C/gHzw/4wsbHaJ2Kf3dXzxG7Esxs7G7s/7BMTMe/MK9Nj3DOIGUY9gzXIGCwMGmQzwljG9oAx0MaNDXavbL3MgAVCtoYBLMyL1Ai1bYR48wikFmBZdEuo9XI2TladrJNZmVV5762+t+r290bcrqqszJMnv5n5uSer6vb9FerzdenNF2l5/7106Z2fEC2fI7p8qU9LebHLl4kuLtPlMwt04cXv0fJT03R58f2ebP7kJz+h3/u936Pf+Z3fof3799NHH31ky1++fJluvPFGc+7666+nM2fOEKfp14ULF+ill16iv/7rv6aPfexj9O1vf1ufplOnTtHdd99Nf/AHf0B33nknTU9P07p16+hP//RPaf369fT3f//3NDExYXzgPH/3d39Hr776Kp0/f97YOX36ND300EP0R3/0R8b+D37wA8e+HLz77rt022230RVXXGF8fu2112hxcZH27t1rfLvyyitNO377t3+b/uRP/oQ+/vGP0+TkJH3605+mn/70p2KGLl68SM8++6zx7Q//8A/N9nOf+xz94z/+o/GV7f/xH/8xffe736UPPvjAluOdn//853TLLbcYu7t376bPfvazpp1c51/+5V8afZ0COIACLVbgV/r17dLbh+jy6RNEywVM+rXllLt0kS6f+yVdemeeLn/0oXOq7mB+fp54Iv7mb/4m/fCHPyyB7oYbbjDnNmzYQL/85S+DoHvxxRcNvP7sz/6MHn74YafK9957j+69915TB8OF3wyDZ555ht544w16++23iX34yle+QlyeQfIP//AP9M477xg7DDwGEYOKgXzffffRhx+6bWT4/uxnPzMg5LY88sgjxIBkaPH22LFj9Oijj5q6GbAzMzPEgD969KiBk7bHaQw/hvYXvvAFA90TJ07QyZMnTf5vfOMbxAC8+uqr6amnnqJLl4oPq3//93+nW2+91ZznLbeHbXHd3EbWAi8o0BUF+gYdXTxPdOnCCrXzMtGFj3qOElcadO+//z7df//9BpYMoY0bN9ILL7xAZ8+etTowkN566y3atm2bASJHTE8//TSdO3fOgJVBxHDkiI8jzNdff92W5R2O3B577DH63d/9XRMdvvzyy8SRpn5xnX/1V39lAMZ5JWKU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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image-2.png](attachment:image-2.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Working with lists of lat/lon combinations\n", "\n", "In this example we will download climate data based off a list of lat/lon datapoints\n", "\n", "### Define your climate extraction variables\n", "\n", "We need to define the scope of what type of data and output we expect from BestiaPop.\n", "\n", "> **NOTE**: the `coordinate_list` variable contains lists of lat/lon pairs where the first value is `latitutde` and the second value is `longitude`" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Define variables to pass in to ClimateBeast\n", "\n", "coordinate_list = [\n", " [-41.15, 145.5],\n", " [-43.45, 146.7],\n", " [-41.25, 145.25],\n", " [-42.70, 147.45],\n", " [-41.50, 145.6]\n", "]\n", "\n", "action='generate-climate-file'\n", "data_source='silo'\n", "year_range='2015-2016'\n", "climate_variables=['radiation', 'max_temp', 'min_temp', 'daily_rain']\n", "output_type='dataframe'\n", "output_path=None" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instantiate and run BestiaPop\n", "\n", "In this instance we will iterate over the lat/lon combinations" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "final_df = pd.DataFrame()\n", "\n", "for coord in coordinate_list:\n", " print('Fetching data for {}/{}'.format(coord[0], coord[1]))\n", " climate_data = bestiapop.CLIMATEBEAST(\n", " action='generate-climate-file',\n", " data_source=data_source,\n", " output_path=output_path,\n", " output_type=output_type,\n", " input_path=None,\n", " climate_variables=climate_variables,\n", " year_range=year_range,\n", " lat_range=[coord[0]],\n", " lon_range=[coord[1]],\n", " multiprocessing=None\n", " )\n", " data = climate_data.process_records(action)\n", " final_df = final_df.append(data, ignore_index=True)\n", "\n", "# Show the final dataframe\n", "final_df" ] } ], "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.8" } }, "nbformat": 4, "nbformat_minor": 4 }