Source code for nicetoolbox.connectors.elan.elan_data

"""Data models for ELAN to Toolbox conversion."""

from dataclasses import dataclass


[docs]@dataclass class ElanHeader: ms_per_sample: float offset: int duration_ms: int media_files: list[str] data_start_line: int def __str__(self) -> str: return ( f"ElanHeader: ms_per_sample={self.ms_per_sample:.4f}, " f"duration={self.duration_ms:.3f}ms, " f"offset={self.offset}, media files: {self.media_files}" )
[docs]@dataclass class Interval: start_sec: float end_sec: float annotation: str
[docs]@dataclass class Tier: tier_name: str intervals: list[Interval]
[docs]@dataclass class ElanData: header: ElanHeader | None tiers: list[Tier] @property def tier_names(self) -> set[str]: return {tier.tier_name for tier in self.tiers} @property def labels(self) -> set[str]: return {interval.annotation for tier in self.tiers for interval in tier.intervals} def __str__(self) -> str: tier_count = len(self.tiers) interval_count = sum(len(tier.intervals) for tier in self.tiers) return f"ElanData: {tier_count} tiers, {interval_count} intervals"