@@ -258,8 +258,13 @@ def _h12_gwss_contig(
258258 # Compute window midpoints.
259259 pos = ds_haps ["variant_position" ].values
260260 x = allel .moving_statistic (pos , statistic = np .mean , size = window_size )
261- contigs = allel .moving_statistic (
262- ds_haps ["variant_contig" ].values , statistic = np .median , size = window_size
261+ contigs = np .asarray (
262+ allel .moving_statistic (
263+ ds_haps ["variant_contig" ].values ,
264+ statistic = np .median ,
265+ size = window_size ,
266+ ),
267+ dtype = int ,
263268 )
264269
265270 results = dict (x = x , h12 = h12 , contigs = contigs )
@@ -438,7 +443,9 @@ def plot_h12_gwss_track(
438443 sizing_mode : gplt_params .sizing_mode = gplt_params .sizing_mode_default ,
439444 width : gplt_params .width = gplt_params .width_default ,
440445 height : gplt_params .height = 200 ,
441- circle_kwargs_param : Optional [gplt_params .circle_kwargs_param ] = None ,
446+ contig_colors : Optional [
447+ gplt_params .contig_colors
448+ ] = gplt_params .contig_colors_default ,
442449 show : gplt_params .show = True ,
443450 x_range : Optional [gplt_params .x_range ] = None ,
444451 output_backend : gplt_params .output_backend = gplt_params .output_backend_default ,
@@ -460,100 +467,6 @@ def plot_h12_gwss_track(
460467 inline_array = inline_array ,
461468 )
462469
463- circle_kwargs_param_dict : dict [int , gplt_params .circle_kwargs ] = {}
464- if circle_kwargs_param is None :
465- circle_kwargs_param_dict = gplt_params .default_circle_kwargs_dict
466- elif isinstance (circle_kwargs_param , list ):
467- if len (circle_kwargs_param ) >= 5 :
468- circle_kwargs_param_dict = {
469- i : circle_kwargs_param [i ] for i in range (0 , 5 )
470- }
471- else :
472- circle_kwargs_param_dict = {
473- i : circle_kwargs_param [i ]
474- for i in range (0 , len (circle_kwargs_param ))
475- }
476- circle_kwargs_param_dict .update (
477- {
478- i : gplt_params .default_circle_kwargs_dict [i ]
479- for i in range (len (circle_kwargs_param ), 5 )
480- }
481- )
482- elif isinstance (circle_kwargs_param , dict ):
483- if isinstance (list (circle_kwargs_param .keys ())[0 ], str ):
484- if list (circle_kwargs_param .keys ())[0 ] in [
485- "2L" ,
486- "2R" ,
487- "3L" ,
488- "3R" ,
489- "X" ,
490- "2RL" ,
491- "3RL" ,
492- ]:
493- for i in range (0 , 5 ):
494- if i == 0 :
495- ck = circle_kwargs_param ["2L" ]
496- if "2L" in circle_kwargs_param .keys (): # Ag3
497- circle_kwargs_param_dict [i ] = ck
498- elif "2RL" in circle_kwargs_param .keys (): # Af1
499- circle_kwargs_param_dict [
500- i
501- ] = gplt_params .default_circle_kwargs_dict [
502- i
503- ] # circle_kwargs_param["2RL"]
504- else :
505- circle_kwargs_param_dict [
506- i
507- ] = gplt_params .default_circle_kwargs_dict [i ]
508- elif i == 1 :
509- if "2R" in circle_kwargs_param .keys (): # Ag3
510- circle_kwargs_param_dict [i ] = circle_kwargs_param ["2R" ]
511- elif "3RL" in circle_kwargs_param .keys (): # Af1
512- circle_kwargs_param_dict [i ] = circle_kwargs_param ["3RL" ]
513- else :
514- circle_kwargs_param_dict [
515- i
516- ] = gplt_params .default_circle_kwargs_dict [i ]
517- elif i == 2 :
518- if "3L" in circle_kwargs_param .keys (): # Ag3
519- circle_kwargs_param_dict [i ] = circle_kwargs_param ["3L" ]
520- elif "X" in circle_kwargs_param .keys (): # Af1
521- circle_kwargs_param_dict [i ] = circle_kwargs_param ["X" ]
522- else :
523- circle_kwargs_param_dict [
524- i
525- ] = gplt_params .default_circle_kwargs_dict [i ]
526- elif i == 3 :
527- if "3R" in circle_kwargs_param .keys (): # Ag3
528- circle_kwargs_param_dict [i ] = circle_kwargs_param ["3R" ]
529- else :
530- circle_kwargs_param_dict [
531- i
532- ] = gplt_params .default_circle_kwargs_dict [i ]
533- elif i == 4 :
534- if (
535- "X" in circle_kwargs_param .keys ()
536- ): # Ag3. Will also get a value for Af1 but it will be ignored.
537- circle_kwargs_param_dict [i ] = circle_kwargs_param ["X" ]
538- else :
539- circle_kwargs_param_dict [
540- i
541- ] = gplt_params .default_circle_kwargs_dict [i ]
542- else :
543- circle_kwargs_param_dict = {
544- i : circle_kwargs_param for i in range (0 , 5 )
545- }
546- elif isinstance (list (circle_kwargs_param .keys ())[0 ], int ):
547- for i in range (0 , 5 ):
548- if i in list (circle_kwargs_param .keys ()):
549- circle_kwargs_param_dict [i ] = circle_kwargs_param [i ]
550- else :
551- circle_kwargs_param_dict [
552- i
553- ] = gplt_params .default_circle_kwargs_dict [i ]
554- else :
555- circle_kwargs_param_dict = gplt_params .default_circle_kwargs_dict
556-
557470 # Determine X axis range.
558471 x_min = x [0 ]
559472 x_max = x [- 1 ]
@@ -592,12 +505,11 @@ def plot_h12_gwss_track(
592505 # Plot H12.
593506 for s in set (contigs ):
594507 idxs = contigs == s
595- circle_kwargs_mutable = circle_kwargs_param_dict [s ]
596508 fig .scatter (
597509 x = x [idxs ],
598510 y = h12 [idxs ],
599511 marker = "circle" ,
600- ** circle_kwargs_mutable ,
512+ color = contig_colors [ s % len ( contig_colors )] ,
601513 )
602514
603515 # Tidy up the plot.
@@ -634,7 +546,9 @@ def plot_h12_gwss(
634546 sizing_mode : gplt_params .sizing_mode = gplt_params .sizing_mode_default ,
635547 width : gplt_params .width = gplt_params .width_default ,
636548 track_height : gplt_params .track_height = 170 ,
637- circle_kwargs_param : Optional [gplt_params .circle_kwargs_param ] = None ,
549+ contig_colors : Optional [
550+ gplt_params .contig_colors
551+ ] = gplt_params .contig_colors_default ,
638552 genes_height : gplt_params .genes_height = gplt_params .genes_height_default ,
639553 show : gplt_params .show = True ,
640554 output_backend : gplt_params .output_backend = gplt_params .output_backend_default ,
@@ -656,7 +570,7 @@ def plot_h12_gwss(
656570 sizing_mode = sizing_mode ,
657571 width = width ,
658572 height = track_height ,
659- circle_kwargs_param = circle_kwargs_param ,
573+ contig_colors = contig_colors ,
660574 show = False ,
661575 output_backend = output_backend ,
662576 chunks = chunks ,
0 commit comments