Data Requirements
Data requirements for cross-sucking video names, annotation folder names, data index columns, and video/annotaion folder file tpyes.
Video and Annotation Folder File Types
Videos must be .mp4 extensions. Annotation folders (CVAT Outputs) must be .zip folders.
Filename Requirements
Human annotation environments often introduce variations in file naming styles. The matching module resolves these irregularities by stripping file extensions and isolating a standardized (Numeric_ID, Part_Number) tuple configuration. Naming conventions are not currently forced, however incorrectly formatted filenames will throw errors and break workflows. To avoid a situation in which unconsidered naming conventions silently pass intial checks and break downstream workflows, we suggest standardizing filenames using the following format:
-
Target Format: cross-sucking clip names
CS_{clip_number}_{Weaning_period}_d{day_number}_p{pen_number}_cow{cow_identifier}_{ddmmyyyy}_{source_video_base_name}_{clip_start_time_s}_{clip_end_time_s}_{part or none}.mp4. Wherepart or noneis one ofpart01,part02, or blank. If blank, the file name should read as..._{clip_end_time_s}.mp4 -
Target Format: annotation folders
{clip_number}_{part or none}.zip. Wherepart or noneis one ofpart01,part02, or blank. If blank, the file name should read as{clip_number}.zip
For examples, see rows one to three of Accepted Formats Reference: Annotation Folders (CVAT Exports), and rows one to three of Accepted Formats Reference: Cross-Sucking Clips below.
Filename Ingestion Reference
This project currently accepts cross-sucking clip names and annotaion folder names in the following formats. Attempting to pass other filename types may throw an error and terminate the workflows. To avoid silently passing incorrectly parsed files, follow the naming conventions above.
Accepted Formats Reference: Annotation Folders (CVAT Exports)
| Example String | Extracted ID | Extracted Part | Matching Case / Pattern Type |
|---|---|---|---|
1234.zip |
1234 |
None | Standard clean ID format. |
2345_part02.zip |
2345 |
2 |
Zero-padded explicit part suffix (_part0X). |
2345_part01.zip |
2345 |
1 |
Zero-padded explicit part suffix (_part0X). |
3456_part1.zip |
3456 |
1 |
Single-digit explicit part suffix (_partX). |
3456_part2.zip |
3456 |
2 |
Single-digit explicit part suffix (_partX). |
4567_p01.zip |
4567 |
1 |
Zero-padded shorthand part suffix (_p0X). |
4567_p02.zip |
4567 |
2 |
Zero-padded shorthand part suffix (_p0X). |
CS_0317_WEAN_d2_p2_cow6_17102025_ch02-20251017082112_3507_3577.mp4.zip |
317 |
None | Double extension fallback (.mp4.zip) using structured base string. |
CS_0319_WEAN_d2_p2_cow6_17102025_ch02-20251017082112_3507_3577_part01.mp4.zip |
319 |
1 |
Double extension fallback with part notation embedded. |
CS_0319_WEAN_d2_p2_cow6_17102025_ch02-20251017082112_3507_3577_part02.mp4.zip |
319 |
2 |
Double extension fallback with part notation embedded. |
5678_p1.zip |
5678 |
1 |
Single-digit shorthand part suffix (_pX). |
5678_p2.zip |
5678 |
2 |
Single-digit shorthand part suffix (_pX). |
7891-p1.zip |
7891 |
1 |
Hyphenated shorthand part suffix (-pX). |
7891-p2.zip |
7891 |
2 |
Hyphenated shorthand part suffix (-pX). |
180.zip |
180 |
None | Clean fallback for shorter 3-digit numeric IDs. |
6789_part02zip.zip |
6789 |
2 |
Typo handling: captures trailing characters inside explicit name (_part0Xzip). |
9021 - p1.zip |
9021 |
1 |
Spaced hyphen shorthand variation (- pX). |
9021 - p2.zip |
9021 |
2 |
Spaced hyphen shorthand variation (- pX). |
Accepted Formats Reference: Cross-Sucking Clips
| Example String | Extracted ID | Extracted Part | Matching Case / Pattern Type |
|---|---|---|---|
CS_0101_WEAN_d2_p2_cow6_17102025_ch02-20251017082112_3507_3577.mp4 |
101 |
None | Standard structured baseline clip record. |
CS_0131_WEAN_d2_p2_cow6_17102025_ch02-20251017082112_3507_3577_part01.mp4 |
131 |
1 |
Standard structured part 1 slice record. |
CS_0131_WEAN_d2_p2_cow6_17102025_ch02-20251017082112_3507_3577_part02.mp4 |
131 |
2 |
Standard structured part 2 slice record. |
Data Schema Reference
The pipeline enforces strict data types and structural configurations using pandera schemas. Both schemas are configured with strict=True (rejects unexpected columns) and coerce=False (rejects incorrect data types).
| Column Name | Data Type | Nullable | Schema Version | Description / Validation Rules |
|---|---|---|---|---|
clip_name |
str |
No | Both | Name of the unlabelled clip file. |
clip_relative_path |
str |
No | Both | Relative file path to the unlabelled video snippet. |
clip_output_path |
str |
No | Both | Target output path for the video clip. |
source_video_path |
str |
No | Both | Full path to the original long-form source video. |
source_video_basename |
str |
No | Both | File name (excluding directory path) of the source video. |
labelled_clip_relative_path |
str |
No | Processed Only | Relative path to the matching CVAT .zip annotation archive. |
export_status |
str |
No | Both | Status tracking string for the clip's export state. |
part_index |
int |
No | Both | Component index for split clips. Must be \ge 0. |
part_count |
int |
No | Both | Total number of parts split from the interval. Must be \ge 1. |
observation_id |
str |
No | Both | Unique structural identifier for the behavioral observation. |
group_name |
str |
No | Both | Experimental or cohort group identifier. |
phase |
str |
No | Both | Trial phase description (e.g., POSTWEAN, WEAN). |
day |
int |
No | Both | Timeline day number identifier. Must be \ge 0. |
pen |
int |
No | Both | Experimental pen location number. Must be \ge 0. |
obs_date_raw |
int |
No | Both | Raw unparsed date identifier integer (e.g., 02112025). |
subject |
str |
Yes | Both | Identified animal subject ID (allows up to 3 nulls from source). |
modifiers |
str |
No | Both | Conditional behavior modification text tags. |
interval_start_obs_sec |
float |
No | Both | Start time of continuous event in observation. Must be \ge 0. |
interval_end_obs_sec |
float |
No | Both | End time of continuous event in observation. Must be > \text{start}. |
part_start_obs_sec |
float |
No | Both | Segmented chunk start time within observation. Must be \ge 0. |
part_end_obs_sec |
float |
No | Both | Segmented chunk end time within observation. Must be > \text{start}. |
source_segment_obs_start_sec |
float |
No | Both | Source context segment match start marker. Must be \ge 0. |
source_segment_obs_end_sec |
float |
No | Both | Source context segment match end marker. Must be > \text{start}. |
clip_start_in_source_sec |
float |
No | Both | Precise crop baseline entry time in source video. Must be \ge 0. |
clip_end_in_source_sec |
float |
No | Both | Precise crop baseline exit time in source video. Must be > \text{start}. |