{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Similarity Scoring Demo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zebra finch song is learned by imitating the song of an adult tutor. We can measure pupil bird's song learning success by comparing its song to its tutor's song, with higher similarity indicating better learning. \n", "\n", "AVN's similarity scoring module works by calculating 8-dimensional representations (or *embeddings*) of syllables from different birds, then calculating the distance between the two birds' syllable distributions. The embeddings are generated by feeding spectrograms of segmented syllables to a trained neural network that embeds similar syllables close together and dissimilar syllables far apart. We've shown that this model generalizes to zebra finches across multiple colonies and recording setups, so there should be no need for you to retrain the model. Just feed it your spectrograms and get scoring! \n", "\n", "The more syllables from each bird, the more reliable the scores you will obtain. Generally, we recommend at least 1000 total syllables from each bird (about 100 bouts), but more is better." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before you can use this similarity scoring module, you must install some extra dependencies. We strongly recommend using virtual environments when working with any python code, including AVN. See [here](https://docs.anaconda.com/free/navigator/getting-started/) for more information. \n", "\n", "In the virtual environment where you previously installed AVN, install pytorch according to your system requirements, as explained [here](https://pytorch.org/get-started/locally/). \n", "\n", "Next, you will need to install the package that we use for EMD calculations. That can be done by running this command from a command prompt with your virtual environment activated: \n", "```\n", "pip install -e git+https://github.com/theresekoch/pyemd.git#egg=emd\n", "```\n", "Once you've done that you should be all set! If you run into any issues installing these dependencies, please reach out via [email](mailto:therese.koch1@gmail.com) or through github. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\tkoch\\anaconda3\\envs\\fresh_avn_dev\\lib\\site-packages\\scipy\\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3\n", " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n" ] } ], "source": [ "import avn.similarity as similarity\n", "import pandas as pd\n", "\n", "from sklearn.decomposition import PCA\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare Spectrograms " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we can calculate the embedding coordinates, we need to generate spectrograms of each segmented syllable in a way that is compatible with our embedding model. This is done by calling the function `similarity.prep_spects(Bird_ID, segmentations, song_folder_path, out_dir)`, where: \n", "\n", "- `Bird_ID` is the ID of the subject bird, \n", "- `segmentations` is a pandas dataframe of syllable segmentations, with one row per syllable, and columns called :\n", " - 'files' : the name of the .wav file in which a syllable is found, \n", " - 'onsets' : the onset of the syllable within the .wav file in seconds, and \n", " - 'offsets': the offset of the syllable within the .wav file in seconds. \n", " - We recommend using [WhisperSeg](https://github.com/nianlonggu/WhisperSeg) to automatically segment song syllables and generate this type of table.\n", "- `song_folder_path` is the path to the folder containing all the wav files from `segmentations`. \n", "- `out_dir` is the path to the folder where you want the generated spectrograms to be saved. \n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
filesonsetsoffsetslabels
0G402_43362.23322048_9_19_6_28_42.wav0.1660090.225170i
1G402_43362.23322048_9_19_6_28_42.wav0.3210430.385828i
2G402_43362.23322048_9_19_6_28_42.wav0.5702950.626757i
3G402_43362.23322048_9_19_6_28_42.wav0.6903630.751837i
4G402_43362.23322048_9_19_6_28_42.wav0.8283900.898912i
\n", "
" ], "text/plain": [ " files onsets offsets labels\n", "0 G402_43362.23322048_9_19_6_28_42.wav 0.166009 0.225170 i\n", "1 G402_43362.23322048_9_19_6_28_42.wav 0.321043 0.385828 i\n", "2 G402_43362.23322048_9_19_6_28_42.wav 0.570295 0.626757 i\n", "3 G402_43362.23322048_9_19_6_28_42.wav 0.690363 0.751837 i\n", "4 G402_43362.23322048_9_19_6_28_42.wav 0.828390 0.898912 i" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Bird_ID = 'G402'\n", "segmentations = pd.read_csv('../sample_data/G402_syll_df.csv')\n", "segmentations.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*This bird's segmentation table also has syllable labels, but these aren't necessary and won't impact the embeddings or similarity scores.* " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "song_folder_path = '../sample_data/G402/'\n", "out_dir = '../sample_data/G402_embedding_spectrograms/'" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "594 syllable spectrograms saved in ../sample_data/G402_embedding_spectrograms/\n" ] } ], "source": [ "similarity.prep_spects(Bird_ID=Bird_ID, segmentations=segmentations, song_folder_path=song_folder_path, out_dir=out_dir)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculate Embeddings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have spectrograms for all our syllables, we need to load the embedding model and use it to generate embeddings of our syllables. You can load the model by calling `similarity.load_model()`. This function will check if your device has a cuda GPU, and if it does it will prepare the model to run on the GPU. Otherwise it will run on CPU. If you want to override this and have it run on CPU regardless of GPU availability, you can specify the parameter `device = 'cpu'`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Device set to: cuda\n" ] } ], "source": [ "model = similarity.load_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have the model, we can calculate the embeddings of all the syllables that we prepared before by running `similarity.calc_embeddings()`. This function takes the following parameters as input: \n", "- `Bird_ID`: The ID of the bird to be processed, \n", "- `spectrograms_dir` : The path to the directory where you saved the prepared spectrograms, \n", "- `model`: The model object that you just loaded with `similarity.load_model()`" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(594, 8)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "embeddings_G402 = similarity.calc_embeddings(Bird_ID = 'G402', \n", " spectrograms_dir='../sample_data/G402_embedding_spectrograms/', \n", " model = model)\n", "embeddings_G402.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This created a matrix with one row per syllable and one column per dimension in the embedding space. Let's take a peak at the distribution by plotting the syllables with respect to the first two principal components of the embedding space: " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pca = PCA(n_components=2)\n", "embeddings_PCs = pca.fit_transform(embeddings_G402)\n", "plt.scatter(embeddings_PCs[:, 0], embeddings_PCs[:, 1], s = 5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, the points seem to be forming four major clusters, which roughly correspond to different syllable types in the bird's song. These clusters would be denser and more obvious if we included more renditions in the embedding, but we've kept this example dataset small for the sake of speed and memory. Normally, we would recommend including at least 100 song bouts in a bird's embedding to get the most reliable EMD dissimilarity scores. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compare song sets with EMD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we need to calculate the embeddings of a different bird to compare G402 against. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "709 syllable spectrograms saved in ../sample_data/R402_embedding_spectrograms/\n" ] } ], "source": [ "Bird_ID = 'R402'\n", "segmentations = pd.read_csv('../sample_data/R402_syll_df.csv')\n", "song_folder_path = '../sample_data/R402/'\n", "out_dir = '../sample_data/R402_embedding_spectrograms/'\n", "\n", "similarity.prep_spects(Bird_ID=Bird_ID, segmentations=segmentations, song_folder_path=song_folder_path, out_dir=out_dir)\n", "\n", "embeddings_R402 = similarity.calc_embeddings(Bird_ID = 'R402', spectrograms_dir='../sample_data/R402_embedding_spectrograms/', \n", " model = model)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see how similar these distributions are with PCA: " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pca = PCA(n_components=2)\n", "pca.fit(np.concatenate((embeddings_G402, embeddings_R402)))\n", "embedding_PCs_R402 = pca.transform(embeddings_R402)\n", "embedding_PCs_G402 = pca.transform(embeddings_G402)\n", "plt.scatter(embedding_PCs_G402[:, 0], embedding_PCs_G402[:, 1], s = 5, label = 'G402', alpha = 0.5)\n", "plt.scatter(embedding_PCs_R402[:, 0], embedding_PCs_R402[:, 1], s = 5, label = 'R402', alpha = 0.5)\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this plot you can see that birds R402 and G402's syllables have a good deal of overlap, which is to be expected as these two birds are siblings and share the same song tutor. Let's quantify how similar they are by calculating the Earth Mover's Distance (EMD) between their distributions. The EMD is a distance measure that is proportional to the amount of work required to move all points in one distribution so that they match the other. The minimum possible EMD score is 0 for identical distributions. Within the confines of our embedding space, the maximum possible score is 1.41. Typically, tutor-pupil pairs will have score around 0.65 and unrelated birds will have scores around 0.85. \n", "\n", "NOTE: Be sure to use the full 8-dimensional embeddings for this. The principal components are just to help us visualize the distributions. " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5505167521371936" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "emd = similarity.calc_emd(embeddings_G402, embeddings_R402)\n", "emd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is a pretty low EMD score! In line with what we would expect for a comparison between a pupil and a tutor, or for very similar siblings (which these are). Nevertheless, we'll see that two subsets of syllables from the same bird are still even more similar to each other, as indicated by an even lower EMD score. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.26336149496618055" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "emd = similarity.calc_emd(embeddings_R402[:350], embeddings_R402[350:])\n", "emd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a thorough validation of this similarity scoring method, and to understand the range of similarity scores we would expect for different types of comparisons and learning outcomes, please see our preprint: *Coming Soon!*" ] } ], "metadata": { "kernelspec": { "display_name": "avn_dev", "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.19" } }, "nbformat": 4, "nbformat_minor": 2 }