| 45 | |
| 46 | @dataclass(frozen=True) |
| 47 | class SyntheticProjectParameters: |
| 48 | multianimal: bool |
| 49 | num_bodyparts: int |
| 50 | num_frames: int = 10 |
| 51 | num_individuals: int = 1 |
| 52 | num_unique: int = 0 |
| 53 | identity: bool = False |
| 54 | frame_shape: tuple[int, int] = (480, 640) |
| 55 | |
| 56 | def bodyparts(self) -> list[str]: |
| 57 | return [i for i in string.ascii_lowercase[: self.num_bodyparts]] |
| 58 | |
| 59 | def unique(self) -> list[str]: |
| 60 | return [f"unique_{i}" for i in string.ascii_lowercase[: self.num_unique]] |
| 61 | |
| 62 | def individuals(self) -> list[str]: |
| 63 | return [f"animal_{i}" for i in range(self.num_individuals)] |
| 64 | |
| 65 | |
| 66 | def sample_pose_random( |
no outgoing calls