{ "cells": [ { "cell_type": "markdown", "id": "2780fd26", "metadata": {}, "source": [ "# Formatting your data: feature extraction from motion tracking output" ] }, { "cell_type": "markdown", "id": "874e3ada", "metadata": {}, "source": [ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lucasmiranda42/deepof/blob/master/docs/source/tutorial_notebooks/deepof_preprocessing_tutorial.ipynb)" ] }, { "cell_type": "markdown", "id": "b059b912", "metadata": {}, "source": [ "##### What we'll cover:\n", " \n", "* Create and run a project.\n", "* Load a previously generated project.\n", "* Interact with your project: generate coordinates, distances, angles, and areas.\n", "* Exploratory visualizations: heatmaps and processed animations." ] }, { "cell_type": "code", "execution_count": 1, "id": "25ccbea4", "metadata": {}, "outputs": [], "source": [ "# # If using Google colab, uncomment and run this cell and the one below to set up the environment\n", "# # Note: becasuse of how colab handles the installation of local packages, this cell will kill your runtime.\n", "# # This is not an error! Just continue with the cells below.\n", "# import os\n", "# !git clone -q https://github.com/mlfpm/deepof.git\n", "# !pip install -q -e deepof --progress-bar off\n", "# os.chdir(\"deepof\")\n", "# !curl --output tutorial_files.zip https://datashare.mpcdf.mpg.de/s/knF7t78isQuIAr0/download\n", "# !unzip tutorial_files.zip\n", "# os.kill(os.getpid(), 9)" ] }, { "cell_type": "code", "execution_count": 2, "id": "80e4b2fc", "metadata": {}, "outputs": [], "source": [ "# os.chdir(\"deepof\")\n", "# import os, warnings\n", "# warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "id": "7632cba8", "metadata": {}, "source": [ "Let's start by importing some packages. We'll use python's os library to handle paths, pickle to load saved objects, pandas to load data frames, and the data entry API within DeepOF, located in deepof.data" ] }, { "cell_type": "code", "execution_count": 3, "id": "4d85f5bf", "metadata": { "scrolled": false }, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "import pickle\n", "import deepof.data" ] }, { "cell_type": "markdown", "id": "ffdcefa1", "metadata": {}, "source": [ "We'll also need some plotting gear:" ] }, { "cell_type": "code", "execution_count": 4, "id": "e438d39f", "metadata": {}, "outputs": [], "source": [ "import deepof.visuals\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "id": "9fd9cdbb", "metadata": {}, "source": [ "### Creating and running a project" ] }, { "cell_type": "markdown", "id": "1465ef19", "metadata": {}, "source": [ "With that out of the way, the first thing to do when starting a DeepOF project is to load your videos and DeepLabCut tracking files into a deepof.data.Project object. \n", "\n", "Like depicted in the cell below, the three crucial parameters to input are the project, video and tab paths. \n", "\n", "* project_path specifies where the project folder containing all processing and output files will be created.\n", "* video_path points towards where your DLC or SLEAP labelled videos are stored.\n", "* similarly, table_path should point to the directory containing all tracking files (see section on supported input files below).\n", "* last but not least, you can give your project a name (optional; _deepof_project_ by default)." ] }, { "cell_type": "markdown", "id": "50dcb2d8", "metadata": {}, "source": [ "The dataset used in this tutorial is a subset of the social interaction (SI) dataset used in DeepOF's original paper. It contains six 10-minute-long videos with two animals (a C57Bl6 and a CD1) tracked in a round arena, tracked with DeepLabCut. Three of the C57Bl6 mice have been exposed to chronic social defeat stress (CSDS)." ] }, { "cell_type": "code", "execution_count": 5, "id": "88c90e17", "metadata": {}, "outputs": [], "source": [ "my_deepof_project_raw = deepof.data.Project(\n", " project_path=os.path.join(\"tutorial_files\"),\n", " video_path=os.path.join(\"tutorial_files/Videos/\"),\n", " table_path=os.path.join(\"tutorial_files/Tables/\"),\n", " project_name=\"deepof_tutorial_project\",\n", " arena=\"circular-autodetect\",\n", " animal_ids=[\"B\", \"W\"],\n", " table_format=\"h5\",\n", " video_format=\".mp4\",\n", " exclude_bodyparts=[\"Tail_1\", \"Tail_2\", \"Tail_tip\"],\n", " video_scale=380,\n", " smooth_alpha=1,\n", " exp_conditions=None,\n", ")" ] }, { "cell_type": "markdown", "id": "dae0d5c8", "metadata": {}, "source": [ "As you may see, there are some extra (optional) parameters in the call above. These specify some details on how the videos and tracks will be processed. Some include:\n", "\n", "* arena: some functions within DeepOF (as you will see in the next tutorial on supervised annotations) require the program to detect the arena. The following section explains how to handle this step in more detail.\n", "* animal_ids: in case more than one animal is present in the dataset, the IDs assigned to each during tracking need to be specified as a list. For SLEAP projects, this will be detected automatically, but can be overriten.\n", "* exclude_body_parts: while DeepOF originally relies on 14 body part tracking models, body parts along the tail are no longer used. This step could be bypassed using smaller models following an 11-body-part scheme, such as the one presented in the landing page of the documentation. Custom labelling schemes are also supported (see tutorials).\n", "* video_scale: diameter of the arena (in mm) if circular. In the case of polygonal arenas, the length (in mm) of the first edge as specified in the GUI (see next section) should be provided.\n", "* smooth_alpha: smoothing intensity. The higher the value, the more smoothing is applied.\n", "* exp_conditions: dictionary with a video IDs as keys, and data frames with all experimental conditions as values. DeepOF will use this information to enable all sorts of comparisons between conditions, as we will see in the following tutorials. We'll leave it blank for now and update it afterwards.\n", "\n", "For more details, feel free to visit the [full API reference](https://deepof.readthedocs.io/en/latest/#full-api-reference)." ] }, { "cell_type": "markdown", "id": "02ed7ba0", "metadata": {}, "source": [ "Let's then create our first project, by running the `.create()` method in our newly created object:" ] }, { "cell_type": "code", "execution_count": 6, "id": "d2f00bc8", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Setting up project directories...\n", "Loading trajectories...\n", "Smoothing trajectories...\n", "Interpolating outliers...\n", "Iterative imputation of ocluded bodyparts...\n", "Detecting arena...\n", "Computing distances...\n", "Computing angles...\n", "Computing areas...\n", "Done!\n" ] } ], "source": [ "my_deepof_project = my_deepof_project_raw.create(force=True)" ] }, { "cell_type": "markdown", "id": "12931c30", "metadata": {}, "source": [ "**NOTE**: the `force` parameter allows DeepOF to override an existing project in the same directory. Use with caution!\n", "\n", "**NOTE 2**: the cell above can take a significant amount of time to run in Google colab. Feel free to skip and continue with the loaded results below." ] }, { "cell_type": "markdown", "id": "25a9dc76", "metadata": {}, "source": [ "As you will see, this organizes all required file into a folder in the specified path. Moreover, some processing steps are computed on the go, such as distances, angles and areas. This makes it easier for DeepOF to load all required features later on, without the need to compute them every time." ] }, { "cell_type": "markdown", "id": "870c5c70", "metadata": {}, "source": [ "### Arena detection" ] }, { "cell_type": "markdown", "id": "9a0c3bbc", "metadata": {}, "source": [ "As mentioned above, one of the key aspects of project creation involves setting up the arena detection mechanism, which will be used in downstream tasks, such as climbing detection and overall video scaling.\n", "\n", "You can contrAlong these lines, the package provides tools for detecting elliptical arenas specifically (as seen in this tutorial), and general polygonal shapes (such as squares, rectangles, Y-mazes, etc).\n", "\n", "In principle, DeepOF can detect your arenas automatically by relying in [SAM (Segment Anything Model)](https://segment-anything.com/), a state-of-the-art image segmentation deep learning model. By selecting `arena='circular-autodetect'`, or `arena='polygonal-autodetect'`, users can benefit from this approach. A folder named `Arena_detection` will be created in your project directory, which contains samples of the detected arenas for all videos, so you can visually inspect if DeepOF did a good job.\n", "\n" ] }, { "cell_type": "markdown", "id": "a9d1b43b", "metadata": {}, "source": [ "Moreover, manual annotation can be selected using `arena='circular-manual'`, and `arena='polygonal-manual'`. In this case, you will see a window per video appear, allowing you to manually mark where the arena is with just a few clicks. All results will be stored for further processing.\n", "\n", "Here, clicking anywhere in the video will make an orange marker appear. In the case of polygonal arenas, at least a marker per corner should be used. When dealing with circular (or elliptical) arenas, DeepOF will fit an ellipse to the marked points after a minimum of 5 clicks. The ellipse can always be refined by adding more markers. Once finished with a video, press `q` to save and move to the next one. If you made a mistake and would like to correct it, press `d` to delete the last added marker. Moreover, after you tagged at least one video, you'll see the `p` option appear, which will copy the last marked arena to all remaining videos in the dataset.\n", "\n", "**NOTE**: If you select `arena='polygonal-autodetect'`, you will still be prompted with the GUI to select the arena just once, so SAM roughly knows how the segmentation it should return looks like. Detection in all remaining videos will be automatic. This is not the case for `arena='circular-autodetect'`, as we already know we're looking for a circle." ] }, { "cell_type": "markdown", "id": "d82da5cc", "metadata": {}, "source": [ "![arena_GUI](./Assets/arena_GUI.png)" ] }, { "cell_type": "markdown", "id": "5398d2a3", "metadata": {}, "source": [ "One last thing is that, in polygonal arenas, the first edge you input will be used to scale the coordinates to the proper distances (pixels to millimeters). Make sure you always mark the same edge first, and that it coincides with the length passed to the \"video_scale\" parameter when creating the project. In saved images of automatically detected polygons, you'll see orange circles marking two arena corners. These should match the first edge you selected when prompting SAM, ensuring data is properly scaled." ] }, { "cell_type": "markdown", "id": "750fc0b5", "metadata": {}, "source": [ "If after all this work you make a mistake while labelling, or see that automatic detection failed in some cases, don't worry! You can always edit manually annotated arenas (or rerun automatic annotation) for specific videos using the `.edit_arenas()` method. Just pass a list with the IDs of the videos you would like to relabel, and the GUI will pop up once again. The same methods described above can be passed to the `arena_type` parameter.\n", "\n", "**NOTE**: If you don't pass any video IDs, all videos will be selected by default." ] }, { "cell_type": "code", "execution_count": 7, "id": "0ea914c2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Editing 2 arenas\n", "Done!\n" ] } ], "source": [ "my_deepof_project.edit_arenas(\n", " videos=['20191204_Day2_SI_JB08_Test_54', '20191204_Day2_SI_JB08_Test_62'],\n", " arena_type=\"circular-autodetect\",\n", ")" ] }, { "cell_type": "markdown", "id": "8dbb3737", "metadata": {}, "source": [ "### Supported input tracking files:" ] }, { "cell_type": "markdown", "id": "3249c4f1", "metadata": {}, "source": [ "DeepOF currently supports input from both [DeepLabCut](url_here) and [SLEAP](url_here). While DeepOF will try to detect automatically which file type you're trying to use, this can be forced with the `table_format` parameter in the `deepof.data.Project()` call depicted in the previous section.\n", "\n", "For DeepLabCut, we support:\n", "\n", "* Single and multi-animal project CSV files (indicated simply with `table_format='csv'`.\n", "* Single and multi-animal project h5 files (indicated simply with `table_format='h5'`.\n", "\n", "For SLEAP, you can use:\n", "\n", "* SLP files (indicated as with `table_format='slp'`.\n", "* Raw .npy files (indicated with `table_format='npy'`.\n", "* h5 files (indicated with `table_format=analysis.h5`.\n", "\n", "Downstream processing should be identical regardless of the files selected, as DeepOF internally brings all these inputs into an equivalent representation. Let's continue!" ] }, { "cell_type": "markdown", "id": "a99d8cf5", "metadata": {}, "source": [ "### Loading a previously generated project" ] }, { "cell_type": "markdown", "id": "0651bdc8", "metadata": {}, "source": [ "Once you ran your project at least once, it can be loaded without much effort from the path you specified in the first place (plus the project name -_deepof_project_, if you didn't specify otherwise-)." ] }, { "cell_type": "code", "execution_count": 8, "id": "899cbab7", "metadata": {}, "outputs": [], "source": [ "# Load a previously saved project\n", "my_deepof_project = deepof.data.load_project(\"./tutorial_files/deepof_tutorial_project/\")" ] }, { "cell_type": "markdown", "id": "63a8e268", "metadata": {}, "source": [ "### Extend a previously generated project" ] }, { "cell_type": "markdown", "id": "b86e9f8d", "metadata": {}, "source": [ "If you'd like to add data (videos and tracks) to a previously processed project, you can use the `extend` method instead of `create`. Just pass the path to your previously processed project, and DeepOF will take care of merging the two. A new directory will be created with all files corresponding to the merged projects.\n", "\n", "**NOTE**: Your old files will not be deleted." ] }, { "cell_type": "code", "execution_count": 9, "id": "b0a85240", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading previous project...\n", "Processing data from 0 experiments...\n", "No new experiments to process. Exiting...\n" ] } ], "source": [ "# Extend a previously saved project\n", "my_deepof_project_raw.extend(\"./tutorial_files/deepof_tutorial_project/\")" ] }, { "cell_type": "markdown", "id": "7079cbfb", "metadata": {}, "source": [ "### Interacting with your project: generating coordinates, distances, angles, and areas." ] }, { "cell_type": "markdown", "id": "73f40230", "metadata": {}, "source": [ "That's it for basic project creation. We now have a DeepOF project up and running! Before ending the tutorial, however, let's explore the object that the commands above produced." ] }, { "cell_type": "markdown", "id": "3a24e71c", "metadata": {}, "source": [ "For starters, if we print it, we see it's a DeepOF analysis of 6 videos. Furthermore, the object belongs to a custom class within DeepOF, called Coordinates. This class allows the package to store all sorts of relevant information required for further processing, as we'll see below:" ] }, { "cell_type": "code", "execution_count": 11, "id": "ee51de4a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deepof analysis of 6 videos\n", "\n" ] } ], "source": [ "print(my_deepof_project)\n", "print(type(my_deepof_project))" ] }, { "cell_type": "markdown", "id": "16891425", "metadata": {}, "source": [ "As described before, the `.create()` method runs most of the heavy preprocessing already, which allows us to extract features including coordinates, distances, angles, and areas. Let's see how that works!" ] }, { "cell_type": "markdown", "id": "c887b0e9", "metadata": {}, "source": [ "![preprocessing](./Assets/deepof_preprocessing.png)" ] }, { "cell_type": "markdown", "id": "787fae4a", "metadata": {}, "source": [ "With the `.get_coords()` method, for example, we can obtain the processed (smooth and imputed) tracks for all videos in a dictionary. The returned objects are called table dictionaries (TableDict is the name of the class). They follow a dictionary-like structure, where each value is a data frame. They also provide a plethora of extra methods, some of which we'll cover in these tutorials. Let's retrieve these for one of the animals:" ] }, { "cell_type": "code", "execution_count": 12, "id": "e94d1215", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
B_Spine_1B_CenterB_Left_bhipB_Left_earB_Left_fhip...W_Right_bhipW_Right_earW_Right_fhipW_Spine_2W_Tail_base
xyxyxyxyxy...xyxyxyxyxy
00:00:000.017.0412830.00.016.235626-9.2864062.33814935.82601714.52070816.191088...-11.115287-13.877286-11.05677352.165913-10.83744311.9006071.303025-19.189055-9.987794-46.786090
00:00:00.0399359950.016.4751670.00.015.143549-10.1501720.67167235.83624414.18355914.703795...-13.884385-18.083860-11.63460853.793769-13.45734112.3567391.828954-24.439299-1.620732-48.755033
00:00:00.0798719910.016.4460490.00.011.477393-12.3961840.09705835.00512313.71617613.898245...-15.550991-13.873025-12.43916153.259569-14.28400212.8084600.793345-21.1640991.765989-41.624561
00:00:00.1198079870.015.2174710.00.010.208930-14.160422-0.35894435.31523815.23037011.435026...-14.469009-16.138564-11.96174352.265874-14.57150413.2107021.309584-22.1655082.815459-42.444154
00:00:00.1597439820.015.0376610.00.010.836279-15.2200160.86158834.32499514.98476810.471671...-14.028915-18.169221-19.96107349.485545-14.90060411.3233891.955114-22.4478532.289354-44.418900
..................................................................
00:09:58.8003200210.017.3832520.00.015.964064-11.92535610.65666135.40510314.81041811.274649...-20.815692-6.861448-17.30291931.105013-12.21051810.521213-6.286187-15.291244-18.448989-26.719926
00:09:58.8402560170.015.0694700.00.015.782188-13.4773027.24166939.23872314.8178909.091584...-20.930728-7.043085-17.31745231.011691-12.25944610.426808-6.220324-15.480332-18.379192-26.895317
00:09:58.8801920120.019.4354570.00.012.847697-11.5653327.62254142.24259214.85151112.187561...-20.912197-7.052485-17.36228730.948820-12.23903910.390575-6.179682-15.503151-18.331690-26.956528
00:09:58.9201280080.019.4354570.00.012.847697-11.5653327.62254142.24259214.85151112.187561...-20.912197-7.052485-17.36228730.948820-12.23903910.390575-6.179682-15.503151-18.331690-26.956528
00:09:58.9600640040.019.4354570.00.012.847697-11.5653327.62254142.24259214.85151112.187561...-20.912197-7.052485-17.36228730.948820-12.23903910.390575-6.179682-15.503151-18.331690-26.956528
\n", "

14999 rows × 44 columns

\n", "
" ], "text/plain": [ " B_Spine_1 B_Center B_Left_bhip \\\n", " x y x y x y \n", "00:00:00 0.0 17.041283 0.0 0.0 16.235626 -9.286406 \n", "00:00:00.039935995 0.0 16.475167 0.0 0.0 15.143549 -10.150172 \n", "00:00:00.079871991 0.0 16.446049 0.0 0.0 11.477393 -12.396184 \n", "00:00:00.119807987 0.0 15.217471 0.0 0.0 10.208930 -14.160422 \n", "00:00:00.159743982 0.0 15.037661 0.0 0.0 10.836279 -15.220016 \n", "... ... ... ... ... ... ... \n", "00:09:58.800320021 0.0 17.383252 0.0 0.0 15.964064 -11.925356 \n", "00:09:58.840256017 0.0 15.069470 0.0 0.0 15.782188 -13.477302 \n", "00:09:58.880192012 0.0 19.435457 0.0 0.0 12.847697 -11.565332 \n", "00:09:58.920128008 0.0 19.435457 0.0 0.0 12.847697 -11.565332 \n", "00:09:58.960064004 0.0 19.435457 0.0 0.0 12.847697 -11.565332 \n", "\n", " B_Left_ear B_Left_fhip ... \\\n", " x y x y ... \n", "00:00:00 2.338149 35.826017 14.520708 16.191088 ... \n", "00:00:00.039935995 0.671672 35.836244 14.183559 14.703795 ... \n", "00:00:00.079871991 0.097058 35.005123 13.716176 13.898245 ... \n", "00:00:00.119807987 -0.358944 35.315238 15.230370 11.435026 ... \n", "00:00:00.159743982 0.861588 34.324995 14.984768 10.471671 ... \n", "... ... ... ... ... ... \n", "00:09:58.800320021 10.656661 35.405103 14.810418 11.274649 ... \n", "00:09:58.840256017 7.241669 39.238723 14.817890 9.091584 ... \n", "00:09:58.880192012 7.622541 42.242592 14.851511 12.187561 ... \n", "00:09:58.920128008 7.622541 42.242592 14.851511 12.187561 ... \n", "00:09:58.960064004 7.622541 42.242592 14.851511 12.187561 ... \n", "\n", " W_Right_bhip W_Right_ear \\\n", " x y x y \n", "00:00:00 -11.115287 -13.877286 -11.056773 52.165913 \n", "00:00:00.039935995 -13.884385 -18.083860 -11.634608 53.793769 \n", "00:00:00.079871991 -15.550991 -13.873025 -12.439161 53.259569 \n", "00:00:00.119807987 -14.469009 -16.138564 -11.961743 52.265874 \n", "00:00:00.159743982 -14.028915 -18.169221 -19.961073 49.485545 \n", "... ... ... ... ... \n", "00:09:58.800320021 -20.815692 -6.861448 -17.302919 31.105013 \n", "00:09:58.840256017 -20.930728 -7.043085 -17.317452 31.011691 \n", "00:09:58.880192012 -20.912197 -7.052485 -17.362287 30.948820 \n", "00:09:58.920128008 -20.912197 -7.052485 -17.362287 30.948820 \n", "00:09:58.960064004 -20.912197 -7.052485 -17.362287 30.948820 \n", "\n", " W_Right_fhip W_Spine_2 W_Tail_base \\\n", " x y x y x \n", "00:00:00 -10.837443 11.900607 1.303025 -19.189055 -9.987794 \n", "00:00:00.039935995 -13.457341 12.356739 1.828954 -24.439299 -1.620732 \n", "00:00:00.079871991 -14.284002 12.808460 0.793345 -21.164099 1.765989 \n", "00:00:00.119807987 -14.571504 13.210702 1.309584 -22.165508 2.815459 \n", "00:00:00.159743982 -14.900604 11.323389 1.955114 -22.447853 2.289354 \n", "... ... ... ... ... ... \n", "00:09:58.800320021 -12.210518 10.521213 -6.286187 -15.291244 -18.448989 \n", "00:09:58.840256017 -12.259446 10.426808 -6.220324 -15.480332 -18.379192 \n", "00:09:58.880192012 -12.239039 10.390575 -6.179682 -15.503151 -18.331690 \n", "00:09:58.920128008 -12.239039 10.390575 -6.179682 -15.503151 -18.331690 \n", "00:09:58.960064004 -12.239039 10.390575 -6.179682 -15.503151 -18.331690 \n", "\n", " \n", " y \n", "00:00:00 -46.786090 \n", "00:00:00.039935995 -48.755033 \n", "00:00:00.079871991 -41.624561 \n", "00:00:00.119807987 -42.444154 \n", "00:00:00.159743982 -44.418900 \n", "... ... \n", "00:09:58.800320021 -26.719926 \n", "00:09:58.840256017 -26.895317 \n", "00:09:58.880192012 -26.956528 \n", "00:09:58.920128008 -26.956528 \n", "00:09:58.960064004 -26.956528 \n", "\n", "[14999 rows x 44 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_deepof_project.get_coords(polar=False, center=\"Center\", align=\"Spine_1\")['20191204_Day2_SI_JB08_Test_54']" ] }, { "cell_type": "markdown", "id": "127fe5bb", "metadata": {}, "source": [ "Note that there are a few parameters you can pass to the `.get_coords()` method. If \"polar\" is set to True, polar coordinates will be used, instead of Cartesian. Both \"center\" and \"align\" control how translational and rotational variance are removed from the data: the former will use the specified body part as [0, 0] (or the center of the arena, if set to \"arena\"). The latter will rotate the mice on each time point, to align the line connecting the body parts specified in the \"center\" and \"align\" parameters with the y-axis." ] }, { "cell_type": "markdown", "id": "6ca1106c", "metadata": {}, "source": [ "Furthermore, not only processed coordinates can be retrieved, but also distances, angles, and areas with the .get_distances(), .get_angles(), and .get_areas(), respectively." ] }, { "cell_type": "code", "execution_count": 13, "id": "c78ad39f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
(B_Nose, B_Right_ear)(B_Tail_base, W_Tail_base)(W_Center, W_Right_fhip)(B_Center, B_Left_fhip)(W_Left_ear, W_Spine_1)(W_Left_ear, W_Nose)(B_Tail_base, W_Nose)(W_Center, W_Spine_2)(B_Right_bhip, B_Spine_2)(W_Center, W_Spine_1)...(B_Right_ear, B_Spine_1)(W_Spine_2, W_Tail_base)(B_Left_ear, B_Nose)(B_Center, B_Spine_1)(B_Nose, W_Tail_base)(W_Nose, W_Right_ear)(B_Left_bhip, B_Spine_2)(W_Center, W_Left_fhip)(B_Nose, W_Nose)(B_Spine_2, B_Tail_base)
00:00:0018.78172897.70978613.04136917.62148027.05596218.834943148.04804615.58343911.30401619.977755...14.23938824.15910915.89069713.807436115.08617522.83462615.22900818.574999197.20934314.568245
00:00:00.03993599516.395499102.88881714.80289916.55289425.75716019.117538156.96205819.85693611.57162021.885587...14.69317419.89872815.27144813.348749118.01841821.85228115.19908120.296875201.89777714.454055
00:00:00.07987199115.057738112.51325915.54488015.82126327.57262222.222081165.29534617.15992811.41260419.920155...14.42918416.59649415.17032513.325157122.65271624.79130514.60072520.121680202.54391714.753496
00:00:00.11980798715.112614119.62621915.93612915.43117129.02633820.982981171.18025917.99057811.97795220.211183...15.58183116.47569916.03828612.329721122.47490124.70541914.74184419.739289201.43963915.937254
00:00:00.15974398216.235095123.35146115.16345114.81199126.42418621.167892174.25349318.25688012.85773121.018731...15.98976917.80376118.02833812.184032121.77563922.79068114.97754120.680558200.69646015.523106
..................................................................
00:09:58.80032002122.674736231.73264713.05942915.08138418.86656623.477526172.65073313.39556413.64753315.129049...16.97459613.52263120.97463414.084511191.38907219.27781213.78980715.207663148.31257414.714033
00:09:58.84025601722.789396228.57192813.03980214.08566018.91017723.502572169.63656513.51740113.32480815.079827...17.37850213.51270916.40331812.209805186.72965619.32253413.46882815.197649144.67050614.576626
00:09:58.88019201221.730112226.39589313.00819215.56629118.92897523.463719168.41423013.52233013.67316715.108134...17.94781213.52997418.59235315.747278186.00842919.33632313.74271115.241505146.85104715.374270
00:09:58.92012800821.730112226.39589313.00819215.56629118.92897523.463719168.41423013.52233013.67316715.108134...17.94781213.52997418.59235315.747278186.00842919.33632313.74271115.241505146.85104715.374270
00:09:58.96006400421.730112226.39589313.00819215.56629118.92897523.463719168.41423013.52233013.67316715.108134...17.94781213.52997418.59235315.747278186.00842919.33632313.74271115.241505146.85104715.374270
\n", "

14999 rows × 26 columns

\n", "
" ], "text/plain": [ " (B_Nose, B_Right_ear) (B_Tail_base, W_Tail_base) \\\n", "00:00:00 18.781728 97.709786 \n", "00:00:00.039935995 16.395499 102.888817 \n", "00:00:00.079871991 15.057738 112.513259 \n", "00:00:00.119807987 15.112614 119.626219 \n", "00:00:00.159743982 16.235095 123.351461 \n", "... ... ... \n", "00:09:58.800320021 22.674736 231.732647 \n", "00:09:58.840256017 22.789396 228.571928 \n", "00:09:58.880192012 21.730112 226.395893 \n", "00:09:58.920128008 21.730112 226.395893 \n", "00:09:58.960064004 21.730112 226.395893 \n", "\n", " (W_Center, W_Right_fhip) (B_Center, B_Left_fhip) \\\n", "00:00:00 13.041369 17.621480 \n", "00:00:00.039935995 14.802899 16.552894 \n", "00:00:00.079871991 15.544880 15.821263 \n", "00:00:00.119807987 15.936129 15.431171 \n", "00:00:00.159743982 15.163451 14.811991 \n", "... ... ... \n", "00:09:58.800320021 13.059429 15.081384 \n", "00:09:58.840256017 13.039802 14.085660 \n", "00:09:58.880192012 13.008192 15.566291 \n", "00:09:58.920128008 13.008192 15.566291 \n", "00:09:58.960064004 13.008192 15.566291 \n", "\n", " (W_Left_ear, W_Spine_1) (W_Left_ear, W_Nose) \\\n", "00:00:00 27.055962 18.834943 \n", "00:00:00.039935995 25.757160 19.117538 \n", "00:00:00.079871991 27.572622 22.222081 \n", "00:00:00.119807987 29.026338 20.982981 \n", "00:00:00.159743982 26.424186 21.167892 \n", "... ... ... \n", "00:09:58.800320021 18.866566 23.477526 \n", "00:09:58.840256017 18.910177 23.502572 \n", "00:09:58.880192012 18.928975 23.463719 \n", "00:09:58.920128008 18.928975 23.463719 \n", "00:09:58.960064004 18.928975 23.463719 \n", "\n", " (B_Tail_base, W_Nose) (W_Center, W_Spine_2) \\\n", "00:00:00 148.048046 15.583439 \n", "00:00:00.039935995 156.962058 19.856936 \n", "00:00:00.079871991 165.295346 17.159928 \n", "00:00:00.119807987 171.180259 17.990578 \n", "00:00:00.159743982 174.253493 18.256880 \n", "... ... ... \n", "00:09:58.800320021 172.650733 13.395564 \n", "00:09:58.840256017 169.636565 13.517401 \n", "00:09:58.880192012 168.414230 13.522330 \n", "00:09:58.920128008 168.414230 13.522330 \n", "00:09:58.960064004 168.414230 13.522330 \n", "\n", " (B_Right_bhip, B_Spine_2) (W_Center, W_Spine_1) ... \\\n", "00:00:00 11.304016 19.977755 ... \n", "00:00:00.039935995 11.571620 21.885587 ... \n", "00:00:00.079871991 11.412604 19.920155 ... \n", "00:00:00.119807987 11.977952 20.211183 ... \n", "00:00:00.159743982 12.857731 21.018731 ... \n", "... ... ... ... \n", "00:09:58.800320021 13.647533 15.129049 ... \n", "00:09:58.840256017 13.324808 15.079827 ... \n", "00:09:58.880192012 13.673167 15.108134 ... \n", "00:09:58.920128008 13.673167 15.108134 ... \n", "00:09:58.960064004 13.673167 15.108134 ... \n", "\n", " (B_Right_ear, B_Spine_1) (W_Spine_2, W_Tail_base) \\\n", "00:00:00 14.239388 24.159109 \n", "00:00:00.039935995 14.693174 19.898728 \n", "00:00:00.079871991 14.429184 16.596494 \n", "00:00:00.119807987 15.581831 16.475699 \n", "00:00:00.159743982 15.989769 17.803761 \n", "... ... ... \n", "00:09:58.800320021 16.974596 13.522631 \n", "00:09:58.840256017 17.378502 13.512709 \n", "00:09:58.880192012 17.947812 13.529974 \n", "00:09:58.920128008 17.947812 13.529974 \n", "00:09:58.960064004 17.947812 13.529974 \n", "\n", " (B_Left_ear, B_Nose) (B_Center, B_Spine_1) \\\n", "00:00:00 15.890697 13.807436 \n", "00:00:00.039935995 15.271448 13.348749 \n", "00:00:00.079871991 15.170325 13.325157 \n", "00:00:00.119807987 16.038286 12.329721 \n", "00:00:00.159743982 18.028338 12.184032 \n", "... ... ... \n", "00:09:58.800320021 20.974634 14.084511 \n", "00:09:58.840256017 16.403318 12.209805 \n", "00:09:58.880192012 18.592353 15.747278 \n", "00:09:58.920128008 18.592353 15.747278 \n", "00:09:58.960064004 18.592353 15.747278 \n", "\n", " (B_Nose, W_Tail_base) (W_Nose, W_Right_ear) \\\n", "00:00:00 115.086175 22.834626 \n", "00:00:00.039935995 118.018418 21.852281 \n", "00:00:00.079871991 122.652716 24.791305 \n", "00:00:00.119807987 122.474901 24.705419 \n", "00:00:00.159743982 121.775639 22.790681 \n", "... ... ... \n", "00:09:58.800320021 191.389072 19.277812 \n", "00:09:58.840256017 186.729656 19.322534 \n", "00:09:58.880192012 186.008429 19.336323 \n", "00:09:58.920128008 186.008429 19.336323 \n", "00:09:58.960064004 186.008429 19.336323 \n", "\n", " (B_Left_bhip, B_Spine_2) (W_Center, W_Left_fhip) \\\n", "00:00:00 15.229008 18.574999 \n", "00:00:00.039935995 15.199081 20.296875 \n", "00:00:00.079871991 14.600725 20.121680 \n", "00:00:00.119807987 14.741844 19.739289 \n", "00:00:00.159743982 14.977541 20.680558 \n", "... ... ... \n", "00:09:58.800320021 13.789807 15.207663 \n", "00:09:58.840256017 13.468828 15.197649 \n", "00:09:58.880192012 13.742711 15.241505 \n", "00:09:58.920128008 13.742711 15.241505 \n", "00:09:58.960064004 13.742711 15.241505 \n", "\n", " (B_Nose, W_Nose) (B_Spine_2, B_Tail_base) \n", "00:00:00 197.209343 14.568245 \n", "00:00:00.039935995 201.897777 14.454055 \n", "00:00:00.079871991 202.543917 14.753496 \n", "00:00:00.119807987 201.439639 15.937254 \n", "00:00:00.159743982 200.696460 15.523106 \n", "... ... ... \n", "00:09:58.800320021 148.312574 14.714033 \n", "00:09:58.840256017 144.670506 14.576626 \n", "00:09:58.880192012 146.851047 15.374270 \n", "00:09:58.920128008 146.851047 15.374270 \n", "00:09:58.960064004 146.851047 15.374270 \n", "\n", "[14999 rows x 26 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_deepof_project.get_distances()['20191204_Day2_SI_JB08_Test_54']" ] }, { "cell_type": "code", "execution_count": 14, "id": "674f6247", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
(B_Left_ear, B_Nose, B_Right_ear)(B_Nose, B_Left_ear, B_Spine_1)(B_Right_fhip, B_Center, B_Spine_2)(B_Right_fhip, B_Center, B_Left_fhip)(B_Right_fhip, B_Center, B_Spine_1)(B_Spine_2, B_Center, B_Left_fhip)(B_Spine_2, B_Center, B_Spine_1)(B_Left_fhip, B_Center, B_Spine_1)(B_Left_bhip, B_Spine_2, B_Center)(B_Left_bhip, B_Spine_2, B_Right_bhip)...(W_Left_bhip, W_Spine_2, W_Center)(W_Left_bhip, W_Spine_2, W_Right_bhip)(W_Left_bhip, W_Spine_2, W_Tail_base)(W_Center, W_Spine_2, W_Right_bhip)(W_Center, W_Spine_2, W_Tail_base)(W_Right_bhip, W_Spine_2, W_Tail_base)(W_Nose, W_Right_ear, W_Spine_1)(W_Left_ear, W_Spine_1, W_Center)(W_Left_ear, W_Spine_1, W_Right_ear)(W_Center, W_Spine_1, W_Right_ear)
00:00:001.2222771.4226571.8056801.2816161.3428280.8806341.0208521.1577631.1106161.293108...0.9311570.8485700.8848710.8658210.9057610.8664231.1819721.1456971.1624531.018039
00:00:00.0399359951.3064891.2474391.3700461.2998581.2964781.5029961.5039971.0525891.1509961.200270...0.9941290.8914500.9660730.8538790.9199970.8290691.2124421.1493311.1148261.044152
00:00:00.0798719911.2829061.0336431.1904461.2955141.4332511.3317241.4694621.3988621.5480471.722389...1.0179740.9776070.9001880.9156640.8382440.7407741.0692991.0900811.2148561.133077
00:00:00.1198079871.2519901.4546751.7655111.2778081.3638000.9157671.0640821.1824111.1165871.309047...0.9684840.8858020.9100800.9035680.9314030.8822011.2136691.1771221.1887971.039895
00:00:00.1597439821.3308601.2645711.3564751.2868041.2868371.4500611.4547121.0659281.1067521.156228...1.0039580.9073700.9880590.8795020.9536870.8541151.2542711.1899811.1489391.079375
..................................................................
00:09:58.8003200211.2491091.1076260.8595650.8320340.8880550.7532150.8055480.7930020.6640030.694227...0.0066980.0264680.0166550.0366790.0364560.1522190.0497990.0966550.0826620.071047
00:09:58.8402560171.0979800.9399440.7791660.8708370.9465060.7937620.8625710.8366120.7377460.738258...0.1047090.1675710.1071080.1705840.1162240.1405260.0309540.0269030.1103950.121503
00:09:58.8801920121.0623181.1041930.8616630.8532090.9049470.7078090.7595480.8374500.7118010.763568...0.0545040.0492450.0782030.1451420.1741000.2472170.1801570.1283150.0044960.090246
00:09:58.9201280081.2714551.1355420.8611660.8339630.8907070.7499060.8025510.8065500.6672060.697214...0.0032720.0218360.0119590.0274680.0262880.1415770.0615700.1095160.0934700.063343
00:09:58.9600640041.1361020.9799340.7811500.8728290.9485450.7952130.8640820.8418560.7350440.735689...0.0993540.1633720.1025080.1629280.1087710.1336320.0525520.0419970.0978950.103528
\n", "

14999 rows × 36 columns

\n", "
" ], "text/plain": [ " (B_Left_ear, B_Nose, B_Right_ear) \\\n", "00:00:00 1.222277 \n", "00:00:00.039935995 1.306489 \n", "00:00:00.079871991 1.282906 \n", "00:00:00.119807987 1.251990 \n", "00:00:00.159743982 1.330860 \n", "... ... \n", "00:09:58.800320021 1.249109 \n", "00:09:58.840256017 1.097980 \n", "00:09:58.880192012 1.062318 \n", "00:09:58.920128008 1.271455 \n", "00:09:58.960064004 1.136102 \n", "\n", " (B_Nose, B_Left_ear, B_Spine_1) \\\n", "00:00:00 1.422657 \n", "00:00:00.039935995 1.247439 \n", "00:00:00.079871991 1.033643 \n", "00:00:00.119807987 1.454675 \n", "00:00:00.159743982 1.264571 \n", "... ... \n", "00:09:58.800320021 1.107626 \n", "00:09:58.840256017 0.939944 \n", "00:09:58.880192012 1.104193 \n", "00:09:58.920128008 1.135542 \n", "00:09:58.960064004 0.979934 \n", "\n", " (B_Right_fhip, B_Center, B_Spine_2) \\\n", "00:00:00 1.805680 \n", "00:00:00.039935995 1.370046 \n", "00:00:00.079871991 1.190446 \n", "00:00:00.119807987 1.765511 \n", "00:00:00.159743982 1.356475 \n", "... ... \n", "00:09:58.800320021 0.859565 \n", "00:09:58.840256017 0.779166 \n", "00:09:58.880192012 0.861663 \n", "00:09:58.920128008 0.861166 \n", "00:09:58.960064004 0.781150 \n", "\n", " (B_Right_fhip, B_Center, B_Left_fhip) \\\n", "00:00:00 1.281616 \n", "00:00:00.039935995 1.299858 \n", "00:00:00.079871991 1.295514 \n", "00:00:00.119807987 1.277808 \n", "00:00:00.159743982 1.286804 \n", "... ... \n", "00:09:58.800320021 0.832034 \n", "00:09:58.840256017 0.870837 \n", "00:09:58.880192012 0.853209 \n", "00:09:58.920128008 0.833963 \n", "00:09:58.960064004 0.872829 \n", "\n", " (B_Right_fhip, B_Center, B_Spine_1) \\\n", "00:00:00 1.342828 \n", "00:00:00.039935995 1.296478 \n", "00:00:00.079871991 1.433251 \n", "00:00:00.119807987 1.363800 \n", "00:00:00.159743982 1.286837 \n", "... ... \n", "00:09:58.800320021 0.888055 \n", "00:09:58.840256017 0.946506 \n", "00:09:58.880192012 0.904947 \n", "00:09:58.920128008 0.890707 \n", "00:09:58.960064004 0.948545 \n", "\n", " (B_Spine_2, B_Center, B_Left_fhip) \\\n", "00:00:00 0.880634 \n", "00:00:00.039935995 1.502996 \n", "00:00:00.079871991 1.331724 \n", "00:00:00.119807987 0.915767 \n", "00:00:00.159743982 1.450061 \n", "... ... \n", "00:09:58.800320021 0.753215 \n", "00:09:58.840256017 0.793762 \n", "00:09:58.880192012 0.707809 \n", "00:09:58.920128008 0.749906 \n", "00:09:58.960064004 0.795213 \n", "\n", " (B_Spine_2, B_Center, B_Spine_1) \\\n", "00:00:00 1.020852 \n", "00:00:00.039935995 1.503997 \n", "00:00:00.079871991 1.469462 \n", "00:00:00.119807987 1.064082 \n", "00:00:00.159743982 1.454712 \n", "... ... \n", "00:09:58.800320021 0.805548 \n", "00:09:58.840256017 0.862571 \n", "00:09:58.880192012 0.759548 \n", "00:09:58.920128008 0.802551 \n", "00:09:58.960064004 0.864082 \n", "\n", " (B_Left_fhip, B_Center, B_Spine_1) \\\n", "00:00:00 1.157763 \n", "00:00:00.039935995 1.052589 \n", "00:00:00.079871991 1.398862 \n", "00:00:00.119807987 1.182411 \n", "00:00:00.159743982 1.065928 \n", "... ... \n", "00:09:58.800320021 0.793002 \n", "00:09:58.840256017 0.836612 \n", "00:09:58.880192012 0.837450 \n", "00:09:58.920128008 0.806550 \n", "00:09:58.960064004 0.841856 \n", "\n", " (B_Left_bhip, B_Spine_2, B_Center) \\\n", "00:00:00 1.110616 \n", "00:00:00.039935995 1.150996 \n", "00:00:00.079871991 1.548047 \n", "00:00:00.119807987 1.116587 \n", "00:00:00.159743982 1.106752 \n", "... ... \n", "00:09:58.800320021 0.664003 \n", "00:09:58.840256017 0.737746 \n", "00:09:58.880192012 0.711801 \n", "00:09:58.920128008 0.667206 \n", "00:09:58.960064004 0.735044 \n", "\n", " (B_Left_bhip, B_Spine_2, B_Right_bhip) ... \\\n", "00:00:00 1.293108 ... \n", "00:00:00.039935995 1.200270 ... \n", "00:00:00.079871991 1.722389 ... \n", "00:00:00.119807987 1.309047 ... \n", "00:00:00.159743982 1.156228 ... \n", "... ... ... \n", "00:09:58.800320021 0.694227 ... \n", "00:09:58.840256017 0.738258 ... \n", "00:09:58.880192012 0.763568 ... \n", "00:09:58.920128008 0.697214 ... \n", "00:09:58.960064004 0.735689 ... \n", "\n", " (W_Left_bhip, W_Spine_2, W_Center) \\\n", "00:00:00 0.931157 \n", "00:00:00.039935995 0.994129 \n", "00:00:00.079871991 1.017974 \n", "00:00:00.119807987 0.968484 \n", "00:00:00.159743982 1.003958 \n", "... ... \n", "00:09:58.800320021 0.006698 \n", "00:09:58.840256017 0.104709 \n", "00:09:58.880192012 0.054504 \n", "00:09:58.920128008 0.003272 \n", "00:09:58.960064004 0.099354 \n", "\n", " (W_Left_bhip, W_Spine_2, W_Right_bhip) \\\n", "00:00:00 0.848570 \n", "00:00:00.039935995 0.891450 \n", "00:00:00.079871991 0.977607 \n", "00:00:00.119807987 0.885802 \n", "00:00:00.159743982 0.907370 \n", "... ... \n", "00:09:58.800320021 0.026468 \n", "00:09:58.840256017 0.167571 \n", "00:09:58.880192012 0.049245 \n", "00:09:58.920128008 0.021836 \n", "00:09:58.960064004 0.163372 \n", "\n", " (W_Left_bhip, W_Spine_2, W_Tail_base) \\\n", "00:00:00 0.884871 \n", "00:00:00.039935995 0.966073 \n", "00:00:00.079871991 0.900188 \n", "00:00:00.119807987 0.910080 \n", "00:00:00.159743982 0.988059 \n", "... ... \n", "00:09:58.800320021 0.016655 \n", "00:09:58.840256017 0.107108 \n", "00:09:58.880192012 0.078203 \n", "00:09:58.920128008 0.011959 \n", "00:09:58.960064004 0.102508 \n", "\n", " (W_Center, W_Spine_2, W_Right_bhip) \\\n", "00:00:00 0.865821 \n", "00:00:00.039935995 0.853879 \n", "00:00:00.079871991 0.915664 \n", "00:00:00.119807987 0.903568 \n", "00:00:00.159743982 0.879502 \n", "... ... \n", "00:09:58.800320021 0.036679 \n", "00:09:58.840256017 0.170584 \n", "00:09:58.880192012 0.145142 \n", "00:09:58.920128008 0.027468 \n", "00:09:58.960064004 0.162928 \n", "\n", " (W_Center, W_Spine_2, W_Tail_base) \\\n", "00:00:00 0.905761 \n", "00:00:00.039935995 0.919997 \n", "00:00:00.079871991 0.838244 \n", "00:00:00.119807987 0.931403 \n", "00:00:00.159743982 0.953687 \n", "... ... \n", "00:09:58.800320021 0.036456 \n", "00:09:58.840256017 0.116224 \n", "00:09:58.880192012 0.174100 \n", "00:09:58.920128008 0.026288 \n", "00:09:58.960064004 0.108771 \n", "\n", " (W_Right_bhip, W_Spine_2, W_Tail_base) \\\n", "00:00:00 0.866423 \n", "00:00:00.039935995 0.829069 \n", "00:00:00.079871991 0.740774 \n", "00:00:00.119807987 0.882201 \n", "00:00:00.159743982 0.854115 \n", "... ... \n", "00:09:58.800320021 0.152219 \n", "00:09:58.840256017 0.140526 \n", "00:09:58.880192012 0.247217 \n", "00:09:58.920128008 0.141577 \n", "00:09:58.960064004 0.133632 \n", "\n", " (W_Nose, W_Right_ear, W_Spine_1) \\\n", "00:00:00 1.181972 \n", "00:00:00.039935995 1.212442 \n", "00:00:00.079871991 1.069299 \n", "00:00:00.119807987 1.213669 \n", "00:00:00.159743982 1.254271 \n", "... ... \n", "00:09:58.800320021 0.049799 \n", "00:09:58.840256017 0.030954 \n", "00:09:58.880192012 0.180157 \n", "00:09:58.920128008 0.061570 \n", "00:09:58.960064004 0.052552 \n", "\n", " (W_Left_ear, W_Spine_1, W_Center) \\\n", "00:00:00 1.145697 \n", "00:00:00.039935995 1.149331 \n", "00:00:00.079871991 1.090081 \n", "00:00:00.119807987 1.177122 \n", "00:00:00.159743982 1.189981 \n", "... ... \n", "00:09:58.800320021 0.096655 \n", "00:09:58.840256017 0.026903 \n", "00:09:58.880192012 0.128315 \n", "00:09:58.920128008 0.109516 \n", "00:09:58.960064004 0.041997 \n", "\n", " (W_Left_ear, W_Spine_1, W_Right_ear) \\\n", "00:00:00 1.162453 \n", "00:00:00.039935995 1.114826 \n", "00:00:00.079871991 1.214856 \n", "00:00:00.119807987 1.188797 \n", "00:00:00.159743982 1.148939 \n", "... ... \n", "00:09:58.800320021 0.082662 \n", "00:09:58.840256017 0.110395 \n", "00:09:58.880192012 0.004496 \n", "00:09:58.920128008 0.093470 \n", "00:09:58.960064004 0.097895 \n", "\n", " (W_Center, W_Spine_1, W_Right_ear) \n", "00:00:00 1.018039 \n", "00:00:00.039935995 1.044152 \n", "00:00:00.079871991 1.133077 \n", "00:00:00.119807987 1.039895 \n", "00:00:00.159743982 1.079375 \n", "... ... \n", "00:09:58.800320021 0.071047 \n", "00:09:58.840256017 0.121503 \n", "00:09:58.880192012 0.090246 \n", "00:09:58.920128008 0.063343 \n", "00:09:58.960064004 0.103528 \n", "\n", "[14999 rows x 36 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_deepof_project.get_angles()['20191204_Day2_SI_JB08_Test_54']" ] }, { "cell_type": "code", "execution_count": 15, "id": "7e5de031", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
B_head_areaB_torso_areaB_back_areaB_full_areaW_head_areaW_torso_areaW_back_areaW_full_area
00:00:00287.018462467.472460513.4310001697.086099588.316685575.287843557.8376782402.446220
00:00:00.039935995298.006089461.593907511.6115521664.187297532.941463711.610814747.1713242612.577515
00:00:00.079871991283.907493436.994147491.0222081571.659017615.224965659.274363696.7738782680.819039
00:00:00.119807987336.017364459.434553495.6099701674.157290664.955274698.278394709.5872952725.074795
00:00:00.159743982338.565821456.785954510.5141671706.762126589.501549713.393985706.9752802732.936140
...........................
00:09:58.800320021364.598702512.092068562.9571651882.932433516.368794466.566421607.1612011974.352930
00:09:58.840256017342.771541514.231920543.2990191832.083470517.334943468.582411611.7659021979.455000
00:09:58.880192012388.332158529.127829558.3403181889.399535516.875687468.401897613.4443461980.834529
00:09:58.920128008388.332158529.127829558.3403181889.399535516.875687468.401897613.4443461980.834529
00:09:58.960064004388.332158529.127829558.3403181889.399535516.875687468.401897613.4443461980.834529
\n", "

14999 rows × 8 columns

\n", "
" ], "text/plain": [ " B_head_area B_torso_area B_back_area B_full_area \\\n", "00:00:00 287.018462 467.472460 513.431000 1697.086099 \n", "00:00:00.039935995 298.006089 461.593907 511.611552 1664.187297 \n", "00:00:00.079871991 283.907493 436.994147 491.022208 1571.659017 \n", "00:00:00.119807987 336.017364 459.434553 495.609970 1674.157290 \n", "00:00:00.159743982 338.565821 456.785954 510.514167 1706.762126 \n", "... ... ... ... ... \n", "00:09:58.800320021 364.598702 512.092068 562.957165 1882.932433 \n", "00:09:58.840256017 342.771541 514.231920 543.299019 1832.083470 \n", "00:09:58.880192012 388.332158 529.127829 558.340318 1889.399535 \n", "00:09:58.920128008 388.332158 529.127829 558.340318 1889.399535 \n", "00:09:58.960064004 388.332158 529.127829 558.340318 1889.399535 \n", "\n", " W_head_area W_torso_area W_back_area W_full_area \n", "00:00:00 588.316685 575.287843 557.837678 2402.446220 \n", "00:00:00.039935995 532.941463 711.610814 747.171324 2612.577515 \n", "00:00:00.079871991 615.224965 659.274363 696.773878 2680.819039 \n", "00:00:00.119807987 664.955274 698.278394 709.587295 2725.074795 \n", "00:00:00.159743982 589.501549 713.393985 706.975280 2732.936140 \n", "... ... ... ... ... \n", "00:09:58.800320021 516.368794 466.566421 607.161201 1974.352930 \n", "00:09:58.840256017 517.334943 468.582411 611.765902 1979.455000 \n", "00:09:58.880192012 516.875687 468.401897 613.444346 1980.834529 \n", "00:09:58.920128008 516.875687 468.401897 613.444346 1980.834529 \n", "00:09:58.960064004 516.875687 468.401897 613.444346 1980.834529 \n", "\n", "[14999 rows x 8 columns]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_deepof_project.get_areas()['20191204_Day2_SI_JB08_Test_54']" ] }, { "cell_type": "markdown", "id": "3fa733d0", "metadata": {}, "source": [ "Last but not least, features can be merged using the `.merge()` method, which can yield combinations of features if needed. For example, the code in the following cell creates an object with both coordinates and areas per time point:" ] }, { "cell_type": "code", "execution_count": 16, "id": "b34be811", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
(B_Center, x)(B_Center, y)(B_Left_bhip, x)(B_Left_bhip, y)(B_Left_ear, x)(B_Left_ear, y)(B_Left_fhip, x)(B_Left_fhip, y)(B_Nose, x)(B_Nose, y)...(W_Tail_base, x)(W_Tail_base, y)B_head_areaB_torso_areaB_back_areaB_full_areaW_head_areaW_torso_areaW_back_areaW_full_area
00:00:00223.193283184.124115222.160935202.799423191.852982166.609666201.709718187.509186188.298004147.322081...321.35375997.605996287.018462467.472460513.4310001697.086099588.316685575.287843557.8376782402.446220
00:00:00.039935995222.081848185.302109221.340759203.517593192.753159164.698335201.841401188.076859194.544312145.935454...332.37954698.838112298.006089461.593907511.6115521664.187297532.941463711.610814747.1713242612.577515
00:00:00.079871991220.547333186.246719219.854218203.126160197.765198159.669617201.092896184.567551205.235306142.500976...350.856689101.147659283.907493436.994147491.0222081571.659017615.224965659.274363696.7738782680.819039
00:00:00.119807987218.467209184.700256216.118439201.998322202.173355153.366486199.648239181.772736214.989639138.281066...361.710663101.918587336.017364459.434553495.6099701674.157290664.955274698.278394709.5872952725.074795
00:00:00.159743982219.402542182.458069214.480026200.481461206.756088150.536057201.725708177.796661221.262161133.663879...369.073914106.446114338.565821456.785954510.5141671706.762126589.501549713.393985706.9752802732.936140
..................................................................
00:09:58.800320021108.366647302.971861127.398353297.067658106.577644339.902678118.557281318.54803491.342528360.831938...267.896393517.758606364.598702512.092068562.9571651882.932433516.368794466.566421607.1612011974.352930
00:09:58.840256017108.605596310.532362127.530082302.013032104.571034350.229231120.285217323.40921093.433890367.135740...267.855316517.770020342.771541514.231920543.2990191832.083470517.334943468.582411611.7659021979.455000
00:09:58.880192012108.844546318.092862124.715041311.241029102.564423360.555784119.021164334.38827586.603620377.042506...267.961975517.801758388.332158529.127829558.3403181889.399535516.875687468.401897613.4443461980.834529
00:09:58.920128008108.844546318.092862124.715041311.241029102.564423360.555784119.021164334.38827586.603620377.042506...267.961975517.801758388.332158529.127829558.3403181889.399535516.875687468.401897613.4443461980.834529
00:09:58.960064004108.844546318.092862124.715041311.241029102.564423360.555784119.021164334.38827586.603620377.042506...267.961975517.801758388.332158529.127829558.3403181889.399535516.875687468.401897613.4443461980.834529
\n", "

14999 rows × 52 columns

\n", "
" ], "text/plain": [ " (B_Center, x) (B_Center, y) (B_Left_bhip, x) \\\n", "00:00:00 223.193283 184.124115 222.160935 \n", "00:00:00.039935995 222.081848 185.302109 221.340759 \n", "00:00:00.079871991 220.547333 186.246719 219.854218 \n", "00:00:00.119807987 218.467209 184.700256 216.118439 \n", "00:00:00.159743982 219.402542 182.458069 214.480026 \n", "... ... ... ... \n", "00:09:58.800320021 108.366647 302.971861 127.398353 \n", "00:09:58.840256017 108.605596 310.532362 127.530082 \n", "00:09:58.880192012 108.844546 318.092862 124.715041 \n", "00:09:58.920128008 108.844546 318.092862 124.715041 \n", "00:09:58.960064004 108.844546 318.092862 124.715041 \n", "\n", " (B_Left_bhip, y) (B_Left_ear, x) (B_Left_ear, y) \\\n", "00:00:00 202.799423 191.852982 166.609666 \n", "00:00:00.039935995 203.517593 192.753159 164.698335 \n", "00:00:00.079871991 203.126160 197.765198 159.669617 \n", "00:00:00.119807987 201.998322 202.173355 153.366486 \n", "00:00:00.159743982 200.481461 206.756088 150.536057 \n", "... ... ... ... \n", "00:09:58.800320021 297.067658 106.577644 339.902678 \n", "00:09:58.840256017 302.013032 104.571034 350.229231 \n", "00:09:58.880192012 311.241029 102.564423 360.555784 \n", "00:09:58.920128008 311.241029 102.564423 360.555784 \n", "00:09:58.960064004 311.241029 102.564423 360.555784 \n", "\n", " (B_Left_fhip, x) (B_Left_fhip, y) (B_Nose, x) \\\n", "00:00:00 201.709718 187.509186 188.298004 \n", "00:00:00.039935995 201.841401 188.076859 194.544312 \n", "00:00:00.079871991 201.092896 184.567551 205.235306 \n", "00:00:00.119807987 199.648239 181.772736 214.989639 \n", "00:00:00.159743982 201.725708 177.796661 221.262161 \n", "... ... ... ... \n", "00:09:58.800320021 118.557281 318.548034 91.342528 \n", "00:09:58.840256017 120.285217 323.409210 93.433890 \n", "00:09:58.880192012 119.021164 334.388275 86.603620 \n", "00:09:58.920128008 119.021164 334.388275 86.603620 \n", "00:09:58.960064004 119.021164 334.388275 86.603620 \n", "\n", " (B_Nose, y) ... (W_Tail_base, x) (W_Tail_base, y) \\\n", "00:00:00 147.322081 ... 321.353759 97.605996 \n", "00:00:00.039935995 145.935454 ... 332.379546 98.838112 \n", "00:00:00.079871991 142.500976 ... 350.856689 101.147659 \n", "00:00:00.119807987 138.281066 ... 361.710663 101.918587 \n", "00:00:00.159743982 133.663879 ... 369.073914 106.446114 \n", "... ... ... ... ... \n", "00:09:58.800320021 360.831938 ... 267.896393 517.758606 \n", "00:09:58.840256017 367.135740 ... 267.855316 517.770020 \n", "00:09:58.880192012 377.042506 ... 267.961975 517.801758 \n", "00:09:58.920128008 377.042506 ... 267.961975 517.801758 \n", "00:09:58.960064004 377.042506 ... 267.961975 517.801758 \n", "\n", " B_head_area B_torso_area B_back_area B_full_area \\\n", "00:00:00 287.018462 467.472460 513.431000 1697.086099 \n", "00:00:00.039935995 298.006089 461.593907 511.611552 1664.187297 \n", "00:00:00.079871991 283.907493 436.994147 491.022208 1571.659017 \n", "00:00:00.119807987 336.017364 459.434553 495.609970 1674.157290 \n", "00:00:00.159743982 338.565821 456.785954 510.514167 1706.762126 \n", "... ... ... ... ... \n", "00:09:58.800320021 364.598702 512.092068 562.957165 1882.932433 \n", "00:09:58.840256017 342.771541 514.231920 543.299019 1832.083470 \n", "00:09:58.880192012 388.332158 529.127829 558.340318 1889.399535 \n", "00:09:58.920128008 388.332158 529.127829 558.340318 1889.399535 \n", "00:09:58.960064004 388.332158 529.127829 558.340318 1889.399535 \n", "\n", " W_head_area W_torso_area W_back_area W_full_area \n", "00:00:00 588.316685 575.287843 557.837678 2402.446220 \n", "00:00:00.039935995 532.941463 711.610814 747.171324 2612.577515 \n", "00:00:00.079871991 615.224965 659.274363 696.773878 2680.819039 \n", "00:00:00.119807987 664.955274 698.278394 709.587295 2725.074795 \n", "00:00:00.159743982 589.501549 713.393985 706.975280 2732.936140 \n", "... ... ... ... ... \n", "00:09:58.800320021 516.368794 466.566421 607.161201 1974.352930 \n", "00:09:58.840256017 517.334943 468.582411 611.765902 1979.455000 \n", "00:09:58.880192012 516.875687 468.401897 613.444346 1980.834529 \n", "00:09:58.920128008 516.875687 468.401897 613.444346 1980.834529 \n", "00:09:58.960064004 516.875687 468.401897 613.444346 1980.834529 \n", "\n", "[14999 rows x 52 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_deepof_project.get_coords().merge(my_deepof_project.get_areas())['20191204_Day2_SI_JB08_Test_54']" ] }, { "cell_type": "markdown", "id": "0afd4280", "metadata": {}, "source": [ "### Loading experimental conditions" ] }, { "cell_type": "markdown", "id": "b9e4c272", "metadata": {}, "source": [ "So far, DeepOF does not know to which condition each animal belongs. This can be either set up when creating the project (as described above) or specified afterward using the `.load_exp_conditions()` method. We just need to pass the path to a CSV file containing all conditions per animal as extra columns. The only hard requirement is that the first column should have the experiment IDs.\n", "\n", "Here is an example:" ] }, { "cell_type": "code", "execution_count": 17, "id": "2c9b2648", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
experiment_idCSDS
020191204_Day2_SI_JB08_Test_54Nonstressed
120191204_Day2_SI_JB08_Test_56Stressed
220191204_Day2_SI_JB08_Test_61Stressed
320191204_Day2_SI_JB08_Test_62Stressed
420191204_Day2_SI_JB08_Test_63Nonstressed
520191204_Day2_SI_JB08_Test_64Nonstressed
\n", "
" ], "text/plain": [ " experiment_id CSDS\n", "0 20191204_Day2_SI_JB08_Test_54 Nonstressed\n", "1 20191204_Day2_SI_JB08_Test_56 Stressed\n", "2 20191204_Day2_SI_JB08_Test_61 Stressed\n", "3 20191204_Day2_SI_JB08_Test_62 Stressed\n", "4 20191204_Day2_SI_JB08_Test_63 Nonstressed\n", "5 20191204_Day2_SI_JB08_Test_64 Nonstressed" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.read_csv(\"./tutorial_files/tutorial_project/Coordinates/tutorial_exp_conditions.csv\", index_col=0)" ] }, { "cell_type": "markdown", "id": "bcbf676f", "metadata": {}, "source": [ "Great! Now that we understand how the CSV should be formatted, let's then load it onto our project:" ] }, { "cell_type": "code", "execution_count": 18, "id": "5cfa481c", "metadata": {}, "outputs": [], "source": [ "my_deepof_project.load_exp_conditions(\"./tutorial_files/tutorial_project/Coordinates/tutorial_exp_conditions.csv\")" ] }, { "cell_type": "markdown", "id": "dced0767", "metadata": {}, "source": [ "And we're done!. Let's explore what's in there with the .get_exp_conditions property:" ] }, { "cell_type": "code", "execution_count": 19, "id": "a0da64d3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'20191204_Day2_SI_JB08_Test_54': CSDS\n", "0 Nonstressed, '20191204_Day2_SI_JB08_Test_56': CSDS\n", "1 Stressed, '20191204_Day2_SI_JB08_Test_61': CSDS\n", "2 Stressed, '20191204_Day2_SI_JB08_Test_62': CSDS\n", "3 Stressed, '20191204_Day2_SI_JB08_Test_63': CSDS\n", "4 Nonstressed, '20191204_Day2_SI_JB08_Test_64': CSDS\n", "5 Nonstressed}\n" ] } ], "source": [ "print(my_deepof_project.get_exp_conditions)" ] }, { "cell_type": "markdown", "id": "a2b8650a", "metadata": {}, "source": [ "We can see that the property retrieves a dictionary with all animal experiments as keys, and data frames with conditions as values. Although in this case we only have the CSDS condition, which can take two values (\"Nonstressed\" and \"Stressed\", with three animals each), adding more just requires us to add extra columns to the CSV file." ] }, { "cell_type": "markdown", "id": "5333813e", "metadata": {}, "source": [ "### Filtering DeepOF objects" ] }, { "cell_type": "markdown", "id": "24364e60", "metadata": {}, "source": [ "Now that experimental conditions were added, we'll explore some filtering tools that DeepOF provides for table dictionary objects." ] }, { "cell_type": "markdown", "id": "374fc091", "metadata": {}, "source": [ "For starters, imagine you want to subset your data to only contain stressed animals. You can do that with the `.filter_condition()` method, which takes a dictionary as input with the experimental condition to filter on as key, and the value you'd like to keep as value:" ] }, { "cell_type": "code", "execution_count": 20, "id": "84884409", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The original dataset has 6 videos\n", "The filtered dataset has only 3 videos\n" ] } ], "source": [ "# Let's use coords as an example\n", "coords = my_deepof_project.get_coords()\n", "print(\"The original dataset has {} videos\".format(len(coords)))\n", "\n", "# Let's keep only those experiments where the subject is stressed:\n", "coords = coords.filter_condition({\"CSDS\": \"Stressed\"})\n", "print(\"The filtered dataset has only {} videos\".format(len(coords)))" ] }, { "cell_type": "markdown", "id": "2a810cc3", "metadata": {}, "source": [ "We can also filter specific experiments with the `.filter_videos()` method, which takes a list of experiment IDs as input:" ] }, { "cell_type": "code", "execution_count": 21, "id": "82c69dc8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The new filtered dataset has only 1 video\n" ] } ], "source": [ "single_video_coords = coords.filter_videos(['20191204_Day2_SI_JB08_Test_56'])\n", "print(\"The new filtered dataset has only {} video\".format(len(single_video_coords)))" ] }, { "cell_type": "markdown", "id": "21a2c256", "metadata": {}, "source": [ "Last but not least, we can also keep all videos, but filter certain animals whose coordinates we'd like to keep for further analysis. As seen above, the dataset used in this tutorial contains two animals per video: a C57Bl6 (labelled \"B\") and a CD1 (labelled \"W\"). Let's see how we can keep only the C57B16 with the `.filter_id()` method:" ] }, { "cell_type": "markdown", "id": "39d4d7b8", "metadata": {}, "source": [ "Let's first point out that, before filtering, a given experiment in the coords object has 44 features (22 from each animal)." ] }, { "cell_type": "code", "execution_count": 22, "id": "eb2539f5", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
B_CenterB_Left_bhipB_Left_earB_Left_fhipB_Nose...W_Right_earW_Right_fhipW_Spine_1W_Spine_2W_Tail_base
xyxyxyxyxy...xyxyxyxyxy
00:00:00538.363647249.284027552.938171238.256393526.389221298.484528554.218140263.846924497.151367300.893616...163.311036230.528197151.194123260.958313145.208389245.764724123.380149292.024324117.470673316.318786
00:00:00.039938658538.369385249.327469552.927368238.261719526.412781298.484711554.220703263.867645497.139038300.743500...167.872041221.538756156.158676252.000641147.822707238.749525126.308410282.404055117.764466305.007018
00:00:00.079877316538.341919249.331680552.979980238.308563526.437988298.471222554.231751263.856079497.157898300.888397...172.082931213.227768160.587585244.264328151.865173229.841355129.889419272.855470119.838295295.199738
00:00:00.119815975538.328064249.476318553.003174238.238953526.427002298.530182554.242981263.896118497.196014300.982727...176.770797203.171585164.369293235.348343156.897583219.281571134.908768261.188996124.537338280.778840
00:00:00.159754633538.361267249.156189552.935913238.178787526.232361298.454224554.304565263.707153497.193512300.888733...184.708252193.616104168.269272226.879074161.464935209.005005135.903274252.997026125.637749273.162354
..................................................................
00:09:58.800306707417.213013120.369354434.364075121.799324407.657898149.051193420.671143132.926590403.773225168.571396...458.965545138.696243478.439513152.962585464.861633161.004669492.194305185.569657507.282135198.650726
00:09:58.840245366418.764465121.211830437.265686124.925872408.706879148.632080423.572205135.010574403.317353167.953598...459.109069139.845016480.203215153.216278465.769653161.612426494.342407186.055055509.487884199.299560
00:09:58.880184024417.745423119.924720436.591827123.725265407.754945145.980683422.490540133.576019404.400087162.526779...459.507567142.085800482.209348155.651763468.152923164.586746496.519652187.808962510.491302200.315918
00:09:58.920122683417.745423119.924720436.591827123.725265407.754945145.980683422.490540133.576019404.400087162.526779...459.507567142.085800482.209348155.651763468.152923164.586746496.519652187.808962510.491302200.315918
00:09:58.960061341417.745423119.924720436.591827123.725265407.754945145.980683422.490540133.576019404.400087162.526779...459.507567142.085800482.209348155.651763468.152923164.586746496.519652187.808962510.491302200.315918
\n", "

14998 rows × 44 columns

\n", "
" ], "text/plain": [ " B_Center B_Left_bhip \\\n", " x y x y \n", "00:00:00 538.363647 249.284027 552.938171 238.256393 \n", "00:00:00.039938658 538.369385 249.327469 552.927368 238.261719 \n", "00:00:00.079877316 538.341919 249.331680 552.979980 238.308563 \n", "00:00:00.119815975 538.328064 249.476318 553.003174 238.238953 \n", "00:00:00.159754633 538.361267 249.156189 552.935913 238.178787 \n", "... ... ... ... ... \n", "00:09:58.800306707 417.213013 120.369354 434.364075 121.799324 \n", "00:09:58.840245366 418.764465 121.211830 437.265686 124.925872 \n", "00:09:58.880184024 417.745423 119.924720 436.591827 123.725265 \n", "00:09:58.920122683 417.745423 119.924720 436.591827 123.725265 \n", "00:09:58.960061341 417.745423 119.924720 436.591827 123.725265 \n", "\n", " B_Left_ear B_Left_fhip \\\n", " x y x y \n", "00:00:00 526.389221 298.484528 554.218140 263.846924 \n", "00:00:00.039938658 526.412781 298.484711 554.220703 263.867645 \n", "00:00:00.079877316 526.437988 298.471222 554.231751 263.856079 \n", "00:00:00.119815975 526.427002 298.530182 554.242981 263.896118 \n", "00:00:00.159754633 526.232361 298.454224 554.304565 263.707153 \n", "... ... ... ... ... \n", "00:09:58.800306707 407.657898 149.051193 420.671143 132.926590 \n", "00:09:58.840245366 408.706879 148.632080 423.572205 135.010574 \n", "00:09:58.880184024 407.754945 145.980683 422.490540 133.576019 \n", "00:09:58.920122683 407.754945 145.980683 422.490540 133.576019 \n", "00:09:58.960061341 407.754945 145.980683 422.490540 133.576019 \n", "\n", " B_Nose ... W_Right_ear \\\n", " x y ... x y \n", "00:00:00 497.151367 300.893616 ... 163.311036 230.528197 \n", "00:00:00.039938658 497.139038 300.743500 ... 167.872041 221.538756 \n", "00:00:00.079877316 497.157898 300.888397 ... 172.082931 213.227768 \n", "00:00:00.119815975 497.196014 300.982727 ... 176.770797 203.171585 \n", "00:00:00.159754633 497.193512 300.888733 ... 184.708252 193.616104 \n", "... ... ... ... ... ... \n", "00:09:58.800306707 403.773225 168.571396 ... 458.965545 138.696243 \n", "00:09:58.840245366 403.317353 167.953598 ... 459.109069 139.845016 \n", "00:09:58.880184024 404.400087 162.526779 ... 459.507567 142.085800 \n", "00:09:58.920122683 404.400087 162.526779 ... 459.507567 142.085800 \n", "00:09:58.960061341 404.400087 162.526779 ... 459.507567 142.085800 \n", "\n", " W_Right_fhip W_Spine_1 \\\n", " x y x y \n", "00:00:00 151.194123 260.958313 145.208389 245.764724 \n", "00:00:00.039938658 156.158676 252.000641 147.822707 238.749525 \n", "00:00:00.079877316 160.587585 244.264328 151.865173 229.841355 \n", "00:00:00.119815975 164.369293 235.348343 156.897583 219.281571 \n", "00:00:00.159754633 168.269272 226.879074 161.464935 209.005005 \n", "... ... ... ... ... \n", "00:09:58.800306707 478.439513 152.962585 464.861633 161.004669 \n", "00:09:58.840245366 480.203215 153.216278 465.769653 161.612426 \n", "00:09:58.880184024 482.209348 155.651763 468.152923 164.586746 \n", "00:09:58.920122683 482.209348 155.651763 468.152923 164.586746 \n", "00:09:58.960061341 482.209348 155.651763 468.152923 164.586746 \n", "\n", " W_Spine_2 W_Tail_base \n", " x y x y \n", "00:00:00 123.380149 292.024324 117.470673 316.318786 \n", "00:00:00.039938658 126.308410 282.404055 117.764466 305.007018 \n", "00:00:00.079877316 129.889419 272.855470 119.838295 295.199738 \n", "00:00:00.119815975 134.908768 261.188996 124.537338 280.778840 \n", "00:00:00.159754633 135.903274 252.997026 125.637749 273.162354 \n", "... ... ... ... ... \n", "00:09:58.800306707 492.194305 185.569657 507.282135 198.650726 \n", "00:09:58.840245366 494.342407 186.055055 509.487884 199.299560 \n", "00:09:58.880184024 496.519652 187.808962 510.491302 200.315918 \n", "00:09:58.920122683 496.519652 187.808962 510.491302 200.315918 \n", "00:09:58.960061341 496.519652 187.808962 510.491302 200.315918 \n", "\n", "[14998 rows x 44 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coords['20191204_Day2_SI_JB08_Test_56']" ] }, { "cell_type": "markdown", "id": "700034c4", "metadata": {}, "source": [ "After filtering to keep only the C57Bl6 (\"B\"), there are only 22 features left (scroll right to see that, as expected, no features related to \"W\" remain):" ] }, { "cell_type": "code", "execution_count": 23, "id": "4ba05592", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
B_CenterB_Left_bhipB_Left_earB_Left_fhipB_Nose...B_Right_earB_Right_fhipB_Spine_1B_Spine_2B_Tail_base
xyxyxyxyxy...xyxyxyxyxy
00:00:00538.363647249.284027552.938171238.256393526.389221298.484528554.218140263.846924497.151367300.893616...515.534424278.740295524.835266258.351959536.314819269.603027536.819580230.367477530.644226211.947082
00:00:00.039938658538.369385249.327469552.927368238.261719526.412781298.484711554.220703263.867645497.139038300.743500...515.557556278.727722524.861694258.385285536.332397269.632355536.820496230.371612530.645569211.948883
00:00:00.079877316538.341919249.331680552.979980238.308563526.437988298.471222554.231751263.856079497.157898300.888397...515.525696278.735718524.850891258.373383536.320923269.619812536.835327230.389618530.657898211.960388
00:00:00.119815975538.328064249.476318553.003174238.238953526.427002298.530182554.242981263.896118497.196014300.982727...515.538391278.738708524.852112258.445496536.338318269.629272536.825806230.358459530.663635211.948959
00:00:00.159754633538.361267249.156189552.935913238.178787526.232361298.454224554.304565263.707153497.193512300.888733...515.538025278.705048524.844055258.242065536.360901269.499512536.811890230.327743530.650696211.961029
..................................................................
00:09:58.800306707417.213013120.369354434.364075121.799324407.657898149.051193420.671143132.926590403.773225168.571396...389.377777147.743684402.071594119.623657406.150024129.519211430.530731113.965172448.407562110.662156
00:09:58.840245366418.764465121.211830437.265686124.925872408.706879148.632080423.572205135.010574403.317353167.953598...389.137940146.219651402.076691119.482201407.196777129.546539432.573608114.848869448.386139111.038552
00:09:58.880184024417.745423119.924720436.591827123.725265407.754945145.980683422.490540133.576019404.400087162.526779...387.196167144.977769399.367402117.643234406.196411127.711792431.796935114.095085448.092437110.713548
00:09:58.920122683417.745423119.924720436.591827123.725265407.754945145.980683422.490540133.576019404.400087162.526779...387.196167144.977769399.367402117.643234406.196411127.711792431.796935114.095085448.092437110.713548
00:09:58.960061341417.745423119.924720436.591827123.725265407.754945145.980683422.490540133.576019404.400087162.526779...387.196167144.977769399.367402117.643234406.196411127.711792431.796935114.095085448.092437110.713548
\n", "

14998 rows × 22 columns

\n", "
" ], "text/plain": [ " B_Center B_Left_bhip \\\n", " x y x y \n", "00:00:00 538.363647 249.284027 552.938171 238.256393 \n", "00:00:00.039938658 538.369385 249.327469 552.927368 238.261719 \n", "00:00:00.079877316 538.341919 249.331680 552.979980 238.308563 \n", "00:00:00.119815975 538.328064 249.476318 553.003174 238.238953 \n", "00:00:00.159754633 538.361267 249.156189 552.935913 238.178787 \n", "... ... ... ... ... \n", "00:09:58.800306707 417.213013 120.369354 434.364075 121.799324 \n", "00:09:58.840245366 418.764465 121.211830 437.265686 124.925872 \n", "00:09:58.880184024 417.745423 119.924720 436.591827 123.725265 \n", "00:09:58.920122683 417.745423 119.924720 436.591827 123.725265 \n", "00:09:58.960061341 417.745423 119.924720 436.591827 123.725265 \n", "\n", " B_Left_ear B_Left_fhip \\\n", " x y x y \n", "00:00:00 526.389221 298.484528 554.218140 263.846924 \n", "00:00:00.039938658 526.412781 298.484711 554.220703 263.867645 \n", "00:00:00.079877316 526.437988 298.471222 554.231751 263.856079 \n", "00:00:00.119815975 526.427002 298.530182 554.242981 263.896118 \n", "00:00:00.159754633 526.232361 298.454224 554.304565 263.707153 \n", "... ... ... ... ... \n", "00:09:58.800306707 407.657898 149.051193 420.671143 132.926590 \n", "00:09:58.840245366 408.706879 148.632080 423.572205 135.010574 \n", "00:09:58.880184024 407.754945 145.980683 422.490540 133.576019 \n", "00:09:58.920122683 407.754945 145.980683 422.490540 133.576019 \n", "00:09:58.960061341 407.754945 145.980683 422.490540 133.576019 \n", "\n", " B_Nose ... B_Right_ear \\\n", " x y ... x y \n", "00:00:00 497.151367 300.893616 ... 515.534424 278.740295 \n", "00:00:00.039938658 497.139038 300.743500 ... 515.557556 278.727722 \n", "00:00:00.079877316 497.157898 300.888397 ... 515.525696 278.735718 \n", "00:00:00.119815975 497.196014 300.982727 ... 515.538391 278.738708 \n", "00:00:00.159754633 497.193512 300.888733 ... 515.538025 278.705048 \n", "... ... ... ... ... ... \n", "00:09:58.800306707 403.773225 168.571396 ... 389.377777 147.743684 \n", "00:09:58.840245366 403.317353 167.953598 ... 389.137940 146.219651 \n", "00:09:58.880184024 404.400087 162.526779 ... 387.196167 144.977769 \n", "00:09:58.920122683 404.400087 162.526779 ... 387.196167 144.977769 \n", "00:09:58.960061341 404.400087 162.526779 ... 387.196167 144.977769 \n", "\n", " B_Right_fhip B_Spine_1 \\\n", " x y x y \n", "00:00:00 524.835266 258.351959 536.314819 269.603027 \n", "00:00:00.039938658 524.861694 258.385285 536.332397 269.632355 \n", "00:00:00.079877316 524.850891 258.373383 536.320923 269.619812 \n", "00:00:00.119815975 524.852112 258.445496 536.338318 269.629272 \n", "00:00:00.159754633 524.844055 258.242065 536.360901 269.499512 \n", "... ... ... ... ... \n", "00:09:58.800306707 402.071594 119.623657 406.150024 129.519211 \n", "00:09:58.840245366 402.076691 119.482201 407.196777 129.546539 \n", "00:09:58.880184024 399.367402 117.643234 406.196411 127.711792 \n", "00:09:58.920122683 399.367402 117.643234 406.196411 127.711792 \n", "00:09:58.960061341 399.367402 117.643234 406.196411 127.711792 \n", "\n", " B_Spine_2 B_Tail_base \n", " x y x y \n", "00:00:00 536.819580 230.367477 530.644226 211.947082 \n", "00:00:00.039938658 536.820496 230.371612 530.645569 211.948883 \n", "00:00:00.079877316 536.835327 230.389618 530.657898 211.960388 \n", "00:00:00.119815975 536.825806 230.358459 530.663635 211.948959 \n", "00:00:00.159754633 536.811890 230.327743 530.650696 211.961029 \n", "... ... ... ... ... \n", "00:09:58.800306707 430.530731 113.965172 448.407562 110.662156 \n", "00:09:58.840245366 432.573608 114.848869 448.386139 111.038552 \n", "00:09:58.880184024 431.796935 114.095085 448.092437 110.713548 \n", "00:09:58.920122683 431.796935 114.095085 448.092437 110.713548 \n", "00:09:58.960061341 431.796935 114.095085 448.092437 110.713548 \n", "\n", "[14998 rows x 22 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coords.filter_id(\"B\")['20191204_Day2_SI_JB08_Test_56']" ] }, { "cell_type": "markdown", "id": "b7d15f4a", "metadata": {}, "source": [ "Now that we have a basic understanding of how to create and interact with a project, coordinates, and table dictionaries, let's show some plots!" ] }, { "cell_type": "markdown", "id": "95b88fbd", "metadata": {}, "source": [ "### Basic visual exploration" ] }, { "cell_type": "markdown", "id": "5540f140", "metadata": {}, "source": [ "Let's first see some basic heatmaps per condition. All plotting functions within DeepOF are hosted in the deepof.visuals module. Among many other things, we can plot average heatmaps per experimental condition! Let's see if we can visualize ant interesting patterns on the available data:" ] }, { "cell_type": "code", "execution_count": 24, "id": "69d82405", "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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MTFCTEyMAEBITEwUtm7dKnkblh2kPXv2CCEhIcLq1asFQRDvIOXl5QlhYWHCnDlzrLcrKSkRkpKShP/973+CIAhC//79hfvuu8/pfXz77bdCamqqUFFRYV1WXFwsREVFCUuXLpX7sN36+eefhRo1algvz58/X4iNjRXy8/MFQRCEixcvCpGRkcLixYslj23EiBFCnTp1PO7MbdmyRQAg5ObmCoIgCM8//7zQqlUr0Trjx48XfbGPGjVKGDNmjGidNWvWCMHBwUJhYaGCZ6CSJXzatm2bsGTJEiEsLEw4ePCgIAji8Gn//v0CAGHdunXW2549e1aIiooSfvrpJ0EQKsMnANbbC4IgfPrpp0KdOnUEQRCEnJwcAYB1h8behAkThDZt2jgsByA8+eSTomU33HCDMHnyZNGyb7/9VkhMTBQEQRCmTJkiNGvWzBqM2frll1+EKlWqCJcuXXK4rqioSIiOjhbWr18vWj5q1CjhrrvuEgRBEF588UWhZcuWouuff/557ogREQUQ7ls54r5Vpby8POGmm24SAAgNGjQQhg4dKsycOVMoKiqyrsN9HiLtcNodkc569uyJ7du3Y/v27di8eTP69OmDfv36OTS59KRly5a499578cILLzhcd+jQIZSWlqJLly7WZWFhYejQoQP27dsHAHj44Yfx448/om3btnjuueewfv1667o7duzAwYMHERcXh9jYWMTGxiI+Ph5FRUU4dOiQ0/FcccUV1nX79evnctwrVqzADTfcgLp16yIuLg7Dhw9HTk6Otez7pptuQlhYGBYsWAAA+OWXX1ClShX06tVL1tiuvPJKhIeHi+5769at6N+/P5KTkxEXF4fu3bsDALKysgAA6enpaN++veg2HTp0EF3esWMHZs+ebb3v2NhY9OnTBxUVFcjMzHR4vFlZWaJ1J0+e7PK5sejTpw+6du2KV155xeG6ffv2ITQ0FNdee611WY0aNZCammr9twWA6OhoNG7c2Ho5MTHRWgYfHx+PkSNHok+fPujfvz8+/PBD0ZQ8d6655hrR5R07duD1118XPcbRo0fjxIkTKCgowB133IHCwkKkpKRg9OjRmD9/vrU8vXfv3mjQoAFSUlIwfPhwzJkzx/o6OHjwIAoKCtC7d2/Rtr/55hvrv/O+fftEzwMAdOrUSdLjICIi/8F9K+5bORMTE4M///wTBw8e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KioK7dq1Q2JiIr7//nsAwPnz5wEA1apVE61vCZnOnTtnXc9+Hct6lnVcSUlJcfl39OhRLx8ZERERmYGpwyc20SQiIiLybNGiRVi/fj2+/PJL7Nu3D/3790d5ebnewyIiIqIAEar3ALxxzz33iC736NEDERERGDNmDLKzs5GUlIQ33njDGlABQM+ePXHo0CG8+uqrGDx4MIDKJpozZszAtGnTcP/99wMA2rdvj+TkZHz++eeKm2gSERERGUHr1q0BAJ06dUL79u3Rtm1bzJ8/Hy1btgQAhx/bLBVR8fHxACornJz9IHf+/HnrOq64a1Kq5imciYiIyLhMXfnkDJtoEhEREbnWunVrhIWF4eDBg2jcuDHCwsIc+jZZLlt6QTVv3hynTp2yhlK269n3iyIiIiKy5xfhE5toEhEREUmzadMmlJaWIiUlBREREejZs6dDO4K5c+eiRYsWaNiwIQDgxhtvRHBwMH755RfrOufPn8eyZctw0003+XL4REREZEKmnnZn0aBBAxw/fhwA0LdvX5820QTcl4wfPXoU9evX97gNIiIiIrXdfvvtuOaaa9C6dWtERUVhx44dePfdd9G6dWsMHDgQAPDKK6+gR48eGDt2LIYMGYK///4b33//PebOnWvdTr169fDAAw9g3LhxCAkJQd26dTF58mRUrVoVDz74oE6PjoiIiMzCL8KnRYsWIT8/H3v27MGbb76J/v37Y/ny5XoPi4iIiEhXHTp0wNy5c/H222+joqICDRs2xOjRo/Hss88iPDwcANC1a1f8+uuvePnllzFz5kwkJydjxowZDm0LPvzwQ8TGxuKFF15Abm4uunTpghUrVqBq1ap6PDQiIiIyEb8In/RsogmwkSYREREZ0wsvvIAXXnjB43q33norbr31VrfrRERE4L333sN7772n1vCIiIgoQPhFzydbbKJJRERERERERGQcfhc+sYkmEREREREREZFxmHraHZtoEhEREREREREZm6nDJzbRJCIiIiIiIiIytiBBEAS9B+HPLA3H3TUlJyIiIn3we1pffP6JiIiMS83vab/r+URERERERERERMbB8ImIiIiIiIiIiDTD8ImIiIiIiIiIiDTD8ImIiIiIiIiIiDTD8ImIiIiIiIiIiDTD8ImIiIiIiIiIiDTD8ImIiIiIiIiIiDTD8ImIiIiIiIiIiDTD8ImIiIiI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cLdQSi7e3t7w8vIyBE6uhCETkTRy7qdZ+URELsuWwMXdgiqGTURERM4hJajwxIBKjcokWzFkItIOhk9E5BHkDGucFWQxYCIiInINcoQcnhhgyYEBE5FrYPhERGQjhkJEREQkN7lCFHcMsRgwEbk+hk9ERERERERuwplBjaWgi4EREVXE8ImIiIiIiIhsxoCJiKTSqb0CRERERERERETkvhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYhg+ERERERERERGRYlw6fFqwYAHat2+PsLAwBAcHo3Xr1vj0008hCIKonyAImDdvHho0aIDAwEB07doV+/btM1peamoqRo4ciZCQEERERGDChAnIzs521sshIiIiIiIiInI7PmqvgCMyMzNx//33o1WrVggICMD27dsxdepUZGdnY9asWYZ+7777Ll5//XXMmzcPbdq0wWeffYbY2FgcPnwYUVFRAIDi4mIMHDgQAPDTTz8hLy8PL774IsaOHYtff/1VlddHREREREREROTqvITKZUIu7sEHH8SBAwdw6tQpAEBBQQFq1aqFp556CnFxcQCAoqIiNG/eHEOGDMGiRYsAAMuWLcODDz6IkydPokWLFgCAhIQEDBw4EPv370fnzp3tWh99uJWcnOzoSyMiIiKZcT+tLm5/IiIi7ZJzP+3Sw+5MqVatGoqKigy39+7di+zsbIwePdrQ5ufnhxEjRmDjxo2Gtk2bNqFNmzaG4AkABgwYgIiICFE/IiIiIiIiIiKSzi3Cp5KSEuTk5GDDhg347rvv8OyzzxruS0xMBABER0eLHhMTE4MLFy4gPz/f0K9yHy8vL0RHRxuWQUREREREREREtnHpOZ8A4MyZM2jWrJnh9quvvornn3/ecDsjIwP+/v4ICAgQPS48PByCICAjIwOBgYHIyMhAWFiY0fLDw8ORnp5ucR30pWim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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.set_context(\"notebook\")\n", "\n", "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))\n", "\n", "deepof.visuals.plot_heatmaps(\n", " my_deepof_project, \n", " [\"B_Nose\"],\n", " center=\"arena\", \n", " exp_condition=\"CSDS\",\n", " condition_value=\"Nonstressed\",\n", " ax=ax1,\n", " show=False,\n", " display_arena=True,\n", " experiment_id=\"average\",\n", ")\n", "\n", "deepof.visuals.plot_heatmaps(\n", " my_deepof_project,\n", " [\"B_Nose\"],\n", " center=\"arena\", \n", " exp_condition=\"CSDS\",\n", " condition_value=\"Stressed\",\n", " ax=ax2,\n", " show=False,\n", " display_arena=True,\n", " experiment_id=\"average\",\n", ")\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "3dc2a2e5", "metadata": {}, "source": [ "It seems stressed animals spend more time closer to the walls of the arena, and less time in the center! For details on how deepof.visuals.plot_heatmap() works, feel free to check the full API reference or the function docstring." ] }, { "cell_type": "markdown", "id": "4c301645", "metadata": {}, "source": [ "Finally, let's create an animated video showing our newly preprocessed data. DeepOF can produce reconstructions of the tracks and show them as videos. All animals and the arena are displayed by default. This is particularly useful when interpreting clusters and visualizing embeddings in the unsupervised pipeline, as we'll see in a later turorial." ] }, { "cell_type": "code", "execution_count": 25, "id": "b0f13977", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython import display\n", "\n", "video = deepof.visuals.animate_skeleton(\n", " my_deepof_project,\n", " experiment_id=\"20191204_Day2_SI_JB08_Test_54\",\n", " frame_limit=500,\n", " dpi=60,\n", ")\n", "\n", "html = display.HTML(video)\n", "display.display(html)\n", "plt.close()" ] }, { "cell_type": "markdown", "id": "8ded862f", "metadata": {}, "source": [ "### What's next" ] }, { "cell_type": "markdown", "id": "d4f08308", "metadata": {}, "source": [ "That's it for this tutorial. [Next](https://deepof.readthedocs.io/en/latest/tutorial_notebooks/deepof_supervised_tutorial.html), we'll see how to run a supervised annotation pipeline with pretrained models!" ] } ], "metadata": { "kernelspec": { "display_name": "deepof", "language": "python", "name": "deepof" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 }