import json import pathlib TASK_CATEGORIES: dict[str, list[str]] = { "histone_marks": [ "h2afz", "h3k27ac", "h3k27me3", "h3k36me3", "h3k4me1", "h3k4me2", "h3k4me3", "h3k9ac", "h3k9me3", "h4k20me1", ], "promoter": ["promoter_all", "promoter_tata", "promoter_no_tata"], "enhancer": ["enhancers", "enhancers_types"], "splice_site": ["splice_sites_all", "splice_sites_donors", "splice_sites_acceptors"], "variant_effect": [ "variant_effect_pathogenic_clinvar", "variant_effect_pathogenic_omim", "variant_effect_causal_eqtl", ], "rna_expression": ["bulk_rna_expression"], } # Inverse map: task_name -> category label TASK_TO_CATEGORY: dict[str, str] = { task: cat for cat, tasks in TASK_CATEGORIES.items() for task in tasks } # Mean sequence lengths in bp per task, populated by tools/compute_seq_lengths.py _SEQ_LEN_PATH = pathlib.Path(__file__).parent.parent / "tools" / "task_seq_lengths.json" TASK_SEQ_LENGTHS: dict[str, int] = ( json.loads(_SEQ_LEN_PATH.read_text()) if _SEQ_LEN_PATH.exists() else {} ) CLASSIFICATION_METRICS: dict[str, str] = { "mcc_test": "MCC", "accuracy_test": "Accuracy", "weighted_f1_test": "Weighted F1", "macro_f1_test": "Macro F1", "auprc_test": "AUPRC", } CATEGORY_DISPLAY_NAMES: dict[str, str] = { "histone_marks": "Histone Marks", "promoter": "Promoter", "enhancer": "Enhancer", "splice_site": "Splice Site", "variant_effect": "Variant Effect", "rna_expression": "RNA Expression", "other": "Other", } # One color per task category — pastel, full-opacity friendly, distinct from _MODEL_PALETTE CATEGORY_COLORS: dict[str, str] = { "histone_marks": "#8EB4E8", "promoter": "#F5956C", "enhancer": "#60C4A8", "splice_site": "#5AC8D8", "variant_effect": "#C49AE0", "rna_expression": "#F075A0", "other": "#BCC4CC", }