{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "hide_input": true,
    "inputHidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<span style=\"color:red; font-family:Helvetica Neue, Helvetica, Arial, sans-serif; font-size:2em;\">An Exception was encountered at 'In [25]'.</span>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<span style=\"color:red; font-family:Helvetica Neue, Helvetica, Arial, sans-serif; font-size:2em;\">An Exception was encountered at 'In [25]'.</span>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "papermill": {
     "duration": 0.146798,
     "end_time": "2019-05-24T04:37:02.065766",
     "exception": false,
     "start_time": "2019-05-24T04:37:01.918968",
     "status": "completed"
    },
    "tags": [
     "parameters"
    ]
   },
   "outputs": [],
   "source": [
    "# Example parameters\n",
    "#ddir= \"/users/avsec/workspace/basepair/data/\"\n",
    "#model_file = f\"{ddir}/processed/chipnexus/exp/models/oct-sox-nanog-klf/models/filters=128/model.h5\"\n",
    "#dataspec_file = f\"{ddir}/processed/chipnexus/exp/models/oct-sox-nanog-klf/models/filters=128/dataspec.yaml\"\n",
    "#history_file = f\"{ddir}/processed/chipnexus/exp/models/oct-sox-nanog-klf/models/filters=128/history.csv\"\n",
    "#peak_width = 1000\n",
    "#seq_width = peak_width\n",
    "#gpu = 0\n",
    "#num_workers = 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "papermill": {
     "duration": 0.094069,
     "end_time": "2019-05-24T04:37:02.284274",
     "exception": false,
     "start_time": "2019-05-24T04:37:02.190205",
     "status": "completed"
    },
    "tags": [
     "injected-parameters"
    ]
   },
   "outputs": [],
   "source": [
    "# Parameters\n",
    "model_file = \"/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/model.h5\"\n",
    "dataspec_file = \"/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/dataspec.yaml\"\n",
    "hparams_file = \"/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/hparams.yaml\"\n",
    "history_file = \"/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/history.csv\"\n",
    "peak_width = 1000\n",
    "seq_width = 1000\n",
    "gpu = 3\n",
    "num_workers = 10\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "papermill": {
     "duration": 6.977887,
     "end_time": "2019-05-24T04:37:09.409936",
     "exception": false,
     "start_time": "2019-05-24T04:37:02.432049",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import basepair\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from basepair.cli.schemas import DataSpec, TaskSpec\n",
    "from pathlib import Path\n",
    "from keras.models import load_model\n",
    "from basepair.config import create_tf_session, get_data_dir\n",
    "from basepair.datasets import StrandedProfile\n",
    "from basepair.preproc import AppendCounts\n",
    "from basepair.losses import MultichannelMultinomialNLL\n",
    "from basepair.config import valid_chr, test_chr\n",
    "from basepair.plots import regression_eval, plot_loss\n",
    "from basepair.cli.evaluate import eval_profile\n",
    "from basepair import samplers \n",
    "from basepair.math import softmax\n",
    "\n",
    "#ddir = get_data_dir()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "papermill": {
     "duration": 1.030971,
     "end_time": "2019-05-24T04:37:10.588117",
     "exception": false,
     "start_time": "2019-05-24T04:37:09.557146",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.client.session.Session at 0x7ff4b414f6d8>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "create_tf_session(\"\")  # don't use gpu"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "papermill": {
     "duration": 10.72515,
     "end_time": "2019-05-24T04:37:21.583484",
     "exception": false,
     "start_time": "2019-05-24T04:37:10.858334",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /users/avsec/bin/anaconda3/envs/chipnexus/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py:497: calling conv1d (from tensorflow.python.ops.nn_ops) with data_format=NHWC is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "`NHWC` for data_format is deprecated, use `NWC` instead\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2019-05-23 21:37:11,593 [WARNING] From /users/avsec/bin/anaconda3/envs/chipnexus/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py:497: calling conv1d (from tensorflow.python.ops.nn_ops) with data_format=NHWC is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "`NHWC` for data_format is deprecated, use `NWC` instead\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /users/avsec/bin/anaconda3/envs/chipnexus/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use the retry module or similar alternatives.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2019-05-23 21:37:18,235 [WARNING] From /users/avsec/bin/anaconda3/envs/chipnexus/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use the retry module or similar alternatives.\n"
     ]
    }
   ],
   "source": [
    "model = load_model(model_file)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "papermill": {
     "duration": 0.112333,
     "end_time": "2019-05-24T04:37:21.879397",
     "exception": false,
     "start_time": "2019-05-24T04:37:21.767064",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "## Learning curves"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "papermill": {
     "duration": 0.129054,
     "end_time": "2019-05-24T04:37:22.166984",
     "exception": false,
     "start_time": "2019-05-24T04:37:22.037930",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "ds = DataSpec.load(dataspec_file)\n",
    "tasks = list(ds.task_specs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "papermill": {
     "duration": 0.176537,
     "end_time": "2019-05-24T04:37:22.464230",
     "exception": false,
     "start_time": "2019-05-24T04:37:22.287693",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'epoch': 18.0,\n",
       " 'counts/task1_loss': 0.3322752021604327,\n",
       " 'loss': 358.14278573586586,\n",
       " 'profile/task1_loss': 354.82003259759523,\n",
       " 'val_counts/task1_loss': 0.326162558264714,\n",
       " 'val_loss': 360.7188846386845,\n",
       " 'val_profile/task1_loss': 357.4572590517414}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Best metrics\n",
    "dfh = pd.read_csv(history_file)\n",
    "dict(dfh.iloc[dfh.val_loss.idxmin()])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "papermill": {
     "duration": 0.341745,
     "end_time": "2019-05-24T04:37:22.958841",
     "exception": false,
     "start_time": "2019-05-24T04:37:22.617096",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_loss(dfh, [f\"{p}/{task}_loss\"\n",
    "                for task in tasks\n",
    "                for p in ['profile']\n",
    "               ], figsize=(len(tasks)*4, 4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "papermill": {
     "duration": 0.38501,
     "end_time": "2019-05-24T04:37:23.510250",
     "exception": false,
     "start_time": "2019-05-24T04:37:23.125240",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_loss(dfh, [f\"{p}/{task}_loss\"\n",
    "                for task in tasks\n",
    "                for p in ['counts']\n",
    "               ], figsize=(len(tasks)*4, 4))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "papermill": {
     "duration": 0.130694,
     "end_time": "2019-05-24T04:37:23.797426",
     "exception": false,
     "start_time": "2019-05-24T04:37:23.666732",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "## Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "papermill": {
     "duration": 0.333875,
     "end_time": "2019-05-24T04:37:24.256207",
     "exception": false,
     "start_time": "2019-05-24T04:37:23.922332",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "dl_valid = StrandedProfile(ds, \n",
    "                          incl_chromosomes=valid_chr, \n",
    "                          peak_width=peak_width,\n",
    "                          seq_width=seq_width,\n",
    "                          shuffle=False,\n",
    "                          target_transformer=AppendCounts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "papermill": {
     "duration": 1.109645,
     "end_time": "2019-05-24T04:37:25.515586",
     "exception": false,
     "start_time": "2019-05-24T04:37:24.405941",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  0%|          | 0/203 [00:00<?, ?it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  6%|▌         | 12/203 [00:00<00:01, 118.28it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 19%|█▊        | 38/203 [00:00<00:01, 140.65it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 37%|███▋      | 76/203 [00:00<00:00, 170.06it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 56%|█████▌    | 113/203 [00:00<00:00, 202.91it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 69%|██████▉   | 141/203 [00:00<00:00, 220.44it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 87%|████████▋ | 177/203 [00:00<00:00, 248.85it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "100%|██████████| 203/203 [00:00<00:00, 291.82it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "valid = dl_valid.load_all(num_workers=num_workers)\n",
    "y_true = valid[\"targets\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "papermill": {
     "duration": 0.666866,
     "end_time": "2019-05-24T04:37:26.305975",
     "exception": false,
     "start_time": "2019-05-24T04:37:25.639109",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "from basepair.BPNet import BiasModel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "papermill": {
     "duration": 0.095612,
     "end_time": "2019-05-24T04:37:26.560043",
     "exception": false,
     "start_time": "2019-05-24T04:37:26.464431",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# if [task for task, task_spec in ds.task_specs.items() if task_spec.bias_model]:\n",
    "#     bm = BiasModel(ds)\n",
    "#     valid['inputs'] = bm.predict([valid[\"inputs\"]])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "papermill": {
     "duration": 43.355334,
     "end_time": "2019-05-24T04:38:10.022237",
     "exception": false,
     "start_time": "2019-05-24T04:37:26.666903",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\r",
      "  32/6472 [..............................] - ETA: 1:31"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "  64/6472 [..............................] - ETA: 1:05"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "  96/6472 [..............................] - ETA: 57s "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 128/6472 [..............................] - ETA: 54s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 160/6472 [..............................] - ETA: 51s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 192/6472 [..............................] - ETA: 48s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 224/6472 [>.............................] - ETA: 47s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 256/6472 [>.............................] - ETA: 46s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 288/6472 [>.............................] - ETA: 45s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 320/6472 [>.............................] - ETA: 44s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 352/6472 [>.............................] - ETA: 43s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 384/6472 [>.............................] - ETA: 43s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 416/6472 [>.............................] - ETA: 42s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 448/6472 [=>............................] - ETA: 42s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 480/6472 [=>............................] - ETA: 42s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 512/6472 [=>............................] - ETA: 41s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 544/6472 [=>............................] - ETA: 41s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 576/6472 [=>............................] - ETA: 41s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 608/6472 [=>............................] - ETA: 41s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 640/6472 [=>............................] - ETA: 40s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 672/6472 [==>...........................] - ETA: 40s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 704/6472 [==>...........................] - ETA: 40s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 736/6472 [==>...........................] - ETA: 39s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 768/6472 [==>...........................] - ETA: 39s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 800/6472 [==>...........................] - ETA: 38s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 832/6472 [==>...........................] - ETA: 38s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 864/6472 [===>..........................] - ETA: 38s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 896/6472 [===>..........................] - ETA: 37s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 928/6472 [===>..........................] - ETA: 37s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 960/6472 [===>..........................] - ETA: 37s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      " 992/6472 [===>..........................] - ETA: 37s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1024/6472 [===>..........................] - ETA: 36s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1056/6472 [===>..........................] - ETA: 36s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1088/6472 [====>.........................] - ETA: 36s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1120/6472 [====>.........................] - ETA: 36s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1152/6472 [====>.........................] - ETA: 35s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1184/6472 [====>.........................] - ETA: 35s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1216/6472 [====>.........................] - ETA: 35s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1248/6472 [====>.........................] - ETA: 35s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1280/6472 [====>.........................] - ETA: 34s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1312/6472 [=====>........................] - ETA: 34s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1344/6472 [=====>........................] - ETA: 34s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1376/6472 [=====>........................] - ETA: 34s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1408/6472 [=====>........................] - ETA: 34s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1440/6472 [=====>........................] - ETA: 33s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1472/6472 [=====>........................] - ETA: 33s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1504/6472 [=====>........................] - ETA: 33s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1536/6472 [======>.......................] - ETA: 33s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1568/6472 [======>.......................] - ETA: 33s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1600/6472 [======>.......................] - ETA: 32s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1632/6472 [======>.......................] - ETA: 32s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1664/6472 [======>.......................] - ETA: 32s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1696/6472 [======>.......................] - ETA: 32s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1728/6472 [=======>......................] - ETA: 32s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1760/6472 [=======>......................] - ETA: 31s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1792/6472 [=======>......................] - ETA: 31s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1824/6472 [=======>......................] - ETA: 31s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1856/6472 [=======>......................] - ETA: 31s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1888/6472 [=======>......................] - ETA: 30s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1920/6472 [=======>......................] - ETA: 30s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1952/6472 [========>.....................] - ETA: 30s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "1984/6472 [========>.....................] - ETA: 30s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2016/6472 [========>.....................] - ETA: 29s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2048/6472 [========>.....................] - ETA: 29s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2080/6472 [========>.....................] - ETA: 29s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2112/6472 [========>.....................] - ETA: 29s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2144/6472 [========>.....................] - ETA: 28s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2176/6472 [=========>....................] - ETA: 28s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2208/6472 [=========>....................] - ETA: 28s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2240/6472 [=========>....................] - ETA: 28s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2272/6472 [=========>....................] - ETA: 27s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2304/6472 [=========>....................] - ETA: 27s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2336/6472 [=========>....................] - ETA: 27s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2368/6472 [=========>....................] - ETA: 27s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2400/6472 [==========>...................] - ETA: 27s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2432/6472 [==========>...................] - ETA: 26s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2464/6472 [==========>...................] - ETA: 26s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2496/6472 [==========>...................] - ETA: 26s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2528/6472 [==========>...................] - ETA: 26s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2560/6472 [==========>...................] - ETA: 26s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2592/6472 [===========>..................] - ETA: 25s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2624/6472 [===========>..................] - ETA: 25s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2656/6472 [===========>..................] - ETA: 25s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2688/6472 [===========>..................] - ETA: 25s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2720/6472 [===========>..................] - ETA: 25s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2752/6472 [===========>..................] - ETA: 24s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2784/6472 [===========>..................] - ETA: 24s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2816/6472 [============>.................] - ETA: 24s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2848/6472 [============>.................] - ETA: 24s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2880/6472 [============>.................] - ETA: 24s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2912/6472 [============>.................] - ETA: 23s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2944/6472 [============>.................] - ETA: 23s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "2976/6472 [============>.................] - ETA: 23s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3008/6472 [============>.................] - ETA: 23s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3040/6472 [=============>................] - ETA: 22s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3072/6472 [=============>................] - ETA: 22s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3104/6472 [=============>................] - ETA: 22s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3136/6472 [=============>................] - ETA: 22s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3168/6472 [=============>................] - ETA: 22s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3200/6472 [=============>................] - ETA: 21s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3232/6472 [=============>................] - ETA: 21s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3264/6472 [==============>...............] - ETA: 21s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3296/6472 [==============>...............] - ETA: 21s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3328/6472 [==============>...............] - ETA: 20s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3360/6472 [==============>...............] - ETA: 20s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3392/6472 [==============>...............] - ETA: 20s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3424/6472 [==============>...............] - ETA: 20s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3456/6472 [===============>..............] - ETA: 20s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3488/6472 [===============>..............] - ETA: 19s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3520/6472 [===============>..............] - ETA: 19s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3552/6472 [===============>..............] - ETA: 19s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3584/6472 [===============>..............] - ETA: 19s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3616/6472 [===============>..............] - ETA: 19s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3648/6472 [===============>..............] - ETA: 18s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3680/6472 [================>.............] - ETA: 18s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3712/6472 [================>.............] - ETA: 18s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3744/6472 [================>.............] - ETA: 18s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3776/6472 [================>.............] - ETA: 17s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3808/6472 [================>.............] - ETA: 17s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3840/6472 [================>.............] - ETA: 17s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3872/6472 [================>.............] - ETA: 17s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3904/6472 [=================>............] - ETA: 17s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3936/6472 [=================>............] - ETA: 16s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "3968/6472 [=================>............] - ETA: 16s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4000/6472 [=================>............] - ETA: 16s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4032/6472 [=================>............] - ETA: 16s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4064/6472 [=================>............] - ETA: 16s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4096/6472 [=================>............] - ETA: 15s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4128/6472 [==================>...........] - ETA: 15s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4160/6472 [==================>...........] - ETA: 15s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4192/6472 [==================>...........] - ETA: 15s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4224/6472 [==================>...........] - ETA: 15s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4256/6472 [==================>...........] - ETA: 14s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4288/6472 [==================>...........] - ETA: 14s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4320/6472 [===================>..........] - ETA: 14s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4352/6472 [===================>..........] - ETA: 14s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4384/6472 [===================>..........] - ETA: 13s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4416/6472 [===================>..........] - ETA: 13s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4448/6472 [===================>..........] - ETA: 13s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4480/6472 [===================>..........] - ETA: 13s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4512/6472 [===================>..........] - ETA: 13s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4544/6472 [====================>.........] - ETA: 12s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4576/6472 [====================>.........] - ETA: 12s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4608/6472 [====================>.........] - ETA: 12s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4640/6472 [====================>.........] - ETA: 12s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4672/6472 [====================>.........] - ETA: 12s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4704/6472 [====================>.........] - ETA: 11s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4736/6472 [====================>.........] - ETA: 11s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4768/6472 [=====================>........] - ETA: 11s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4800/6472 [=====================>........] - ETA: 11s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4832/6472 [=====================>........] - ETA: 10s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4864/6472 [=====================>........] - ETA: 10s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4896/6472 [=====================>........] - ETA: 10s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4928/6472 [=====================>........] - ETA: 10s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4960/6472 [=====================>........] - ETA: 10s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "4992/6472 [======================>.......] - ETA: 9s "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5024/6472 [======================>.......] - ETA: 9s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5056/6472 [======================>.......] - ETA: 9s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5088/6472 [======================>.......] - ETA: 9s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5120/6472 [======================>.......] - ETA: 9s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5152/6472 [======================>.......] - ETA: 8s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5184/6472 [=======================>......] - ETA: 8s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5216/6472 [=======================>......] - ETA: 8s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5248/6472 [=======================>......] - ETA: 8s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5280/6472 [=======================>......] - ETA: 7s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5312/6472 [=======================>......] - ETA: 7s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5344/6472 [=======================>......] - ETA: 7s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5376/6472 [=======================>......] - ETA: 7s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5408/6472 [========================>.....] - ETA: 7s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5440/6472 [========================>.....] - ETA: 6s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5472/6472 [========================>.....] - ETA: 6s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5504/6472 [========================>.....] - ETA: 6s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5536/6472 [========================>.....] - ETA: 6s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5568/6472 [========================>.....] - ETA: 6s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5600/6472 [========================>.....] - ETA: 5s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5632/6472 [=========================>....] - ETA: 5s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5664/6472 [=========================>....] - ETA: 5s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5696/6472 [=========================>....] - ETA: 5s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5728/6472 [=========================>....] - ETA: 4s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5760/6472 [=========================>....] - ETA: 4s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5792/6472 [=========================>....] - ETA: 4s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5824/6472 [=========================>....] - ETA: 4s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5856/6472 [==========================>...] - ETA: 4s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5888/6472 [==========================>...] - ETA: 3s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5920/6472 [==========================>...] - ETA: 3s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5952/6472 [==========================>...] - ETA: 3s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "5984/6472 [==========================>...] - ETA: 3s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6016/6472 [==========================>...] - ETA: 3s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6048/6472 [===========================>..] - ETA: 2s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6080/6472 [===========================>..] - ETA: 2s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6112/6472 [===========================>..] - ETA: 2s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6144/6472 [===========================>..] - ETA: 2s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6176/6472 [===========================>..] - ETA: 1s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6208/6472 [===========================>..] - ETA: 1s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6240/6472 [===========================>..] - ETA: 1s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6272/6472 [============================>.] - ETA: 1s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6304/6472 [============================>.] - ETA: 1s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6336/6472 [============================>.] - ETA: 0s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6368/6472 [============================>.] - ETA: 0s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6400/6472 [============================>.] - ETA: 0s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6432/6472 [============================>.] - ETA: 0s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6464/6472 [============================>.] - ETA: 0s"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
      "6472/6472 [==============================] - 43s 7ms/step\n"
     ]
    }
   ],
   "source": [
    "y_pred = model.predict(valid['inputs'], verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "papermill": {
     "duration": 0.583332,
     "end_time": "2019-05-24T04:38:28.046849",
     "exception": false,
     "start_time": "2019-05-24T04:38:27.463517",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "papermill": {
     "duration": 0.669368,
     "end_time": "2019-05-24T04:38:29.016217",
     "exception": false,
     "start_time": "2019-05-24T04:38:28.346849",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for task in tasks:\n",
    "    plt.figure()\n",
    "    yt = y_true[f'counts/{task}'].mean(-1)\n",
    "    yp = y_pred[ds.task2idx(task, 'counts')].mean(-1)\n",
    "    regression_eval(yt, \n",
    "                    yp, alpha=0.1, task=task)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "papermill": {
     "duration": 0.191815,
     "end_time": "2019-05-24T04:38:29.437628",
     "exception": false,
     "start_time": "2019-05-24T04:38:29.245813",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "## Profile evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "papermill": {
     "duration": 0.168301,
     "end_time": "2019-05-24T04:38:29.745851",
     "exception": false,
     "start_time": "2019-05-24T04:38:29.577550",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "from joblib import Parallel, delayed\n",
    "import basepair"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "papermill": {
     "duration": 0.135115,
     "end_time": "2019-05-24T04:38:30.080785",
     "exception": false,
     "start_time": "2019-05-24T04:38:29.945670",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "task=tasks[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "papermill": {
     "duration": 1.065865,
     "end_time": "2019-05-24T04:38:31.385021",
     "exception": false,
     "start_time": "2019-05-24T04:38:30.319156",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "yp = softmax(y_pred[ds.task2idx(task, \"profile\")])\n",
    "yt = y_true[\"profile/\" + task]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "papermill": {
     "duration": 0.416142,
     "end_time": "2019-05-24T04:38:32.045890",
     "exception": false,
     "start_time": "2019-05-24T04:38:31.629748",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "x = np.ravel(yt / (1+yt.sum(axis=-2, keepdims=True)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "papermill": {
     "duration": 1.157148,
     "end_time": "2019-05-24T04:38:33.420140",
     "exception": false,
     "start_time": "2019-05-24T04:38:32.262992",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x216 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,3))\n",
    "plt.subplot(121)\n",
    "plt.hist(x[(x<0.04) ], bins=100);\n",
    "plt.subplot(122)\n",
    "plt.hist(x[(x<0.04) & (x>0.0001)], bins=100);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "papermill": {
     "duration": 0.200613,
     "end_time": "2019-05-24T04:38:33.945794",
     "exception": false,
     "start_time": "2019-05-24T04:38:33.745181",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.04124992274412855"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(x>0.0001)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "papermill": {
     "duration": 2.207421,
     "end_time": "2019-05-24T04:38:36.321600",
     "exception": false,
     "start_time": "2019-05-24T04:38:34.114179",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "out_df = Parallel(n_jobs=len(tasks))(delayed(basepair.cli.evaluate.eval_profile)(y_true[\"profile/\" + task], \n",
    "                                                                                 softmax(y_pred[ds.task2idx(task, \"profile\")]), \n",
    "                                                                                 binsizes=[1,10],\n",
    "                                                                                 pos_min_threshold=0.015,\n",
    "                                                                                 neg_max_threshold=0.005,)\n",
    "                 for task in tasks)\n",
    "df = pd.concat([out_df[i].assign(task=task) for i,task in enumerate(tasks)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "papermill": {
     "duration": 0.184571,
     "end_time": "2019-05-24T04:38:36.812897",
     "exception": false,
     "start_time": "2019-05-24T04:38:36.628326",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      auprc  binsize  frac_ambigous  imbalance  n_positives  random_auprc   task\n",
      "0  0.285657        1       0.071149   0.010822         4805      0.010547  task1\n",
      "1  0.829742       10       0.267992   0.103087         3607      0.099354  task1\n"
     ]
    }
   ],
   "source": [
    "# make sure to print all the rows\n",
    "print(df.to_string())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "papermill": {
     "duration": 0.401427,
     "end_time": "2019-05-24T04:38:37.370594",
     "exception": true,
     "start_time": "2019-05-24T04:38:36.969167",
     "status": "failed"
    },
    "tags": []
   },
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'model/auprc.metrics.csv'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-25-e3f3f832ab2e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"model/auprc.metrics.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m/users/avsec/bin/anaconda3/envs/chipnexus/lib/python3.6/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36mto_csv\u001b[0;34m(self, path_or_buf, sep, na_rep, float_format, columns, header, index, index_label, mode, encoding, compression, quoting, quotechar, line_terminator, chunksize, tupleize_cols, date_format, doublequote, escapechar, decimal)\u001b[0m\n\u001b[1;32m   3018\u001b[0m                                  \u001b[0mdoublequote\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdoublequote\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   3019\u001b[0m                                  escapechar=escapechar, decimal=decimal)\n\u001b[0;32m-> 3020\u001b[0;31m         \u001b[0mformatter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   3021\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   3022\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mpath_or_buf\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/users/avsec/bin/anaconda3/envs/chipnexus/lib/python3.6/site-packages/pandas/io/formats/csvs.py\u001b[0m in \u001b[0;36msave\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    155\u001b[0m             f, handles = _get_handle(self.path_or_buf, self.mode,\n\u001b[1;32m    156\u001b[0m                                      \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 157\u001b[0;31m                                      compression=self.compression)\n\u001b[0m\u001b[1;32m    158\u001b[0m             \u001b[0mclose\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    159\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/users/avsec/bin/anaconda3/envs/chipnexus/lib/python3.6/site-packages/pandas/io/common.py\u001b[0m in \u001b[0;36m_get_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text)\u001b[0m\n\u001b[1;32m    422\u001b[0m         \u001b[0;32melif\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    423\u001b[0m             \u001b[0;31m# Python 3 and encoding\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 424\u001b[0;31m             \u001b[0mf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath_or_buf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnewline\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    425\u001b[0m         \u001b[0;32melif\u001b[0m \u001b[0mis_text\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    426\u001b[0m             \u001b[0;31m# Python 3 and no explicit encoding\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'model/auprc.metrics.csv'"
     ]
    }
   ],
   "source": [
    "df.to_csv(\"model/auprc.metrics.csv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "source": [
    "## Profile plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "from basepair.plots import plot_profiles\n",
    "from basepair import samplers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "tasks = list(ds.task_specs)\n",
    "task = tasks[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "#idx_list = samplers.top_sum_count(y_true['profile/Nanog'], 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "#idx_list = samplers.top_sum_count(y_true['profile/Oct4'], 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Total sum\n",
    "#idx_list = samplers.top_sum_count(sum([y_true[f'profile/{task}'].mean(-1) for task in tasks])[:,:,np.newaxis], 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "#idx_list = samplers.top_max_count(y_true['profile/Oct4'], 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "idx_list = samplers.random(y_true[f'profile/{task}'], 20, )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "idx_list[:4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": null,
     "end_time": null,
     "exception": null,
     "start_time": null,
     "status": "pending"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "plot_profiles(y_true, y_pred, tasks, idx_list, preproc=None, figsize=(24, 8), tic_freq=50, \n",
    "              xlim=[int(np.floor(peak_width/5)),int(np.floor(peak_width/5*4))])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:basepair-gpu] *",
   "language": "python",
   "name": "conda-env-basepair-gpu-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "papermill": {
   "duration": 99.908621,
   "end_time": "2019-05-24T04:38:39.909164",
   "environment_variables": {},
   "exception": true,
   "input_path": "/users/avsec/workspace/basepair/basepair/exp/chipnexus/template_eval.ipynb",
   "output_path": "/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/results.ipynb",
   "parameters": {
    "dataspec_file": "/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/dataspec.yaml",
    "gpu": 3,
    "history_file": "/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/history.csv",
    "hparams_file": "/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/hparams.yaml",
    "model_file": "/oak/stanford/groups/akundaje/marinovg/ENCODE4/Chromatin-nanopores/2019-05-23-Oct4-Sox2-BPNet-plasmids/mm10.BPNet.5p.ChIP-Seq_Oct4_V65-GSM1082340/model.h5",
    "num_workers": 10,
    "peak_width": 1000,
    "seq_width": 1000
   },
   "start_time": "2019-05-24T04:37:00.000543",
   "version": "0.18.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}