{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Classical RNA velocity vs. labeling approach - 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 / \"labeling_kernel\").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",
" number_of_macrostates | \n",
" identified_terminal_states | \n",
" optimal_identification | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 18 | \n",
" 4 | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" 17 | \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
" 2 | \n",
" 16 | \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
" 3 | \n",
" 15 | \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
" 4 | \n",
" 14 | \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" number_of_macrostates identified_terminal_states optimal_identification\n",
"0 18 4 4\n",
"1 17 3 4\n",
"2 16 3 4\n",
"3 15 3 4\n",
"4 14 3 4"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tsi_cr1 = pd.read_csv(DATA_DIR / \"sceu_organoid\" / \"results\" / \"tsi-em_model.csv\")\n",
"tsi_cr1.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" number_of_macrostates | \n",
" identified_terminal_states | \n",
" optimal_identification | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 17 | \n",
" 4 | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" 16 | \n",
" 4 | \n",
" 4 | \n",
"
\n",
" \n",
" 2 | \n",
" 15 | \n",
" 4 | \n",
" 4 | \n",
"
\n",
" \n",
" 3 | \n",
" 14 | \n",
" 4 | \n",
" 4 | \n",
"
\n",
" \n",
" 4 | \n",
" 13 | \n",
" 4 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" number_of_macrostates identified_terminal_states optimal_identification\n",
"0 17 4 4\n",
"1 16 4 4\n",
"2 15 4 4\n",
"3 14 4 4\n",
"4 13 4 4"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tsi_cr2 = pd.read_csv(DATA_DIR / \"sceu_organoid\" / \"results\" / \"tsi-labeling_approach.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",
"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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vvkGFy9ehImJCbp06YI5c+agVq1a+kyXXhLFXVfVq1fHvHnzcOXKFTx8+BBKpRJOTk4YMGAAxo8fDxMTEz1nTK8aFrpEREREZJA4wY+IiIiIDBILXSIiIiIySCx0iYiIiMggsdAlIiIiIoPEQpeIiIiIDBILXSIiIiIySCx0iYiIiMggsdAlIiIiIoPEQpeIiIiIDBILXSIiIiIySCx0iYiIiMggsdAlopfSnDlz4Orqiri4OKlTqRAnT57E66+/Dl9fX7i6uuL999+XOiUiopceC12iV1xcXBxcXV3h6uqKCRMmiLYJCwuDq6sr5syZo+fsXg1xcXF4//33ERcXh4CAAEyePBn+/v5Sp/XSOnfuHFxdXfHDDz9UyPHGjBkDV1fXCjkWEemXsdQJEFHVcfLkSZw5cwbt2rWTOpVXypkzZ5Cbm4uPPvoIAwYMkDodIiKDwRFdIgIAODo6wsjICIsWLYIgCFKn80p58OABAMDBwUHiTIiIDAsLXSICADRq1AiDBg3C1atXsX///hL16d69O7p37y66T+zt3h9++AGurq44d+4ctm/fjgEDBsDLywvdu3fH+vXrAQCCIGDNmjXo3bs3PD090atXL+zcubPQHARBwMqVK9GrVy94enqie/fuCAoKwtOnT0XbX7hwAYGBgfDz84OHhwd69eqFpUuXIjs7W6tdwbe/L126hPHjx6N169Ylfgv75s2bmDp1Ktq1awcPDw90794dX3/9NZKTkzVt1NNG1G+xjx07VjON5Ny5c0UeXz1HOTY2FqtXr0bv3r3h5eWFfv36Ye/evQCAvLw8LF26FN27d4enpycGDBiAv//+W+dYV69exVdffYX+/fujVatW8PLywoABA/Drr78Weh6fPHmCb775RhO3TZs2GDZsGFavXq3z/ObMmYPbt29j0qRJ8PPz05pbnZ+fj//9738YOHAgvLy80KpVK4wZMwZHjhzRialSqbB161YMHToUbdq0gZeXFzp37ozAwEDN+frhhx8wduxYAEBQUJDmfBaMGRMTg//+978YPHgw/Pz84Onpid69e2PRokXIzMzUiunq6orz589rvlb/e3EaT2RkJKZPn46OHTvCw8MD3bp1w7x587S+32pnz57FxIkTNW3bt2+PkSNHYvPmzaLnmojKjlMXiEjjgw8+wN69e7Fs2TL83//9H0xMTColzrp1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",
"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 / \"labeling_kernel\" / 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, 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
}