Ashkan Taghipour (The University of Western Australia)
Initial deploy: Pigeon Pea Pangenome Atlas
16e4ad5
"""Application state for the Pigeon Pea Pangenome Atlas."""
from dataclasses import dataclass, field
@dataclass
class AppState:
selected_line: str | None = None
selected_party: list[str] = field(default_factory=list)
selected_gene: str | None = None
backpack_genes: list[str] = field(default_factory=list)
core_threshold: float = 95.0
cloud_threshold: float = 15.0
selected_contig: str | None = None
achievements: set[str] = field(default_factory=set)
def add_to_backpack(self, gene_id: str) -> bool:
"""Add gene to backpack. Returns True if added, False if already present or full."""
if gene_id in self.backpack_genes:
return False
if len(self.backpack_genes) >= 50:
return False
self.backpack_genes.append(gene_id)
if len(self.backpack_genes) >= 5:
self.achievements.add("Collector")
return True
def remove_from_backpack(self, gene_id: str) -> bool:
"""Remove gene from backpack."""
if gene_id in self.backpack_genes:
self.backpack_genes.remove(gene_id)
return True
return False
def award(self, badge: str):
"""Award an achievement badge."""
self.achievements.add(badge)