This document provides detailed descriptions of all data files and their fields in the KABR Behavior Telemetry dataset.
data/occurrences/Frame-by-frame occurrence records for each video, combining detection tracks, behavior annotations, and telemetry data.
Files: One CSV per video, named {date}-{video_id}.csv (e.g., 11_01_23-DJI_0977.csv)
Key Fields:
date: Recording date in DD_MM_YY formatvideo_id: DJI video identifier (e.g., DJI_0977)frame: Frame number in the video sequence (0-indexed)date_time: Timestamp in format “YYYY-MM-DD HH:MM:SS,milliseconds,microseconds”id: Mini-scene identifier (track ID for behavioral sequences)latitude: GPS latitude in decimal degrees (WGS84)longitude: GPS longitude in decimal degrees (WGS84)altitude: Altitude in meters above sea leveliso: Camera ISO settingshutter: Shutter speed valuefnum: Aperture f-numberev: Exposure valuect: Color temperaturecolor_md: Color mode descriptorfocal_len: Lens focal length in millimetersdzoom_ratio: Digital zoom ratioxtl, ytl, xbr, ybr: Bounding box coordinates (top-left and bottom-right)z_order_x, z_order_y: Display depth ordering for overlapping annotationslabel: Object class label (e.g., “zebra”, “giraffe”)source: Annotation sourcekeyframe_x, keyframe_y: Whether frame is a tracking keyframeoutside_x, outside_y: Whether object is outside frame boundsoccluded_x, occluded_y: Whether object is occludedpoints: Polygon points for behavioral sequencesbehaviour: Behavioral classification (e.g., “walking”, “grazing”, “running”)Record Count: Varies by video; typically 10,000-66,000 frames per video Coverage: 47 videos with complete data Missing Values: Frames without detections/annotations have null values for annotation fields
data/video_events.csvDarwin Core Event records for individual video recordings.
Record Count: 68 videos (47 with occurrence data)
Fields:
Identifiers:
eventID: Unique event identifier (format: “KABR-2023:{session}:{video_id}”)parentEventID: Links to session_events (format: “KABR-2023:{session}”)Event Classification:
eventType: Type of sampling event (“video recording”)eventDate: Recording date (ISO 8601: YYYY-MM-DD)eventTime: Video start time (HH:MM:SS)endTime: Video end time (HH:MM:SS)Geographic Information:
decimalLatitude: Launch point latitude in decimal degrees (WGS84)decimalLongitude: Launch point longitude in decimal degrees (WGS84)geodeticDatum: Coordinate reference system (“WGS84”)minimumElevationInMeters: Minimum altitude during videomaximumElevationInMeters: Maximum altitude during videofootprintWKT: Geographic bounding box in Well-Known Text formatSampling Protocol:
samplingProtocol: “Continuous aerial video recording”Associated Resources:
associatedMedia: JSON object with paths to detection and behavior annotation files
{
"detection": "path/to/DJI_XXXX_tracks.xml",
"behavior": ["path/to/trackID.xml", ...]
}
Remarks:
eventRemarks: Description of video file (e.g., “Video file DJI_0977.MP4”)data/session_events.csvDarwin Core Event records for field sessions (missions/flights).
Record Count: 17 sessions (14 with occurrence data)
Fields:
Identifiers and Classification:
eventID: Unique session identifier (format: “KABR-2023:{date}_{session}”)parentEventID: Dataset identifier (“KABR-2023”)eventType: Type of event (“drone survey”)Temporal Coverage:
eventDate: Session date (ISO 8601: YYYY-MM-DD)eventTime: Session start time (HH:MM:SS)endTime: Session end time (HH:MM:SS)year, month, day: Parsed date componentsGeographic Coverage:
launchLatitude: Drone launch point latitude (from first video)launchLongitude: Drone launch point longitude (from first video)decimalLatitude: Latitude range across session “[min, max]”decimalLongitude: Longitude range across session “[min, max]”geodeticDatum: “WGS84”coordinateUncertaintyInMeters: GPS precisionminimumElevationInMeters: Minimum altitude across all videosmaximumElevationInMeters: Maximum altitude across all videosfootprintWKT: Session bounding box in WKT formatlocationID: “MPALA-KENYA”locality: “Mpala Research Centre”country: “Kenya”countryCode: “KE”Habitat and Environment:
habitat: Habitat type description (e.g., “Open grassy habitat with some scattered bushes”)Sampling Details:
samplingProtocol: Detailed protocol descriptionsampleSizeValue: Empty (intended for area surveyed)sampleSizeUnit: “minutes”samplingEffort: Number and description of video segmentsTaxonomic Information:
organismQuantity: Number of individual animals observedorganismQuantityType: “herd size”Observations:
eventRemarks: Field notes and observations_species_common: Common name(s) of observed species_species_commonNames: Additional common names_n_individuals: Number of individuals_n_videos: Number of videos in sessionAssociated Data:
associatedMedia: JSON object listing videos, focal follows, and scan samples
{
"video": ["DJI_0977", "DJI_0978", ...],
"focal": [],
"scan": []
}
associatedReferences: Airdata telemetry file names_telemetry_file_raw: Raw telemetry file status notesEcological Extensions (Humboldt Eco):
eco:inventoryTypes: “restrictedSearch”eco:protocolNames: “KABR Drone Video Survey Protocol”eco:protocolDescriptions: Protocol descriptioneco:protocolReferences: “https://doi.org/10.48550/arXiv.2510.02030”eco:isAbundanceReported: Trueeco:isAbundanceCapReported: Falseeco:abundanceUnit: “individuals”eco:isVegetationCoverReported: True/Falseeco:vegetationCoverUnit: “Bitterlich score (0-10 scale)” (when applicable)eco:isTaxonCompletenessReported: Trueeco:taxonCompletenessProtocols: “All visible target taxa annotated in video frames with bounding boxes”eco:isAbsenceReported: Falseeco:hasNonTargetTaxa: Emptyeco:nonTargetTaxa: Emptyeco:targetTaxonomicScope: Scientific names of target specieseco:excludedTaxonomicScope: Emptyeco:samplingPerformedBy: Emptyeco:siteCount: 1eco:siteNestingDescription: “Single focal group follow per session”eco:verbatimSiteDescriptions: EmptyQuality Flags:
_needs_verification: Data quality flagscripts/merge_behavior_telemetry.pyMerges SRT metadata, detection tracks, and behavior annotations into occurrence files.
Usage:
python scripts/merge_behavior_telemetry.py \
--data_path /path/to/video/directories \
--outpath /path/to/output/ \
[--skip-airdata]
Arguments:
--data_path: Directory containing video folders (format: DATE-VIDEO_ID)--session_data_path: Path to SRT files (default: preset path)--flight_logs_path: Path to decrypted flight logs (default: preset path)--skip-airdata: Skip merging with flight log data--write: Whether to write output (default: True)--outpath: Output directory for CSV filesInput Requirements:
metadata/{video_id}_tracks.xml: Detection bounding boxesactions/*.xml: Behavior annotation filesOutput:
scripts/update_video_events.pyUpdates video_events.csv with associatedMedia paths to detection and behavior files.
Usage:
python scripts/update_video_events.py \
--video_events data/video_events.csv \
--data_path /path/to/video/directories \
[--output output_path.csv]
What it does:
scripts/add_event_times.pyExtracts start and end times from occurrence files and adds to video_events.csv.
Usage:
python scripts/add_event_times.py \
--video_events data/video_events.csv \
--occurrences data/occurrences/ \
[--output output_path.csv]
What it does:
scripts/add_gps_data.pyExtracts GPS statistics from occurrence files and adds to event files.
Usage:
python scripts/add_gps_data.py \
--video_events data/video_events.csv \
--session_events data/session_events.csv \
--occurrences data/occurrences/ \
[--output_video output_video.csv] \
[--output_session output_session.csv]
What it does:
For video_events.csv:
For session_events.csv:
KABR-2023 (Dataset)
├── KABR-2023:11_01_23_session_1 (Session)
│ ├── KABR-2023:11_01_23_session_1:DJI_0488 (Video Event)
│ │ └── occurrences/11_01_23-DJI_0488.csv (Frame records)
│ └── ...
├── KABR-2023:11_01_23_session_2 (Session)
│ ├── KABR-2023:11_01_23_session_2:DJI_0977 (Video Event)
│ │ └── occurrences/11_01_23-DJI_0977.csv (Frame records)
│ └── ...
...
merge_behavior_telemetry.py): Combine all data sourcesupdate_video_events.py)add_event_times.py)add_gps_data.py)This dataset follows Darwin Core standards (TDWG) with extensions for ecological inventory data (Humboldt Eco).
Core Classes:
Key Standards:
,)NaN""["item1", "item2"]POLYGON((lon1 lat1, lon2 lat2, ...))_needs_verification: Manual review recommended_telemetry_file_raw: Notes on telemetry file statusFor questions about this data: