Skip to content

Commit f76c3c6

Browse files
committed
fix: replace mutable default arguments with None in CNV plot functions
Fixes #787 plot_cnv_hmm_heatmap, plot_cnv_hmm_heatmap_track, and the CNV colorscale in plot_diplotype_clustering_advanced were using a mutable list (cnv_params.colorscale_default) as a default parameter value, which is a dangerous pattern in Python. Replaced with None and added fallback assignment at the start of each function body.
1 parent bef737a commit f76c3c6

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

malariagen_data/anoph/cnv_data.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -886,11 +886,13 @@ def plot_cnv_hmm_heatmap_track(
886886
width: gplt_params.width = gplt_params.width_default,
887887
row_height: gplt_params.row_height = 7,
888888
height: Optional[gplt_params.height] = None,
889-
palette: Optional[gplt_params.colors] = cnv_params.colorscale_default,
889+
palette: Optional[gplt_params.colors] = None,
890890
show: gplt_params.show = True,
891891
output_backend: gplt_params.output_backend = gplt_params.output_backend_default,
892892
) -> gplt_params.optional_figure:
893893
debug = self._log.debug
894+
if palette is None:
895+
palette = cnv_params.colorscale_default
894896

895897
import bokeh.models as bkmod
896898
import bokeh.plotting as bkplt
@@ -1028,13 +1030,15 @@ def plot_cnv_hmm_heatmap(
10281030
width: gplt_params.width = gplt_params.width_default,
10291031
row_height: gplt_params.row_height = 7,
10301032
track_height: Optional[gplt_params.track_height] = None,
1031-
palette: Optional[gplt_params.colors] = cnv_params.colorscale_default,
1033+
palette: Optional[gplt_params.colors] = None,
10321034
genes_height: gplt_params.genes_height = gplt_params.genes_height_default,
10331035
show: gplt_params.show = True,
10341036
gene_labels: Optional[gplt_params.gene_labels] = None,
10351037
gene_labelset: Optional[gplt_params.gene_labelset] = None,
10361038
) -> gplt_params.optional_figure:
10371039
debug = self._log.debug
1040+
if palette is None:
1041+
palette = cnv_params.colorscale_default
10381042

10391043
import bokeh.layouts as bklay
10401044
import bokeh.plotting as bkplt

malariagen_data/anoph/dipclust.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ def plot_diplotype_clustering_advanced(
622622
snp_filter_min_maf: float = 0.05,
623623
snp_query: Optional[base_params.snp_query] = AA_CHANGE_QUERY,
624624
cnv_region: Optional[base_params.regions] = None,
625-
cnv_colorscale: plotly_params.color_continuous_scale = cnv_params.colorscale_default,
625+
cnv_colorscale: plotly_params.color_continuous_scale = None,
626626
cnv_max_coverage_variance: cnv_params.max_coverage_variance = 0.2,
627627
site_mask: Optional[base_params.site_mask] = None,
628628
sample_sets: Optional[base_params.sample_sets] = None,
@@ -657,6 +657,8 @@ def plot_diplotype_clustering_advanced(
657657
chunks: base_params.chunks = base_params.native_chunks,
658658
inline_array: base_params.inline_array = base_params.inline_array_default,
659659
):
660+
if cnv_colorscale is None:
661+
cnv_colorscale = cnv_params.colorscale_default
660662
if cohort_size and snp_transcript:
661663
cohort_size = None
662664
print(

0 commit comments

Comments
 (0)