CITE-seq reference mapping with totalVI#

With totalVI, we can train a reference model that can be used for mapping new query data. Here we dive into this functionality.

If you use totalVI, please consider citing:

  • Gayoso, A., Steier, Z., Lopez, R., Regier, J., Nazor, K. L., Streets, A., & Yosef, N. (2021). Joint probabilistic modeling of single-cell multi-omic data with totalVI. Nature Methods, 18(3), 272-282.

Note

Running the following cell will install tutorial dependencies on Google Colab only. It will have no effect on environments other than Google Colab.

!pip install --quiet scvi-colab
from scvi_colab import install

install()
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

import os
import tempfile
from pathlib import Path

import matplotlib.pyplot as plt
import numpy as np
import pooch
import scanpy as sc
import scrublet as scr
import scvi
import seaborn as sns
import torch
import umap
from scvi.model import TOTALVI
from sklearn.ensemble import RandomForestClassifier

Building a reference model#

scvi.settings.seed = 0
print("Last run with scvi-tools version:", scvi.__version__)
Last run with scvi-tools version: 1.1.0

Note

You can modify save_dir below to change where the data files for this tutorial are saved.

sc.set_figure_params(figsize=(6, 6), frameon=False)
sns.set_theme()
torch.set_float32_matmul_precision("high")
save_dir = tempfile.TemporaryDirectory()

%config InlineBackend.print_figure_kwargs={"facecolor": "w"}
%config InlineBackend.figure_format="retina"

This dataset was filtered as described in the scvi-tools manuscript (low quality cells, doublets, lowly expressed genes, etc.).

Important

Here we use the argument mask_protein_batches=5. What this does is treats the protein data in 5/24 of the batches in this dataset as missing. This will help totalVI integrate query data that has a subset of the proteins measured in this dataset or no proteins at all (i.e., just scRNA-seq data).

adata = scvi.data.pbmc_seurat_v4_cite_seq(
    save_path=save_dir.name,
    mask_protein_batches=5,
)
adata.layers["counts"] = adata.X.copy()
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
adata.raw = adata
INFO     Downloading file at /tmp/tmpkyrakh_v/pbmc_seurat_v4.h5ad
Downloading...:   0%|          | 0/1002579.0 [00:00<?, ?it/s]
Downloading...:   0%|          | 17/1002579.0 [00:00<2:21:51, 117.78it/s]
Downloading...:   0%|          | 52/1002579.0 [00:00<1:30:31, 184.57it/s]
Downloading...:   0%|          | 87/1002579.0 [00:00<1:21:30, 204.99it/s]
Downloading...:   0%|          | 209/1002579.0 [00:00<37:55, 440.58it/s]
Downloading...:   0%|          | 452/1002579.0 [00:00<19:30, 856.44it/s]
Downloading...:   0%|          | 922/1002579.0 [00:00<10:21, 1612.34it/s]
Downloading...:   0%|          | 1600/1002579.0 [00:01<06:41, 2493.69it/s]
Downloading...:   0%|          | 1846/1002579.0 [00:01<07:26, 2243.08it/s]
Downloading...:   0%|          | 3096/1002579.0 [00:01<04:03, 4113.04it/s]
Downloading...:   0%|          | 4194/1002579.0 [00:01<03:17, 5061.58it/s]
Downloading...:   1%|          | 5341/1002579.0 [00:01<02:51, 5807.75it/s]
Downloading...:   1%|          | 6521/1002579.0 [00:01<02:36, 6347.00it/s]
Downloading...:   1%|          | 7717/1002579.0 [00:01<02:26, 6787.27it/s]
Downloading...:   1%|          | 8831/1002579.0 [00:02<02:26, 6774.46it/s]
Downloading...:   1%|          | 10125/1002579.0 [00:02<02:12, 7480.88it/s]
Downloading...:   1%|          | 10994/1002579.0 [00:02<02:23, 6933.39it/s]
Downloading...:   1%|          | 11878/1002579.0 [00:02<02:31, 6546.54it/s]
Downloading...:   1%|▏         | 12779/1002579.0 [00:02<02:37, 6299.79it/s]
Downloading...:   1%|▏         | 13680/1002579.0 [00:02<02:38, 6251.67it/s]
Downloading...:   1%|▏         | 14598/1002579.0 [00:03<02:40, 6142.05it/s]
Downloading...:   2%|▏         | 15532/1002579.0 [00:03<02:42, 6056.07it/s]
Downloading...:   2%|▏         | 16466/1002579.0 [00:03<02:42, 6070.39it/s]
Downloading...:   2%|▏         | 17400/1002579.0 [00:03<02:39, 6184.79it/s]
Downloading...:   2%|▏         | 18366/1002579.0 [00:03<02:40, 6114.92it/s]
Downloading...:   2%|▏         | 19317/1002579.0 [00:03<02:37, 6252.31it/s]
Downloading...:   2%|▏         | 20300/1002579.0 [00:03<02:39, 6160.59it/s]
Downloading...:   2%|▏         | 21266/1002579.0 [00:04<02:35, 6319.20it/s]
Downloading...:   2%|▏         | 22249/1002579.0 [00:04<02:34, 6350.16it/s]
Downloading...:   2%|▏         | 23249/1002579.0 [00:04<02:35, 6288.06it/s]
Downloading...:   2%|▏         | 24232/1002579.0 [00:04<02:30, 6481.71it/s]
Downloading...:   3%|▎         | 25231/1002579.0 [00:04<02:30, 6495.73it/s]
Downloading...:   3%|▎         | 26247/1002579.0 [00:04<02:32, 6388.02it/s]
Downloading...:   3%|▎         | 27263/1002579.0 [00:05<02:31, 6424.57it/s]
Downloading...:   3%|▎         | 28262/1002579.0 [00:05<02:26, 6649.60it/s]
Downloading...:   3%|▎         | 29294/1002579.0 [00:05<02:30, 6487.23it/s]
Downloading...:   3%|▎         | 30310/1002579.0 [00:05<02:25, 6686.97it/s]
Downloading...:   3%|▎         | 31342/1002579.0 [00:05<02:27, 6584.98it/s]
Downloading...:   3%|▎         | 32375/1002579.0 [00:05<02:27, 6595.80it/s]
Downloading...:   3%|▎         | 33407/1002579.0 [00:05<02:25, 6638.88it/s]
Downloading...:   3%|▎         | 34439/1002579.0 [00:06<02:23, 6749.46it/s]
Downloading...:   4%|▎         | 35471/1002579.0 [00:06<02:21, 6827.86it/s]
Downloading...:   4%|▎         | 36503/1002579.0 [00:06<02:09, 7457.19it/s]
Downloading...:   4%|▎         | 37486/1002579.0 [00:06<02:01, 7958.78it/s]
Downloading...:   4%|▍         | 38307/1002579.0 [00:06<02:05, 7659.26it/s]
Downloading...:   4%|▍         | 39089/1002579.0 [00:06<02:21, 6816.60it/s]
Downloading...:   4%|▍         | 39792/1002579.0 [00:06<02:37, 6107.57it/s]
Downloading...:   4%|▍         | 40681/1002579.0 [00:07<02:33, 6277.39it/s]
Downloading...:   4%|▍         | 41730/1002579.0 [00:07<02:28, 6465.27it/s]
Downloading...:   4%|▍         | 42778/1002579.0 [00:07<02:27, 6509.32it/s]
Downloading...:   4%|▍         | 43827/1002579.0 [00:07<02:23, 6692.94it/s]
Downloading...:   4%|▍         | 44876/1002579.0 [00:07<02:21, 6784.17it/s]
Downloading...:   5%|▍         | 45941/1002579.0 [00:07<02:24, 6600.94it/s]
Downloading...:   5%|▍         | 46989/1002579.0 [00:07<02:21, 6754.08it/s]
Downloading...:   5%|▍         | 48038/1002579.0 [00:08<02:20, 6784.33it/s]
Downloading...:   5%|▍         | 49086/1002579.0 [00:08<02:19, 6845.17it/s]
Downloading...:   5%|▌         | 50135/1002579.0 [00:08<02:16, 6964.59it/s]
Downloading...:   5%|▌         | 51200/1002579.0 [00:08<02:21, 6725.03it/s]
Downloading...:   5%|▌         | 52248/1002579.0 [00:08<02:19, 6807.66it/s]
Downloading...:   5%|▌         | 53297/1002579.0 [00:08<02:18, 6845.60it/s]
Downloading...:   5%|▌         | 54346/1002579.0 [00:09<02:17, 6900.11it/s]
Downloading...:   6%|▌         | 55394/1002579.0 [00:09<02:15, 7000.24it/s]
Downloading...:   6%|▌         | 56443/1002579.0 [00:09<02:16, 6955.73it/s]
Downloading...:   6%|▌         | 57491/1002579.0 [00:09<02:06, 7497.60it/s]
Downloading...:   6%|▌         | 58458/1002579.0 [00:09<01:58, 7991.32it/s]
Downloading...:   6%|▌         | 59280/1002579.0 [00:09<02:05, 7534.66it/s]
Downloading...:   6%|▌         | 60049/1002579.0 [00:09<02:21, 6673.55it/s]
Downloading...:   6%|▌         | 60738/1002579.0 [00:09<02:35, 6070.90it/s]
Downloading...:   6%|▌         | 61702/1002579.0 [00:10<02:24, 6490.49it/s]
Downloading...:   6%|▋         | 62751/1002579.0 [00:10<02:22, 6610.93it/s]
Downloading...:   6%|▋         | 63799/1002579.0 [00:10<02:19, 6730.29it/s]
Downloading...:   6%|▋         | 64848/1002579.0 [00:10<02:07, 7356.37it/s]
Downloading...:   7%|▋         | 65814/1002579.0 [00:10<01:58, 7902.59it/s]
Downloading...:   7%|▋         | 66628/1002579.0 [00:10<02:06, 7394.17it/s]
Downloading...:   7%|▋         | 67386/1002579.0 [00:10<02:21, 6593.55it/s]
Downloading...:   7%|▋         | 68068/1002579.0 [00:11<02:36, 5989.02it/s]
Downloading...:   7%|▋         | 69075/1002579.0 [00:11<02:27, 6331.02it/s]
Downloading...:   7%|▋         | 70123/1002579.0 [00:11<02:19, 6692.33it/s]
Downloading...:   7%|▋         | 71172/1002579.0 [00:11<02:06, 7382.66it/s]
Downloading...:   7%|▋         | 72155/1002579.0 [00:11<01:58, 7881.96it/s]
Downloading...:   7%|▋         | 72964/1002579.0 [00:11<02:04, 7445.99it/s]
Downloading...:   7%|▋         | 73724/1002579.0 [00:11<02:20, 6626.69it/s]
Downloading...:   7%|▋         | 74408/1002579.0 [00:11<02:34, 5993.80it/s]
Downloading...:   8%|▊         | 75432/1002579.0 [00:12<02:23, 6478.67it/s]
Downloading...:   8%|▊         | 76480/1002579.0 [00:12<02:05, 7390.70it/s]
Downloading...:   8%|▊         | 77463/1002579.0 [00:12<01:56, 7924.69it/s]
Downloading...:   8%|▊         | 78285/1002579.0 [00:12<02:04, 7449.18it/s]
Downloading...:   8%|▊         | 79053/1002579.0 [00:12<02:19, 6608.48it/s]
Downloading...:   8%|▊         | 79742/1002579.0 [00:12<02:30, 6116.99it/s]
Downloading...:   8%|▊         | 80789/1002579.0 [00:12<02:21, 6533.90it/s]
Downloading...:   8%|▊         | 81854/1002579.0 [00:12<02:03, 7451.18it/s]
Downloading...:   8%|▊         | 82854/1002579.0 [00:13<01:55, 7992.84it/s]
Downloading...:   8%|▊         | 83681/1002579.0 [00:13<02:02, 7483.95it/s]
Downloading...:   8%|▊         | 84452/1002579.0 [00:13<02:16, 6702.27it/s]
Downloading...:   8%|▊         | 85147/1002579.0 [00:13<02:25, 6303.02it/s]
Downloading...:   9%|▊         | 86229/1002579.0 [00:13<02:14, 6793.17it/s]
Downloading...:   9%|▊         | 87327/1002579.0 [00:13<02:01, 7534.23it/s]
Downloading...:   9%|▉         | 88342/1002579.0 [00:13<01:52, 8116.44it/s]
Downloading...:   9%|▉         | 89174/1002579.0 [00:13<02:01, 7499.03it/s]
Downloading...:   9%|▉         | 89943/1002579.0 [00:14<02:15, 6749.44it/s]
Downloading...:   9%|▉         | 90685/1002579.0 [00:14<02:13, 6806.63it/s]
Downloading...:   9%|▉         | 91799/1002579.0 [00:14<02:01, 7525.16it/s]
Downloading...:   9%|▉         | 92832/1002579.0 [00:14<01:51, 8193.17it/s]
Downloading...:   9%|▉         | 93669/1002579.0 [00:14<02:01, 7501.95it/s]
Downloading...:   9%|▉         | 94439/1002579.0 [00:14<02:14, 6739.28it/s]
Downloading...:   9%|▉         | 95240/1002579.0 [00:14<02:10, 6955.10it/s]
Downloading...:  10%|▉         | 96387/1002579.0 [00:14<01:57, 7716.72it/s]
Downloading...:  10%|▉         | 97452/1002579.0 [00:15<01:48, 8350.94it/s]
Downloading...:  10%|▉         | 98304/1002579.0 [00:15<01:57, 7674.54it/s]
Downloading...:  10%|▉         | 99090/1002579.0 [00:15<02:11, 6881.80it/s]
Downloading...:  10%|▉         | 99942/1002579.0 [00:15<02:05, 7220.81it/s]
Downloading...:  10%|█         | 101122/1002579.0 [00:15<01:52, 7980.25it/s]
Downloading...:  10%|█         | 102220/1002579.0 [00:15<01:44, 8621.94it/s]
Downloading...:  10%|█         | 103100/1002579.0 [00:15<01:53, 7927.73it/s]
Downloading...:  10%|█         | 103912/1002579.0 [00:15<02:06, 7096.70it/s]
Downloading...:  10%|█         | 104808/1002579.0 [00:16<02:01, 7400.80it/s]
Downloading...:  11%|█         | 106021/1002579.0 [00:16<01:47, 8310.45it/s]
Downloading...:  11%|█         | 107184/1002579.0 [00:16<01:39, 9005.75it/s]
Downloading...:  11%|█         | 108105/1002579.0 [00:16<01:47, 8289.61it/s]
Downloading...:  11%|█         | 108955/1002579.0 [00:16<02:01, 7364.52it/s]
Downloading...:  11%|█         | 109887/1002579.0 [00:16<01:55, 7715.87it/s]
Downloading...:  11%|█         | 111149/1002579.0 [00:16<01:42, 8681.96it/s]
Downloading...:  11%|█         | 112361/1002579.0 [00:16<01:34, 9423.33it/s]
Downloading...:  11%|█▏        | 113327/1002579.0 [00:17<01:42, 8656.92it/s]
Downloading...:  11%|█▏        | 114217/1002579.0 [00:17<01:55, 7689.25it/s]
Downloading...:  11%|█▏        | 115196/1002579.0 [00:17<01:49, 8100.02it/s]
Downloading...:  12%|█▏        | 116523/1002579.0 [00:17<01:37, 9125.05it/s]
Downloading...:  12%|█▏        | 117784/1002579.0 [00:17<01:28, 10019.18it/s]
Downloading...:  12%|█▏        | 118817/1002579.0 [00:17<01:38, 9013.62it/s]
Downloading...:  12%|█▏        | 119755/1002579.0 [00:17<01:49, 8089.27it/s]
Downloading...:  12%|█▏        | 120783/1002579.0 [00:17<01:43, 8518.21it/s]
Downloading...:  12%|█▏        | 122192/1002579.0 [00:18<01:31, 9652.16it/s]
Downloading...:  12%|█▏        | 123519/1002579.0 [00:18<01:23, 10552.83it/s]
Downloading...:  12%|█▏        | 124607/1002579.0 [00:18<01:32, 9467.20it/s]
Downloading...:  13%|█▎        | 125593/1002579.0 [00:18<01:43, 8495.69it/s]
Downloading...:  13%|█▎        | 126697/1002579.0 [00:18<01:36, 9069.20it/s]
Downloading...:  13%|█▎        | 128205/1002579.0 [00:18<01:26, 10165.03it/s]
Downloading...:  13%|█▎        | 129614/1002579.0 [00:18<01:18, 11099.41it/s]
Downloading...:  13%|█▎        | 130757/1002579.0 [00:18<01:26, 10061.70it/s]
Downloading...:  13%|█▎        | 131800/1002579.0 [00:19<01:36, 9020.62it/s]
Downloading...:  13%|█▎        | 132972/1002579.0 [00:19<01:30, 9659.37it/s]
Downloading...:  13%|█▎        | 134594/1002579.0 [00:19<01:19, 10854.55it/s]
Downloading...:  14%|█▎        | 135790/1002579.0 [00:19<01:18, 11052.16it/s]
Downloading...:  14%|█▎        | 136920/1002579.0 [00:19<01:26, 10029.21it/s]
Downloading...:  14%|█▍        | 137970/1002579.0 [00:19<01:25, 10148.34it/s]
Downloading...:  14%|█▍        | 139657/1002579.0 [00:19<01:12, 11865.37it/s]
Downloading...:  14%|█▍        | 140875/1002579.0 [00:19<01:13, 11687.13it/s]
Downloading...:  14%|█▍        | 142065/1002579.0 [00:19<01:22, 10368.70it/s]
Downloading...:  14%|█▍        | 143229/1002579.0 [00:20<01:21, 10593.93it/s]
Downloading...:  14%|█▍        | 144998/1002579.0 [00:20<01:08, 12500.15it/s]
Downloading...:  15%|█▍        | 146291/1002579.0 [00:20<01:09, 12328.98it/s]
Downloading...:  15%|█▍        | 147554/1002579.0 [00:20<01:18, 10938.33it/s]
Downloading...:  15%|█▍        | 148767/1002579.0 [00:20<01:16, 11102.97it/s]
Downloading...:  15%|█▌        | 150634/1002579.0 [00:20<01:05, 12942.69it/s]
Downloading...:  15%|█▌        | 151966/1002579.0 [00:20<01:05, 12942.79it/s]
Downloading...:  15%|█▌        | 153287/1002579.0 [00:20<01:13, 11495.90it/s]
Downloading...:  15%|█▌        | 154616/1002579.0 [00:20<01:11, 11851.61it/s]
Downloading...:  16%|█▌        | 156565/1002579.0 [00:21<01:01, 13856.79it/s]
Downloading...:  16%|█▌        | 157996/1002579.0 [00:21<01:01, 13653.33it/s]
Downloading...:  16%|█▌        | 159393/1002579.0 [00:21<01:09, 12178.60it/s]
Downloading...:  16%|█▌        | 160776/1002579.0 [00:21<01:06, 12603.53it/s]
Downloading...:  16%|█▌        | 162840/1002579.0 [00:21<00:57, 14581.98it/s]
Downloading...:  16%|█▋        | 164339/1002579.0 [00:21<01:00, 13967.94it/s]
Downloading...:  17%|█▋        | 165767/1002579.0 [00:21<01:11, 11681.65it/s]
Downloading...:  17%|█▋        | 167166/1002579.0 [00:21<01:08, 12246.54it/s]
Downloading...:  17%|█▋        | 168458/1002579.0 [00:22<01:25, 9790.60it/s]
Downloading...:  17%|█▋        | 169894/1002579.0 [00:22<01:16, 10822.25it/s]
Downloading...:  17%|█▋        | 171091/1002579.0 [00:22<01:28, 9448.65it/s]
Downloading...:  17%|█▋        | 172138/1002579.0 [00:22<01:33, 8837.22it/s]
Downloading...:  17%|█▋        | 173179/1002579.0 [00:22<01:30, 9135.49it/s]
Downloading...:  17%|█▋        | 174293/1002579.0 [00:22<01:29, 9305.03it/s]
Downloading...:  17%|█▋        | 175266/1002579.0 [00:22<01:36, 8612.45it/s]
Downloading...:  18%|█▊        | 176161/1002579.0 [00:23<01:46, 7777.87it/s]
Downloading...:  18%|█▊        | 176970/1002579.0 [00:23<01:55, 7168.86it/s]
Downloading...:  18%|█▊        | 177881/1002579.0 [00:23<01:48, 7586.30it/s]
Downloading...:  18%|█▊        | 179028/1002579.0 [00:23<01:40, 8154.59it/s]
Downloading...:  18%|█▊        | 179864/1002579.0 [00:23<01:40, 8150.94it/s]
Downloading...:  18%|█▊        | 180693/1002579.0 [00:23<01:52, 7314.29it/s]
Downloading...:  18%|█▊        | 181502/1002579.0 [00:23<01:50, 7422.01it/s]
Downloading...:  18%|█▊        | 182665/1002579.0 [00:23<01:37, 8371.81it/s]
Downloading...:  18%|█▊        | 183521/1002579.0 [00:23<01:37, 8361.07it/s]
Downloading...:  18%|█▊        | 184371/1002579.0 [00:24<01:49, 7464.38it/s]
Downloading...:  18%|█▊        | 185205/1002579.0 [00:24<01:48, 7557.15it/s]
Downloading...:  19%|█▊        | 186384/1002579.0 [00:24<01:36, 8483.47it/s]
Downloading...:  19%|█▊        | 187400/1002579.0 [00:24<01:31, 8938.78it/s]
Downloading...:  19%|█▉        | 188311/1002579.0 [00:24<01:42, 7960.82it/s]
Downloading...:  19%|█▉        | 189136/1002579.0 [00:24<01:48, 7489.71it/s]
Downloading...:  19%|█▉        | 190218/1002579.0 [00:24<01:39, 8203.82it/s]
Downloading...:  19%|█▉        | 191431/1002579.0 [00:24<01:34, 8622.64it/s]
Downloading...:  19%|█▉        | 192308/1002579.0 [00:25<01:34, 8606.24it/s]
Downloading...:  19%|█▉        | 193179/1002579.0 [00:25<01:45, 7676.91it/s]
Downloading...:  19%|█▉        | 194085/1002579.0 [00:25<01:41, 7955.87it/s]
Downloading...:  19%|█▉        | 195297/1002579.0 [00:25<01:31, 8792.44it/s]
Downloading...:  20%|█▉        | 196354/1002579.0 [00:25<01:26, 9271.00it/s]
Downloading...:  20%|█▉        | 197298/1002579.0 [00:25<01:37, 8242.53it/s]
Downloading...:  20%|█▉        | 198152/1002579.0 [00:25<01:43, 7751.70it/s]
Downloading...:  20%|█▉        | 199246/1002579.0 [00:25<01:35, 8450.55it/s]
Downloading...:  20%|█▉        | 200474/1002579.0 [00:25<01:24, 9460.45it/s]
Downloading...:  20%|██        | 201450/1002579.0 [00:26<01:31, 8795.15it/s]
Downloading...:  20%|██        | 202357/1002579.0 [00:26<01:41, 7883.43it/s]
Downloading...:  20%|██        | 203211/1002579.0 [00:26<01:40, 7977.99it/s]
Downloading...:  20%|██        | 204439/1002579.0 [00:26<01:28, 8992.41it/s]
Downloading...:  20%|██        | 205365/1002579.0 [00:26<01:28, 8977.83it/s]
Downloading...:  21%|██        | 206282/1002579.0 [00:26<01:39, 7988.56it/s]
Downloading...:  21%|██        | 207176/1002579.0 [00:26<01:37, 8157.05it/s]
Downloading...:  21%|██        | 208421/1002579.0 [00:26<01:27, 9083.54it/s]
Downloading...:  21%|██        | 209387/1002579.0 [00:27<01:25, 9237.29it/s]
Downloading...:  21%|██        | 210327/1002579.0 [00:27<01:36, 8193.74it/s]
Downloading...:  21%|██        | 211176/1002579.0 [00:27<01:37, 8147.93it/s]
Downloading...:  21%|██        | 212402/1002579.0 [00:27<01:26, 9086.16it/s]
Downloading...:  21%|██▏       | 213418/1002579.0 [00:27<01:24, 9376.55it/s]
Downloading...:  21%|██▏       | 214373/1002579.0 [00:27<01:34, 8301.24it/s]
Downloading...:  21%|██▏       | 215235/1002579.0 [00:27<01:38, 7967.91it/s]
Downloading...:  22%|██▏       | 216416/1002579.0 [00:27<01:29, 8816.82it/s]
Downloading...:  22%|██▏       | 217694/1002579.0 [00:27<01:19, 9864.42it/s]
Downloading...:  22%|██▏       | 218709/1002579.0 [00:28<01:26, 9034.08it/s]
Downloading...:  22%|██▏       | 219643/1002579.0 [00:28<01:36, 8084.44it/s]
Downloading...:  22%|██▏       | 220512/1002579.0 [00:28<01:35, 8206.67it/s]
Downloading...:  22%|██▏       | 221741/1002579.0 [00:28<01:26, 9034.22it/s]
Downloading...:  22%|██▏       | 222724/1002579.0 [00:28<01:24, 9247.22it/s]
Downloading...:  22%|██▏       | 223668/1002579.0 [00:28<01:34, 8206.53it/s]
Downloading...:  22%|██▏       | 224526/1002579.0 [00:28<01:34, 8233.21it/s]
Downloading...:  23%|██▎       | 225739/1002579.0 [00:28<01:24, 9173.46it/s]
Downloading...:  23%|██▎       | 226680/1002579.0 [00:29<01:24, 9164.73it/s]
Downloading...:  23%|██▎       | 227613/1002579.0 [00:29<01:35, 8090.20it/s]
Downloading...:  23%|██▎       | 228524/1002579.0 [00:29<01:33, 8295.05it/s]
Downloading...:  23%|██▎       | 229753/1002579.0 [00:29<01:24, 9190.35it/s]
Downloading...:  23%|██▎       | 230695/1002579.0 [00:29<01:23, 9248.66it/s]
Downloading...:  23%|██▎       | 231637/1002579.0 [00:29<01:34, 8176.89it/s]
Downloading...:  23%|██▎       | 232538/1002579.0 [00:29<01:33, 8265.88it/s]
Downloading...:  23%|██▎       | 233750/1002579.0 [00:29<01:22, 9274.00it/s]
Downloading...:  23%|██▎       | 234705/1002579.0 [00:29<01:22, 9252.50it/s]
Downloading...:  24%|██▎       | 235649/1002579.0 [00:30<01:33, 8159.14it/s]
Downloading...:  24%|██▎       | 236536/1002579.0 [00:30<01:32, 8315.06it/s]
Downloading...:  24%|██▎       | 237748/1002579.0 [00:30<01:22, 9239.98it/s]
Downloading...:  24%|██▍       | 238698/1002579.0 [00:30<01:23, 9189.73it/s]
Downloading...:  24%|██▍       | 239635/1002579.0 [00:30<01:33, 8126.64it/s]
Downloading...:  24%|██▍       | 240550/1002579.0 [00:30<01:31, 8298.98it/s]
Downloading...:  24%|██▍       | 241746/1002579.0 [00:30<01:22, 9232.26it/s]
Downloading...:  24%|██▍       | 242696/1002579.0 [00:30<01:22, 9200.15it/s]
Downloading...:  24%|██▍       | 243635/1002579.0 [00:31<01:33, 8125.79it/s]
Downloading...:  24%|██▍       | 244564/1002579.0 [00:31<01:31, 8286.33it/s]
Downloading...:  25%|██▍       | 245776/1002579.0 [00:31<01:22, 9178.72it/s]
Downloading...:  25%|██▍       | 246874/1002579.0 [00:31<01:18, 9670.61it/s]
Downloading...:  25%|██▍       | 247863/1002579.0 [00:31<01:28, 8554.03it/s]
Downloading...:  25%|██▍       | 248755/1002579.0 [00:31<01:35, 7916.31it/s]
Downloading...:  25%|██▍       | 249880/1002579.0 [00:31<01:25, 8763.54it/s]
Downloading...:  25%|██▌       | 251101/1002579.0 [00:31<01:20, 9376.94it/s]
Downloading...:  25%|██▌       | 252067/1002579.0 [00:31<01:22, 9107.27it/s]
Downloading...:  25%|██▌       | 252997/1002579.0 [00:32<01:32, 8069.38it/s]
Downloading...:  25%|██▌       | 253952/1002579.0 [00:32<01:29, 8398.33it/s]
Downloading...:  25%|██▌       | 255148/1002579.0 [00:32<01:20, 9282.15it/s]
Downloading...:  26%|██▌       | 256105/1002579.0 [00:32<01:20, 9225.83it/s]
Downloading...:  26%|██▌       | 257048/1002579.0 [00:32<01:31, 8161.30it/s]
Downloading...:  26%|██▌       | 257999/1002579.0 [00:32<01:28, 8458.61it/s]
Downloading...:  26%|██▌       | 259195/1002579.0 [00:32<01:19, 9346.32it/s]
Downloading...:  26%|██▌       | 260158/1002579.0 [00:32<01:20, 9277.59it/s]
Downloading...:  26%|██▌       | 261105/1002579.0 [00:33<01:30, 8202.33it/s]
Downloading...:  26%|██▌       | 262078/1002579.0 [00:33<01:27, 8482.14it/s]
Downloading...:  26%|██▋       | 263291/1002579.0 [00:33<01:18, 9374.79it/s]
Downloading...:  26%|██▋       | 264256/1002579.0 [00:33<01:18, 9370.56it/s]
Downloading...:  26%|██▋       | 265212/1002579.0 [00:33<01:29, 8279.79it/s]
Downloading...:  27%|██▋       | 266174/1002579.0 [00:33<01:26, 8499.69it/s]
Downloading...:  27%|██▋       | 267387/1002579.0 [00:33<01:17, 9468.18it/s]
Downloading...:  27%|██▋       | 268364/1002579.0 [00:33<01:17, 9428.11it/s]
Downloading...:  27%|██▋       | 269328/1002579.0 [00:33<01:28, 8331.19it/s]
Downloading...:  27%|██▋       | 270303/1002579.0 [00:34<01:25, 8587.44it/s]
Downloading...:  27%|██▋       | 271532/1002579.0 [00:34<01:16, 9572.43it/s]
Downloading...:  27%|██▋       | 272520/1002579.0 [00:34<01:16, 9488.36it/s]
Downloading...:  27%|██▋       | 273490/1002579.0 [00:34<01:26, 8402.81it/s]
Downloading...:  27%|██▋       | 274481/1002579.0 [00:34<01:23, 8738.98it/s]
Downloading...:  28%|██▊       | 275710/1002579.0 [00:34<01:15, 9690.84it/s]
Downloading...:  28%|██▊       | 276710/1002579.0 [00:34<01:16, 9534.34it/s]
Downloading...:  28%|██▊       | 277685/1002579.0 [00:34<01:25, 8468.59it/s]
Downloading...:  28%|██▊       | 278708/1002579.0 [00:34<01:21, 8873.72it/s]
Downloading...:  28%|██▊       | 279953/1002579.0 [00:35<01:13, 9821.55it/s]
Downloading...:  28%|██▊       | 280966/1002579.0 [00:35<01:14, 9664.55it/s]
Downloading...:  28%|██▊       | 281954/1002579.0 [00:35<01:23, 8581.00it/s]
Downloading...:  28%|██▊       | 283001/1002579.0 [00:35<01:19, 9017.51it/s]
Downloading...:  28%|██▊       | 284279/1002579.0 [00:35<01:11, 10017.89it/s]
Downloading...:  28%|██▊       | 285313/1002579.0 [00:35<01:13, 9817.67it/s]
Downloading...:  29%|██▊       | 286317/1002579.0 [00:35<01:21, 8747.16it/s]
Downloading...:  29%|██▊       | 287375/1002579.0 [00:35<01:18, 9112.60it/s]
Downloading...:  29%|██▉       | 288686/1002579.0 [00:35<01:10, 10171.45it/s]
Downloading...:  29%|██▉       | 289735/1002579.0 [00:36<01:10, 10040.60it/s]
Downloading...:  29%|██▉       | 290761/1002579.0 [00:36<01:19, 8951.08it/s]
Downloading...:  29%|██▉       | 291848/1002579.0 [00:36<01:16, 9335.78it/s]
Downloading...:  29%|██▉       | 293175/1002579.0 [00:36<01:08, 10308.15it/s]
Downloading...:  29%|██▉       | 294234/1002579.0 [00:36<01:09, 10222.68it/s]
Downloading...:  29%|██▉       | 295276/1002579.0 [00:36<01:17, 9089.55it/s]
Downloading...:  30%|██▉       | 296419/1002579.0 [00:36<01:13, 9613.26it/s]
Downloading...:  30%|██▉       | 297763/1002579.0 [00:36<01:06, 10637.44it/s]
Downloading...:  30%|██▉       | 298859/1002579.0 [00:37<01:07, 10448.73it/s]
Downloading...:  30%|██▉       | 299926/1002579.0 [00:37<01:15, 9294.70it/s]
Downloading...:  30%|███       | 301121/1002579.0 [00:37<01:11, 9854.67it/s]
Downloading...:  30%|███       | 302498/1002579.0 [00:37<01:04, 10870.87it/s]
Downloading...:  30%|███       | 303618/1002579.0 [00:37<01:04, 10778.10it/s]
Downloading...:  30%|███       | 304719/1002579.0 [00:37<01:12, 9588.60it/s]
Downloading...:  31%|███       | 305938/1002579.0 [00:37<01:08, 10185.21it/s]
Downloading...:  31%|███       | 307347/1002579.0 [00:37<01:02, 11204.66it/s]
Downloading...:  31%|███       | 308501/1002579.0 [00:37<01:02, 11042.57it/s]
Downloading...:  31%|███       | 309629/1002579.0 [00:38<01:10, 9825.93it/s]
Downloading...:  31%|███       | 310919/1002579.0 [00:38<01:05, 10538.97it/s]
Downloading...:  31%|███       | 312377/1002579.0 [00:38<01:00, 11438.17it/s]
Downloading...:  31%|███▏      | 313551/1002579.0 [00:38<01:00, 11313.26it/s]
Downloading...:  31%|███▏      | 314703/1002579.0 [00:38<01:08, 10093.72it/s]
Downloading...:  32%|███▏      | 316031/1002579.0 [00:38<01:03, 10866.64it/s]
Downloading...:  32%|███▏      | 317571/1002579.0 [00:38<00:57, 11886.50it/s]
Downloading...:  32%|███▏      | 318790/1002579.0 [00:38<00:58, 11789.08it/s]
Downloading...:  32%|███▏      | 319990/1002579.0 [00:38<01:04, 10511.52it/s]
Downloading...:  32%|███▏      | 321356/1002579.0 [00:39<01:00, 11275.57it/s]
Downloading...:  32%|███▏      | 322978/1002579.0 [00:39<00:55, 12248.20it/s]
Downloading...:  32%|███▏      | 324231/1002579.0 [00:39<00:55, 12288.03it/s]
Downloading...:  32%|███▏      | 325480/1002579.0 [00:39<01:01, 10944.44it/s]
Downloading...:  33%|███▎      | 326926/1002579.0 [00:39<00:57, 11712.99it/s]
Downloading...:  33%|███▎      | 328597/1002579.0 [00:39<00:52, 12800.43it/s]
Downloading...:  33%|███▎      | 329907/1002579.0 [00:39<00:52, 12836.05it/s]
Downloading...:  33%|███▎      | 331212/1002579.0 [00:39<00:58, 11406.50it/s]
Downloading...:  33%|███▎      | 332693/1002579.0 [00:40<00:54, 12186.63it/s]
Downloading...:  33%|███▎      | 334299/1002579.0 [00:40<01:06, 10017.87it/s]
Downloading...:  34%|███▎      | 336642/1002579.0 [00:40<00:51, 12908.64it/s]
Downloading...:  34%|███▎      | 338082/1002579.0 [00:40<00:57, 11501.31it/s]
Downloading...:  34%|███▍      | 339354/1002579.0 [00:40<00:57, 11619.22it/s]
Downloading...:  34%|███▍      | 340623/1002579.0 [00:40<00:56, 11653.89it/s]
Downloading...:  34%|███▍      | 341851/1002579.0 [00:40<01:00, 10932.86it/s]
Downloading...:  34%|███▍      | 342991/1002579.0 [00:40<01:06, 9985.02it/s]
Downloading...:  34%|███▍      | 344030/1002579.0 [00:41<01:09, 9458.57it/s]
Downloading...:  34%|███▍      | 345342/1002579.0 [00:41<01:03, 10338.91it/s]
Downloading...:  35%|███▍      | 346734/1002579.0 [00:41<01:00, 10901.20it/s]
Downloading...:  35%|███▍      | 347853/1002579.0 [00:41<01:03, 10374.55it/s]
Downloading...:  35%|███▍      | 348912/1002579.0 [00:41<01:10, 9331.59it/s]
Downloading...:  35%|███▍      | 350165/1002579.0 [00:41<01:04, 10137.09it/s]
Downloading...:  35%|███▌      | 351568/1002579.0 [00:41<00:58, 11148.09it/s]
Downloading...:  35%|███▌      | 352720/1002579.0 [00:41<01:00, 10828.89it/s]
Downloading...:  35%|███▌      | 353829/1002579.0 [00:42<01:07, 9652.03it/s]
Downloading...:  35%|███▌      | 355107/1002579.0 [00:42<01:01, 10454.67it/s]
Downloading...:  36%|███▌      | 356565/1002579.0 [00:42<00:56, 11535.20it/s]
Downloading...:  36%|███▌      | 357758/1002579.0 [00:42<00:57, 11301.28it/s]
Downloading...:  36%|███▌      | 358916/1002579.0 [00:42<01:04, 10033.55it/s]
Downloading...:  36%|███▌      | 360218/1002579.0 [00:42<00:59, 10723.82it/s]
Downloading...:  36%|███▌      | 361742/1002579.0 [00:42<00:54, 11841.71it/s]
Downloading...:  36%|███▌      | 362964/1002579.0 [00:42<00:54, 11759.62it/s]
Downloading...:  36%|███▋      | 364166/1002579.0 [00:42<01:01, 10421.38it/s]
Downloading...:  36%|███▋      | 365461/1002579.0 [00:43<00:57, 11055.37it/s]
Downloading...:  37%|███▋      | 367018/1002579.0 [00:43<00:52, 12215.58it/s]
Downloading...:  37%|███▋      | 368278/1002579.0 [00:43<00:52, 12019.64it/s]
Downloading...:  37%|███▋      | 369507/1002579.0 [00:43<00:59, 10678.09it/s]
Downloading...:  37%|███▋      | 370835/1002579.0 [00:43<00:55, 11318.18it/s]
Downloading...:  37%|███▋      | 372416/1002579.0 [00:43<00:50, 12532.29it/s]
Downloading...:  37%|███▋      | 373710/1002579.0 [00:43<00:51, 12267.65it/s]
Downloading...:  37%|███▋      | 374965/1002579.0 [00:43<00:57, 10912.21it/s]
Downloading...:  38%|███▊      | 376324/1002579.0 [00:43<00:54, 11497.15it/s]
Downloading...:  38%|███▊      | 377946/1002579.0 [00:44<00:48, 12752.06it/s]
Downloading...:  38%|███▊      | 379262/1002579.0 [00:44<00:49, 12564.15it/s]
Downloading...:  38%|███▊      | 380547/1002579.0 [00:44<00:55, 11186.36it/s]
Downloading...:  38%|███▊      | 381927/1002579.0 [00:44<00:52, 11739.57it/s]
Downloading...:  38%|███▊      | 383566/1002579.0 [00:44<00:47, 12909.31it/s]
Downloading...:  38%|███▊      | 384894/1002579.0 [00:44<00:48, 12761.75it/s]
Downloading...:  39%|███▊      | 386196/1002579.0 [00:44<00:54, 11370.21it/s]
Downloading...:  39%|███▊      | 387596/1002579.0 [00:44<00:51, 12041.80it/s]
Downloading...:  39%|███▉      | 389251/1002579.0 [00:45<00:46, 13246.20it/s]
Downloading...:  39%|███▉      | 390615/1002579.0 [00:45<00:47, 12912.70it/s]
Downloading...:  39%|███▉      | 391935/1002579.0 [00:45<00:53, 11485.05it/s]
Downloading...:  39%|███▉      | 393363/1002579.0 [00:45<00:50, 12120.61it/s]
Downloading...:  39%|███▉      | 395037/1002579.0 [00:45<00:45, 13364.30it/s]
Downloading...:  40%|███▉      | 396415/1002579.0 [00:45<00:46, 13068.76it/s]
Downloading...:  40%|███▉      | 397751/1002579.0 [00:45<00:51, 11694.11it/s]
Downloading...:  40%|███▉      | 399196/1002579.0 [00:45<00:49, 12087.48it/s]
Downloading...:  40%|███▉      | 400900/1002579.0 [00:45<00:45, 13344.99it/s]
Downloading...:  40%|████      | 402272/1002579.0 [00:46<00:45, 13243.05it/s]
Downloading...:  40%|████      | 403622/1002579.0 [00:46<00:50, 11869.60it/s]
Downloading...:  40%|████      | 405061/1002579.0 [00:46<00:48, 12428.65it/s]
Downloading...:  41%|████      | 406749/1002579.0 [00:46<00:43, 13573.00it/s]
Downloading...:  41%|████      | 408142/1002579.0 [00:46<00:44, 13254.10it/s]
Downloading...:  41%|████      | 409492/1002579.0 [00:46<00:49, 11888.28it/s]
Downloading...:  41%|████      | 410976/1002579.0 [00:46<00:47, 12414.03it/s]
Downloading...:  41%|████      | 412680/1002579.0 [00:46<00:43, 13649.10it/s]
Downloading...:  41%|████▏     | 414082/1002579.0 [00:46<00:43, 13410.76it/s]
Downloading...:  41%|████▏     | 415449/1002579.0 [00:47<00:48, 12024.00it/s]
Downloading...:  42%|████▏     | 416907/1002579.0 [00:47<00:46, 12620.62it/s]
Downloading...:  42%|████▏     | 418611/1002579.0 [00:47<00:42, 13814.96it/s]
Downloading...:  42%|████▏     | 420030/1002579.0 [00:47<00:43, 13363.34it/s]
Downloading...:  42%|████▏     | 421394/1002579.0 [00:47<00:48, 12056.38it/s]
Downloading...:  42%|████▏     | 422871/1002579.0 [00:47<00:45, 12640.14it/s]
Downloading...:  42%|████▏     | 424575/1002579.0 [00:47<00:42, 13746.41it/s]
Downloading...:  42%|████▏     | 425984/1002579.0 [00:47<00:43, 13221.49it/s]
Downloading...:  43%|████▎     | 427332/1002579.0 [00:48<00:47, 12064.63it/s]
Downloading...:  43%|████▎     | 428867/1002579.0 [00:48<00:44, 12823.70it/s]
Downloading...:  43%|████▎     | 430571/1002579.0 [00:48<00:41, 13874.94it/s]
Downloading...:  43%|████▎     | 431990/1002579.0 [00:48<00:42, 13315.11it/s]
Downloading...:  43%|████▎     | 433346/1002579.0 [00:48<00:46, 12156.82it/s]
Downloading...:  43%|████▎     | 434864/1002579.0 [00:48<00:44, 12833.19it/s]
Downloading...:  44%|████▎     | 436568/1002579.0 [00:48<00:40, 13917.38it/s]
Downloading...:  44%|████▎     | 437991/1002579.0 [00:48<00:42, 13350.93it/s]
Downloading...:  44%|████▍     | 439350/1002579.0 [00:48<00:46, 12153.04it/s]
Downloading...:  44%|████▍     | 440877/1002579.0 [00:49<00:43, 12791.14it/s]
Downloading...:  44%|████▍     | 442614/1002579.0 [00:49<00:40, 13937.07it/s]
Downloading...:  44%|████▍     | 444039/1002579.0 [00:49<00:41, 13493.02it/s]
Downloading...:  44%|████▍     | 445411/1002579.0 [00:49<00:45, 12286.93it/s]
Downloading...:  45%|████▍     | 446890/1002579.0 [00:49<00:43, 12824.28it/s]
Downloading...:  45%|████▍     | 448610/1002579.0 [00:49<00:39, 13992.70it/s]
Downloading...:  45%|████▍     | 450041/1002579.0 [00:49<00:41, 13415.19it/s]
Downloading...:  45%|████▌     | 451407/1002579.0 [00:49<00:45, 12174.72it/s]
Downloading...:  45%|████▌     | 452919/1002579.0 [00:49<00:43, 12780.41it/s]
Downloading...:  45%|████▌     | 454639/1002579.0 [00:50<00:39, 13943.10it/s]
Downloading...:  45%|████▌     | 456067/1002579.0 [00:50<00:40, 13488.48it/s]
Downloading...:  46%|████▌     | 457440/1002579.0 [00:50<00:44, 12224.06it/s]
Downloading...:  46%|████▌     | 458932/1002579.0 [00:50<00:42, 12845.33it/s]
Downloading...:  46%|████▌     | 460646/1002579.0 [00:50<00:38, 14010.21it/s]
Downloading...:  46%|████▌     | 462082/1002579.0 [00:50<00:40, 13432.71it/s]
Downloading...:  46%|████▌     | 463452/1002579.0 [00:50<00:44, 12197.64it/s]
Downloading...:  46%|████▋     | 464961/1002579.0 [00:50<00:41, 12863.99it/s]
Downloading...:  47%|████▋     | 466665/1002579.0 [00:50<00:38, 13883.03it/s]
Downloading...:  47%|████▋     | 468085/1002579.0 [00:51<00:39, 13424.50it/s]
Downloading...:  47%|████▋     | 469451/1002579.0 [00:51<00:43, 12174.59it/s]
Downloading...:  47%|████▋     | 470991/1002579.0 [00:51<00:41, 12829.18it/s]
Downloading...:  47%|████▋     | 472695/1002579.0 [00:51<00:38, 13863.83it/s]
Downloading...:  47%|████▋     | 474112/1002579.0 [00:51<00:39, 13488.77it/s]
Downloading...:  47%|████▋     | 475482/1002579.0 [00:51<00:43, 12224.66it/s]
Downloading...:  48%|████▊     | 477004/1002579.0 [00:51<00:40, 12852.34it/s]
Downloading...:  48%|████▊     | 478708/1002579.0 [00:51<00:37, 13868.34it/s]
Downloading...:  48%|████▊     | 480124/1002579.0 [00:52<00:38, 13475.35it/s]
Downloading...:  48%|████▊     | 481492/1002579.0 [00:52<00:42, 12225.82it/s]
Downloading...:  48%|████▊     | 483033/1002579.0 [00:52<00:40, 12902.19it/s]
Downloading...:  48%|████▊     | 484737/1002579.0 [00:52<00:37, 13900.32it/s]
Downloading...:  48%|████▊     | 486156/1002579.0 [00:52<00:38, 13477.80it/s]
Downloading...:  49%|████▊     | 487525/1002579.0 [00:52<00:42, 12226.98it/s]
Downloading...:  49%|████▉     | 489046/1002579.0 [00:52<00:39, 12987.58it/s]
Downloading...:  49%|████▉     | 490733/1002579.0 [00:52<00:36, 14039.15it/s]
Downloading...:  49%|████▉     | 492170/1002579.0 [00:52<00:37, 13432.15it/s]
Downloading...:  49%|████▉     | 493540/1002579.0 [00:53<00:41, 12168.57it/s]
Downloading...:  49%|████▉     | 495075/1002579.0 [00:53<00:39, 12979.05it/s]
Downloading...:  50%|████▉     | 496779/1002579.0 [00:53<00:36, 13994.31it/s]
Downloading...:  50%|████▉     | 498213/1002579.0 [00:53<00:37, 13462.23it/s]
Downloading...:  50%|████▉     | 499585/1002579.0 [00:53<00:41, 12190.89it/s]
Downloading...:  50%|████▉     | 501137/1002579.0 [00:53<00:38, 13054.17it/s]
Downloading...:  50%|█████     | 502841/1002579.0 [00:53<00:35, 14044.09it/s]
Downloading...:  50%|█████     | 504280/1002579.0 [00:53<00:36, 13523.73it/s]
Downloading...:  50%|█████     | 505659/1002579.0 [00:54<00:40, 12210.17it/s]
Downloading...:  51%|█████     | 507216/1002579.0 [00:54<00:38, 13007.43it/s]
Downloading...:  51%|█████     | 508952/1002579.0 [00:54<00:35, 14076.82it/s]
Downloading...:  51%|█████     | 510395/1002579.0 [00:54<00:36, 13616.78it/s]
Downloading...:  51%|█████     | 511782/1002579.0 [00:54<00:39, 12333.23it/s]
Downloading...:  51%|█████     | 513327/1002579.0 [00:54<00:37, 13082.60it/s]
Downloading...:  51%|█████▏    | 515064/1002579.0 [00:54<00:34, 14127.81it/s]
Downloading...:  52%|█████▏    | 516510/1002579.0 [00:54<00:35, 13697.90it/s]
Downloading...:  52%|█████▏    | 517904/1002579.0 [00:54<00:39, 12372.49it/s]
Downloading...:  52%|█████▏    | 519471/1002579.0 [00:55<00:36, 13175.99it/s]
Downloading...:  52%|█████▏    | 521224/1002579.0 [00:55<00:33, 14326.08it/s]
Downloading...:  52%|█████▏    | 522693/1002579.0 [00:55<00:34, 13719.45it/s]
Downloading...:  52%|█████▏    | 524093/1002579.0 [00:55<00:38, 12473.64it/s]
Downloading...:  52%|█████▏    | 525680/1002579.0 [00:55<00:36, 13200.27it/s]
Downloading...:  53%|█████▎    | 527450/1002579.0 [00:55<00:33, 14381.70it/s]
Downloading...:  53%|█████▎    | 528924/1002579.0 [00:55<00:34, 13759.29it/s]
Downloading...:  53%|█████▎    | 530328/1002579.0 [00:55<00:37, 12601.24it/s]
Downloading...:  53%|█████▎    | 531939/1002579.0 [00:55<00:34, 13506.80it/s]
Downloading...:  53%|█████▎    | 533725/1002579.0 [00:56<00:32, 14424.97it/s]
Downloading...:  53%|█████▎    | 535197/1002579.0 [00:56<00:33, 14006.25it/s]
Downloading...:  54%|█████▎    | 536619/1002579.0 [00:56<00:36, 12690.16it/s]
Downloading...:  54%|█████▎    | 538280/1002579.0 [00:56<00:34, 13580.66it/s]
Downloading...:  54%|█████▍    | 540098/1002579.0 [00:56<00:31, 14559.78it/s]
Downloading...:  54%|█████▍    | 541583/1002579.0 [00:56<00:32, 14241.99it/s]
Downloading...:  54%|█████▍    | 543027/1002579.0 [00:56<00:35, 12905.45it/s]
Downloading...:  54%|█████▍    | 544686/1002579.0 [00:56<00:33, 13740.07it/s]
Downloading...:  55%|█████▍    | 546521/1002579.0 [00:56<00:30, 14957.14it/s]
Downloading...:  55%|█████▍    | 548051/1002579.0 [00:57<00:31, 14385.89it/s]
Downloading...:  55%|█████▍    | 549516/1002579.0 [00:57<00:34, 13059.18it/s]
Downloading...:  55%|█████▍    | 551174/1002579.0 [00:57<00:32, 13871.44it/s]
Downloading...:  55%|█████▌    | 553058/1002579.0 [00:57<00:29, 15172.07it/s]
Downloading...:  55%|█████▌    | 554613/1002579.0 [00:57<00:30, 14598.29it/s]
Downloading...:  55%|█████▌    | 556101/1002579.0 [00:57<00:33, 13242.20it/s]
Downloading...:  56%|█████▌    | 557793/1002579.0 [00:57<00:31, 14075.29it/s]
Downloading...:  56%|█████▌    | 559710/1002579.0 [00:57<00:28, 15416.65it/s]
Downloading...:  56%|█████▌    | 561291/1002579.0 [00:58<00:29, 14865.08it/s]
Downloading...:  56%|█████▌    | 562807/1002579.0 [00:58<00:32, 13472.51it/s]
Downloading...:  56%|█████▋    | 564560/1002579.0 [00:58<00:30, 14275.48it/s]
Downloading...:  57%|█████▋    | 566542/1002579.0 [00:58<00:27, 15733.23it/s]
Downloading...:  57%|█████▋    | 568156/1002579.0 [00:58<00:28, 15276.32it/s]
Downloading...:  57%|█████▋    | 569713/1002579.0 [00:58<00:31, 13822.78it/s]
Downloading...:  57%|█████▋    | 571136/1002579.0 [00:58<00:38, 11236.07it/s]
Downloading...:  57%|█████▋    | 573620/1002579.0 [00:58<00:30, 14084.99it/s]
Downloading...:  57%|█████▋    | 575155/1002579.0 [00:59<00:37, 11266.65it/s]
Downloading...:  57%|█████▋    | 576445/1002579.0 [00:59<00:36, 11587.10it/s]
Downloading...:  58%|█████▊    | 577731/1002579.0 [00:59<00:43, 9853.42it/s]
Downloading...:  58%|█████▊    | 578836/1002579.0 [00:59<00:43, 9722.02it/s]
Downloading...:  58%|█████▊    | 579890/1002579.0 [00:59<00:47, 8890.39it/s]
Downloading...:  58%|█████▊    | 580895/1002579.0 [00:59<00:46, 9051.16it/s]
Downloading...:  58%|█████▊    | 581943/1002579.0 [00:59<00:45, 9337.35it/s]
Downloading...:  58%|█████▊    | 582915/1002579.0 [01:00<00:49, 8535.22it/s]
Downloading...:  58%|█████▊    | 583802/1002579.0 [01:00<00:54, 7666.58it/s]
Downloading...:  58%|█████▊    | 584712/1002579.0 [01:00<00:52, 7996.50it/s]
Downloading...:  58%|█████▊    | 585777/1002579.0 [01:00<00:48, 8646.32it/s]
Downloading...:  59%|█████▊    | 586674/1002579.0 [01:00<00:48, 8490.39it/s]
Downloading...:  59%|█████▊    | 587545/1002579.0 [01:00<00:53, 7814.63it/s]
Downloading...:  59%|█████▊    | 588464/1002579.0 [01:00<00:51, 8080.34it/s]
Downloading...:  59%|█████▉    | 589562/1002579.0 [01:00<00:47, 8782.36it/s]
Downloading...:  59%|█████▉    | 590460/1002579.0 [01:00<00:48, 8459.75it/s]
Downloading...:  59%|█████▉    | 591320/1002579.0 [01:01<00:50, 8187.20it/s]
Downloading...:  59%|█████▉    | 592281/1002579.0 [01:01<00:48, 8510.08it/s]
Downloading...:  59%|█████▉    | 593396/1002579.0 [01:01<00:44, 9211.53it/s]
Downloading...:  59%|█████▉    | 594328/1002579.0 [01:01<00:49, 8253.90it/s]
Downloading...:  59%|█████▉    | 595178/1002579.0 [01:01<00:50, 8032.12it/s]
Downloading...:  59%|█████▉    | 596246/1002579.0 [01:01<00:47, 8513.62it/s]
Downloading...:  60%|█████▉    | 597410/1002579.0 [01:01<00:43, 9251.72it/s]
Downloading...:  60%|█████▉    | 598350/1002579.0 [01:01<00:47, 8531.64it/s]
Downloading...:  60%|█████▉    | 599222/1002579.0 [01:01<00:48, 8269.99it/s]
Downloading...:  60%|█████▉    | 600260/1002579.0 [01:02<00:45, 8815.75it/s]
Downloading...:  60%|█████▉    | 601407/1002579.0 [01:02<00:42, 9492.93it/s]
Downloading...:  60%|██████    | 602371/1002579.0 [01:02<00:46, 8527.02it/s]
Downloading...:  60%|██████    | 603250/1002579.0 [01:02<00:48, 8276.31it/s]
Downloading...:  60%|██████    | 604324/1002579.0 [01:02<00:44, 8914.23it/s]
Downloading...:  60%|██████    | 605487/1002579.0 [01:02<00:41, 9591.67it/s]
Downloading...:  60%|██████    | 606465/1002579.0 [01:02<00:45, 8622.34it/s]
Downloading...:  61%|██████    | 607356/1002579.0 [01:02<00:47, 8387.38it/s]
Downloading...:  61%|██████    | 608436/1002579.0 [01:03<00:43, 8999.75it/s]
Downloading...:  61%|██████    | 609599/1002579.0 [01:03<00:40, 9673.90it/s]
Downloading...:  61%|██████    | 610586/1002579.0 [01:03<00:45, 8684.06it/s]
Downloading...:  61%|██████    | 611485/1002579.0 [01:03<00:46, 8451.95it/s]
Downloading...:  61%|██████    | 612581/1002579.0 [01:03<00:43, 8976.61it/s]
Downloading...:  61%|██████    | 613761/1002579.0 [01:03<00:39, 9724.07it/s]
Downloading...:  61%|██████▏   | 614754/1002579.0 [01:03<00:44, 8791.18it/s]
Downloading...:  61%|██████▏   | 615661/1002579.0 [01:03<00:45, 8581.75it/s]
Downloading...:  62%|██████▏   | 616743/1002579.0 [01:03<00:42, 9139.06it/s]
Downloading...:  62%|██████▏   | 617809/1002579.0 [01:04<00:40, 9558.17it/s]
Downloading...:  62%|██████▏   | 618782/1002579.0 [01:04<00:44, 8553.24it/s]
Downloading...:  62%|██████▏   | 619667/1002579.0 [01:04<00:44, 8613.15it/s]
Downloading...:  62%|██████▏   | 620872/1002579.0 [01:04<00:40, 9497.82it/s]
Downloading...:  62%|██████▏   | 621844/1002579.0 [01:04<00:40, 9377.55it/s]
Downloading...:  62%|██████▏   | 622797/1002579.0 [01:04<00:45, 8427.41it/s]
Downloading...:  62%|██████▏   | 623837/1002579.0 [01:04<00:42, 8845.82it/s]
Downloading...:  62%|██████▏   | 625049/1002579.0 [01:04<00:38, 9711.97it/s]
Downloading...:  62%|██████▏   | 626044/1002579.0 [01:04<00:40, 9387.36it/s]
Downloading...:  63%|██████▎   | 627001/1002579.0 [01:05<00:44, 8511.36it/s]
Downloading...:  63%|██████▎   | 628031/1002579.0 [01:05<00:41, 8918.85it/s]
Downloading...:  63%|██████▎   | 629260/1002579.0 [01:05<00:38, 9684.28it/s]
Downloading...:  63%|██████▎   | 630249/1002579.0 [01:05<00:39, 9429.75it/s]
Downloading...:  63%|██████▎   | 631206/1002579.0 [01:05<00:41, 8932.41it/s]
Downloading...:  63%|██████▎   | 632209/1002579.0 [01:05<00:40, 9129.87it/s]
Downloading...:  63%|██████▎   | 633405/1002579.0 [01:05<00:37, 9894.13it/s]
Downloading...:  63%|██████▎   | 634408/1002579.0 [01:05<00:40, 9093.05it/s]
Downloading...:  63%|██████▎   | 635337/1002579.0 [01:05<00:41, 8841.44it/s]
Downloading...:  63%|██████▎   | 636387/1002579.0 [01:06<00:39, 9225.87it/s]
Downloading...:  64%|██████▎   | 637583/1002579.0 [01:06<00:37, 9851.76it/s]
Downloading...:  64%|██████▎   | 638580/1002579.0 [01:06<00:40, 8901.58it/s]
Downloading...:  64%|██████▍   | 639493/1002579.0 [01:06<00:41, 8696.36it/s]
Downloading...:  64%|██████▍   | 640581/1002579.0 [01:06<00:39, 9273.53it/s]
Downloading...:  64%|██████▍   | 641778/1002579.0 [01:06<00:36, 9928.72it/s]
Downloading...:  64%|██████▍   | 642787/1002579.0 [01:06<00:40, 8868.91it/s]
Downloading...:  64%|██████▍   | 643703/1002579.0 [01:06<00:41, 8683.80it/s]
Downloading...:  64%|██████▍   | 644809/1002579.0 [01:06<00:38, 9233.77it/s]
Downloading...:  64%|██████▍   | 645988/1002579.0 [01:07<00:36, 9905.18it/s]
Downloading...:  65%|██████▍   | 646997/1002579.0 [01:07<00:40, 8861.40it/s]
Downloading...:  65%|██████▍   | 647914/1002579.0 [01:07<00:40, 8670.08it/s]
Downloading...:  65%|██████▍   | 649019/1002579.0 [01:07<00:38, 9250.46it/s]
Downloading...:  65%|██████▍   | 650199/1002579.0 [01:07<00:35, 9905.09it/s]
Downloading...:  65%|██████▍   | 651209/1002579.0 [01:07<00:39, 8857.22it/s]
Downloading...:  65%|██████▌   | 652126/1002579.0 [01:07<00:40, 8676.18it/s]
Downloading...:  65%|██████▌   | 653246/1002579.0 [01:07<00:37, 9233.40it/s]
Downloading...:  65%|██████▌   | 654442/1002579.0 [01:08<00:35, 9901.35it/s]
Downloading...:  65%|██████▌   | 655451/1002579.0 [01:08<00:38, 8934.82it/s]
Downloading...:  65%|██████▌   | 656372/1002579.0 [01:08<00:39, 8730.46it/s]
Downloading...:  66%|██████▌   | 657457/1002579.0 [01:08<00:37, 9281.38it/s]
Downloading...:  66%|██████▌   | 658637/1002579.0 [01:08<00:34, 9932.65it/s]
Downloading...:  66%|██████▌   | 659649/1002579.0 [01:08<00:38, 8816.66it/s]
Downloading...:  66%|██████▌   | 660564/1002579.0 [01:08<00:39, 8659.31it/s]
Downloading...:  66%|██████▌   | 661684/1002579.0 [01:08<00:36, 9275.20it/s]
Downloading...:  66%|██████▌   | 662880/1002579.0 [01:08<00:34, 9871.97it/s]
Downloading...:  66%|██████▌   | 663886/1002579.0 [01:09<00:38, 8894.00it/s]
Downloading...:  66%|██████▋   | 664804/1002579.0 [01:09<00:38, 8737.63it/s]
Downloading...:  66%|██████▋   | 665928/1002579.0 [01:09<00:36, 9260.33it/s]
Downloading...:  67%|██████▋   | 667124/1002579.0 [01:09<00:33, 9918.08it/s]
Downloading...:  67%|██████▋   | 668133/1002579.0 [01:09<00:37, 8948.43it/s]
Downloading...:  67%|██████▋   | 669054/1002579.0 [01:09<00:37, 8793.59it/s]
Downloading...:  67%|██████▋   | 670185/1002579.0 [01:09<00:35, 9470.00it/s]
Downloading...:  67%|██████▋   | 671285/1002579.0 [01:09<00:33, 9894.42it/s]
Downloading...:  67%|██████▋   | 672292/1002579.0 [01:10<00:37, 8767.43it/s]
Downloading...:  67%|██████▋   | 673202/1002579.0 [01:10<00:37, 8761.88it/s]
Downloading...:  67%|██████▋   | 674414/1002579.0 [01:10<00:34, 9645.36it/s]
Downloading...:  67%|██████▋   | 675404/1002579.0 [01:10<00:34, 9494.16it/s]
Downloading...:  67%|██████▋   | 676371/1002579.0 [01:10<00:37, 8729.14it/s]
Downloading...:  68%|██████▊   | 677445/1002579.0 [01:10<00:35, 9148.30it/s]
Downloading...:  68%|██████▊   | 678658/1002579.0 [01:10<00:32, 9920.03it/s]
Downloading...:  68%|██████▊   | 679670/1002579.0 [01:10<00:34, 9448.50it/s]
Downloading...:  68%|██████▊   | 680631/1002579.0 [01:10<00:34, 9255.46it/s]
Downloading...:  68%|██████▊   | 681640/1002579.0 [01:10<00:33, 9454.81it/s]
Downloading...:  68%|██████▊   | 682869/1002579.0 [01:11<00:31, 10096.37it/s]
Downloading...:  68%|██████▊   | 683887/1002579.0 [01:11<00:35, 9008.89it/s]
Downloading...:  68%|██████▊   | 684813/1002579.0 [01:11<00:35, 8946.88it/s]
Downloading...:  68%|██████▊   | 685998/1002579.0 [01:11<00:32, 9627.75it/s]
Downloading...:  69%|██████▊   | 687178/1002579.0 [01:11<00:30, 10225.98it/s]
Downloading...:  69%|██████▊   | 688217/1002579.0 [01:11<00:34, 9125.65it/s]
Downloading...:  69%|██████▊   | 689161/1002579.0 [01:11<00:34, 8984.99it/s]
Downloading...:  69%|██████▉   | 690405/1002579.0 [01:11<00:31, 9893.89it/s]
Downloading...:  69%|██████▉   | 691419/1002579.0 [01:12<00:31, 9872.12it/s]
Downloading...:  69%|██████▉   | 692423/1002579.0 [01:12<00:34, 9116.65it/s]
Downloading...:  69%|██████▉   | 693535/1002579.0 [01:12<00:32, 9640.09it/s]
Downloading...:  69%|██████▉   | 694829/1002579.0 [01:12<00:29, 10312.04it/s]
Downloading...:  69%|██████▉   | 695876/1002579.0 [01:12<00:31, 9840.75it/s]
Downloading...:  70%|██████▉   | 696873/1002579.0 [01:12<00:31, 9647.63it/s]
Downloading...:  70%|██████▉   | 697942/1002579.0 [01:12<00:30, 9925.32it/s]
Downloading...:  70%|██████▉   | 698977/1002579.0 [01:12<00:30, 10045.28it/s]
Downloading...:  70%|██████▉   | 699988/1002579.0 [01:12<00:31, 9456.23it/s]
Downloading...:  70%|██████▉   | 701120/1002579.0 [01:12<00:30, 9834.00it/s]
Downloading...:  70%|███████   | 702431/1002579.0 [01:13<00:27, 10756.33it/s]
Downloading...:  70%|███████   | 703519/1002579.0 [01:13<00:30, 9956.45it/s]
Downloading...:  70%|███████   | 704533/1002579.0 [01:13<00:30, 9774.26it/s]
Downloading...:  70%|███████   | 705675/1002579.0 [01:13<00:29, 10199.15it/s]
Downloading...:  71%|███████   | 706822/1002579.0 [01:13<00:28, 10454.26it/s]
Downloading...:  71%|███████   | 707877/1002579.0 [01:13<00:31, 9449.00it/s]
Downloading...:  71%|███████   | 709050/1002579.0 [01:13<00:29, 9887.10it/s]
Downloading...:  71%|███████   | 710426/1002579.0 [01:13<00:26, 10827.09it/s]
Downloading...:  71%|███████   | 711528/1002579.0 [01:13<00:27, 10711.32it/s]
Downloading...:  71%|███████   | 712612/1002579.0 [01:14<00:28, 10106.68it/s]
Downloading...:  71%|███████   | 713818/1002579.0 [01:14<00:27, 10637.94it/s]
Downloading...:  71%|███████▏  | 715161/1002579.0 [01:14<00:25, 11404.99it/s]
Downloading...:  71%|███████▏  | 716317/1002579.0 [01:14<00:27, 10437.13it/s]
Downloading...:  72%|███████▏  | 717385/1002579.0 [01:14<00:28, 10178.15it/s]
Downloading...:  72%|███████▏  | 718700/1002579.0 [01:14<00:25, 10968.36it/s]
Downloading...:  72%|███████▏  | 719929/1002579.0 [01:14<00:25, 11283.82it/s]
Downloading...:  72%|███████▏  | 721073/1002579.0 [01:14<00:27, 10175.00it/s]
Downloading...:  72%|███████▏  | 722321/1002579.0 [01:15<00:26, 10635.02it/s]
Downloading...:  72%|███████▏  | 723779/1002579.0 [01:15<00:23, 11620.86it/s]
Downloading...:  72%|███████▏  | 724965/1002579.0 [01:15<00:24, 11517.63it/s]
Downloading...:  72%|███████▏  | 726133/1002579.0 [01:15<00:24, 11170.19it/s]
Downloading...:  73%|███████▎  | 727351/1002579.0 [01:15<00:24, 11435.86it/s]
Downloading...:  73%|███████▎  | 728662/1002579.0 [01:15<00:23, 11907.18it/s]
Downloading...:  73%|███████▎  | 729863/1002579.0 [01:15<00:25, 10671.14it/s]
Downloading...:  73%|███████▎  | 731169/1002579.0 [01:15<00:24, 11278.13it/s]
Downloading...:  73%|███████▎  | 732725/1002579.0 [01:15<00:22, 12081.87it/s]
Downloading...:  73%|███████▎  | 733952/1002579.0 [01:15<00:22, 12076.11it/s]
Downloading...:  73%|███████▎  | 735173/1002579.0 [01:16<00:22, 11801.20it/s]
Downloading...:  73%|███████▎  | 736477/1002579.0 [01:16<00:21, 12122.52it/s]
Downloading...:  74%|███████▎  | 737870/1002579.0 [01:16<00:20, 12639.54it/s]
Downloading...:  74%|███████▎  | 739142/1002579.0 [01:16<00:23, 11321.68it/s]
Downloading...:  74%|███████▍  | 740540/1002579.0 [01:16<00:22, 11852.38it/s]
Downloading...:  74%|███████▍  | 742195/1002579.0 [01:16<00:19, 13132.70it/s]
Downloading...:  74%|███████▍  | 743536/1002579.0 [01:16<00:20, 12838.78it/s]
Downloading...:  74%|███████▍  | 744840/1002579.0 [01:16<00:20, 12597.74it/s]
Downloading...:  74%|███████▍  | 746209/1002579.0 [01:16<00:20, 12779.59it/s]
Downloading...:  75%|███████▍  | 747941/1002579.0 [01:17<00:18, 14074.65it/s]
Downloading...:  75%|███████▍  | 749363/1002579.0 [01:17<00:20, 12428.37it/s]
Downloading...:  75%|███████▍  | 750649/1002579.0 [01:17<00:20, 12344.78it/s]
Downloading...:  75%|███████▌  | 752353/1002579.0 [01:17<00:18, 13527.35it/s]
Downloading...:  75%|███████▌  | 753762/1002579.0 [01:17<00:18, 13679.33it/s]
Downloading...:  75%|███████▌  | 755152/1002579.0 [01:17<00:18, 13440.63it/s]
Downloading...:  75%|███████▌  | 756629/1002579.0 [01:17<00:17, 13668.44it/s]
Downloading...:  76%|███████▌  | 758464/1002579.0 [01:17<00:16, 15004.43it/s]
Downloading...:  76%|███████▌  | 759979/1002579.0 [01:17<00:18, 13281.02it/s]
Downloading...:  76%|███████▌  | 761351/1002579.0 [01:18<00:18, 13256.16it/s]
Downloading...:  76%|███████▌  | 763232/1002579.0 [01:18<00:16, 14612.23it/s]
Downloading...:  76%|███████▋  | 764723/1002579.0 [01:18<00:16, 14623.94it/s]
Downloading...:  76%|███████▋  | 766206/1002579.0 [01:18<00:16, 14309.45it/s]
Downloading...:  77%|███████▋  | 767836/1002579.0 [01:18<00:15, 14841.82it/s]
Downloading...:  77%|███████▋  | 769737/1002579.0 [01:18<00:14, 16037.18it/s]
Downloading...:  77%|███████▋  | 771355/1002579.0 [01:18<00:16, 14396.06it/s]
Downloading...:  77%|███████▋  | 772834/1002579.0 [01:18<00:15, 14363.67it/s]
Downloading...:  77%|███████▋  | 774930/1002579.0 [01:18<00:14, 16126.88it/s]
Downloading...:  77%|███████▋  | 776574/1002579.0 [01:19<00:14, 15710.93it/s]
Downloading...:  78%|███████▊  | 778168/1002579.0 [01:19<00:14, 15237.91it/s]
Downloading...:  78%|███████▊  | 779977/1002579.0 [01:19<00:13, 16023.58it/s]
Downloading...:  78%|███████▊  | 782172/1002579.0 [01:19<00:12, 17659.09it/s]
Downloading...:  78%|███████▊  | 783958/1002579.0 [01:19<00:13, 15727.28it/s]
Downloading...:  78%|███████▊  | 785581/1002579.0 [01:19<00:14, 15398.75it/s]
Downloading...:  79%|███████▊  | 787693/1002579.0 [01:19<00:12, 16881.87it/s]
Downloading...:  79%|███████▉  | 789840/1002579.0 [01:19<00:11, 18130.89it/s]
Downloading...:  79%|███████▉  | 791689/1002579.0 [01:19<00:12, 16387.86it/s]
Downloading...:  79%|███████▉  | 793381/1002579.0 [01:20<00:12, 16258.98it/s]
Downloading...:  79%|███████▉  | 795705/1002579.0 [01:20<00:11, 17458.96it/s]
Downloading...:  80%|███████▉  | 798101/1002579.0 [01:20<00:10, 19231.53it/s]
Downloading...:  80%|███████▉  | 800060/1002579.0 [01:20<00:11, 17172.34it/s]
Downloading...:  80%|███████▉  | 801837/1002579.0 [01:20<00:11, 17102.39it/s]
Downloading...:  80%|████████  | 803588/1002579.0 [01:20<00:14, 13390.22it/s]
Downloading...:  80%|████████  | 805798/1002579.0 [01:20<00:14, 13851.47it/s]
Downloading...:  81%|████████  | 807282/1002579.0 [01:21<00:20, 9449.73it/s]
Downloading...:  81%|████████  | 808463/1002579.0 [01:21<00:21, 9013.01it/s]
Downloading...:  81%|████████  | 809521/1002579.0 [01:21<00:29, 6639.41it/s]
Downloading...:  81%|████████  | 811499/1002579.0 [01:21<00:23, 8194.73it/s]
Downloading...:  81%|████████  | 812515/1002579.0 [01:21<00:24, 7807.89it/s]
Downloading...:  81%|████████  | 813547/1002579.0 [01:22<00:25, 7529.38it/s]
Downloading...:  81%|████████▏ | 814612/1002579.0 [01:22<00:25, 7333.58it/s]
Downloading...:  81%|████████▏ | 815677/1002579.0 [01:22<00:25, 7228.48it/s]
Downloading...:  81%|████████▏ | 816759/1002579.0 [01:22<00:26, 7144.30it/s]
Downloading...:  82%|████████▏ | 817840/1002579.0 [01:22<00:25, 7197.41it/s]
Downloading...:  82%|████████▏ | 818938/1002579.0 [01:22<00:25, 7188.83it/s]
Downloading...:  82%|████████▏ | 820052/1002579.0 [01:23<00:25, 7143.01it/s]
Downloading...:  82%|████████▏ | 821166/1002579.0 [01:23<00:25, 7254.65it/s]
Downloading...:  82%|████████▏ | 822296/1002579.0 [01:23<00:24, 7289.71it/s]
Downloading...:  82%|████████▏ | 823427/1002579.0 [01:23<00:23, 7643.82it/s]
Downloading...:  82%|████████▏ | 824574/1002579.0 [01:23<00:23, 7595.48it/s]
Downloading...:  82%|████████▏ | 825721/1002579.0 [01:23<00:23, 7563.24it/s]
Downloading...:  82%|████████▏ | 826868/1002579.0 [01:23<00:21, 8101.50it/s]
Downloading...:  83%|████████▎ | 828014/1002579.0 [01:24<00:20, 8656.60it/s]
Downloading...:  83%|████████▎ | 828899/1002579.0 [01:24<00:20, 8361.81it/s]
Downloading...:  83%|████████▎ | 829746/1002579.0 [01:24<00:23, 7444.75it/s]
Downloading...:  83%|████████▎ | 830508/1002579.0 [01:24<00:25, 6674.70it/s]
Downloading...:  83%|████████▎ | 831570/1002579.0 [01:24<00:23, 7353.41it/s]
Downloading...:  83%|████████▎ | 832749/1002579.0 [01:24<00:22, 7465.17it/s]
Downloading...:  83%|████████▎ | 833929/1002579.0 [01:24<00:20, 8076.00it/s]
Downloading...:  83%|████████▎ | 835125/1002579.0 [01:24<00:19, 8706.05it/s]
Downloading...:  83%|████████▎ | 836014/1002579.0 [01:25<00:19, 8415.38it/s]
Downloading...:  83%|████████▎ | 836867/1002579.0 [01:25<00:22, 7476.87it/s]
Downloading...:  84%|████████▎ | 837634/1002579.0 [01:25<00:24, 6741.07it/s]
Downloading...:  84%|████████▎ | 838762/1002579.0 [01:25<00:21, 7540.50it/s]
Downloading...:  84%|████████▍ | 839975/1002579.0 [01:25<00:21, 7686.20it/s]
Downloading...:  84%|████████▍ | 841187/1002579.0 [01:25<00:20, 7760.86it/s]
Downloading...:  84%|████████▍ | 842400/1002579.0 [01:25<00:19, 8338.54it/s]
Downloading...:  84%|████████▍ | 843579/1002579.0 [01:26<00:17, 8930.76it/s]
Downloading...:  84%|████████▍ | 844491/1002579.0 [01:26<00:18, 8525.35it/s]
Downloading...:  84%|████████▍ | 845355/1002579.0 [01:26<00:20, 7598.64it/s]
Downloading...:  84%|████████▍ | 846133/1002579.0 [01:26<00:22, 7063.46it/s]
Downloading...:  85%|████████▍ | 847298/1002579.0 [01:26<00:20, 7654.62it/s]
Downloading...:  85%|████████▍ | 848527/1002579.0 [01:26<00:19, 7783.06it/s]
Downloading...:  85%|████████▍ | 849756/1002579.0 [01:26<00:18, 8398.16it/s]
Downloading...:  85%|████████▍ | 850952/1002579.0 [01:26<00:16, 9016.60it/s]
Downloading...:  85%|████████▍ | 851870/1002579.0 [01:27<00:17, 8597.63it/s]
Downloading...:  85%|████████▌ | 852740/1002579.0 [01:27<00:19, 7655.44it/s]
Downloading...:  85%|████████▌ | 853523/1002579.0 [01:27<00:21, 7033.98it/s]
Downloading...:  85%|████████▌ | 854704/1002579.0 [01:27<00:19, 7778.12it/s]
Downloading...:  85%|████████▌ | 855933/1002579.0 [01:27<00:17, 8419.55it/s]
Downloading...:  85%|████████▌ | 857112/1002579.0 [01:27<00:16, 9023.23it/s]
Downloading...:  86%|████████▌ | 858031/1002579.0 [01:27<00:16, 8567.17it/s]
Downloading...:  86%|████████▌ | 858899/1002579.0 [01:27<00:18, 7633.25it/s]
Downloading...:  86%|████████▌ | 859682/1002579.0 [01:28<00:19, 7431.04it/s]
Downloading...:  86%|████████▌ | 860897/1002579.0 [01:28<00:18, 7622.08it/s]
Downloading...:  86%|████████▌ | 862126/1002579.0 [01:28<00:16, 8394.41it/s]
Downloading...:  86%|████████▌ | 863289/1002579.0 [01:28<00:15, 8949.42it/s]
Downloading...:  86%|████████▌ | 864198/1002579.0 [01:28<00:16, 8503.98it/s]
Downloading...:  86%|████████▋ | 865058/1002579.0 [01:28<00:18, 7560.04it/s]
Downloading...:  86%|████████▋ | 865845/1002579.0 [01:28<00:18, 7434.39it/s]
Downloading...:  86%|████████▋ | 867074/1002579.0 [01:28<00:16, 8290.82it/s]
Downloading...:  87%|████████▋ | 868237/1002579.0 [01:29<00:15, 8883.61it/s]
Downloading...:  87%|████████▋ | 869138/1002579.0 [01:29<00:15, 8425.67it/s]
Downloading...:  87%|████████▋ | 869990/1002579.0 [01:29<00:17, 7473.85it/s]
Downloading...:  87%|████████▋ | 870793/1002579.0 [01:29<00:17, 7417.41it/s]
Downloading...:  87%|████████▋ | 872022/1002579.0 [01:29<00:16, 7699.65it/s]
Downloading...:  87%|████████▋ | 873251/1002579.0 [01:29<00:15, 8377.41it/s]
Downloading...:  87%|████████▋ | 874414/1002579.0 [01:29<00:14, 8955.04it/s]
Downloading...:  87%|████████▋ | 875322/1002579.0 [01:29<00:15, 8453.71it/s]
Downloading...:  87%|████████▋ | 876177/1002579.0 [01:30<00:16, 7473.92it/s]
Downloading...:  87%|████████▋ | 876970/1002579.0 [01:30<00:16, 7456.06it/s]
Downloading...:  88%|████████▊ | 878199/1002579.0 [01:30<00:14, 8312.15it/s]
Downloading...:  88%|████████▊ | 879362/1002579.0 [01:30<00:13, 8919.58it/s]
Downloading...:  88%|████████▊ | 880268/1002579.0 [01:30<00:14, 8398.46it/s]
Downloading...:  88%|████████▊ | 881119/1002579.0 [01:30<00:16, 7457.72it/s]
Downloading...:  88%|████████▊ | 881918/1002579.0 [01:30<00:16, 7381.22it/s]
Downloading...:  88%|████████▊ | 883163/1002579.0 [01:30<00:15, 7640.67it/s]
Downloading...:  88%|████████▊ | 884408/1002579.0 [01:31<00:15, 7799.47it/s]
Downloading...:  88%|████████▊ | 885653/1002579.0 [01:31<00:14, 7864.16it/s]
Downloading...:  88%|████████▊ | 886882/1002579.0 [01:31<00:13, 8635.31it/s]
Downloading...:  89%|████████▊ | 888045/1002579.0 [01:31<00:12, 9109.12it/s]
Downloading...:  89%|████████▊ | 888975/1002579.0 [01:31<00:13, 8603.04it/s]
Downloading...:  89%|████████▉ | 889848/1002579.0 [01:31<00:14, 7661.78it/s]
Downloading...:  89%|████████▉ | 890634/1002579.0 [01:31<00:14, 7530.18it/s]
Downloading...:  89%|████████▉ | 891879/1002579.0 [01:32<00:13, 8444.72it/s]
Downloading...:  89%|████████▉ | 893026/1002579.0 [01:32<00:12, 8998.78it/s]
Downloading...:  89%|████████▉ | 893941/1002579.0 [01:32<00:12, 8420.86it/s]
Downloading...:  89%|████████▉ | 894797/1002579.0 [01:32<00:14, 7483.45it/s]
Downloading...:  89%|████████▉ | 895664/1002579.0 [01:32<00:14, 7529.62it/s]
Downloading...:  89%|████████▉ | 896909/1002579.0 [01:32<00:12, 8538.89it/s]
Downloading...:  90%|████████▉ | 898072/1002579.0 [01:32<00:11, 9061.99it/s]
Downloading...:  90%|████████▉ | 898995/1002579.0 [01:32<00:12, 8502.61it/s]
Downloading...:  90%|████████▉ | 899860/1002579.0 [01:33<00:13, 7557.96it/s]
Downloading...:  90%|████████▉ | 900743/1002579.0 [01:33<00:13, 7588.06it/s]
Downloading...:  90%|████████▉ | 901988/1002579.0 [01:33<00:11, 8647.49it/s]
Downloading...:  90%|█████████ | 903168/1002579.0 [01:33<00:10, 9158.14it/s]
Downloading...:  90%|█████████ | 904103/1002579.0 [01:33<00:11, 8546.68it/s]
Downloading...:  90%|█████████ | 904975/1002579.0 [01:33<00:12, 7643.24it/s]
Downloading...:  90%|█████████ | 905871/1002579.0 [01:33<00:12, 7755.71it/s]
Downloading...:  90%|█████████ | 907149/1002579.0 [01:33<00:10, 8724.72it/s]
Downloading...:  91%|█████████ | 908345/1002579.0 [01:33<00:10, 9319.53it/s]
Downloading...:  91%|█████████ | 909294/1002579.0 [01:34<00:10, 8696.30it/s]
Downloading...:  91%|█████████ | 910179/1002579.0 [01:34<00:11, 7756.07it/s]
Downloading...:  91%|█████████ | 911114/1002579.0 [01:34<00:11, 7872.45it/s]
Downloading...:  91%|█████████ | 912408/1002579.0 [01:34<00:10, 8930.02it/s]
Downloading...:  91%|█████████ | 913621/1002579.0 [01:34<00:09, 9541.72it/s]
Downloading...:  91%|█████████ | 914595/1002579.0 [01:34<00:09, 8877.03it/s]
Downloading...:  91%|█████████▏| 915502/1002579.0 [01:34<00:11, 7913.93it/s]
Downloading...:  91%|█████████▏| 916455/1002579.0 [01:34<00:10, 8115.24it/s]
Downloading...:  92%|█████████▏| 917782/1002579.0 [01:35<00:09, 9166.97it/s]
Downloading...:  92%|█████████▏| 919044/1002579.0 [01:35<00:08, 9741.46it/s]
Downloading...:  92%|█████████▏| 920037/1002579.0 [01:35<00:09, 9069.19it/s]
Downloading...:  92%|█████████▏| 920961/1002579.0 [01:35<00:10, 8079.67it/s]
Downloading...:  92%|█████████▏| 921977/1002579.0 [01:35<00:09, 8332.41it/s]
Downloading...:  92%|█████████▏| 923320/1002579.0 [01:35<00:08, 9446.49it/s]
Downloading...:  92%|█████████▏| 924615/1002579.0 [01:35<00:07, 10053.87it/s]
Downloading...:  92%|█████████▏| 925642/1002579.0 [01:35<00:08, 9337.93it/s]
Downloading...:  92%|█████████▏| 926596/1002579.0 [01:36<00:09, 8336.46it/s]
Downloading...:  93%|█████████▎| 927662/1002579.0 [01:36<00:08, 8679.49it/s]
Downloading...:  93%|█████████▎| 929055/1002579.0 [01:36<00:07, 9718.49it/s]
Downloading...:  93%|█████████▎| 930213/1002579.0 [01:36<00:07, 10206.42it/s]
Downloading...:  93%|█████████▎| 931258/1002579.0 [01:36<00:07, 9263.72it/s]
Downloading...:  93%|█████████▎| 932213/1002579.0 [01:36<00:08, 8296.82it/s]
Downloading...:  93%|█████████▎| 933560/1002579.0 [01:36<00:07, 9286.99it/s]
Downloading...:  93%|█████████▎| 935018/1002579.0 [01:36<00:06, 10398.27it/s]
Downloading...:  93%|█████████▎| 936427/1002579.0 [01:37<00:06, 10874.31it/s]
Downloading...:  94%|█████████▎| 937540/1002579.0 [01:37<00:06, 10173.67it/s]
Downloading...:  94%|█████████▎| 938579/1002579.0 [01:37<00:07, 9069.21it/s]
Downloading...:  94%|█████████▎| 939721/1002579.0 [01:37<00:06, 9392.99it/s]
Downloading...:  94%|█████████▍| 941228/1002579.0 [01:37<00:05, 10666.57it/s]
Downloading...:  94%|█████████▍| 942719/1002579.0 [01:37<00:05, 11291.68it/s]
Downloading...:  94%|█████████▍| 943872/1002579.0 [01:37<00:05, 10513.66it/s]
Downloading...:  94%|█████████▍| 944945/1002579.0 [01:37<00:06, 9395.40it/s]
Downloading...:  94%|█████████▍| 946159/1002579.0 [01:38<00:05, 9884.66it/s]
Downloading...:  95%|█████████▍| 947765/1002579.0 [01:38<00:04, 11203.03it/s]
Downloading...:  95%|█████████▍| 949305/1002579.0 [01:38<00:04, 12310.86it/s]
Downloading...:  95%|█████████▍| 950573/1002579.0 [01:38<00:04, 10949.42it/s]
Downloading...:  95%|█████████▍| 951716/1002579.0 [01:38<00:05, 9784.17it/s]
Downloading...:  95%|█████████▌| 952743/1002579.0 [01:38<00:05, 8585.63it/s]
Downloading...:  95%|█████████▌| 954138/1002579.0 [01:38<00:05, 8752.55it/s]
Downloading...:  95%|█████████▌| 955564/1002579.0 [01:38<00:04, 9519.22it/s]
Downloading...:  95%|█████████▌| 956550/1002579.0 [01:39<00:05, 8216.52it/s]
Downloading...:  95%|█████████▌| 957413/1002579.0 [01:39<00:06, 7427.87it/s]
Downloading...:  96%|█████████▌| 958187/1002579.0 [01:39<00:06, 6947.35it/s]
Downloading...:  96%|█████████▌| 959070/1002579.0 [01:39<00:06, 6910.96it/s]
Downloading...:  96%|█████████▌| 959938/1002579.0 [01:39<00:05, 7218.43it/s]
Downloading...:  96%|█████████▌| 960676/1002579.0 [01:39<00:05, 7184.46it/s]
Downloading...:  96%|█████████▌| 961405/1002579.0 [01:39<00:06, 6365.32it/s]
Downloading...:  96%|█████████▌| 962060/1002579.0 [01:40<00:07, 5777.35it/s]
Downloading...:  96%|█████████▌| 962740/1002579.0 [01:40<00:06, 5984.68it/s]
Downloading...:  96%|█████████▌| 963658/1002579.0 [01:40<00:05, 6536.11it/s]
Downloading...:  96%|█████████▌| 964559/1002579.0 [01:40<00:05, 6901.28it/s]
Downloading...:  96%|█████████▋| 965261/1002579.0 [01:40<00:05, 6311.38it/s]
Downloading...:  96%|█████████▋| 965906/1002579.0 [01:40<00:06, 5738.05it/s]
Downloading...:  96%|█████████▋| 966558/1002579.0 [01:40<00:06, 5901.56it/s]
Downloading...:  97%|█████████▋| 967508/1002579.0 [01:40<00:05, 6569.67it/s]
Downloading...:  97%|█████████▋| 968177/1002579.0 [01:41<00:05, 6587.91it/s]
Downloading...:  97%|█████████▋| 968845/1002579.0 [01:41<00:05, 5933.93it/s]
Downloading...:  97%|█████████▋| 969490/1002579.0 [01:41<00:05, 6048.96it/s]
Downloading...:  97%|█████████▋| 970457/1002579.0 [01:41<00:04, 6742.73it/s]
Downloading...:  97%|█████████▋| 971140/1002579.0 [01:41<00:04, 6745.00it/s]
Downloading...:  97%|█████████▋| 971821/1002579.0 [01:41<00:05, 6058.03it/s]
Downloading...:  97%|█████████▋| 972489/1002579.0 [01:41<00:04, 6127.46it/s]
Downloading...:  97%|█████████▋| 973455/1002579.0 [01:41<00:04, 6884.68it/s]
Downloading...:  97%|█████████▋| 974154/1002579.0 [01:41<00:04, 6893.50it/s]
Downloading...:  97%|█████████▋| 974851/1002579.0 [01:42<00:04, 6143.11it/s]
Downloading...:  97%|█████████▋| 975520/1002579.0 [01:42<00:04, 6133.86it/s]
Downloading...:  97%|█████████▋| 976503/1002579.0 [01:42<00:03, 6982.13it/s]
Downloading...:  97%|█████████▋| 977453/1002579.0 [01:42<00:03, 7425.68it/s]
Downloading...:  98%|█████████▊| 978207/1002579.0 [01:42<00:03, 6740.82it/s]
Downloading...:  98%|█████████▊| 978898/1002579.0 [01:42<00:03, 6128.66it/s]
Downloading...:  98%|█████████▊| 979583/1002579.0 [01:42<00:03, 6287.83it/s]
Downloading...:  98%|█████████▊| 980582/1002579.0 [01:42<00:03, 6981.88it/s]
Downloading...:  98%|█████████▊| 981293/1002579.0 [01:42<00:03, 6974.55it/s]
Downloading...:  98%|█████████▊| 981999/1002579.0 [01:43<00:03, 6288.81it/s]
Downloading...:  98%|█████████▊| 982679/1002579.0 [01:43<00:03, 6337.35it/s]
Downloading...:  98%|█████████▊| 983679/1002579.0 [01:43<00:02, 7118.70it/s]
Downloading...:  98%|█████████▊| 984402/1002579.0 [01:43<00:02, 7092.54it/s]
Downloading...:  98%|█████████▊| 985119/1002579.0 [01:43<00:02, 6350.52it/s]
Downloading...:  98%|█████████▊| 985792/1002579.0 [01:43<00:02, 6363.03it/s]
Downloading...:  98%|█████████▊| 986792/1002579.0 [01:43<00:02, 7141.33it/s]
Downloading...:  98%|█████████▊| 987518/1002579.0 [01:43<00:02, 7158.43it/s]
Downloading...:  99%|█████████▊| 988242/1002579.0 [01:44<00:02, 6391.64it/s]
Downloading...:  99%|█████████▊| 988905/1002579.0 [01:44<00:02, 6389.61it/s]
Downloading...:  99%|█████████▊| 989905/1002579.0 [01:44<00:01, 7160.77it/s]
Downloading...:  99%|█████████▉| 990633/1002579.0 [01:44<00:01, 7178.89it/s]
Downloading...:  99%|█████████▉| 991359/1002579.0 [01:44<00:01, 6419.13it/s]
Downloading...:  99%|█████████▉| 992029/1002579.0 [01:44<00:01, 6492.64it/s]
Downloading...:  99%|█████████▉| 993018/1002579.0 [01:44<00:01, 7180.82it/s]
Downloading...:  99%|█████████▉| 993747/1002579.0 [01:44<00:01, 7105.68it/s]
Downloading...:  99%|█████████▉| 994465/1002579.0 [01:44<00:01, 6416.25it/s]
Downloading...:  99%|█████████▉| 995148/1002579.0 [01:45<00:01, 6423.15it/s]
Downloading...:  99%|█████████▉| 996147/1002579.0 [01:45<00:00, 7179.32it/s]
Downloading...:  99%|█████████▉| 996875/1002579.0 [01:45<00:00, 7146.03it/s]
Downloading...: 100%|█████████▉| 997597/1002579.0 [01:45<00:00, 6449.52it/s]
Downloading...: 100%|█████████▉| 998261/1002579.0 [01:45<00:00, 6481.30it/s]
Downloading...: 100%|█████████▉| 999260/1002579.0 [01:45<00:00, 7193.63it/s]
Downloading...: 100%|█████████▉| 999988/1002579.0 [01:45<00:00, 7096.26it/s]
Downloading...: 100%|█████████▉| 1000703/1002579.0 [01:45<00:00, 6435.45it/s]
Downloading...: 100%|█████████▉| 1001390/1002579.0 [01:45<00:00, 6460.36it/s]
Downloading...: 100%|█████████▉| 1002406/1002579.0 [01:46<00:00, 7152.73it/s]
Downloading...: 100%|██████████| 1002579/1002579.0 [01:46<00:00, 9440.65it/s]
sc.pp.highly_variable_genes(
    adata,
    n_top_genes=4000,
    flavor="seurat_v3",
    batch_key="orig.ident",
    subset=True,
    layer="counts",
)
adata
AnnData object with n_obs × n_vars = 152094 × 4000
    obs: 'nCount_ADT', 'nFeature_ADT', 'nCount_RNA', 'nFeature_RNA', 'orig.ident', 'lane', 'donor', 'time', 'celltype.l1', 'celltype.l2', 'celltype.l3', 'Phase', 'nCount_SCT', 'nFeature_SCT', 'X_index', 'total_counts', 'total_counts_mt', 'pct_counts_mt', 'Protein log library size', 'Number proteins detected', 'RNA log library size'
    var: 'mt', 'highly_variable', 'highly_variable_rank', 'means', 'variances', 'variances_norm', 'highly_variable_nbatches'
    uns: 'log1p', 'hvg'
    obsm: 'protein_counts'
    layers: 'counts'
TOTALVI.setup_anndata(
    adata,
    layer="counts",
    batch_key="orig.ident",
    protein_expression_obsm_key="protein_counts",
)
INFO     Using column names from columns of adata.obsm['protein_counts']
INFO     Found batches with missing protein expression

Prepare and run model#

Here we use the scArches-specific totalVI parameters, as shown in the scArches tutorial.

Rather than training the model here, which would take 1 hour, we instead download a pretrained object.

# arches_params = dict(
#     use_layer_norm="both",
#     use_batch_norm="none",
#     n_layers_decoder=2,
#     n_layers_encoder=2,
# )

# model = TOTALVI(adata, **arches_params)
# model.train(max_epochs=250)

# model_dir = os.path.join(save_dir.name, "seurat_reference_model")
# model.save(model_dir, overwrite=True)
def download_model(save_path: str, fname: str = "legacy_seurat_reference_model"):
    """Download the pre-trained model."""
    paths = pooch.retrieve(
        url="https://figshare.com/ndownloader/files/30929902",
        known_hash="422706d6af4ec6b3b91f547d7e8c97812b86a548e0d19b1d85d9cfed686a5130",
        fname=fname,
        path=save_path,
        processor=pooch.Unzip(),
    )
    paths.sort()
    return str(Path(paths[0]).parent)
legacy_model_dir = download_model(save_dir.name)
model_dir = os.path.join(save_dir.name, "seurat_reference_model")
TOTALVI.convert_legacy_save(legacy_model_dir, model_dir)

model = TOTALVI.load(model_dir, adata=adata)
INFO     File /tmp/tmpkyrakh_v/seurat_reference_model/model.pt already downloaded
INFO     Found batches with missing protein expression
INFO     Computing empirical prior initialization for protein background.
model.view_anndata_setup()
Anndata setup with scvi-tools version 1.1.0.

Setup via `TOTALVI.setup_anndata` with arguments:
{
'protein_expression_obsm_key': 'protein_counts',
'protein_names_uns_key': '_protein_names',
'batch_key': 'orig.ident',
'layer': 'counts',
'size_factor_key': None,
'categorical_covariate_keys': None,
'continuous_covariate_keys': None
}

         Summary Statistics          
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
┃     Summary Stat Key      Value  ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
│         n_batch             24   │
│         n_cells           152094 │
│ n_extra_categorical_covs    0    │
│ n_extra_continuous_covs     0    │
│         n_labels            1    │
│        n_proteins          217   │
│          n_vars            4000  │
└──────────────────────────┴────────┘
                 Data Registry                 
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Registry Key      scvi-tools Location      ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│      X           adata.layers['counts']    │
│    batch        adata.obs['_scvi_batch']   │
│    labels      adata.obs['_scvi_labels']   │
│   proteins    adata.obsm['protein_counts'] │
└──────────────┴──────────────────────────────┘
                     labels State Registry                      
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
┃      Source Location       Categories  scvi-tools Encoding ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩
│ adata.obs['_scvi_labels']      0                0          │
└───────────────────────────┴────────────┴─────────────────────┘
                     batch State Registry                     
┏━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
┃     Source Location      Categories  scvi-tools Encoding ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩
│ adata.obs['orig.ident']     P1_0              0          │
│                             P1_3              1          │
│                             P1_7              2          │
│                             P2_0              3          │
│                             P2_3              4          │
│                             P2_7              5          │
│                             P3_0              6          │
│                             P3_3              7          │
│                             P3_7              8          │
│                             P4_0              9          │
│                             P4_3             10          │
│                             P4_7             11          │
│                             P5_0             12          │
│                             P5_3             13          │
│                             P5_7             14          │
│                             P6_0             15          │
│                             P6_3             16          │
│                             P6_7             17          │
│                             P7_0             18          │
│                             P7_3             19          │
│                             P7_7             20          │
│                             P8_0             21          │
│                             P8_3             22          │
│                             P8_7             23          │
└─────────────────────────┴────────────┴─────────────────────┘
plt.plot(model.history["elbo_train"].iloc[10:], label="train")
plt.plot(model.history["elbo_validation"].iloc[10:], label="validation")
plt.title("Negative ELBO over training epochs")
plt.legend()
<matplotlib.legend.Legend at 0x7f1ff9e52ad0>
../../../_images/c0e350adb2c329966c179fe91773f11b804c24da52a1203705472c1c773161b3.png
TOTALVI_LATENT_KEY = "X_totalvi"

adata.obsm[TOTALVI_LATENT_KEY] = model.get_latent_representation()

Train a classifier on the latent space#

The representation of the reference data will not change when the model gets updated with query data. Therefore, we can train any simple classifier on the latent space. Here we use a Random Forest from scikit-learn.

By storing the classifier object in our totalVI instance (and giving it an attribute that ends with _), we can automatically save and load this classifier along with our model.

y_train = adata.obs["celltype.l2"].astype("category").cat.codes.to_numpy()
X_train = adata.obsm[TOTALVI_LATENT_KEY]
clf = RandomForestClassifier(
    random_state=1,
    class_weight="balanced_subsample",
    verbose=1,
    n_jobs=-1,
)
clf.fit(X_train, y_train)

model.latent_space_classifer_ = clf

Inspect reference model#

We can view the latent space using UMAP and plot the study-derived cell type labels.

Here we use the umap API instead of scanpy so that we can later use the same umap object on the query data.

TOTALVI_UMAP_KEY = "X_umap"

X = adata.obsm[TOTALVI_LATENT_KEY]
trans = umap.UMAP(
    n_neighbors=10,
    random_state=42,
    min_dist=0.4,
)
adata.obsm[TOTALVI_UMAP_KEY] = trans.fit_transform(X)

model.umap_op_ = trans
sc.pl.umap(
    adata,
    color=["celltype.l2", "orig.ident"],
    frameon=False,
    ncols=1,
)

Map query data#

Now we download our query data and cover the preprocessing necessary to map with our reference model.

In this case our query data are also PBMCs and come from the following study:

  • Arunachalam, Prabhu S., et al. “Systems biological assessment of immunity to mild versus severe COVID-19 infection in humans.” Science 369.6508 (2020): 1210-1220.

This dataset is also CITE-seq, but contains a subset of the proteins of the reference data.

query_path = os.path.join(save_dir.name, "covid_cite.h5ad")

query = sc.read(query_path, backup_url="https://ndownloader.figshare.com/files/27458837")

Preprocessing#

First we remove any doublets from the query dataset using Scrublet. This has to be run per batch, which in this dataset is denoted with "set".

query.obs["doublet_scores"] = 0
query.obs["predicted_doublets"] = True
for s in np.unique(query.obs["set"]):
    mask = query.obs["set"] == s
    counts_matrix = query[mask].X.copy()
    scrub = scr.Scrublet(counts_matrix)
    doublet_scores, predicted_doublets = scrub.scrub_doublets()
    query.obs["doublet_scores"].iloc[mask] = doublet_scores
    query.obs["predicted_doublets"].iloc[mask] = predicted_doublets
Preprocessing...
Simulating doublets...
Embedding transcriptomes using PCA...
Calculating doublet scores...
Automatically set threshold at doublet score = 0.37
Detected doublet rate = 3.6%
Estimated detectable doublet fraction = 40.3%
Overall doublet rate:
	Expected   = 10.0%
	Estimated  = 8.9%
Elapsed time: 33.0 seconds
Preprocessing...
Simulating doublets...
Embedding transcriptomes using PCA...
Calculating doublet scores...
Automatically set threshold at doublet score = 0.25
Detected doublet rate = 6.2%
Estimated detectable doublet fraction = 56.4%
Overall doublet rate:
	Expected   = 10.0%
	Estimated  = 11.0%
Elapsed time: 35.9 seconds

Next we do the following:

  1. Store the counts in a layer, perform standard preprocessing

  2. Add blank metadata that we will later fill in with predicted labels

  3. Rename the batch key to correspond to the reference data

  4. Add proteins with all 0 counts for the missing proteins in this query dataset

query.layers["counts"] = query.X.copy()
sc.pp.normalize_total(query, target_sum=1e4)
sc.pp.log1p(query)
query.raw = query
# subset to reference vars
query = query[:, adata.var_names].copy()

query.obsm["protein_counts"] = query.obsm["pro_exp"].copy()
query.obs["celltype.l2"] = "Unknown"
query.obs["orig.ident"] = query.obs["set"]
query.obsm["X_umap"] = query.obs[["UMAP1", "UMAP2"]].values

# reorganize query proteins, missing proteins become all 0
for p in adata.obsm["protein_counts"].columns:
    if p not in query.obsm["protein_counts"].columns:
        query.obsm["protein_counts"][p] = 0.0
# ensure columns are in same order
query.obsm["protein_counts"] = query.obsm["protein_counts"].loc[
    :, adata.obsm["protein_counts"].columns
]

For later visualization, we add some metadata to denote whether the dataset is reference of query

adata.obs["dataset_name"] = "Reference"
query.obs["dataset_name"] = "Query"

Query model training#

query_model = TOTALVI.load_query_data(query, model)
query_model.train(
    max_epochs=150,
    plan_kwargs={"weight_decay": 0.0, "scale_adversarial_loss": 0.0},
)
INFO     Found batches with missing protein expression
INFO     Computing empirical prior initialization for protein background.
Training:   0%|          | 0/150 [00:00<?, ?it/s]
Epoch 1/150:   0%|          | 0/150 [00:00<?, ?it/s]
Epoch 1/150:   1%|          | 1/150 [00:03<07:55,  3.19s/it]
Epoch 1/150:   1%|          | 1/150 [00:03<07:55,  3.19s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.26e+3]
Epoch 2/150:   1%|          | 1/150 [00:03<07:55,  3.19s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.26e+3]
Epoch 2/150:   1%|▏         | 2/150 [00:06<07:58,  3.24s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.26e+3]
Epoch 2/150:   1%|▏         | 2/150 [00:06<07:58,  3.24s/it, v_num=1, train_loss_step=1.35e+3, train_loss_epoch=1.15e+3]
Epoch 3/150:   1%|▏         | 2/150 [00:06<07:58,  3.24s/it, v_num=1, train_loss_step=1.35e+3, train_loss_epoch=1.15e+3]
Epoch 3/150:   2%|▏         | 3/150 [00:09<07:55,  3.23s/it, v_num=1, train_loss_step=1.35e+3, train_loss_epoch=1.15e+3]
Epoch 3/150:   2%|▏         | 3/150 [00:09<07:55,  3.23s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.12e+3]
Epoch 4/150:   2%|▏         | 3/150 [00:09<07:55,  3.23s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.12e+3]
Epoch 4/150:   3%|▎         | 4/150 [00:12<07:52,  3.24s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.12e+3]
Epoch 4/150:   3%|▎         | 4/150 [00:12<07:52,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.1e+3]
Epoch 5/150:   3%|▎         | 4/150 [00:12<07:52,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.1e+3]
Epoch 5/150:   3%|▎         | 5/150 [00:16<07:44,  3.21s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.1e+3]
Epoch 5/150:   3%|▎         | 5/150 [00:16<07:44,  3.21s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.09e+3]
Epoch 6/150:   3%|▎         | 5/150 [00:16<07:44,  3.21s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.09e+3]
Epoch 6/150:   4%|▍         | 6/150 [00:19<07:39,  3.19s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.09e+3]
Epoch 6/150:   4%|▍         | 6/150 [00:19<07:39,  3.19s/it, v_num=1, train_loss_step=1.2e+3, train_loss_epoch=1.08e+3]
Epoch 7/150:   4%|▍         | 6/150 [00:19<07:39,  3.19s/it, v_num=1, train_loss_step=1.2e+3, train_loss_epoch=1.08e+3]
Epoch 7/150:   5%|▍         | 7/150 [00:22<07:34,  3.18s/it, v_num=1, train_loss_step=1.2e+3, train_loss_epoch=1.08e+3]
Epoch 7/150:   5%|▍         | 7/150 [00:22<07:34,  3.18s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 8/150:   5%|▍         | 7/150 [00:22<07:34,  3.18s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 8/150:   5%|▌         | 8/150 [00:25<07:30,  3.17s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 8/150:   5%|▌         | 8/150 [00:25<07:30,  3.17s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 9/150:   5%|▌         | 8/150 [00:25<07:30,  3.17s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 9/150:   6%|▌         | 9/150 [00:28<07:37,  3.24s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 9/150:   6%|▌         | 9/150 [00:28<07:37,  3.24s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 10/150:   6%|▌         | 9/150 [00:28<07:37,  3.24s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 10/150:   7%|▋         | 10/150 [00:32<07:32,  3.23s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 10/150:   7%|▋         | 10/150 [00:32<07:32,  3.23s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 11/150:   7%|▋         | 10/150 [00:32<07:32,  3.23s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 11/150:   7%|▋         | 11/150 [00:35<07:27,  3.22s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 11/150:   7%|▋         | 11/150 [00:35<07:27,  3.22s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 12/150:   7%|▋         | 11/150 [00:35<07:27,  3.22s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 12/150:   8%|▊         | 12/150 [00:38<07:23,  3.22s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 12/150:   8%|▊         | 12/150 [00:38<07:23,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 13/150:   8%|▊         | 12/150 [00:38<07:23,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 13/150:   9%|▊         | 13/150 [00:41<07:19,  3.20s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 13/150:   9%|▊         | 13/150 [00:41<07:19,  3.20s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 14/150:   9%|▊         | 13/150 [00:41<07:19,  3.20s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 14/150:   9%|▉         | 14/150 [00:44<07:14,  3.20s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 14/150:   9%|▉         | 14/150 [00:44<07:14,  3.20s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 15/150:   9%|▉         | 14/150 [00:44<07:14,  3.20s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 15/150:  10%|█         | 15/150 [00:48<07:10,  3.19s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 15/150:  10%|█         | 15/150 [00:48<07:10,  3.19s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 16/150:  10%|█         | 15/150 [00:48<07:10,  3.19s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 16/150:  11%|█         | 16/150 [00:51<07:08,  3.19s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 16/150:  11%|█         | 16/150 [00:51<07:08,  3.19s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 17/150:  11%|█         | 16/150 [00:51<07:08,  3.19s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 17/150:  11%|█▏        | 17/150 [00:54<07:05,  3.20s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 17/150:  11%|█▏        | 17/150 [00:54<07:05,  3.20s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 18/150:  11%|█▏        | 17/150 [00:54<07:05,  3.20s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 18/150:  12%|█▏        | 18/150 [00:57<07:01,  3.19s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 18/150:  12%|█▏        | 18/150 [00:57<07:01,  3.19s/it, v_num=1, train_loss_step=1.14e+3, train_loss_epoch=1.06e+3]
Epoch 19/150:  12%|█▏        | 18/150 [00:57<07:01,  3.19s/it, v_num=1, train_loss_step=1.14e+3, train_loss_epoch=1.06e+3]
Epoch 19/150:  13%|█▎        | 19/150 [01:00<06:57,  3.19s/it, v_num=1, train_loss_step=1.14e+3, train_loss_epoch=1.06e+3]
Epoch 19/150:  13%|█▎        | 19/150 [01:00<06:57,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 20/150:  13%|█▎        | 19/150 [01:00<06:57,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 20/150:  13%|█▎        | 20/150 [01:04<06:54,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 20/150:  13%|█▎        | 20/150 [01:04<06:54,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 21/150:  13%|█▎        | 20/150 [01:04<06:54,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 21/150:  14%|█▍        | 21/150 [01:07<06:50,  3.18s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 21/150:  14%|█▍        | 21/150 [01:07<06:50,  3.18s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 22/150:  14%|█▍        | 21/150 [01:07<06:50,  3.18s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 22/150:  15%|█▍        | 22/150 [01:10<06:52,  3.23s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 22/150:  15%|█▍        | 22/150 [01:10<06:52,  3.23s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 23/150:  15%|█▍        | 22/150 [01:10<06:52,  3.23s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 23/150:  15%|█▌        | 23/150 [01:13<06:47,  3.21s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 23/150:  15%|█▌        | 23/150 [01:13<06:47,  3.21s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 24/150:  15%|█▌        | 23/150 [01:13<06:47,  3.21s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 24/150:  16%|█▌        | 24/150 [01:16<06:42,  3.19s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 24/150:  16%|█▌        | 24/150 [01:16<06:42,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 25/150:  16%|█▌        | 24/150 [01:16<06:42,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 25/150:  17%|█▋        | 25/150 [01:20<06:38,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 25/150:  17%|█▋        | 25/150 [01:20<06:38,  3.19s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 26/150:  17%|█▋        | 25/150 [01:20<06:38,  3.19s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 26/150:  17%|█▋        | 26/150 [01:23<06:34,  3.18s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 26/150:  17%|█▋        | 26/150 [01:23<06:34,  3.18s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 27/150:  17%|█▋        | 26/150 [01:23<06:34,  3.18s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 27/150:  18%|█▊        | 27/150 [01:26<06:31,  3.18s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 27/150:  18%|█▊        | 27/150 [01:26<06:31,  3.18s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 28/150:  18%|█▊        | 27/150 [01:26<06:31,  3.18s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 28/150:  19%|█▊        | 28/150 [01:29<06:29,  3.19s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 28/150:  19%|█▊        | 28/150 [01:29<06:29,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 29/150:  19%|█▊        | 28/150 [01:29<06:29,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 29/150:  19%|█▉        | 29/150 [01:32<06:26,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 29/150:  19%|█▉        | 29/150 [01:32<06:26,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 30/150:  19%|█▉        | 29/150 [01:32<06:26,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 30/150:  20%|██        | 30/150 [01:36<06:24,  3.21s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 30/150:  20%|██        | 30/150 [01:36<06:24,  3.21s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 31/150:  20%|██        | 30/150 [01:36<06:24,  3.21s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 31/150:  21%|██        | 31/150 [01:39<06:22,  3.21s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 31/150:  21%|██        | 31/150 [01:39<06:22,  3.21s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 32/150:  21%|██        | 31/150 [01:39<06:22,  3.21s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 32/150:  21%|██▏       | 32/150 [01:42<06:20,  3.22s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 32/150:  21%|██▏       | 32/150 [01:42<06:20,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 33/150:  21%|██▏       | 32/150 [01:42<06:20,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 33/150:  22%|██▏       | 33/150 [01:45<06:16,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 33/150:  22%|██▏       | 33/150 [01:45<06:16,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 34/150:  22%|██▏       | 33/150 [01:45<06:16,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 34/150:  23%|██▎       | 34/150 [01:48<06:14,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 34/150:  23%|██▎       | 34/150 [01:48<06:14,  3.22s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 35/150:  23%|██▎       | 34/150 [01:48<06:14,  3.22s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 35/150:  23%|██▎       | 35/150 [01:52<06:17,  3.28s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 35/150:  23%|██▎       | 35/150 [01:52<06:17,  3.28s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 36/150:  23%|██▎       | 35/150 [01:52<06:17,  3.28s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 36/150:  24%|██▍       | 36/150 [01:55<06:12,  3.27s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 36/150:  24%|██▍       | 36/150 [01:55<06:12,  3.27s/it, v_num=1, train_loss_step=999, train_loss_epoch=1.06e+3]
Epoch 37/150:  24%|██▍       | 36/150 [01:55<06:12,  3.27s/it, v_num=1, train_loss_step=999, train_loss_epoch=1.06e+3]
Epoch 37/150:  25%|██▍       | 37/150 [01:58<06:08,  3.26s/it, v_num=1, train_loss_step=999, train_loss_epoch=1.06e+3]
Epoch 37/150:  25%|██▍       | 37/150 [01:58<06:08,  3.26s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 38/150:  25%|██▍       | 37/150 [01:58<06:08,  3.26s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 38/150:  25%|██▌       | 38/150 [02:02<06:04,  3.25s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 38/150:  25%|██▌       | 38/150 [02:02<06:04,  3.25s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 39/150:  25%|██▌       | 38/150 [02:02<06:04,  3.25s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 39/150:  26%|██▌       | 39/150 [02:05<06:00,  3.25s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 39/150:  26%|██▌       | 39/150 [02:05<06:00,  3.25s/it, v_num=1, train_loss_step=989, train_loss_epoch=1.06e+3]
Epoch 40/150:  26%|██▌       | 39/150 [02:05<06:00,  3.25s/it, v_num=1, train_loss_step=989, train_loss_epoch=1.06e+3]
Epoch 40/150:  27%|██▋       | 40/150 [02:08<05:56,  3.24s/it, v_num=1, train_loss_step=989, train_loss_epoch=1.06e+3]
Epoch 40/150:  27%|██▋       | 40/150 [02:08<05:56,  3.24s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 41/150:  27%|██▋       | 40/150 [02:08<05:56,  3.24s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 41/150:  27%|██▋       | 41/150 [02:11<05:53,  3.24s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 41/150:  27%|██▋       | 41/150 [02:11<05:53,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 42/150:  27%|██▋       | 41/150 [02:11<05:53,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 42/150:  28%|██▊       | 42/150 [02:15<05:50,  3.25s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 42/150:  28%|██▊       | 42/150 [02:15<05:50,  3.25s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 43/150:  28%|██▊       | 42/150 [02:15<05:50,  3.25s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 43/150:  29%|██▊       | 43/150 [02:18<05:46,  3.24s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 43/150:  29%|██▊       | 43/150 [02:18<05:46,  3.24s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 44/150:  29%|██▊       | 43/150 [02:18<05:46,  3.24s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 44/150:  29%|██▉       | 44/150 [02:21<05:43,  3.24s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 44/150:  29%|██▉       | 44/150 [02:21<05:43,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 45/150:  29%|██▉       | 44/150 [02:21<05:43,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 45/150:  30%|███       | 45/150 [02:24<05:39,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 45/150:  30%|███       | 45/150 [02:24<05:39,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 46/150:  30%|███       | 45/150 [02:24<05:39,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 46/150:  31%|███       | 46/150 [02:27<05:35,  3.23s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 46/150:  31%|███       | 46/150 [02:27<05:35,  3.23s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 47/150:  31%|███       | 46/150 [02:27<05:35,  3.23s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 47/150:  31%|███▏      | 47/150 [02:31<05:32,  3.23s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 47/150:  31%|███▏      | 47/150 [02:31<05:32,  3.23s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 48/150:  31%|███▏      | 47/150 [02:31<05:32,  3.23s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 48/150:  32%|███▏      | 48/150 [02:34<05:33,  3.27s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 48/150:  32%|███▏      | 48/150 [02:34<05:33,  3.27s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 49/150:  32%|███▏      | 48/150 [02:34<05:33,  3.27s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 49/150:  33%|███▎      | 49/150 [02:37<05:28,  3.26s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 49/150:  33%|███▎      | 49/150 [02:37<05:28,  3.26s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 50/150:  33%|███▎      | 49/150 [02:37<05:28,  3.26s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 50/150:  33%|███▎      | 50/150 [02:41<05:25,  3.25s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 50/150:  33%|███▎      | 50/150 [02:41<05:25,  3.25s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.06e+3]
Epoch 51/150:  33%|███▎      | 50/150 [02:41<05:25,  3.25s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.06e+3]
Epoch 51/150:  34%|███▍      | 51/150 [02:44<05:21,  3.25s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.06e+3]
Epoch 51/150:  34%|███▍      | 51/150 [02:44<05:21,  3.25s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.06e+3]
Epoch 52/150:  34%|███▍      | 51/150 [02:44<05:21,  3.25s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.06e+3]
Epoch 52/150:  35%|███▍      | 52/150 [02:47<05:18,  3.25s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.06e+3]
Epoch 52/150:  35%|███▍      | 52/150 [02:47<05:18,  3.25s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 53/150:  35%|███▍      | 52/150 [02:47<05:18,  3.25s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 53/150:  35%|███▌      | 53/150 [02:50<05:17,  3.27s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 53/150:  35%|███▌      | 53/150 [02:50<05:17,  3.27s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 54/150:  35%|███▌      | 53/150 [02:50<05:17,  3.27s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 54/150:  36%|███▌      | 54/150 [02:54<05:15,  3.29s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 54/150:  36%|███▌      | 54/150 [02:54<05:15,  3.29s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 55/150:  36%|███▌      | 54/150 [02:54<05:15,  3.29s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 55/150:  37%|███▋      | 55/150 [02:57<05:09,  3.25s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 55/150:  37%|███▋      | 55/150 [02:57<05:09,  3.25s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 56/150:  37%|███▋      | 55/150 [02:57<05:09,  3.25s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 56/150:  37%|███▋      | 56/150 [03:00<05:03,  3.23s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 56/150:  37%|███▋      | 56/150 [03:00<05:03,  3.23s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.06e+3]
Epoch 57/150:  37%|███▋      | 56/150 [03:00<05:03,  3.23s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.06e+3]
Epoch 57/150:  38%|███▊      | 57/150 [03:03<04:58,  3.21s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.06e+3]
Epoch 57/150:  38%|███▊      | 57/150 [03:03<04:58,  3.21s/it, v_num=1, train_loss_step=1.19e+3, train_loss_epoch=1.06e+3]
Epoch 58/150:  38%|███▊      | 57/150 [03:03<04:58,  3.21s/it, v_num=1, train_loss_step=1.19e+3, train_loss_epoch=1.06e+3]
Epoch 58/150:  39%|███▊      | 58/150 [03:06<04:54,  3.20s/it, v_num=1, train_loss_step=1.19e+3, train_loss_epoch=1.06e+3]
Epoch 58/150:  39%|███▊      | 58/150 [03:06<04:54,  3.20s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 59/150:  39%|███▊      | 58/150 [03:06<04:54,  3.20s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 59/150:  39%|███▉      | 59/150 [03:10<04:50,  3.19s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 59/150:  39%|███▉      | 59/150 [03:10<04:50,  3.19s/it, v_num=1, train_loss_step=971, train_loss_epoch=1.06e+3]
Epoch 60/150:  39%|███▉      | 59/150 [03:10<04:50,  3.19s/it, v_num=1, train_loss_step=971, train_loss_epoch=1.06e+3]
Epoch 60/150:  40%|████      | 60/150 [03:13<04:51,  3.24s/it, v_num=1, train_loss_step=971, train_loss_epoch=1.06e+3]
Epoch 60/150:  40%|████      | 60/150 [03:13<04:51,  3.24s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 61/150:  40%|████      | 60/150 [03:13<04:51,  3.24s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 61/150:  41%|████      | 61/150 [03:16<04:47,  3.24s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 61/150:  41%|████      | 61/150 [03:16<04:47,  3.24s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 62/150:  41%|████      | 61/150 [03:16<04:47,  3.24s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 62/150:  41%|████▏     | 62/150 [03:19<04:42,  3.21s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 62/150:  41%|████▏     | 62/150 [03:19<04:42,  3.21s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 63/150:  41%|████▏     | 62/150 [03:19<04:42,  3.21s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 63/150:  42%|████▏     | 63/150 [03:22<04:37,  3.19s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 63/150:  42%|████▏     | 63/150 [03:22<04:37,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 64/150:  42%|████▏     | 63/150 [03:22<04:37,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 64/150:  43%|████▎     | 64/150 [03:26<04:33,  3.18s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 64/150:  43%|████▎     | 64/150 [03:26<04:33,  3.18s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 65/150:  43%|████▎     | 64/150 [03:26<04:33,  3.18s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 65/150:  43%|████▎     | 65/150 [03:29<04:29,  3.17s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 65/150:  43%|████▎     | 65/150 [03:29<04:29,  3.17s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 66/150:  43%|████▎     | 65/150 [03:29<04:29,  3.17s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 66/150:  44%|████▍     | 66/150 [03:32<04:25,  3.16s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.06e+3]
Epoch 66/150:  44%|████▍     | 66/150 [03:32<04:25,  3.16s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 67/150:  44%|████▍     | 66/150 [03:32<04:25,  3.16s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 67/150:  45%|████▍     | 67/150 [03:35<04:22,  3.16s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 67/150:  45%|████▍     | 67/150 [03:35<04:22,  3.16s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 68/150:  45%|████▍     | 67/150 [03:35<04:22,  3.16s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 68/150:  45%|████▌     | 68/150 [03:38<04:18,  3.16s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 68/150:  45%|████▌     | 68/150 [03:38<04:18,  3.16s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 69/150:  45%|████▌     | 68/150 [03:38<04:18,  3.16s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 69/150:  46%|████▌     | 69/150 [03:41<04:15,  3.15s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 69/150:  46%|████▌     | 69/150 [03:41<04:15,  3.15s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 70/150:  46%|████▌     | 69/150 [03:41<04:15,  3.15s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 70/150:  47%|████▋     | 70/150 [03:44<04:12,  3.15s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 70/150:  47%|████▋     | 70/150 [03:44<04:12,  3.15s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 71/150:  47%|████▋     | 70/150 [03:44<04:12,  3.15s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 71/150:  47%|████▋     | 71/150 [03:48<04:08,  3.15s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 71/150:  47%|████▋     | 71/150 [03:48<04:08,  3.15s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 72/150:  47%|████▋     | 71/150 [03:48<04:08,  3.15s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 72/150:  48%|████▊     | 72/150 [03:51<04:06,  3.16s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 72/150:  48%|████▊     | 72/150 [03:51<04:06,  3.16s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 73/150:  48%|████▊     | 72/150 [03:51<04:06,  3.16s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 73/150:  49%|████▊     | 73/150 [03:54<04:08,  3.23s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 73/150:  49%|████▊     | 73/150 [03:54<04:08,  3.23s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 74/150:  49%|████▊     | 73/150 [03:54<04:08,  3.23s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 74/150:  49%|████▉     | 74/150 [03:57<04:04,  3.22s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 74/150:  49%|████▉     | 74/150 [03:57<04:04,  3.22s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 75/150:  49%|████▉     | 74/150 [03:57<04:04,  3.22s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 75/150:  50%|█████     | 75/150 [04:01<04:01,  3.21s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.06e+3]
Epoch 75/150:  50%|█████     | 75/150 [04:01<04:01,  3.21s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 76/150:  50%|█████     | 75/150 [04:01<04:01,  3.21s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 76/150:  51%|█████     | 76/150 [04:04<03:57,  3.21s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.06e+3]
Epoch 76/150:  51%|█████     | 76/150 [04:04<03:57,  3.21s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 77/150:  51%|█████     | 76/150 [04:04<03:57,  3.21s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 77/150:  51%|█████▏    | 77/150 [04:07<03:54,  3.21s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 77/150:  51%|█████▏    | 77/150 [04:07<03:54,  3.21s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 78/150:  51%|█████▏    | 77/150 [04:07<03:54,  3.21s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 78/150:  52%|█████▏    | 78/150 [04:10<03:50,  3.21s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 78/150:  52%|█████▏    | 78/150 [04:10<03:50,  3.21s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 79/150:  52%|█████▏    | 78/150 [04:10<03:50,  3.21s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 79/150:  53%|█████▎    | 79/150 [04:13<03:47,  3.21s/it, v_num=1, train_loss_step=1.15e+3, train_loss_epoch=1.06e+3]
Epoch 79/150:  53%|█████▎    | 79/150 [04:13<03:47,  3.21s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 80/150:  53%|█████▎    | 79/150 [04:13<03:47,  3.21s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 80/150:  53%|█████▎    | 80/150 [04:17<03:44,  3.21s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 80/150:  53%|█████▎    | 80/150 [04:17<03:44,  3.21s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 81/150:  53%|█████▎    | 80/150 [04:17<03:44,  3.21s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 81/150:  54%|█████▍    | 81/150 [04:20<03:41,  3.21s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 81/150:  54%|█████▍    | 81/150 [04:20<03:41,  3.21s/it, v_num=1, train_loss_step=1.16e+3, train_loss_epoch=1.06e+3]
Epoch 82/150:  54%|█████▍    | 81/150 [04:20<03:41,  3.21s/it, v_num=1, train_loss_step=1.16e+3, train_loss_epoch=1.06e+3]
Epoch 82/150:  55%|█████▍    | 82/150 [04:23<03:38,  3.21s/it, v_num=1, train_loss_step=1.16e+3, train_loss_epoch=1.06e+3]
Epoch 82/150:  55%|█████▍    | 82/150 [04:23<03:38,  3.21s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 83/150:  55%|█████▍    | 82/150 [04:23<03:38,  3.21s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 83/150:  55%|█████▌    | 83/150 [04:26<03:35,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.06e+3]
Epoch 83/150:  55%|█████▌    | 83/150 [04:26<03:35,  3.22s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 84/150:  55%|█████▌    | 83/150 [04:26<03:35,  3.22s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 84/150:  56%|█████▌    | 84/150 [04:29<03:32,  3.22s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.06e+3]
Epoch 84/150:  56%|█████▌    | 84/150 [04:29<03:32,  3.22s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.06e+3]
Epoch 85/150:  56%|█████▌    | 84/150 [04:29<03:32,  3.22s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.06e+3]
Epoch 85/150:  57%|█████▋    | 85/150 [04:33<03:28,  3.20s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.06e+3]
Epoch 85/150:  57%|█████▋    | 85/150 [04:33<03:28,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 86/150:  57%|█████▋    | 85/150 [04:33<03:28,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 86/150:  57%|█████▋    | 86/150 [04:36<03:27,  3.24s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 86/150:  57%|█████▋    | 86/150 [04:36<03:27,  3.24s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 87/150:  57%|█████▋    | 86/150 [04:36<03:27,  3.24s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 87/150:  58%|█████▊    | 87/150 [04:39<03:23,  3.22s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.06e+3]
Epoch 87/150:  58%|█████▊    | 87/150 [04:39<03:23,  3.22s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 88/150:  58%|█████▊    | 87/150 [04:39<03:23,  3.22s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 88/150:  59%|█████▊    | 88/150 [04:42<03:19,  3.22s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 88/150:  59%|█████▊    | 88/150 [04:42<03:19,  3.22s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 89/150:  59%|█████▊    | 88/150 [04:42<03:19,  3.22s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 89/150:  59%|█████▉    | 89/150 [04:46<03:15,  3.21s/it, v_num=1, train_loss_step=1e+3, train_loss_epoch=1.06e+3]
Epoch 89/150:  59%|█████▉    | 89/150 [04:46<03:15,  3.21s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 90/150:  59%|█████▉    | 89/150 [04:46<03:15,  3.21s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 90/150:  60%|██████    | 90/150 [04:49<03:11,  3.20s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 90/150:  60%|██████    | 90/150 [04:49<03:11,  3.20s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 91/150:  60%|██████    | 90/150 [04:49<03:11,  3.20s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 91/150:  61%|██████    | 91/150 [04:52<03:08,  3.19s/it, v_num=1, train_loss_step=1.12e+3, train_loss_epoch=1.06e+3]
Epoch 91/150:  61%|██████    | 91/150 [04:52<03:08,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 92/150:  61%|██████    | 91/150 [04:52<03:08,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 92/150:  61%|██████▏   | 92/150 [04:55<03:04,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 92/150:  61%|██████▏   | 92/150 [04:55<03:04,  3.19s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 93/150:  61%|██████▏   | 92/150 [04:55<03:04,  3.19s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 93/150:  62%|██████▏   | 93/150 [04:58<03:02,  3.19s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.06e+3]
Epoch 93/150:  62%|██████▏   | 93/150 [04:58<03:02,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 94/150:  62%|██████▏   | 93/150 [04:58<03:02,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 94/150:  63%|██████▎   | 94/150 [05:01<02:59,  3.20s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.06e+3]
Epoch 94/150:  63%|██████▎   | 94/150 [05:01<02:59,  3.20s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 95/150:  63%|██████▎   | 94/150 [05:01<02:59,  3.20s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 95/150:  63%|██████▎   | 95/150 [05:05<02:55,  3.20s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.06e+3]
Epoch 95/150:  63%|██████▎   | 95/150 [05:05<02:55,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 96/150:  63%|██████▎   | 95/150 [05:05<02:55,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 96/150:  64%|██████▍   | 96/150 [05:08<02:53,  3.21s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.06e+3]
Epoch 96/150:  64%|██████▍   | 96/150 [05:08<02:53,  3.21s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 97/150:  64%|██████▍   | 96/150 [05:08<02:53,  3.21s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 97/150:  65%|██████▍   | 97/150 [05:11<02:49,  3.21s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 97/150:  65%|██████▍   | 97/150 [05:11<02:49,  3.21s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 98/150:  65%|██████▍   | 97/150 [05:11<02:49,  3.21s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 98/150:  65%|██████▌   | 98/150 [05:14<02:46,  3.20s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 98/150:  65%|██████▌   | 98/150 [05:14<02:46,  3.20s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 99/150:  65%|██████▌   | 98/150 [05:14<02:46,  3.20s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 99/150:  66%|██████▌   | 99/150 [05:18<02:45,  3.25s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 99/150:  66%|██████▌   | 99/150 [05:18<02:45,  3.25s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 100/150:  66%|██████▌   | 99/150 [05:18<02:45,  3.25s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 100/150:  67%|██████▋   | 100/150 [05:21<02:41,  3.24s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 100/150:  67%|██████▋   | 100/150 [05:21<02:41,  3.24s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.07e+3]
Epoch 101/150:  67%|██████▋   | 100/150 [05:21<02:41,  3.24s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.07e+3]
Epoch 101/150:  67%|██████▋   | 101/150 [05:24<02:37,  3.22s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.07e+3]
Epoch 101/150:  67%|██████▋   | 101/150 [05:24<02:37,  3.22s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 102/150:  67%|██████▋   | 101/150 [05:24<02:37,  3.22s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 102/150:  68%|██████▊   | 102/150 [05:27<02:33,  3.21s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 102/150:  68%|██████▊   | 102/150 [05:27<02:33,  3.21s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 103/150:  68%|██████▊   | 102/150 [05:27<02:33,  3.21s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 103/150:  69%|██████▊   | 103/150 [05:30<02:30,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 103/150:  69%|██████▊   | 103/150 [05:30<02:30,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 104/150:  69%|██████▊   | 103/150 [05:30<02:30,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 104/150:  69%|██████▉   | 104/150 [05:34<02:26,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 104/150:  69%|██████▉   | 104/150 [05:34<02:26,  3.19s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 105/150:  69%|██████▉   | 104/150 [05:34<02:26,  3.19s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 105/150:  70%|███████   | 105/150 [05:37<02:23,  3.18s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 105/150:  70%|███████   | 105/150 [05:37<02:23,  3.18s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 106/150:  70%|███████   | 105/150 [05:37<02:23,  3.18s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 106/150:  71%|███████   | 106/150 [05:40<02:20,  3.19s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 106/150:  71%|███████   | 106/150 [05:40<02:20,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 107/150:  71%|███████   | 106/150 [05:40<02:20,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 107/150:  71%|███████▏  | 107/150 [05:43<02:17,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 107/150:  71%|███████▏  | 107/150 [05:43<02:17,  3.20s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 108/150:  71%|███████▏  | 107/150 [05:43<02:17,  3.20s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 108/150:  72%|███████▏  | 108/150 [05:46<02:14,  3.19s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 108/150:  72%|███████▏  | 108/150 [05:46<02:14,  3.19s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 109/150:  72%|███████▏  | 108/150 [05:46<02:14,  3.19s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 109/150:  73%|███████▎  | 109/150 [05:50<02:10,  3.18s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 109/150:  73%|███████▎  | 109/150 [05:50<02:10,  3.18s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 110/150:  73%|███████▎  | 109/150 [05:50<02:10,  3.18s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 110/150:  73%|███████▎  | 110/150 [05:53<02:07,  3.18s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 110/150:  73%|███████▎  | 110/150 [05:53<02:07,  3.18s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 111/150:  73%|███████▎  | 110/150 [05:53<02:07,  3.18s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 111/150:  74%|███████▍  | 111/150 [05:56<02:03,  3.17s/it, v_num=1, train_loss_step=1.13e+3, train_loss_epoch=1.07e+3]
Epoch 111/150:  74%|███████▍  | 111/150 [05:56<02:03,  3.17s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 112/150:  74%|███████▍  | 111/150 [05:56<02:03,  3.17s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 112/150:  75%|███████▍  | 112/150 [05:59<02:02,  3.22s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 112/150:  75%|███████▍  | 112/150 [05:59<02:02,  3.22s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 113/150:  75%|███████▍  | 112/150 [05:59<02:02,  3.22s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 113/150:  75%|███████▌  | 113/150 [06:02<01:58,  3.20s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 113/150:  75%|███████▌  | 113/150 [06:02<01:58,  3.20s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 114/150:  75%|███████▌  | 113/150 [06:02<01:58,  3.20s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 114/150:  76%|███████▌  | 114/150 [06:05<01:54,  3.19s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 114/150:  76%|███████▌  | 114/150 [06:05<01:54,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 115/150:  76%|███████▌  | 114/150 [06:05<01:54,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 115/150:  77%|███████▋  | 115/150 [06:09<01:51,  3.18s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 115/150:  77%|███████▋  | 115/150 [06:09<01:51,  3.18s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 116/150:  77%|███████▋  | 115/150 [06:09<01:51,  3.18s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 116/150:  77%|███████▋  | 116/150 [06:12<01:48,  3.18s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 116/150:  77%|███████▋  | 116/150 [06:12<01:48,  3.18s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 117/150:  77%|███████▋  | 116/150 [06:12<01:48,  3.18s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 117/150:  78%|███████▊  | 117/150 [06:15<01:44,  3.17s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 117/150:  78%|███████▊  | 117/150 [06:15<01:44,  3.17s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 118/150:  78%|███████▊  | 117/150 [06:15<01:44,  3.17s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 118/150:  79%|███████▊  | 118/150 [06:18<01:41,  3.17s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 118/150:  79%|███████▊  | 118/150 [06:18<01:41,  3.17s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 119/150:  79%|███████▊  | 118/150 [06:18<01:41,  3.17s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 119/150:  79%|███████▉  | 119/150 [06:21<01:38,  3.18s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 119/150:  79%|███████▉  | 119/150 [06:21<01:38,  3.18s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 120/150:  79%|███████▉  | 119/150 [06:21<01:38,  3.18s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 120/150:  80%|████████  | 120/150 [06:25<01:36,  3.20s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 120/150:  80%|████████  | 120/150 [06:25<01:36,  3.20s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 121/150:  80%|████████  | 120/150 [06:25<01:36,  3.20s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 121/150:  81%|████████  | 121/150 [06:28<01:33,  3.22s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 121/150:  81%|████████  | 121/150 [06:28<01:33,  3.22s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 122/150:  81%|████████  | 121/150 [06:28<01:33,  3.22s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 122/150:  81%|████████▏ | 122/150 [06:31<01:30,  3.22s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 122/150:  81%|████████▏ | 122/150 [06:31<01:30,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 123/150:  81%|████████▏ | 122/150 [06:31<01:30,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 123/150:  82%|████████▏ | 123/150 [06:34<01:26,  3.22s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 123/150:  82%|████████▏ | 123/150 [06:34<01:26,  3.22s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 124/150:  82%|████████▏ | 123/150 [06:34<01:26,  3.22s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 124/150:  83%|████████▎ | 124/150 [06:38<01:23,  3.22s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 124/150:  83%|████████▎ | 124/150 [06:38<01:23,  3.22s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 125/150:  83%|████████▎ | 124/150 [06:38<01:23,  3.22s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 125/150:  83%|████████▎ | 125/150 [06:41<01:21,  3.28s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 125/150:  83%|████████▎ | 125/150 [06:41<01:21,  3.28s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 126/150:  83%|████████▎ | 125/150 [06:41<01:21,  3.28s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 126/150:  84%|████████▍ | 126/150 [06:44<01:18,  3.26s/it, v_num=1, train_loss_step=1.04e+3, train_loss_epoch=1.07e+3]
Epoch 126/150:  84%|████████▍ | 126/150 [06:44<01:18,  3.26s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 127/150:  84%|████████▍ | 126/150 [06:44<01:18,  3.26s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 127/150:  85%|████████▍ | 127/150 [06:47<01:14,  3.24s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 127/150:  85%|████████▍ | 127/150 [06:47<01:14,  3.24s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 128/150:  85%|████████▍ | 127/150 [06:47<01:14,  3.24s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 128/150:  85%|████████▌ | 128/150 [06:51<01:11,  3.23s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 128/150:  85%|████████▌ | 128/150 [06:51<01:11,  3.23s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 129/150:  85%|████████▌ | 128/150 [06:51<01:11,  3.23s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 129/150:  86%|████████▌ | 129/150 [06:54<01:07,  3.22s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 129/150:  86%|████████▌ | 129/150 [06:54<01:07,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 130/150:  86%|████████▌ | 129/150 [06:54<01:07,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 130/150:  87%|████████▋ | 130/150 [06:57<01:04,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 130/150:  87%|████████▋ | 130/150 [06:57<01:04,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 131/150:  87%|████████▋ | 130/150 [06:57<01:04,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 131/150:  87%|████████▋ | 131/150 [07:00<01:01,  3.22s/it, v_num=1, train_loss_step=1.1e+3, train_loss_epoch=1.07e+3]
Epoch 131/150:  87%|████████▋ | 131/150 [07:00<01:01,  3.22s/it, v_num=1, train_loss_step=1.17e+3, train_loss_epoch=1.07e+3]
Epoch 132/150:  87%|████████▋ | 131/150 [07:00<01:01,  3.22s/it, v_num=1, train_loss_step=1.17e+3, train_loss_epoch=1.07e+3]
Epoch 132/150:  88%|████████▊ | 132/150 [07:03<00:57,  3.20s/it, v_num=1, train_loss_step=1.17e+3, train_loss_epoch=1.07e+3]
Epoch 132/150:  88%|████████▊ | 132/150 [07:03<00:57,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 133/150:  88%|████████▊ | 132/150 [07:03<00:57,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 133/150:  89%|████████▊ | 133/150 [07:07<00:54,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 133/150:  89%|████████▊ | 133/150 [07:07<00:54,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 134/150:  89%|████████▊ | 133/150 [07:07<00:54,  3.20s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 134/150:  89%|████████▉ | 134/150 [07:10<00:50,  3.19s/it, v_num=1, train_loss_step=1.05e+3, train_loss_epoch=1.07e+3]
Epoch 134/150:  89%|████████▉ | 134/150 [07:10<00:50,  3.19s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 135/150:  89%|████████▉ | 134/150 [07:10<00:50,  3.19s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 135/150:  90%|█████████ | 135/150 [07:13<00:47,  3.19s/it, v_num=1, train_loss_step=1.06e+3, train_loss_epoch=1.07e+3]
Epoch 135/150:  90%|█████████ | 135/150 [07:13<00:47,  3.19s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 136/150:  90%|█████████ | 135/150 [07:13<00:47,  3.19s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 136/150:  91%|█████████ | 136/150 [07:16<00:44,  3.19s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 136/150:  91%|█████████ | 136/150 [07:16<00:44,  3.19s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 137/150:  91%|█████████ | 136/150 [07:16<00:44,  3.19s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 137/150:  91%|█████████▏| 137/150 [07:19<00:41,  3.19s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 137/150:  91%|█████████▏| 137/150 [07:19<00:41,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 138/150:  91%|█████████▏| 137/150 [07:19<00:41,  3.19s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 138/150:  92%|█████████▏| 138/150 [07:23<00:38,  3.24s/it, v_num=1, train_loss_step=1.08e+3, train_loss_epoch=1.07e+3]
Epoch 138/150:  92%|█████████▏| 138/150 [07:23<00:38,  3.24s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 139/150:  92%|█████████▏| 138/150 [07:23<00:38,  3.24s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 139/150:  93%|█████████▎| 139/150 [07:26<00:35,  3.24s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 139/150:  93%|█████████▎| 139/150 [07:26<00:35,  3.24s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 140/150:  93%|█████████▎| 139/150 [07:26<00:35,  3.24s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 140/150:  93%|█████████▎| 140/150 [07:29<00:32,  3.21s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 140/150:  93%|█████████▎| 140/150 [07:29<00:32,  3.21s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 141/150:  93%|█████████▎| 140/150 [07:29<00:32,  3.21s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 141/150:  94%|█████████▍| 141/150 [07:32<00:28,  3.19s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 141/150:  94%|█████████▍| 141/150 [07:32<00:28,  3.19s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 142/150:  94%|█████████▍| 141/150 [07:32<00:28,  3.19s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 142/150:  95%|█████████▍| 142/150 [07:35<00:25,  3.18s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 142/150:  95%|█████████▍| 142/150 [07:35<00:25,  3.18s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 143/150:  95%|█████████▍| 142/150 [07:35<00:25,  3.18s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 143/150:  95%|█████████▌| 143/150 [07:38<00:22,  3.17s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 143/150:  95%|█████████▌| 143/150 [07:38<00:22,  3.17s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 144/150:  95%|█████████▌| 143/150 [07:38<00:22,  3.17s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 144/150:  96%|█████████▌| 144/150 [07:42<00:18,  3.17s/it, v_num=1, train_loss_step=1.02e+3, train_loss_epoch=1.07e+3]
Epoch 144/150:  96%|█████████▌| 144/150 [07:42<00:18,  3.17s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 145/150:  96%|█████████▌| 144/150 [07:42<00:18,  3.17s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 145/150:  97%|█████████▋| 145/150 [07:45<00:16,  3.22s/it, v_num=1, train_loss_step=1.09e+3, train_loss_epoch=1.07e+3]
Epoch 145/150:  97%|█████████▋| 145/150 [07:45<00:16,  3.22s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.07e+3]
Epoch 146/150:  97%|█████████▋| 145/150 [07:45<00:16,  3.22s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.07e+3]
Epoch 146/150:  97%|█████████▋| 146/150 [07:48<00:12,  3.25s/it, v_num=1, train_loss_step=1.01e+3, train_loss_epoch=1.07e+3]
Epoch 146/150:  97%|█████████▋| 146/150 [07:48<00:12,  3.25s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 147/150:  97%|█████████▋| 146/150 [07:48<00:12,  3.25s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 147/150:  98%|█████████▊| 147/150 [07:52<00:09,  3.25s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 147/150:  98%|█████████▊| 147/150 [07:52<00:09,  3.25s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 148/150:  98%|█████████▊| 147/150 [07:52<00:09,  3.25s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 148/150:  99%|█████████▊| 148/150 [07:55<00:06,  3.27s/it, v_num=1, train_loss_step=1.11e+3, train_loss_epoch=1.07e+3]
Epoch 148/150:  99%|█████████▊| 148/150 [07:55<00:06,  3.27s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 149/150:  99%|█████████▊| 148/150 [07:55<00:06,  3.27s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 149/150:  99%|█████████▉| 149/150 [07:58<00:03,  3.27s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 149/150:  99%|█████████▉| 149/150 [07:58<00:03,  3.27s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 150/150:  99%|█████████▉| 149/150 [07:58<00:03,  3.27s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 150/150: 100%|██████████| 150/150 [08:01<00:00,  3.25s/it, v_num=1, train_loss_step=1.03e+3, train_loss_epoch=1.07e+3]
Epoch 150/150: 100%|██████████| 150/150 [08:01<00:00,  3.25s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]
Epoch 150/150: 100%|██████████| 150/150 [08:01<00:00,  3.21s/it, v_num=1, train_loss_step=1.07e+3, train_loss_epoch=1.07e+3]

And now we retrieve the latent representation for the query data

TOTALVI_QUERY_LATENT_KEY = "X_totalvi_scarches"

query.obsm[TOTALVI_QUERY_LATENT_KEY] = query_model.get_latent_representation(query)

Query cell type prediction#

We can use the random forest that we previously trained using the latent representation of the query data in the updated model!

# predict cell types of query
predictions = query_model.latent_space_classifer_.predict(query.obsm[TOTALVI_QUERY_LATENT_KEY])
categories = adata.obs["celltype.l2"].astype("category").cat.categories
cat_preds = [categories[i] for i in predictions]
query.obs["celltype.l2"] = cat_preds
query.obs["predicted_l2_scarches"] = cat_preds

Evaluate label transfer#

Now we plot the predicted labels and the labels from the query study (here denoted as "final_clust_review") on the UMAP coordinated used in the query study. We can see that we have an overall strong concordance, but also some important differences. For example, the study found a population of monocytes with interferon signaling, but as the reference contains no such cell type, it can only predict them to be CD14 monocytes.

sc.pl.umap(
    query,
    color=["celltype.l2", "final_clust_review"],
    frameon=False,
    ncols=1,
)

Use reference UMAP#

We can also use the same UMAP operator from the reference step to visualize our query data.

TOTALVI_UMAP_PROJECT_KEY = "X_umap_project"

query.obsm[TOTALVI_UMAP_PROJECT_KEY] = query_model.umap_op_.transform(
    query.obsm[TOTALVI_QUERY_LATENT_KEY]
)
sc.pl.embedding(
    query,
    TOTALVI_UMAP_PROJECT_KEY,
    color=["celltype.l2", "final_clust_review"],
    frameon=False,
    ncols=1,
)

And finally we can combine the umaps together and visualize jointly.

umap_adata = sc.AnnData(
    np.concatenate(
        [
            query.obsm["X_umap_project"],
            adata.obsm["X_umap"],
        ],
        axis=0,
    )
)
umap_adata.obs["celltype"] = np.concatenate(
    [query.obs["celltype.l2"].values, adata.obs["celltype.l2"].values]
)
umap_adata.obs["dataset"] = np.concatenate(
    [query.shape[0] * ["query"], adata.shape[0] * ["reference"]]
)
umap_adata.obsm["X_umap"] = umap_adata.X
inds = np.random.permutation(np.arange(umap_adata.shape[0]))
sc.pl.umap(
    umap_adata[inds],
    color=["celltype", "dataset"],
    frameon=False,
    ncols=1,
)