From 67e9431b338f38f107be21152b5701d3c713c5a5 Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Thu, 20 Mar 2025 14:18:14 +0100 Subject: [PATCH 1/3] Add heatmap_triangle function --- src/anndata_plot/pl/__init__.py | 1 + src/anndata_plot/pl/heatmap_triangle.py | 132 ++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 src/anndata_plot/pl/heatmap_triangle.py diff --git a/src/anndata_plot/pl/__init__.py b/src/anndata_plot/pl/__init__.py index c2315dd..d662e1a 100644 --- a/src/anndata_plot/pl/__init__.py +++ b/src/anndata_plot/pl/__init__.py @@ -1 +1,2 @@ from .basic import BasicClass, basic_plot +from .heatmap_triangle import heatmap_triangle diff --git a/src/anndata_plot/pl/heatmap_triangle.py b/src/anndata_plot/pl/heatmap_triangle.py new file mode 100644 index 0000000..452c3ad --- /dev/null +++ b/src/anndata_plot/pl/heatmap_triangle.py @@ -0,0 +1,132 @@ +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd + +from typing import Union, Literal, Optional + + +def heatmap_triangle( + matrix: Union[pd.DataFrame, np.array], + direction: Literal["up", "down", "left", "right"] = "up", + names=None, + ticks_rotation: float = 0, + ax: Optional["matplotlib.axes._axes.Axes"] = None, + show_cbar: bool = False, + cmap: str = "coolwarm", + cbar_label: str = "", + vmin: Optional[float] = None, + vmax: Optional[float] = None, + **cbar_params, + ) -> None: + """Plot upper diagonal of a `matrix` as a triangular heatmap + + Parameters + ---------- + matrix : Union[pd.DataFrame, np.array] + A square matrix to plot. Only the upper diagonal is plotted assumng that the matrix is symmetrical, + e.g. containing pairwise distances + direction : Literal["up", "down", "left", "right"] + A direction in which the triangle will be pointed + names : Optional + Names of the observations to use as tick labels. If `matrix` is a DataFrame, its index will be used + ticks_rotation : float = None + Rotation of ticks if `names` are set + ax : Optional["matplotlib.axes._axes.Axes"] + Axis to plot the heatmap on + show_cbar : bool = False + Whether to display colorbar + cmap : str = "coolwarm" + Color map for the plot + cbar_label : str = "" + Title of the colorbar + vmin : Optional[float] + Minimum value for colormap + vmax : Optional[float] + Maximum value for colormap + **cbar_params + Optional colorbar parameters + """ + N = len(matrix) + + if names is None and type(matrix) is pd.DataFrame: + names = matrix.index + + # Define a mesh for heatmap. It will be centered at 0 and take values from -N to N + # Each square will thus have length 2 + A = np.array([(y, x) for x in range(N, -1, -1) for y in range(N + 1)]) - N / 2 + + # Rotate the matrix by 45 degrees + rotation = [[1, 1], [-1, 1]] + A = A @ rotation + + # Additionally rotate the matrix according to the direction + match direction: + case "left": + x = np.rot90(matrix, k=0) + case "up": + x = np.rot90(matrix, k=1) + case "right": + x = np.rot90(matrix, k=2) + case "down": + x = np.rot90(matrix, k=3) + case _: + raise ValueError('Wrong value of "rotation". Please set one of "up", "down", "left", "right"') + + # Create the mesh and plot it + X = A[:, 1].reshape(N + 1, N + 1) + Y = A[:, 0].reshape(N + 1, N + 1) + caxes = plt.pcolormesh(X, Y, x, axes=ax, cmap=cmap, vmin=vmin, vmax=vmax) + + if ax is None: + ax = plt.gca() + + # Remove meaningless ticks and put sample names to the correct side + match direction: + case "left": + ax.set_xlim(right=0) + ax.set_xticks([]) + ax.yaxis.tick_right() + case "up": + ax.set_ylim(bottom=0) + ax.set_yticks([]) + case "right": + ax.set_xlim(left=0) + ax.set_xticks([]) + case "down": + ax.set_ylim(top=0) + ax.set_yticks([]) + ax.xaxis.tick_top() + + + # If names are given, set them as ticks + label_loc = np.arange(-N, N, 2) + 1 + match direction: + case "left" | "right": + if names is not None: + ax.set_yticks(label_loc, names, rotation=ticks_rotation) + else: + ax.set_yticks([]) + case "up" | "down": + if names is not None: + ax.set_xticks(label_loc, names, rotation=ticks_rotation) + else: + ax.set_xticks([]) + + # Add a colorbar below the heatmap triangle + if show_cbar: + if cbar_params is None: + cbar_params = {} + + if "orientation" not in cbar_params: + match direction: + case "up" | "down": + cbar_params["orientation"] = "horizontal" + case "left" | "right": + cbar_params["orientation"] = "vertical" + + cb = plt.colorbar( + caxes, + ax=ax, + **cbar_params, + ) + cb.set_label(cbar_label) From 87830d8cdeaa0f5d678ba16d5411d56351a9ae74 Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Thu, 20 Mar 2025 14:18:27 +0100 Subject: [PATCH 2/3] Add examle notebook for heatmap_triangle --- docs/notebooks/heatmap_triangle.ipynb | 930 ++++++++++++++++++++++++++ 1 file changed, 930 insertions(+) create mode 100644 docs/notebooks/heatmap_triangle.ipynb diff --git a/docs/notebooks/heatmap_triangle.ipynb b/docs/notebooks/heatmap_triangle.ipynb new file mode 100644 index 0000000..64acbc7 --- /dev/null +++ b/docs/notebooks/heatmap_triangle.ipynb @@ -0,0 +1,930 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import scanpy as sc\n", + "import scipy\n", + "\n", + "from anndata_plot.pl import heatmap_triangle\n", + "\n", + "from typing import Union, Literal, Optional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's simulate some data and display it as triangular heatmap:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "N = 10\n", + "names = [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"i\", \"h\", \"k\"]\n", + "X = np.random.normal(size=(N, N))\n", + "X = pd.DataFrame(X, index=names, columns=names)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + " \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", + "
abcdefgihk
a0.7871620.0215710.6852810.0650720.198667-0.7039121.8166710.107251-0.2175460.632625
b0.756672-0.649788-0.005833-0.757035-0.8890040.091159-1.576321-0.1869570.4537870.584943
c1.4328931.426802-0.4880081.174848-0.335347-1.882018-0.2312802.5286130.126597-0.876188
d-1.062865-1.8422851.3784730.174330-1.222331-1.1433700.102501-0.3580871.239654-0.639304
e-0.787745-0.683633-0.076422-1.5716770.139861-0.4354781.780083-0.726927-0.895388-2.331996
f1.353155-1.4431950.518211-0.4924641.988812-1.7286961.9072050.2025750.0881101.101590
g0.0185350.073646-1.541082-0.304320-0.4212370.131637-0.193189-0.4790911.5165071.177065
i-0.9556350.5444060.350045-0.5610280.7599980.1569311.1606250.437028-1.554155-0.549900
h0.598876-0.558970-1.341143-0.1322380.445032-0.063816-0.3738520.207822-0.6252091.634587
k2.635872-0.5158742.556876-0.5350441.2403941.6801560.9795360.719624-0.978227-1.523083
\n", + "
" + ], + "text/plain": [ + " a b c d e f g \\\n", + "a 0.787162 0.021571 0.685281 0.065072 0.198667 -0.703912 1.816671 \n", + "b 0.756672 -0.649788 -0.005833 -0.757035 -0.889004 0.091159 -1.576321 \n", + "c 1.432893 1.426802 -0.488008 1.174848 -0.335347 -1.882018 -0.231280 \n", + "d -1.062865 -1.842285 1.378473 0.174330 -1.222331 -1.143370 0.102501 \n", + "e -0.787745 -0.683633 -0.076422 -1.571677 0.139861 -0.435478 1.780083 \n", + "f 1.353155 -1.443195 0.518211 -0.492464 1.988812 -1.728696 1.907205 \n", + "g 0.018535 0.073646 -1.541082 -0.304320 -0.421237 0.131637 -0.193189 \n", + "i -0.955635 0.544406 0.350045 -0.561028 0.759998 0.156931 1.160625 \n", + "h 0.598876 -0.558970 -1.341143 -0.132238 0.445032 -0.063816 -0.373852 \n", + "k 2.635872 -0.515874 2.556876 -0.535044 1.240394 1.680156 0.979536 \n", + "\n", + " i h k \n", + "a 0.107251 -0.217546 0.632625 \n", + "b -0.186957 0.453787 0.584943 \n", + "c 2.528613 0.126597 -0.876188 \n", + "d -0.358087 1.239654 -0.639304 \n", + "e -0.726927 -0.895388 -2.331996 \n", + "f 0.202575 0.088110 1.101590 \n", + "g -0.479091 1.516507 1.177065 \n", + "i 0.437028 -1.554155 -0.549900 \n", + "h 0.207822 -0.625209 1.634587 \n", + "k 0.719624 -0.978227 -1.523083 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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w9tQ4e2wY6mht6HVCwgBAEC+zCwDAAAgDWIAAIDCEQMAABSOGPDg5JNPdu9+97tTPww04M8oreqlSW9961vdM57xjPE3Lrv99ttTP6RiKX8sKD92629Hq286BABDXHvtte4rX/mKu/76693znvc8t88+T/1cB8R35ZVXup133jn1w4AxxACA4O655x63//77uxNP1PtJfLmp1hnA3Jmg+ozhpJNOGv9UxL333tu95jWvGf/FoWbz5s3uHe94x/jbPlaf9XzkIx8ZT6Nqqp9D8ZnPfMYdcsgh4699fc5znuM++cmn//hkyx555BH3pje9ye2xxx7jJ6DPf/7zTlH1Z3Huuee65z73uW7ZsmXuyCOPdFdccYVT85a3vMW9853vdL/+9a/HJ4KDDjrIqam+t/sb3vAGt/vuu4/fp8477zyTU28bqo978uPiAx/4wDhqnvWsZ7mPfexjTt0111wzfu742tee+qmVRcZA9Rf3e9/7XvfjH//Yfe973xv/HITXv/714z9wJZdddpnbaaed3I9+9CN3wQUXuC984QvuS1/6klNz5plnuk996lPjmLnrrrvc5Zdf7vbbbz+n5P3vf7+74YYb3FVXXeW++93vjqfpNWvWODVVCHz1q191F198sbvzzjvde97zHvfGN75x/LYpqT4ezjnnnPHPN/ntb3/rbrvtNqem+jvqpptucldffbW77rrr3I033ij5PpWD6u/aKspuvfXW8Scu1ftW9Wei6vLLL3ennHLKOASq4ExmZMz9999ffTo9uuOOO0YqXv7yl48OP/zw0ZYtW7b+3hlnnDH+PSULCwujpUuXji699NKRqo0bN4522WWX0Te+8Y2tv7d+/frRsmXLRqeddtpIxWOPPTbabbfdRjfffPM2v3/qqaeOTjnllJGa8847b3TggQeOFFUfFzvvvPPom9/85tbfe+ihh8Z/PkrvU5N/Xyk+7vqxn3TSSdv83jHHHDP++1bxz+Ciiy4azc3Nja6//vrUD2mU/DUDv/zlL93ZZ589rrwHHnhg6yJQTYpHHHGEU3H88cdv8+OdTzjhhPE8/eSTT7olS5Y4BT/72c/cpk2b3Ctf+UqnqjoxPf744+64447b+nvVnHjYYYc5JXfffbd79NFH3ate9aptfr9624466qhkj6tEv/rVr9wTTzzhjj322K2/V026au9TuXjRi160zX+uzjb33XefU3PFFVeMH3e1OB1zzDGpH076FxC+9rWvdQceeKC79NJLxz9vuYqBKgKqv/QQV3WXhg0PP/zw1lvis5/97G3+fxa+jzmQyvZfCVF9EqZ2Vq5UUV+dmr785S+7l7zkJdt8MlncawbWr1/vfvGLX7gPf/jD489GDz/8cPfggw86RdWyMemWW25xz3/+82VWgUr1eKsgqF67oerggw8e/2Ux+edRvU/Nz887JS984QvHT/rVQla9mHPy/1atWpX64RWl+lLI6n1q8rUOGzZskHufgr2/q37wgx+MX9tUvcC26GVgr732Gn8FwSWXXDKeeqq/+D74wQ86RdVjr15k9La3vW1ce1/84hflXsW+6667ujPOOGP8St1ddtnFvfSlL3X333//+MVrp556qlNQfQVB9VirFxFW71vPfOYz3Yc+9KHxC1OVLF++3L3vfe8bv2iw+qyn+oqb6gmomhRXrFjh3vzmN6d+iMWo/iyq/72r96nq5FS9T1U/aa56n0r92Ry0HXrooeMgqL7Co3oB+vnnn19mDFQfTF//+tfdu971rvFpoLrBXXjhheP/YdRUX8r2+9//fnxXrNaA0047bfwd19RUX0VQvVNWr+NYt27dONLe/va3OyWf/exnxzN7dYKq/iI//fTTx0+kaj7xiU+4fffdd/xVBdXduvry26OPPtqdddZZqR9acaqvDqo+Dqovfa5irArmtWvXjgMaGKJ63vv+978/ft6rnjtSfRLJjzAGgB5fEl29lqP6i1tlNQNMv4AQAKz7yU9+4n7+85+Pl79qZaq+tr3yute9LvVDA7wgBgCghc997nPjFzxXr6d58YtfPP7GQ/yMBeSCMwEAAIXTeok1AADwjhgAAKBwxAAAAIUjBgAAKBwxAABA4YgBAAAKRwwAAFA4YgAAgMIRAwAAuLL9f099/elne/qHAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "heatmap_triangle(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use `cmap` argument to control the colormap:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGdCAYAAACPX3D5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAALH9JREFUeJzt3XuQ3WWd5/GnOyEhQHcjoFwkgIBx4jA4KIhBdrWW0trdkmKsmZqqLC5SxZQ6UyrgBURFXSnHK+DtD0scR60x4yjrrrpuWboKloqIlDDlBeQ2K2HDaETpDpeES5+t32F+8SSc/PK7PJfv53ner6qpYGSs091J97s/39PdM6PRaOQAAECxZlM/AAAAkBYxAABA4YgBAAAKRwwAAFA4YgAAgMIRAwAAFI4YAACgcMQAAACFW9nmX1peXnZbtmxxc3NzbmZmJvyjAgAAg1XfV3Dbtm3uiCOOcLOzs8NioAqBtWvXDn9UAAAgus2bN7sjjzxyWAxUi0D9PzY/P+/v0QFIavnXJ+3yn2cPvSnZYwHg39LS0viT+frj+KAYqE8DVQgQA0Aelv91nXNzK3b9zYdOdrOH3ZbqIQEIZG8nfp5ACABA4YgBoNRVoMd/ByBPxABQmDYf7AkCoCzEAAAAhSMGgIJ0+YyfdQAoBzEAFKLPB3eCACgDMQAAQOGIAaAAQz7DZx0A8kcMAJnz8cGcIADyRgwAAFA4YgDImM/P6FkHgHwRA0CmQnzwJgiAPBEDAAAUjhgAMhTyM3jWASA/xACQmRgfrAkCIC/EAAAAhSMGgIzE/IyddQDIBzEAZCLFB2eCAMgDMQAAQOGIASADKT9DZx0A9BEDgDgLH4wtPAYA/REDAAAUjhgAhFn6jNzSYwHQDTEAiLL4wdfiYwKwd8QAAACFIwYAQZY/A7f82ABMRwwAYhQ+2Co8RgB/QAwAAFA4YgAQovQZt9JjBUpHDAAiFD+4Kj5moETEAAAAhSMGAAHKn2ErP3agFMQAYFwOH0xzeBmAnBEDAAAUjhgADDv2H//W5eLEC69M/RAA7AExABiVUwjUCALAJmIAMB4Cx19zrlP3p+//653/TBAA9hADgADlIJgMAQA2EQOAMTmeB3bHOgDYQgwAIiGguA40rQIEAWAHMQAIUQoCzgOADmIAMKKE88DuWAcAG4gBQCwEFNaBLqsAQQCkRwwAgiwHAecBQA8xACRW4nlgd6wDQFrEACAaAhbXgSGrAEEApEMMAMIsBQHnAUAXMQAkwnngyVgHgDSIAUA8BCysAz5XAYIAiI8YADKQMgg4DwD6iAEgMs4De8c6AMRFDACZhECKdSDkKkAQAPEQA0BGYgYB5wEgH8QAEAnnge5YB4A4iAEgsxCIsQ7EXAUIAiA8YgDIUMgg4DwA5IcYAALjPDAc6wAQFjEAZBoCIdaBlKsAQQCEQwwAGfMZBJwHgHwRA0AgnAf8Yx0AwiAGgMxDwMc6YGkVIAgA/4gBoABDgsBSCAAIgxgAMl4FcsU6APhFDACFhECfdcDyKkAQAP4QA0BBugSB5RAA4BcxABSwCuSKdQDwgxgACguBNuuA0ipAEADDEQNAgZqCQCkEAPhBDAAFrQK5Yh0AhiEGgEJDYNo6oLwKEARAf8QAULDJIFAOAQDDrBz4/w8Ua8N/udy5M10WQXDADWtcDh6892i3/+G/Sv0wADksA0DfEIDZIADQDTEADHDo11Y7dXPXr3Ezy07eDy/6cOqHAMgiBoCBq4ByEFQhUFMOgt1DgHUA6IYYADrgPKCDIADaIwYADxTXgclVQHkd4DwADEcMAJ5WAaUgmBYCikGwtxBgHQDaIQaAFjgP6CIIgL0jBgCPFNaBplVAaR3gPAD4QwwAnlcBy0HQJgQUgqBrCLAOAM2IAaAB54F8EATAnhEDQAAW14Euq4DldYDzAOAfMQAEWgUsBUGfELAYBENDgHUAmI4YAKbgPJAvggB4MmIACMjCOjBkFbC0DnAeAMIhBoDAq0DKIPARAhaCwHcIsA4AuyIGgAmcB8pBEAB/QAwAEaRYB3yuAinXAc4DQHjEABBpFYgZBCFCIEUQhA4B1gHgCcQAAACFIwaAiM8ViLEOhFwFYq4Dsc4DrAMAMQBEf9JgyCCIEQIxgiD28wQIApSOGAAAoHDEAIqW6ksJQ6wDMVeBkOtAqq8eYB1AyYgBFCv19xTwGQQpQiBEEKT+MkKCAKUiBgAAKBwxgCKlXgV8rgMpVwGf60DqVaDGOoASEQMojpUQ8BEEFkLARxBYCYEaQYDSEAMAABSOGEBRrK0CQ9YBS6vAkHXA2ipQYx1ASYgBFMNqCPQJAosh0CcIrIZAjSBAKYgBAAAKRwygCNZXgS7rgOVVoMs6YH0VqLEOoATEALKnEgJtgkAhBNoEgUoI1AgC5I4YAACgcMQAsqa2CjStA0qrQNM6oLYK1FgHkDNiABAIAsUQmBYEqiEA5I4YQLaO/+AVLocgUA6BySDIIQSec8GVqR8CEAQxgCzlEAKwiSBAjogBZB0CW0+accr+9T8/4pZO2e7UHfyLHe7Mc/7aKTvt/Rfs/GeCALkhBgDDIVBTDoIqBGrqQQDkihhA9ucB9XUAtlaBGusAckIMoIjnCagFweQqoLwOTK4CquvAtBCoEQTIBTEACISAYhBMCwHVIAByRwygmK8eUFsHYHsVqLEOIAfEAIr6MkLrQdC0CiitA02rgMo60CYEagQB1BEDgFAIKARBmxBQCQKgFMQAivvmQtbXAWitAjXWASgjBlDkdxm0FgRdVgHL60CXVcDqOtAnBGoEAVQRA4BgCFgMgj4hYDUIgNIQAyj2Zw9YWwegvQrUWAegiBhA0T+EKHUQDFkFLK0DQ1YBK+uAjxCoEQRQQwwAwiFgIQh8hICVIABKRQzAlf6jiVOvA0jP5ypQYx2AEmIARYdAqiDwuQqkXAd8rgKp1oEQIVAjCKCCGAAiCxECKYIgRAjUOBcAcREDcKWvAjXOBeUJuQrUWAeggBiAeTFCIIdVIOY6EHIVyHEdIAhgHTEARFoHYoRAjCCIEQIxgiDGKgCoIAZgWopVgHNB/lKEAOsALCMGYBbnAXvrQMxVoMa5AAiPGAACrwMpQiBEEKQIgRBBwHkAeDJiACZZWAU4F+THQgiwDsAiYgDmWAiBHFYBn+tAylWgxrkACIcYAAKtAxZCwEcQWAgBH0FgYRUArCIGYIrFVYBzgT6LIcA6AEuIAZhhMQRyWAWGrAOWVoEa5wLAP2IA8LwOWAyBPkFgMQT6BIHFVQCwhhiACQqrAOcCPQohwDoAC4gBJKcQAjmsAl3WAcurQI1zAeAPMQB4WgcUQqBNECiEQJsgUFgFACuIASSluApwLrBPMQRYB5ASMYBkFEMgh1WgaR1QWgVqnAuA4YgBYOA6oBgC04JAMQSmBYHiKgCkRgwgiY3Xv8rlEATKITAZBMohMBkEOYTAWd9/beqHgAIRA4guhxAAQiIIEBsxgGQhcMq/u9UpG806N/vr1U7d6OGV7q6/XOHU/b9/v9ptP9hJO+Yv7tz5zwQBYiIGkJRqEFQhUFMOgioEaspBUIVATTUIJkMAiI0YQDScB4BuWAcQCzGA5CGgtg5MrgLK68DkKqC8DkyuAqrrQNMqQBAgBmIAJqgEwbQQUAyCaSGgGATTQkAtCDgPwAJiAMFxHgCGYR1AaMQAzISA9XWgaRVQWgeaVgGldaBpFVBZB7qsAgQBQiIGYIrVIGgTAgpB0CYEFIKgTQhYDwLOA7CEGEAwnAcAv1gHEAoxAHMhYG0d6LIKWF4HuqwClteBLquA1XVgyCpAECAEYgAmFwErQdAnBCwGQZ8QsBgEfULAWhD4OA8QBPCNGIBZVoJgCAtBMCQELAXBkBCwgucJwCpiAF7l9DyBIasAbLKyDvjAOgCfeHcH0yGQah3wGQIp1wEfq4CFdcDnKpAqCEKsAgQBfCEGYB7ngvQhkDIIOA8A4RED8ILzAJRwLgB2xbs9SIRArHUgZAjEXAdCrAIp1oGQq0CsIIixChAEGIoYgAzOBelDIGYQcB4A4iEGMAjnASjjXAA8gXd/kAqBUOtAzBAIuQ7EWAVirAMxV4FQQZBiFSAI0BcxADmcC9KHQMgg4DwAxEcMoBfOA8gJ5wKUjneDkAwBX+tAyhDwuQ6kWAVCrAMpVwFfQWBhFSAI0BUxALkQqHEuSB8CPoOA84BfBAG6IAYgbUgQWDkPDAkCCyHgIwishMCQdcBSCABdGXl3CAWWVoGhrIQA7OH5AygR7xIhHwKlngssrQJD1gErq8AQllcBggBtEAPIQpcgsLoKdAkCiyHQJwishkCXdcByCABtGX23CEssrwJdWQ0B2MO5ACXhXSOyCYFSzgWWV4Eu64DVVaALpVWAIEATYgBZaQoClVWgKQgUQqBNEKiEQNM6oBQCwN6IvHtECkqrwN6ohADs4VyAEvAuEtmFQK7nAqVVoGkdUFkFmiivAgQBpiEGkKXJIFBdBSaDQDEEpgWBaghMrgPKIQDsiei7SYR08nlXuFyCQDUEJoNAOQQmg0A1BCaDIJcQeNfPzkr9EGCM+LtK+JZLCABoRhBgEjGAqSFw+1V/5NRtveho94yvPOyUHfelB9y6v9N+GSoLP1vp9v2tk7Zj7SPun+9Y69SddODmnf9MEKBGDGCPlIOgCgF1VQjUlIOgCoGaehBUlINgMgSAScQAsj8PqK8DsLEK5Ip1ABViAI0hoLgOTFsF1IJgchVQXgcmVwHVdWBaCCiuA02rAEEAYgB7pRQEuZ0HlINgWgioBsE0SkHAeQB7QwwULufzgPo6gPRyPg/sjnWgbMRAwbqEgMI60GYVsB4ETauA0jrQtAqorANtQkBhHeiyChAE5SIGkEUQ5H4eUAqCNiGgEgRtWA4CzgNoixgoVEnnAbV1AOmVdB7YHetAmYiBAg0JAYvrQJ9VwFoQdFkFLK8DXVYBq+tAnxCwuA4MWQUIgvIQA5AOgtLOA5aDoE8I1KwFQR+WgoDzALoiBgpT8nnA+jqA9Eo+D+yOdaAsxEBBfIaAhXXAxyqQOgiGrAKW1oEhq4CVdcBHCFhYB3yuAgRBOYgBSAZB6ecBS0HgIwSsBIEPKYOA8wD6IgYKwXnA7jqA9DgP7BnrQBmIgQKEDIEU60CIVSB2EPhcBVKuAz5XgVTrQIgQSLEOhFwFCIL8EQOQCgLOA3aCIEQI1DgXdMN5AEMRA5njPNAe54LycB5oj3Ugb8RAxmKGQIx1gFXAzjoQchWosQ7YWwUIgnwRA5AIglghEHIdiBECMYIgRgjECIJYq0DIIOA8AF+IgUxxHuiPc0H+OA/0xzqQJ2IgQylDIMQ6wHnAzjoQcxWocS6wtwoQBPkhBmA6CFKFgM91IEUIhAiCFCEQIghSrQI+g4DzAHwjBjLDecAfzgX54TzgD+tAXoiBjFgKAR/rAOcBO+tAylWgxrnA3ipAEOSDGIDJILASAkPWAQsh4CMILISAjyCwsgoMCQJLIYC8EAOZsLQK5IZzgT4rIZAj1oE8EAMZsBwCfdYBK6vAEJZWgSHrgKVVoPRzgeVVgCDQRwzAVBBYDYEu64DFEOgTBBZDoE8QWF0FugSB5RBAHogBcZZXgdxwLtBjNQRyxDqgjRgQphQCbdYBq6tAF5ZXgS7rgOVVoLRzgdIqQBDoIgZgIghUQqBpHVAIgTZBoBACbYJAZRVoCgKlEIA2YkCU0iqQG84F9qmEQI5YBzQRA4KUQ2DaOqCyCjRRWgWa1gGlVSD3c4HyKkAQ6CEGkDQIVENgch1QDIFpQaAYAtOCQHUVmAwC5RCAppnRaDTa27+0tLTkFhYW3OLiopufn4/zyDDVC//iQ27HQh4Nd+Dt+nP77COPuxz8+tQ5l4PFkzRDYNK5J1/ncvC/7/ljd8N//NvUD6N4Sy0/fufxUaWgEAAAFc//xltTPwS0RAwIhsDqxWWnbnmfGfe7Z+/nlN3xVyvcbX+zyqm754w59+gBTt6OF21z+87vcMpWbVnlNn31xS6HVaBGEGggBkQpB0EVAjX1IKgoB0EVAjXlIKhCQF0VAjXlIJgMAeggBgRwHrC5CsAm9XUgR6wD9hEDwiGguA5MrgKq68C0EFBcByZXAeV1YNoqoBYEk6uA8jrQtAoQBLYRA+KUgmBaCKgGwTRKQTAtBBSDILfzgHIQcB7QRgwYxnnAHs4DOtTWgRKwDthFDGQQAgrrQNMqoLIOtAkBhXWgaRVQWgfarALWg6BpFVBaB7qsAgSBTcRAJiwHQZsQUAmCNiwHQZsQUAiC3M8DSkHAeSAPxIBBnAfs4Tygy/o6UCLWAXuIgYxCwOI60GUVsLoO9AkBi+tAl1XA8jrQZxWwFgRdVgHL68CQVYAgsIUYyIylIOgTAlaDoA9LQdAnBCwGQWnnActBwHkgL8SAIZwH7OE8kA9r6wBYBywhBjIMAQvrwJBVwMo64CMELKwDQ1YBS+uAj1UgdRAMWQUsrQM+VwGCwAZiIFMpg8BHCFgJAh9SBoGPELAQBKWfBywFAeeBPBEDBnAesIfzQL5SrwN4MtaB9IiBjEMgxTrgcxVItQ6ECIEU64DPVSDlOhBiFYgdBD5XgZTrQMhVgCBIixjIXMwgCBECNc4F6UMgRRBwHrATBJwH8kYMJMR5wB7OA+XgXGAP60A6xEABIRBjHQi5CtRYB9KvAjHXAVYBO+tAzFWAIEiDGChEyCCIEQIxgiDWKhAyCGKEQIwgiBUCIdeBGCEQIwg4D5SBGEiA84A9nAfKxbnAHtaB+IiBgkIgxDoQcxWocS5IvwqEXAc4D9hZB1KuAgRBXMRAYXwGQYoQCBEEqVYBn0GQIgRCBEGqEPC5DqQIgRBBwHmgLMRARJwH7OE8gBrnAntYB+IhBgoMAR/rQMpVoMa5IP0q4HMd4DxgZx2wtAoQBHEQA4UaEgQWQsBHEFhZBYYEgYUQ8BEEVkJgyDpgIQR8BIGlEEA8xEBhqwBshQDs4VxgD+tAeMRAwSHQZx2wtAqUfi6wtAoMWQesrAJDWFoFhqwDllcBgiAsYqBwXYLAYgj0CQKrq0CXILAYAn2CwGoIdFkHLIZAnyCwHAIIjxgodBUoldUQgD2cC+xhHQiHGAhEKQTarAOWV4HSzgWWV4Eu64DVVaALy6tAl3VAaRUgCMIgBrDXIFAIgTZBoLIKNAWBQgi0CQKVEGhaBxRCoE0QKIUAwiEGCl8FSqESArCHc4E9rAP+EQOeKYfAtHVAaRXI/VygtAo0rQMqq0ATpVWgaR1QXgUIAr+IAewxCBRDYFoQqK4Ck0GgGALTgkA1BCbXAcUQmBYEyiEA/2ZGo9Fob//S0tKSW1hYcIuLi25+fj7Aw8jDX914rrvlfSe4HDx8iOYH0N397jT9iXe/X652OVh+nmYITFq+VTfKJh343K0uB/c/uMbd9ueXpn4YprX9+M0y4DEEAABxrfvvl6V+CFkgBjxb/5afOXXz//wbd+i373XqHjjKuVX3aH9WPX/zarfyYSdv9hHnVv5Q+7PqR+7Z3z12gL8fAZ7KPovOPXjNU10OqwD8IQYCrALKQVCFQE05CKoQUFeFQE05CKoQqKkHQUU5CKoQqCkHwe4hwDowHDEwEOcB+9TXAdhYBWAbQTAMMRCI4jowuQoorwPTVgG1IJhcBZTXgclVQHUdmBYCiuvA5CqgvA5wHgiDGAi4CigFwbQQUAyC3M4DykEwLQRUg2AapSCYFgKKQbC3EGAd6I8Y6InzgB61dQDpcR7QQxD0QwwEprAONK0CSutAm1XAehA0rQJK60DTKqCyDrQJAYV1oGkVUFoHOA+ERQxEWAUsB0GbEFAIgtzPA0pB0CYEVIKgDctB0CYEFIKgawiwDnRHDHTEeUCf9XUA6XEe0EcQdEMMRGJxHeiyClheB/qsAtaCoMsqYHkd6LIKWF0H+oSAxXWgyypgeR3gPBAHMRBxFbAUBH1CwGIQlHYesBwEfULAahD0YSkI+oSAxSAYGgKsA+0RAy1xHsiPtXUA6XEeyA9B0A4xEJmFdWDIKmBpHfCxCqQOgiGrgKV1YMgqYGUd8BECFtaBIauApXWA80BcxECCVSBlEPgIAQtBUPp5wFIQ+AgBK0HgQ8og8BECFoLAdwiwDuwdMbAXnAfyl3odQHqcB/JHEDQjBhJJsQ74XAVSrgMhVoHYQeBzFUi5DvhcBVKtAyFCIMU64HMVSLkOcB5IgxhIuArEDIIQIZAiCDgP2AmCECFQ41yQPgRSBEHoEGAd2DNiAPg3nAvKw3kAeAIxkPi5AjHWgZCrQMx1gFXAzjoQchWosQ6kXwVirgOxzgOsA9MRAwaeNBgyCGKEQIwgiBUCIdeBGCEQIwhihECMIIi1CoQMghghECMIYj9PgCB4MmIA2A3ngvxxHgB2RQwY+VLCEOtAzFUg5DrAecDOOhBzFahxLki/CoRcB1J99QDrwK6IAUPfU8BnEKQIgRBBkCoEfK4DKUIgRBCkCIEQQZBqFfAZBClCIEQQpP4yQoLgD4gBYA84F+SH8wAwHTFgZBXwuQ6kXAV8rgOcB+ysAylXgRrngvSrgM91IPUqUGMdeAIxYCgEfASBhRDwEQRWQmDIOmAhBHwEgYUQ8BEEVlaBIUFgIQR8BIGVEKitIwiIAWBvOBfosxICgFXFx4C1VWDIOmBpFRiyDlhZBYawtAoMWQcsrQKlnwssrQJD1gFrq0BtXeHrQNExYDUE+gSBxRDoEwRWQ6DLOmAxBPoEgcUQ6BMEVleBLkFgMQT6BIHVEKiVHARFxwDQBecCPVZDALCm2Biwvgp0WQcsrwJd1gGrq0AXlleBLuuA5VWgtHOB5VWgyzpgfRUofR0oMgZUQqBNECiEQJsgUAmBpnVAIQTaBIFCCLQJApVVoCkIFEKgTRCohEDJQVBkDABDcC6wTyUEACuKiwG1VaBpHVBaBZrWAZVVoInSKtC0DiitArmfC5RWgaZ1QG0VKHUdKC4GlE0GgWIITAsC1RCYXAcUQ2BaECiGwLQgUF0FJoNAMQSmBYFqCJSoqBj4oy+/2+UQBMohMBkEqiEwGQTKITAZBMohMBkEqiEwGQTKITAZBDmEwIaNl7tSFBMDOYQAACCuDYUEwWxpIfD9u491yh4fzbjDNm116g75h9+5U8/4uVN2zP/c5g77/jan7m1/s8ld+upNTt1DTx85tzzjlB134j3uiP90t1P30JHL7tEt+zllB1+9X1FBUEQM5KIKgZpyEFQhUFMPgopyEFQhUFMOgnEIiKtCoKYcBFUI1NSDoCSzJZ4H1NcB2FgFYJT4OgBbq0Ap68Bsqc8TUAuCyVVAeR2YXAVU14FpIaC4DkyuAsrrwNRVQCwIJlcB5XVgchVQXQcOnhICJQRB1jGQi2khoBgE00JANQimUQqCaSGgGAS5nQeUg2BaCKgGQYlmS/7qAbV1AOlxHhAitg7A9iqQ+zowW/qXEVoPgqZVQGkdaFoFVNaBNiGgsA40rQJK60CrVcB4EDStAkrrQNMqoLIOHNwiBHIOgixjIBdtQkAhCNqEgEoQtGE5CNqEgEIQ5H4eUAqCNiGgEgQlyy4G+nxzIevrANLjPCDM+DoArVUg13UgqxgY8l0GrQVBl1XA8jrQZRWwug70CQGL60CXVcDyOtBrFTAWBF1WAcvrQJdVwOo60CcEcgyCrGIgF31CwGIQ9AkBq0HQh6Ug6BMCFoOgtPOA5SDoEwJWgwAZxYCPnz1gbR1AepwHMmJsHYD2KpDbOpBFDPj8IUSpg2DIKmBpHRiyClhZB3yEgIV1YMgqYGkd8LIKJA6CIauApXVgyCpgZR3wEQI5BUEWMZALHyFgIQh8hICVIPAhZRD4CAELQVD6ecBSEPgIAStBgIxiIMSPJk69DiA9zgMZ41xQPJ+rQC7rgHQMhAiBVEHgcxVIuQ74XAVSrQMhQiDFOuBzFUi5DgRZBSIHgc9VIOU64HMVSLUOhAiBHIJAOgZyESIEUgRBiBCocS5IHwIpgoDzgJ0gCBECNc4F6cnGQMhVoMa5oDycBwrCuaA4IVcB9XVAMgZihEAOq0DMdSDkKlBjHUi/CsRcB1gF7KwDIVeBHNeBDYJBIBkDMYVcB2KEQIwgiBECMYIg1ioQMghihECMIIgWAgHXgRghECMIYoRAjCCIsQook4uBFKsA54L8cR4oGOeC7KUIgQ1i64BUDHAesLcOxFwFapwL0q8CIdcBzgN21oGYq0CNc0EaUjGQks91IEUIhAiCFCEQIghSrQI+gyBFCIQIgmQh4HEdSBECIYIgRQiECALOA5nFgIVVgHNBfjgPYCfOBdmxEAIbRNYBiRiwEAI5rAI+14GUq0CNc0H6VcDnOsB5wM46kHIVqHEuiEsiBiwZsg5YCAEfQWAhBHwEgZVVYEgQWAgBH0FgJgQGrAMWQsBHEFgIAR9BYGEVUGI+BiyuApwL9FkJARjEuUCexRDYYHwdMB0DFkMgh1VgyDpgaRUo/VxgaRUYsg6YWQUGsLQKDFkHLK0CNc4FcZiOAcu6rAMWQ6BPEFgMgT5BYHUV6BIEFkOgTxCYDYEO64DFEOgTBBZDoE8QWFwFFJiNAYVVgHOBHqshAIM4F8hRCIENRtcBkzGgEAI5rAJd1gHLq0Bp5wLLq0CXdcDsKtCB5VWgyzpgeRWocS4oMAaUNK0DCiHQJggUQqBNEKisAk1BoBACbYJAJgQa1gGFEGgTBAoh0CYIFFYBy8zFgOIqwLnAPpUQgEGcC8xTDIENxtYBUzGgGAI5rAJN64DSKpD7uUBpFWhaB2RWgQZKq0DTOqC0CtQ4FxQQA8om1wHFEJgWBIohMC0IVFeBySBQDIFpQSAbAhPrgGIITAsCxRCYFgSKq4BFM6PRaK9/O5eWltzCwoJbXFx08/PzQR7I+v/x39xI+INobcPaf3E5eGx5hcvBr193lFN33qavuRxc8r82OnXH/elml4M7fnqky8Fh1zl5c//3IffNH14a7H+/7cdvE8tAFQIAAJTopRsuS/0Q0sfAZAjMzIhOiP9mzf+Zczf//YlO3Y3/eKK7+Z/+2Kn7/g3r3e3/dX+n7I6zD3CXfF3/M+q/f/lL3bq/u88pW7U44zZ/V39puv1fDnejAx536g68ddZtPyj5h7DBq4CVIDD3mlQPgopyEFQhUFMOgioE1FUhUFMOgioEaupBUFEOgioEaspBUIWAurmJELAg6Ws0p/NAtQrAJvV1ADZWAdikvg5MSrkOzFoMAbV1YFoIKK4Dk6uA8jowbRVQC4LJVUB5HZhcBVTXgWkhoLgOTK4CyuvAtFVALQjmGlaBVEFg9jWoFgTTKAXBtBBQDILczgPKQTAtBFSDYBqlIJgWAopBwHkgnCSvWc4DSEFtHUB6nAd0qK0DTVKsA7OWQ8D6OtAmBBTWgaZVQGkdaLMKWA+CplVAaR1oWgVU1oE2IaCwDjStAkrrQJtVwHoQzHVYBWIHge3XnEAQtGE5CNqEgEIQ5H4eUAqCNiGgEgRtWA6CNiGgEAScB8KL+hrmPAALrK8DSI/zgC7r60AXMdeBWYUQsLYO9AkBi+tAl1XA8jrQZxWwFgRdVgHL60CXVcDqOtAnBCyuA11WAcvrQJ9VwFoQzA1YBWIFga3XmFAQ9GEpCPqEgMUgKO08YDkI+oSA1SDow1IQ9AkBi0HAeSCeKK9pzgOwyNo6gPQ4D+TD2jowRIx1YFYpBFKvAz5CwMI6MGQVsLQO+FgFUgfBkFXA0jowZBWwsg74CAEL68CQVcDSOuBjFUgdBHMeV4HQQSCXTqmDwIeUQeAjBCwEQennAUtB4CMErASBDymDwEcIWAgCzgPxBX2Ncx6AgtTrANLjPJCv1OuATyHXgVnFEIi9DoQIgRTrgM9VIOU6EGIViB0EPleBlOuAz1Ug1ToQIgRSrAM+V4GU60CIVSB2EMwFXAVCBYFsMnEuSB8CKYKA84CdIAgRAjXOBelDIEUQcB5IJ8hrnvMAFHEuKA/ngXJwLmg2qxwCrAPpV4GY6wCrgJ11IOQqUGMdSL8KxFwHWAXSBoH8az9kEMRaBUIGQYwQiBEEsUIg5DoQIwRiBEGMEIgRBLFWgZBBECMEYgRBrBAIuQ7MiZ4Hal5fM5wHkAPOBfnjPFAuzgXTzeYQApwL0q8CIdcBzgN21oGYq0CNc0H6VSDkOsB5wEYQ6L8VAgRBqlXAZxCkCIEQQZAqBHyuAylCIEQQpAiBEEGQahXwGQQpQiBEEKQKAZ/rwJz4eaDm5TXCeQA54lyQH84DqHEu2NVsTiHAuSD9KuBzHeA8YGcdSLkK1DgXpF8FfK4DnAdsBYH+W8NjEFhZBYYEgYUQ8BEEVkJgyDpgIQR8BIGFEPARBFZWgSFBYCEEfASBlRAYsg7MGQoBH2ZzWQWGshICsIdzgT4rIQB7OBc8YTbHECj1XGBpFRiyDlhZBYawtAoMWQcsrQKlnwssrQJD1gErq8AQc4ZXgb5BoP9W8RAEVleBLkFgMQT6BIHVEOiyDlgMgT5BYDEE+gSB1VWgSxBYDIE+QWA1BLZ3WAcsh8AQs7mtAl1ZDQHYw7lAj9UQgD3bCz8XzOYcAqWcCyyvAl3WAaurQBeWV4Eu64DlVaC0c4HlVaDLOmB1FehiTmgV6BoE+m+dAUGgsgo0BYFCCLQJApUQaFoHFEKgTRAohECbIFBZBZqCQCEE2gSBSghsb1gHlEKgj05voZO/9l6XC5UQgD2cC+xTCQHYs73Qc0E+L3WB5wKlVaBpHVBZBZoorQJN64DSKpD7uUBpFWhaB1RWgSbKq8CfnfH+Vv/ezGg02utHysXFRXfggQe6Yz95oVux32qnajR64rOFNdfqrgJ/cvbPxr/edPUJTtmf/Pkt41+vv/FZTtVx//Tg+Ne7/lIvBCa986VXj3/9/Nn/wSm745yDxr/uI7wKHHn65vGvd/7qMKds5oEV418XbtcNgdW/Xx7/Ovcr3RCoPPb4Dve9my53999/v1tYWBgWA/fcc49bu3at78cIAAAi2Lx5szvyyCOHxcDy8rLbsmWLm5ubczMzYap7aWlpHBzVA56fn3eKcngZKrwcduTwMuTycuTwMlR4Ocp6GUajkdu2bZs74ogj3OzsnpealW3+x6r/gaai8Kl6hai+YXN6GSq8HHbk8DLk8nLk8DJUeDnKeRkWGs4DNd2DDgAA8IIYAACgcGZiYPXq1e6d73zn+FdVObwMFV4OO3J4GXJ5OXJ4GSq8HHasNvQytHoCIQAAyJeZZQAAAKRBDAAAUDhiAACAwhEDHrz4xS92F1xwQeqHgQa8jdKqnpr0qle9yh100EHjb1x28803p35IxVL+u6D82K2/HK2+6RAADPGNb3zDfeYzn3HXXnutO/bYY90hhxyS+iEV68tf/rLbZ599Uj8MGEMMAAjuzjvvdIcffrg77bTTUj+U4lXrDGDuTFB9xnD66aePfyriwQcf7F72speN33Goeeyxx9xrX/va8bd9rD7rufTSS8fTqJrq51B84AMfcMcff/z4a1+POuoo9573vMcpefDBB90555zjDjjggPEHoMsvv9wpqt4W733ve90znvEMt2bNGvec5zzHXX31Ez9hUMm5557rXve617m77757fCI45phjnJrqe7ufffbZbv/99x//mbryyitNTr1tqD7uyb8XF1100ThqDjvsMPeud73Lqfv6178+/tjx+c9/vtwYqN5xv+ENb3A33nij+/a3vz3+OQgvf/nLx29wJZ/97GfdypUr3Q033OA+8pGPuCuuuMJ96lOfcmouueQS9773vW8cM7/4xS/cpk2b3KGHHuqUvPnNb3bf/e533Ve+8hX3zW9+czxN/+QnP3FqqhD43Oc+5z7xiU+4n//85+7CCy90r3jFK8Yvm5Lq78O73/3u8c83uffee92Pf/xjp6Z6H/WDH/zAffWrX3Xf+ta33Pe+9z3JP1M5qN7XVlH2ox/9aPyJS/Vnq3qbqNq0aZPbuHHjOASq4ExmZMzWrVurT6dHP/3pT0cqXvSiF43Wr18/Wl5e3vl7F1988fj3lCwtLY1Wr149uuqqq0aqtm3bNlq1atXoi1/84s7fu++++0Zr1qwZnX/++SMV27dvH+23336j6667bpffP++880YbN24cqbnyyitHRx999EhR9fdin332GX3pS1/a+Xv333//+O2j9Gdq8v2V4uOuH/vpp5++y++dcsop4/e3im+Dj3/846OFhYXRtddem/ohjZI/Z+D2229373jHO8aV99vf/nbnIlBNiieccIJT8YIXvGCXH++8YcOG8Tz9+OOPuxUrVjgFt9xyi9uxY4c744wznKrqxPTII4+4U089defvVXPis571LKfkjjvucA899JB7yUtessvvVy/bSSedlOxxleiuu+5yjz76qHv+85+/8/eqSVftz1QuTjzxxF3+c3W2+c1vfuPUXH311ePHXS1Op5xySuqHk/4JhGeeeaY7+uij3VVXXTX+ectVDFQRUL3TQ1zVXRo2PPDAAztviU9/+tN3+e8sfB9zIJXdvxKi+iRM7axcqaK+OjV9+tOfdieffPIun0wW95yB++67z/3yl790b3/728efja5fv979/ve/d4qqZWPS9ddf7575zGfKrAKV6vFWQVA9d0PVcccdN35nMfn2qP5M3XbbbU7Js5/97PEH/Wohq57MOfl/a9euTf3wilJ9KWT1Z2ryuQ6Li4tyf6Zg733VNddcM35uU/UE26KXgac85SnjryD45Cc/OZ56qnd8b3nLW5yi6rFXTzJ69atfPa69j33sY3LPYt93333dxRdfPH6m7qpVq9wLX/hCt3Xr1vGT18477zynoPoKguqxVk8irP5sPe1pT3Nve9vbxk9MVTI3N+fe9KY3jZ80WH3WU33FTfUBqJoU5+fn3Stf+crUD7EY1duien1Xf6aqk1P1Z6r6SXPVn6nUn81B27p168ZBUH2FR/UE9A9/+MNlxkD1l+kLX/iCe/3rXz8+DVQ3uI9+9KPjV4ya6kvZHn744fFdsVoDzj///PF3XFNTfRVB9Yeyeh7Hli1bxpH2mte8xin54Ac/OJ7ZqxNU9Y78jW984/gDqZrLLrvMPfWpTx1/VUF1t66+/Pa5z32ue+tb35r6oRWn+uqg6u9B9aXPVYxVwbx58+ZxQANDVB/3vvOd74w/7lUfO1J9EsmPMAaAHl8SXT2Xo3rHrbKaAaafQAgA1t10003u1ltvHS9/1cpUfW175ayzzkr90AAviAEAaOFDH/rQ+AnP1fNpnve8542/8RA/YwG54EwAAEDhtJ5iDQAAvCMGAAAoHDEAAEDhiAEAAApHDAAAUDhiAACAwhEDAAAUjhgAAKBwxAAAAK5s/x/3M1rHMAo80gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "heatmap_triangle(X, cmap=\"viridis\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use `direction` parameter to display the heatmap as desired:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABYcAAAF3CAYAAAD+VfTlAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAgYtJREFUeJzt3Qm4XVV9//91M10gE5AwD2ISQCzFEGWOkoJYZXDE/v5UC1YGsTLKZFBISItRUUDE6g+UigX010etYFGUwdCIErCAIjIlFEFDGUIakgA3JLn/Z++48NztWffsYa3vGvb79Tz3ueaq7JOB7Hs+933X6RscHBxUAAAAAAAAAIBWGeH7AQAAAAAAAAAA5DEOAwAAAAAAAEALMQ4DAAAAAAAAQAsxDgMAAAAAAABACzEOAwAAAAAAAEALMQ4DAAAAAAAAQAsxDgMAAAAAAABACzEOAwAAAAAAAEALMQ4DAAAAAAAAQAsxDgMAAAAwmjVrljrttNNU27Xh12FwcFCdcMIJavPNN1d9fX3qvvvuU20g+Xvr889RG/4MAwCqG1Xj/wMAAAAASMxNN92kvvGNb6gFCxaoKVOmqMmTJ6s2+N73vqdGjx7t+2EAAOAF4zAAAAAAQC1ZskRts802av/991dtkpXSAAC0FcdKAAAAABGVnTNnzlSbbrqpmjRpkjr88MPzQc+1tWvXqpNOOklNnDgxr0nPO++8/AgCCevXr1ef+9zn1LRp01R/f7/acccd1YUXXuj0mqtXr1ZHH320GjduXD6WfuELX1BSsp/v/Pnz1Wtf+1q18cYbqze84Q3qO9/5jvPrfuhDH1Inn3yyeuKJJ/IjJXbaaSclYeXKleoDH/iAGjt2bP5rfckll4gffyB9vez3+Oyzz85H6a233lrNnTtX+XDjjTfm/05fe+21Xq4PAAgD4zAAAAAQiWy0/PjHP65++ctfqltvvVWNGDFCvec978nHJpeuvvpqNWrUKHXXXXepL37xi+riiy9WX/va15SE2bNnq8985jP5IP3b3/5WXXfddWqrrbZyes2zzjpL3X777er6669XP/nJT/JjFu655x4lIRuGv/nNb6qvfvWr6oEHHlCnn366+uAHP5g/Hpey39d58+ap7bffXj311FPq7rvvVhKyP8933HGHuuGGG9TNN9+sFi5cKPZr7Uv271M2hi9atCj/wkf265793CVl/x4dddRR+TCcjfMAgPbqG5T6kj8AAAAAq5577jm1xRZbqPvvv1/tvvvuzqrKZ555Jh8qs6I084lPfCIf87Kx1nVVmv38Lr/8cnXccccpCatWrcqr7GuuuUa9//3vzz/2/PPP56Np9mJtl156qbNrDwwM5DXpLbfcovbbb79XP5793F988cV80HMp+7llb48//riSkP3+Zr/W2c/ryCOPzD+2YsUKte2226rjjz/e6a918c/49OnTRa6XXWvdunX5CK7tvffe6qCDDsq/CCLx89x5553VJz/5yfyLHwceeKDTawIAwseZwwAAAEAkHn30UXX++efnxWE2DOtiODsKwNU4nNl3331fHYYz2XCZHbWQjVwjR450dt0HH3wwH0wPPvhgJSU7pmPNmjVqn332efVj2WC76667Or/24sWL8xH4kEMOGfLx7PHsueeeKjWPPfaYeuWVV/JxVMuOOZD4tfZpjz32GPLj7DiN7AswErIjSrJrZbX2XnvtJXJNAEDYGIcBAACASBxxxBHqNa95jbryyivzujIbh7NROBsPU5SdudsmWbWsz4Ldbrvthvx32XnLSMPo0aOH/Dj7wovro2G07IsM2bEdV111lXrTm9405Is+AIB24sxhAAAAIALLli1TDz/8sPrUpz6Vl7S77babWr58uci1s1K505133pl/a7rLajiTXSMbiLPzlaVMnTo1H+86f87Zr/Mjjzzi/Nqvf/3r8xE4K8GzF+DrfNthhx1UaqZMmZL/Wneeb5wdKyHxa91W2Z/vn/70p/mREtkLEAIAQDkMAAAARGCzzTbLz2e94oor8m9DzwbE7OxfCdm1shcO+8hHPpJXh1/60pfyYyVc22ijjdQ555yjzj77bDVmzBh1wAEHqGeffTY///jYY491cs1x48bl/+zsRemyX+8tt9wyP581e/E/18aPH6/OPPPM/EXospJ05syZ+ViaHQEwYcIEdcwxx6iUZD/f7OeU/VpnR3dkv9Zz5szJf60pWt3ZZZdd8oE4O4M4e6FJqbOdAQBhYhwGAAAAIpANZt/+9rfVKaeckh8lkZ3Letlll+UDj2tHH320eumll/KzYbNa+NRTT81fnE3Ceeedlw9Y2VnLS5cuzYfxE0880ek1L7roovyIh+wYj2zAPOOMM/KRVsI//uM/5i/CN3/+/PxM3k033VTNmDFD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AAAAAAC0kPNxOHsBqTlz5oi/kJSv6/q8dtuu6/PabbtuW3/OAAAAAAAAKXP+gnQAAAAAAAAAgPBwrAQAAAAAAAAAtBDjMAAAAAAAAAC0EOMwAAAAAAAAALRQcuPwrFmz1Gmnnabari2/DtmR2SeccILafPPNVV9fn7rvvvtU6qR/b339WWrLn2EAAAAAAABfRnm7MmDBTTfdpL7xjW+oBQsWqClTpqjJkyer1H3ve99To0eP9v0wAAAAAAAAEDnGYURtyZIlaptttlH777+/aouskgYAAAAAAACCPlYiqzpnzpypNt10UzVp0iR1+OGH52Oea2vXrlUnnXSSmjhxYl6SnnfeefnxAxLWr1+vPve5z6lp06ap/v5+teOOO6oLL7zQ6TVXr16tjj76aDVu3Lh8KP3CF76gpGQ/3/nz56vXvva1auONN1ZveMMb1He+8x2Ra3/oQx9SJ598snriiSfyIyV22mkn59dcuXKl+sAHPqDGjh2b/1pfcsklrTjmIft9Pvvss/Nheuutt1Zz585V0m688cb83+lrr71W/NoAAAAAAAApGuF6tPz4xz+ufvnLX6pbb71VjRgxQr3nPe/JhyaXrr76ajVq1Ch11113qS9+8Yvq4osvVl/72teUhNmzZ6vPfOYz+SD929/+Vl133XVqq622cnrNs846S91+++3q+uuvVz/5yU/yIxbuueceJSEbhr/5zW+qr371q+qBBx5Qp59+uvrgBz+YPx7Xst/befPmqe2331499dRT6u6773Z+zezP8x133KFuuOEGdfPNN6uFCxeK/Vr7lP07lQ3iixYtyr/4kf26Zz9/Kdm/R0cddVQ+DGfjPAAAAAAAAJrrG5RKapVSzz33nNpiiy3U/fffr3bffXdnVeUzzzyTD5VZTZr5xCc+kY952VjruirNfn6XX365Ou6445SEVatW5VX2Nddco97//vfnH3v++efzwTR7obZLL73U2bUHBgbykvSWW25R++2336sfz37uL774Yj7ouZb9/LK3xx9/3Pm1st/f7Nc6+3kdeeSR+cdWrFihtt12W3X88cc7/bUu/hmfPn266PXWrVuXD+Ha3nvvrQ466KD8CyGuf54777yz+uQnP5l/8ePAAw90dj0AAAAAAIC2cXrm8KOPPqrOP//8vDbMhmFdDGfHALgahzP77rvvq8NwJhsus6MWsoFr5MiRzq774IMP5oPpwQcfrKRkx3SsWbNG7bPPPq9+LBtsd911V+fXXrx4cT4CH3LIIUM+nj2ePffcU6XmscceU6+88ko+jGrZMQcSv9a+7bHHHkN+nB2pkX0RxrXsiJLsOlmtvddeezm/HgAAAAAAQJs4HYePOOII9ZrXvEZdeeWVeV2ZjcPZKJyNhynKztxtk6xa1mfBbrfddkP+u+y8ZaRj9OjRQ36cffHF9fEwmeyLDNmxHVdddZV605veNOSLPgAAAAAAAAj0zOFly5aphx9+WH3qU5/KS9rddttNLV++XEnISuVOd955Z/6t6S6r4Ux2jWwgzs5XljJ16tR8uOv8OWe/zo888ojza7/+9a/PR+CsBM9egK/zbYcddlCpmTJlSv5r3Xm2cXashMSvdVtlf75/+tOf5kdKZC8+CAAAAAAAgAjK4c022yw/n/WKK67IvwU9GxCzs38lZNfKXjjsIx/5SF4dfulLX8qPlXBto402Uuecc446++yz1ZgxY9QBBxygnn322fz842OPPdbJNceNG5f/s7MXpct+vbfccsv8fNbsxf9cGz9+vDrzzDPzF6HLKtKZM2fmY2l2BMCECRPUMccco1KS/Xyzn1P2a50d3ZH9Ws+ZMyf/taZodWeXXXbJB+LsDOLshSalzloGAAAAAABInbNxOBvMvv3tb6tTTjklP0oiO5f1sssuywce144++mj10ksv5WfDZrXwqaeemr84m4TzzjsvH7Cys5aXLl2aD+Mnnnii02tedNFF+REP2TEe2YB5xhln5COthH/8x3/MX4Rv/vz5+Zm8m266qZoxY4Y699xzVYouvvji/Pfz8MMPzwfw7AsBTz75ZP6FAbiT/f1x22235X9/ZP9OS3yxBwAAAAAAIHV9g4ODg74fBBCr1atX5+ctZ2OlqzocAAAAAAAAiO4F6YDU3Hvvveqhhx7Kq/Sszp43b17+8Xe9612+HxoAAAAAAABQCeMwUNHnP//5/MUWs3Ol3/jGN6qFCxeqyZMn+35YAAAAAAAAQCUcKwEAAAAAAAAALTTC9wMAAAAAAAAAAMhjHAYAAAAAAACAFmIcBgAAAAAAAIAWYhwGAAAAAAAAgBZiHAYAAAAAAACAFmIcBgAAAAAAAIAWYhwGAAAAAAAAgBZiHAYAAAAAAACAFmIcBgAAAAAAAADVPv8/H95enhNCCpAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(18, 4))\n", + "ax = plt.subplot(1, 4, 1, frameon=False)\n", + "heatmap_triangle(X, direction = \"up\", ax=ax)\n", + "\n", + "ax = plt.subplot(1, 4, 2, frameon=False)\n", + "heatmap_triangle(X, direction = \"left\", ax=ax)\n", + "\n", + "ax = plt.subplot(1, 4, 3, frameon=False)\n", + "heatmap_triangle(X, direction = \"down\", ax=ax)\n", + "\n", + "ax = plt.subplot(1, 4, 4, frameon=False)\n", + "heatmap_triangle(X, direction = \"right\", ax=ax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Observation names can be provided manually. If they are too long, use `ticks_rotation` parameter to prevent overlap:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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+OKLSDP47AwdOjRq165dswc+Y/hJ6sNpMnDYYYfZu9Hhw4ebddddt8W+ByeccIKRzMYbb2z2228/86tf/cp06tTJaGW33Xaz7wV3QBhbOX36dNOhQwfzwx/+0P4NDjroIKMBHP95551njjjiCLPtttuaNdZovrXtAQccYLSAXULvvPNOs++++zZ7/f/+7//MXXfdZd59912jgXfeecc8/fTT9nuOB+6u8V3XUM7ZaKONzA033GC+9a1v2dQJ3wskA7NmzTI777yzWby45Xa9Evnud79rHn/8cdO5c2ezxRZbtPheTJgwwWhgyJAhZpVVVjGnnXZa6vViyy23NJI56KCDzK233mrHDrd1TnXxN6lob4K8ePjhh83kyZPtH1kjONEhQtcsAuCll16yJz3sQdG+fXuzYsUKe9K77LLLzI9//GM1MvDzn//c/rziiita/A4nji+//NJo4Y477rCy/OCDD5qhQ4fa14477jh7kvjzn/9stNC9e3ez5ppr2p8QHJzM1157baPl+w0hKAXxNGrxWsB/94MPPthoB+epv//972aTTTYxGmlsbGwSmEr2CghKBnCC6NGjh9HK3nvvbaZOnWovnJpBChDvZvW1r33N9g2gvogPLHbT0kJpDVEz+++/v/ntb39r04wpU6aY3/3ud2bSpElWBJDiSOeMM84wTz75pPnHP/5hP0vf+MY37B0degjwvdfAZpttZp555hmz/vrrN3v9j3/8o9l6662NFm655RbjA/h7fPDBB0YrtyT+DhL/Jk5l4IILLjDnnHOOue2221TeXeOEffLJJ5sZM2bY+A0XVY2xNE5sL774ohkwYIA9aeNvgi/d2LFjzeabb+768ILl8MMPtw2qSM5wN42YPe1OVSKXXHKJPWaMWkWypEFgSsH3AMkYEgKIJlKZf/7zn+b222+3iY221TaQs3nz5tnPFcoe2JYekTXKB5K3+I259NJLzSmnnGLLsmnnW007F9555502+UsD15Rf//rXhR+T054BXITw4cQhoDu39I87bdo0I5lye0NriqWRbmC/a3R/o0sXneDPPvuslQPckW611VZGC7hg/uY3v2laSoW7CXy5dt11VyOdE088MfX1e+65x2yzzTbNuvLTSiGSQH0dfwtcgHB3veqqq1rRRH9K3KOiARw7lqzi/Xz88cf27wBJ2GuvvYwW3nrrLbPP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OQESI5Vfe+018U2crW0Md9JJJ7UYC02yofB2927dutnGlUoe0sHwFNSrMOoTg0jwQKSFMoE2EcCyL8SKWF549NFH265dnOwoAiQ0Fi9e3GyZLUQAvU0xqL1D+DUAISj9t4ChszUBAUOigR4IlDywlTFYsGBB02ouoqhMkKxXvfnmm3bKIOK35J01JhJefPHFRjLYvAT1KzQQalk1UMr7779vY8Tf//73tiP3sMMOs0vC8LeAGGyyySauD5EoBRKJ9e2tzReJl+9JBCKA8ejYUAmj0rEhEe5KY3ARKl1xIxFc9NHPlFwxgIsmNmBKLnvGygINvPXWW/aci82WUOrYc889bdng0ksvtf/GuZgokgHcTSdrc1h+hItQDDrz0TyIgRila3wlgZMBGlc0g+Ev3/ve98zo0aPtF0vLXAQiH9SpEauXrlS59957bYd7vO5dIvvtt5+9ScFFBuLSqVOnZkkfvvcalkvecsstxiewFwxKN2g2T46IRjLLnoEMcDn+EKMwZ8+e3eL1f/7znyrGZGK86qmnnhppZeDAgVG/fv2iM844I5o5c2bT66usskr02muvOT02optzzjnHjr599913m1676667ok6dOkV33313JJlFixZFu+66qx1H3KVLl2jChAnNfr/77rvb7wwplh49ekSzZs2yzzt37tw0vv6NN95Qcb2QjtPVBIjhsJIA4zGTYOiQhj3PMcgDETtqWJiJUNrYIn3XQgwfQa8AmgVRB0WkiJkPQNMwEiIPxOqIn/fYYw87OQ7LvrDl99ixY83BBx9sJIMhQzhmlM46d+7cou6OBkK8TooFsxLSBgthFDzKBUTxnAF03OPEgCEYmJkdjzOdM2eOjRMR10nGl10L41rinXfeaaNFrCJAOefwww+3td3SIR+EVMoRRxxhp/ihq338+PHmwAMPdH1IRCmHHnqoXWaIEjIu/ijX4NyEzxRWdPlWFglu6BC6cq+77jp7lwqwDvaYY45RkQz4SjxfAHdxuLtDsyQh1WzwE4PPDjbB2muvvZpN6iyd2klIWyABQC8KLlm4YUT/AH7GSY6GbbEl41wGiOwyCE7w8QQwQspRaQMqUjPOkSe1npMwBwWpQDyxFulTchARUSID+CNiyRFOHG114w8ePNhIpNKL44QJE3I/FkII8XWZJymOwhsIMbP/vffes5EOnuMuIc1HJN89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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "heatmap_triangle(\n", + " X,\n", + " names=[\n", + " \"Spider-Man\",\n", + " \"Iron Man\",\n", + " \"Captain America\",\n", + " \"Thor\",\n", + " \"Hulk\",\n", + " \"Black Widow\",\n", + " \"Doctor Strange\",\n", + " \"Black Panther\",\n", + " \"Scarlet Witch\",\n", + " \"Loki\"\n", + " ],\n", + " ticks_rotation=90\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use `show_cbar` parameter to display a colorbar and `cbar_label` to set its title. Any additional colorbar paramerers can be set as keywords arguments. For example, we change `pad` on the second plot and the default orientation on the third one:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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S4499lhZtmyZnHXWWWYeFCCQ9DCpYWBex4OtFDFSGMANvUjnNXIYAAAAghPEiGGzL3sbGBh4QYVQk27517/+9cmWss0228h9990nX/va15ANANB6mNdxSmJTghgxDOCOXqTzmloJAAAACKpiAjFsni233FJmzpy5Zps3b572x1i8eLGsv/762vcLANAmmNd+C2KdVRNKCiOGAcJlS4/ntXM53NZOo8985jOy3377yTrrrCPrrruuxMj5558vW221lUyePFn23ntvufXWWyVmbrzxRjn88MNls802k06nI5dffrnEjBpke+65p0yfPl022mgjOeKII5JnqQAAygjiupIYMVyeXq9Xa1M88sgjycVlus2ZM0frsT3wwAPy1a9+Vd73vvdp3S+ATXTUQVApAQrmddzoEMRIYQA/6EU6r53L4WxHxt133y3nnHOOXHDBBXLKKadIzCj5/fa3v10+8IEPSIx8//vfl5NPPjkR/QsXLpRdd91VXve618kTTzwhsaJ6XdTXqaR4G7jhhhvkgx/8oNxyyy1yzTXXyIoVK+S1r31t8n0AAChDFUGspDBiuBrq+qrOppgxY8aIbbSXvH3iE59InhAt2tS1Xpa//vWvyUvg1HWQ6kUDAGg7zOv4qZsiJi0M4BdDkc7rTi9V2B7xxS9+MenI+POf/yyxc8kll8js2bPlH//4h8SESgqrVOl5552XvK9+GVSE/oQTTkh+0GNH/bL++Mc/TtK0beHJJ59MEsRKGr/yla90fTgAEBBj9RA3lcLr7P9WaROqz0y9VO21Ry2QCROnVbrviuVL5Rff2jtJM6iL1jKz/+mnny78HNV/NnHixOTfjz76qBx88MGyzz77JNdA3a7znAJAY+ouTEdqGJjX4XDSufrqIcp2ESOFAfxhIPJ57eWCdHQahY1KRd9+++0jIvLqh/OQQw6R3/zmN06PDcz+3ir43QUAnQvVuUgLX3311fJf//VfyYq/48aNk3333VfOPffcpPoqJHq9oWSrep8qbLjhhslWBpVoeNWrXiUvf/nL5Zvf/GbrRQMAQArzul3n9TRBPJokRgoD+Esv0nnt3ZSn0yh8nnrqKVm1apVsvPHGI25X7//tb39zdlxgDpUMVwn4/fffX3beeWfXhwMAkVRM6BLDg4ODybP92U3dNhqqHkdVI/32t7+Va6+9NrnIestb3rLmJWGhraZcdTOBunBViYYXvehFyerJKhGhrgm4LgAAYF6bpup5Pe+6YeXK0a8b6pJXM4EYBvCbXqTz2lhyWFUHfP7zny/8nHvuuUde8pKXRNNpVOdrBogB1T2snon/1a9+5fpQACACQfzszT/UvoDmGWecMeI21Yl/+umn537+W986sobi4osvTp69/+Mf/8gTYDVR3fQqAKC2LbbYYsTHPGw4A6hcD1G1WoJKCfCVGOd11fN63nXDXq/7hOzzhlOMCeJzTypXNQEAYGJeG5PDH/7wh+Xoo48esyMjRXVkqCj0fvvtJxdeeKGESNWvOVZmzZqVvFzn8ccfH3G7en+TTTZxdlxghuOPP15++tOfyo033viCgQQAULcjWKcgVjVHKjGUZbQFIBR/+tOf5LTTTpMFCxYkr4ZJk0UPP/xwWHK4TlLBULJBXR+NdY0EANBamNdGqXpez7tumHPRcmPHhxgGCIihOOe1MTncxk6jKl9zzKhSbPX/Ur1kJ12QTZ2A1ftKJEIcqGei1AKDauG9+fPny9Zbb+36kAAgInQKYiWCi2RwP4cffri8+MUvlosuukg222yz5Bym/nhUnfohMdQbSraq9wEAALswr81S9byed90wfry+BelSkMIA4TEU6bx2viBd2pGhhnXakZESc8pUPUv597//PXmr+nnvvPPO5PbttttOpk2rtvKhj6hnWt/97nfLK17xCtlrr73ky1/+ctL19J73vEdiZenSpUmcP+XBBx9M/r+qBdpUB0yMVRKXXXaZXHHFFTJ9+vQ1vTZqBc8pU6a4PjwAiEQQm6iZKEKtDHzfffclf0AeeOCByW2hVubU6Tgz1YkGEDtVqiWolIB+mNftO68jhgHCpBfpvHYuh2PsNCqDelnLpZdeuub93XffPXl7/fXXJ7I8dN7xjnckol99nUoa7rbbbskqsf2L1MWEWuBAJeBT0pciKUl+ySWXSGx87WtfS972/7yq9H9sL0UDgLhqJopYb731ZIMNNkgqrjbddNPkSVy1pkCwqykPmV1NGQAAmsO8bs95HSkMEDa9SOe1czkcY6dRGZQsjFEYZlEVEm2qkVCSNOYnNPpp09cKAO0RxKra6nvf+56ceOKJyUtOd9xxR/nKV74S5BO3sSYbAEJOD5MahjyY1/Gf15HCAHHQi3ReO5fDAAAAAD7VTBxyyCHJCuZZeEIMAAAgTFyf1xHDAOA7yGEAAAAICps1E8G/7K0X38veAABig3kdJ0hhgPjoRTqvu64PAAAAAKBuihhGR9WhDQ31Km6ujxogbIpqI6iUgNFgXscHYhggToYindckhwEAACBIbNVMhIpaLKPyghkhXL0CAEQG8zoekMIAcdOLdF4jhwEAACBoqJlo14IZACEuTEdqGIpgXocPUhigHfQindfUSgAAAEDwUDMxeida1Q0AAOzCvA4bxDBAe+hFOq9JDgMAAEAUUDMBAAAAtkAKA0AskBwGAACAqCBFPPJlb1U3AGhOtkaCSgkYC+Z1eCCGAdpJL9J5TXIYAAAAooMeYpGVy5dUXgBj1cplxo4HAADyYV6HA1IYoN2sjHRed3q9nv8KGwAAAABK8fzzz8vWW28tf/vb32rdf5NNNpEHH3xQJk+erP3YAABgLcxrAIAweD7yeY0cBgAAAIjwAnb58uW17jtx4kRvL1wBAGKDeQ0AEAbPRzyvkcMAAAAAAAAAAAAALYQF6QAAAAAAAAAAAABaCHIYAAAAAAAAAAAAoIUghwEAAAAAAAAAAABaCHIYAAAAAAAAAAAAoIUghwEAAAAAAAAAAABaCHIYAAAAAAAAAAAAoIUghwEAAAAAAAAAAACkffx/mfmEpjAsdSYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(18, 4))\n", + "ax = plt.subplot(1, 4, 1, frameon=False)\n", + "heatmap_triangle(X, direction = \"up\", ax=ax, show_cbar=True)\n", + "\n", + "ax = plt.subplot(1, 4, 2, frameon=False)\n", + "heatmap_triangle(X, direction = \"left\", ax=ax, show_cbar=True, pad=0.2)\n", + "\n", + "ax = plt.subplot(1, 4, 3, frameon=False)\n", + "heatmap_triangle(X, direction = \"down\", ax=ax, show_cbar=True, orientation=\"vertical\")\n", + "\n", + "ax = plt.subplot(1, 4, 4, frameon=False)\n", + "heatmap_triangle(X, direction = \"right\", ax=ax, show_cbar=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's take a look at some real data example. Let's load processed PBMC data from the `scanpy` tutorial and visualise distance matrix between cell types:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "AnnData object with n_obs × n_vars = 2638 × 1838\n", + " obs: 'n_genes', 'percent_mito', 'n_counts', 'louvain'\n", + " var: 'n_cells'\n", + " uns: 'draw_graph', 'louvain', 'louvain_colors', 'neighbors', 'pca', 'rank_genes_groups'\n", + " obsm: 'X_pca', 'X_tsne', 'X_umap', 'X_draw_graph_fr'\n", + " varm: 'PCs'\n", + " obsp: 'distances', 'connectivities'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "adata = sc.datasets.pbmc3k_processed()\n", + "adata" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/p9/74j47tdn36n6s2vcv_5079q0s4wk4h/T/ipykernel_20919/1886454965.py:3: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.\n", + " pseudobulks = pc_df.groupby(\"cell_type\").mean()\n" + ] + }, + { + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789...40414243444546474849
cell_type
CD4 T cells3.3017670.872418-0.2513172.629384-0.1522360.443775-0.3250660.2227670.0465470.010826...0.016875-0.0063070.0261870.007999-0.0233960.012456-0.0098670.0122050.029735-0.010883
CD14+ Monocytes-10.044544-0.5642270.9161601.1100051.278510-0.200253-0.397694-0.324510-0.3292470.057489...-0.007229-0.015916-0.0594580.005660-0.003676-0.0052290.045876-0.017712-0.018096-0.011860
B cells1.3501416.8867841.179472-6.4994750.014204-0.072809-0.130677-0.329974-0.0651420.126122...-0.027195-0.036087-0.010265-0.018652-0.0318800.001331-0.016129-0.043084-0.015619-0.026776
CD8 T cells4.042235-3.691889-0.035954-0.2496480.262591-2.8612411.578317-0.353448-0.381242-0.174982...-0.0397470.032701-0.173496-0.0615180.106657-0.0407310.022236-0.031797-0.0885040.050690
NK cells3.245108-11.9843590.778059-6.0101640.5907252.580980-0.971989-0.4594070.361203-0.142102...-0.0209560.0831790.1591960.100399-0.043385-0.003692-0.0180770.0598460.0586340.017964
FCGR3A+ Monocytes-6.415722-0.9011220.323747-0.768606-5.7780900.7436981.115408-0.0288800.6191990.267555...0.0729270.0035770.1098240.016457-0.019979-0.053196-0.0048910.1145860.022952-0.045528
Dendritic cells-3.0710791.5080370.049483-3.4212466.5026930.2258302.3118435.3106912.367127-1.286671...0.0741300.0870770.506240-0.0382880.3707920.265561-0.274939-0.089753-0.1052930.450101
Megakaryocytes-7.9128930.606808-47.632107-4.7777300.5185670.0076270.3699760.2696960.7634270.102556...-0.2952380.019671-0.186908-0.1708080.112538-0.0401310.096505-0.250788-0.039885-0.087256
\n", + "

8 rows × 50 columns

\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 \\\n", + "cell_type \n", + "CD4 T cells 3.301767 0.872418 -0.251317 2.629384 -0.152236 \n", + "CD14+ Monocytes -10.044544 -0.564227 0.916160 1.110005 1.278510 \n", + "B cells 1.350141 6.886784 1.179472 -6.499475 0.014204 \n", + "CD8 T cells 4.042235 -3.691889 -0.035954 -0.249648 0.262591 \n", + "NK cells 3.245108 -11.984359 0.778059 -6.010164 0.590725 \n", + "FCGR3A+ Monocytes -6.415722 -0.901122 0.323747 -0.768606 -5.778090 \n", + "Dendritic cells -3.071079 1.508037 0.049483 -3.421246 6.502693 \n", + "Megakaryocytes -7.912893 0.606808 -47.632107 -4.777730 0.518567 \n", + "\n", + " 5 6 7 8 9 ... \\\n", + "cell_type ... \n", + "CD4 T cells 0.443775 -0.325066 0.222767 0.046547 0.010826 ... \n", + "CD14+ Monocytes -0.200253 -0.397694 -0.324510 -0.329247 0.057489 ... \n", + "B cells -0.072809 -0.130677 -0.329974 -0.065142 0.126122 ... \n", + "CD8 T cells -2.861241 1.578317 -0.353448 -0.381242 -0.174982 ... \n", + "NK cells 2.580980 -0.971989 -0.459407 0.361203 -0.142102 ... \n", + "FCGR3A+ Monocytes 0.743698 1.115408 -0.028880 0.619199 0.267555 ... \n", + "Dendritic cells 0.225830 2.311843 5.310691 2.367127 -1.286671 ... \n", + "Megakaryocytes 0.007627 0.369976 0.269696 0.763427 0.102556 ... \n", + "\n", + " 40 41 42 43 44 45 \\\n", + "cell_type \n", + "CD4 T cells 0.016875 -0.006307 0.026187 0.007999 -0.023396 0.012456 \n", + "CD14+ Monocytes -0.007229 -0.015916 -0.059458 0.005660 -0.003676 -0.005229 \n", + "B cells -0.027195 -0.036087 -0.010265 -0.018652 -0.031880 0.001331 \n", + "CD8 T cells -0.039747 0.032701 -0.173496 -0.061518 0.106657 -0.040731 \n", + "NK cells -0.020956 0.083179 0.159196 0.100399 -0.043385 -0.003692 \n", + "FCGR3A+ Monocytes 0.072927 0.003577 0.109824 0.016457 -0.019979 -0.053196 \n", + "Dendritic cells 0.074130 0.087077 0.506240 -0.038288 0.370792 0.265561 \n", + "Megakaryocytes -0.295238 0.019671 -0.186908 -0.170808 0.112538 -0.040131 \n", + "\n", + " 46 47 48 49 \n", + "cell_type \n", + "CD4 T cells -0.009867 0.012205 0.029735 -0.010883 \n", + "CD14+ Monocytes 0.045876 -0.017712 -0.018096 -0.011860 \n", + "B cells -0.016129 -0.043084 -0.015619 -0.026776 \n", + "CD8 T cells 0.022236 -0.031797 -0.088504 0.050690 \n", + "NK cells -0.018077 0.059846 0.058634 0.017964 \n", + "FCGR3A+ Monocytes -0.004891 0.114586 0.022952 -0.045528 \n", + "Dendritic cells -0.274939 -0.089753 -0.105293 0.450101 \n", + "Megakaryocytes 0.096505 -0.250788 -0.039885 -0.087256 \n", + "\n", + "[8 rows x 50 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pc_df = pd.DataFrame(adata.obsm[\"X_pca\"], index=adata.obs_names)\n", + "pc_df[\"cell_type\"] = adata.obs[\"louvain\"]\n", + "pseudobulks = pc_df.groupby(\"cell_type\").mean()\n", + "pseudobulks" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0. , 1.69671084, 1.1659188 , 0.73423144, 1.23412507,\n", + " 1.59928421, 1.3779477 , 1.12427533],\n", + " [1.69671084, 0. , 1.23531997, 1.57941212, 1.21462456,\n", + " 0.38440575, 0.73420467, 0.93876208],\n", + " [1.1659188 , 1.23531997, 0. , 1.29439198, 1.27960127,\n", + " 1.11534471, 0.75964104, 1.06724174],\n", + " [0.73423144, 1.57941212, 1.29439198, 0. , 0.45179666,\n", + " 1.42910187, 1.20753707, 1.09895842],\n", + " [1.23412507, 1.21462456, 1.27960127, 0.45179666, 0. ,\n", + " 1.06014093, 1.0448072 , 1.06001856],\n", + " [1.59928421, 0.38440575, 1.11534471, 1.42910187, 1.06014093,\n", + " 0. , 1.12153679, 0.91605948],\n", + " [1.3779477 , 0.73420467, 0.75964104, 1.20753707, 1.0448072 ,\n", + " 1.12153679, 0. , 0.92127013],\n", + " [1.12427533, 0.93876208, 1.06724174, 1.09895842, 1.06001856,\n", + " 0.91605948, 0.92127013, 0. ]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell_type_distances = scipy.spatial.distance.pdist(pseudobulks, metric=\"cosine\")\n", + "cell_type_distances = scipy.spatial.distance.squareform(cell_type_distances)\n", + "cell_type_distances" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(3, 4), frameon=False)\n", + "heatmap_triangle(cell_type_distances, direction=\"left\", names=pseudobulks.index, show_cbar=True, orientation=\"horizontal\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "sc.tl.dendrogram(adata, groupby=\"louvain\")\n", + "dendrogram = adata.uns[\"dendrogram_louvain\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(3, 4), frameon=False)\n", + "heatmap_triangle(dendrogram[\"correlation_matrix\"], direction=\"left\", names=dendrogram[\"categories_ordered\"], show_cbar=True, orientation=\"horizontal\", vmin=-1, vmax=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plt.figure(figsize=(10, 5), frameon=False).subplots_adjust(wspace=0.5)\n", + "ax = plt.subplot(1, 2, 1, frameon=False)\n", + "heatmap_triangle(dendrogram[\"correlation_matrix\"], direction=\"left\", names=dendrogram[\"categories_ordered\"], orientation=\"horizontal\", vmin=-1, vmax=1, ax=ax)\n", + "ax = plt.subplot(1, 2, 2, frameon=False)\n", + "sc.pl.dendrogram(adata, groupby=\"louvain\", orientation=\"right\", ax=ax, remove_labels=True)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "2023_05_scverse_hack", + "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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 826618af20a98b88ed9ed26c898c6443a6aaf80d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 27 Mar 2025 13:42:15 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/anndata_plot/pl/heatmap_triangle.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/anndata_plot/pl/heatmap_triangle.py b/src/anndata_plot/pl/heatmap_triangle.py index 452c3ad..c7a9611 100644 --- a/src/anndata_plot/pl/heatmap_triangle.py +++ b/src/anndata_plot/pl/heatmap_triangle.py @@ -19,7 +19,7 @@ def heatmap_triangle( **cbar_params, ) -> None: """Plot upper diagonal of a `matrix` as a triangular heatmap - + Parameters ---------- matrix : Union[pd.DataFrame, np.array] @@ -97,7 +97,7 @@ def heatmap_triangle( ax.set_yticks([]) ax.xaxis.tick_top() - + # If names are given, set them as ticks label_loc = np.arange(-N, N, 2) + 1 match direction: @@ -111,7 +111,7 @@ def heatmap_triangle( ax.set_xticks(label_loc, names, rotation=ticks_rotation) else: ax.set_xticks([]) - + # Add a colorbar below the heatmap triangle if show_cbar: if cbar_params is None: