lucasmiranda42/deepof

View on GitHub
docs/build/html/tutorial_notebooks/deepof_unsupervised_tutorial.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Unsupervised annotation in DeepOF - exploring the behavioral space &mdash; deepof 0.6.2 documentation</title>
      <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
      <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
      <link rel="stylesheet" href="../_static/jupyter-sphinx.css" type="text/css" />
      <link rel="stylesheet" href="../_static/thebelab.css" type="text/css" />
      <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
    <link rel="shortcut icon" href="../_static/deepof.ico"/>
  <!--[if lt IE 9]>
    <script src="../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
        <script src="../_static/jquery.js"></script>
        <script src="../_static/underscore.js"></script>
        <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
        <script src="../_static/doctools.js"></script>
        <script src="../_static/sphinx_highlight.js"></script>
        <script src="../_static/thebelab-helper.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@^1.0.1/dist/embed-amd.js"></script>
        <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
        <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
        <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
    <script src="../_static/js/theme.js"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" /> 
</head>

<body class="wy-body-for-nav"> 
  <div class="wy-grid-for-nav">
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >

          
          
          <a href="../index.html">
            
              <img src="../_static/deepof_sidebar.ico" class="logo" alt="Logo"/>
          </a>
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
              <!-- Local TOC -->
              <div class="local-toc"><ul>
<li><a class="reference internal" href="#">Unsupervised annotation in DeepOF - exploring the behavioral space</a><ul>
<li><a class="reference internal" href="#what-we’ll-cover:">what we’ll cover:</a><ul>
<li><a class="reference internal" href="#Brief-introduction-to-unsupervised-analysis">Brief introduction to unsupervised analysis</a></li>
<li><a class="reference internal" href="#Load-your-previous-project">Load your previous project</a></li>
<li><a class="reference internal" href="#Processing-time-series-for-unsupervised-learning">Processing time series for unsupervised learning</a></li>
<li><a class="reference internal" href="#Embedding-our-data-with-deep-clustering-models">Embedding our data with deep clustering models</a></li>
<li><a class="reference internal" href="#Visualizing-temporal-and-global-embeddings">Visualizing temporal and global embeddings</a></li>
<li><a class="reference internal" href="#Generating-Gantt-charts-with-all-clusters">Generating Gantt charts with all clusters</a></li>
<li><a class="reference internal" href="#Global-separation-dynamics">Global separation dynamics</a></li>
<li><a class="reference internal" href="#Exploring-cluster-enrichment-across-conditions">Exploring cluster enrichment across conditions</a></li>
<li><a class="reference internal" href="#Exploring-cluster-dynamics-across-conditions">Exploring cluster dynamics across conditions</a></li>
<li><a class="reference internal" href="#Interpreting-clusters-using-SHAP">Interpreting clusters using SHAP</a></li>
<li><a class="reference internal" href="#Exporting-cluster-video-snippets">Exporting cluster video snippets</a></li>
<li><a class="reference internal" href="#Wrapping-up">Wrapping up</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../index.html">deepof</a>
      </nav>

      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
      <li class="breadcrumb-item active">Unsupervised annotation in DeepOF - exploring the behavioral space</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../_sources/tutorial_notebooks/deepof_unsupervised_tutorial.ipynb.txt" rel="nofollow"> View page source</a>
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
             
  
<style>
/* CSS for nbsphinx extension */

/* remove conflicting styling from Sphinx themes */
div.nbinput.container div.prompt *,
div.nboutput.container div.prompt *,
div.nbinput.container div.input_area pre,
div.nboutput.container div.output_area pre,
div.nbinput.container div.input_area .highlight,
div.nboutput.container div.output_area .highlight {
    border: none;
    padding: 0;
    margin: 0;
    box-shadow: none;
}

div.nbinput.container > div[class*=highlight],
div.nboutput.container > div[class*=highlight] {
    margin: 0;
}

div.nbinput.container div.prompt *,
div.nboutput.container div.prompt * {
    background: none;
}

div.nboutput.container div.output_area .highlight,
div.nboutput.container div.output_area pre {
    background: unset;
}

div.nboutput.container div.output_area div.highlight {
    color: unset;  /* override Pygments text color */
}

/* avoid gaps between output lines */
div.nboutput.container div[class*=highlight] pre {
    line-height: normal;
}

/* input/output containers */
div.nbinput.container,
div.nboutput.container {
    display: -webkit-flex;
    display: flex;
    align-items: flex-start;
    margin: 0;
    width: 100%;
}
@media (max-width: 540px) {
    div.nbinput.container,
    div.nboutput.container {
        flex-direction: column;
    }
}

/* input container */
div.nbinput.container {
    padding-top: 5px;
}

/* last container */
div.nblast.container {
    padding-bottom: 5px;
}

/* input prompt */
div.nbinput.container div.prompt pre {
    color: #307FC1;
}

/* output prompt */
div.nboutput.container div.prompt pre {
    color: #BF5B3D;
}

/* all prompts */
div.nbinput.container div.prompt,
div.nboutput.container div.prompt {
    width: 4.5ex;
    padding-top: 5px;
    position: relative;
    user-select: none;
}

div.nbinput.container div.prompt > div,
div.nboutput.container div.prompt > div {
    position: absolute;
    right: 0;
    margin-right: 0.3ex;
}

@media (max-width: 540px) {
    div.nbinput.container div.prompt,
    div.nboutput.container div.prompt {
        width: unset;
        text-align: left;
        padding: 0.4em;
    }
    div.nboutput.container div.prompt.empty {
        padding: 0;
    }

    div.nbinput.container div.prompt > div,
    div.nboutput.container div.prompt > div {
        position: unset;
    }
}

/* disable scrollbars and line breaks on prompts */
div.nbinput.container div.prompt pre,
div.nboutput.container div.prompt pre {
    overflow: hidden;
    white-space: pre;
}

/* input/output area */
div.nbinput.container div.input_area,
div.nboutput.container div.output_area {
    -webkit-flex: 1;
    flex: 1;
    overflow: auto;
}
@media (max-width: 540px) {
    div.nbinput.container div.input_area,
    div.nboutput.container div.output_area {
        width: 100%;
    }
}

/* input area */
div.nbinput.container div.input_area {
    border: 1px solid #e0e0e0;
    border-radius: 2px;
    /*background: #f5f5f5;*/
}

/* override MathJax center alignment in output cells */
div.nboutput.container div[class*=MathJax] {
    text-align: left !important;
}

/* override sphinx.ext.imgmath center alignment in output cells */
div.nboutput.container div.math p {
    text-align: left;
}

/* standard error */
div.nboutput.container div.output_area.stderr {
    background: #fdd;
}

/* ANSI colors */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-default-inverse-fg { color: #FFFFFF; }
.ansi-default-inverse-bg { background-color: #000000; }

.ansi-bold { font-weight: bold; }
.ansi-underline { text-decoration: underline; }


div.nbinput.container div.input_area div[class*=highlight] > pre,
div.nboutput.container div.output_area div[class*=highlight] > pre,
div.nboutput.container div.output_area div[class*=highlight].math,
div.nboutput.container div.output_area.rendered_html,
div.nboutput.container div.output_area > div.output_javascript,
div.nboutput.container div.output_area:not(.rendered_html) > img{
    padding: 5px;
    margin: 0;
}

/* fix copybtn overflow problem in chromium (needed for 'sphinx_copybutton') */
div.nbinput.container div.input_area > div[class^='highlight'],
div.nboutput.container div.output_area > div[class^='highlight']{
    overflow-y: hidden;
}

/* hide copybtn icon on prompts (needed for 'sphinx_copybutton') */
.prompt .copybtn {
    display: none;
}

/* Some additional styling taken form the Jupyter notebook CSS */
.jp-RenderedHTMLCommon table,
div.rendered_html table {
  border: none;
  border-collapse: collapse;
  border-spacing: 0;
  color: black;
  font-size: 12px;
  table-layout: fixed;
}
.jp-RenderedHTMLCommon thead,
div.rendered_html thead {
  border-bottom: 1px solid black;
  vertical-align: bottom;
}
.jp-RenderedHTMLCommon tr,
.jp-RenderedHTMLCommon th,
.jp-RenderedHTMLCommon td,
div.rendered_html tr,
div.rendered_html th,
div.rendered_html td {
  text-align: right;
  vertical-align: middle;
  padding: 0.5em 0.5em;
  line-height: normal;
  white-space: normal;
  max-width: none;
  border: none;
}
.jp-RenderedHTMLCommon th,
div.rendered_html th {
  font-weight: bold;
}
.jp-RenderedHTMLCommon tbody tr:nth-child(odd),
div.rendered_html tbody tr:nth-child(odd) {
  background: #f5f5f5;
}
.jp-RenderedHTMLCommon tbody tr:hover,
div.rendered_html tbody tr:hover {
  background: rgba(66, 165, 245, 0.2);
}

/* CSS overrides for sphinx_rtd_theme */

/* 24px margin */
.nbinput.nblast.container,
.nboutput.nblast.container {
    margin-bottom: 19px;  /* padding has already 5px */
}

/* ... except between code cells! */
.nblast.container + .nbinput.container {
    margin-top: -19px;
}

.admonition > p:before {
    margin-right: 4px;  /* make room for the exclamation icon */
}

/* Fix math alignment, see https://github.com/rtfd/sphinx_rtd_theme/pull/686 */
.math {
    text-align: unset;
}
</style>
<section id="Unsupervised-annotation-in-DeepOF---exploring-the-behavioral-space">
<h1>Unsupervised annotation in DeepOF - exploring the behavioral space<a class="headerlink" href="#Unsupervised-annotation-in-DeepOF---exploring-the-behavioral-space" title="Permalink to this heading"></a></h1>
<p><a class="reference external" href="https://colab.research.google.com/github/lucasmiranda42/deepof/blob/master/docs/source/tutorial_notebooks/deepof_unsupervised_tutorial.ipynb"><img alt="Open In Colab" src="https://colab.research.google.com/assets/colab-badge.svg" /></a></p>
<section id="what-we’ll-cover:">
<h2>what we’ll cover:<a class="headerlink" href="#what-we’ll-cover:" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>Brief introduction to unsupervised analysis.</p></li>
<li><p>Load your previous project.</p></li>
<li><p>Understanding the different available models.</p></li>
<li><p>Running an unsupervised analysis with default parameters.</p></li>
<li><p>Temporal and global embeddings.</p></li>
<li><p>Global separation dynamics.</p></li>
<li><p>Exploring cluster enrichment across conditions.</p></li>
<li><p>Exploring cluster dynamics across conditions.</p></li>
<li><p>Interpreting clusters using SHAP.</p></li>
<li><p>Exporting cluster video snippets.</p></li>
</ul>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[1]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># # If using Google colab, uncomment and run this cell and the one below to set up the environment</span>
<span class="c1"># # Note: becasuse of how colab handles the installation of local packages, this cell will kill your runtime.</span>
<span class="c1"># # This is not an error! Just continue with the cells below.</span>
<span class="c1"># import os</span>
<span class="c1"># !git clone -q https://github.com/mlfpm/deepof.git</span>
<span class="c1"># !pip install -q -e deepof --progress-bar off</span>
<span class="c1"># os.chdir(&quot;deepof&quot;)</span>
<span class="c1"># !curl --output tutorial_files.zip https://datashare.mpcdf.mpg.de/s/knF7t78isQuIAr0/download</span>
<span class="c1"># !unzip tutorial_files.zip</span>
<span class="c1"># os.kill(os.getpid(), 9)</span>
</pre></div>
</div>
</div>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># os.chdir(&quot;deepof&quot;)</span>
<span class="c1"># import os, warnings</span>
<span class="c1"># warnings.filterwarnings(&#39;ignore&#39;)</span>
</pre></div>
</div>
</div>
<p>Let’s start by importing some packages. We’ll use python’s os library to handle paths, pickle to load saved objects, and the data entry API within DeepOF, located in deepof.data. This time we’ll add copy and numpy to the mix.</p>
<p><strong>NOTE</strong>: If running this notebook in colab, we strongly recommend using a GPU environment. Go to ‘Runtime’ -&gt; ‘Change runtime type’, and select GPU under ‘Hardware accelerator’.</p>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">copy</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">pickle</span>
<span class="kn">import</span> <span class="nn">deepof.data</span>
</pre></div>
</div>
</div>
<p>We’ll also need some plotting gear:</p>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">IPython</span> <span class="kn">import</span> <span class="n">display</span>
<span class="kn">from</span> <span class="nn">networkx</span> <span class="kn">import</span> <span class="n">Graph</span><span class="p">,</span> <span class="n">draw</span>
<span class="kn">import</span> <span class="nn">deepof.visuals</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="nn">sns</span>
</pre></div>
</div>
</div>
<section id="Brief-introduction-to-unsupervised-analysis">
<h3>Brief introduction to unsupervised analysis<a class="headerlink" href="#Brief-introduction-to-unsupervised-analysis" title="Permalink to this heading"></a></h3>
<p>So far we saw how to create a project, and to apply pre-defined supervised annotators to our tracked animals. We also saw how we can use those to compare across two experimental conditions. In this tutorial, we’ll cover how to get the most of DeepOF by embedding our time series directly using a deep learning model that can obtain and compare different clusters of behavior across our cohorts.</p>
<p>In a nutshell, unsupervised learning is a powerful technique for analyzing time series data, (in this case behavioral motion tracking in mice). With this type of analysis, you can identify patterns and structures in your data without needing labeled examples or a pre-existing hypothesis. This makes it a great tool for exploratory data analysis, allowing you to uncover hidden relationships and insights that might not be immediately apparent. This way you can gain a deeper understanding of the
underlying patterns and behaviors of your mice, which can ultimately help you make more informed decisions in your research.</p>
</section>
<section id="Load-your-previous-project">
<h3>Load your previous project<a class="headerlink" href="#Load-your-previous-project" title="Permalink to this heading"></a></h3>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[4]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Load a previously saved project</span>
<span class="n">my_deepof_project</span> <span class="o">=</span> <span class="n">deepof</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">load_project</span><span class="p">(</span><span class="s2">&quot;./tutorial_files/tutorial_project&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
</section>
<section id="Processing-time-series-for-unsupervised-learning">
<h3>Processing time series for unsupervised learning<a class="headerlink" href="#Processing-time-series-for-unsupervised-learning" title="Permalink to this heading"></a></h3>
<p>The unsupervised pipeline starts by creating training and validation datasets that we’ll later on pass to the deep learning models. DeepOF provides a couple of functions to do this on its own, as we’ll see shortly. Importantly, and where the details of the pipeline are beyond the scope of this tutorial (check the main paper if you’re interested), there are two concepts that we should cover to make interacting with the workflow as easy as possible.</p>
<p>First, we’ll see that, when generating a dataset, DeepOF applies a sliding window across all features in the data. Sliding windows are a commonly used technique in time series analysis that involves dividing the data into smaller, fixed-size windows and applying analysis techniques on each window. This approach is useful for unsupervised learning because it allows for the exploration of patterns and trends in the data over time.</p>
<p>The size of the window refers to the number of data points in each segment, and the stride is the number of data points by which the window moves forward in each step. By adjusting the window size and stride, different patterns and trends can be extracted from the time series. For example, a smaller window size with a larger stride can capture short-term changes in the data, while a larger window size with a smaller stride can reveal longer-term trends. We’ll see that DeepOF allows us to control
these parameters, although default values should work well in most cases.</p>
<p>On the other hand, DeepOF offers a more advanced input pipeline that’s optimized for top-down videos. This includes representing the different created features as a graph, with nodes as body parts and edges connecting those that are adjacent in space. Thus, DeepOF can automatically annotate the animals across time with coordinates, speeds, and distances. This is particularly useful when access to crucial body parts (such as paws) are occluded (such as in top-down videos). Moreover, this input
pipeline enables the joint embedding of multiple animals: when more than one mouse is present, all nose-nose, nose-tail, and tail-tail distances are included in the graph, and annotated with their respective distances.</p>
<p><img alt="unsupervised_processing" src="../_images/deepof_unsupervised_processing.png" /></p>
<p>Let’s see how we can generate datasets with and without graphs:</p>
<p>Let’s start simple: we can omit the graph representations and generate DeepOF-ready datasets by running the <code class="docutils literal notranslate"><span class="pre">.preprocess()</span></code> method on any TabDict object (TabDict are the dictionary-like structures that we saw in the first tutorial).</p>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[5]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># This code will generate a dataset without graph representations</span>
<span class="n">coords</span> <span class="o">=</span> <span class="n">my_deepof_project</span><span class="o">.</span><span class="n">get_coords</span><span class="p">(</span><span class="n">selected_id</span><span class="o">=</span><span class="s2">&quot;B&quot;</span><span class="p">,</span> <span class="n">center</span><span class="o">=</span><span class="s2">&quot;Center&quot;</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s2">&quot;Spine_1&quot;</span><span class="p">)</span>
<span class="n">preprocessed_coords</span><span class="p">,</span> <span class="n">global_scaler</span> <span class="o">=</span> <span class="n">coords</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span>
    <span class="n">window_size</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span> <span class="c1"># Sliding window length</span>
    <span class="n">window_step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="c1"># Sliding window stride</span>
    <span class="n">test_videos</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="c1"># Number of videos in the validation set</span>
    <span class="n">scale</span><span class="o">=</span><span class="s2">&quot;standard&quot;</span><span class="p">,</span> <span class="c1"># Scaling method</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<p>The first thing to notice here is that we’re only passing the coordinates as input (no speed, no distances). While a merged object can be passed in theory to get embeddings that carry other signals (see tutorial on preprocessing), that often leads in practice to unstable training (at least in our experiments). So let’s continue with coordinates only!</p>
<p>Next, you may have already seen that the <code class="docutils literal notranslate"><span class="pre">.preprocess()</span></code> method returns two objects, the preprocessed coordinates, and a global scaler. Let’s explore these in more detail.</p>
<p>Upon exploring, we see that preprocessed_coords is a tuple containing four numpy arrays. These correspond to training and validation features (X) and label (y) datasets, respectively. Labels in the unsupervised pipeline are beyond the scope of this tutorial, which only deals with purely unsupervised models.</p>
<p>Focusing on the features, then, let’s explore their shapes:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Features in the training set have shape </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">preprocessed_coords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Features in the validation set have shape </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">preprocessed_coords</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<div class="highlight"><pre>
Features in the training set have shape (74873, 25, 22)
Features in the validation set have shape (14975, 25, 22)
</pre></div></div>
</div>
<p>The first axis in these shapes corresponds to the number of sliding windows per dataset (we have 6 videos in total in this tutorial, and one has been assigned to the validation set. Note that’s important to split videos (and not sliding window instances) to have truly independent training and validation data.</p>
<p>The other two axes relate to sliding window size (same as the frame rate of the provided videos, by default, so each sliding window includes a second of data), and the number of features (11 body parts, <em>x</em> and <em>y</em> coordinates).</p>
<p>To understand the global_scaler object, let’s first briefly review how DeepOF normalizes data. First, data coming from each video are normalized independently in both training and validation sets, which helps correct for differences in body size. All videos in the training set are then scaled together, and the fitted global_scaler is then returned for further processing as we’ll see below.</p>
<p>Next, let’s generate a graph-based dataset and understand its output. To do this, we can preprocess our coordinates directly (no need to create the feature objects by ourselves) using the <code class="docutils literal notranslate"><span class="pre">.get_graph_dataset()</span></code> method. Under the hood, DeepOF will create a TableDict object containing centered and aligned coordinates, speeds, and distances corresponding to the edges of the aforementioned graph. Let’s see it in action:</p>
<p><strong>NOTE</strong>: the embeddings we use throughout this tutorial are single-animal by default. This is controlled by the ‘animal_id’ parameter in the method call below. If you’d like to try how multi-animal data is processed, comment the parameter out. Processing is quite similar, but the graph is larger as it will include both animals, as well as the distances between them.</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># This code will generate a dataset using graph representations, as well a some auxiliary objects</span>
<span class="n">graph_preprocessed_coords</span><span class="p">,</span> <span class="n">adj_matrix</span><span class="p">,</span> <span class="n">to_preprocess</span><span class="p">,</span> <span class="n">global_scaler</span> <span class="o">=</span> <span class="n">my_deepof_project</span><span class="o">.</span><span class="n">get_graph_dataset</span><span class="p">(</span>
    <span class="n">animal_id</span><span class="o">=</span><span class="s2">&quot;B&quot;</span><span class="p">,</span> <span class="c1"># Comment out for multi-animal embeddings</span>
    <span class="n">center</span><span class="o">=</span><span class="s2">&quot;Center&quot;</span><span class="p">,</span>
    <span class="n">align</span><span class="o">=</span><span class="s2">&quot;Spine_1&quot;</span><span class="p">,</span>
    <span class="n">window_size</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span>
    <span class="n">window_step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">test_videos</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">preprocess</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
    <span class="n">scale</span><span class="o">=</span><span class="s2">&quot;standard&quot;</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area stderr docutils container">
<div class="highlight"><pre>
adjacency_matrix will return a scipy.sparse array instead of a matrix in Networkx 3.0.
</pre></div></div>
</div>
<p>We see that now the pipeline returned four objects instead of two. The first one is equivalent to the preprocessed_coords, although the tuple now contains 6 elements, and their shapes in the arrays are different. Instead of just features and labels for the training and validation sets, we now have:</p>
<ul class="simple">
<li><p>Node features for the training set, with shape window instances × window size × features (which include coordinates and speeds per body part)</p></li>
<li><p>Edge features for the training set, with shape window instances × window size × features (which include distances between adjacent body parts)</p></li>
<li><p>Labels in the training set</p></li>
<li><p>Node features for the validation set, with shape window instances × window size × features (which include coordinates and speeds per body part)</p></li>
<li><p>Edge features for the validation set, with shape window instances × window size × features (which include distances between adjacent body parts)</p></li>
<li><p>Labels in the validation set</p></li>
</ul>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Node features in the training set have shape </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">graph_preprocessed_coords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Edge features in the training set have shape </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">graph_preprocessed_coords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Node features in the validation set have shape </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">graph_preprocessed_coords</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Edge features in the validation set have shape </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">graph_preprocessed_coords</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">))</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<div class="highlight"><pre>
Node features in the training set have shape (74873, 25, 33)
Edge features in the training set have shape (74873, 25, 11)
Node features in the validation set have shape (14975, 25, 33)
Edge features in the validation set have shape (14975, 25, 11)
</pre></div></div>
</div>
<p>The second returned object is the adjacency matrix of the aforementioned connected graph as a numpy array (where rows and columns correspond to each body part, and ones indicate connections). Let’s have a look!</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">adj_matrix</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<div class="highlight"><pre>
[[0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 1 0]
 [0 0 0 0 0 0 0 1 1 0 0]
 [0 0 0 0 0 0 0 0 0 1 0]
 [1 0 0 0 0 1 1 0 0 1 0]
 [0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 1 0 0 0 0 0 0]
 [0 0 1 0 0 0 0 0 0 1 1]
 [0 0 1 0 0 0 0 0 0 0 1]
 [0 1 0 1 1 0 0 1 0 0 0]
 [0 0 0 0 0 0 0 1 1 0 0]]
</pre></div></div>
</div>
<p>We can also plot it:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
<span class="n">draw</span><span class="p">(</span><span class="n">Graph</span><span class="p">(</span><span class="n">adj_matrix</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_32_0.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_32_0.png" />
</div>
</div>
<p>Finally, the two last objects correspond to the TableDict object with the features (useful later on, as we’ll see shortly) and the already explained global scaler.</p>
<p>So, with just a few commands, we already have everything we need to train our first deep clustering models. Let’s briefly explore how they work and get on with the training!</p>
</section>
<section id="Embedding-our-data-with-deep-clustering-models">
<h3>Embedding our data with deep clustering models<a class="headerlink" href="#Embedding-our-data-with-deep-clustering-models" title="Permalink to this heading"></a></h3>
<p>The core idea of deep clustering is to embed our input (the motion features over time) with a neural network, and retrieve a set of embeddings per time point (a reduced representation in the form of a vector) each of which is assigned to a cluster. In this context, clusters correspond to systematic behaviors the model observes in the provided cohort.</p>
<p>DeepOF has three main models it can offer. Two of them (called <a class="reference external" href="https://arxiv.org/abs/1611.05148">VaDE</a> and <a class="reference external" href="https://arxiv.org/abs/1711.00937">VQVAE</a> after the models from the literature they are based on) are <a class="reference external" href="https://blog.keras.io/building-autoencoders-in-keras.html">autoencoders</a>. This means that the architecture consists of two parts, an encoder and a decoder, which are trained jointly in a way in which the output is optimized to reconstruct the input. Moreover, a clustering
structure is imposed in the latent space that forms in between, so that embeddings are thought of as coming from one of a set of jointly trained components. While VaDE (left on the figure below) treats each component as a multivariate Gaussian distribution in a continuous space, VQVAE models (right on the figure below) use a codebook mapping to a discrete representation space. More details on both VaDE and VQVAE can be found
<a class="reference external" href="https://medium.com/machine-intelligence-and-deep-learning-lab/variational-deep-embedding-403fb476ed7f">here</a> and <a class="reference external" href="https://ml.berkeley.edu/blog/posts/vq-vae/">here</a>, respectively.</p>
<p>For now, let’s just say that VaDE models are a lot more stable (at least in our experiments) when working with graph input, so we’ve assigned them as default. You can still try the VQVAE models with your data if you’d like, though!</p>
<p><img alt="unsupervised_models" src="../_images/deepof_unsupervised_models.png" /></p>
<p>The third class of models use a different architecture altogether, which is based in <a class="reference external" href="https://lilianweng.github.io/posts/2021-05-31-contrastive/">contrastive learning</a>. This produces embeddings without the need for a decoder, but clustering must be conducted post-hoc, which DeepOF takes care of using a Hidden Markov Model.</p>
<p>With all of this in mind, let’s see how this works in practice. To train a model, you need to call the <code class="docutils literal notranslate"><span class="pre">.deep_unsupervised_embedding()</span></code> method on your coordinates. Some parameters we should take into account when doing so are:</p>
<ul class="simple">
<li><p>preprocessed_object, which corresponds to the dataset tuples generated above (either preprocessed_coords or graph_preprocessed_coords, for matrix and graph input respectively).</p></li>
<li><p>adjacency_matrix, required for graph input.</p></li>
<li><p>embedding_model, corresponding to the model to use. Can be set to ‘VaDE’ (default), ‘VQVAE’, or ‘Contrastive’</p></li>
<li><p>encoder_type, corresponding to the architecture that the models use for the encoder (and decoder if available). Can be set to ‘recurrent’ (default), TCN, or transformer.</p></li>
<li><p>n_components, corresponding to the number of clusters to train.</p></li>
<li><p>latent_dim, corresponding to the size of the produced embeddings.</p></li>
<li><p>interaction_regularization, which is only applicable when multi-animal embeddings are at play. Higher values will force the model to focus more on interactions rather than on joint individual behaviors. For reference, in the multi-animal embeddings depicted in the main DeepOF paper the parameter was set to 0.5.</p></li>
<li><p>pretrained, which loads already saved weights within your DeepOF model instead of training a new model. By default, DeepOF will attempt to load the latest trained weights with the specified parameters. See the <strong>NOTE</strong> below to see how to select between different sets of weights in case you need to.</p></li>
</ul>
<p>For more details, feel free to open the full API reference.</p>
<p><strong>NOTE</strong>: Trained weights are saved under <strong>Trained_models/trained_weights</strong> in your project directory. If you’d like to manually select the weights to load, browse to the corresponding folder and input the name of the file of choice, instead of a boolean.</p>
<p><strong>NOTE2</strong>: If you set pretrained to False in the cell below, it can take a while to run in some cases (around 20 min in a GPU environment in Colab).</p>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[12]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">trained_model</span> <span class="o">=</span> <span class="n">my_deepof_project</span><span class="o">.</span><span class="n">deep_unsupervised_embedding</span><span class="p">(</span>
    <span class="n">preprocessed_object</span><span class="o">=</span><span class="n">graph_preprocessed_coords</span><span class="p">,</span> <span class="c1"># Change to preprocessed_coords to use non-graph embeddings</span>
    <span class="n">adjacency_matrix</span><span class="o">=</span><span class="n">adj_matrix</span><span class="p">,</span>
    <span class="n">embedding_model</span><span class="o">=</span><span class="s2">&quot;VaDE&quot;</span><span class="p">,</span> <span class="c1"># Can also be set to &#39;VQVAE&#39; and &#39;Contrastive&#39;</span>
    <span class="n">epochs</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
    <span class="n">encoder_type</span><span class="o">=</span><span class="s2">&quot;recurrent&quot;</span><span class="p">,</span> <span class="c1"># Can also be set to &#39;TCN&#39; and &#39;transformer&#39;</span>
    <span class="n">n_components</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
    <span class="n">latent_dim</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>
    <span class="n">batch_size</span><span class="o">=</span><span class="mi">1024</span><span class="p">,</span>
    <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># Set to True to follow the training loop</span>
    <span class="n">interaction_regularization</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
    <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># Set to False to train a new model!</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<p>While we won’t explore the models themselves in detail in this tutorial, some hints you may want to try on your own are:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">trained_model.summary()</span></code> will print a detailed description of the trained model and its parameters</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">trained_model.encoder()</span></code> will encode data to the latent space</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">trained_model.grouper()</span></code> will retrieve the clustering output</p></li>
</ul>
<p>Once we have a trained model, it’s time to finally get our embeddings! This can be done using the <code class="docutils literal notranslate"><span class="pre">deepof.model_utils.embedding_per_video()</span></code> function. This will return TableDict objects containing the embeddings, soft_counts, and breaks per experiment. These are:</p>
<ul class="simple">
<li><p>embeddings: a TableDict object containing embdings per time point per experiment.</p></li>
<li><p>soft_counts: soft cluster assignments per video. The values per time point can be interpreted as the probability the model assigns to each cluster. The cluster with maximum probability will be assigned in the end. This soft clustering approach allows us to filter time points with low confidence, as we’ll see.</p></li>
<li><p>breaks: length of each time point. By default, it corresponds to the stride assigned to the sliding window. This object is here for legacy reasons, as it enables compatibility with a change point detection pipeline that won’t be explored in this tutorial.</p></li>
</ul>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[13]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Get embeddings, soft_counts, and breaks per video</span>
<span class="n">embeddings</span><span class="p">,</span> <span class="n">soft_counts</span><span class="p">,</span> <span class="n">breaks</span> <span class="o">=</span> <span class="n">deepof</span><span class="o">.</span><span class="n">model_utils</span><span class="o">.</span><span class="n">embedding_per_video</span><span class="p">(</span>
    <span class="n">coordinates</span><span class="o">=</span><span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">to_preprocess</span><span class="o">=</span><span class="n">to_preprocess</span><span class="p">,</span>
    <span class="n">model</span><span class="o">=</span><span class="n">trained_model</span><span class="p">,</span>
    <span class="n">animal_id</span><span class="o">=</span><span class="s2">&quot;B&quot;</span><span class="p">,</span>
    <span class="n">global_scaler</span><span class="o">=</span><span class="n">global_scaler</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<p>As the training set in this tutorial is quite small, we’ll load embeddings from a model trained on the full dataset of 53 videos for the rest of the presented analyses. Feel free to try the remaining cells with your trained model by skipping the cell below, though!</p>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[67]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Load results</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span>
    <span class="s2">&quot;./tutorial_files/Trained_weights/deepof_coordinates.pkl&quot;</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span>
<span class="p">)</span> <span class="k">as</span> <span class="n">handle</span><span class="p">:</span>
    <span class="n">my_deepof_project</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span>
    <span class="s2">&quot;./tutorial_files/Trained_weights/deepof_unsupervised_sa_VaDE_encoder_recurrent_encodings_input=graph_k=10_latdim=8_changepoints_False_kmeans_loss=0.0.pkl&quot;</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span>
<span class="p">)</span> <span class="k">as</span> <span class="n">handle</span><span class="p">:</span>
    <span class="n">embeddings</span><span class="p">,</span> <span class="n">soft_counts</span><span class="p">,</span> <span class="n">breaks</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span>
</pre></div>
</div>
</div>
<p>So we finally have our trained embeddings, and our data has been clustered. Let’s see what sort of tools DeepOF offers to analyze the results, then!</p>
</section>
<section id="Visualizing-temporal-and-global-embeddings">
<h3>Visualizing temporal and global embeddings<a class="headerlink" href="#Visualizing-temporal-and-global-embeddings" title="Permalink to this heading"></a></h3>
<p>The first thing we can do is to visualize the cluster space. If you went through the tutorial on supervised analysis, you’re already familiar with the <code class="docutils literal notranslate"><span class="pre">deepof.visuals.plot_embeddings()</span></code> function. Here we’ll run it again, with slightly different parameters (passing embeddings, soft_counts, and breaks instead of the supervised annotations). As in the previous tutorial, all figures shown in the documentation version of this tutorial were produced using the full 53 animal dataset.</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[17]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="p">(</span><span class="n">ax1</span><span class="p">,</span> <span class="n">ax2</span><span class="p">)</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_embeddings</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="n">aggregate_experiments</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
    <span class="n">samples</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax1</span><span class="p">,</span>
    <span class="n">save</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># Set to True, or give a custom name, to save the plot</span>
<span class="p">)</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_embeddings</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="n">aggregate_experiments</span><span class="o">=</span><span class="s2">&quot;time on cluster&quot;</span><span class="p">,</span> <span class="c1"># Can also be set to &#39;mean&#39; and &#39;median&#39;</span>
    <span class="n">exp_condition</span><span class="o">=</span><span class="s2">&quot;CSDS&quot;</span><span class="p">,</span>
    <span class="n">show_aggregated_density</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax2</span><span class="p">,</span>
    <span class="n">save</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># Set to True, or give a custom name, to save the plot,</span>
<span class="p">)</span>
<span class="n">ax2</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span>
    <span class="n">bbox_to_anchor</span><span class="o">=</span><span class="p">(</span><span class="mf">1.05</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">loc</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">borderaxespad</span><span class="o">=</span><span class="mf">0.0</span>
<span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area stderr docutils container">
<div class="highlight"><pre>
OMP: Info #271: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.
</pre></div></div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_48_1.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_48_1.png" />
</div>
</div>
<p>The figure on the left now shows time points in a UMAP projection of the latent space, where colors indicate different clusters. The figure on the right aggregates all time points in a given animal as a vector of counts per behavior (indicating how much time each animal spends on each cluster). We can already see a clear separation between conditions, in a fully unsupervised way!</p>
</section>
<section id="Generating-Gantt-charts-with-all-clusters">
<h3>Generating Gantt charts with all clusters<a class="headerlink" href="#Generating-Gantt-charts-with-all-clusters" title="Permalink to this heading"></a></h3>
<p>Like we did for the supervised annotations, we can also visualize assigned clusters over time using Gantt charts:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[18]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_gantt</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="o">=</span><span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">experiment_id</span><span class="o">=</span><span class="s2">&quot;20191204_Day2_SI_JB08_Test_54&quot;</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_52_0.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_52_0.png" />
</div>
</div>
</section>
<section id="Global-separation-dynamics">
<h3>Global separation dynamics<a class="headerlink" href="#Global-separation-dynamics" title="Permalink to this heading"></a></h3>
<p>Next, let’s quantify the distance between our experimental distributions. To measure how far the behavior of stressed animals is from that of controls, we’ll use the <a class="reference external" href="http://alexhwilliams.info/itsneuronalblog/2020/10/09/optimal-transport/">Wasserstein distance</a> between the distributions shown on the right panel of the figure above. Moreover, we’ll see how that distance evolves over time. To this end, we can use the <code class="docutils literal notranslate"><span class="pre">deepof.visuals.plot_distance_between_conditions()</span></code> function.</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[19]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">%%time</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_distance_between_conditions</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="s2">&quot;CSDS&quot;</span><span class="p">,</span>
    <span class="n">distance_metric</span><span class="o">=</span><span class="s2">&quot;wasserstein&quot;</span><span class="p">,</span>
    <span class="n">n_jobs</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<div class="highlight"><pre>
Found an optimal_bin at 126 seconds
</pre></div></div>
</div>
<div class="nboutput docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_55_1.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_55_1.png" />
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<div class="highlight"><pre>
CPU times: user 4.8 s, sys: 15.4 s, total: 20.2 s
Wall time: 1min 27s
</pre></div></div>
</div>
<p>In the figure above, you can see two curves. The grey one in the background measures how the distance between conditions evolves over a growing window over time. We start with 10 seconds of data, and add one at the time until all 600 are included (the underlying videos are 10-minutes long). Peaks in this curve can then point towards points in the time series that maximize the difference between conditions. Here, we see a maximum at 125 seconds, which is compatible with the habituation of the
mice to the novel environment in which they were introduced (see the main paper for details).</p>
<p>The function then selects 126 seconds as the optimal binning break, and splits the experiments in equally-sized bins (except for the last one, which is a bit smaller). The distance across consecutive bins is then reported in the green curve, which we see decay over time as the distributions become closer and closer. We can map these back to the embeddings we displayed before, and filter them over time:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[20]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="p">(</span><span class="n">ax1</span><span class="p">,</span> <span class="n">ax2</span><span class="p">)</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>


<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_embeddings</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="n">aggregate_experiments</span><span class="o">=</span><span class="s2">&quot;time on cluster&quot;</span><span class="p">,</span>
    <span class="n">bin_size</span><span class="o">=</span><span class="mi">125</span><span class="p">,</span> <span class="c1"># This parameter controls the size of the time bins. We set it to match the optimum reported above</span>
    <span class="n">bin_index</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="c1"># This parameter controls the index of the bins to select, we take the first one here</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax1</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_embeddings</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="n">aggregate_experiments</span><span class="o">=</span><span class="s2">&quot;time on cluster&quot;</span><span class="p">,</span>
    <span class="n">exp_condition</span><span class="o">=</span><span class="s2">&quot;CSDS&quot;</span><span class="p">,</span>
    <span class="n">show_aggregated_density</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
    <span class="n">bin_size</span><span class="o">=</span><span class="mi">125</span><span class="p">,</span> <span class="c1"># This parameter controls the size of the time bins. We set it to match the optimum reported above</span>
    <span class="n">bin_index</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="c1"># This parameter controls the index of the bins to select, we take the fourth one here</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax2</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">ax2</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span>
    <span class="n">bbox_to_anchor</span><span class="o">=</span><span class="p">(</span><span class="mf">1.05</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">loc</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">borderaxespad</span><span class="o">=</span><span class="mf">0.0</span>
<span class="p">)</span>

<span class="n">ax1</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span><span class="o">.</span><span class="n">remove</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_57_0.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_57_0.png" />
</div>
</div>
<p>Where we clearly see that the overlap between the distributions is greater in the figure on the right (and therefore their Wasserstein distance lower).</p>
</section>
<section id="Exploring-cluster-enrichment-across-conditions">
<h3>Exploring cluster enrichment across conditions<a class="headerlink" href="#Exploring-cluster-enrichment-across-conditions" title="Permalink to this heading"></a></h3>
<p>Next, and as we did in the last tutorial on supervised annotation, we can test for enrichment in cluster expression! This way we can detect and pinpoint specific behavioral differences between our cohorts. Let’s compare how the enrichment plots look for the whole data and the first time bin, respectively:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[21]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">ax2</span><span class="p">)</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_enrichment</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="n">normalize</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
    <span class="n">add_stats</span><span class="o">=</span><span class="s2">&quot;Mann-Whitney&quot;</span><span class="p">,</span>
    <span class="n">exp_condition</span><span class="o">=</span><span class="s2">&quot;CSDS&quot;</span><span class="p">,</span>
    <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_enrichment</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="n">normalize</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
    <span class="n">bin_size</span><span class="o">=</span><span class="mi">125</span><span class="p">,</span>
    <span class="n">bin_index</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
    <span class="n">add_stats</span><span class="o">=</span><span class="s2">&quot;Mann-Whitney&quot;</span><span class="p">,</span>
    <span class="n">exp_condition</span><span class="o">=</span><span class="s2">&quot;CSDS&quot;</span><span class="p">,</span>
    <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax2</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span>
    <span class="n">axis</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">,</span>
    <span class="n">which</span><span class="o">=</span><span class="s1">&#39;both&#39;</span><span class="p">,</span>
    <span class="n">bottom</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
    <span class="n">top</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
    <span class="n">labelbottom</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
<span class="n">ax2</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span><span class="o">.</span><span class="n">remove</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_61_0.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_61_0.png" />
</div>
</div>
<p>We can see how, as expected, there are many more differences in the first time bin than in the entire time series. Moreover, we see a few clusters (1 and 5, for example) that are highly enriched in stressed animals in the first time bin, but not different at all when looking at the whole time series. We’ll visualize what these are at the end of this tutorial.</p>
</section>
<section id="Exploring-cluster-dynamics-across-conditions">
<h3>Exploring cluster dynamics across conditions<a class="headerlink" href="#Exploring-cluster-dynamics-across-conditions" title="Permalink to this heading"></a></h3>
<p>Aside from exploring cluster enrichment, DeepOF provides tools to gain insight into cluster dynamics. That is, how transitions between different clusters look like. For example, we can have a look at the transition matrices per condition with <code class="docutils literal notranslate"><span class="pre">deepof.visuals.plot_transitions()</span></code>:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[22]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>

<span class="c1"># Transition matrices and heatmaps</span>
<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_transitions</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="o">.</span><span class="n">filter_videos</span><span class="p">(</span><span class="n">my_deepof_project</span><span class="o">.</span><span class="n">get_exp_conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">()),</span>
    <span class="n">soft_counts</span><span class="o">.</span><span class="n">filter_videos</span><span class="p">(</span><span class="n">my_deepof_project</span><span class="o">.</span><span class="n">get_exp_conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">()),</span>
    <span class="n">breaks</span><span class="o">.</span><span class="n">filter_videos</span><span class="p">(</span><span class="n">my_deepof_project</span><span class="o">.</span><span class="n">get_exp_conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">()),</span>
   <span class="c1"># cluster=False,</span>
    <span class="n">visualization</span><span class="o">=</span><span class="s2">&quot;heatmaps&quot;</span><span class="p">,</span>
    <span class="n">bin_size</span><span class="o">=</span><span class="mi">125</span><span class="p">,</span>
    <span class="n">bin_index</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
    <span class="n">exp_condition</span><span class="o">=</span><span class="s2">&quot;CSDS&quot;</span><span class="p">,</span>
    <span class="n">axes</span><span class="o">=</span><span class="n">axes</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_65_0.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_65_0.png" />
</div>
</div>
<p>Here we can see heatmaps depicting how common transitions between components are. Rows and columns are clustered, to put clusters with common transitions between them together. As it may be hard to retrieve patterns from heatmaps visualized this way, the function can also represent them as graphs, where more common transitions are depicted with thicker edges:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[23]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_transitions</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="o">.</span><span class="n">filter_videos</span><span class="p">(</span><span class="n">my_deepof_project</span><span class="o">.</span><span class="n">get_exp_conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">()),</span>
    <span class="n">soft_counts</span><span class="o">.</span><span class="n">filter_videos</span><span class="p">(</span><span class="n">my_deepof_project</span><span class="o">.</span><span class="n">get_exp_conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">()),</span>
    <span class="n">breaks</span><span class="o">.</span><span class="n">filter_videos</span><span class="p">(</span><span class="n">my_deepof_project</span><span class="o">.</span><span class="n">get_exp_conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">()),</span>
    <span class="n">visualization</span><span class="o">=</span><span class="s2">&quot;networks&quot;</span><span class="p">,</span>
    <span class="n">silence_diagonal</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
    <span class="n">bin_size</span><span class="o">=</span><span class="mi">125</span><span class="p">,</span>
    <span class="n">bin_index</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
    <span class="n">exp_condition</span><span class="o">=</span><span class="s2">&quot;CSDS&quot;</span><span class="p">,</span>
    <span class="n">axes</span><span class="o">=</span><span class="n">axes</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_67_0.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_67_0.png" />
</div>
</div>
<p>We can see how clusters 2, 3, 4, 7, and 8 form a tight cluster for non-stressed animals, whereas 0, 1, 5, and 9 do so for stressed animals. Interestingly, cluster 6 seems to act like a bridge in both cases. This means that transitions between clusters enriched in a certain condition are indeed more common than transitions between clusters enriched across conditions.</p>
<p>Moreover, we can explore how the overall behavioral entropy (which measures how predictable behavior for a given animal is) compares across experimental conditions. To obtain these values, DeepOF runs a set of simulations on the transition matrices depicted above, until the population of clusters converges to a stationary distribution. Entropy is then computed on this distribution for each animal, and the obtained values per condition are compared. The function that allows users to run this
analysis is <code class="docutils literal notranslate"><span class="pre">deepof.visuals.plot_stationary_entropy()</span></code>, and it’s executed as in the cell below:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[24]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Entropy plots</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_stationary_entropy</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embeddings</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="n">exp_condition</span><span class="o">=</span><span class="s2">&quot;CSDS&quot;</span><span class="p">,</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_70_0.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_70_0.png" />
</div>
</div>
<p>Here we see that behavioral entropy is significantly lower in stressed animals with respect to non-stressed ones! This could be explained by the richer behavioral repertoire that non-stressed animals explore. Upon visualizing the attached videos, one can see that much of the time stressed animals are showing behaviors closer to freezing, while non-stressed animals tend to transition between different exploratory behaviors.</p>
<p>So far we’ve seen how to run the unsupervised pipeline to get both embeddings and cluster assignments, as well as how to compare the results across experimental conditions. In the last part of this tutorial, we’ll explore one of the most important questions you may be asking: how do I know what the clusters mean?</p>
</section>
<section id="Interpreting-clusters-using-SHAP">
<h3>Interpreting clusters using SHAP<a class="headerlink" href="#Interpreting-clusters-using-SHAP" title="Permalink to this heading"></a></h3>
<p>To interpret cluster assignments, DeepOF relies on two complementary approaches. The first one is to train a set of supervised classifiers that can predict cluster assignments given a set of features describing the sliding window input, such as distances, speeds, and areas of different body parts and regions, as well as the supervised annotators we generated in the last tutorial (if provided). For a more detailed description of the included features, refer to either the main DeepOF paper or the
full API reference.</p>
<p>There are three steps in the cluster interpretation pipeline: feature extraction, classifier training, and SHAP value computation.</p>
<p>Let’s start with feature extraction, which is computed using <code class="docutils literal notranslate"><span class="pre">deepof.post_hoc.annotate_time_chunks()</span></code>:</p>
<p><strong>NOTE</strong>: the function below can require a significant amount of memory to run, especially in multi-animal settings. Try to use a work station, if possible.</p>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[43]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># To include supervised annotations and allow DeepOF to report associations between supervised and unsupervised</span>
<span class="c1"># annotations, we&#39;ll quickly run the supervised pipeline once again:</span>
<span class="n">supervised_annotation</span> <span class="o">=</span> <span class="n">my_deepof_project</span><span class="o">.</span><span class="n">supervised_annotation</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[30]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">csds_chunk_stats</span><span class="p">,</span> <span class="n">hard_counts</span><span class="p">,</span> <span class="n">sampled_breaks</span> <span class="o">=</span> <span class="n">deepof</span><span class="o">.</span><span class="n">post_hoc</span><span class="o">.</span><span class="n">annotate_time_chunks</span><span class="p">(</span>
    <span class="n">deepof_project</span><span class="o">=</span><span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="o">=</span><span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="o">=</span><span class="n">breaks</span><span class="p">,</span>
    <span class="n">supervised_annotations</span><span class="o">=</span><span class="n">supervised_annotation</span><span class="p">,</span>
    <span class="n">animal_id</span><span class="o">=</span><span class="s2">&quot;B&quot;</span><span class="p">,</span>
    <span class="n">kin_derivative</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">window_size</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span>
    <span class="n">include_distances</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
    <span class="n">min_confidence</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span>
    <span class="n">include_angles</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
    <span class="n">include_areas</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
    <span class="n">aggregate</span><span class="o">=</span><span class="s2">&quot;mean&quot;</span><span class="p">,</span>
    <span class="n">samples</span><span class="o">=</span><span class="mi">10000</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<p>The function returns three objects. The first one is a data frame with all extracted features over 10000 sampled sliding windows.</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[31]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">csds_chunk_stats</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[31]:
</pre></div>
</div>
<div class="output_area rendered_html docutils container">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>('B_Left_bhip', 'B_Spine_2')_raw</th>
      <th>('B_Spine_2', 'B_Tail_base')_raw</th>
      <th>('B_Left_ear', 'B_Spine_1')_raw</th>
      <th>('B_Center', 'B_Spine_1')_raw</th>
      <th>('B_Nose', 'B_Right_ear')_raw</th>
      <th>('B_Center', 'B_Spine_2')_raw</th>
      <th>('B_Right_ear', 'B_Spine_1')_raw</th>
      <th>('B_Center', 'B_Right_fhip')_raw</th>
      <th>('B_Center', 'B_Left_fhip')_raw</th>
      <th>('B_Left_ear', 'B_Nose')_raw</th>
      <th>...</th>
      <th>B_climbing</th>
      <th>B_sniffing</th>
      <th>B_huddle</th>
      <th>B_lookaround</th>
      <th>B_speed</th>
      <th>W_climbing</th>
      <th>W_sniffing</th>
      <th>W_huddle</th>
      <th>W_lookaround</th>
      <th>W_speed</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>14.012392</td>
      <td>13.711353</td>
      <td>16.483359</td>
      <td>12.663663</td>
      <td>18.265328</td>
      <td>12.887419</td>
      <td>17.041267</td>
      <td>15.891212</td>
      <td>13.749080</td>
      <td>18.749225</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>0.68</td>
      <td>1.00</td>
      <td>0.38648</td>
      <td>1.00</td>
      <td>0.00</td>
      <td>0.36</td>
      <td>0.88</td>
      <td>1.35716</td>
    </tr>
    <tr>
      <th>1</th>
      <td>13.155702</td>
      <td>13.209752</td>
      <td>11.980976</td>
      <td>12.436320</td>
      <td>18.260755</td>
      <td>12.106151</td>
      <td>12.617459</td>
      <td>14.782759</td>
      <td>13.163718</td>
      <td>17.878857</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.44</td>
      <td>0.16</td>
      <td>0.40</td>
      <td>2.29396</td>
      <td>0.32</td>
      <td>0.08</td>
      <td>0.28</td>
      <td>0.36</td>
      <td>3.90640</td>
    </tr>
    <tr>
      <th>2</th>
      <td>13.726682</td>
      <td>13.375427</td>
      <td>14.243417</td>
      <td>14.366591</td>
      <td>14.665421</td>
      <td>13.733933</td>
      <td>14.811886</td>
      <td>14.445219</td>
      <td>16.851083</td>
      <td>15.488552</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>1.00</td>
      <td>1.00</td>
      <td>0.72588</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.16</td>
      <td>5.00052</td>
    </tr>
    <tr>
      <th>3</th>
      <td>11.516789</td>
      <td>11.557501</td>
      <td>16.037991</td>
      <td>10.779699</td>
      <td>15.448852</td>
      <td>10.644129</td>
      <td>13.471453</td>
      <td>11.467528</td>
      <td>13.641417</td>
      <td>16.744137</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>0.92</td>
      <td>0.92</td>
      <td>1.63280</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>13.59880</td>
    </tr>
    <tr>
      <th>4</th>
      <td>13.461746</td>
      <td>16.433635</td>
      <td>16.828114</td>
      <td>16.428387</td>
      <td>18.721800</td>
      <td>16.714565</td>
      <td>16.250577</td>
      <td>14.465136</td>
      <td>15.382699</td>
      <td>17.673269</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.36</td>
      <td>2.47512</td>
      <td>0.16</td>
      <td>0.00</td>
      <td>0.24</td>
      <td>0.44</td>
      <td>3.29576</td>
    </tr>
    <tr>
      <th>...</th>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
    </tr>
    <tr>
      <th>9995</th>
      <td>11.505470</td>
      <td>11.015754</td>
      <td>11.773454</td>
      <td>4.672386</td>
      <td>13.522618</td>
      <td>5.692190</td>
      <td>24.535661</td>
      <td>12.236233</td>
      <td>9.133723</td>
      <td>25.415222</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>0.64</td>
      <td>0.00</td>
      <td>0.49612</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.40</td>
      <td>0.64</td>
      <td>1.73996</td>
    </tr>
    <tr>
      <th>9996</th>
      <td>12.378027</td>
      <td>14.209754</td>
      <td>16.364782</td>
      <td>15.993633</td>
      <td>21.245462</td>
      <td>16.360976</td>
      <td>17.236160</td>
      <td>16.140844</td>
      <td>16.015628</td>
      <td>18.871233</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>0.04</td>
      <td>0.32</td>
      <td>4.14728</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.04</td>
      <td>0.08</td>
      <td>5.88364</td>
    </tr>
    <tr>
      <th>9997</th>
      <td>12.049957</td>
      <td>13.799942</td>
      <td>16.530053</td>
      <td>15.644681</td>
      <td>19.246013</td>
      <td>14.822347</td>
      <td>18.910526</td>
      <td>14.605743</td>
      <td>14.131231</td>
      <td>16.349052</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>8.25072</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.24</td>
      <td>4.95068</td>
    </tr>
    <tr>
      <th>9998</th>
      <td>11.988748</td>
      <td>14.631665</td>
      <td>13.822891</td>
      <td>14.633028</td>
      <td>17.765451</td>
      <td>15.567876</td>
      <td>14.798991</td>
      <td>13.328505</td>
      <td>13.458769</td>
      <td>16.326729</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>0.28</td>
      <td>0.68</td>
      <td>2.13424</td>
      <td>0.00</td>
      <td>0.00</td>
      <td>0.08</td>
      <td>0.24</td>
      <td>3.29396</td>
    </tr>
    <tr>
      <th>9999</th>
      <td>12.381992</td>
      <td>12.935173</td>
      <td>15.581015</td>
      <td>12.309354</td>
      <td>17.167128</td>
      <td>12.451381</td>
      <td>16.191795</td>
      <td>14.332404</td>
      <td>16.668186</td>
      <td>17.068315</td>
      <td>...</td>
      <td>0.0</td>
      <td>0.00</td>
      <td>0.92</td>
      <td>0.96</td>
      <td>0.12968</td>
      <td>0.00</td>
      <td>0.08</td>
      <td>0.32</td>
      <td>0.96</td>
      <td>1.21772</td>
    </tr>
  </tbody>
</table>
<p>10000 rows × 45 columns</p>
</div></div>
</div>
<p>The second one includes all corresponding cluster assignments as hard count integers (notice that we only took assignments that were made with a probability of 0.9 or higher, to select the most representative samples of each cluster).</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[32]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">hard_counts</span><span class="o">.</span><span class="n">values</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[32]:
</pre></div>
</div>
<div class="output_area docutils container">
<div class="highlight"><pre>
array([5, 9, 1, ..., 3, 9, 9])
</pre></div></div>
</div>
<p>Finally, the third one refers to the breaks per sample, as described before.</p>
<p>Let’s now train a multi-output <a class="reference external" href="https://catboost.ai/en/docs/concepts/python-installation">gradient boosting machine</a> to map between features and labels. DeepOF relies on the <code class="docutils literal notranslate"><span class="pre">deepof.post_hoc.train_supervised_cluster_detectors()</span></code> function, which by default runs a <a class="reference external" href="https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedKFold.html">stratified cross-validation</a> loop to check how generalizable the obtained results are within the dataset. We’ll run it with 10
folds:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[33]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">full_cluster_clf</span><span class="p">,</span> <span class="n">cluster_gbm_performance</span><span class="p">,</span> <span class="n">groups</span> <span class="o">=</span> <span class="n">deepof</span><span class="o">.</span><span class="n">post_hoc</span><span class="o">.</span><span class="n">train_supervised_cluster_detectors</span><span class="p">(</span>
    <span class="n">csds_chunk_stats</span><span class="p">,</span> <span class="n">hard_counts</span><span class="p">,</span> <span class="n">sampled_breaks</span><span class="p">,</span> <span class="n">n_folds</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="nboutput docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<div class="highlight"><pre>
Training cross-validated models for performance estimation...
</pre></div></div>
</div>
<div class="nboutput docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area stderr docutils container">
<div class="highlight"><pre>
[Parallel(n_jobs=-1)]: Using backend LokyBackend with 10 concurrent workers.
[Parallel(n_jobs=-1)]: Done   2 out of  10 | elapsed:  2.4min remaining:  9.4min
[Parallel(n_jobs=-1)]: Done  10 out of  10 | elapsed:  2.4min finished
</pre></div></div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<div class="highlight"><pre>
Training on full dataset for feature importance estimation...
Done!
</pre></div></div>
</div>
<p>Great, we got some results! Before moving to interpretation, we can visualize performance using deepof.visuals.plot_cluster_detection_performance(). The ‘visualization’ parameter can take one of two values: ‘confusion_matrix’ and ‘balanced_accuracy’, corresponding to the two panels in the figure below.</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[34]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">ax2</span><span class="p">)</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">8</span><span class="p">))</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_cluster_detection_performance</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">csds_chunk_stats</span><span class="p">,</span>
    <span class="n">cluster_gbm_performance</span><span class="p">,</span>
    <span class="n">hard_counts</span><span class="p">,</span>
    <span class="n">groups</span><span class="p">,</span>
    <span class="n">visualization</span><span class="o">=</span><span class="s2">&quot;confusion_matrix&quot;</span><span class="p">,</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_cluster_detection_performance</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">csds_chunk_stats</span><span class="p">,</span>
    <span class="n">cluster_gbm_performance</span><span class="p">,</span>
    <span class="n">hard_counts</span><span class="p">,</span>
    <span class="n">groups</span><span class="p">,</span>
    <span class="n">visualization</span><span class="o">=</span><span class="s2">&quot;balanced_accuracy&quot;</span><span class="p">,</span>
    <span class="n">save</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
    <span class="n">ax</span><span class="o">=</span><span class="n">ax2</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area stderr docutils container">
<div class="highlight"><pre>
iteritems is deprecated and will be removed in a future version. Use .items instead.
iteritems is deprecated and will be removed in a future version. Use .items instead.
</pre></div></div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_85_1.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_85_1.png" />
</div>
</div>
<p>The confusion matrix on the left shows how the proportion of allocations the model we just trained made in the validation set (all folds are aggregated). The diagonal corresponds then to correct assignments, whereas common errors are shown as off-diagonal high values. This way we can see there are some miss assignments that are more common than others: although the diagonal elements are the highest for all rows, cluster 4 is often confused with cluster 8, for example. This can be interpreted as
a measure of similarity behind the underlying behaviors.</p>
<p>The figure on the right shows the balanced accuracy (which controls for imbalanced data) on the validation set for each fold of the cross-validation loop. Wee see that all clusters perform much higher than random!</p>
<p>With all this out of the way, we’re ready to delve into cluster interpretation. To this end, DeepOF relies in <a class="reference external" href="https://shap.readthedocs.io/en/latest/index.html">Shapley additive explanations (SHAP)</a> a widely adopted toolkit for permutation-based computation of global and local feature importance. Let’s run it and explore the results:</p>
<p><strong>NOTE</strong>: running the cell below can take a considerable amount of time in a large dataset. For didactic purposes, we’ll load the precomputed results here.</p>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[35]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">shap_values</span><span class="p">,</span> <span class="n">explainer</span><span class="p">,</span> <span class="n">data_to_explain</span> <span class="o">=</span> <span class="n">deepof</span><span class="o">.</span><span class="n">post_hoc</span><span class="o">.</span><span class="n">explain_clusters</span><span class="p">(</span>
    <span class="n">csds_chunk_stats</span><span class="p">,</span> <span class="n">hard_counts</span><span class="p">,</span> <span class="n">full_cluster_clf</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="mi">1000</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[42]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;tutorial_files/tutorial_project/Coordinates/SHAP_analysis_results_SI_sa.pkl&quot;</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">handle</span><span class="p">:</span>
    <span class="n">shap_values</span><span class="p">,</span> <span class="n">explainer</span><span class="p">,</span> <span class="n">data_to_explain</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">handle</span><span class="p">)[:</span><span class="mi">3</span><span class="p">]</span>
</pre></div>
</div>
</div>
<p>The function returns the SHAP values (a detailed explanation of which is beyond the scope of this tutorial, although we will explain how to interpret them), the explainer object, and a formatted version of the same data frame with features we saw before. Next, let’s visualize and interpret the results, using <code class="docutils literal notranslate"><span class="pre">deepof.visuals.plot_shap_swarm_per_cluster()</span></code>:</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[37]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_shap_swarm_per_cluster</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">data_to_explain</span><span class="p">,</span>
    <span class="n">shap_values</span><span class="p">,</span>
    <span class="s2">&quot;all&quot;</span><span class="p">,</span>
    <span class="n">show</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_91_0.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_91_0.png" />
</div>
</div>
<p>The <em>x</em> axis in the figure above depicts the average absolute SHAP values, a measure of feature importance. The <em>y</em> axis shows the names of the top 8 features the model uses to detect across all clusters. Here, we’re looking at <strong>global</strong> feature importance for the model; even though this plot is not very informative regarding individual clusters, we can indeed interpret that the most important features overall are speed, spine stretch (distance between the center of the animal and spine 1 — see
the scheme in the landing page of the documentation for details), and the huddle classifier.</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[38]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">plot_shap_swarm_per_cluster</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">data_to_explain</span><span class="p">,</span>
    <span class="n">shap_values</span><span class="p">,</span>
    <span class="n">cluster</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">show</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="nboutput docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area stderr docutils container">
<div class="highlight"><pre>
No data for colormapping provided via &#39;c&#39;. Parameters &#39;vmin&#39;, &#39;vmax&#39; will be ignored
</pre></div></div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area docutils container">
<img alt="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_93_1.png" src="../_images/tutorial_notebooks_deepof_unsupervised_tutorial_93_1.png" />
</div>
</div>
<p>Selecting any cluster in the ‘cluster’ parameter will render a different kind of plot. What we’re looking now is called a bee swarm plot, and it’s one of the main visualizations the SHAP package has to offer. The y-axis is the same as before (but it’s now based on feature importance to detect the cluster that was specifically selected). The <em>x</em> axis, however, shows the raw SHAP values instead of the global absolute value. Positive values indicate an association with the model selecting this
specific cluster, whereas negative values indicate an association with the model selecting against this specific cluster. Finally, the color indicates the underlying feature value.</p>
<p>Thus, interpretation lies in detecting associations between the sign of the SHAP values and their color. Red values to the right mean positive associations between a feature and a cluster, whereas blue values on the right mean a negative association. Let’s see an example to make it more explicit.</p>
<p>Go to cluster 1, which we saw it’s significantly enriched in stressed animals (especially in the first time bin). We see there seems to be a negative association with speed, and a positive association with huddling! This makes a lot of sense for a stressed animal in this context.</p>
<p>One of the main advantages of working with video data, however, is that we can directly visualize samples representing each cluster. DeepOF offers two main functions to do this, which, in combination with the SHAP pipeline we just covered, can be a pretty powerful tool. Let’s see!</p>
</section>
<section id="Exporting-cluster-video-snippets">
<h3>Exporting cluster video snippets<a class="headerlink" href="#Exporting-cluster-video-snippets" title="Permalink to this heading"></a></h3>
<p>First, we can use the same animation function we saw in the first tutorial, with a few additions. If we pass the embeddings and soft_counts objects into the embedding and cluster_assignments parameters respectively, as well as a specific video to experiment_id, and the index of a selected_cluster, an animated figure with two panels will be created.</p>
<p>The panel on the left shows the embeddings for the whole video, colored by assigned cluster, and marks the current frame with an animated red cursor. The panel on the right shows a representation of the selected frames as an animated video. Note that both animals are shown in the panel on the right, with the experimental subject depicted in blue. We see that the C57Bl6’s behavior matches closely what was described above!</p>
<div class="nbinput docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[40]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">video</span> <span class="o">=</span> <span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">animate_skeleton</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">embedding</span><span class="o">=</span><span class="n">embeddings</span><span class="p">,</span>
    <span class="n">cluster_assignments</span><span class="o">=</span><span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">experiment_id</span><span class="o">=</span><span class="s2">&quot;20191204_Day2_SI_JB08_Test_54&quot;</span><span class="p">,</span>
    <span class="n">frame_limit</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span>
    <span class="n">selected_cluster</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">dpi</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span>
    <span class="n">center</span><span class="o">=</span><span class="s2">&quot;arena&quot;</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">html</span> <span class="o">=</span> <span class="n">display</span><span class="o">.</span><span class="n">HTML</span><span class="p">(</span><span class="n">video</span><span class="p">)</span>
<span class="n">display</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="nboutput docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area stderr docutils container">
<div class="highlight"><pre>
Mean of empty slice.
invalid value encountered in divide
</pre></div></div>
</div>
<div class="nboutput nblast docutils container">
<div class="prompt empty docutils container">
</div>
<div class="output_area rendered_html docutils container">
<video width="640" height="320" controls autoplay loop>
  <source type="video/mp4" src="data:video/mp4;base64,AAAAIGZ0eXBNNFYgAAACAE00ViBpc29taXNvMmF2YzEAAAAIZnJlZQABbPBtZGF0AAACrwYF//+r
3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2NCByMzA5NSBiYWVlNDAwIC0gSC4yNjQvTVBF
Ry00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMiAtIGh0dHA6Ly93d3cudmlkZW9sYW4u
b3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFs
eXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVk
X3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBk
ZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTEw
IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50
ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MyBi
X3B5cmFtaWQ9MiBiX2FkYXB0PTEgYl9iaWFzPTAgZGlyZWN0PTEgd2VpZ2h0Yj0xIG9wZW5fZ29w
PTAgd2VpZ2h0cD0yIGtleWludD0yNTAga2V5aW50X21pbj0xMiBzY2VuZWN1dD00MCBpbnRyYV9y
ZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9MSBjcmY9MjMuMCBxY29tcD0w
LjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAA
rVpliIQAEP/+94G/MstfHnvwXnFxEuAhqncxtS3/6U721P5hq8yXKGcuStg1wmF3r9PgNM9Wf6J6
t4TfCid0WE56Dik+WYlx47SNAlth+7qwXwnoVEU5B2SfRpVxHY2yIR/pEkqNR+CPuTWJrW1EtxNc
mD2l7s14EyxbHhsB0qsqoyGfPA85ihm1pjQRxM8NRDcpUYWkkQxCmXoVFbLx274Uu1/0SGxY2SaQ
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
AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAANWF2Y0MBZAAW/+EAGGdk
ABas2UCgKaEAAAMAAgAAAwAyDxYtlgEABmjr48siwP34+AAAAAAcdXVpZGtoQPJfJE/FujmlG88D
I/MAAAAAAAAAGHN0dHMAAAAAAAAAAQAAAJYAAAQAAAAAFHN0c3MAAAAAAAAAAQAAAAEAAASwY3R0
cwAAAAAAAACUAAAAAQAACAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABQA
AAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAA
AAABAAAMAAAAAAEAAAQAAAAAAQAADAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAA
AAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAA
AQAAAAAAAAABAAAEAAAAAAEAAAwAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAAB
AAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEA
AAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABQAAAAAAQAA
CAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAU
AAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQA
AAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAA
AAABAAAEAAAAAAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAA
AAEAAAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABQAAAAA
AQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAEAAAAAACAAAEAAAAAAEAAAgAAAAAAQAAFAAAAAAB
AAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEA
AAwAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAABQAAAAAAQAA
CAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAM
AAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAMAAAAAAEAAAQA
AAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAQAAAAAAIAAAQAAAAAAQAAFAAA
AAABAAAIAAAAAAEAAAAAAAAAAQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAA
AAEAABQAAAAAAQAACAAAAAABAAAAAAAAAAEAAAQAAAAAAQAAFAAAAAABAAAIAAAAAAEAAAAAAAAA
AQAABAAAAAABAAAUAAAAAAEAAAgAAAAAAQAAAAAAAAABAAAEAAAAAAEAAAwAAAAAAQAABAAAAAAc
c3RzYwAAAAAAAAABAAAAAQAAAJYAAAABAAACbHN0c3oAAAAAAAAAAAAAAJYAALARAAAFQAAAAQcA
AACsAAAArAAAAokAAADYAAAAsAAAAHoAAAHKAAAAsgAAAFcAAACMAAABxAAAAHIAAADeAAAAlwAA
AboAAADJAAAAkgAAAH4AAAH+AAAAnwAAAG0AAACNAAACZQAAAK0AAABwAAAAbgAAAMcAAABeAAAC
aAAAAQoAAACaAAAAfgAAAkEAAACxAAAAoQAAAK4AAAI5AAAA2gAAAJoAAACCAAACUwAAAN8AAABl
AAAAjQAAAcoAAACdAAAAbgAAAE8AAAFXAAAAsQAAAI8AAACJAAACPgAAAPgAAACQAAAAhgAAA28A
AAFxAAAAkAAAARMAAAJ3AAABGwAAANAAAADLAAACTwAAARYAAAEAAAAAowAAAfAAAADVAAAAoQAA
AIsAAAJvAAABUgAAAL8AAADbAAACbgAAASoAAADNAAAA/wAABScAAAGyAAAA7QAAASMAAALgAAAB
OAAAARkAAAINAAADEgAAAU0AAACMAAAAzgAAArYAAAFeAAAA4QAAAPoAAAJCAAAA6AAAAoUAAAEV
AAAAoAAAANYAAAGNAAABFwAAANsAAACqAAAEtQAAAkQAAAFdAAAA2gAAArwAAAC6AAAC5QAAAXEA
AAC/AAAAtgAAAsMAAACtAAAC2AAAARwAAACkAAAArAAAAmIAAADUAAAAwwAAAkIAAADLAAAAwwAA
AJAAAAHwAAAAugAAAJgAAACwAAABxQAAAOgAAACBAAAAuQAABKMAAAFeAAAA8gAAAQgAAAH2AAAB
fAAAAOMAAADgAAAA9AAAAKEAAAAUc3RjbwAAAAAAAAABAAAAMAAAAGJ1ZHRhAAAAWm1ldGEAAAAA
AAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRh
AAAAAQAAAABMYXZmNTkuMjcuMTAw
">
  Your browser does not support the video tag.
</video></div>
</div>
<p>Moreover, <code class="docutils literal notranslate"><span class="pre">deepof.visuals.export_annotated_video()</span></code> can output direct samples taken from the dataset into a real video. The function will concatenate samples from all available experiments, and generate a video with samples from each cluster. The parameter frame_limit_per_video controls how many frames per video should be included (to prevent the output from ending up being too large, especially in big datasets). Let’s indeed run it, and load some samples from cluster 1 and into the notebook!
The legend below shows the experiment from which each sample was taken.</p>
<div class="nbinput nblast docutils container">
<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[41]:
</pre></div>
</div>
<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">deepof</span><span class="o">.</span><span class="n">visuals</span><span class="o">.</span><span class="n">export_annotated_video</span><span class="p">(</span>
    <span class="n">my_deepof_project</span><span class="p">,</span>
    <span class="n">soft_counts</span><span class="p">,</span>
    <span class="n">breaks</span><span class="p">,</span>
    <span class="n">frame_limit_per_video</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<p><img alt="f3605f8e4e204635a41f8549ba0b1fdf" class="no-scaled-link" src="../_images/deepof_unsupervised_annotation_cluster_1_sample_AdobeExpress.gif" style="width: 350px;" /></p>
</section>
<section id="Wrapping-up">
<h3>Wrapping up<a class="headerlink" href="#Wrapping-up" title="Permalink to this heading"></a></h3>
<p>Thank you for making it until the end. In this three-part tutorial series, we covered how to load data into DeepOF, and how to run and interpret results in both supervised and unsupervised pipelines. The fourth (optional) tutorial deals with using custom labelling schemes, and can be found <a class="reference external" href="https://deepof.readthedocs.io/en/latest/tutorial_notebooks/deepof_custom_labels_tutorial.html">here</a>. Stay tuned for more content, and make sure to raise an
<a class="reference external" href="https://github.com/mlfpm/deepof/issues">issue</a> in our GitHub repository if you have any questions!</p>
</section>
</section>
</section>


           </div>
          </div>
          <footer>

  <hr/>

  <div role="contentinfo">
    <p>&#169; Copyright 2024, Lucas Miranda.</p>
  </div>

  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    provided by <a href="https://readthedocs.org">Read the Docs</a>.
   

</footer>
        </div>
      </div>
    </section>
  </div>
  <script>
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script> 

</body>
</html>