{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cumulative Distribution Transform (CDT)\n",
"\n",
"This tutorial will demonstrate: how to use the forward and inverse operations of the CDT in the the *PyTransKit* package."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Class:: CDT\n",
"**Functions**:\n",
"\n",
"1. Forward transform:\n",
" sig1_hat, sig1_hat_old, xtilde = forward(x0, sig0, x1, sig1)\n",
" \n",
" Inputs:\n",
" ----------------\n",
" x0 : 1d array\n",
" Independent axis variable of reference signal (sig0).\n",
" sig0 : 1d array\n",
" Reference signal.\n",
" x1 : 1d array\n",
" Independent axis variable of the signal to transform (sig1).\n",
" sig1 : 1d array\n",
" Signal to transform.\n",
" \n",
" Outputs:\n",
" ----------------\n",
" sig1_hat : 1d array\n",
" CDT of input signal sig1.\n",
" sig1_hat_old : 1d array\n",
" CDT of input signal sig1 using the old definition.\n",
" xtilde : 1d array\n",
" Independent axis variable of sig1_hat.\n",
" \n",
"2. Inverse transform:\n",
" sig1_recon = inverse(sig1_hat, sig0, x1)\n",
" \n",
" Inputs:\n",
" ----------------\n",
" sig1_hat : 1d array\n",
" CDT of a signal sig1.\n",
" sig0 : 1d array\n",
" Reference signal.\n",
" x1 : 1d array\n",
" Independent axis variable of the signal to reconstruct.\n",
" \n",
" Outputs:\n",
" ----------------\n",
" sig1_recon : 1d array\n",
" Reconstructed signal.\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Definition\n",
"### Forward Transform\n",
"Let $s(x), x\\in\\Omega_s\\subset\\mathbb{R}$ be a positive density function (PDF). The CDT of the PDF $s(x)$ with respect to a reference PDF $s_0(x), x\\in\\Omega_{s_0}\\subset\\mathbb{R}$ is given by the mass preserving function $\\widehat{s}(x)$ that satisfies:
\n",
"\\begin{equation}\n",
"\\int_{inf(\\Omega_s)}^{\\widehat{s}(x)}s(u)du = \\int_{inf(\\Omega_{s_0})}^xs_0(u)du\n",
"\\end{equation}\n",
"\n",
"which yields:
\n",
"\\begin{equation}\n",
"\\widehat{s}(x) = S^{-1}(S_0(x)),\n",
"\\end{equation}\n",
"\n",
"where $S(x)=\\int_{inf(\\Omega_s)}^{x}s(u)du$, and $S_0(x)=\\int_{inf(\\Omega_{s_0})}^{x}s_0(u)du$.
\n",
"For continuous positive PDFs, $\\widehat{s}$ is a continuous and monotonically increasing function. If $\\widehat{s}$ is differentiable, the above equation can be rewritten as:
\n",
"\\begin{equation}\n",
"s_0(x) = \\widehat{s}'(x)s(\\widehat{s}(x)).\n",
"\\end{equation}\n",
"\n",
"### Inverse Transform\n",
"The inverse transform of the CDT $\\widehat{s}(x)$ is given by:
\n",
"\\begin{equation}\n",
"s(x) = (\\widehat{s}^{-1}(x))'s_0(\\widehat{s}^{-1}(x)),\n",
"\\end{equation}\n",
"\n",
"where $\\widehat{s}^{-1}$ is the inverse of $\\widehat{s}$, i.e. $\\widehat{s}^{-1}(\\widehat{s}(x)) = x$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## CDT Demo\n",
"The examples will cover the following operations:\n",
"* Forward and inverse operations of the CDT\n",
"* CDT Properties - translation, scaling, and linear separability in CDT space"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Forward CDT"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Import necessary python packages"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create reference $I_0$ (uniform distribution) and a demo signal $I_1$"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"N=250\n",
"x0 = np.linspace(0, 1, N)\n",
"I0= np.ones(x0.size)\n",
"x=np.linspace(0, 2, N)\n",
"mu=x[len(x)-1]/2.\n",
"sigma=0.1\n",
"I1=1/(sigma*np.sqrt(2*np.pi))*np.exp(-((x-mu)**2)/(2*sigma**2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Convert signals to strictly positive PDFs"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"epsilon = 1e-7\n",
"I0 = abs(I0) + epsilon\n",
"I0 = I0/I0.sum()\n",
"I1 = abs(I1) + epsilon\n",
"I1 = I1/I1.sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute forward CDT transform of $I_1$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"