From c9323a7376e1b9e64910ef056877bb263c8dc98c Mon Sep 17 00:00:00 2001 From: Jover Lee Date: Tue, 28 Nov 2023 12:50:41 -0800 Subject: [PATCH 1/2] Remove excess whitespace --- scripts/modify-lineage-colours-and-order.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/modify-lineage-colours-and-order.py b/scripts/modify-lineage-colours-and-order.py index d5693bd..a1a203f 100644 --- a/scripts/modify-lineage-colours-and-order.py +++ b/scripts/modify-lineage-colours-and-order.py @@ -63,7 +63,7 @@ def colour_range(anchor, n): lrange = np.linspace(anchor_hls[1]*1.2, anchor_hls[1], n) srange = np.linspace(anchor_hls[2]*0.7, anchor_hls[2]*1.1, n) rgb_range = [colorsys.hls_to_rgb(*hls) for hls in zip(hrange, lrange, srange)] - def clamp(x): + def clamp(x): return int(max(0, min(x, 255))) return [f"#{clamp(rgb[0]):02x}{clamp(rgb[1]):02x}{clamp(rgb[2]):02x}" for rgb in rgb_range] @@ -77,7 +77,7 @@ def colourise(lineages, aliasor, clade_definitions): """ clades = {lineage: lineage_to_clade(lineage, aliasor, 'other', clade_definitions) for lineage in lineages} - + colours = [] for clade in list(set(clades.values())): @@ -124,4 +124,4 @@ def colourise(lineages, aliasor, clade_definitions): print(f"Variant classification of {args.variant_classification}: no post-processing of JSON") with open(args.output, 'w') as fh: - json.dump(data, fh, indent=None) \ No newline at end of file + json.dump(data, fh, indent=None) From fec15d1fdfbd25fbddcbf3b637fdd56a185d1204 Mon Sep 17 00:00:00 2001 From: Jover Lee Date: Tue, 28 Nov 2023 12:50:45 -0800 Subject: [PATCH 2/2] modify-lineage-colours-and-order: Add default clade color MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the assertion that has been blocking the pipeline due to lack of clade definition for 21L/BA.2.86.¹ Adds a default dark grey color for clades that lack clade definition so that we can see them on the forecasts site. In the future, we may want to add a custom Slack notification fo these clades so that we get a louder internal notification. ¹ https://bedfordlab.slack.com/archives/C036L7V615F/p1701195514961829 --- scripts/modify-lineage-colours-and-order.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/scripts/modify-lineage-colours-and-order.py b/scripts/modify-lineage-colours-and-order.py index a1a203f..ee671c8 100644 --- a/scripts/modify-lineage-colours-and-order.py +++ b/scripts/modify-lineage-colours-and-order.py @@ -5,6 +5,11 @@ import numpy as np import colorsys + +# Color for clades that lack clade definition, but we don't want to group with 'other' +DEFAULT_CLADE_COLOR = '#474747' + + def order_lineages(lineages, aliasor): """ Order input lineages by using their full uncompressed lineage & converting to a sortable form @@ -40,7 +45,15 @@ def clade_colors(variants, clade_definitions): except KeyError: if v!='other': missing.add(v) - assert len(missing) == 0, f"Missing definitions for the following clades: {', '.join(missing)}" + defs.append([v, DEFAULT_CLADE_COLOR]) + + # TODO: Emit this to output file so it can be sent thru Slack notifications + if len(missing) > 0: + print( + f"Missing definitions for the following clades: {', '.join(missing)}.", + f"They have been assigned the default color {DEFAULT_CLADE_COLOR!r}" + ) + return defs def clade_display_names(variants, clade_definitions):