diff --git a/example_usuage/Dynamic World/README.md b/example_usuage/Dynamic World/README.md index e064436..ca36f9a 100644 --- a/example_usuage/Dynamic World/README.md +++ b/example_usuage/Dynamic World/README.md @@ -1,3 +1,3 @@ -DW_plot.ipynb - Create the Dynamic world figures -DW_reproject - Reproject the Dynamic world data -DW_UQ - Quantify uncertainty for Dynamic World global validation set. Includes visualisation and inference. \ No newline at end of file +DW_plot.ipynb - Create the Dynamic world figures. +DW_reproject - Reproject the Dynamic world data. +DW_UQ - Quantify uncertainty for Dynamic World global validation set. Includes visualisation and inference. \ No newline at end of file diff --git a/example_usuage/GEDI/NB1_DataExtraction.ipynb b/example_usuage/GEDI/NB1_DataExtraction.ipynb index 4421bfd..185bdaf 100644 --- a/example_usuage/GEDI/NB1_DataExtraction.ipynb +++ b/example_usuage/GEDI/NB1_DataExtraction.ipynb @@ -17,7 +17,7 @@ "id": "ff7de362" }, "source": [ - "## Extract data for GEDI (tree canopy height) and PlanetScope VNIR percentile data (predictors/covariates) across Kenya." + "## Extract data for GEDI (tree canopy height) and PlanetScope VNIR data (predictors/covariates) across the NICFI Africa extent." ] }, { @@ -75,13 +75,15 @@ ], "source": [ "import ee\n", - "# ee.Authenticate()\n", - "ee.Initialize(opt_url='https://earthengine-highvolume.googleapis.com')\n", + "try:\n", + " ee.Initialize(opt_url='https://earthengine-highvolume.googleapis.com')\n", + "except:\n", + " ee.Authenticate()\n", + " ee.Initialize(opt_url='https://earthengine-highvolume.googleapis.com')\n", + " \n", "import geemap\n", "import geopandas as gpd\n", - "# from geeml.utils import createGrid, getCountry\n", - "# from geeml.extract import exctractor\n", - "# import eerepr\n", + "from geeml.utils import getCountry\n", "\n", "import pandas as pd\n", "import numpy as np" @@ -571,217 +573,6 @@ "scale_y = -proj['transform'][4]" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "(900, 1800)" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "SCALE_FACTOR = 5\n", - "\n", - "jan_mean_temp_npy = ee.data.getPixels({\n", - " 'assetId': image_id,\n", - " 'fileFormat': 'NUMPY_NDARRAY',\n", - " 'grid': {\n", - " 'dimensions': {\n", - " 'width': 360 * SCALE_FACTOR,\n", - " 'height': 180 * SCALE_FACTOR\n", - " },\n", - " 'affineTransform': {\n", - " 'scaleX': 1 / SCALE_FACTOR,\n", - " 'shearX': 0,\n", - " 'translateX': -180,\n", - " 'shearY': 0,\n", - " 'scaleY': -1 / SCALE_FACTOR,\n", - " 'translateY': 90\n", - " },\n", - " 'crsCode': 'EPSG:4326',\n", - " },\n", - " 'bandIds': ['B', 'G', 'R', 'N']\n", - "})\n", - "\n", - "jan_mean_temp_npy.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "array([[ 0., 0., 0., ..., 0., 0., 0.],\n", - " [ 0., 0., 0., ..., 0., 0., 0.],\n", - " [ 0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [ 0., 0., 0., ..., 955., 955., 955.],\n", - " [ 0., 0., 0., ..., 955., 955., 955.],\n", - " [ 0., 0., 0., ..., 955., 955., 955.]])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "jan_mean_temp_npy = jan_mean_temp_npy['G']\n", - "\n", - "jan_mean_temp_npy = np.where(jan_mean_temp_npy < -9999, np.nan, jan_mean_temp_npy)\n", - "# jan_mean_temp_npy = jan_mean_temp_npy * 0.1\n", - "jan_mean_temp_npy" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "fig = plt.figure(figsize=(10., 10.))\n", - "ax = plt.imshow(jan_mean_temp_npy, cmap='coolwarm', vmin=-40, vmax=40)\n", - "\n", - "colorbar = plt.colorbar(ax, fraction=0.0235)\n", - "colorbar.set_label('Mean January Temp (°C)')\n", - "\n", - "plt.show()" - ] - }, { "cell_type": "markdown", "id": "8bfb9a92", diff --git a/example_usuage/GEDI/NB2_ModelSelection.ipynb b/example_usuage/GEDI/NB2_ModelSelection.ipynb index bc02953..76f41a6 100644 --- a/example_usuage/GEDI/NB2_ModelSelection.ipynb +++ b/example_usuage/GEDI/NB2_ModelSelection.ipynb @@ -1,5 +1,19 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook looks at creating a figure showing the distribution of the train, test and calibration countries (Figure 2B). It also includes code for training, evaluating and performing inference for canopy height and associated uncertainty." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: Import packages" + ] + }, { "cell_type": "code", "execution_count": 6, @@ -21,7 +35,15 @@ "from matplotlib.ticker import FuncFormatter\n", "from matplotlib.colors import ListedColormap\n", "import os\n", - "from tqdm.auto import tqdm" + "from tqdm.auto import tqdm\n", + "from shapely.geometry import Point" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a publication-ready figure for the train-test-calibration split for GEDI (Figure 2B)" ] }, { @@ -30,14 +52,16 @@ "metadata": {}, "outputs": [], "source": [ - "# Planet data- get percentiles across all monthly composite planet data\n", + "# Planet data- get first biannual image in 2020\n", "planet = ee.ImageCollection(\"projects/planet-nicfi/assets/basemaps/africa\")\n", "monthlyPlanet = planet.filterDate('2020-01-01', '2021-01-01').filter(ee.Filter.eq('cadence','biannual')).first()\n", "\n", + "# Get a geometry of the africa countries that intersect with the extent of the planet image\n", "africa_countries = ee.FeatureCollection(\"USDOS/LSIB_SIMPLE/2017\")\\\n", " .filter(ee.Filter.eq('wld_rgn', 'Africa'))\\\n", " .filterBounds(monthlyPlanet.geometry()).map(lambda c: c.intersection(monthlyPlanet.geometry(), 100))\n", "\n", + "# Get list of country names\n", "country_list = africa_countries.aggregate_array('country_na').getInfo()" ] }, @@ -57,7 +81,7 @@ } ], "source": [ - "# Assuming 'X' is your feature matrix and 'y' is the target variable\n", + "# Split country names into train, test and calibration countries\n", "train, test, _, _ = train_test_split(country_list, country_list, test_size=0.2, random_state=42)\n", "train, calibration, _, _ = train_test_split(train, train, test_size=0.2, random_state=42)\n", "\n", @@ -72,6 +96,7 @@ "metadata": {}, "outputs": [], "source": [ + "# Filter countries by split and then convert to a geodataframe\n", "train_countries = ee.data.computeFeatures({\n", " 'expression': ee.FeatureCollection(africa_countries).filter(ee.Filter.inList('country_na', train)),\n", " 'fileFormat': 'GEOPANDAS_GEODATAFRAME'\n", @@ -98,8 +123,6 @@ "metadata": {}, "outputs": [], "source": [ - "from shapely.geometry import Point\n", - "\n", "# Manually construct a point\n", "point_geometry = Point((\n", " 19.250142136823992,\n", @@ -111,6 +134,13 @@ "point = gpd.GeoDataFrame(data, geometry='geometry')" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create Figure" + ] + }, { "cell_type": "code", "execution_count": 43, @@ -200,6 +230,14 @@ "plt.savefig(r'C:\\Users\\coach\\myfiles\\postdoc\\Uncertainty\\figures\\GEDI_sampleCountries.png', bbox_inches='tight', pad_inches=0.1, dpi=350, transparent=True)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare data for modelling\n", + "The data was extracted on a country basis, for each country in each of the three splits, the data was combined into a single file and written to a feather file. Feather files are a binary format for storing data frames in Python. They are fast, require less memory than CSV files, and can be read by pandas." + ] + }, { "cell_type": "code", "execution_count": null, @@ -236,53 +274,17 @@ ] }, { - "cell_type": "code", - "execution_count": 3, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Defaulting to user installation because normal site-packages is not writeable\n", - "Collecting pandas==1.5.3.\n", - " Downloading pandas-1.5.3-cp39-cp39-win_amd64.whl (10.9 MB)\n", - " ---------------------------------------- 10.9/10.9 MB 1.8 MB/s eta 0:00:00\n", - "Requirement already satisfied: python-dateutil>=2.8.1 in c:\\programdata\\anaconda3\\envs\\erthy\\lib\\site-packages (from pandas==1.5.3.) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in c:\\programdata\\anaconda3\\envs\\erthy\\lib\\site-packages (from pandas==1.5.3.) (2022.1)\n", - "Requirement already satisfied: numpy>=1.20.3 in c:\\programdata\\anaconda3\\envs\\erthy\\lib\\site-packages (from pandas==1.5.3.) (1.24.4)\n", - "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\envs\\erthy\\lib\\site-packages (from python-dateutil>=2.8.1->pandas==1.5.3.) (1.16.0)\n", - "Installing collected packages: pandas\n", - " Attempting uninstall: pandas\n", - " Found existing installation: pandas 2.0.0\n", - " Uninstalling pandas-2.0.0:\n", - " Successfully uninstalled pandas-2.0.0\n", - "Successfully installed pandas-1.5.3\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "DEPRECATION: pytorch-lightning 1.6.5 has a non-standard dependency specifier torch>=1.8.*. pip 24.0 will enforce this behaviour change. A possible replacement is to upgrade to a newer version of pytorch-lightning or contact the author to suggest that they release a version with a conforming dependency specifiers. Discussion can be found at https://github.com/pypa/pip/issues/12063\n", - " WARNING: Failed to remove contents in a temporary directory 'C:\\Users\\coach\\AppData\\Roaming\\Python\\Python39\\site-packages\\~%ndas'.\n", - " You can safely remove it manually.\n", - "ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "geeup 1.0.1 requires pandas==2.0.3, but you have pandas 1.5.3 which is incompatible.\n", - "nannyml 0.9.1 requires lightgbm<4.0.0,>=3.3.2, but you have lightgbm 4.1.0 which is incompatible.\n", - "verstack 3.2.3 requires lightgbm==3.3.0, but you have lightgbm 4.1.0 which is incompatible.\n", - "verstack 3.2.3 requires optuna==2.10.0, but you have optuna 2.9.1 which is incompatible.\n", - "verstack 3.2.3 requires plotly==5.3.1, but you have plotly 5.17.0 which is incompatible.\n", - "verstack 3.2.3 requires python-dateutil==2.8.1, but you have python-dateutil 2.8.2 which is incompatible.\n", - "verstack 3.2.3 requires scikit-learn==1.0.1, but you have scikit-learn 1.3.1 which is incompatible.\n", - "fasttreeshap 0.1.2 requires numpy<1.22, but you have numpy 1.24.4 which is incompatible.\n", - "featurewiz 0.1.996 requires pyarrow~=7.0.0, but you have pyarrow 12.0.1 which is incompatible.\n" - ] - } - ], "source": [ - "%pip install pandas==1.5.3. -U" + "### Modelling" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Import packages" ] }, { @@ -311,6 +313,7 @@ "metadata": {}, "outputs": [], "source": [ + "# Import data\n", "base_directory = r\"C:\\Users\\coach\\myfiles\\postdoc\\Uncertainty\\data\\subAfrica\" \n", "\n", "train = pd.read_feather(os.path.join(base_directory, \"train.feather\"), columns = ['B', 'G', 'R', 'N', 'target']).dropna()\n", @@ -334,6 +337,7 @@ } ], "source": [ + "# Print the shape of data\n", "print(train.shape)\n", "print(test.shape)\n", "print(calibration.shape)" @@ -371,6 +375,7 @@ } ], "source": [ + "# Train and evaluate four models that support quantile regression (LGBM, CatBoost, XGBoost, Histogram Boosting)\n", "def train_and_evaluate_model(model, X_train, y_train, X_test, y_test, quantile):\n", " start_time = time.time()\n", " model.fit(X_train, y_train)\n", @@ -523,9 +528,47 @@ } ], "source": [ + "# Plot the distribution of the target variable (canopy height). If a random sample is taken,\n", + "# samples should be representative of varying heights\n", "plt.hist(y_train, bins=50)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train a Conformal Quantile Regression (CQR) model (Method 1)\n", + "# In this approach, model are first trained with three quantile levels.\n", + "# The trained models are provided to the mapie quantile regressor\n", + "\n", + "# alphas = [0.025, 0.975, 0.5] #quantiles (must be in this order- lower, upper, 0.5)\n", + "# models = []\n", + "# for a in alphas:\n", + "# m = LGBMRegressor(random_state=42, objective='quantile', alpha = a)\n", + "# m.fit(X_train, y_train.values.ravel())\n", + "# models.append(m)\n", + "# cqr = MapieQuantileRegressor(models, alpha=0.05, cv=\"prefit\")\n", + "# cqr.fit(X_cal, y_cal.values.ravel())\n", + "# y_pred, y_pis = cqr.predict(X_test)\n", + "# # Compute the distances of upper and lower bounds\n", + "# widths = y_pis[:,1] - y_pis[:,0]\n", + "# plt.hist(widths, bins = 40)\n", + "# plt.hist(y_test, bins = 40)\n", + "# plt.hist(y_pred, bins = 40)\n", + "# # Label the x-axis\n", + "# plt.xlabel(\"Interval width\")\n", + "# # Label the y-axis\n", + "# plt.ylabel(\"Frequency\")\n", + "# plt.show()\n", + "\n", + "# size = regression_mean_width_score(y_pis[:,0], y_pis[:,1])\n", + "# print(\"Avg. interval size: {:.2f}\".format(size))\n", + "# cov = regression_coverage_score(y_test.values.ravel(), y_pis[:,0], y_pis[:,1])\n", + "# print(\"Coverage: {:.2%}\".format(cov))" + ] + }, { "cell_type": "code", "execution_count": 41, @@ -578,35 +621,13 @@ } ], "source": [ - "# alphas = [0.025, 0.975, 0.5]\n", - "# models = []\n", - "# for a in alphas:\n", - "# m = LGBMRegressor(random_state=42, objective='quantile', alpha = a)\n", - "# m.fit(X_train, y_train.values.ravel())\n", - "# models.append(m)\n", - "# cqr = MapieQuantileRegressor(models, alpha=0.05, cv=\"prefit\")\n", - "# cqr.fit(X_cal, y_cal.values.ravel())\n", - "# y_pred, y_pis = cqr.predict(X_test)\n", - "# # Compute the distances of upper and lower bounds\n", - "# widths = y_pis[:,1] - y_pis[:,0]\n", - "# plt.hist(widths, bins = 40)\n", - "# plt.hist(y_test, bins = 40)\n", - "# plt.hist(y_pred, bins = 40)\n", - "# # Label the x-axis\n", - "# plt.xlabel(\"Interval width\")\n", - "# # Label the y-axis\n", - "# plt.ylabel(\"Frequency\")\n", - "# plt.show()\n", - "\n", - "# size = regression_mean_width_score(y_pis[:,0], y_pis[:,1])\n", - "# print(\"Avg. interval size: {:.2f}\".format(size))\n", - "# cov = regression_coverage_score(y_test.values.ravel(), y_pis[:,0], y_pis[:,1])\n", - "# print(\"Coverage: {:.2%}\".format(cov))\n", - "\n", + "# Train a conformal quantile regression model (method 2)\n", + "# In this approach, mapiequantile regressor is only prvided the data. it will train the required models.\n", "regressor = LGBMRegressor(random_state=42, objective='quantile', alpha = 0.5)\n", "mapie = MapieQuantileRegressor(estimator=regressor, cv=\"split\", alpha = 0.05)\n", "mapie.fit(X_train, y_train.values.ravel(), X_calib=X_cal, y_calib=y_cal.values.ravel())\n", "y_pred, y_pis = mapie.predict(X_test)\n", + "\n", "# Compute the distances of upper and lower bounds\n", "widths = y_pis[:,1] - y_pis[:,0]\n", "plt.hist(widths, bins = 40)\n", @@ -641,10 +662,20 @@ } ], "source": [ + "# Save the model for future use\n", "from joblib import dump, load\n", "dump(mapie, r'C:\\Users\\coach\\myfiles\\postdoc\\Uncertainty\\models\\CQR_GEDIHeight07122023.joblib')" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Inference\n", + "\n", + "The inference function below is able to estimate canopy height and quantify uncertainty for any planet VNIR image. The function parralises on image chips of size patchSize." + ] + }, { "cell_type": "code", "execution_count": 27, @@ -671,7 +702,7 @@ " Run inference on infile (Geotiff) using trained model.\n", "\n", " Args:\n", - " infile (str):\n", + " infile (str): A complete path to an image to perform inference on.\n", " confModel (mapie classifier): Calibrated conformal predictor based on the MAPIE package.\n", " outfile (str): File path and file name to save output geoTiff files\n", " patchSize (int): The height and width dimensions of the patch to process\n", @@ -749,6 +780,33 @@ " raise ex" ] }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e1b2d05b63ac4579aed848954853d053", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "width_010.tif: 0%| | 0/19600 [00:00