From 351c43ad306a5d28e64b3aaf10064d38c794bd52 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Fri, 25 Sep 2026 10:37:20 -0500 Subject: Initialise scripts for genotype uploads files' processing. --- scripts/genotypes/types.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 scripts/genotypes/types.py (limited to 'scripts/genotypes/types.py') 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) -- cgit v1.2.3