64 lines
1.3 KiB
Python
64 lines
1.3 KiB
Python
"""
|
|
Data models for the microscopy object detection application.
|
|
These dataclasses represent the database entities.
|
|
"""
|
|
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
from typing import Optional, Dict, Tuple
|
|
|
|
|
|
@dataclass
|
|
class Model:
|
|
"""Represents a trained model."""
|
|
|
|
id: Optional[int]
|
|
model_name: str
|
|
model_version: str
|
|
model_path: str
|
|
base_model: str
|
|
created_at: datetime
|
|
training_params: Optional[Dict]
|
|
metrics: Optional[Dict]
|
|
|
|
|
|
@dataclass
|
|
class Image:
|
|
"""Represents an image in the database."""
|
|
|
|
id: Optional[int]
|
|
relative_path: str
|
|
filename: str
|
|
width: int
|
|
height: int
|
|
captured_at: Optional[datetime]
|
|
added_at: datetime
|
|
checksum: Optional[str]
|
|
|
|
|
|
@dataclass
|
|
class Detection:
|
|
"""Represents a detection result."""
|
|
|
|
id: Optional[int]
|
|
image_id: int
|
|
model_id: int
|
|
class_name: str
|
|
bbox: Tuple[float, float, float, float] # (x_min, y_min, x_max, y_max)
|
|
confidence: float
|
|
detected_at: datetime
|
|
metadata: Optional[Dict]
|
|
|
|
|
|
@dataclass
|
|
class Annotation:
|
|
"""Represents a manual annotation."""
|
|
|
|
id: Optional[int]
|
|
image_id: int
|
|
class_name: str
|
|
bbox: Tuple[float, float, float, float] # (x_min, y_min, x_max, y_max)
|
|
annotator: str
|
|
created_at: datetime
|
|
verified: bool
|