# π§ SimBA Tools Reference > This is a consolidated reference for the **Tools** menu in SimBA. It is based on [Tutorial_tools.md](https://github.com/sgoldenlab/simba/blob/master/docs/Tutorial_tools.md) and the current SimBA GUI. For visualization-specific tools (e.g. create path plot, visualize pose in folder, concatenate two videos), see [Visualizations.md](Visualizations.md). SimBA provides video and image processing tools that work **with or without** a SimBA project. Many are useful for one-off tasks (trim a video, change FPS, crop, convert format). They are available from the **Tools** menu: - **Tools** β Change FPS, clip, crop, convert formats, remove color, concatenate videos, convert ROI definitions, convert tracking data formats, create path plot, drop body-parts, down-sample video, extract frames, create GIFs, get metric conversion factor, brightness/contrast, merge frames to video, change playback speed, print classifier info, video meta data, reorganize tracking data, rotate/flip/reverse, superimpose on videos, remove backgrounds, temporal join, box blur, cross-fade, average frames, validate video seekability, **visualize pose-estimation in folder**, and **egocentrically align pose and video** (the last two are also described in [Visualizations.md](Visualizations.md)). > **Batch preprocessing** is **not** part of the Tools menu. It lives under **Process Videos** β **Batch pre-process videos**. Use batch preprocessing when you want to apply the same operations (e.g. clip, crop, downsample, change format) to **many videos in one go**, often before creating a project or importing. For full instructions, see [Tutorial: Process videos](https://github.com/sgoldenlab/simba/blob/master/docs/tutorial_process_videos.md) (batch pre-processing). The **Process Videos** menu (separate from **Tools**) includes **Blob tracking** and **YOLO tracking**; those are summarized in [Visualizations.md](Visualizations.md). > **GPU:** Many video processing dialogs include a **USE GPU** (or similar) option. If you have an NVIDIA GPU, enabling it can speed up processing. See [GPU vs CPU video processing runtimes](https://github.com/sgoldenlab/simba/blob/master/docs/gpu_vs_cpu_video_processing_runtimes.md) for typical time savings. > **FFmpeg:** Most video and image processing operations in the Tools menu (change FPS, clip, crop, convert format, remove color, concatenate, down-sample, merge frames, playback speed, rotate/flip/reverse, superimpose, and others) rely on **FFmpeg** for encoding and decoding. Ensure [FFmpeg is installed and on your system PATH](https://github.com/sgoldenlab/simba/blob/master/docs/installation.md) so these tools run correctly. > **Tooltips:** Many menu items and dialog options in SimBA have **tooltips**. Hover over a label or control to see a short description. --- ## π Contents Jump to any section: - [π Quick reference (Tools menu)](#-quick-reference-tools-menu) - [π Detailed sections (Tools menu)](#-detailed-sections-tools-menu) - [β±οΈ Change FPS (Tools menu)](#change-fps-tools-menu) - [Change FPS for single video](#-change-fps-for-single-video) - [Change FPS for multiple videos](#-change-fps-for-multiple-videos) - [Up-sample FPS with interpolation](#-up-sample-fps-with-interpolation) - [βοΈ Clip videos (Tools menu)](#clip-videos-tools-menu) - [Clip single video (by time)](#-clip-single-video-by-time) - [Clip multiple videos (by time)](#-clip-multiple-videos-by-time) - [Clip video into multiple videos](#-clip-video-into-multiple-videos) - [Clip single video by frame numbers](#-clip-single-video-by-frame-numbers) - [Clip multiple videos by frame numbers](#-clip-multiple-videos-by-frame-numbers) - [π² Crop videos (Tools menu)](#crop-videos-tools-menu) - [Crop videos (rectangle)](#-crop-videos-rectangle) - [Crop videos (circles)](#-crop-videos-circles) - [Crop videos (polygons)](#-crop-videos-polygons) - [Multi-crop videos](#multi-crop-videos) - [π Convert file formats (Tools menu)](#convert-file-formats-tools-menu) - [Convert image file formats](#-convert-image-file-formats) - [Convert video file formats (single or multiple)](#-convert-video-file-formats-single-or-multiple) - [π¨ Remove color from videos (Tools menu)](#remove-color-from-videos-tools-menu) - [Convert to grayscale](#-convert-to-grayscale) - [Convert to black and white](#-convert-to-black-and-white) - [CLAHE enhance videos](#-clahe-enhance-videos) - [Interactively CLAHE enhance videos](#-interactively-clahe-enhance-videos) - [ποΈ Concatenate (stack) videos](#concatenate-stack-videos) - [Concatenate two videos](#concatenate-two-videos) - [Concatenate multiple videos](#concatenate-multiple-videos) - [π Convert ROI definitions](#convert-roi-definitions) - [π Convert tracking data formats](#convert-tracking-data-formats) - [π Convert working file type](#convert-working-file-type) - [π Create path plot](#create-path-plot) - [βοΈ Drop body-parts from tracking data](#drop-body-parts-from-tracking-data) - [π Down-sample video](#down-sample-video) - [Down-sample single video](#-down-sample-single-video) - [Down-sample multiple videos](#-down-sample-multiple-videos) - [πΌοΈ Extract frames](#extract-frames) - [Extract defined frames (single video)](#-extract-defined-frames-single-video) - [Extract frames from single video (all frames)](#-extract-frames-from-single-video-all-frames) - [Extract frames from multiple videos (all frames)](#-extract-frames-from-multiple-videos-all-frames) - [Extract frames from seq files](#-extract-frames-from-seq-files) - [ποΈ Create GIFs](#create-gifs) - [π Get metric conversion factor (pixels/millimeter)](#get-metric-conversion-factor-pixelsmillimeter) - [βοΈ Change video brightness / contrast](#change-video-brightness--contrast) - [π¬ Merge frames to video](#merge-frames-to-video) - [β© Change video playback speed](#change-video-playback-speed) - [π¨οΈ Print classifier info](#print-classifier-info) - [βΉοΈ Show video file(s) meta data](#show-video-files-meta-data) - [π Reorganize Tracking Data](#reorganize-tracking-data) - [π Rotate / flip / reverse videos](#rotate--flip--reverse-videos) - [Rotate videos](#-rotate-videos) - [Interactively rotate videos](#-interactively-rotate-videos) - [Flip videos](#-flip-videos) - [Reverse videos](#-reverse-videos) - [π·οΈ Superimpose on videos](#superimpose-on-videos) - [Superimpose frame numbers](#-superimpose-frame-numbers) - [Superimpose watermark](#-superimpose-watermark) - [Superimpose timer](#-superimpose-timer) - [Superimpose progress-bar](#-superimpose-progress-bar) - [Superimpose video on video](#-superimpose-video-on-video) - [Superimpose video names](#-superimpose-video-names) - [Superimpose free-text](#-superimpose-free-text) - [π Remove video backgrounds](#remove-video-backgrounds) - [Remove background from single video (mean subtraction)](#-remove-background-from-single-video-mean-subtraction) - [Remove background from multiple videos (mean subtraction)](#-remove-background-from-multiple-videos-mean-subtraction) - [β±οΈ Temporal join videos](#temporal-join-videos) - [Temporal join all videos in directory](#-temporal-join-all-videos-in-directory) - [Temporal join selected videos](#-temporal-join-selected-videos) - [π«οΈ Box blur videos](#box-blur-videos) - [π Cross-fade videos](#cross-fade-videos) - [π Create average frames from videos](#create-average-frames-from-videos) - [β Validate video seekability](#validate-video-seekability) - [ποΈ Visualize pose-estimation in folder](#visualize-pose-estimation-in-folder) - [π§ Egocentrically align pose and video](#egocentrically-align-pose-and-video) - [π Extract project annotation counts](#extract-project-annotation-counts) - [π Related documentation](#related-documentation) - [π API reference (Read the Docs)](#api-reference-read-the-docs) --- ## π Quick reference (Tools menu) | Menu path | Description | |-----------|-------------| | [**Tools** β **Change FPS...**](#change-fps-tools-menu) | Single/multiple video FPS; up-sample with interpolation | | [**Tools** β **Clip videos...**](#clip-videos-tools-menu) | Clip single/multiple by time or frame numbers; clip into multiple videos | | [**Tools** β **Crop videos...**](#crop-videos-tools-menu) | Rectangle crop; circle crop; polygon crop; multi-crop | | [**Tools** β **Convert file formats...**](#convert-file-formats-tools-menu) | Images (PNG, JPEG, BMP, TIFF, WEBP); videos (MP4, AVI, WEBM, MOV) | | [**Tools** β **Remove color from videos...**](#remove-color-from-videos-tools-menu) | Grayscale; black and white; CLAHE; interactive CLAHE | | [**Tools** β **Concatenate (stack) videos...**](#concatenate-stack-videos) | Two videos (horizontal/vertical); multiple videos (mosaic) | | [**Tools** β **Convert ROI definitions**](#convert-roi-definitions) | Export ROI definitions (H5) to CSV (polygons, rectangles, circles) | | [**Tools** β **Convert tracking data formats...**](#convert-tracking-data-formats) | DLC/SLEAP/COCO/Labelme β YOLO and other pose formats | | [**Tools** β **Convert working file type...**](#convert-working-file-type) | CSV β parquet | | [**Tools** β **Create path plot**](#create-path-plot) | Simple path plot from pose CSV (no project). See [Visualizations](Visualizations.md#create-path-plots-roi-tab). | | [**Tools** β **Drop body-parts from tracking data**](#drop-body-parts-from-tracking-data) | Remove selected body-parts from pose CSVs in a folder | | [**Tools** β **Down-sample video...**](#down-sample-video) | Single or multiple videos to lower resolution | | [**Tools** β **Extract frames...**](#extract-frames) | Defined frame range; single/multiple video; from .seq files | | [**Tools** β **Create GIFs**](#create-gifs) | Generate GIF from video (start time, duration, size) | | [**Tools** β **Get metric conversion factor (pixels/millimeter)**](#get-metric-conversion-factor-pixelsmillimeter) | Calibrate known length in mm on one frame | | [**Tools** β **Change video brightness / contrast**](#change-video-brightness--contrast) | Adjust brightness and contrast | | [**Tools** β **Merge frames to video**](#merge-frames-to-video) | Folder of images β video (format, fps, bitrate) | | [**Tools** β **Change video playback speed**](#change-video-playback-speed) | Speed up or slow down video | | [**Tools** β **Print classifier info**](#print-classifier-info) | Print model details from a `.sav` file | | [**Tools** β **Show video file(s) meta data**](#show-video-files-meta-data) | Print video metadata (resolution, fps, etc.) | | [**Tools** β **Reorganize Tracking Data**](#reorganize-tracking-data) | Reorder body-parts across pose files in a folder | | [**Tools** β **Rotate / flip / reverse videos...**](#rotate--flip--reverse-videos) | Rotate (fixed or interactive); flip; reverse | | [**Tools** β **Superimpose on videos...**](#superimpose-on-videos) | Frame numbers; watermark; timer; progress bar; video on video; video names; free text | | [**Tools** β **Remove video backgrounds...**](#remove-video-backgrounds) | Mean-subtraction background removal (single or directory) | | [**Tools** β **Temporal join videos...**](#temporal-join-videos) | Join videos in directory or selected list into one (by order) | | [**Tools** β **Box blur videos**](#box-blur-videos) | Apply box blur | | [**Tools** β **Cross-fade videos**](#cross-fade-videos) | Cross-fade between two videos | | [**Tools** β **Create average frames from videos**](#create-average-frames-from-videos) | Average frame(s) across videos | | [**Tools** β **Validate video seekability**](#validate-video-seekability) | Check if videos are seekable (e.g. for analysis) | | [**Tools** β **Visualize pose-estimation in folder...**](#visualize-pose-estimation-in-folder) | Overlay pose on videos from any folder. See [Visualizations](Visualizations.md#visualize-pose-estimation-in-folder-tools-menu). | | [**Tools** β **Egocentrically align pose and video**](#egocentrically-align-pose-and-video) | Center and align orientation. See [Visualizations](Visualizations.md#egocentrically-align-pose-and-video-tools-menu). | --- ## π Detailed sections (Tools menu) The sections below follow the **Tools** menu order and give short "what it does," where to find it, main options, and where output is saved. For tools covered in more detail in [Visualizations.md](Visualizations.md), the section points to that doc. --- ## β±οΈ Change FPS (Tools menu) *Available under **Tools** β **Change FPS...**. Three sub-options: single video, multiple videos, or up-sample with interpolation.* **What it is:** The frame rate (FPS) is how many frames the video shows per second. Changing FPS means re-encoding the video so it plays at a different rate: either fewer frames (e.g. 30 β 15 fps) or more frames (up-sampling adds interpolated frames between existing ones). **Why use it:** Lower FPS reduces file size and speeds up downstream processing (e.g. before importing into SimBA or for quick previews). Matching FPS across all videos ensures consistent analysis. Up-sampling is useful when you need smoother playback or a specific frame rate for another tool, without re-recording. No SimBA project required. **Related:** [Clip videos](#clip-videos-tools-menu) (trim before/after), [Down-sample video](#down-sample-video) (reduce resolution), [Batch pre-process videos](https://github.com/sgoldenlab/simba/blob/master/docs/tutorial_process_videos.md) (batch FPS + clip + crop). --- ### β±οΈ Change FPS for single video * **Tools** β **Change FPS...** β **Change FPS for single video** Re-encodes **one video** to a new frame rate. You choose the input file and the output FPS (e.g. 15). SimBA creates a new file in the same directory as the input; the frame count may change depending on the ratio (e.g. 30 fps β 15 fps halves the number of frames).
--- ### β±οΈ Change FPS for multiple videos * **Tools** β **Change FPS...** β **Change FPS for multiple videos** Re-encodes **all videos in a folder** to the same target FPS. Useful for batch standardizing frame rate before import or analysis.
--- ### π² Crop videos (circles) * **Tools** β **Crop videos...** β **Crop videos (circles)** Crops to a **circular** region. Single-video mode: draw one circle per video. **Fixed circle coordinates crop for multiple videos**: draw the circle once on the first video, then apply the same circle to all videos in a folder (useful when the camera and arena are static). | Option | Description | |--------|-------------| | **Video path** (single) | Path to the video. Click **Crop**; the first frame opens for drawing. | | **Video directory** / **Output directory** (batch) | For fixed circle crop: folder of input videos and folder where cropped videos will be saved. | | **OUTPUT VIDEO QUALITY** | Percentage (1β100, default 60). Higher = better quality and larger file; lower = smaller file and lower quality. Scale is not linear; 60 usually works well; avoid values above 80. | | **USE GPU** | **TRUE** = use NVIDIA GPU for encoding (if available). **FALSE** = CPU only. | | **Draw circle** | On the first frame: **left-click** at the center of the region, **drag** to the edge to set the radius. **Without releasing the mouse**, press **ESC**, **Space**, or **Q** to confirm the circle. | | **Crop** (single) / **Crop Videos** (batch) | Single: runs after you confirm the circle. Batch: applies the same circle to all videos in the directory. | **Where output is saved:** Same folder as input (single), or the **output directory** you chose (batch). Filenames typically add `_cropped` or similar.
--- ### π² Crop videos (polygons) * **Tools** β **Crop videos...** β **Crop videos (polygons)** Crops to a **user-defined polygon** (shape with multiple corners). You click points on the first frame to define the shape; SimBA crops every frame to that polygon. | Option | Description | |--------|-------------| | **Input** / **VIDEO PATH** (single) / **Video directory** (batch) | The video file or folder of videos to crop. | | **Output directory** (batch) | Where to save the cropped videos (batch mode). | | **Polygon** | On the first frame, **click** to place each vertex of the polygon in order. Complete the shape (e.g. close the loop or press a key to finish). Exact method (clicks vs drag) depends on the dialog. | | **OUTPUT VIDEO QUALITY** (if available) | Percentage (1β100, default 60). Higher = better quality and larger file; lower = smaller file and lower quality. Scale is not linear; 60 usually works well; avoid values above 80. | | **USE GPU** (if available) | **TRUE** = use NVIDIA GPU for encoding. **FALSE** = CPU only. | | **Run** / **Crop** | Apply the crop and save the new video(s). | **Where output is saved:** As specified in the dialog (often same directory as input with `_cropped` or similar).
--- ### π² Multi-crop videos * **Tools** β **Crop videos...** β **Multi-crop** Splits **each video** into **several cropped videos** by drawing multiple rectangles (e.g. one camera recording four arenas yields four output videos per file). You set **CROPS PER VIDEO**; for each video in the folder, the first frame opens and you draw that many rectangles in order (one per output clip). Press **Enter** after each rectangle; then move to the next video.
--- ## π Convert file formats (Tools menu) *Available under **Tools** β **Convert file formats...**. Two sub-menus: image formats and video formats.* **What it is:** Converting changes the **file format** (container/codec for video, or image type for images) without changing the content. For example, PNG β JPEG for images, or MP4 β AVI for video. SimBA re-encodes the data into the new format. **Why use it:** Match the format required by another program (e.g. PowerPoint, a labelling tool, or SimBA's import), reduce file size (e.g. JPEG instead of PNG, or a more efficient video codec), or standardize all project assets to one format. No SimBA project required. **Related:** [Merge frames to video](#merge-frames-to-video) (images β video); [Extract frames](#extract-frames) (video β images). Some builds offer **Convert mp4 into Powerpoint supported format** under this menu. --- ### π Convert image file formats * **Tools** β **Convert file formats...** β **Convert image file formats...** Converts **all images in a folder** from one format to another. You choose the folder, the source format (e.g. PNG), and the target format (e.g. JPEG, BMP, TIFF, WEBP). SimBA overwrites or saves alongside the originals depending on the dialog. | Option | Description | |--------|-------------| | **Browse Folder** | Directory containing the images to convert. | | **Input format** | Current format of the images (e.g. PNG, JPEG). | | **Output format** | Desired format. Options typically include PNG, JPEG, BMP, TIFF, WEBP. | | **Convert image file format** | Run. All matching files in the folder are converted. | **Where output is saved:** As specified in the dialog (often the same folder with new extension, or a chosen output folder). --- ### π Convert video file formats (single or multiple) * **Tools** β **Convert file formats...** β **Change video file formats...** β **Convert videos to MP4** / **AVI** / **WEBM** / **MOV** Converts one or more videos to a target **container format** (e.g. MP4, AVI, WEBM, MOV). The video is re-encoded; you can choose compression codec and quality. Use **Browse File** for one video or **Browse Folder** for a directory. | Option | Description | |--------|-------------| | **Browse File** (single) / **VIDEO PATH** | Path to the video to convert. | | **Browse Folder** (multiple) / **VIDEO DIRECTORY** | Folder containing the videos to convert. | | **Input format** | Current file extension (e.g. `mp4`, `avi`). Enter **without** a dot. | | **Output format** | Target format (e.g. `mp4`, `webm`, `mov`). Output files will have this extension. | | **COMPRESSION CODEC** (if shown) | Encoder used for the output (e.g. H.264, HEVC, VP9). Affects file size and compatibility. | | **OUTPUT VIDEO QUALITY** | Percentage (1β100, default 60). Higher = better quality and larger file; lower = smaller file and lower quality. Scale is not linear; 60 usually works well; avoid values above 80. | | **USE GPU** (if shown) | **TRUE** = use NVIDIA GPU for encoding when available. **FALSE** = CPU only. | | **KEEP AUDIO** (if shown) | **TRUE** = keep the original audio track. **FALSE** = output video only. | | **Convert** / **Convert multiple videos** | Run. | **Where output is saved:** Same directory as the input (or as set in the dialog). Output files use the new extension. **Note:** Some builds also offer **Convert .avi to .mp4**, **Convert mp4 into Powerpoint supported format**, or **Change .seq to .mp4** under this menu. --- ## π¨ Convert to grayscale * **Tools** β **Remove color from videos...** β **Convert to grayscale** **What it is:** Converts color video to single-channel grayscale (no color information). Each pixel becomes a shade of gray based on luminance. Uses FFmpeg's `format=gray` filter or OpenCV's `COLOR_BGR2GRAY` conversion. Supports single video or batch processing. Output format is typically MP4 with `_grayscale` suffix. Can use GPU acceleration (NVIDIA NVENC) for faster encoding. **Why use it:** Reduces file size (single channel vs. three RGB channels), removes color information that may be irrelevant for tracking, can improve processing speed, and is useful when color doesn't contribute to analysis. No SimBA project required. **Technical details:** Uses FFmpeg (`-vf format=gray`) or OpenCV (`cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)`). GPU acceleration available via NVIDIA NVENC codec. **Related:** [Extract frames](#extract-frames) (grayscale option when extracting), [Change video brightness / contrast](#change-video-brightness--contrast).
 --- --- ## π¨ Convert to black and white * **Tools** β **Remove color from videos...** β **Convert to black and white** **What it is:** Creates a binary (two-tone) video where each pixel is either pure black (0) or pure white (255), with no gray values. Uses threshold-based conversion: pixels below the threshold become black, pixels above become white. The threshold value (0.01β1.01, default 0.5) controls the balanceβlower values produce more white pixels, higher values produce more black pixels. Useful for creating high-contrast foreground/background separation or when you need strict binary segmentation. Supports single video or batch processing. **Why use it:** Creates strict binary segmentation for foreground/background separation, useful for blob tracking or when you need high-contrast visualization, can help isolate animals from background in controlled lighting. No SimBA project required. **Technical details:** Uses threshold-based binary conversion (`cv2.threshold()`). Threshold value normalized to 0β1 range, then applied per pixel. **Related:** [Extract frames](#extract-frames) (black and white option when extracting), [Change video brightness / contrast](#change-video-brightness--contrast).
--- --- ## π¨ CLAHE enhance videos * **Tools** β **Remove color from videos...** β **CLAHE enhance videos** **What it is:** Applies Contrast-Limited Adaptive Histogram Equalization to improve local contrast in dim or low-contrast footage. Unlike global histogram equalization, CLAHE divides the image into small tiles (default 16Γ16 pixels) and equalizes each tile independently, then limits the amplification to prevent over-enhancement. The **clip limit** parameter (default 2.0) controls how much contrast can be boosted per tileβhigher values increase local contrast but may introduce noise. The **tile size** parameter controls the size of local regionsβsmaller tiles preserve more local detail, larger tiles produce smoother results. Converts video to grayscale first, then applies CLAHE per frame using OpenCV's `cv2.createCLAHE()`. Output is typically saved as `.avi` format with `CLAHE_` prefix. **Why use it:** Enhances visibility in poor lighting conditions (infrared, low-light), improves local contrast without over-brightening entire frames, makes subtle features more visible, particularly useful for dark or flat footage where animals blend into background. No SimBA project required. **Technical details:** Uses OpenCV's `cv2.createCLAHE(clipLimit, tileGridSize)` applied frame-by-frame. First converts to grayscale, then applies CLAHE filter. **Related:** [Extract frames](#extract-frames) (CLAHE option when extracting), [Change video brightness / contrast](#change-video-brightness--contrast), [Interactively CLAHE enhance videos](#-interactively-clahe-enhance-videos).
--- --- ## π¨ Interactively CLAHE enhance videos * **Tools** β **Remove color from videos...** β **Interactively CLAHE enhance videos** **What it is:** Same CLAHE enhancement as the standard CLAHE function, but provides an interactive OpenCV window with real-time preview. You can adjust **Clip limit** and **Tile size** using sliders and see the effect immediately on a sample frame before processing the entire video. The preview updates as you move the sliders, allowing you to fine-tune parameters visually. Once satisfied with the preview, you can apply the settings to the full video. **Why use it:** Allows visual tuning of CLAHE parameters before processing, saves time by avoiding trial-and-error batch processing, helps find optimal settings for specific video conditions. Ideal when you need to experiment with different contrast levels or when default CLAHE settings don't produce the desired result. No SimBA project required. **Technical details:** Uses OpenCV trackbars (`cv2.createTrackbar()`) for real-time parameter adjustment, updates preview with throttling to prevent lag. Applies the same CLAHE algorithm (`cv2.createCLAHE()`) as the standard function once parameters are confirmed. **Related:** [CLAHE enhance videos](#-clahe-enhance-videos), [Extract frames](#extract-frames) (CLAHE option when extracting), [Change video brightness / contrast](#change-video-brightness--contrast).
| Option | Description | |--------|-------------| | **VIDEO PATH** / **Input** | Path to the video. | | **Interactive window** | **Clip limit** β Slider to control how much contrast is boosted (higher = stronger). **Tile size** β Slider for the size of local regions. The preview updates as you change them. | | **Apply** / **Save** | When the preview looks good, click to save the enhanced video. | | **Output path** (if shown) | Folder or full path where the output video will be saved. | **Where output is saved:** As set in the dialog (often same folder with a suffix). --- ### ποΈ Concatenate (stack) videos **Where:** **Tools** β **Concatenate (stack) videos...** **What it is:** Concatenating (stacking) means **combining two or more videos into one output file**. SimBA can place them **side by side or stacked** in the same frame (so you see all streams at once), orβfor "temporal join" elsewhereβplay them one after another in time.
--- ### βοΈ Drop body-parts from tracking data **Where:** **Tools** β **Drop body-parts from tracking data** **What it is:** Pose files contain columns for every body-part (e.g. Nose_x, Nose_y, Tail_base_x, β¦). This tool **removes** the columns for body-parts you select and writes new files (or overwrites) so the remaining parts are unchanged. **Why use it:** Simplify datasets by dropping parts you do not need (e.g. ears if only body and tail matter), fix projects where extra keypoints were imported by mistake, or reduce file size and feature count before training or analysis. **For more info:** [Scenario 1 β Further imports](Scenario1.md#step-2-optional--further-imports) (other pose modifications). **Related:** [Reorganize Tracking Data](#reorganize-tracking-data), [Convert tracking data formats](#convert-tracking-data-formats). | Option | Description | |--------|-------------| | **Data Folder** | Folder containing pose CSVs (or parquet). | | **Tracking Tool** | Source format (e.g. DLC, SLEAP). | | **File Type** | **CSV** or **parquet**. | | **# body-parts to remove** | Number of body-parts to drop. | | **Confirm** | Loads file structure; then select which body-parts to remove from the list. | | **Run Removal** | Removes selected body-parts from all files in the folder. | **Where output is saved:** New folder inside **Data Folder** with a name like `Reorganized_bp_20210726111127` (reused naming from reorganize). --- ### π Down-sample video **Where:** **Tools** β **Down-sample video...** **What it is:** **Down-sampling** reduces the **resolution** (width Γ height in pixels) of the video. Each frame is resized to smaller dimensions; the result is a smaller file and faster decoding. **Why use it:** Shrink file size for storage or sharing, speed up SimBA (and other tools) by processing fewer pixels, or match a target resolution (e.g. 640Γ480) for consistency across recordings. Single-video or batch. **Related:** [Change FPS](#change-fps-tools-menu), [Crop videos](#crop-videos-tools-menu), [Batch pre-process videos](https://github.com/sgoldenlab/simba/blob/master/docs/tutorial_process_videos.md). --- #### π Down-sample single video * **Tools** β **Down-sample video...** β **Down-sample single video**
--- ### βοΈ Change video brightness / contrast **Where:** **Tools** β **Change video brightness / contrast** **What it is:** **Brightness** shifts all pixels brighter or darker; **contrast** stretches or compresses the difference between dark and light areas. SimBA applies these adjustments to every frame and saves a new video. **Why use it:** Compensate for under- or overexposed recordings, make animals or features easier to see (or easier for tracking), or normalize lighting across videos before analysis. Single video or batch. **Related:** [Remove color from videos](#remove-color-from-videos-tools-menu) (grayscale, CLAHE), [Box blur videos](#box-blur-videos). | Option | Description | |--------|-------------| | **Input** / **VIDEO PATH** (single) / **VIDEO DIRECTORY** (multiple) | The video file or folder of videos to adjust. | | **Brightness** | How much to brighten or darken (e.g. -50 to +50, or 0β100). Positive = brighter; negative = darker. | | **Contrast** | How much to increase or decrease the difference between light and dark. Higher = more contrast (darks darker, lights lighter). | | **OUTPUT VIDEO QUALITY** (if shown) | Percentage (1β100, default 60). Higher = better quality and larger file; lower = smaller file and lower quality. Scale is not linear; 60 usually works well; avoid values above 80. | | **Save directory** / **Output** | Folder where the adjusted video(s) will be saved. | | **Run** | Apply and save. | **Where output is saved:** The save directory you chose (or as set in the dialog).
--- ### π¬ Merge frames to video **Where:** **Tools** β **Merge frames to video** **What it is:** **Merge** here means **turn a folder of images into one video**: each image becomes one frame, in **alphabetical/filename order**. You set the output frame rate (FPS), format (e.g. mp4), and quality; SimBA encodes the image sequence as a video. **Why use it:** Rebuild a video from extracted frames (e.g. after editing frames in another program), create a video from a timelapse of still images, or assemble an animation from rendered images (e.g. path plots or heatmaps exported as PNGs). **Related:** [Extract frames](#extract-frames) (inverse: video β images), [Concatenate multiple videos](#concatenate-multiple-videos) (merge visualization videos). [Scenario 2 β Part 5](Scenario2.md#part-5--visualize-results) creates frames then merges them into videos. | Option | Description | |--------|-------------| | **IMAGE DIRECTORY** | Folder containing the frame images (e.g. PNG, JPEG). **Order matters:** frames are taken in **alphabetical order by filename**, so name files so they sort correctly (e.g. `frame_001.png`, `frame_002.png`). | | **VIDEO FPS** | Output video frame rate (1β100). Default: 30. How many of your images are shown per second in the final video. | | **VIDEO QUALITY** | Percentage (1β100, default 60). Higher = better quality and larger file; lower = smaller file and lower quality. Scale is not linear; 60 usually works well; avoid values above 80. | | **VIDEO FORMAT** | Output container: **mp4**, **avi**, or **webm**. MP4 is widely compatible. | | **Use GPU (reduced runtime)** | **TRUE** = use NVIDIA GPU for encoding when available. **FALSE** = CPU only. | | **Run** | Start merging. One video file is created from all images in the folder. | **Where output is saved:** Same directory as the image folder (or as specified in the dialog). Output filename is typically derived from the folder or a default name. --- ### β© Change video playback speed **Where:** **Tools** β **Change video playback speed** **What it is:** **Playback speed** controls how fast the video plays (e.g. 2Γ = twice as fast, 0.5Γ = half speed). SimBA re-encodes the video so that when played at normal speed, the motion appears faster or slower (by dropping or duplicating frames, or changing FPS metadata).
--- ### π¨οΈ Print classifier info **Where:** **Tools** β **Print classifier info** **What it is:** A SimBA classifier is saved as a `.sav` file (e.g. a random forest). This tool **reads** that file and **prints** its main parameters to the terminal: number of trees, number of features, hyperparameters, creation time, etc.βno file is written. **Why use it:** Check which model or settings were used, document methods for a paper, debug mismatches between training and inference, or compare two `.sav` files by eye. **For more info:** [Scenario 1 β Step 7: Train machine model](Scenario1.md#step-7--train-machine-model), [Scenario 2 β Part 3: Run the classifier](Scenario2.md#part-3--run-the-classifier-on-new-data). | Option | Description | |--------|-------------| | **Model path** | Browse to the classifier `.sav` file. | | **PRINT MODEL INFO** | Click to print details to the main SimBA terminal. | **Where output is saved:** No file; text appears in the SimBA terminal. --- ### βΉοΈ Show video file(s) meta data **Where:** **Tools** β **Show video file(s) meta data** **What it is:** **Metadata** is technical information about the video file: resolution (width Γ height), frame rate (FPS), codec, duration, file size, etc. This tool **reads** one or more video files and **prints** that information to the SimBA terminalβno output file. **Why use it:** Verify video properties before import, check that FPS or resolution match expectations, troubleshoot playback or analysis issues, or document video specs for methods sections. **Related:** [Validate video seekability](#validate-video-seekability), [Scenario 1 β Step 3: Video parameters](Scenario1.md#step-3--set-video-parameters) (uses video info). | Option | Description | |--------|-------------| | **Select video file(s)** | Browse to one video or select a folder of videos. | | **Run / Show** | Prints metadata to the main SimBA terminal. | **Where output is saved:** No file; info appears in the terminal. --- ### π Reorganize Tracking Data **Where:** **Tools** β **Reorganize Tracking Data** **What it is:** Pose CSVs/parquet files have **columns** for each body-part (often in x, y, likelihood order). Different recordings or tools may use **different column orders**. This tool **reorders** the columns so that every file in a folder has the **same** order (e.g. Nose, Ears, Tail_base, β¦). **Why use it:** SimBA (and many scripts) assume a consistent column order. If you merged data from different projects or tools, or if body-parts are in a different order than your project expects, reorganizing avoids wrong assignments and failed runs. **Related:** [Drop body-parts from tracking data](#drop-body-parts-from-tracking-data), [Convert tracking data formats](#convert-tracking-data-formats). | Option | Description | |--------|-------------| | **Data Folder** | Folder containing pose files (CSV or parquet). | | **Tracking Tool** | Source format (e.g. DLC, SLEAP). | | **File Type** | **CSV** or **parquet**. | | **Confirm** | Loads current column order from the files. | | **Current Order** vs **New Order** | Dropdowns or list to set the desired body-part order. | | **Run re-organization** | Writes reordered data to a new folder. | **Where output is saved:** Date-time stamped folder inside **Data Folder** (e.g. `Reorganized_bp_20210726111127`). --- ### π Rotate / flip / reverse videos **Where:** **Tools** β **Rotate / flip / reverse videos...** **What it is:** **Rotate** turns every frame by a fixed angle (e.g. 90Β°, 180Β°); **flip** mirrors frames horizontally or vertically; **reverse** plays the video backwards (last frame first). SimBA re-encodes and saves a new file. **Why use it:** Correct camera orientation (e.g. camera mounted sideways), mirror a view for consistency across setups, or create a backwards-playback clip for presentation or validation. Single video or batch. **Related:** [Egocentrically align pose and video](#egocentrically-align-pose-and-video) (rotate to animal-centric view), [Crop videos](#crop-videos-tools-menu). --- #### π Rotate videos * **Tools** β **Rotate / flip / reverse videos...** β **Rotate videos** Rotates **every frame** by a **fixed angle** (e.g. 90Β° or 180Β°). Use when the camera was mounted sideways or upside down and you want the whole video reoriented. You choose one video or a folder; set the rotation angle; SimBA re-encodes and saves the new file(s).
Lets you **rotate by keypress** while viewing the video: use **left/right arrow keys** to rotate stepwise until the orientation looks correct, then press **Esc** to save and close. Useful when you don't know the exact angle and want to tune by eye. | Option | Description | |--------|-------------| | **Input** | Path to the video. | | **Save directory** | Where to save the rotated video. | | **Left/right arrow keys** | Rotate the frame stepwise. | | **Esc** | Save the current orientation and close the window. | | **Run** (if in dialog) | Start the interactive window. |
--- #### β©οΈ Flip videos * **Tools** β **Rotate / flip / reverse videos...** β **Flip videos** **Mirrors** each frame **horizontally** (leftβright) or **vertically** (topβbottom). No rotationβonly a mirror flip. Use to correct a reversed view or to match orientation across setups. Single video or batch.
--- #### βͺ Reverse videos * **Tools** β **Rotate / flip / reverse videos...** β **Reverse videos** **Reverses the frame order** so the video plays **backwards** (last frame first). Use for presentation, validation, or when you need a reversed clip. Single video or batch. SimBA re-encodes the video with frames in reverse order.
--- ### π·οΈ Superimpose on videos **Where:** **Tools** β **Superimpose on videos...** **What it is:** **Superimposing** means **drawing something on top of every frame**: frame index, a running timer, a watermark image, a progress bar, the video filename, or custom text. Each overlay is burned into the video; the result is a new file with the overlay visible. **Why use it:** Add frame numbers or timestamps for reference when annotating or debugging; add a logo or watermark for sharing; add a progress bar or label for presentations; or overlay a second video (e.g. picture-in-picture). Each sub-option opens a pop-up with input, output, and format options. **Related:** [Concatenate (stack) videos](#concatenate-stack-videos), [Remove video backgrounds](#remove-video-backgrounds) (overlay/mask). --- #### π’ Superimpose frame numbers * **Tools** β **Superimpose on videos...** β **Superimpose frame numbers** Draws the **frame index** (frame number) on each frame. Useful for annotation, debugging, or when you need to reference exact frame numbers. Single video or folder. Output is saved in the same directory as the input with the suffix `_frame_no` (e.g. `MyVideo_frame_no.mp4`).
--- #### π§ Superimpose watermark * **Tools** β **Superimpose on videos...** β **Superimpose watermark** Overlays a **watermark image** (e.g. logo) on every frame. You choose the image, position, opacity, and scale. Use for branding or attribution when sharing videos. Output is saved in the same directory as the input with a suffix (e.g. `_watermark`).
--- #### β±οΈ Superimpose timer * **Tools** β **Superimpose on videos...** β **Superimpose timer** Draws a **running timer** (elapsed time from the start of the video) on each frame. You set position, font, and time format. Use for time reference in presentations or when annotating. Output is saved in the same directory as the input.
--- #### π Superimpose progress-bar * **Tools** β **Superimpose on videos...** β **Superimpose progress-bar** Draws a **progress bar** on each frame that advances with playback (by frame index). Use to show how far through the video the current frame isβhandy for presentations or previews. Output is saved in the same directory as the input.
--- #### π·οΈ Superimpose video names * **Tools** β **Superimpose on videos...** β **Superimpose video names** Writes the **video filename** as text on each frame. Use when you need to identify the source file in the video itself (e.g. when sharing multiple clips). Output is saved in the same directory as the input.
--- #### π Superimpose free-text * **Tools** β **Superimpose on videos...** β **Superimpose free-text** Draws **custom text** you type on every frame. You set position, font, size, color, and border. Use for labels, titles, or any fixed caption (e.g. condition name, date). Output is saved in the same directory as the input.
--- ### π Remove video backgrounds **Where:** **Tools** β **Remove video backgrounds...** **What it is:** **Background removal** (mean subtraction) estimates the **static background** of the scene (either from the same video or from a reference video) and then **replaces** pixels that match that background with a solid color (e.g. white or black). Moving objects (e.g. the animal) stay; the rest becomes a flat background. **Why use it:** Isolate the animal for clearer visualization or downstream tracking, reduce visual clutter in figures or presentations, or prepare footage for tools that expect a clean background. Single video or batch. **Related:** [Create average frames from videos](#create-average-frames-from-videos) (estimate background), [Box blur videos](#box-blur-videos) (blur region). [Visualizations.md β Blob tracking](Visualizations.md#visualize-blob-tracking-process-videos-menu) uses background subtraction for detection. --- #### π¬ Remove background from single video (mean subtraction) * **Tools** β **Remove video backgrounds...** β **Remove background from single video (mean subtraction)** Process **one video**: compute or supply a background, then replace matching pixels with the chosen background color.
--- #### π Remove background from multiple videos (mean subtraction) * **Tools** β **Remove video backgrounds...** β **Remove background from multiple videos (mean subtraction)** Process **all videos in a folder**. Optionally supply a folder of reference videos (matched by filename) for background.
--- ### β±οΈ Temporal join videos **Where:** **Tools** β **Temporal join videos...** **What it is:** **Temporal join** means **concatenating videos in time order**: the first video plays, then the second, then the third, and so on, in a **single output file**. This is different from "Concatenate (stack) videos," which places multiple videos **side by side** in the same frame. Here you get one long timeline. **Why use it:** Combine segments that were recorded or exported separately (e.g. trial 1, trial 2, trial 3 β one file), reassemble a long recording that was split into chunks, or build a single video from a list of clips in a chosen order. **Related:** [Clip videos](#clip-videos-tools-menu) (split vs join), [Concatenate (stack) videos](#concatenate-stack-videos) (side-by-side panels, not time order), [Merge frames to video](#merge-frames-to-video). --- #### π Temporal join all videos in directory * **Tools** β **Temporal join videos...** β **Temporal join all videos in directory** Joins **all videos in a folder** in **alphabetical filename order** into one file. Name files so they sort correctly (e.g. `01_trial.mp4`, `02_trial.mp4`). | Option | Description | |--------|-------------| | **INPUT DIRECTORY** | Folder containing the videos to join. | | **INPUT VIDEO FORMAT** | File extension of the videos (e.g. mp4, avi). Only files with this extension in the folder are included. | | **OUTPUT FPS** | **KEEP INPUT VIDEO FPS** β use original FPS. **SAME AS THE FIRST INPUT VIDEO IN INPUT DIRECTORY** β use first video's FPS. Or choose a fixed FPS (2β100, even numbers). | | **USE GPU (REDUCED RUN-TIME)** | **TRUE** = use NVIDIA GPU for encoding. **FALSE** = CPU only. | | **Run** | Start concatenation. | **Where output is saved:** Same directory as the input folder. Filename: `concatenated.mp4`. --- #### π¬ Temporal join selected videos * **Tools** β **Temporal join videos...** β **Temporal join selected videos** Joins **only the videos you choose**, in the **order you set** (VIDEO PATH 1, then VIDEO PATH 2, β¦). Use when you need a specific order or subset, not alphabetical. | Option | Description | |--------|-------------| | **NUMBER OF VIDEOS** | How many videos to join (2β100). After setting, **VIDEO PATH 1**, **VIDEO PATH 2**, β¦ appear. | | **VIDEO PATH 1**, **VIDEO PATH 2**, β¦ | Path to each video. **Order = play order**: first path plays first, then second, and so on. | | **OUTPUT VIDEO QUALITY %** | 10β100% (default 60). Higher = better quality, larger file. | | **OUTPUT VIDEO FORMAT** | Container format (e.g. .mp4, .avi, .webm). | | **USE GPU** | **TRUE** = use NVIDIA GPU for encoding. **FALSE** = CPU only. | | **Run** | Start concatenation. | **Where output is saved:** Same directory as the first video in your list. Filename: `temporal_concat_video.{format}` (e.g. `temporal_concat_video.mp4`). All selected videos must have the **same FPS** and **same resolution**. --- ### π«οΈ Box blur videos **Where:** **Tools** β **Box blur videos** **What it is:** A **box blur** replaces each pixel with the average of its neighbors in a region, so the image looks smoothed or blurred. You set **blur level** (strength) and **invert blur region** (whether the center or the rest of the frame is blurred). Single video only in the current dialog. **Why use it:** Anonymize parts of the video (e.g. blur background to highlight the subject, or the opposite), soften noise or compression artifacts, or create a privacy-safe version of a recording. **Related:** [Remove video backgrounds](#remove-video-backgrounds), [Change video brightness / contrast](#change-video-brightness--contrast). | Option | Description | |--------|-------------| | **Video path** | Path to the video to blur. | | **Blur level** | 0.05β0.95 (step 0.05). Strength of the blur; higher = stronger blur. Default: 0.05. | | **Invert blur region** | **TRUE** = blur the outer region (keep center sharp). **FALSE** = blur the center (keep edges sharp). Use to choose which part of the frame is blurred. | | **Run** | Apply blur and save. Output is saved in the same directory as the input. | **Where output is saved:** Same directory as the input video.
--- ### π Cross-fade videos **Where:** **Tools** β **Cross-fade videos** **What it is:** A **cross-fade** is a **transition** between two videos: over a short period (e.g. 2β20 seconds), the first video **fades out** while the second **fades in**, so the change from one clip to the next is smooth rather than an abrupt cut. The output is one video containing both clips with the fade in between.
--- ### π Create average frames from videos **Where:** **Tools** β **Create average frames from videos**
### β Validate video seekability **Where:** **Tools** β **Validate video seekability** **What it is:** A video is **seekable** if you can jump to **any frame** by index (random access) rather than having to decode from the start. Some codecs or recording setups produce videos that are not fully seekable; SimBA (and other tools) may then fail or behave oddly when extracting a frame range or running frame-based analysis. **Why use it:** Before running frame-accurate analysis (e.g. extracting a frame range or running a classifier), check that all videos in a folder are seekable. If a video fails, re-encode it (e.g. with [Convert file formats](#convert-file-formats-tools-menu) or [Change FPS](#change-fps-tools-menu)) so that analysis does not fail partway through. **Related:** [Show video file(s) meta data](#show-video-files-meta-data). Re-encoding can fix many seekability issues. | Option | Description | |--------|-------------| | **Input** / **VIDEO PATH** (single) / **VIDEO DIRECTORY** (multiple) | The video file or folder of videos to test. | | **Run** | Test each video: SimBA tries to seek to one or more frames. Pass = seekable; fail = not seekable or problematic. | | **Output** | Results are printed in the SimBA terminal. Each file is listed as seekable or not. Some builds may write a log file to a chosen path. | **Where output is saved:** No file by default; info appears in the terminal. Some builds may write a log file to a path you choose. --- ### ποΈ Visualize pose-estimation in folder **Where:** **Tools** β **Visualize pose-estimation in folder...** **What it is:** This tool **overlays pose keypoints** (and optional skeleton or bounding boxes) from pose CSV/parquet files onto the corresponding videos and saves new videos. It does **not** require a SimBA project: you point to a folder of pose files and a folder of videos (matched by filename) and a save directory. **Why use it:** Check tracking quality before building a project, create pose-overlay videos for presentations or papers, or visualize DLC/SLEAP/other pose output without importing into a full SimBA workflow. Single file or batch. **For more info:** [Visualizations.md β Visualize pose-estimation in folder](Visualizations.md#visualize-pose-estimation-in-folder-tools-menu). [Scenario 1 β Outlier correction](Scenario1.md#step-4--outlier-correction) suggests using this tool to verify corrections. **Related:** [Create path plot](#create-path-plot), [Egocentrically align pose and video](#egocentrically-align-pose-and-video). | Option | Description | |--------|-------------| | **Pose folder** / **Data directory** | Folder of pose CSV or parquet files. | | **Video folder** (if separate) | Folder of videos (matched by filename to pose files). | | **Save directory** | Where to save the output videos. | | **Key-point sizes** | Circle/point size for keypoints. | | **Video section** (seconds) | Optional start/end time to process only part of each video. | | **CPU count** / **Cores** | Number of cores for multiprocessing. | | **USE GPU** | **TRUE** / **FALSE** β Use GPU for video I/O when available. | | **Bounding box** | **FALSE** = no bounding box. **AXIS-ALIGNED** = axis-aligned bounding box (aligned with video axes). **ANIMAL-ALIGNED** = minimum rotated rectangle that aligns with the animal's orientation. | | **Number of animals** | For multi-animal data. | | **Color palettes** | Colors per animal or body-part. | | **Run** | Start rendering. | β Full description: [Visualizations.md β Visualize pose-estimation in folder](Visualizations.md#visualize-pose-estimation-in-folder-tools-menu). --- ### π§ Egocentrically align pose and video **Where:** **Tools** β **Egocentrically align pose and video** **What it is:** **Egocentric alignment** **rotates and translates** both the video and the pose data so that **one animal** is always **centered** in the frame and **facing a fixed direction** (e.g. right). The arena and the animal's trajectory are transformed so that "forward" for the animal is consistent across time and across videos. **Why use it:** Analyze behavior relative to the animal's own heading (e.g. "approach from the left"), compare trajectories in a common reference frame, or produce videos/figures where the animal is always oriented the same way for easier visual comparison. **For more info:** [Visualizations.md β Egocentrically align pose and video](Visualizations.md#egocentrically-align-pose-and-video-tools-menu). [Scenario 1 β Further imports](Scenario1.md#step-2-optional--further-imports) lists this tool for egocentric analysis. **Related:** [Rotate / flip / reverse videos](#rotate--flip--reverse-videos), [Visualize pose-estimation in folder](#visualize-pose-estimation-in-folder). | Option | Description | |--------|-------------| | **Data directory** | Folder of pose CSV/parquet files. | | **Video directory** | Folder of videos (matched to pose files). | | **Save directory** | Where to save aligned videos and/or pose files. | | **Center anchor body-part** | Body-part used as the center (e.g. nose, center of body). | | **Direction anchor** | Body-part or vector that defines "forward" (e.g. nose to tail). | | **Target angle** (0β360Β°) | Desired heading in the output (e.g. 0 = right). | | **Run** | Start alignment. | β Full description: [Visualizations.md β Egocentrically align pose and video](Visualizations.md#egocentrically-align-pose-and-video-tools-menu).
--- --- ## π Extract project annotation counts **Where:** **Label behavior** tab β **LABELLING TOOLS** (or similar) β **COUNT ANNOTATIONS IN PROJECT** **What it is:** In a SimBA project, behavior labels (annotations) are stored per video. This tool **counts**, for each video and each behavior, **how many frames** (and, using the video FPS, **how many seconds**) the behavior is marked as present (or absent). It writes one **Excel** file (`.xlsx`) with totals and, optionally, counts per video and annotated bout data. **Why use it:** Get a quick summary of how much you have labelled (e.g. for reporting inter-rater reliability or training set size), check that every video has sufficient annotations, or export counts for use in spreadsheets or reports. Requires a project with `project_config.ini` and videos listed in the project's video info. **For more info:** [Scenario 1 β Step 6: Label behavior](Scenario1.md#step-6--label-behavior), [Visualizations.md β Visualize annotations (Label behavior tab)](Visualizations.md#visualize-annotations-label-behavior-tab). | Option | Description | |--------|-------------| | **INCLUDE ANNOTATION COUNTS SPLIT BY VIDEO** | If checked, adds a worksheet with counts per video (in addition to total counts). | | **INCLUDE ANNOTATED BOUTS INFORMATION** | If checked, adds a worksheet with bout start/end times and bout length for each annotated behavior. | | **RUN** | Count annotations and write Excel file. | **Where output is saved:** Excel file in `project_folder/logs/` with a name like `ANNOTATION_STATISTICS_20240110185525.xlsx`. Sheets: **TOTAL ANNOTATION COUNTS**; optionally **VIDEO ANNOTATION COUNTS** (if split by video); optionally **VIDEO ANNOTATION BOUT DATA** (if annotated bouts included). Each video in `project_folder/csv/targets_inserted/` must also appear in `project_folder/logs/video_info.csv` so FPS is known for second counts. --- ## π Related documentation - [Visualizations.md](Visualizations.md) β Create path plot, concatenate two videos, visualize pose in folder, egocentric align, blob and YOLO visualization - [Scenario 1](Scenario1.md) β Project setup, video parameters, outlier correction, feature extraction - [Scenario 2](Scenario2.md) β Running classifier, visualizations in Part 5 - [Tutorial_tools.md](https://github.com/sgoldenlab/simba/blob/master/docs/Tutorial_tools.md) β Original tools tutorial (detailed steps and screenshots) - [tutorial_process_videos.md](https://github.com/sgoldenlab/simba/blob/master/docs/tutorial_process_videos.md) β Batch pre-processing - [blob_track.md](https://github.com/sgoldenlab/simba/blob/master/docs/blob_track.md) β Blob tracking pipeline --- ## π API reference (Read the Docs) Links below point to the SimBA API on Read the Docs. Each tool maps to one or more modules or functions. | Tool / operation | API / module | Read the Docs | |------------------|--------------|---------------| | Change FPS (single / multiple / up-sample) | `change_single_video_fps`, `change_fps_of_multiple_videos`, `upsample_fps` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Clip videos (by time or frame numbers) | `clip_video_in_range`, `multi_split_video`, `remove_beginning_of_video`, `remove_end_of_video`, `clip_videos_by_frame_ids` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Crop videos (rectangle / circle / polygon) | `crop_single_video`, `crop_single_video_circle`, `crop_single_video_polygon`, `crop_multiple_videos`, `crop_multiple_videos_polygons` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Multi-crop videos | `MultiCropper` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Convert image / video file formats | `change_img_format`, `convert_to_mp4`, `convert_to_avi`, `convert_to_webm`, `convert_to_mov`, etc. | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Remove color (grayscale / black and white / CLAHE) | `video_to_greyscale`, `batch_video_to_greyscale`, `video_to_bw`, `clahe_enhance_video`, `interactive_clahe_ui` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Concatenate two videos | `video_concatenator` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Concatenate multiple videos (mosaic) | `FrameMergererFFmpeg`, concatenator pop-ups | [simba.plotting](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.plotting.html), [simba.ui](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.ui.html) | | Convert ROI definitions (H5 β CSV) | `convert_roi_definitions` | [simba.utils](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.utils.html) | | Convert tracking data formats | Pose importers / export utilities | [simba.pose_importers](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.pose_importers.html) | | Convert working file type (CSV β parquet) | Read/write utilities | [simba.utils](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.utils.html) | | Create path plot | `PathPlotterSingleCore`, `PathPlotterMulticore`, `EzPathPlot` | [simba.plotting](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.plotting.html) | | Drop body-parts from tracking data | Pose processors | [simba.pose_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.pose_processors.html) | | Down-sample video | `downsample_video`, `resize_videos_by_height`, `resize_videos_by_width` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Extract frames | `extract_frame_range`, `extract_frames_single_video`, `batch_create_frames`, `extract_seq_frames` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Create GIFs | `gif_creator` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Get metric conversion factor (px/mm) | `GetPixelsPerMillimeterInterface` | [simba.ui](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.ui.html) | | Merge frames to video | `frames_to_movie` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Change video brightness / contrast | `BrightnessContrastUI` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Change video playback speed | Video processing utilities | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Print classifier info | Model mixins / inference | [simba.model_mixin](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.model_mixin.html) | | Show video meta data | `get_video_meta_data` | [simba.utils](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.utils.html) | | Reorganize Tracking Data | `reorganize_keypoint` and related | [simba.pose_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.pose_processors.html) | | Rotate / flip / reverse videos | `VideoRotator`, `rotate_video`, `flip_videos`, `reverse_videos` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Superimpose on videos | `superimpose_frame_count`, `watermark_video`, `superimpose_elapsed_time`, `superimpose_video_progressbar`, `superimpose_overlay_video`, `superimpose_video_names`, `superimpose_freetext` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Remove video backgrounds | `video_bg_subtraction`, `video_bg_subtraction_mp` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Temporal join videos | `temporal_concatenation`, `concatenate_videos_in_folder` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html), [simba.utils](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.utils.html) | | Box blur videos | `roi_blurbox` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Cross-fade videos | `crossfade_two_videos` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Create average frames from videos | `create_average_frm` | [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Validate video seekability | Check-video pop-up, video I/O | [simba.ui](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.ui.html), [simba.utils](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.utils.html) | | Visualize pose-estimation in folder | `PosePlotter`, `PosePlotterMultiProcess` | [simba.plotting](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.plotting.html) | | Egocentrically align pose and video | `EgocentricalAligner`, egocentric video rotator | [simba.data_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.data_processors.html), [simba.video_processors](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.video_processors.html) | | Extract project annotation counts | Labelling / config readers | [simba.labelling](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.labelling.html), [simba.config_reader](https://simba-uw-tf-dev.readthedocs.io/en/latest/simba.config_reader.html) | **Full API index:** [SimBA API Reference](https://simba-uw-tf-dev.readthedocs.io/en/latest/api.html) --- > **Bugs and feature requests:** Please help improve SimBA by reporting bugs or suggesting featuresβeither [open an issue on GitHub](https://github.com/sgoldenlab/simba/issues) or reach out on [Gitter](https://gitter.im/SimBA-Resource/community). *Author: [Simon N](https://github.com/sronilsson). Based on Tutorial_tools.md and SimBA GUI.*