{ "cells": [ { "cell_type": "markdown", "id": "10e47cc1-499d-492b-8eab-e28c7b56f376", "metadata": {}, "source": [ "# Visualizing relationships between feature spaces\n", "When analyzing feature measurements and dimensionality reduction results, e.g. involving a UMAP, one often switches between those spaces. In this notebook we demonstrate how one can interpolated between these spaces." ] }, { "cell_type": "code", "execution_count": 1, "id": "ec144f98-b506-4ea5-8b1f-1f68edfda95e", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "id": "110586a2-9245-4b55-83f0-75ae07680f6c", "metadata": {}, "source": [ "First, we load a pandas dataframe of a .csv file containing some measurements, two UMAP columns and a manual selection of some data points." ] }, { "cell_type": "code", "execution_count": 2, "id": "b08e18c9-5678-4d0e-a4c0-5fab35ff5a54", "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", " \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", "
Unnamed: 0areamean_intensityminor_axis_lengthmajor_axis_lengtheccentricityextentferet_diameter_maxequivalent_diameter_areabbox-0bbox-1bbox-2bbox-3UMAP1UMAP2selection
00422192.37914716.48855034.5667890.8789000.58611135.22783023.17988501130357.6858683.738014False
11182180.13186811.73607420.8026970.8256650.78787921.37755815.22266705311748.7680597.172123True
22661205.21633928.40950230.2084330.3399340.87433932.75667929.010538095281226.1299493.477662False
33437216.58581223.14399624.6061300.3395760.82608726.92582423.5882530144231675.4101764.095456False
44476212.30252119.85288231.0751060.7693170.86388431.38471024.6183270237292565.2802503.861278False
\n", "
" ], "text/plain": [ " Unnamed: 0 area mean_intensity minor_axis_length major_axis_length \\\n", "0 0 422 192.379147 16.488550 34.566789 \n", "1 1 182 180.131868 11.736074 20.802697 \n", "2 2 661 205.216339 28.409502 30.208433 \n", "3 3 437 216.585812 23.143996 24.606130 \n", "4 4 476 212.302521 19.852882 31.075106 \n", "\n", " eccentricity extent feret_diameter_max equivalent_diameter_area \\\n", "0 0.878900 0.586111 35.227830 23.179885 \n", "1 0.825665 0.787879 21.377558 15.222667 \n", "2 0.339934 0.874339 32.756679 29.010538 \n", "3 0.339576 0.826087 26.925824 23.588253 \n", "4 0.769317 0.863884 31.384710 24.618327 \n", "\n", " bbox-0 bbox-1 bbox-2 bbox-3 UMAP1 UMAP2 selection \n", "0 0 11 30 35 7.685868 3.738014 False \n", "1 0 53 11 74 8.768059 7.172123 True \n", "2 0 95 28 122 6.129949 3.477662 False \n", "3 0 144 23 167 5.410176 4.095456 False \n", "4 0 237 29 256 5.280250 3.861278 False " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('../../data/blobs_statistics_with_umap.csv')\n", "\n", "df.head()" ] }, { "cell_type": "markdown", "id": "d1c0cc9c-aa97-42bd-8092-4d813b3d72f2", "metadata": {}, "source": [ "We then visualize the two UMAP columns and two other columns of features of interest." ] }, { "cell_type": "code", "execution_count": 3, "id": "c161f9ff-3ba4-433e-be68-28e96e31a61e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.scatterplot(data=df, x='UMAP1', y='UMAP2', hue='selection')" ] }, { "cell_type": "code", "execution_count": 4, "id": "8afa143c-d333-4db3-a1ee-d490387d3964", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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L7l6NpMg8P3whx07dghSqVR4++23hRMnTggrVqwQ1Gq18PnnnzvP4ftSd0aOHCk0atTIOTV7zZo1QmRkpDB58mTnOXw/fINhppY+/PBDITk5WZDL5cItt9zinCpM3gXA7WPp0qXOc+x2u/DGG28IsbGxgkKhEHr27CkcOHDA5ToVFRXC2LFjhfDwcEGlUgn33HOPcO7cuTr+buqna8MM3w//+OGHH4Q2bdoICoVCaNGihfDxxx+7tPN9qTtGo1GYMGGCkJSUJCiVSiE1NVWYNm2aYDabnefw/fANkSAIgj97hoiIiIhuBsfMEBERUVBjmCEiIqKgxjBDREREQY1hhoiIiIIawwwREREFNYYZIiIiCmoMM0RERBTUGGaIiIgoqDHMEBERUVBjmCEiIqKgxjBDREGpsrLS3yUQUYBgmCGigLB27Vr06NEDoaGhiIiIwD333INTp04BAM6cOQORSISvvvoKvXv3hlKpxOeffw4AWLp0KVq2bAmlUokWLVpg0aJFLtedMmUKmjVrBrVajdTUVEyfPp1BiKiekfq7ACIiACgrK8OkSZPQtm1blJWV4fXXX8eQIUOQkZHhPGfKlCmYO3culi5dCoVCgSVLluCNN97AwoUL0bFjR+zduxfPPvssNBoNRo4cCQDQarVYtmwZ4uPjceDAATz77LPQarWYPHmyn75TIvI27ppNRAEpPz8f0dHROHDgAEJCQpCSkoL58+djwoQJznOSkpIwe/ZsDBs2zHnsrbfewk8//YStW7e6ve67776LL7/8Ert27fL590BEdYM9M0QUEE6dOoXp06dj27ZtKCgogN1uBwCcO3cOrVq1AgB07tzZeX5+fj6ysrLw9NNP49lnn3Uet1qt0Ov1zq+/+eYbzJ8/HydPnkRpaSmsVit0Ol0dfVdEVBcYZogoINx7771ITEzEkiVLEB8fD7vdjjZt2sBisTjP0Wg0zj9fDjtLlixB165dXa4lkUgAANu2bcNjjz2GmTNnYuDAgdDr9Vi1ahXmzp1bB98REdUVhhki8rtLly7hyJEj+Oc//4k77rgDALB58+brPicmJgaNGjXC6dOnMWLECLfnbNmyBcnJyZg2bZrz2NmzZ71XOBEFBIYZIvK7sLAwRERE4OOPP0ZcXBzOnTuH11577YbPmzFjBsaPHw+dTodBgwbBbDZj165dKCoqwqRJk9C0aVOcO3cOq1atQpcuXfDjjz/i22+/rYPviIjqEqdmE5HficVirFq1Crt370abNm3w8ssv4913373h85555hl88sknWLZsGdq2bYtevXph2bJlSElJAQDcf//9ePnllzF27Fh06NABW7duxfTp03397RBRHeNsJiIiIgpq7JkhIiKioMYwQ0REREGNYYaIiIiCGsMMERERBTWGGSIiIgpqDDNEREQU1BhmiIiIKKgxzBAREVFQY5ghIiKioMYwQ0REREGNYYaIiIiC2v8HYfLwFCISZ6IAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.scatterplot(data=df, x='area', y='feret_diameter_max', hue='selection')" ] }, { "cell_type": "markdown", "id": "4b59df96-34a0-49d3-bb9a-f3175ab03989", "metadata": {}, "source": [ "## Interpolating between feature spaces\n", "Drawing an animation of plots that are interpolated between the two plots above can be done using Python. As the procedure is a bit complicated, we asked a language model to write this code for us. Manual adaption of the code was done to make the video play back-and-forth and to modify frame delay. Hence, only the last code line was written by a human." ] }, { "cell_type": "code", "execution_count": 5, "id": "67853ee1-3eee-4fd9-a673-4ed327877d7f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " This notebook may contain text, code and images generated by artificial intelligence.\n", " Used model: gpt-4o-2024-08-06, vision model: gpt-4o-2024-08-06, endpoint: None, bia-bob version: 0.22.0.. Do not enter sensitive or private information and verify generated contents according to good scientific practice. Read more: https://github.com/haesleinhuepf/bia-bob#disclaimer\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from bia_bob import bob\n", "bob.initialize(model=\"gpt-4o-2024-08-06\", vision_model=\"gpt-4o-2024-08-06\")" ] }, { "cell_type": "raw", "id": "ed8ab092-8e76-42e6-b64e-d887997a71be", "metadata": { "tags": [] }, "source": [ "%%bob \n", "Given a dataframe `df`:\n", "* Normalize all colums so that they range between 0 and 1.\n", "* Use seaborn to draw a scatterplot of \"area\" versus \"feret_diameter_max\".\n", "* Also draw a scatterplot of \"UMAP1\" versus \"UMAP2\".\n", "* Then build a for-loop that draws 10 additional interpolated plots in between these two, \n", "* so that from plot to plot, the axes are less area-versus-feret and more UMAP1-versus-UMAP2. \n", "* In all plots, the column \"selection\" is used as hue of the datapoints.\n", "* Write each individual plot into a BytesIO object, and load it as image into a numpy array.\n", "* Store the numpy array in an list.\n", "* Use Stackview.animate to show the list of plots." ] }, { "cell_type": "code", "execution_count": 6, "id": "9613aea8-06b8-4bef-95fd-3e73f11309cc", "metadata": { "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\structure\\code\\stackview\\stackview\\_animate.py:64: UserWarning: The image is quite large (> 10 MByte) and might not be properly shown in the notebook when rendered over the internet. Consider subsampling or cropping the image for visualization purposes.\n", " warnings.warn(\"The image is quite large (> 10 MByte) and might not be properly shown in the notebook when rendered over the internet. Consider subsampling or cropping the image for visualization purposes.\")\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "from sklearn.preprocessing import MinMaxScaler\n", "from io import BytesIO\n", "from skimage.io import imread\n", "import matplotlib.pyplot as plt\n", "import stackview\n", "\n", "# Normalize dataframe columns to range between 0 and 1\n", "scaler = MinMaxScaler()\n", "df_normalized = df.copy()\n", "df_normalized[df_normalized.columns] = scaler.fit_transform(df_normalized[df_normalized.columns])\n", "\n", "# Create initial plots\n", "fig, ax = plt.subplots(figsize=(8, 6))\n", "\n", "# Storage for images\n", "plot_images = []\n", "\n", "# Interpolate and generate plots\n", "for i in np.linspace(0, 1, 12): # 12 steps including 0 and 1\n", " ax.clear()\n", " x_col = (1 - i) * df_normalized['area'] + i * df_normalized['UMAP1']\n", " y_col = (1 - i) * df_normalized['feret_diameter_max'] + i * df_normalized['UMAP2']\n", " \n", " sns.scatterplot(x=x_col, y=y_col, hue=df['selection'], ax=ax)\n", " ax.set_title(f\"Interpolation {i:.1f}\")\n", " \n", " buf = BytesIO()\n", " plt.savefig(buf, format='png')\n", " buf.seek(0)\n", " plot_image = imread(buf)\n", " plot_images.append(plot_image)\n", "\n", "plt.close(fig) \n", "\n", "# Use Stackview to animate the sequence of plots\n", "stackview.animate(np.stack(plot_images + plot_images[::-1]))" ] }, { "cell_type": "code", "execution_count": null, "id": "2fd79f36-0bbb-431a-a17b-8650af768d5b", "metadata": {}, "outputs": [], "source": [] } ], "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.11.9" } }, "nbformat": 4, "nbformat_minor": 5 }