diff options
Diffstat (limited to 'scripts/genotypes/types.py')
| -rw-r--r-- | scripts/genotypes/types.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/scripts/genotypes/types.py b/scripts/genotypes/types.py new file mode 100644 index 0000000..0ac335a --- /dev/null +++ b/scripts/genotypes/types.py @@ -0,0 +1,58 @@ +"""The datatypes this package will use.""" +from dataclasses import dataclass +from typing import Sequence, Optional + + +@dataclass +class DotGenoFields: + """Custom .geno file format values""" + name: str, + mat: str, + pat: str, + het: str, + type_: Optional[str] = None + unk: Optional[str] = None + + +@dataclass(frozen=True) +class FieldsIdentity: + """Data type for identity of the fields.""" + marker: str + chromosome: str + genetic_distance: str # cM + physical_distance: str # Mb + samples: Sequence[str] + + +@dataclass(frozen=True) +class LineDetails: + """Data type for processed line details""" + line_content: Sequence[Union[str, None]] + geno_symbols: Sequence[str] + line_header: Optional[str] = None + + +@dataclass(frozen=True) +class LineError: + """An error object for a line.""" + marker: str + field: str + value: Union[str, None] + message: str + + +@dataclass(frozen=True) +class FileStats: + """Custom file statistics.""" + data_lines: int + total_lines: int + geno_symbols: Sequence[str] + + blank_lines: int = 0 + comment_lines: int = 0 + dot_geno_lines: int = 0 + dot_geno_fields: Optional[DotGenoFields] = None + samples: Sequence[str] = field(default_factory=tuple) + samples_list: Sequence[str] = field(default_factory=tuple) + markers_list: Sequence[str] = field(default_factory=tuple) + errors: Sequence[LineError] = field(default_factory=tuple) |
