{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import scanpy as sc\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "AnnData object with n_obs × n_vars = 149926 × 4000\n",
       "    obs: 'nCount_ADT', 'nFeature_ADT', 'nCount_RNA', 'nFeature_RNA', 'orig.ident', 'lane', 'donor', 'time', 'celltype.l1', 'celltype.l2', 'celltype.l3', 'Phase', 'Batch', 'n_genes', 'n_genes_by_counts', 'log1p_n_genes_by_counts', 'total_counts', 'log1p_total_counts', 'total_counts_mt', 'log1p_total_counts_mt', 'pct_counts_mt'\n",
       "    var: 'names', 'n_cells', 'mt', 'n_cells_by_counts', 'mean_counts', 'log1p_mean_counts', 'pct_dropout_by_counts', 'total_counts', 'log1p_total_counts', 'highly_variable', 'means', 'dispersions', 'dispersions_norm'\n",
       "    uns: 'Batch_colors', 'celltype.l1_colors', 'celltype.l2_colors', 'celltype.l3_colors', 'donor_colors', 'neighbors', 'pca', 'umap'\n",
       "    obsm: 'X_pca', 'X_umap'\n",
       "    varm: 'PCs'\n",
       "    layers: 'count'\n",
       "    obsp: 'connectivities', 'distances'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scrna = sc.read('../data/hao-2020/expressions_hvg.h5ad')\n",
    "scrna"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "AnnData object with n_obs × n_vars = 149926 × 228\n",
       "    obs: 'nCount_ADT', 'nFeature_ADT', 'nCount_RNA', 'nFeature_RNA', 'orig.ident', 'lane', 'donor', 'time', 'celltype.l1', 'celltype.l2', 'celltype.l3', 'Phase', 'Batch', 'n_genes'\n",
       "    var: 'n_cells'\n",
       "    uns: 'Batch_colors', 'celltype.l1_colors', 'celltype.l2_colors', 'celltype.l3_colors', 'donor_colors', 'neighbors', 'pca', 'umap'\n",
       "    obsm: 'X_pca', 'X_umap'\n",
       "    varm: 'PCs'\n",
       "    layers: 'count'\n",
       "    obsp: 'connectivities', 'distances'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cite = sc.read('../data/hao-2020/protein.h5ad')\n",
    "cite"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "scrna.obs['cell_type'] = scrna.obs['celltype.l2'].astype('category')\n",
    "cite.obs['cell_type'] = cite.obs['celltype.l2'].astype('category')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[66., 15., 37., ...,  8., 20., 50.],\n",
       "       [ 4., 13.,  9., ...,  7., 10., 22.],\n",
       "       [ 6., 19.,  8., ...,  7.,  8., 13.],\n",
       "       ...,\n",
       "       [24.,  5., 13., ...,  2.,  2., 15.],\n",
       "       [43.,  4., 24., ...,  6.,  7., 75.],\n",
       "       [30.,  7., 31., ...,  4.,  2., 54.]], dtype=float32)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cite.layers['count']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/icb/litinetskaya/miniconda3/envs/multigrate/lib/python3.7/site-packages/anndata/_core/anndata.py:1094: FutureWarning: is_categorical is deprecated and will be removed in a future version.  Use is_categorical_dtype instead\n",
      "  if not is_categorical(df_full[k]):\n",
      "/home/icb/litinetskaya/miniconda3/envs/multigrate/lib/python3.7/site-packages/pandas/core/arrays/categorical.py:2487: FutureWarning: The `inplace` parameter in pandas.Categorical.remove_unused_categories is deprecated and will be removed in a future version.\n",
      "  res = method(*args, **kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CD4\n",
      "CD4\n",
      "CD3\n",
      "CD56\n",
      "CD56\n",
      "CD11b\n",
      "CD11b\n",
      "CD38\n",
      "CD38\n",
      "CD44\n",
      "CD44\n",
      "CD26\n",
      "CD26\n",
      "CD275\n",
      "CD275\n",
      "CD45\n",
      "CD45\n",
      "CD133\n",
      "CD133\n",
      "CD3\n",
      "CD138\n",
      "CD138\n"
     ]
    },
    {
     "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>CD39</th>\n",
       "      <th>Rat-IgG1-1</th>\n",
       "      <th>CD107a</th>\n",
       "      <th>CD62P</th>\n",
       "      <th>TCR-2</th>\n",
       "      <th>CD30</th>\n",
       "      <th>CD31</th>\n",
       "      <th>CD34</th>\n",
       "      <th>CD35</th>\n",
       "      <th>CD36</th>\n",
       "      <th>...</th>\n",
       "      <th>CD119</th>\n",
       "      <th>CD169</th>\n",
       "      <th>CD28</th>\n",
       "      <th>CD161</th>\n",
       "      <th>CD163</th>\n",
       "      <th>CD138</th>\n",
       "      <th>CD164</th>\n",
       "      <th>CD144</th>\n",
       "      <th>CD202b</th>\n",
       "      <th>CD11c</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>L1_AAACCCAAGAAACTCA</th>\n",
       "      <td>66.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>142.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>752.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>...</td>\n",
       "      <td>28.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>50.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L1_AAACCCAAGACATACA</th>\n",
       "      <td>4.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>66.0</td>\n",
       "      <td>34.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>44.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>6.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L1_AAACCCACAACTGGTT</th>\n",
       "      <td>6.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>103.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L1_AAACCCACACGTACTA</th>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>79.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>56.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L1_AAACCCACAGCATACT</th>\n",
       "      <td>4.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>169.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>73.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>12.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E2L8_TTTGTTGGTCGTGATT</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>52.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>24.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E2L8_TTTGTTGGTGTGCCTG</th>\n",
       "      <td>49.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>256.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>188.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>519.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>...</td>\n",
       "      <td>18.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>90.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E2L8_TTTGTTGGTTAGTTCG</th>\n",
       "      <td>24.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>78.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>851.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>...</td>\n",
       "      <td>12.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>15.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E2L8_TTTGTTGGTTGGCTAT</th>\n",
       "      <td>43.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>24.0</td>\n",
       "      <td>287.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>181.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>96.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>...</td>\n",
       "      <td>12.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>75.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E2L8_TTTGTTGTCTCATGGA</th>\n",
       "      <td>30.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>146.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>194.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>274.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>...</td>\n",
       "      <td>9.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>54.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>149926 rows × 217 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                       CD39  Rat-IgG1-1  CD107a  CD62P  TCR-2  CD30   CD31  \\\n",
       "L1_AAACCCAAGAAACTCA    66.0        15.0    37.0  142.0    4.0   3.0  242.0   \n",
       "L1_AAACCCAAGACATACA     4.0        13.0     9.0   66.0   34.0   3.0   44.0   \n",
       "L1_AAACCCACAACTGGTT     6.0        19.0     8.0   94.0   10.0   9.0  103.0   \n",
       "L1_AAACCCACACGTACTA     5.0         5.0     6.0   79.0   10.0   0.0   60.0   \n",
       "L1_AAACCCACAGCATACT     4.0        10.0    14.0  115.0   10.0   4.0  169.0   \n",
       "...                     ...         ...     ...    ...    ...   ...    ...   \n",
       "E2L8_TTTGTTGGTCGTGATT   1.0         2.0    11.0   59.0   17.0   1.0   52.0   \n",
       "E2L8_TTTGTTGGTGTGCCTG  49.0        10.0    38.0  256.0   11.0   1.0  188.0   \n",
       "E2L8_TTTGTTGGTTAGTTCG  24.0         5.0    13.0   78.0    4.0   4.0   37.0   \n",
       "E2L8_TTTGTTGGTTGGCTAT  43.0         4.0    24.0  287.0    8.0   3.0  181.0   \n",
       "E2L8_TTTGTTGTCTCATGGA  30.0         7.0    31.0  146.0   10.0   1.0  194.0   \n",
       "\n",
       "                       CD34   CD35  CD36  ...  CD119  CD169  CD28  CD161  \\\n",
       "L1_AAACCCAAGAAACTCA     9.0  752.0  14.0  ...   28.0    5.0  31.0    3.0   \n",
       "L1_AAACCCAAGACATACA     5.0   57.0   0.0  ...    6.0    4.0  61.0   12.0   \n",
       "L1_AAACCCACAACTGGTT     4.0   60.0   2.0  ...    2.0    5.0  37.0    0.0   \n",
       "L1_AAACCCACACGTACTA     7.0   56.0   1.0  ...    6.0    1.0  19.0    8.0   \n",
       "L1_AAACCCACAGCATACT     6.0   73.0   5.0  ...    2.0    4.0  46.0    0.0   \n",
       "...                     ...    ...   ...  ...    ...    ...   ...    ...   \n",
       "E2L8_TTTGTTGGTCGTGATT   6.0   24.0   1.0  ...    6.0    0.0  26.0    0.0   \n",
       "E2L8_TTTGTTGGTGTGCCTG   6.0  519.0  14.0  ...   18.0   26.0  16.0    0.0   \n",
       "E2L8_TTTGTTGGTTAGTTCG   5.0  851.0   4.0  ...   12.0    1.0  14.0    1.0   \n",
       "E2L8_TTTGTTGGTTGGCTAT  14.0   96.0   4.0  ...   12.0   14.0  19.0    7.0   \n",
       "E2L8_TTTGTTGTCTCATGGA   5.0  274.0   6.0  ...    9.0    7.0  21.0    2.0   \n",
       "\n",
       "                       CD163  CD138  CD164  CD144  CD202b  CD11c  \n",
       "L1_AAACCCAAGAAACTCA     13.0   14.0    5.0    8.0    20.0   50.0  \n",
       "L1_AAACCCAAGACATACA      8.0    7.0    1.0    7.0    10.0   22.0  \n",
       "L1_AAACCCACAACTGGTT      6.0   18.0    1.0    7.0     8.0   13.0  \n",
       "L1_AAACCCACACGTACTA     10.0   18.0    0.0    3.0    10.0   13.0  \n",
       "L1_AAACCCACAGCATACT      1.0   16.0    1.0    5.0    13.0   12.0  \n",
       "...                      ...    ...    ...    ...     ...    ...  \n",
       "E2L8_TTTGTTGGTCGTGATT    2.0    6.0    3.0    5.0    10.0    7.0  \n",
       "E2L8_TTTGTTGGTGTGCCTG   13.0   16.0   11.0    5.0     6.0   90.0  \n",
       "E2L8_TTTGTTGGTTAGTTCG    5.0    9.0   23.0    2.0     2.0   15.0  \n",
       "E2L8_TTTGTTGGTTGGCTAT    8.0   20.0    2.0    6.0     7.0   75.0  \n",
       "E2L8_TTTGTTGTCTCATGGA    7.0   12.0    6.0    4.0     2.0   54.0  \n",
       "\n",
       "[149926 rows x 217 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "protein_df = pd.DataFrame(index=cite.obs_names)\n",
    "ref_proteins = cite.var_names\n",
    "for p in ref_proteins:\n",
    "    if p.split(\"-\")[-1] == \"1\" or p.split(\"-\")[-1] == \"2\":\n",
    "        root = p.split(\"-\")[0]\n",
    "        if root not in [\"Notch\", \"TCR\"]:\n",
    "            try:\n",
    "                protein_df[root] = (\n",
    "                    cite[:, root + \"-1\"].layers['count']\n",
    "                    + cite[:, root + \"-2\"].layers['count']\n",
    "                )\n",
    "                print(root)\n",
    "            except:\n",
    "                protein_df[p] = cite[:, p].layers['count']\n",
    "        else:\n",
    "            protein_df[p] = cite[:, p].layers['count']\n",
    "    else:\n",
    "        protein_df[p] = cite[:, p].layers['count']\n",
    "protein_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "AnnData object with n_obs × n_vars = 149926 × 217\n",
       "    obs: 'nCount_ADT', 'nFeature_ADT', 'nCount_RNA', 'nFeature_RNA', 'orig.ident', 'lane', 'donor', 'time', 'celltype.l1', 'celltype.l2', 'celltype.l3', 'Phase', 'Batch', 'n_genes', 'cell_type'"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cite_new = sc.AnnData(protein_df.to_numpy())\n",
    "cite_new.obs = cite.obs.copy()\n",
    "cite_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "cite_new.layers['count'] = cite_new.X.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def clr_normalize_each_cell(adata, inplace=True):\n",
    "    \"\"\"Normalize count vector for each cell, i.e. for each row of .X\"\"\"\n",
    "\n",
    "    import numpy as np\n",
    "    import scipy\n",
    "\n",
    "    def seurat_clr(x):\n",
    "        # TODO: support sparseness\n",
    "        s = np.sum(np.log1p(x[x > 0]))\n",
    "        exp = np.exp(s / len(x))\n",
    "        return np.log1p(x / exp)\n",
    "\n",
    "    if not inplace:\n",
    "        adata = adata.copy()\n",
    "\n",
    "    # apply to dense or sparse matrix, along axis. returns dense matrix\n",
    "    adata.X = np.apply_along_axis(\n",
    "        seurat_clr, 1, (adata.X.A if scipy.sparse.issparse(adata.X) else adata.X)\n",
    "    )\n",
    "    return adata"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "cite_new = clr_normalize_each_cell(cite_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/icb/litinetskaya/miniconda3/envs/multigrate/lib/python3.7/site-packages/anndata/_core/anndata.py:1094: FutureWarning: is_categorical is deprecated and will be removed in a future version.  Use is_categorical_dtype instead\n",
      "  if not is_categorical(df_full[k]):\n",
      "/home/icb/litinetskaya/miniconda3/envs/multigrate/lib/python3.7/site-packages/pandas/core/arrays/categorical.py:2487: FutureWarning: The `inplace` parameter in pandas.Categorical.remove_unused_categories is deprecated and will be removed in a future version.\n",
      "  res = method(*args, **kwargs)\n"
     ]
    }
   ],
   "source": [
    "adata1 = scrna[scrna.obs.Batch == 'Batch1']\n",
    "adata2 = scrna[scrna.obs.Batch == 'Batch2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "cite1 = cite_new[cite_new.obs.Batch == 'Batch1']\n",
    "cite2 = cite_new[cite_new.obs.Batch == 'Batch2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/icb/litinetskaya/miniconda3/envs/multigrate/lib/python3.7/site-packages/anndata/_core/anndata.py:1192: FutureWarning: is_categorical is deprecated and will be removed in a future version.  Use is_categorical_dtype instead\n",
      "  if is_string_dtype(df[key]) and not is_categorical(df[key])\n"
     ]
    }
   ],
   "source": [
    "adata1.write('../data/hao-2020/adata1.h5ad')\n",
    "adata2.write('../data/hao-2020/adata2.h5ad')\n",
    "cite1.write('../data/hao-2020/cite1.h5ad')\n",
    "cite2.write('../data/hao-2020/cite2.h5ad')"
   ]
  },
  {
   "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": 5
}
