{ "cells": [ { "cell_type": "markdown", "id": "d98edc5c-8152-4f43-a2f5-3676b21bc09e", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "# Eigenworms" ] }, { "cell_type": "markdown", "id": "af463d4b-25a4-4ed4-ae3f-9bc64e1d9146", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "In this notebook, we will use \"dimensionality reduction\" methods to study animal behavior. As one can imagine, behavior can be highly complex. In some animals, biologists have classified behavior by stereotypical postures or movements that they have defined based on experience. Recent technology, such as high-resolution and high-speed digital camera, has allowed us to take a more quantitative approach by collecting and analyzing behavioral data. However, the data will most likely be high dimensional, as they may represent the shape and position of each body part. Our goal is to see if we can simplify such high-dimensional representation to a much lower dimensional description, and perhaps these \"principal\" dimensions would match the stereotypical behaviors that were found \"manually\". Thus, we look for an automatic and unbiased way of reducing the dimensionality of the data to help us extract the basic modes of behavior." ] }, { "cell_type": "markdown", "id": "dca9515a-f21d-4d70-851b-0b6258d13cdc", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Our example here is the crawling behavior of the roundworm, *C. elegans*. In the experiment of ([Stephens et al., 2008](https://doi.org/10.1371/journal.pcbi.1000028)), the worms were left on a plate to crawl around, and their motion was recorded from the top by a microscope and digital camera at 4 frames per second. A typical image looks like this: \n", "\"original\n", "\"processed \n", "On the right is the processed image where the background has been removed." ] }, { "cell_type": "markdown", "id": "6933c89e-e82b-4eb6-860a-c55fbe300f56", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "The image is 640x480 pixels, but we certainly should not need 307200 variables to describe the posture of the worm in this single frame. In fact, since the body shape of the worm is rather simple --- a round tube of rather constant width --- we may draw a center curve along the body to represent its shape in each frame. This curve can be described by an array of x and y coordinates for the points along the line. For example, we can divide the curve into 101 segments of equal length, then we can use the coordinates of the 102 endpoints to describe the curve. That amounts to 102 x 2 = 204 variables, a dramatic reduction from the number of pixels. Yet, we can still do a little better by noticing that the shape of the curve does not change if we rotate the whole image. That means we should use the relative positions of the points with respect to each other, not the absolute positions in the image. This can be done by using the angles of the segments as our variables, instead of the x-y coordinates of the endpoints. With that, we are down to 100 variables that can describe the shape of the worm in each frame. This procedure is illustrated in the figure below: \n", "\"Stephens2008_Fig1\"" ] }, { "cell_type": "markdown", "id": "04032464-9321-4e2b-9499-78a5cc952bfe", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "It has been a huge reduction of data dimensionality, from seemingly 307200 to 100. But we have chosen the number 100 just so that it is large enough for constructing a smooth curve. It does not mean that our data is really 100 dimensional. In fact, using dimensionality reduction methods, we will show that the intrinsic dimensionality of the worm shape is even much lower --- just about 4 dimensions. (Our final results will not depend on the choice of 100 here, as long as it is large enough to resolve the curve.) We will achieve this final dimensionality reduction by using \"principal component analysis\" (PCA) below." ] }, { "cell_type": "markdown", "id": "0838c71e-1afc-46f3-b9e9-86f60c4bf723", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Principal Component Analysis" ] }, { "cell_type": "markdown", "id": "ff040e99-f35c-4da4-b246-a563bace12a1", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We start from a processed dataset containing 6655 frames, each represented by a 100 dimensional vector. Thus, we have a 2d-array of shape (6655,100), where each row is one frame. Let us load the data first." ] }, { "cell_type": "code", "execution_count": 1, "id": "collectible-petite", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as anim" ] }, { "cell_type": "code", "execution_count": 2, "id": "6c6c44a2-3992-4835-882e-aefb59cd7dcd", "metadata": {}, "outputs": [], "source": [ "data = np.loadtxt('data/wormshapes.csv', delimiter=',')" ] }, { "cell_type": "code", "execution_count": 3, "id": "171b5517-5a00-4708-8b61-78334ce6970e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of data points = 6655, dimension = 100\n" ] } ], "source": [ "N = data.shape[0] # number of data points\n", "D = data.shape[1] # number of dimensions\n", "print(f'number of data points = {N}, dimension = {D}')" ] }, { "cell_type": "markdown", "id": "3cd356dc-7087-49f4-908d-fee9e7e7e145", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We can think of each data point as a point in a $D$-dimensional space, and we have $N$ such points in that space. The idea of dimensionality reduction is that maybe these points lie on a lower dimensional subspace, like a 2d plane in a 3d space. In order to find such a subspace, we need to see how much the points vary in each direction. For example, if all points lie on a plane, then there will be variations parallel to the plane but no variation in the perpendicular direction. To find such major directions of variation, we will calculate the covariance matrix of these points." ] }, { "cell_type": "markdown", "id": "448b912b-f435-43ed-be0e-ef28dcde6963", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "Let the data be denoted by $X_{ni}$, where $n = 1, \\cdots, N$ are the indices of the data points and $i = 1, \\cdots, D$ are the indices of the components. The covariance matrix is given by:\n", "\\begin{equation}\n", "C_{ij} = \\frac{1}{N} \\sum_{n=1}^{N} (X_{ni} - \\bar{X}_i) (X_{nj} - \\bar{X}_j)\n", "\\end{equation}\n", "where $\\bar{X}_i$ is the mean values of all data points given by:\n", "\\begin{equation}\n", "\\bar{X}_i = \\frac{1}{N} \\sum_{n=1}^{N} X_{ni}\n", "\\end{equation}\n", "The covariance matrix is a $(D \\times D)$ matrix, whose diagonal elements are the variance of the data points along each axis, and the off-diagonal elements are the covariance between two components." ] }, { "cell_type": "markdown", "id": "adf71514-2995-4a76-b919-8c2529b97ffb", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We can calculate the covariance matrix as follows." ] }, { "cell_type": "code", "execution_count": 4, "id": "d3776375-8355-4e47-812e-c436ab314b53", "metadata": {}, "outputs": [], "source": [ "x_mean = np.mean(data, axis=0) # mean over data points\n", "x_cent = data - x_mean # centered data\n", "cov = np.dot(x_cent.T, x_cent) / N # covariance matrix" ] }, { "cell_type": "markdown", "id": "ddc03055-9aed-4df3-9bda-773a2c8a574f", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "We can visualize the covariance matrix using a heatmap." ] }, { "cell_type": "code", "execution_count": 5, "id": "74fd1485-926b-495d-87cc-185a41755ffa", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.imshow(cov)\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "746bfb4b-8469-4f1e-813f-76febf8defc0", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "There is clear structure in the covariance matrix, which suggests that the data points have larger variation in certain directions than others. However, the largest variations may not be as simple as being along some basis axes of the $D$-dimensional space. Rather, we have the freedom to rotate the axes and find the directions of most variation. This can be done by finding the eigenvectors of the covariance matrix that have the largest eigenvalues. We can calculate the eigenvalues and eigenvectors using the `numpy.linalg.eig` function. (Note that, because the covariance matrix is real and symmetric, all eigenvalues and eigenvectors are real. This allows us to use the `eigh` function instead.)" ] }, { "cell_type": "code", "execution_count": 6, "id": "9a22da1d-b2f6-4665-b85b-c00339dc515e", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "w, v = np.linalg.eigh(cov) # find eigenvalues and eigenvectors of a real symmetric matrix\n", "\n", "sort = np.argsort(w)[::-1] # sort eigenvalues from largest to smallest\n", "w = w[sort]\n", "v = v[:,sort] # sort eigenvectors accordingly" ] }, { "cell_type": "markdown", "id": "5f82a992-f8be-4bd6-805f-b0730b453164", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "If we plot the sorted eigenvalues, we will see that their values fall off rapidly after the first few modes." ] }, { "cell_type": "code", "execution_count": 7, "id": "75fc25bf-f4ad-4432-af14-3f3bdd445b0d", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEICAYAAABYoZ8gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAa0ElEQVR4nO3de5RdZZnn8e+vTtWpW26EVGgIhEQaUBZy0RKxmXEUaBfSICxl1sigjcpMdJZNo2M3S6Z7huWanhmb6dWttrbTaURoJ6Ij0sJ4a2jEpi8YSBC5KzfFMEgqArkndXvmj71PclJWJacu++xkv7/Polads/c55312dnjOm2e/+30VEZiZWTo6yg7AzMzay4nfzCwxTvxmZolx4jczS4wTv5lZYpz4zcwSU1jil3SDpI2SHpmw/UpJT0h6VNJ1RbVvZmaT6yzws28EPgv8dWODpLcCFwGnRsRuSUtb+aAlS5bEihUriojRzKyy1q9fvykiBiZuLyzxR8Q9klZM2PwfgE9GxO78NRtb+awVK1awbt26OY7QzKzaJP1ssu3trvGfAPxLSWsl/b2kN7S5fTOz5BVZ6pmqvcXAmcAbgP8j6VUxybwRklYBqwCWL1/e1iDNzKqs3T3+DcCtkbkPGAeWTPbCiFgdEYMRMTgw8CslKjMzm6F2J/5vAG8FkHQCUAc2tTkGM7OkFVbqkXQz8BZgiaQNwLXADcAN+RDPYeDyyco8ZmZWnCJH9Vw6xa73FNWmmZkdmO/cNTNLTKUT//eeeJG/+P5TZYdhZnZQqXTiv+cnm/j83U+XHYaZ2UGl0on/8P46W3ePsnt0rOxQzMwOGpVO/Ivn1QF4eftIyZGYmR08Kp34D+/PEv8vt+8uORIzs4NHpRP/4v5uAH65bbjkSMzMDh4VT/xZj/+l7U78ZmYNlU78e0s9TvxmZg2VTvwLe7uodYiXXOM3M9uj0om/o0Mc1tflUo+ZWZNKJ37I6vy+uGtmtlcSid89fjOzvSqf+A/v73biNzNrUvnEv7i/7lE9ZmZNkkj8m3eOMDI2XnYoZmYHhcon/sMb8/XscK/fzAwKTPySbpC0MV9mceK+j0kKSZMutD6XDs+nbXCd38wsU2SP/0bgvIkbJR0DvA14rsC299gzbYOHdJqZAQUm/oi4B3hpkl1/BlwNtGWR9Uapxxd4zcwyba3xS7oIeD4iftTCa1dJWidp3dDQ0Izb9ERtZmb7alvil9QH/Cfgv7Ty+ohYHRGDETE4MDAw43YP66sjucdvZtbQzh7/ccBK4EeSfgocDTwg6deKbLTWIRb1dnmiNjOzXGe7GoqIh4Gljed58h+MiE1Ft+1pG8zM9ipyOOfNwL3AiZI2SLqiqLYO5PD+bk/UZmaWK6zHHxGXHmD/iqLanmhxf52nh7a1qzkzs4Na5e/cBVg8z6UeM7OGJBL/4f11Xt4xzPh4W24dMDM7qCWR+Bf31xkPeGXnSNmhmJmVLpnED3hIp5kZiST+xkRtHtljZpZI4ve0DWZmeyWR+D1Rm5nZXkkk/sP63OM3M2tIIvHXOzuY39PpxG9mRiKJH7Kx/C71mJkllPizido8nNPMLKHE74nazMwgocS/xPP1mJkBCSX+xpz8nq/HzFKXTOIfmN/N6Hh4vh4zS15SiR9gaKsv8JpZ2pJJ/Evn9wCwceuukiMxMytXkUsv3iBpo6RHmrb9T0lPSHpI0t9IWlRU+xMtzXv8G7e4x29maSuyx38jcN6EbXcCJ0fEKcBPgGsKbH8fjVLPRpd6zCxxhSX+iLgHeGnCtjsiYjR/+gPg6KLan6i/u5P+es01fjNLXpk1/g8A35lqp6RVktZJWjc0NDQnDS5d0OMav5klr5TEL+kPgFFgzVSviYjVETEYEYMDAwNz0u7A/G6XeswseW1P/JLeB1wAXBYRbb2bamB+N5uc+M0scW1N/JLOA64G3hERO9rZNmQje9zjN7PUFTmc82bgXuBESRskXQF8FpgP3CnpQUn/q6j2J7N0fg/bdo+yY3j0wC82M6uozqI+OCIunWTzF4pqrxUDTWP5Vywp7NDNzA5qydy5C3tv4hra5nKPmaUrrcS/wHfvmpmllfg9X4+ZWVqJf1FvF50d8t27Zpa0pBJ/R4d8E5eZJS+pxA8ey29mllziH5jfzcYtrvGbWboSTPw9bPJwTjNLWHKJf+n8bn65fZjRsfGyQzEzK0V6iX9BNxGwadtw2aGYmZUiucQ/MK+xEpfr/GaWpuQS/9IF2U1cHstvZqlKL/F77V0zS1xyiX/JPM/XY2ZpSy7x1zs7OKyvi6FtrvGbWZqSS/yQTdbmHr+ZparIFbhukLRR0iNN2xZLulPSk/nvw4pqf3+WLvC0DWaWriJ7/DcC503Y9nHgrog4Hrgrf952A/O6ParHzJJVWOKPiHuAlyZsvgi4KX98E3BxUe3vz8CCLPFHRBnNm5mVqt01/iMi4oX88S+AI9rcPpD1+IfHxtmyy4uum1l6Sru4G1l3e8out6RVktZJWjc0NDSnbfd3Zwut7xh24jez9LQ78b8o6UiA/PfGqV4YEasjYjAiBgcGBuY0iL56DYAdw2Nz+rlmZoeCdif+24HL88eXA7e1uX0AerqyxL/Tid/MElTkcM6bgXuBEyVtkHQF8EngNyU9CZybP2+7Ro9/54gTv5mlp7OVF0nqAz4GLI+Ify/peODEiPjmVO+JiEun2HXO9MOcWy71mFnKWu3xfxHYDbwpf/488EeFRNQGLvWYWcpaTfzHRcR1wAhAROwAVFhUBeurZ//Q2TniUT1mlp5WE/+wpF7y4ZeSjiP7F8AhyaUeM0tZSzV+4Frgu8AxktYAZwHvKyqoornUY2YpaynxR8Sdkh4AziQr8VwVEZsKjaxAe0b1OPGbWYJaHdXz5vzh1vz3SZIa8/EccrpqHXTVxA4P5zSzBLVa6vn9psc9wBnAeuDsOY+oTXq6au7xm1mSWi31XNj8XNIxwKeKCKhd+upO/GaWppneubsBeM1cBtJuffVOl3rMLEmt1vj/nL0zaXYApwEPFBRTW7jUY2aparXGv67p8Shwc0T8UwHxtE1fveYbuMwsSa3W+G868KsOLX31Gtt3O/GbWXr2m/glPczki6WIbC2VUwqJqg16umped9fMknSgHv8FbYmiBFmpxzV+M0vPfhN/RPysXYG0W68v7ppZoloazinpTEn3S9omaVjSmKQtRQdXpF6P4zezRLU6jv+zwKXAk0Av8O+AzxUVVDv01WvsGBkjW/PdzCwdLd/AFRFPAbWIGIuILwLnzbRRSR+V9KikRyTdLKlnpp81U71dNcbGg5ExJ34zS0uriX+HpDrwoKTrJH10Gu/dh6RlwO8CgxFxMlAD3j2Tz5qN3sZiLC73mFliWk3e781f+zvAduAY4F2zaLcT6JXUCfQB/28WnzUjexZj8U1cZpaYVu/cfT3wrYjYAnxiNg1GxPOS/gR4DtgJ3BERd0x8naRVwCqA5cuXz6bJSfV6MRYzS1SrPf4LgZ9I+pKkC/Ke+oxIOgy4CFgJHAX0S3rPxNdFxOqIGIyIwYGBgZk2N6VeL79oZolqKfFHxPuBXwe+Rja652lJ18+wzXOBZyNiKCJGgFuB35jhZ83YnlW4fBOXmSWm5Z57RIxI+g7ZFA69wMVkwzqn6zngTEl9ZKWec9h3Eri2cKnHzFLV6g1cb5d0I9k4/ncB1wO/NpMGI2ItcAvZtM4P5zGsnslnzYZLPWaWqlZ7/L8NfBX4YETMemaziLgWuHa2nzMbfY3hnB7VY2aJaXVa5kuLDqTd9pZ6xkuOxMysvVot9bxT0pOSNkvaImlrFebqAdgx7B6/maWl1VLPdcCFEfF4kcG0055RPa7xm1liWh3H/2KVkj5AV62Dzg55OKeZJaflNXclfRX4BrDn4m5E3FpEUO3SW695VI+ZJafVxL8A2AG8rWlbkN18dcjyYixmlqJWR/W8v+hAyuDlF80sRa2O6jlB0l2SHsmfnyLpD4sNrXi99U6XeswsOa1e3P0r4BpgBCAiHqKEOfTnWm9Xh2/gMrPktJr4+yLivgnbDvmM2VfvdI3fzJLTauLfJOk4sgu6SLoEeKGwqNrEo3rMLEWtjur5MNlEaq+W9DzwLPArc+gfanq7fHHXzNLT6qieZ4BzJfUDHRGxtdiw2qOv7uGcZpaelhK/pP844TnAZmB9RDw492G1R68Tv5klqNUa/yDwIWBZ/vNB4DzgryRdXVBshevtqrFjZIyIKDsUM7O2abXGfzTwuojYBiDpWuBbwJuB9WSTuB1y+uo1xsaDkbGg3qmywzEza4tWe/xLaZqjh2w8/xERsXPC9kNKb2MxFpd7zCwhrfb41wBrJd2WP78Q+HJ+sfex6TYqaRHZ8o0nkw0R/UBE3Dvdz5mtPYuxjIyxkK52N29mVopWR/X813yh9bPyTR+KiMYC6ZfNoN1PA9+NiEsk1YG+GXzGrPV5MRYzS9B+E7+kBRGxRdJi4Jn8p7FvcUS8NN0GJS0kuzbwPoCIGAaGp/s5c8ELrptZig7U4/8ycAHZBdzmoS/Kn79qBm2uBIaAL0o6Nf/sqyJie/OLJK0CVgEsX758Bs0cWKPUs8s3cZlZQvZ7cTciLsgfHgdcC9wYEa8C/hUw0wXYO4HXAZ+PiNOB7cDHJ2l7dUQMRsTgwMDADJvavz73+M0sQa2O6vkccCZ7k/1W4LMzbHMDsCEi1ubPbyH7Imi7ni4nfjNLT6uJ/40R8WFgF0BEvAzUZ9JgRPwC+LmkE/NN5zCDkUFzodHjd6nHzFLS6nDOEUk19s7OOQCMz6LdK4E1+YieZ4BSVvjqy8fxu8dvZilpNfF/BvgbYKmk/wZcAsx4Ba58fp/Bmb5/rvR2eTinmaWn1XH8ayStJyvLCLg4Ih4vNLI26HWpx8wS1GqPn4h4AniiwFjart7ZQWeHXOoxs6S0enG3snq7vAqXmaXFib9ec6nHzJKSfOLv87q7ZpaY5BN/j0s9ZpaY5BN/n0s9ZpYYJ/56p8fxm1lSkk/8LvWYWWqST/wu9ZhZapz4ParHzBKTfOLv6ap5sXUzS0ryib+vXmOnSz1mlpDkE39vV43R8WB4dDazTJuZHTqc+PMZOl3uMbNUJJ/4G4uxuNxjZqkoLfFLqkn6oaRvlhUDQH931uPftts3cZlZGsrs8V8FlL6Yy4LeLgA27xwpORIzs/YoJfFLOhr4LeD6MtpvtjBP/Fuc+M0sEWX1+D8FXM3sFmyfE4vyxP/KzuGSIzEza4+2J35JFwAbI2L9AV63StI6SeuGhoYKi2dRXx2AzTvc4zezNJTR4z8LeIeknwJfAc6W9L8nvigiVkfEYEQMDgwMFBbMgp5sVM8rLvWYWSLanvgj4pqIODoiVgDvBr4XEe9pdxwNnbUO5nd38op7/GaWiOTH8UM2sscXd80sFZ1lNh4R3we+X2YMAIv6ulzqMbNkuMdPlvg9jt/MUuHETzaW/5UdHs5pZmlw4gcW9tbZvNNTNphZGpz4yXr8m3cOExFlh2JmVjgnfrIa/8hYeAlGM0uCEz975+vxBV4zS4ETP03z9fgmLjNLgBM/sLDPPX4zS4cTP82lHg/pNLPqc+KnaYZO9/jNLAFO/Ozt8bvGb2YpcOIH+us1Ojvk+XrMLAlO/IAkz9djZslw4s8t6O3yKlxmlgQn/tyiXvf4zSwNTvy5hb1dXnDdzJLgxJ9b1Fd3j9/MktD2xC/pGEl3S3pM0qOSrmp3DJPJ5uR34jez6itj6cVR4GMR8YCk+cB6SXdGxGMlxLLHwt4utu4aZWw8qHWozFDMzArV9h5/RLwQEQ/kj7cCjwPL2h3HRIvy+Xq86LqZVV2pNX5JK4DTgbWT7FslaZ2kdUNDQ4XHsufuXSd+M6u40hK/pHnA14GPRMSWifsjYnVEDEbE4MDAQOHxLPIMnWaWiFISv6QusqS/JiJuLSOGifbO1+MhnWZWbWWM6hHwBeDxiPjTdrc/lYW9nqHTzNJQRo//LOC9wNmSHsx/zi8hjn241GNmqWj7cM6I+EfgoBsv6amZzSwVvnM311XroL9ec4/fzCrPib+J7941sxQ48TdZ6Pl6zCwBTvxNsqmZPZzTzKrNib+JSz1mlgIn/iZeftHMUuDE3yRbjMWJ38yqzYm/ycK+LoZHx9k1MlZ2KGZmhXHib+KbuMwsBU78TRbl8/V47V0zqzIn/iYrl/QDcN+zL5UciZlZcZz4m5x01AJOXraANT94jogoOxwzs0I48U9w2RuP5ccvbuWB514uOxQzs0I48U/wjlOPYl53J2vWPld2KGZmhXDin6C/u5OLTz+Kbz30glfjMrNKcuKfxL8941h2j47z9QeeLzsUM7M558Q/iZOOWsBpxyziy2t/5ou8ZlY5ZS22fp6kH0t6StLHy4jhQC5743KeHtrOB7+0nu//eCNj4/4CMLNqaPvSi5JqwOeA3wQ2APdLuj0iHmt3LPtz8enLeHbTdr5y/8+547EXOXJhD6ccvZBjD+9n+eI+FvfXmd/TyfyeLro7O+iqddBVEx0SHR2iQ6B8hUkp+6lJ1Dqy/XseK39t028zsyK1PfEDZwBPRcQzAJK+AlwEHFSJv6vWwdXnvZqPnHsCf/f4i9z24PM8tXEbd/94iOHR8cLb3+fLAJH/l32JIBrfD42vCUl792vv/v2ZyVfMdL+YptvGzL735ubLcrptz+VX9Gy+7zVFJFN95v6amk3Ho/mtU7ddfKwtHcEc/f8xlx21qT7pv7/ztbxhxeI5awfKSfzLgJ83Pd8AvHHiiyStAlYBLF++vD2RTaLe2cH5rz2S8197JADj48GLW3fxyo4Rtu4aZeuuEYZHxxkZD0ZGxxmLgCD7DWRPg/HI3js2HoxH9nssgvHxIIJsfwSRv2k8f19jX5B9bsCe6w6Nyw/R1E4ELV2XmEnharqXO2KarczkcspcFeCm3/bclf5mcxlpqvdO9We/v7am2tVKfPu0N2VMU33+FLHur71pttFKe9P9nDn8K7Df/1d6u2pz11CujMTfkohYDawGGBwcPGgK7B0d4siFvRy5sLfsUMzMZqSMi7vPA8c0PT8632ZmZm1QRuK/Hzhe0kpJdeDdwO0lxGFmlqS2l3oiYlTS7wB/C9SAGyLi0XbHYWaWqlJq/BHxbeDbZbRtZpY637lrZpYYJ34zs8Q48ZuZJcaJ38wsMToUZp+UNAT8bIZvXwJsmsNwDhUpHneKxwxpHneKxwzTP+5jI2Jg4sZDIvHPhqR1ETFYdhztluJxp3jMkOZxp3jMMHfH7VKPmVlinPjNzBKTQuJfXXYAJUnxuFM8ZkjzuFM8Zpij4658jd/MzPaVQo/fzMyaVDrxHwpr+86WpGMk3S3pMUmPSroq375Y0p2Snsx/H1Z2rHNNUk3SDyV9M3++UtLa/Hx/NZ/9tVIkLZJ0i6QnJD0u6U1VP9eSPpr/3X5E0s2Seqp4riXdIGmjpEeatk16bpX5TH78D0l63XTaqmzib1rb9+3AScClkk4qN6pCjAIfi4iTgDOBD+fH+XHgrog4Hrgrf141VwGPNz3/Y+DPIuLXgZeBK0qJqlifBr4bEa8GTiU7/sqea0nLgN8FBiPiZLIZfd9NNc/1jcB5E7ZNdW7fDhyf/6wCPj+dhiqb+Gla2zcihoHG2r6VEhEvRMQD+eOtZIlgGdmx3pS/7Cbg4lICLIiko4HfAq7Pnws4G7glf0kVj3kh8GbgCwARMRwRr1Dxc002i3CvpE6gD3iBCp7riLgHeGnC5qnO7UXAX0fmB8AiSUe22laVE/9ka/suKymWtpC0AjgdWAscEREv5Lt+ARxRVlwF+RRwNTCePz8ceCUiRvPnVTzfK4Eh4It5iet6Sf1U+FxHxPPAnwDPkSX8zcB6qn+uG6Y6t7PKb1VO/EmRNA/4OvCRiNjSvC+yoVuVGb4l6QJgY0SsLzuWNusEXgd8PiJOB7YzoaxTwXN9GFnvdiVwFNDPr5ZDkjCX57bKiT+ZtX0ldZEl/TURcWu++cXGP/3y3xvLiq8AZwHvkPRTshLe2WS170V5OQCqeb43ABsiYm3+/BayL4Iqn+tzgWcjYigiRoBbyc5/1c91w1Tndlb5rcqJP4m1ffPa9heAxyPiT5t23Q5cnj++HLit3bEVJSKuiYijI2IF2Xn9XkRcBtwNXJK/rFLHDBARvwB+LunEfNM5wGNU+FyTlXjOlNSX/11vHHOlz3WTqc7t7cBv56N7zgQ2N5WEDiwiKvsDnA/8BHga+IOy4ynoGP8F2T//HgIezH/OJ6t53wU8CfwdsLjsWAs6/rcA38wfvwq4D3gK+BrQXXZ8BRzvacC6/Hx/Azis6uca+ATwBPAI8CWgu4rnGriZ7DrGCNm/7q6Y6twCIhu1+DTwMNmop5bb8p27ZmaJqXKpx8zMJuHEb2aWGCd+M7PEOPGbmSXGid/MLDFO/JYMSd+WtKjsOPZH0rayY7Dq83BOs4OIpG0RMa/sOKza3OO3SpL0Hkn3SXpQ0l/mc/f/VNKSfP9/ztdq+Md8jvffy7cfJ+m7ktZL+gdJr86335jPf/7Pkp6RdEm+/S2S/l7Sbfn2T0q6LG/7YUnH5a9bIel7+dzpd0lanm9fKene/LV/NOEYfl/S/fl7PtHOPz+rNid+qxxJrwH+DXBWRJwGjAGXNe1/A/Ausvns3w4MNr19NXBlRLwe+D3gL5r2HUl2p/QFwCebtp8KfAh4DfBe4ISIOINsyugr89f8OXBTRJwCrAE+k2//NNmka68lu2uzEePbyOZaP4Psbt3XS3rz9P80zH5V54FfYnbIOQd4PXB/Nr0Lvew7cdlZwG0RsQvYJen/wp4ZTn8D+Fr+PsimB2j4RkSMA49Jap76+P7I50mR9DRwR779YeCt+eM3Ae/MH38JuK4plnc1bf/j/PHb8p8f5s/nkX0R3NPaH4HZ1Jz4rYpE1ru+Zp+N0vsO8L4OsnneT5ti/+4JbUy2fbzp+Tit/T822YU2Af8jIv6yhfebTYtLPVZFdwGXSFoKe9YtPbZp/z8BFypbu3UeWemGyNYxeFbSv87fJ0mnzlFM/0w2kyhkZad/aIqleXvD3wIfyOND0rLG8ZjNlhO/VU5EPAb8IXCHpIeAO8nq843995NNa/sQ8B2ykszmfPdlwBWSfgQ8ytwt13kl8P48nveSrRdM/vvDkh6maQWliLgD+DJwb77vFmD+HMViifNwTkuSpHkRsU1SH1ndfFXkaxebVZ1r/Jaq1ZJOAnrIrgc46Vsy3OM3M0uMa/xmZolx4jczS4wTv5lZYpz4zcwS48RvZpYYJ34zs8T8f+wuUY5P4SiMAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(w)\n", "plt.xlabel('eigenmode')\n", "plt.ylabel('eigenvalue')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "85acd139-4e6d-4914-a5e0-c5fe1d8f5de2", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "This prompts us to keep only the first few modes, or \"principal components\" (PC). To help us decide how many principal components we need to keep, we normalize the eigenvalues by their sum. The normalized eigenvalues represent the fraction of the total variance in the data that is captured by each mode. Let us plot the cumulative sum of these fractions to see how much variance is captured by the first few components." ] }, { "cell_type": "code", "execution_count": 8, "id": "c9486a77-7c70-4b2f-ac15-b557f72e366a", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "w = w / np.sum(w) # normalized eigenvalues = variance along each principal component\n", "wsum = np.cumsum(w) # cumulative sum of normalized eigenvalues = variance captured\n", "\n", "plt.figure(figsize=(4,4))\n", "plt.plot(np.arange(1,9), wsum[:8], 'o-')\n", "plt.ylim(0, 1)\n", "plt.xticks(np.arange(1,9))\n", "plt.xlabel('# principal components', fontsize=16)\n", "plt.ylabel('cumulative variance', fontsize=16)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "77ddcba6-09d9-469c-b840-2d5ed8147856", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Apparently, the first 4 principal components already capture >96% of the variance present in the data. It means that we can safely ignore the rest of the eigenmodes without sacrificing much accuracy of our description of the data. Therefore, we can use these 4 principal components to form a reduced description of the worm shapes --- from 100 to 4 dimensions! (The choice of 4 here is also not unique; depending on the use of the data, we may be satisfied with less if we do not require high accuracy, or we may take a few more if we need more details.)" ] }, { "cell_type": "markdown", "id": "55ffa653-cee7-4c17-8de7-f10045ae05f9", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Let us plot these 4 principal components. They are represented by the corresponding eigenvectors (already normalized by default)." ] }, { "cell_type": "code", "execution_count": 9, "id": "a4140601-8718-43bf-a25e-f5de6c51cd9f", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "K = 4 # number of principal components to use\n", "PC = v[:,:K] # eigenvectors for these PCs; each column is one PC\n", "\n", "fig, ax = plt.subplots(1,K, figsize=(5*K,4))\n", "for i in range(K):\n", " ax[i].plot(PC[:,i])\n", " ax[i].set_title(f'PC{i+1}')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "c59a0753-a929-49a3-9a4a-48e241ecd757", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Remember that these are vectors in a 100-dimensional space of the angles of consecutive segments along the worm body. We can use them as new basis vectors to decompose any shape of the worm (represented by a 100-dimensional vector of angles) into components. That is, the shape of the worm can be described by a linear combination of these \"eigenworms\"." ] }, { "cell_type": "markdown", "id": "6f2d718e-7599-4815-b471-d1b345c5b68d", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "To visualize the shape of these eigenworms, we need to convert from angles of consecutive segments back to positions of the endpoints. This is done by the following function." ] }, { "cell_type": "code", "execution_count": 10, "id": "cff41648-9285-440d-bf03-e119cb6305ea", "metadata": {}, "outputs": [], "source": [ "def angle2pos(angles):\n", " \"\"\"\n", " convert from angles of consecutive segments of unit length to positions of their endpoints.\n", " inputs:\n", " angles: 1-d array, angles of consecutive segments.\n", " outputs:\n", " pos: 2-d array, each row is (x,y) coordinates of an endpoint, centered at zeros.\n", " \"\"\"\n", " dx = np.cos(angles)\n", " dy = np.sin(angles)\n", " xsum = np.cumsum(dx)\n", " ysum = np.cumsum(dy)\n", " pos = np.zeros((D+1, 2))\n", " pos[1:,0] = xsum\n", " pos[1:,1] = ysum\n", " mean = np.mean(pos, axis=0)\n", " pos = pos - mean\n", " return pos" ] }, { "cell_type": "markdown", "id": "8937a1ec-4a39-41ba-9ccd-0a8bf699d7f3", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We can now plot the eigenworms. To see appreciable shapes, we will multiply each mode by an amplitude, set to 5." ] }, { "cell_type": "code", "execution_count": 11, "id": "1511c63f-aff8-40f0-a4c0-890b080a98e9", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pos_all = []\n", "for i in range(K):\n", " pos = angle2pos(PC[:,i]*5) # convert PC (with amplitude 5) to positions\n", " pos_all.append(pos)\n", "\n", "fig, ax = plt.subplots(1,K, figsize=(5*K,4))\n", "for i in range(K):\n", " pos = pos_all[i]\n", " ax[i].plot(pos[:,0], pos[:,1], '.-')\n", " ax[i].set_aspect('equal')\n", " ax[i].axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "579516bf-bd30-49f2-a640-1b61d3404da4", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Reconstructing data" ] }, { "cell_type": "markdown", "id": "d3503648-899b-4e3c-93bb-7cccab948d2f", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "The ultimate test of our dimensionality reduction is to see if we can recover the original shapes of the worm using only those principal components. In other words, we will try to reconstruct the data from only the projections onto the principal components. Let the principal components be denoted by a matrix $v_{ik}$, where each column $k$ represents the $k$-th principal component. Then the projections of the original data are given by\n", "\\begin{equation}\n", "Y_{nk} = \\sum_{i=1}^N X_{ni} v_{ik}\n", "\\end{equation}\n", "We can reconstruct the data from these projections using\n", "\\begin{equation}\n", "\\hat{X}_{ni} = \\sum_{k=1}^K Y_{nk} v_{ik}\n", "\\end{equation}\n", "Note that here the sum is only over the first $K$ components. If we had summed over all components ($k = 1, \\cdots, D$), then we should fully recover the original data, because in that case we simply did a coordinate transformation without any reduction of dimensions. Therefore, the dimensionality reduction that we have achieved is from $D$ to $K$ dimensions." ] }, { "cell_type": "markdown", "id": "147c010d-85e1-4b95-9046-9359f5059638", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Let us calculate the projected data onto the principal components and the reconstructed data from those projections." ] }, { "cell_type": "code", "execution_count": 12, "id": "e5d5aefa-fa06-4f7c-993b-115249884049", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "x_project = np.dot(x_cent, PC) # project (centered) data onto principal components\n", "x_reconstruct = np.dot(x_project, PC.T) + x_mean # reconstruct data from the projections" ] }, { "cell_type": "markdown", "id": "a461609c-e8be-4195-a111-afa90f90c663", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We can plot the original and the reconstructed shape of a worm on top of each other." ] }, { "cell_type": "code", "execution_count": 13, "id": "8a59cce6-f762-4b22-b259-efa8848267d3", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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kEi4z1/4b+NBNDdSb+pEa5kf9rQp8Z8Aard9TQnsM+PkK84JwiPcnQB+21bDdb9gn04VhU+9G/iy1gE13kNAKUTrHA5pLb72sbi/NAg+Jjp4TW7wHHp7Hwgx4NqpBdTdzvb82g2PY7cU9aIFard94d7TKKXrTdOAwHpjoHzPGGzFWwNgJdrYcDl27qanAbzZXxzS/xDwJ8SKc95r1nYVa4u4tknmPTvJ5xvAdV+7hT9nNaO1uH7QvwMwBB4nezih4z1jkLWtC7iGK6vQBuKNnbspI1UU5k3RP9aG6p/XHnN1nUkkr+rC9TwZa9uldrRA7ckecJ1EUHtsT0rgKnSsbUPxvvnCE890Rdmro/U9t2ke266GhCxH6D/DRcUMxtr2qR8t4HO47HnMzite5fYyr3rhsafvFMUz7tcOJtpgALhuR9MVANkMtn1oG9FaGoj32okZmZ7x+v1e5j0vpr/SXzsy13uqnOssGnA43A61rWgtjY/XzJf2HQDm+124rucw3ZT4uSbcU1/ktfmr52T4B005i4bajrYZraXx8Rr50j6taOGI1j+O6VrmZ6XEz+HeRreW2YCGnWafr4tk9OtNPYuG2o62Ha2lbryBUkL4iFfuNpM+bJXJCNcON4RIibnwitUEYELHn5wj8p59+Z1Bt3TZyO+0j2gtHvFKiUB4TEwAXDus1hmZxm6zz0e3ZBqga3mmuJfJBnifq+oaCq81MuUHRsbVfTI+y++G8XTLta9oLe54DSmmCEibdU4qcG0YusXob56S3f4er31bcjPnifr4voMAfA/gYQBZ8DhM5ZqKqLunImruWAfW7JN2ZQ9TUctrn9Fa3Ocz3y5KRmmQuvcVB6/NKNKw3ehn7JNxr5UjpFMDp8L5OnMmCq4RbhaAbMB9NQBcv1a9igAsqHkS4aLC/D/T4WSs5Ev7jtZST7zes0CsiK1PefxbClF7WRRrdsd18zN9X9WwdghsHYoyAOwAsICxki+M1pNHvAJS95wN0tB1rjzd6LpZ3nMqPWIFrl2jya+PHVPrYrS+uC+nk2/26na3OBHeRzt5nwZTq4FNA66/JlbjrgF8LdKvzNjaidXuKyZ4zhThcJgaxGgbw70DaZVzaEmBvDPVus5VFYLuK5OhWhdRqXlc4QAA6lx+xPPqBz4i5RUnqUkY7U1o4HpGvuZeMlJqEYy2Bdxo8jUYKbUgRkukGP5RaSLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsUwWiLFMFoixTBaIsX8Pzq49MBC2nKzAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pos_original = angle2pos(data[0,:]) # original data from one frame\n", "pos_reconstruct = angle2pos(x_reconstruct[0,:]) # reconstructed data\n", "\n", "plt.figure(figsize=(4,4))\n", "plt.plot(pos_original[:,0], pos_original[:,1], '.-', label='original')\n", "plt.plot(pos_reconstruct[:,0], pos_reconstruct[:,1], '.-', label='reconstructed')\n", "plt.xlim(-50, 50)\n", "plt.ylim(-50, 50)\n", "plt.legend()\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "ad522b74-146b-41d1-a301-a04c537c4743", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "It looks like our reconstruction is very faithful to the original shape. The small discrepancies are due to our ignoring the \"higher order\" modes in the decomposition. Nevertheless, the reduced description is much more concise (and space-saving and fast-to-process on computers), and hopefully accurate enough for further studies on the worm behavior (as [Stephens et al.](https://doi.org/10.1371/journal.pcbi.1000028) show in their research paper; they also show that these principal components have intuitive biological interpretations)." ] }, { "cell_type": "markdown", "id": "5ea67947-89b0-4df0-9d14-8733d7ad790c", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "To have a bit more fun, we can make a video of the worm's movements using both the original and reconstructed data." ] }, { "cell_type": "code", "execution_count": 14, "id": "7c1d6c55-ef91-45b1-8b8e-f28f1c280526", "metadata": {}, "outputs": [], "source": [ "plt.rcParams[\"animation.html\"] = \"jshtml\"\n", "fig, ax = plt.subplots(figsize=(4,4))\n", "ax.set_xlim(-50, 50)\n", "ax.set_ylim(-50, 50)\n", "ax.axis('off')\n", "p0, = ax.plot([], [], '.')\n", "p1, = ax.plot([], [], '.')\n", "\n", "def animate(t):\n", " pos_original = angle2pos(data[t,:])\n", " pos_reconstruct = angle2pos(x_reconstruct[t,:])\n", " p0.set_data(pos_original[:,0], pos_original[:,1])\n", " p1.set_data(pos_reconstruct[:,0], pos_reconstruct[:,1])\n", "\n", "mov = anim.FuncAnimation(fig, animate, frames=range(27,87), interval=250)\n", "# mov.save('figures/eigenworms.mp4', fps=4, extra_args=['-vcodec', 'libx264'])\n", "plt.close()" ] }, { "cell_type": "code", "execution_count": 15, "id": "28e7ec1d-17d8-4050-a2e7-7a10164f12d0", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mov" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }