{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "<center>\n",
    "    <img src=\"./images/adsp_logo.png\">\n",
    "</center>\n",
    "\n",
    "### Prof. Dr. -Ing. Gerald Schuller <br> Jupyter Notebook: Renato Profeta\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "# The z-Transform"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/pkY3RfUrGsM\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/pkY3RfUrGsM\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "The z-Transform is a more general transform than the Fourier transform, and we will use it to obtain perfect reconstruction in filter banks and wavelets. Hence we will now look at the effects of sampling and some more tools in the z-domain.\n",
    "\n",
    "Since we usually deal with causal systems in practice, we use the **1-sided z-Transform**, defined as\n",
    "\n",
    "$$ \\large\n",
    "X(z)=\\sum_ {n=0} ^\\infty x(n)z^{-n} \n",
    "$$    \n",
    "  \n",
    "Observe this simply takes our sequence $x(n)$ and **turns it into the polynomial** $X(z)$.\n",
    "\n",
    "First observe that we get our usual frequency response (the Discrete Time Fourier Transform for a causal signal, starting at n=0) if we evaluate the z-tranform along the unit circle in the z-domain,\n",
    "\n",
    "$$z=e^{j\\Omega}$$\n",
    "\n",
    "This connects the z-Transform with the DTFT, except for the sample index n, which for the so-called one-side z-Tranform starts at n=0, and for the DTFT starts at $n=-\\infty$.\n",
    "\n",
    "In general, we can write complex variable z with an angle and a magnitude,\n",
    "\n",
    "$$\\large\n",
    "z=r\\cdot e^{j\\Omega}$$\n",
    "\n",
    "where we can interpret the $\\Omega$ as the **normalized angular frequency**, and the $r$ a damping factor for an exponentially decaying oscillation, if $r<1$ (or exponentially growing if $r>1$.\n",
    "\n",
    "**Observe**: This damping factor is **not** in the DTFT. This means in the z-Transform we can have a converging sum of the transform even for unstable signals or system, by just choosing r large enough! This means the **Region of Convergence** (ROC) just becomes smaller. Remember, in the z-transform sum we have $z^{-1}=\\frac{1}{r}\\cdot e^{-j\\Omega}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/SCsSYp91CA0\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/SCsSYp91CA0\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "**Recommended reading:**\n",
    "Alan V. Oppenheim, Ronald W. Schafer: “Discrete Time Signal Processing”, Prentice Hall.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src='https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-341-discrete-time-signal-processing-fall-2005/', width=900, height=400></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe src='https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-341-discrete-time-signal-processing-fall-2005/', width=900, height=400></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## z-Transform Properties"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "z-Transform definition:\n",
    "\n",
    "$$ \\large\n",
    "x(n) \\rightarrow \\sum _{n=0} ^ \\infty x(n) \\cdot z^{-n} =: X(z)\n",
    "$$\n",
    "\n",
    "The z-transform turns a sequence into a polynomial in z.\n",
    "\n",
    "Example: $x(n)=[2,4,3,1]$\n",
    "\n",
    "$$X(z)=2+4z^{-1}+3z^{-2}+z^{-3}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/YPU8FB3qSgY\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/YPU8FB3qSgY\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### Shift Property"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Take two causal sequences (causal means sample value 0 for negative indices): Sequence x(n), and x(n-1), which is the same sequence but delayed by one sample. Then their z-transforms are:  \n",
    "    \n",
    "$$ \\large\n",
    "x(n) \\rightarrow \\sum _ {n=0 }^ \\infty x(n) \\cdot z^{-n} =: X(z)$$\n",
    "    \n",
    "$$ \\large\n",
    "x(n-1) \\rightarrow \\sum _{n=0 }^ \\infty x(n-1) \\cdot z^{-n} =\\sum_{n=1} ^ \\infty x(n-1) \\cdot z^{-n} =\n",
    "$$    \n",
    "\n",
    "Use the index substitution, $n' \\leftarrow n-1$ or $n'+1\\leftarrow n$ to get rid of the \"$n-1$\" in the transform:\n",
    "\n",
    "\n",
    "$$ \\large\n",
    "=\\sum _{n'=0} ^\\infty x(n') \\cdot z^{-(n'+1)} = z^{-1} \\cdot  \\sum_ {n'=0} ^\\infty x(n') \\cdot z^{-n'} = X(z) \\cdot z^{-1}\n",
    "$$<br>\n",
    "\n",
    "This shows that a **delay by 1 sample** in the signal sequence (time domain) corresponds to the **multiplication with** $z^{-1}$ in the z-domain:\n",
    " \n",
    "$$\\large x(n)\\rightarrow X(z)$$\n",
    "$$\\large x(n-1) \\rightarrow X(z)\\cdot z^{-1}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/U17KDyOI58I\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/U17KDyOI58I\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "**Example:**\n",
    "Signal:\n",
    "$x_0=[1,2,3]$ => $X_0(z)=1+2z^{-1}+3z^{-2}$\n",
    "\n",
    "Signal, delayed by 1 sampling period:\n",
    "\n",
    "$x_1=[0,1,2,3]=>X_1(z)=0+1z^{-1}+2z^{-2}+3z^{-3}=$\n",
    "\n",
    "In the z-domain the delay shows up as multiplication with $z^{-1}$,\n",
    "\n",
    "$$=X_0(z).z^{-1}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "Related to the shift property is the z-transform of the shifted unit pulse. The unit pulse is defined as\n",
    "\n",
    "$$\\large\n",
    "\\Delta \\left ( n \\right )  =\\left ( \\matrix {{1 ,  i f  n =0} \\\\ {0 ,  e l s e}} \\right )$$\n",
    "\n",
    "so it is just a zero sequence with a 1 at time 0.\n",
    "\n",
    "Its z-Transform is then:\n",
    "\n",
    "$$\\large \\Delta(n)\\rightarrow 1$$\n",
    "\n",
    "The z-transform of the shifted unit pulse is:\n",
    "\n",
    "$$\\large \\Delta(n-d)\\rightarrow z^{-d}$$\n",
    "\n",
    "Shifted by d samples.\n",
    "\n",
    "The “**unit step**” function is defined as:\n",
    "\n",
    "$$\\large u\\left ( n \\right )  =\\left ( \\matrix {{1 ,  i f  n \\geq 0} \\\\ {0 ,  e l s e}} \\right )$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### Linearity"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "$$ \\large \n",
    "a \\cdot x(n) \\rightarrow a \\cdot X(z) $$\n",
    "\n",
    "$$\\large x(n)+y(n)\\rightarrow X(z)+Y(z)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### Convolution"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "$$\\large\n",
    "x(n)*y(n)\\rightarrow X(z)\\cdot Y(z)$$\n",
    "\n",
    "**The z-transform turns a convolution into a multiplication.**\n",
    "\n",
    "Remember: the convolution is defined as:\n",
    "\n",
    "$$ \\large\n",
    "x(n)*y(n)=\\sum _ {m= -\\infty} ^ \\infty x(m) \\cdot y(n-m)\n",
    "$$\n",
    "\n",
    "This is because the convolution of 2 sequences behave in the same way as the multiplication of 2 polynomials (the z-transform) of these sequences. This is one of the main advantages of the z-Transform, since it turns convolution into a simpler multiplication (which is in principle invertible)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Example z-Transform"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/9XRlk27e9zU\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/9XRlk27e9zU\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Exponential decaying sequence: $x(n)=p^{n}$ for n=0,1,..., meaning the sequence\n",
    "\n",
    "$$\\large 1,p,p^{2},p^{3},...$$\n",
    "\n",
    "$$\\large \\rightarrow X(z)=\\sum _{n=0}^{\\infty}p^n \\cdot z^{-n}$$\n",
    "\n",
    "**Remember:** we had a closed form solution for this type of **geometric sums:**\n",
    "\n",
    "$$S= \\sum_ {k = 0}^{N - 1} c^k$$\n",
    "\n",
    "its solution was:\n",
    "\n",
    "$$\n",
    "S =\\frac{c^N - 1}  {c - 1}\n",
    "$$\n",
    "\n",
    "Now we have an infinite sum, which means N goes towards infinity. But we have the expression $c^N$ in the solution. If $\\mid c\\mid <1$, then this goes to zero $c^N\\rightarrow 0$. Now we have $c=p\\cdot z^{-1}$. Hence, if $\\mid p\\cdot z^{-1}\\mid <1$ we get\n",
    "\n",
    "$$\\large\n",
    "\\rightarrow X(z)=\\frac{1}{1 -p \\cdot z^{-1}} = \\frac{z}  {z-p}\n",
    "$$\n",
    "\n",
    "Observe that this fraction has a **pole** at position z=p, and a **zero** at position z=0. Hence if know the pole position, we know p, and if we know p we know the time sequence. So the location of the pole gives us very important information about the signal.\n",
    "\n",
    "Keep in mind that this solution is only valid for all p which fullfill $\\mid  p\\cdot z^{-1}\\mid <1$. We see that this is true for $\\mid z\\mid >\\mid p\\mid $. This is also called the “**Region of Convergence” (ROC)**. The ROC is connected to the resulting stability of the system or signal. \n",
    "\n",
    "The region of convergence is outside the pole locations. If the region of convergence includes the unit circle, we have a stable system. This means: if the **poles are inside the unit circle**, we have a **stable system**.\n",
    "\n",
    "The sum of x(n) **converges** (we get the sum if we set $z=1$) if **abs(p)<1**. In this case we also say that the signal or system is **stable** (meaning we obtain a bounded output for a bounded input, so-called “BIBO stability”). In this case we see that the resulting pole of our z-transform is **inside the unit circle**. If abs(p)>1, we have an exponential growth, which is basically an “exploding” signal or system (meaning the output grows towards infinity), hence **unstable**.\n",
    "\n",
    "In general we say that a system or a signal is **stable**, if the **poles** of its z-transform are **inside the unit circle** in the z-domain, or **unstable** if **at least one pole is outside the unit circle** (it will exponentially grow).\n",
    "\n",
    "These are basic properties, which can be used to derive z-transforms of more complicated expressions, and they can also be used to obtain an inverse z-transform, by inspection.\n",
    "\n",
    "For instance if we see a fraction with a **pole** in the z-Transform, we know that the underlying time sequence has an **exponential decay or oscillation** in it.\n",
    "\n",
    "Observe that we can obtain a real valued decayed oscillation if we have 2 poles, each the conjugate complex of the other, or one with $+\\Omega$ and one with $-\\Omega$. In this way, we cancel the imaginary part.\n",
    "\n",
    "One of the main differences compared to the Discrete Time Fourier Transform (DTFT): With the z-transform we can see if a signal or system is stable by looking at the position of the poles in the z-domain. This is not possible for the DTFT, since there we don't know the positions of the poles. \n",
    "\n",
    "Now take a look at our down sampled signal from a previous notebook:\n",
    "$$ \\large\n",
    "x^d \\left ( n \\right )  =x \\left ( n \\right )  \\cdot \\Delta_N \\left ( n \\right )  =x  ( n  ) \\cdot \\frac{1} {N}  \\sum _ {k = 0}^ {N - 1} e^{j \\frac{2 \\pi} {N }\\cdot k \\cdot n}\n",
    "$$\n",
    "\n",
    "Now we can z-transform it\n",
    "\n",
    "\n",
    "$$ \\large\n",
    "\\sum _ {n=0} ^\\infty x^d \\left ( n \\right ) \\cdot z^{-n}  = \\sum_ {n=0}^ \\infty x  ( n  ) \\cdot \\frac{ 1} {N}  \\sum_ {k = 0} ^{N - 1} e^{j \\frac{2\\pi} {N} \\cdot k \\cdot n} \\cdot z^{ -n }\n",
    "$$\n",
    "\n",
    "Hence the effect of **multiplying our signal with the delta impulse train** in the z-domain is\n",
    "\n",
    "$$\\large\n",
    "X^d(z)=\\frac{1} {N} \\sum _{k=0} ^{N-1} X( e^{-j \\frac{2 \\pi} {N }\\cdot k} \\cdot z)\n",
    "$$\n",
    "\n",
    "Observe that here the aliasing components appear by multiplying $z$ with $e^{-j\\frac{2 \\pi}{N}\\cdot k}$, which in effect is a shift of the frequency.\n",
    "\n",
    "\n",
    "Remember from last time, the effect of the  **removal or re-insertion of the zeros** (changing the sampling rate) from or into the signal $x^d(n)$ at the higher sampling rate and $y(m)$ at the lower sampling rate in the z-domain is\n",
    "\n",
    "$$\\large\n",
    "Y(z)=X^{d} \\cdot \\left( z^{\\frac{1}{N}}\\right)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Recommended"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/Nf2QBWC0hCQ\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/Nf2QBWC0hCQ\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "**z-Transform using Python**\n",
    "\n",
    "https://github.com/GuitarsAI/MRSP_Notebooks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/n4keW_vluJA\" frameborder=\"0\" allow=\"accelerometer; \n",
       "    encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/n4keW_vluJA\" frameborder=\"0\" allow=\"accelerometer; \n",
    "    encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "**Frequency Response: z-Transform and the DTFT**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/NMGtwYE8veQ\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/NMGtwYE8veQ\" frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  },
  "livereveal": {
   "rise": {
    "height": "90%",
    "width": "90%"
   },
   "scroll": true,
   "theme": "sky",
   "transition": "zoom"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "010411b23dde4ac9b0a3030e14cf116a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonModel",
      "state": {
       "description": "Start",
       "layout": "IPY_MODEL_6a3bf4da31de478d94493fb7e7bf2612",
       "style": "IPY_MODEL_28c5906b489444688437bc5e2decf81a"
      }
     },
     "0124c108c90b41408309aa3aac820c5d": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "015addf4649b4d41b3ee5a4e08b1feef": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "01a5f4dbc4064fd3a34973eb916c31c5": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "disabled": true,
       "layout": "IPY_MODEL_05ed0d85918542ce8e2d2b5a11d7d46c",
       "style": "IPY_MODEL_11beb2d8d5cb46ccbbbf8aa79a579437"
      }
     },
     "02c9485b88554eb9992be45d9860b92e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "05ed0d85918542ce8e2d2b5a11d7d46c": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "070df1bc17ac48328bf07a4c6bbf4386": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "08bcfe0454894f769d36cf36a969a89c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_ec8397c2b6e5444587135da33d9144fd",
       "style": "IPY_MODEL_3fe6660526e44cc19947700d461a8a9d",
       "value": false
      }
     },
     "0b8e46359cee465aa82778a67f6c0b96": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "0b9a6a693871477ebf610c47a13ce72a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "0fbffec0398544c78cc392a8f3387f8e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "11649f3e118b4488af7188e4a8e73291": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "11beb2d8d5cb46ccbbbf8aa79a579437": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "12c1d6bd34634a1fb100dddc180fee8c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "disabled": true,
       "layout": "IPY_MODEL_cbfc931a5e68487a91bda9c791d27a54",
       "style": "IPY_MODEL_154ee137a89643c596b033dd8318706c",
       "value": true
      }
     },
     "1372b726ab434f9b89571f6da34c9e62": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "14129132b8da4c588bdb14db56917502": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "14f182217bd54f0eab515df20a2b5138": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "154ee137a89643c596b033dd8318706c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "16fff80d180c43a599f5bb2e9b551989": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "1a8f9d0d68954f4fa2ce1361633bde98": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "1b001b2ac3e847549ef031ffa10555a7": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "1d77796b884c4861a25db47632b8d489": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonStyleModel",
      "state": {}
     },
     "1e4739a8c3694e0184b1d7a856de0e23": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "1f7c5c8eb1f645d0b0b4ffb1db9e262b": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "224bcb4dea094163994aaa3f0121c825": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "234045dd6a114ecda45e0086e0d54e99": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "238506e028044b5b881ef74c8ad59846": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "BoundedIntTextModel",
      "state": {
       "description": "Bit-Depth:",
       "layout": "IPY_MODEL_56ad1c5dc11f482f9602ecf86f593745",
       "max": 16,
       "min": 2,
       "style": "IPY_MODEL_f832049896fd43d3a027ac200b0d333a",
       "value": 8
      }
     },
     "25438168806e49268b476a257216e7dd": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HBoxModel",
      "state": {
       "children": [
        "IPY_MODEL_ad19b104bd2c4274827935f0bc642e1c"
       ],
       "layout": "IPY_MODEL_266d77a5a8bf4ba0b75999d1ff5ec2ba"
      }
     },
     "266d77a5a8bf4ba0b75999d1ff5ec2ba": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "2770a82d9d574867b924b252a6697fcb": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_827b4767fde3485eb5c2b84a93302b94",
       "style": "IPY_MODEL_9e41a52328224716afc6e66f01c14e6e",
       "value": true
      }
     },
     "28c5906b489444688437bc5e2decf81a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonStyleModel",
      "state": {}
     },
     "2a17130f6ba1491f959d24bee45727aa": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_9eefd0731f5c4392a5acde7f1e933fd5",
       "style": "IPY_MODEL_1f7c5c8eb1f645d0b0b4ffb1db9e262b",
       "value": true
      }
     },
     "2aa28291b0e94968b90bc072bad5692c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "2c0c1ccee30d431c9040ada58fd71129": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "2f2f8d6d9d194d8d81aa9445ae96bc2a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "2f59316910c14ba5a89beb99d1c86a93": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_4d986dc237e54cb58da0435fa72d0f38",
       "style": "IPY_MODEL_48d6266121a349d48f11378c6804ee61",
       "value": true
      }
     },
     "3121709f5a264cf080f39aa0e49e7279": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_f469e7d7b4a541af8a5340dd1d099999",
       "style": "IPY_MODEL_454bac39d61a47178f95831b6cee19a4"
      }
     },
     "34f16d143e48488090e222e4ed23e9b8": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "367c6ac4f00e4104ba6837f8104dfb9f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "36cef02e3ac343f597afecf7a0da19c4": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "37389e5b17cf48e3a0021f24e6b830b3": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "3c934745843a4bdb9ecd61d569af4ee9": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "3fe6660526e44cc19947700d461a8a9d": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "4181a03ad26243f18c1afcbac62c4b93": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DropdownModel",
      "state": {
       "_options_labels": [
        "Mid-Tread",
        "Mid-Rise"
       ],
       "description": "Quantization Type:",
       "index": 0,
       "layout": "IPY_MODEL_0b8e46359cee465aa82778a67f6c0b96",
       "style": "IPY_MODEL_16fff80d180c43a599f5bb2e9b551989"
      }
     },
     "446d80c629a24e2fa2136e03dfc9d28b": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "454bac39d61a47178f95831b6cee19a4": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "462478cddfff483e922a3aa095a2e610": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "$\\mu$-Law",
       "disabled": false,
       "layout": "IPY_MODEL_78c567360a394eb19dabc832927f8693",
       "style": "IPY_MODEL_14129132b8da4c588bdb14db56917502",
       "value": false
      }
     },
     "476db36e2ef8495598b90265cb380580": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "48d6266121a349d48f11378c6804ee61": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "4d986dc237e54cb58da0435fa72d0f38": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "4db559233bc54c04b701ff71ebc1d55d": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "4e02c6cc9f2040c0924a4ba1a152edad": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_8bfde2f187c84f8c936d80d6ab9dd110",
       "style": "IPY_MODEL_6f86b5e8c23b4820bba2a6a839d624b3",
       "value": false
      }
     },
     "50e455fde9824f468875e0b897625f4c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "510465f7cad54c2db0e18fd7acd3311a": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "5254bdb17cad4908be4e921410737e7b": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "56ad1c5dc11f482f9602ecf86f593745": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "56c77fc92d1f40619026d3fbdd034c3a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "disabled": true,
       "layout": "IPY_MODEL_e099daeead614c06ba66a3b6aa2a6519",
       "style": "IPY_MODEL_1e4739a8c3694e0184b1d7a856de0e23",
       "value": true
      }
     },
     "5d021f3d3f104103af22aff0c388a31d": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "disabled": true,
       "layout": "IPY_MODEL_c63e57f2060841f7aa9fb386480ae645",
       "style": "IPY_MODEL_ec805846f5734669b7fcc4fd0ea88cde"
      }
     },
     "5e6239c4e5a14abba70b63e1be1f8edc": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "disabled": true,
       "layout": "IPY_MODEL_070df1bc17ac48328bf07a4c6bbf4386",
       "style": "IPY_MODEL_cae0d9b30a044bcdbb4646d2a824b06f",
       "value": true
      }
     },
     "60bf9fcb59ec405fbb5f47ca2b2cd2ff": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "617d2172171e4d4295d316b69ab86083": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "654babd4900b4e1d91e2eb5889a5db49": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "6a3bf4da31de478d94493fb7e7bf2612": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "6f85734c28af439a8da835c83e71c0c6": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_617d2172171e4d4295d316b69ab86083",
       "style": "IPY_MODEL_1d77796b884c4861a25db47632b8d489"
      }
     },
     "6f86b5e8c23b4820bba2a6a839d624b3": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "6fdb7d274eab44d2aaf38dd4dcfa0511": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "72a59b1fcaff4177ba91b8edb4fb23bd": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_1372b726ab434f9b89571f6da34c9e62",
       "style": "IPY_MODEL_2aa28291b0e94968b90bc072bad5692c",
       "value": false
      }
     },
     "739b843557fd4432826a28261e5b827e": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_98cc8cdb6e87466a8f357e995b2a13e9",
       "style": "IPY_MODEL_224bcb4dea094163994aaa3f0121c825",
       "value": false
      }
     },
     "73b4db0032014d44a57d71fb87786ee8": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_446d80c629a24e2fa2136e03dfc9d28b",
       "style": "IPY_MODEL_4db559233bc54c04b701ff71ebc1d55d",
       "value": false
      }
     },
     "779d357055284d7d839ee1ba611221e8": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "7836a2e5f5404d26ac461945a2ea0619": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_e8f0676ca8644d3ea28ffb8dd3c7964a",
       "style": "IPY_MODEL_dbd4fc6f05344d3893968667ea288e00",
       "value": true
      }
     },
     "78c567360a394eb19dabc832927f8693": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "7bec54694ea94b16aa7ddae3004a6907": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HBoxModel",
      "state": {
       "children": [
        "IPY_MODEL_238506e028044b5b881ef74c8ad59846"
       ],
       "layout": "IPY_MODEL_234045dd6a114ecda45e0086e0d54e99"
      }
     },
     "7f64dea70b79470aa30508c8f0c20150": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_779d357055284d7d839ee1ba611221e8",
       "style": "IPY_MODEL_81f45b5f76104f8a980503f3e39332bb",
       "value": true
      }
     },
     "81f45b5f76104f8a980503f3e39332bb": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "827b4767fde3485eb5c2b84a93302b94": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "89d29651e3da4f80ade582061a753d91": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_2c0c1ccee30d431c9040ada58fd71129",
       "style": "IPY_MODEL_50e455fde9824f468875e0b897625f4c",
       "value": true
      }
     },
     "8aeb4d884e904dfe8c13404fefd0ef6f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "BoundedIntTextModel",
      "state": {
       "description": "Bit-Depth:",
       "layout": "IPY_MODEL_a512d148087f4555b6bceeca8d4ea7a2",
       "max": 16,
       "min": 2,
       "style": "IPY_MODEL_5254bdb17cad4908be4e921410737e7b",
       "value": 8
      }
     },
     "8bfde2f187c84f8c936d80d6ab9dd110": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "8f63fda556ae49eea3ef4be03fdd736a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_ae6ab56d84d049e8b3a4a6453ee62cb7",
       "style": "IPY_MODEL_34f16d143e48488090e222e4ed23e9b8"
      }
     },
     "94b8806eb4eb41c29262f6f79153bdaa": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "98cc8cdb6e87466a8f357e995b2a13e9": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "9e41a52328224716afc6e66f01c14e6e": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "9eefd0731f5c4392a5acde7f1e933fd5": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "a105b9301e4e467b8f27efd88b0dd027": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "$\\mu$-Law",
       "disabled": false,
       "layout": "IPY_MODEL_02c9485b88554eb9992be45d9860b92e",
       "style": "IPY_MODEL_37389e5b17cf48e3a0021f24e6b830b3",
       "value": false
      }
     },
     "a1f23f60b3804a438ade7232ff60fcbb": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "a512d148087f4555b6bceeca8d4ea7a2": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "aa489c5c6242430bb9ef76d4460d61b5": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "aba73fc98ae34b8e965b730c3c422205": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "ad19b104bd2c4274827935f0bc642e1c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DropdownModel",
      "state": {
       "_options_labels": [
        "Mid-Tread",
        "Mid-Rise"
       ],
       "description": "Quantization Type:",
       "index": 0,
       "layout": "IPY_MODEL_476db36e2ef8495598b90265cb380580",
       "style": "IPY_MODEL_c7f454f84a4c4ffabeca0e6b66fd00c4"
      }
     },
     "ae6ab56d84d049e8b3a4a6453ee62cb7": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "b7257f546d6542c08e06a519a7cfcff9": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "bdb731b1250b48f6b81ae85d8318b6dc": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonStyleModel",
      "state": {}
     },
     "bf97deef015c4827a8967a671813f149": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_aa489c5c6242430bb9ef76d4460d61b5",
       "style": "IPY_MODEL_1a8f9d0d68954f4fa2ce1361633bde98"
      }
     },
     "c1920bdff8b14c4fa8e114b3921d9ade": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HBoxModel",
      "state": {
       "children": [
        "IPY_MODEL_4181a03ad26243f18c1afcbac62c4b93"
       ],
       "layout": "IPY_MODEL_a1f23f60b3804a438ade7232ff60fcbb"
      }
     },
     "c47984031d354d7bb041c39975e4cb8c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_3c934745843a4bdb9ecd61d569af4ee9",
       "style": "IPY_MODEL_015addf4649b4d41b3ee5a4e08b1feef",
       "value": true
      }
     },
     "c4d45858b9284681914cf8fde9407c40": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "c63e57f2060841f7aa9fb386480ae645": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "c7d3112a971e4497b7fd873765aed42d": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "c7f454f84a4c4ffabeca0e6b66fd00c4": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "cae0d9b30a044bcdbb4646d2a824b06f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "cbfa24b75cc64fddbd7a4eab87c56c46": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HBoxModel",
      "state": {
       "children": [
        "IPY_MODEL_fe565191de1540f5b0197219c460af56",
        "IPY_MODEL_8f63fda556ae49eea3ef4be03fdd736a",
        "IPY_MODEL_a105b9301e4e467b8f27efd88b0dd027"
       ],
       "layout": "IPY_MODEL_1b001b2ac3e847549ef031ffa10555a7"
      }
     },
     "cbfc931a5e68487a91bda9c791d27a54": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "cff4dfddc8ee4f25a80a855bdc65994f": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "d2a3e1a11bc648cbac44ac8d661fcaae": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "disabled": true,
       "layout": "IPY_MODEL_c7d3112a971e4497b7fd873765aed42d",
       "style": "IPY_MODEL_2f2f8d6d9d194d8d81aa9445ae96bc2a",
       "value": true
      }
     },
     "d3450ad02abc46db9032268bf51cf3a2": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "d559cd1da181460381dcc77443386833": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonStyleModel",
      "state": {}
     },
     "d768baa1b42743999d0fb702cc36436b": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_510465f7cad54c2db0e18fd7acd3311a",
       "style": "IPY_MODEL_c4d45858b9284681914cf8fde9407c40"
      }
     },
     "da223fb00a7e46f6a12a63b53e4f3d9c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonStyleModel",
      "state": {}
     },
     "dae75bebe0544ee88cd1071b3f87ff71": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "dbd4fc6f05344d3893968667ea288e00": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "dc77a42f93fd481294243d614e2c45ef": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_6fdb7d274eab44d2aaf38dd4dcfa0511",
       "style": "IPY_MODEL_0b9a6a693871477ebf610c47a13ce72a",
       "value": true
      }
     },
     "e099daeead614c06ba66a3b6aa2a6519": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "e139e8ce24694bdda7967b2165ee342c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_94b8806eb4eb41c29262f6f79153bdaa",
       "style": "IPY_MODEL_dae75bebe0544ee88cd1071b3f87ff71",
       "value": true
      }
     },
     "e51f5a36e4394ed689235a9794c618c1": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_b7257f546d6542c08e06a519a7cfcff9",
       "style": "IPY_MODEL_0124c108c90b41408309aa3aac820c5d",
       "value": true
      }
     },
     "e5505837f6154a0cae1a17c207323d4e": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "disabled": true,
       "layout": "IPY_MODEL_36cef02e3ac343f597afecf7a0da19c4",
       "style": "IPY_MODEL_60bf9fcb59ec405fbb5f47ca2b2cd2ff",
       "value": true
      }
     },
     "e5d441cf0b974fe5926d4f430e662b4a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "CheckboxModel",
      "state": {
       "description": "Downsampling with Zeros",
       "disabled": false,
       "layout": "IPY_MODEL_11649f3e118b4488af7188e4a8e73291",
       "style": "IPY_MODEL_367c6ac4f00e4104ba6837f8104dfb9f",
       "value": false
      }
     },
     "e7ffbebd8eea4250a1ff0c0a7ae94732": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "e8f0676ca8644d3ea28ffb8dd3c7964a": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "e9d3c86d3a7c49b799bdcc77191aa62a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_14f182217bd54f0eab515df20a2b5138",
       "style": "IPY_MODEL_da223fb00a7e46f6a12a63b53e4f3d9c"
      }
     },
     "ec805846f5734669b7fcc4fd0ea88cde": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "ec8397c2b6e5444587135da33d9144fd": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "f2232b0768124cf1804c9bc977ca3bc6": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_aba73fc98ae34b8e965b730c3c422205",
       "style": "IPY_MODEL_bdb731b1250b48f6b81ae85d8318b6dc"
      }
     },
     "f2a8b23362844b65b7cc51c15b54f5cc": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ToggleButtonModel",
      "state": {
       "description": "Stop",
       "layout": "IPY_MODEL_e7ffbebd8eea4250a1ff0c0a7ae94732",
       "style": "IPY_MODEL_d3450ad02abc46db9032268bf51cf3a2",
       "value": true
      }
     },
     "f469e7d7b4a541af8a5340dd1d099999": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "f6566c5300744aa18d1396449e916c5b": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HBoxModel",
      "state": {
       "children": [
        "IPY_MODEL_8aeb4d884e904dfe8c13404fefd0ef6f"
       ],
       "layout": "IPY_MODEL_cff4dfddc8ee4f25a80a855bdc65994f"
      }
     },
     "f7e7bb40afba4448b0c4506aed91c05a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HBoxModel",
      "state": {
       "children": [
        "IPY_MODEL_010411b23dde4ac9b0a3030e14cf116a",
        "IPY_MODEL_d768baa1b42743999d0fb702cc36436b",
        "IPY_MODEL_462478cddfff483e922a3aa095a2e610"
       ],
       "layout": "IPY_MODEL_0fbffec0398544c78cc392a8f3387f8e"
      }
     },
     "f832049896fd43d3a027ac200b0d333a": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "fe565191de1540f5b0197219c460af56": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ButtonModel",
      "state": {
       "description": "Start",
       "layout": "IPY_MODEL_654babd4900b4e1d91e2eb5889a5db49",
       "style": "IPY_MODEL_d559cd1da181460381dcc77443386833"
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}