{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.simplefilter(action='ignore', category=FutureWarning)\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import scanpy as sc\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "hao = pd.read_csv('metrics/hao_concat.csv')\n",
    "tenx = pd.read_csv('metrics/10xpbmc10k_concat.csv')\n",
    "kotliarov = pd.read_csv('metrics/kotliarov_concat.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ASW_label/batch</th>\n",
       "      <th>graph_conn</th>\n",
       "      <th>ASW_label</th>\n",
       "      <th>NMI_cluster/label</th>\n",
       "      <th>ARI_cluster/label</th>\n",
       "      <th>isolated_label_silhouette</th>\n",
       "      <th>method</th>\n",
       "      <th>reference_time</th>\n",
       "      <th>query_time</th>\n",
       "      <th>data</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.907703</td>\n",
       "      <td>0.902571</td>\n",
       "      <td>0.605911</td>\n",
       "      <td>0.816097</td>\n",
       "      <td>0.729670</td>\n",
       "      <td>0.596722</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Hao-2020</td>\n",
       "      <td>0.774315</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.884090</td>\n",
       "      <td>0.911601</td>\n",
       "      <td>0.592911</td>\n",
       "      <td>0.774955</td>\n",
       "      <td>0.651206</td>\n",
       "      <td>0.562602</td>\n",
       "      <td>seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Hao-2020</td>\n",
       "      <td>0.746389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.944618</td>\n",
       "      <td>0.956565</td>\n",
       "      <td>0.545965</td>\n",
       "      <td>0.808280</td>\n",
       "      <td>0.706760</td>\n",
       "      <td>0.553468</td>\n",
       "      <td>totalVI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Hao-2020</td>\n",
       "      <td>0.772408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.840300</td>\n",
       "      <td>0.908356</td>\n",
       "      <td>0.582185</td>\n",
       "      <td>0.804004</td>\n",
       "      <td>0.656429</td>\n",
       "      <td>0.592701</td>\n",
       "      <td>mofa</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Hao-2020</td>\n",
       "      <td>0.745029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.971518</td>\n",
       "      <td>0.992435</td>\n",
       "      <td>0.556031</td>\n",
       "      <td>0.888860</td>\n",
       "      <td>0.882182</td>\n",
       "      <td>0.542164</td>\n",
       "      <td>totalVI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Kotliarov-2020</td>\n",
       "      <td>0.823176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.957940</td>\n",
       "      <td>0.993563</td>\n",
       "      <td>0.691650</td>\n",
       "      <td>0.919871</td>\n",
       "      <td>0.913472</td>\n",
       "      <td>0.557054</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Kotliarov-2020</td>\n",
       "      <td>0.852608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.945120</td>\n",
       "      <td>0.991104</td>\n",
       "      <td>0.694918</td>\n",
       "      <td>0.909042</td>\n",
       "      <td>0.913448</td>\n",
       "      <td>0.586168</td>\n",
       "      <td>mofa</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Kotliarov-2020</td>\n",
       "      <td>0.852781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.945788</td>\n",
       "      <td>0.912632</td>\n",
       "      <td>0.589508</td>\n",
       "      <td>0.751772</td>\n",
       "      <td>0.686227</td>\n",
       "      <td>0.565185</td>\n",
       "      <td>seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Kotliarov-2020</td>\n",
       "      <td>0.760588</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   ASW_label/batch  graph_conn  ASW_label  NMI_cluster/label  \\\n",
       "0         0.907703    0.902571   0.605911           0.816097   \n",
       "1         0.884090    0.911601   0.592911           0.774955   \n",
       "2         0.944618    0.956565   0.545965           0.808280   \n",
       "3         0.840300    0.908356   0.582185           0.804004   \n",
       "0         0.971518    0.992435   0.556031           0.888860   \n",
       "1         0.957940    0.993563   0.691650           0.919871   \n",
       "2         0.945120    0.991104   0.694918           0.909042   \n",
       "3         0.945788    0.912632   0.589508           0.751772   \n",
       "\n",
       "   ARI_cluster/label  isolated_label_silhouette      method  reference_time  \\\n",
       "0           0.729670                   0.596722  multigrate               0   \n",
       "1           0.651206                   0.562602      seurat               0   \n",
       "2           0.706760                   0.553468     totalVI               0   \n",
       "3           0.656429                   0.592701        mofa               0   \n",
       "0           0.882182                   0.542164     totalVI               0   \n",
       "1           0.913472                   0.557054  multigrate               0   \n",
       "2           0.913448                   0.586168        mofa               0   \n",
       "3           0.686227                   0.565185      seurat               0   \n",
       "\n",
       "   query_time            data     score  \n",
       "0           0        Hao-2020  0.774315  \n",
       "1           0        Hao-2020  0.746389  \n",
       "2           0        Hao-2020  0.772408  \n",
       "3           0        Hao-2020  0.745029  \n",
       "0           0  Kotliarov-2020  0.823176  \n",
       "1           0  Kotliarov-2020  0.852608  \n",
       "2           0  Kotliarov-2020  0.852781  \n",
       "3           0  Kotliarov-2020  0.760588  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.concat([hao, kotliarov])\n",
    "df['score'] = 0.4*(df[\"ASW_label/batch\"] + df[\"graph_conn\"])/2 + 0.6*(df[\"NMI_cluster/label\"] + df[\"ARI_cluster/label\"] + df[\"ASW_label\"] + df[\"isolated_label_silhouette\"])/4\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>graph_conn</th>\n",
       "      <th>ASW_label</th>\n",
       "      <th>NMI_cluster/label</th>\n",
       "      <th>ARI_cluster/label</th>\n",
       "      <th>method</th>\n",
       "      <th>reference_time</th>\n",
       "      <th>query_time</th>\n",
       "      <th>data</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.993777</td>\n",
       "      <td>0.605867</td>\n",
       "      <td>0.804092</td>\n",
       "      <td>0.665098</td>\n",
       "      <td>seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.992867</td>\n",
       "      <td>0.655908</td>\n",
       "      <td>0.812518</td>\n",
       "      <td>0.774575</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.980192</td>\n",
       "      <td>0.618968</td>\n",
       "      <td>0.770092</td>\n",
       "      <td>0.707662</td>\n",
       "      <td>mofa</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   graph_conn  ASW_label  NMI_cluster/label  ARI_cluster/label      method  \\\n",
       "0    0.993777   0.605867           0.804092           0.665098      seurat   \n",
       "1    0.992867   0.655908           0.812518           0.774575  multigrate   \n",
       "2    0.980192   0.618968           0.770092           0.707662        mofa   \n",
       "\n",
       "   reference_time  query_time             data  \n",
       "0               0           0  10xpbmc10k-2020  \n",
       "1               0           0  10xpbmc10k-2020  \n",
       "2               0           0  10xpbmc10k-2020  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tenx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>graph_conn</th>\n",
       "      <th>ASW_label</th>\n",
       "      <th>NMI_cluster/label</th>\n",
       "      <th>ARI_cluster/label</th>\n",
       "      <th>method</th>\n",
       "      <th>reference_time</th>\n",
       "      <th>query_time</th>\n",
       "      <th>data</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.993777</td>\n",
       "      <td>0.605867</td>\n",
       "      <td>0.804092</td>\n",
       "      <td>0.665098</td>\n",
       "      <td>seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "      <td>0.812522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.992867</td>\n",
       "      <td>0.655908</td>\n",
       "      <td>0.812518</td>\n",
       "      <td>0.774575</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "      <td>0.845747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.980192</td>\n",
       "      <td>0.618968</td>\n",
       "      <td>0.770092</td>\n",
       "      <td>0.707662</td>\n",
       "      <td>mofa</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "      <td>0.811421</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   graph_conn  ASW_label  NMI_cluster/label  ARI_cluster/label      method  \\\n",
       "0    0.993777   0.605867           0.804092           0.665098      seurat   \n",
       "1    0.992867   0.655908           0.812518           0.774575  multigrate   \n",
       "2    0.980192   0.618968           0.770092           0.707662        mofa   \n",
       "\n",
       "   reference_time  query_time             data     score  \n",
       "0               0           0  10xpbmc10k-2020  0.812522  \n",
       "1               0           0  10xpbmc10k-2020  0.845747  \n",
       "2               0           0  10xpbmc10k-2020  0.811421  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tenx['score'] = 0.4*tenx[\"graph_conn\"] + 0.6*(tenx[\"NMI_cluster/label\"] + tenx[\"ARI_cluster/label\"] + tenx[\"ASW_label\"])/3\n",
    "tenx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ASW_label/batch</th>\n",
       "      <th>graph_conn</th>\n",
       "      <th>ASW_label</th>\n",
       "      <th>NMI_cluster/label</th>\n",
       "      <th>ARI_cluster/label</th>\n",
       "      <th>isolated_label_silhouette</th>\n",
       "      <th>method</th>\n",
       "      <th>reference_time</th>\n",
       "      <th>query_time</th>\n",
       "      <th>data</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.907703</td>\n",
       "      <td>0.902571</td>\n",
       "      <td>0.605911</td>\n",
       "      <td>0.816097</td>\n",
       "      <td>0.729670</td>\n",
       "      <td>0.596722</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Hao-2020</td>\n",
       "      <td>0.774315</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.884090</td>\n",
       "      <td>0.911601</td>\n",
       "      <td>0.592911</td>\n",
       "      <td>0.774955</td>\n",
       "      <td>0.651206</td>\n",
       "      <td>0.562602</td>\n",
       "      <td>seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Hao-2020</td>\n",
       "      <td>0.746389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.944618</td>\n",
       "      <td>0.956565</td>\n",
       "      <td>0.545965</td>\n",
       "      <td>0.808280</td>\n",
       "      <td>0.706760</td>\n",
       "      <td>0.553468</td>\n",
       "      <td>totalVI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Hao-2020</td>\n",
       "      <td>0.772408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.840300</td>\n",
       "      <td>0.908356</td>\n",
       "      <td>0.582185</td>\n",
       "      <td>0.804004</td>\n",
       "      <td>0.656429</td>\n",
       "      <td>0.592701</td>\n",
       "      <td>mofa</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Hao-2020</td>\n",
       "      <td>0.745029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.971518</td>\n",
       "      <td>0.992435</td>\n",
       "      <td>0.556031</td>\n",
       "      <td>0.888860</td>\n",
       "      <td>0.882182</td>\n",
       "      <td>0.542164</td>\n",
       "      <td>totalVI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Kotliarov-2020</td>\n",
       "      <td>0.823176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.957940</td>\n",
       "      <td>0.993563</td>\n",
       "      <td>0.691650</td>\n",
       "      <td>0.919871</td>\n",
       "      <td>0.913472</td>\n",
       "      <td>0.557054</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Kotliarov-2020</td>\n",
       "      <td>0.852608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.945120</td>\n",
       "      <td>0.991104</td>\n",
       "      <td>0.694918</td>\n",
       "      <td>0.909042</td>\n",
       "      <td>0.913448</td>\n",
       "      <td>0.586168</td>\n",
       "      <td>mofa</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Kotliarov-2020</td>\n",
       "      <td>0.852781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.945788</td>\n",
       "      <td>0.912632</td>\n",
       "      <td>0.589508</td>\n",
       "      <td>0.751772</td>\n",
       "      <td>0.686227</td>\n",
       "      <td>0.565185</td>\n",
       "      <td>seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Kotliarov-2020</td>\n",
       "      <td>0.760588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.993777</td>\n",
       "      <td>0.605867</td>\n",
       "      <td>0.804092</td>\n",
       "      <td>0.665098</td>\n",
       "      <td>NaN</td>\n",
       "      <td>seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "      <td>0.812522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.992867</td>\n",
       "      <td>0.655908</td>\n",
       "      <td>0.812518</td>\n",
       "      <td>0.774575</td>\n",
       "      <td>NaN</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "      <td>0.845747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.980192</td>\n",
       "      <td>0.618968</td>\n",
       "      <td>0.770092</td>\n",
       "      <td>0.707662</td>\n",
       "      <td>NaN</td>\n",
       "      <td>mofa</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10xpbmc10k-2020</td>\n",
       "      <td>0.811421</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   ASW_label/batch  graph_conn  ASW_label  NMI_cluster/label  \\\n",
       "0         0.907703    0.902571   0.605911           0.816097   \n",
       "1         0.884090    0.911601   0.592911           0.774955   \n",
       "2         0.944618    0.956565   0.545965           0.808280   \n",
       "3         0.840300    0.908356   0.582185           0.804004   \n",
       "0         0.971518    0.992435   0.556031           0.888860   \n",
       "1         0.957940    0.993563   0.691650           0.919871   \n",
       "2         0.945120    0.991104   0.694918           0.909042   \n",
       "3         0.945788    0.912632   0.589508           0.751772   \n",
       "0              NaN    0.993777   0.605867           0.804092   \n",
       "1              NaN    0.992867   0.655908           0.812518   \n",
       "2              NaN    0.980192   0.618968           0.770092   \n",
       "\n",
       "   ARI_cluster/label  isolated_label_silhouette      method  reference_time  \\\n",
       "0           0.729670                   0.596722  multigrate               0   \n",
       "1           0.651206                   0.562602      seurat               0   \n",
       "2           0.706760                   0.553468     totalVI               0   \n",
       "3           0.656429                   0.592701        mofa               0   \n",
       "0           0.882182                   0.542164     totalVI               0   \n",
       "1           0.913472                   0.557054  multigrate               0   \n",
       "2           0.913448                   0.586168        mofa               0   \n",
       "3           0.686227                   0.565185      seurat               0   \n",
       "0           0.665098                        NaN      seurat               0   \n",
       "1           0.774575                        NaN  multigrate               0   \n",
       "2           0.707662                        NaN        mofa               0   \n",
       "\n",
       "   query_time             data     score  \n",
       "0           0         Hao-2020  0.774315  \n",
       "1           0         Hao-2020  0.746389  \n",
       "2           0         Hao-2020  0.772408  \n",
       "3           0         Hao-2020  0.745029  \n",
       "0           0   Kotliarov-2020  0.823176  \n",
       "1           0   Kotliarov-2020  0.852608  \n",
       "2           0   Kotliarov-2020  0.852781  \n",
       "3           0   Kotliarov-2020  0.760588  \n",
       "0           0  10xpbmc10k-2020  0.812522  \n",
       "1           0  10xpbmc10k-2020  0.845747  \n",
       "2           0  10xpbmc10k-2020  0.811421  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.concat([df, tenx])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.loc[(df.data == 'Hao-2020'),'data']='Dataset 2\\n (CITE)'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.loc[(df.data == 'Kotliarov-2020'),'data']='Dataset 3\\n (CITE)'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.loc[(df.data == '10xpbmc10k-2020'),'data']='Dataset 1\\n (RNA-ATAC)'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.loc[(df.method == 'mofa'),'method']='MOFA+'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.loc[(df.method == 'seurat'),'method']='Seurat'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ASW_label/batch</th>\n",
       "      <th>graph_conn</th>\n",
       "      <th>ASW_label</th>\n",
       "      <th>NMI_cluster/label</th>\n",
       "      <th>ARI_cluster/label</th>\n",
       "      <th>isolated_label_silhouette</th>\n",
       "      <th>method</th>\n",
       "      <th>reference_time</th>\n",
       "      <th>query_time</th>\n",
       "      <th>data</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.907703</td>\n",
       "      <td>0.902571</td>\n",
       "      <td>0.605911</td>\n",
       "      <td>0.816097</td>\n",
       "      <td>0.729670</td>\n",
       "      <td>0.596722</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 2\\n (CITE)</td>\n",
       "      <td>0.774315</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.884090</td>\n",
       "      <td>0.911601</td>\n",
       "      <td>0.592911</td>\n",
       "      <td>0.774955</td>\n",
       "      <td>0.651206</td>\n",
       "      <td>0.562602</td>\n",
       "      <td>Seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 2\\n (CITE)</td>\n",
       "      <td>0.746389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.944618</td>\n",
       "      <td>0.956565</td>\n",
       "      <td>0.545965</td>\n",
       "      <td>0.808280</td>\n",
       "      <td>0.706760</td>\n",
       "      <td>0.553468</td>\n",
       "      <td>totalVI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 2\\n (CITE)</td>\n",
       "      <td>0.772408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.840300</td>\n",
       "      <td>0.908356</td>\n",
       "      <td>0.582185</td>\n",
       "      <td>0.804004</td>\n",
       "      <td>0.656429</td>\n",
       "      <td>0.592701</td>\n",
       "      <td>MOFA+</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 2\\n (CITE)</td>\n",
       "      <td>0.745029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.971518</td>\n",
       "      <td>0.992435</td>\n",
       "      <td>0.556031</td>\n",
       "      <td>0.888860</td>\n",
       "      <td>0.882182</td>\n",
       "      <td>0.542164</td>\n",
       "      <td>totalVI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 3\\n (CITE)</td>\n",
       "      <td>0.823176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.957940</td>\n",
       "      <td>0.993563</td>\n",
       "      <td>0.691650</td>\n",
       "      <td>0.919871</td>\n",
       "      <td>0.913472</td>\n",
       "      <td>0.557054</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 3\\n (CITE)</td>\n",
       "      <td>0.852608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.945120</td>\n",
       "      <td>0.991104</td>\n",
       "      <td>0.694918</td>\n",
       "      <td>0.909042</td>\n",
       "      <td>0.913448</td>\n",
       "      <td>0.586168</td>\n",
       "      <td>MOFA+</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 3\\n (CITE)</td>\n",
       "      <td>0.852781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.945788</td>\n",
       "      <td>0.912632</td>\n",
       "      <td>0.589508</td>\n",
       "      <td>0.751772</td>\n",
       "      <td>0.686227</td>\n",
       "      <td>0.565185</td>\n",
       "      <td>Seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 3\\n (CITE)</td>\n",
       "      <td>0.760588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.993777</td>\n",
       "      <td>0.605867</td>\n",
       "      <td>0.804092</td>\n",
       "      <td>0.665098</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seurat</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 1\\n (RNA-ATAC)</td>\n",
       "      <td>0.812522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.992867</td>\n",
       "      <td>0.655908</td>\n",
       "      <td>0.812518</td>\n",
       "      <td>0.774575</td>\n",
       "      <td>NaN</td>\n",
       "      <td>multigrate</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 1\\n (RNA-ATAC)</td>\n",
       "      <td>0.845747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.980192</td>\n",
       "      <td>0.618968</td>\n",
       "      <td>0.770092</td>\n",
       "      <td>0.707662</td>\n",
       "      <td>NaN</td>\n",
       "      <td>MOFA+</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Dataset 1\\n (RNA-ATAC)</td>\n",
       "      <td>0.811421</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   ASW_label/batch  graph_conn  ASW_label  NMI_cluster/label  \\\n",
       "0         0.907703    0.902571   0.605911           0.816097   \n",
       "1         0.884090    0.911601   0.592911           0.774955   \n",
       "2         0.944618    0.956565   0.545965           0.808280   \n",
       "3         0.840300    0.908356   0.582185           0.804004   \n",
       "0         0.971518    0.992435   0.556031           0.888860   \n",
       "1         0.957940    0.993563   0.691650           0.919871   \n",
       "2         0.945120    0.991104   0.694918           0.909042   \n",
       "3         0.945788    0.912632   0.589508           0.751772   \n",
       "0              NaN    0.993777   0.605867           0.804092   \n",
       "1              NaN    0.992867   0.655908           0.812518   \n",
       "2              NaN    0.980192   0.618968           0.770092   \n",
       "\n",
       "   ARI_cluster/label  isolated_label_silhouette      method  reference_time  \\\n",
       "0           0.729670                   0.596722  multigrate               0   \n",
       "1           0.651206                   0.562602      Seurat               0   \n",
       "2           0.706760                   0.553468     totalVI               0   \n",
       "3           0.656429                   0.592701       MOFA+               0   \n",
       "0           0.882182                   0.542164     totalVI               0   \n",
       "1           0.913472                   0.557054  multigrate               0   \n",
       "2           0.913448                   0.586168       MOFA+               0   \n",
       "3           0.686227                   0.565185      Seurat               0   \n",
       "0           0.665098                        NaN      Seurat               0   \n",
       "1           0.774575                        NaN  multigrate               0   \n",
       "2           0.707662                        NaN       MOFA+               0   \n",
       "\n",
       "   query_time                    data     score  \n",
       "0           0      Dataset 2\\n (CITE)  0.774315  \n",
       "1           0      Dataset 2\\n (CITE)  0.746389  \n",
       "2           0      Dataset 2\\n (CITE)  0.772408  \n",
       "3           0      Dataset 2\\n (CITE)  0.745029  \n",
       "0           0      Dataset 3\\n (CITE)  0.823176  \n",
       "1           0      Dataset 3\\n (CITE)  0.852608  \n",
       "2           0      Dataset 3\\n (CITE)  0.852781  \n",
       "3           0      Dataset 3\\n (CITE)  0.760588  \n",
       "0           0  Dataset 1\\n (RNA-ATAC)  0.812522  \n",
       "1           0  Dataset 1\\n (RNA-ATAC)  0.845747  \n",
       "2           0  Dataset 1\\n (RNA-ATAC)  0.811421  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ISsnJ2fM6tWre33pS186ZuzYscePGDFizHXXXXc0wJ133pmxcePGnlOmTMnJz8/PAfjzn//c76STTho1evTo488555zh27ZtO6g4q6AsIiJxac2aNb1vvPHGDatXr166evXq3nPnzh1QVFS0/K677qq66667jmrLPe66667q8ePH71i+fHnZrbfeujHytZtuuunoKVOmbF+1alXpF7/4xS3r1q3bF9A/+OCDlFmzZm1atWpVaU5Ozp6f/vSn1UuXLl22fPny0tdeey110aJFfW655ZaNGRkZexcsWLBi0aJFK9atW5f8ox/96KiFCxeuKCsrW5aXl7frjjvuGPTJXO2fgrKIiMSlIUOG1E2YMGF3UlISOTk5u6dOnVrbo0cP8vLydlVVVaUc+A6te/PNN/teccUVNQAXXXRRbb9+/fa1Ux911FF7Tj/99J1Nx3PmzEkfPXr08aNHjx69cuXK3iUlJb2b36+goODw1atX954wYcKoUaNGjZ43b96ADz74oFfz61qjgV4iIhKXevXqtW/x/h49etC7d28HSEpKoqGhwZKTk72x8V/jq+rq6tq9VHlzkds9Ll++vNevfvWrQW+99daygQMHNlx44YVZH3300Scqte7OpEmTap955pn32vtc1ZRFRCQhZWVl1b3zzjuHAxQWFh5WXV39idpz//79G3bs2JHUUvpPf/rTO37/+9+nQ9AXXFtb2+J1W7ZsSerTp09jenp6w5o1a5ILCgr6N712+OGHNzT1G5966qk7i4qK+i5dujQFoLa2tse77757UDV61ZRFRKRVsZjC1B5f/vKXt8ydO3fAiBEjxnzqU5/aeeyxx37U/Jqw+dtHjhw5+tJLL/1w3Lhxu5teu/vuu9dedNFFw7OzsweMGzdux5FHHrn3iCOOaKitrf1YhXXixIm7x44du+u4444be9RRR+0ZN27cjqbXrrjiig+nTZuWM2jQoD2LFi1a8cADD1TOmDFj+J49ewzg1ltvrT7xxBPr2vqe9rt1YwLS1o0t6ELl26ESpfwSaPu/mNLWjR2q227duHv3bktOTvaePXvy4osvHj5r1qxjly9fXhaLZx/01o0iIiJd2apVq3pdfPHFxzU2NtKzZ09/4IEHKjs7TwrKIiLSLZ1wwgl1y5Yti0nNuK2iOtDLzKaZWbmZrTKzm/ZzzcVmVmZmpWb2x4jzV5jZ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#\n",
    "df.groupby(['data','method']).sum().unstack().reindex(['Dataset 1\\n (RNA-ATAC)', 'Dataset 2\\n (CITE)', 'Dataset 3\\n (CITE)']).plot(kind='bar', y='score', color=[\"#a6dcef\",\"red\",\"black\",\"#00a8cc\"], zorder=3).legend(bbox_to_anchor=(1, 0.5))\n",
    "plt.ylabel(\"Overall Score\")\n",
    "plt.xlabel(\"\")\n",
    "for spine in plt.gca().spines.values():\n",
    "    spine.set_visible(False)\n",
    "plt.tick_params(\n",
    "    axis='x',          # changes apply to the x-axis\n",
    "    which='both',      # both major and minor ticks are affected\n",
    "    bottom=False,      # ticks along the bottom edge are off\n",
    "    top=False,         # ticks along the top edge are off\n",
    "    labelbottom=True)\n",
    "plt.tick_params(\n",
    "    axis='y',          # changes apply to the x-axis\n",
    "    which='both',      # both major and minor ticks are affected\n",
    "    left=False,      # ticks along the bottom edge are off\n",
    "    right=False,         # ticks along the top edge are off\n",
    "    labelbottom=True)\n",
    "plt.grid('on', linestyle='--', zorder=0)\n",
    "plt.ylim(0.5)\n",
    "plt.xticks([0, 1, 2], ['Dataset 1\\n (RNA-ATAC)', 'Dataset 2\\n (CITE)', 'Dataset 3\\n (CITE)'], rotation=45)\n",
    "plt.savefig(\"scores_all_barplot_v5.png\", bbox_inches='tight', dpi=200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
