Repository navigation
Export Formats
| Format | Layout | Best for |
|---|---|---|
| Wide CSV | one row per frame: frame, P1_x, P1_y, P1_visible, P2_x, … (blank cells = untracked) |
Excel, quick plotting |
| Sparse TSV | one row per tracked (frame, point): frame point x y visible
|
smallest files, pandas/R |
| DeepLabCut CSV | 3 header rows (scorer, bodyparts, coords), x, y, likelihood per landmark, one row per frame |
DeepLabCut, Anipose, pose notebooks |
| DeepLabCut multi-animal CSV | 4 header rows (scorer, individuals, bodyparts, coords): one individual per animal in LAYERS (body parts = the part names), and the Scene points as DeepLabCut's unique body parts under single. Needs at least one animal with points |
DeepLabCut multi-animal projects |
| SLEAP analysis CSV |
track, frame_idx, instance.score, <part>.x, <part>.y, <part>.score: one track per animal, plus a scene track for the Scene points. Needs at least one animal with points |
SLEAP, sleap-io scripts |
| DLTdv8 xypts CSV |
pt1_cam1_X, pt1_cam1_Y, …, one row per frame, NaN where untracked, top-left origin, first pixel = 1 (DLTdv8's own convention) + a *_pointnames.csv sidecar naming the points (the real names, CSV-quoted) and stating the convention — those two files and nothing else. A separate bottom-left origin entry writes the older DLTdv5 / Argus Clicker variant |
DLTdv / easyWand 3D workflows |
| ALL CAMERAS — DLTdv8 xypts (two or more cameras) | every camera in one file, pt1_cam1_X, pt1_cam1_Y, pt1_cam2_X, …, landmarks matched by name; row k = frame k of the reference camera (from 0), each camera sampled through its offset, NaN where a camera has no data; top-left, first pixel = 1; the sidecar also names the rows and each camera's video |
DLTdv / easyWand / Argus / your own triangulation |
| MATLAB .mat |
tracks (T×N×2) with NaN where untracked or marked hidden, visibility, manual, occluded, confidence, point_names, point_kind, point_source, point_spec, event_*, note_*, fps, segment_* (presence, score, bbox, centroid, area, 32-point midline), skeleton_*, and pixel_convention — these pixels count from 0 (OpenCV); add 1 for MATLAB / DLTdv8 |
direct MATLAB analysis |
| 3D landmarks CSV |
frame, name_X, name_Y, name_Z, … per reference frame (NaN where < 2 cameras) + a *_xyzres.csv sidecar with each position's residual (px), camera count, and how far each camera disagrees (name_camK_px) |
3D positions; the same layout as DLTdv's xyzpts |
| 3D kinematics CSV | a first line starting with # (unit, fps, the smoothing used — read it with comment='#'), then frame, time_s and per landmark the smoothed X Y Z, Vx Vy Vz speed, Ax Ay Az acc (project units per second), with the smoothing cutoff (chosen by residual analysis, or yours); stretches shorter than 12 frames keep their positions with blank velocity and acceleration; plus a plain-English *_report.txt with hand checks |
velocities and accelerations |
| Mesh (File → Export → Mesh of This Frame…) | the carved volume hull of one frame as OBJ or PLY, in the calibration's world units | Blender, MeshLab, MATLAB stlread/readSurfaceMesh
|
| Everything | every format of the export dialog with one base name — the DLTdv8 convention once (no bottom-left copy), ALL CAMERAS only with two or more cameras, the 3D files only once there is a reconstruction (the mesh is exported from File → Export → Mesh of This Frame); the events / segment files once, beside the wide CSV. Runs in the background with a count and a Cancel; a format that cannot be written (a .mat open in MATLAB) does not stop the others, and the failures are listed at the end |
— |
Kept up to date at every save: File → Export → Keep Exports Up to Date… ticks
formats (DLTdv8 per camera or every camera for 3D, DeepLabCut, MATLAB, wide
CSV, the 3D xyzpts) that are then written into the project folder's
exports/ after every save — only the files whose data changed, in the
background — so the latest tracks are always ready for the other program.
Silhouettes (Ctrl+E → Silhouette outlines, JSON polygons, or Silhouette masks, one PNG per frame) are written one file (or folder) per animal when there are several, named after the animal.
Safe to open in a spreadsheet: no landmark, event or animal name may
start with =, +, - or @ — Excel and other spreadsheets would run such a
cell as a formula. A name typed like that is refused; one that arrives in a
file (a project or tracks from someone else, a skeleton template) loses those
characters. Long exports (Everything) run in the background, counting the
files, and can be stopped between files.
When an animal has a silhouette, the wide CSV, DeepLabCut CSV and sparse TSV
exports also write a *_segment.csv sidecar (frame, present, score, bbox, centroid, area, mid0_x … mid31_y: the 32-point body midline for curvature /
undulation analysis). The DLTdv exports (one camera, bottom-left, ALL CAMERAS,
xyzpts) write only their points file and its _pointnames.csv: the events
and segment files go with the other exports, not beside xypts files.
In a multi-camera project the suggested file names carry the camera's name
(myproject_cam2_tracks.csv, …_overlay.mp4), so one camera's files never
overwrite another's. 3D points are always exported in the same world as the
cameras of File → Export → Calibration… (and 3D → Set World Axes… lets you
choose that world). File → Export → Overlay Video… writes an MP4 that plays at
the video file's own frame rate, or at the Speed you choose against real time
(2x, 4x, 5x, 10x, 20x slower or any factor; a high-speed clip can also be sped up
to real time, skipping frames evenly). The video says how much it is slowed down
("4x slower" under the frame number); the time shown stays in real seconds. In a
project with several cameras, Views → All shown cameras together writes ONE
video of the cameras shown in the window, laid out as the window shows them (the
same grid and order, every cell the shape the views have on screen), each camera
under a title bar with its name, frame and sync offset, at the frame its sync
offset and rate match to the working camera's (a camera not recording at that
instant shows a dark tile saying so); the picture fits 4K.
Coordinates are pixels in the native video resolution, x right, y down, with
the centre of the top-left pixel at (0, 0) (OpenCV's convention — your clicks
are stored that way too); only the DLTdv exports add 1. A cell marked hidden
(Shift+X) exports blank, like an untracked one.
visible = 0 means the model believes the point is occluded on that frame
(its position is still predicted). Silhouette-derived landmarks have data
wherever the animal's silhouette exists; their confidence is the segmentation
model's presence score mapped to 0–1. A point that leaves the frame produces
no coordinates at all (blank cells / no rows) until it is re-placed. A region
group exports exactly like a point (its fitted center). confidence (in the
.mat) is the model's per-frame track-correctness score — the same signal the
timeline colors red. If you marked events, the same three exports also write a
*_events.csv sidecar (name,start_frame,end_frame,note,author, then one
note row per frame note); the .mat embeds them directly.
Bringing tracks in from another program: File → Import → Tracks…
reads a DeepLabCut CSV (the one it writes when it analyses a video), a SLEAP
CSV (SLEAP 1.x's analysis CSV, or any of sleap-io's layouts), a DLTdv / Argus
xypts CSV (one camera or all of them) or another Kinetrace project's
tracks (one landmark's tracks/<landmark>.csv, or an older project's
tracks.csv) into the camera on screen. The format is recognised from the file
itself; if no video is open, the program asks for it first. Points are matched
by name (a new name becomes a new point), frames the file has no position for
keep what they had, pixel conventions are converted (DLTdv counts from 1; the
_pointnames.csv sidecar says when y counts from the bottom), DeepLabCut's
likelihood and SLEAP's scores become the confidence, and SLEAP instances you
labelled by hand arrive as hand-placed. The message afterwards says how many
positions were written (only what went in is counted), names any landmark it left
as it was because that landmark is taken from the silhouette or is a ball
marker, and says how many were left out (outside the picture, or on frames the
video does not have). One animal per video: multi-animal files are refused
with the reason. Ctrl+Z undoes an import into one camera.
Continuing a point that left the frame: when it comes back into view, select it in the right panel, press N, and click its new location (this continues the same point — no new point is created, because the selected point has no position on that frame), then press Track. Press Esc to deselect first if you wanted a brand-new point instead.
- Install & run
- Workflow: track an animal
- Small, fast targets: which point model
- Segments, silhouettes & skeletons
- Several cameras & 3D
- Human bodies
- Export formats
- Working with other programs
- Projects & autosave
- Keyboard & mouse
- Accuracy
- Performance (4K)
- Limitations
- Testing
- Folder map & design
Also
- User manual — for beginners, also in the app (F1)
- Licences of everything used