{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# VelocityKernel vs. PseudotimeKernel - TSI" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Library imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Global seed set to 0\n" ] } ], "source": [ "import sys\n", "\n", "import pandas as pd\n", "\n", "import matplotlib.pyplot as plt\n", "import mplscience\n", "import seaborn as sns\n", "\n", "from cr2.analysis import plot_tsi\n", "\n", "sys.path.extend([\"../../../\", \".\"])\n", "from paths import DATA_DIR, FIG_DIR # isort: skip # noqa: E402" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## General settings" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "SAVE_FIGURES = False\n", "if SAVE_FIGURES:\n", " (FIG_DIR / \"pseudotime_kernel\" / \"hematopoiesis\").mkdir(parents=True, exist_ok=True)\n", "\n", "FIGURE_FORMAT = \"pdf\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Constants" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data loading" ] }, { "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", "
number_of_macrostatesidentified_terminal_statesoptimal_identification
01734
11634
21534
31434
41334
\n", "
" ], "text/plain": [ " number_of_macrostates identified_terminal_states optimal_identification\n", "0 17 3 4\n", "1 16 3 4\n", "2 15 3 4\n", "3 14 3 4\n", "4 13 3 4" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tsi_cr1 = pd.read_csv(DATA_DIR / \"hematopoiesis\" / \"results\" / \"tsi-vk.csv\")\n", "tsi_cr1.head()" ] }, { "cell_type": "code", "execution_count": 5, "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", "
number_of_macrostatesidentified_terminal_statesoptimal_identification
0744
1644
2534
3434
4333
\n", "
" ], "text/plain": [ " number_of_macrostates identified_terminal_states optimal_identification\n", "0 7 4 4\n", "1 6 4 4\n", "2 5 3 4\n", "3 4 3 4\n", "4 3 3 3" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tsi_cr2 = pd.read_csv(DATA_DIR / \"hematopoiesis\" / \"results\" / \"tsi-ptk.csv\")\n", "tsi_cr2.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data preprocessing" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "tsi_cr1[\"method\"] = \"CellRank 1\"\n", "tsi_cr2[\"method\"] = \"CellRank 2\"\n", "\n", "df = pd.concat([tsi_cr1, tsi_cr2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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iAgpyiMiIiKiYmDQFXHhwgV07doVjo6OBbapVasWnj17Vo5VEREREVFJMOiKSE1NhbW1daFtMjMzoVQqy6kiIiIiIiopBl0RtWrVwj///FNom5s3b8LBwaGcKiIiIiKikmLQFdGhQwecPn0aZ86cEV2/f/9+hIeHo3PnzuVcGREREREVF++jKyIoKAiHDh3Ce++9h759++L58+cAgI0bNyI8PBz79u2Dvb09/ve//0lcKREREREVhEFXhLW1NUJDQ/Hxxx9j27ZtquVz5swBADRp0gQLFy6EhYWFVCUSERERUREYdAvg4OCA3377DZGRkQgPD8fLly9hbm4ODw8PeHh4SF0eEZGKjY0Npk2bhqdPn8LGxkbqcoiIKgwG3SI0btwYjRs3lroMIqIC1apVC/PmzUN4eDhq1aoldTlERBUGL0YT4efnh/Xr1xfaZuPGjfDz8yunioiIiIiopBh0RcTGxiIpKanQNklJSXj06FE5VUREREREJcWgW0rJyckwMjKSugwiIty4cQM2Njbo1KkTbty4IXU5REQVBufo/issLEztcWxsrMYyAFAoFIiLi8OePXvg5ORUTtURERVMoVDgxYsXqq+JiCgXg+6/AgMDIZPJAAAymQw7d+7Ezp07RdsKggCZTIYpU6aUY4VEREREVBIMuv8aN24cZDIZBEHAsmXL4OXlBR8fH412enp6sLS0hK+vLxo0aCBBpURERERUHAy6/xo/frzq6wsXLqB///7o27evdAURERERkVYYdEVs2LBB6hKIiIiISEu86wIRERER6SSe0S3A48ePsXz5cpw5cwZPnz5Fdna2RhuZTIabN29KUB0RERERFYVBV0R0dDQGDhyIpKQkNGzYEFlZWahduzaMjY0RHR2NnJwcuLi4wMLCQupSiYiIiKgAnLogIiQkBCkpKfjll1+we/duAEBAQAAOHDiAY8eOoVOnTkhPT8eSJUskrpSICLC1tcXMmTMxatQo2NraSl0OEVGFwaAr4syZM2jXrh28vb011tna2mLx4sUAgEWLFpVzZUREmmrWrIk5c+bgww8/RM2aNaUuh4iowmDQFfHixQvUr19f9djAwADp6emqx0ZGRmjVqhWOHz8uRXlEREREVAwMuiKqVaumFmytrKwQGxur1kZfXx/JycnlXRoRERERFRODrggnJyc8fPhQ9djDwwOnTp1C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sbF48WL88MMPWLhwIQwMDDBs2DBMmzZNrc2MGTMwa9YsLF68GBkZGejXr99rCboAsHDhQsyZMwe//vorBEFA69atsWrVKrRt27bM9jFv3jxUq1YNe/bswdGjR+Hj44OVK1eq3l3NU6NGDWzduhXLli3DH3/8gU2bNsHKygoNGzbE1KlTS7XvIUOGIDIyEtu3b8cvv/wCe3v7Mvl5nz9/PpydnbFt2zZ89913sLCwgJubm2oaVf369bFkyRIsXrwY3377LWrUqIF3330X1tbW+OSTT9S2VZLMExAQABMTE6xatQoLFiyAqakpOnfujI8//rhM7gVeEjKhIsyGJiIiIsnlfYjR2bNnS3TxNVFF9UbN0SUiIiKiNweDLhERERHpJAZdIiIiItJJnKNLRERERDqJZ3SJiIiISCcx6BIRERGRTmLQJSIiIiKdxKBLRERERDqJQZeIiIiIdBKDLhERERHpJAZdIiIiItJJDLpEREREpJMYdImIiIhIJzHoEhEREZFOYtAlIiIiIp3EoEtEREREOolBl4iIiIh0EoMuEREREekkBl0iIiIi0kkMukRERESkk/4fjfCh6dSGTiEAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "palette = {\"CellRank 1\": \"#0173b2\", \"CellRank 2\": \"#DE8F05\", \"Optimal identification\": \"#000000\"}\n", "\n", "if SAVE_FIGURES:\n", " fname = FIG_DIR / \"pseudotime_kernel\" / \"hematopoiesis\" / f\"tsi_ranking.{FIGURE_FORMAT}\"\n", "else:\n", " fname = None\n", "\n", "with mplscience.style_context():\n", " sns.set_style(style=\"whitegrid\")\n", " plot_tsi(df=df, n_macrostates=7, palette=palette, fname=fname)\n", " plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "cr2-py38", "language": "python", "name": "cr2-py38" }, "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.16" } }, "nbformat": 4, "nbformat_minor": 2 }