"""Data models for ELAN to Toolbox conversion."""
from dataclasses import dataclass
[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"