diff plot.xml @ 17:2dfb2227a16c draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/scanpy/ commit 91121b1e72696f17478dae383badaa71e9f96dbb
author iuc
date Sat, 14 Sep 2024 12:44:20 +0000
parents 1072ce66b426
children 40812a65a78b
line wrap: on
line diff
--- a/plot.xml	Tue Aug 20 09:53:51 2024 +0000
+++ b/plot.xml	Sat Sep 14 12:44:20 2024 +0000
@@ -1,10 +1,13 @@
-<tool id="scanpy_plot" name="Plot" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@profile@">
-    <description> with scanpy</description>
+<tool id="scanpy_plot" name="Scanpy plot" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
     <macros>
         <import>macros.xml</import>
     </macros>
     <expand macro="bio_tools"/>
-    <expand macro="requirements"/>
+    <expand macro="requirements">
+        <requirement type="package" version="3.9.1">matplotlib</requirement>
+        <requirement type="package" version="0.13.2">seaborn</requirement>
+        <requirement type="package" version="0.11.6">python-igraph</requirement>
+    </expand>
     <stdio>
         <regex match="... storing" source="stderr" level="warning"/>
     </stdio>
@@ -14,18 +17,18 @@
       ]]></command>
     <configfiles>
         <configfile name="script_file"><![CDATA[
-@CMD_imports@
-@CMD_read_inputs@
+@CMD_IMPORTS@
+@CMD_READ_INPUTS@
 
 sc.settings.figdir = '.'
 
-#if $method.method == 'pl.scatter'
+#if str($method.method) == 'pl.scatter':
 
-#if $method.type.type == 'xy':
+    #if str($method.type.type) == 'xy':
 x_field='$method.type.x'
 y_field='$method.type.y'
 
-#if $method.type.log:
+    #if $method.type.log:
 if x_field in adata.obs or x_field in adata.var:
     if x_field in adata.obs:
         adata.obs[f"log_{x_field}"] = np.log10(adata.obs[x_field])
@@ -39,425 +42,462 @@
     elif y_field in adata.var:
         adata.var[f"log_{y_field}"] = np.log10(adata.var[y_field])
     y_field=f"log_{y_field}"
-#end if
-#end if
+    #end if
+    #end if
 
 sc.pl.scatter(
-    @CMD_param_plot_inputs@
-    #if $method.type.type == 'xy':
+    @CMD_PARAM_PLOT_INPUTS@
+    #if str($method.type.type) == 'xy':
     x=x_field,
     y=y_field,
-    #if $method.type.color
+        #if str($method.type.color) != '':
     color='$method.type.color',
-    #end if
-    #if str('$method.type.layers.use_layers') == 'true'
+        #end if
+        #if str('$method.type.layers.use_layers') == 'true':
     layers=('$method.type.layers.layer_x', '$method.type.layers.layer_y', '$method.type.layers.layer_color'),
-    #end if
-    #else
+        #end if
+    #else if str($method.type.type) == 'basis':
     basis='$method.type.basis',
-    #if $method.type.color
-        #set $color = ([x.strip() for x in str($method.type.color).split(',')])
+        #if str($method.type.color) != '':
+            #set $color = ([x.strip() for x in str($method.type.color).split(',')])
     color=$color,
-    #end if
+        #end if
     #end if
     use_raw=$method.use_raw,
     sort_order=$method.sort_order,
-    @CMD_params_groups@
-    @CMD_params_pl_components@
+    @CMD_PARAM_GROUPS@
+    @CMD_PARAM_PL_COMPONENTS@
     projection='$method.plot.projection',
+    #if str($method.plot.legend_loc) != '':
     legend_loc='$method.plot.legend_loc',
-    #if $method.plot.palette
+    #end if
+    @CMD_PARAM_LEGEND_FONTSIZE@
+    legend_fontweight='$method.plot.legend_fontweight',
+    #if $method.plot.color_map:
+    color_map='$method.plot.color_map',
+    #end if   
+    #if $method.plot.palette:
     palette=['$method.plot.palette'],
     #end if
-    #if $method.plot.color_map
-    color_map='$method.plot.color_map',
-    #end if
-    @CMD_param_legend_fontsize@
-    legend_fontweight='$method.plot.legend_fontweight',
-    @CMD_param_title@
-    @CMD_param_size@
-    frameon=$method.plot.frameon)
+    frameon=$method.plot.frameon,
+    @CMD_PARAM_SIZE@
+    @CMD_PARAM_TITLE@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.heatmap'
-@CMD_var_names_header_check@
+#else if str($method.method) == 'pl.heatmap':
+@CMD_VAR_NAMES_HEADER_CHECK@
 sc.pl.heatmap(
-    @CMD_param_plot_inputs@
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    @CMD_params_inputs@
-    @CMD_params_plots@
-    @CMD_pl_heatmap@)
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAMS_INPUTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PARAMS_PL_HEATMAP@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.dotplot'
-@CMD_var_names_header_check@
+#else if str($method.method) == 'pl.dotplot':
+@CMD_VAR_NAMES_HEADER_CHECK@
 sc.pl.dotplot(
-    @CMD_param_plot_inputs@
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    @CMD_params_inputs@
-    @CMD_params_plots@
-    @CMD_pl_dotplot@)
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAMS_INPUTS@    
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PL_DOTPLOT@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.violin'
+#else if str($method.method) == 'pl.tracksplot':
+@CMD_VAR_NAMES_HEADER_CHECK@
+sc.pl.tracksplot(
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAMS_INPUTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PLOTS@
+    @CMD_SHOW_NONE@)
+
+#else if str($method.method) == 'pl.violin':
 sc.pl.violin(
-    @CMD_param_plot_inputs@
-    #if $method.key_variables.type == "var_names"
+    @CMD_PARAM_PLOT_INPUTS@
+    #if str($method.key_variables.type) == 'var_names':
         #set $key_list = adata.var_names
-    #else if $method.key_variables.type == "obs"
+    #else if str($method.key_variables.type) == 'obs':
         #set $key_list = adata.obs.select_dtypes(exclude=['category']).columns
-    #else if $method.key_variables.type == "custom"
+    #else if str($method.key_variables.type) == 'custom':
         #set $key_list=([x.strip() for x in str($method.key_variables.keys).split(',')])
     #end if
     keys=$key_list,
-    #if $method.groupby
+    #if str($method.groupby) != '':
     groupby='$method.groupby',
     #end if
     log=$method.log,
     use_raw=$method.use_raw,
-    @CMD_conditional_stripplot@
+    @CMD_CONDITIONAL_STRIPPLOT@
     multi_panel=$method.violin_plot.multi_panel.multi_panel,
-    #if $method.violin_plot.multi_panel.multi_panel == "True" and str($method.violin_plot.multi_panel.width) != '' and str($method.violin_plot.multi_panel.height) != ''
-    figsize=($method.violin_plot.multi_panel.width, $method.violin_plot.multi_panel.height),
-    #end if
-    scale='$method.violin_plot.scale',
-    #if $method.xlabel
+    ##if $method.violin_plot.multi_panel.multi_panel == "True" and str($method.violin_plot.multi_panel.width) != '' and str($method.violin_plot.multi_panel.height) != ''
+    ##figsize=($method.violin_plot.multi_panel.width, $method.violin_plot.multi_panel.height),
+    ##end if
+    #if str($method.xlabel) != '':
     xlabel='$method.xlabel',
     #end if
-    #if str($method.rotation) != ''
+    #if str($method.rotation) != '':
     rotation=$method.rotation,
     #end if
-    @CMD_params_seaborn_violinplot@)
+    @CMD_PARAMS_SEABORN_VIOLINPLOT@
+    @CMD_PARAM_LAYER@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.stacked_violin'
-@CMD_var_names_header_check@
+#else if str($method.method) == 'pl.stacked_violin':
+@CMD_VAR_NAMES_HEADER_CHECK@
 sc.pl.stacked_violin(
-    @CMD_param_plot_inputs@
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    @CMD_params_inputs@
-    @CMD_params_plots@
-    @CMD_pl_stacked_violin@)
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAMS_INPUTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PARAMS_PL_STACKED_VIOLIN@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.matrixplot'
-@CMD_var_names_header_check@
+#else if str($method.method) == 'pl.matrixplot':
+@CMD_VAR_NAMES_HEADER_CHECK@
 sc.pl.matrixplot(
-    @CMD_param_plot_inputs@
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    @CMD_params_inputs@
-    @CMD_params_plots@
-    @CMD_pl_matrixplot@)
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAMS_INPUTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PARAMS_PL_MATRIXPLOT@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.clustermap'
+#else if str($method.method) == 'pl.clustermap':
 sc.pl.clustermap(
-    #if str($method.use_raw) == 'True'
+    #if str($method.use_raw) == 'True':
     adata=adata.X,
     #else
     adata=adata,
     #end if
-    show=False,
-    #if $method.obs_keys
+    #if str($method.obs_keys) != '':
     obs_keys='$method.obs_keys',
     #end if
     use_raw=$method.use_raw,
     method='$method.seaborn_clustermap.method',
     metric='$method.seaborn_clustermap.metric',
-    #if str($method.seaborn_clustermap.z_score) != 'None'
+    #if str($method.seaborn_clustermap.z_score) != 'None':
     z_score=$method.seaborn_clustermap.z_score,
     #end if
-    #if str($method.seaborn_clustermap.standard_scale) != 'None'
+    #if str($method.seaborn_clustermap.standard_scale) != 'None':
     standard_scale=$method.seaborn_clustermap.standard_scale,
     #end if
     col_cluster=$method.seaborn_clustermap.col_cluster,
-    row_cluster=$method.seaborn_clustermap.row_cluster).savefig(fname="output.$format")
+    row_cluster=$method.seaborn_clustermap.row_cluster,
+    save='.$format',
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.highest_expr_genes'
+#else if str($method.method) == 'pl.highest_expr_genes':
 sc.pl.highest_expr_genes(
-    @CMD_param_plot_inputs@
+    @CMD_PARAM_PLOT_INPUTS@
     n_top=$method.n_top,
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    #if $method.setseaborn_boxplot.color
+    @CMD_PARAM_GENE_SYMBOLS@
+    #if str($method.setseaborn_boxplot.color) != '':
     color='$method.setseaborn_boxplot.color',
     #end if
-    #if $method.setseaborn_boxplot.palette
+    #if $method.setseaborn_boxplot.palette:
     palette='$method.setseaborn_boxplot.palette',
     #end if
-    saturation=$method.setseaborn_boxplot.saturation)
+    saturation=$method.setseaborn_boxplot.saturation,
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.highly_variable_genes'
+#else if str($method.method) == 'pl.highly_variable_genes':
 sc.pl.highly_variable_genes(
     adata_or_result=adata,
     log=$method.log,
     save='.$format',
-    show=False,
-    highly_variable_genes=$method.highly_variable_genes)
+    highly_variable_genes=$method.highly_variable_genes,
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.pca'
+#else if str($method.method) == 'pl.scrublet_score_distribution':
+sc.pl.scrublet_score_distribution(
+    adata=adata,
+    scale_hist_obs='$method.scale_hist_obs',
+    scale_hist_sim='$method.scale_hist_sim',
+    @CMD_PARAMS_FIGSIZE@
+    save='.$format',
+    @CMD_SHOW_NONE@)
+
+#else if str($method.method) == 'pl.pca':
 sc.pl.pca(
-    @CMD_param_plot_inputs@
-    @CMD_param_color@
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAM_COLOR@
     use_raw=$method.use_raw,
     sort_order=$method.sort_order,
-    @CMD_params_groups@
-    @CMD_params_pl_components@
-    @CMD_pl_attribute_section@
-    @CMD_params_matplotlib_pyplot_scatter@)
-
-#else if $method.method == 'pl.pca_loadings'
-sc.pl.pca_loadings(
-    @CMD_param_plot_inputs@
-    #set $components = ([int(x.strip()) for x in str($method.components).split(',')])
-    components=$components)
+    @CMD_PARAM_GROUPS@
+    @CMD_PARAMS_PL_ATTRIBUTE_SECTION@
+    @CMD_SCATTER_OUTINE@
+    @CMD_SECTION_MATPLOTLIB_PYPLOT_SCATTER@
+    @CMD_PARAM_LAYER@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.pca_variance_ratio'
+#else if str($method.method) == 'pl.pca_loadings':
+sc.pl.pca_loadings(
+    @CMD_PARAM_PLOT_INPUTS@
+    #set $components = ([int(x.strip()) for x in str($method.components).split(',')])
+    components=$components,
+    include_lowest=$method.include_lowest,
+    #if str($method.n_points) != '':
+    n_points=$method.n_points,
+    #end if
+    @CMD_SHOW_NONE@)
+
+#else if str($method.method) == 'pl.pca_variance_ratio':
 sc.pl.pca_variance_ratio(
-    @CMD_param_plot_inputs@
+    @CMD_PARAM_PLOT_INPUTS@
     n_pcs=$method.n_pcs,
-    log=$method.log)
+    log=$method.log,
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.pca_overview'
+#else if str($method.method) == 'pl.pca_overview':
 sc.pl.pca_overview(
-    @CMD_param_plot_inputs@
-    @CMD_param_color@
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAM_COLOR@
     use_raw=$method.use_raw,
     sort_order=$method.sort_order,
-    @CMD_params_groups@
-    @CMD_params_pl_components@
-    @CMD_pl_attribute_section@
-    @CMD_params_matplotlib_pyplot_scatter@)
+    @CMD_PARAM_GROUPS@
+    @CMD_PARAMS_PL_ATTRIBUTE_SECTION@
+    @CMD_SCATTER_OUTINE@
+    @CMD_SECTION_MATPLOTLIB_PYPLOT_SCATTER@    
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.tsne'
+#else if str($method.method) == 'pl.tsne':
 sc.pl.tsne(
-    @CMD_param_plot_inputs@
-    @CMD_param_color@
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAM_COLOR@
+    @CMD_PARAM_GENE_SYMBOLS@
     use_raw=$method.use_raw,
-    @CMD_pl_edges@
+    @CMD_PL_EDGES@
     arrows=$method.arrows,
     sort_order=$method.sort_order,
-    @CMD_params_groups@
-    @CMD_params_pl_components@
-    @CMD_pl_attribute_section@
-    @CMD_params_matplotlib_pyplot_scatter@)
+    @CMD_PARAM_GROUPS@
+    @CMD_PARAMS_PL_ATTRIBUTE_SECTION@
+    @CMD_SCATTER_OUTINE@
+    @CMD_SECTION_MATPLOTLIB_PYPLOT_SCATTER@    
+    @CMD_PARAM_LAYER@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.umap'
+#else if str($method.method) == 'pl.umap':
 sc.pl.umap(
-    @CMD_param_plot_inputs@
-    @CMD_param_color@
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAM_COLOR@
     use_raw=$method.use_raw,
-    @CMD_pl_edges@
+    @CMD_PL_EDGES@
     arrows=$method.arrows,
     sort_order=$method.sort_order,
-    @CMD_params_groups@
-    @CMD_params_pl_components@
-    @CMD_pl_attribute_section@
-    @CMD_params_matplotlib_pyplot_scatter@)
+    @CMD_PARAM_GROUPS@
+    @CMD_PARAMS_PL_ATTRIBUTE_SECTION@
+    @CMD_SCATTER_OUTINE@
+    @CMD_SECTION_MATPLOTLIB_PYPLOT_SCATTER@
+    @CMD_PARAM_LAYER@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.diffmap'
+#else if str($method.method) == 'pl.diffmap':
 sc.pl.diffmap(
-    @CMD_param_plot_inputs@
-    @CMD_param_color@
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAM_COLOR@
     use_raw=$method.use_raw,
     sort_order=$method.sort_order,
-    @CMD_params_groups@
-    @CMD_params_pl_components@
-    @CMD_pl_attribute_section@
-    @CMD_params_matplotlib_pyplot_scatter@)
+    @CMD_PARAM_GROUPS@
+    @CMD_PARAMS_PL_ATTRIBUTE_SECTION@
+    @CMD_SCATTER_OUTINE@
+    @CMD_SECTION_MATPLOTLIB_PYPLOT_SCATTER@
+    @CMD_PARAM_LAYER@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.draw_graph'
+#else if str($method.method) == 'pl.draw_graph':
 sc.pl.draw_graph(
-    @CMD_param_plot_inputs@
-    @CMD_param_color@
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAM_COLOR@
+    @CMD_PARAM_GENE_SYMBOLS@
     use_raw=$method.use_raw,
     layout='$method.layout',
-    edges=$method.edges.edges,
-    #if str($method.edges.edges) == 'True'
-    edges_width=$method.edges.edges_width,
-    edges_color='$method.edges.edges_color',
-    #end if
+    @CMD_PL_EDGES@
     arrows=$method.arrows,
     sort_order=$method.sort_order,
-    @CMD_params_groups@
-    @CMD_params_pl_components@
-    @CMD_pl_attribute_section@
-    @CMD_params_matplotlib_pyplot_scatter@)
+    @CMD_PARAM_GROUPS@
+    @CMD_PARAMS_PL_ATTRIBUTE_SECTION@
+    @CMD_SCATTER_OUTINE@
+    @CMD_SECTION_MATPLOTLIB_PYPLOT_SCATTER@
+    @CMD_PARAM_LAYER@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.embedding_density'
+#else if str($method.method) == 'pl.embedding_density':
 sc.pl.embedding_density(
-    @CMD_param_plot_inputs@
+    @CMD_PARAM_PLOT_INPUTS@
     basis='$method.basis',
-    #if $method.key
+    #if str($method.key) != '':
     key='$method.key',
     #end if
-    #if $method.groupby
+    #if str($method.groupby) != '':
     groupby='$method.groupby',
     #end if
-    #if $method.group
+    #if str($method.group) != '':
     #set $group = ([x.strip() for x in str($method.group).split(',')])
     group=$group,
     #end if
-    #if $method.color_map
+    #if $method.color_map:
     color_map='$method.color_map',
     #end if
     bg_dotsize=$method.bg_dotsize,
     fg_dotsize=$method.fg_dotsize,
     ncols=$method.ncols,
     wspace=$method.wspace,
-    hspace=$method.hspace)
+    hspace=$method.hspace,
+    @CMD_SHOW_NONE@)
+
+
 
-#else if $method.method == 'pl.dpt_groups_pseudotime'
-sc.pl.dpt_groups_pseudotime(
-    @CMD_param_plot_inputs@
-    #if $method.color_map
-    color_map='$method.color_map'
-    #end if
-    )
-
-#else if $method.method == 'pl.dpt_timeseries'
+#else if str($method.method) == 'pl.dpt_timeseries':
 sc.pl.dpt_timeseries(
-    @CMD_param_plot_inputs@
-    #if $method.heatmap.as_heatmap == "True"
+    @CMD_PARAM_PLOT_INPUTS@
+    #if str($method.heatmap.as_heatmap) == 'True'
         #if $method.heatmap.color_map
     color_map='$method.heatmap.color_map',
         #end if
     #end if
-    as_heatmap=$method.heatmap.as_heatmap)
+    as_heatmap=$method.heatmap.as_heatmap,
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.paga'
+#else if str($method.method) == 'pl.paga':
 sc.pl.paga(
-    @CMD_param_plot_inputs@
-    @CMD_params_pl_paga@)
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAMS_PL_PAGA@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.paga_compare'
+#else if str($method.method) == 'pl.paga_compare':
 sc.pl.paga_compare(
-    @CMD_param_plot_inputs@
-    @CMD_params_pl_paga@)
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAMS_PL_PAGA@
+    @CMD_PARAM_PL_COMPONENTS@
+    projection='$method.plot.projection',
+    #if str($method.plot.legend_loc) != '':
+    legend_loc='$method.plot.legend_loc',
+    #end if
+    @CMD_PARAM_LEGEND_FONTSIZE@
+    legend_fontweight='$method.plot.legend_fontweight',
+    #if $method.plot.color_map:
+    color_map='$method.plot.color_map',
+    #end if   
+    #if $method.plot.palette:
+    palette=['$method.plot.palette'],
+    #end if
+    @CMD_PARAM_SIZE@
+    @CMD_PARAM_TITLE@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.paga_path'
+#else if str($method.method) == 'pl.paga_path':
 sc.pl.paga_path(
-    @CMD_param_plot_inputs@
+    @CMD_PARAM_PLOT_INPUTS@
     #set $nodes = ([int(x.strip()) for x in str($method.nodes).split(',')])
     nodes=$nodes,
     #set $keys=([x.strip() for x in str($method.keys).split(',')])
     keys=$keys,
     use_raw=$method.use_raw,
-    #if $method.annotations
+    #if str($method.annotations) != '':
         #set $annotations=([x.strip() for x in str($method.annotations).split(',')])
     annotations=$annotations,
     #end if
-    #if $method.color_map
+    #if $method.color_map:
     color_map='$method.color_map',
     #end if
     n_avg=$method.n_avg,
-    #if $method.annotations
+    #if str($method.annotations) != '':
     groups_key='$method.groups_key',
     #end if
     as_heatmap=$method.as_heatmap,
     show_node_names=$method.show_node_names,
     show_colorbar=$method.show_colorbar,
     show_yticks=$method.show_yticks,
-    normalize_to_zero_one=$method.normalize_to_zero_one)
+    normalize_to_zero_one=$method.normalize_to_zero_one,
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.rank_genes_groups'
+#else if str($method.method) == 'pl.rank_genes_groups':
 sc.pl.rank_genes_groups(
-    @CMD_param_plot_inputs@
-    @CMD_params_groups@
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAM_GROUPS@
     n_genes=$method.n_genes,
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
+    @CMD_PARAM_GENE_SYMBOLS@
     fontsize=$method.fontsize,
     ncols=$method.ncols,
-    sharey=$method.sharey)
+    sharey=$method.sharey,
+    @CMD_SHOW_NONE@)
 
 #else if $method.method == 'pl.rank_genes_groups_violin'
 sc.pl.rank_genes_groups_violin(
-    @CMD_param_plot_inputs@
-    @CMD_params_groups@
-    #if $method.genes.select == 'n_genes'
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PARAM_GROUPS@
+    #if str($method.genes.select) == 'n_genes':
     n_genes=$method.genes.n_genes,
     #else
         #set $gene_names = ([x.strip() for x in str($method.genes.gene_names).split(',')])
     gene_names=$gene_names,
     #end if
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
+    @CMD_PARAM_GENE_SYMBOLS@
     use_raw=$method.use_raw,
     split=$method.split,
     strip=$method.violin_plot.stripplot.stripplot,
-    #if $method.violin_plot.stripplot.stripplot == "True"
+    #if str($method.violin_plot.stripplot.stripplot) == 'True':
     jitter=$method.violin_plot.stripplot.jitter.jitter,
-        #if $method.violin_plot.stripplot.jitter.jitter == "True"
+        #if str($method.violin_plot.stripplot.jitter.jitter) == 'True':
     size=$method.violin_plot.stripplot.jitter.size,
         #end if
     #end if
-    scale='$method.violin_plot.scale')
-
-#else if $method.method == 'pl.rank_genes_groups_dotplot'
-
-@CMD_var_names_header_check@
+    density_norm='$method.violin_plot.density_norm',
+    @CMD_SHOW_NONE@)
 
-sc.pl.rank_genes_groups_dotplot(
-    @CMD_param_plot_inputs@
-    #if $method.var_names.type == 'custom'
-    #set $var_names = ([x.strip() for x in str($method.var_names.var_names).split(',')])
-    var_names=$var_names,
-    #else if $method.var_names.type == 'customfile'
-    var_names={key: [v for v in list(value.values()) if pd.notna(v)] for key, value in pd.read_csv('$var_names', sep='\t', index_col=0, header=header).to_dict(orient='index').items()},
-    #else
-    n_genes=$method.n_genes,
-    #end if
-    #if $method.groupby != ''
-    groupby='$method.groupby',
-    #end if
-    num_categories=$method.num_categories,
-    #if $method.key != ''
-    key='$method.key',
-    #end if
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    @CMD_params_plots@
-    @CMD_pl_dotplot@)
+#else if str($method.method) == 'pl.rank_genes_groups_stacked_violin':
+@CMD_VAR_NAMES_HEADER_CHECK@
+sc.pl.rank_genes_groups_stacked_violin(
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PL_RANK_GENES_GROUPS_EXT@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PL_STACKED_VIOLIN@
+    @CMD_SHOW_NONE@)
+
+#else if str($method.method) == 'pl.rank_genes_groups_heatmap':
+@CMD_VAR_NAMES_HEADER_CHECK@
+sc.pl.rank_genes_groups_heatmap(
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PL_RANK_GENES_GROUPS_EXT@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PL_HEATMAP@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.rank_genes_groups_heatmap'
-sc.pl.rank_genes_groups_heatmap(
-    @CMD_param_plot_inputs@
-    @CMD_pl_rank_genes_groups_ext@
-    @CMD_params_plots@
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    @CMD_pl_heatmap@)
+#else if str($method.method) == 'pl.rank_genes_groups_dotplot':
+@CMD_VAR_NAMES_HEADER_CHECK@
+sc.pl.rank_genes_groups_dotplot(
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PL_RANK_GENES_GROUPS_EXT@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PL_DOTPLOT@
+    @CMD_VALUES_TO_PLOT@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.rank_genes_groups_matrixplot'
+#else if str($method.method) == 'pl.rank_genes_groups_matrixplot':
+@CMD_VAR_NAMES_HEADER_CHECK@
 sc.pl.rank_genes_groups_matrixplot(
-    @CMD_param_plot_inputs@
-    @CMD_pl_rank_genes_groups_ext@
-    @CMD_params_plots@
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    @CMD_pl_matrixplot@)
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PL_RANK_GENES_GROUPS_EXT@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PL_MATRIXPLOT@
+    @CMD_VALUES_TO_PLOT@
+    @CMD_SHOW_NONE@)
 
-#else if $method.method == 'pl.rank_genes_groups_stacked_violin'
-sc.pl.rank_genes_groups_stacked_violin(
-    @CMD_param_plot_inputs@
-    @CMD_pl_rank_genes_groups_ext@
-    @CMD_params_plots@
-    #if $method.gene_symbols
-    gene_symbols='$method.gene_symbols',
-    #end if
-    @CMD_pl_stacked_violin@)
+#else if str($method.method) == 'pl.rank_genes_groups_tracksplot':
+@CMD_VAR_NAMES_HEADER_CHECK@
+sc.pl.rank_genes_groups_tracksplot(
+    @CMD_PARAM_PLOT_INPUTS@
+    @CMD_PL_RANK_GENES_GROUPS_EXT@
+    @CMD_PARAMS_PLOTS@
+    @CMD_PARAM_GENE_SYMBOLS@
+    @CMD_PARAMS_PL_HEATMAP@
+    @CMD_SHOW_NONE@)
 
 #end if
 ]]></configfile>
@@ -470,13 +510,14 @@
                 <option value="pl.scatter">Generic: Scatter plot along observations or variables axes, using 'pl.scatter'</option>
                 <option value="pl.heatmap">Generic: Heatmap of the expression values of set of genes, using 'pl.heatmap'</option>
                 <option value="pl.dotplot">Generic: Makes a dot plot of the expression values, using 'pl.dotplot'</option>
+                <option value="pl.tracksplot">Generic: Makes a tracks plot of the expression values per cell, using 'pl.tracksplot'</option>
                 <option value="pl.violin">Generic: Violin plot, using 'pl.violin'</option>
                 <option value="pl.stacked_violin">Generic: Stacked violin plots, using 'pl.stacked_violin'</option>
                 <option value="pl.matrixplot">Generic: Heatmap of the mean expression values per cluster, using 'pl.matrixplot'</option>
                 <option value="pl.clustermap">Generic: Hierarchically-clustered heatmap, using 'pl.clustermap'</option>
                 <option value="pl.highest_expr_genes">Preprocessing: Plot the fraction of counts assigned to each gene over all cells, using 'pl.highest_expr_genes'</option>
-                <!--<option value="pl.filter_genes_dispersion">Preprocessing: Plot dispersions versus means for genes, using 'pl.filter_genes_dispersion'</option>-->
                 <option value="pl.highly_variable_genes">Preprocessing: Plot dispersions versus means for genes, using 'pl.highly_variable_genes'</option>
+                <option value="pl.scrublet_score_distribution">Preprocessing: Plot histogram of doublet scores, using 'pl.scrublet_score_distribution'</option>
                 <option value="pl.pca">PCA: Scatter plot in PCA coordinates, using 'pl.pca'</option>
                 <option value="pl.pca_loadings">PCA: Rank genes according to contributions to PCs, using 'pl.pca_loadings'</option>
                 <option value="pl.pca_variance_ratio">PCA: Scatter plot in PCA coordinates, using 'pl.pca_variance_ratio'</option>
@@ -486,57 +527,59 @@
                 <option value="pl.diffmap">Embeddings: Scatter plot in Diffusion Map basis, using 'pl.diffmap'</option>
                 <option value="pl.draw_graph">Embeddings: Scatter plot in graph-drawing basis, using 'pl.draw_graph'</option>
                 <option value="pl.embedding_density">Embeddings: Plot the density of cells in an embedding (per condition), using 'pl.embedding_density'</option>
-                <option value="pl.dpt_groups_pseudotime">Branching trajectories and pseudotime, clustering: Plot groups and pseudotime, using 'pl.dpt_groups_pseudotime'</option>
+                <!-- This function is commented out because it is not compatible with pandas version. If the issue is not resolved in the next update, this should be removed. -->
+                <!-- <option value="pl.dpt_groups_pseudotime">Branching trajectories and pseudotime, clustering: Plot groups and pseudotime, using 'pl.dpt_groups_pseudotime'</option> -->
                 <option value="pl.dpt_timeseries">Branching trajectories and pseudotime, clustering: Heatmap of pseudotime series, using 'pl.dpt_timeseries'</option>
                 <option value="pl.paga">Branching trajectories and pseudotime, clustering: Plot the abstracted graph through thresholding low-connectivity edges, using 'pl.paga'</option>
                 <option value="pl.paga_compare">Branching trajectories and pseudotime, clustering: Scatter and PAGA graph side-by-side, using 'pl.paga_compare'</option>
                 <option value="pl.paga_path">Branching trajectories and pseudotime, clustering: Gene expression and annotation changes along paths, using 'pl.paga_path'</option>
                 <option value="pl.rank_genes_groups">Marker genes: Plot ranking of genes using dotplot plot, using 'pl.rank_genes_groups'</option>
                 <option value="pl.rank_genes_groups_violin">Marker genes: Plot ranking of genes as violin plot, using 'pl.rank_genes_groups_violin'</option>
-                <option value="pl.rank_genes_groups_dotplot">Marker genes: Plot ranking of genes as dotplot plot, using 'pl.rank_genes_groups_dotplot'</option>
+                <option value="pl.rank_genes_groups_stacked_violin">Marker genes: Plot ranking of genes as stacked violin plot, using 'pl.rank_genes_groups_stacked_violin'</option>
                 <option value="pl.rank_genes_groups_heatmap">Marker genes: Plot ranking of genes as heatmap plot, using 'pl.rank_genes_groups_heatmap'</option>
+                <option value="pl.rank_genes_groups_dotplot">Marker genes: Plot ranking of genes as dotplot plot, using 'pl.rank_genes_groups_dotplot'</option>
                 <option value="pl.rank_genes_groups_matrixplot">Marker genes: Plot ranking of genes as matrixplot plot, using 'pl.rank_genes_groups_matrixplot'</option>
-                <option value="pl.rank_genes_groups_stacked_violin">Marker genes: Plot ranking of genes as stacked violin plot, using 'pl.rank_genes_groups_stacked_violin'</option>
+                <option value="pl.rank_genes_groups_tracksplot">Marker genes: Plot ranking of genes as tracksplot plot, using 'pl.rank_genes_groups_tracksplot'</option>
             </param>
             <when value="pl.scatter">
                 <conditional name="type">
-                    <param name="type" type="select" label="Plotting tool that computed coordinates" help="">
-                        <option value="xy">Using coordinates</option>
+                    <param name="type" type="select" label="Plotting tool that computed coordinates">
+                        <option value="xy" selected="true">Using coordinates</option>
                         <option value="basis">Using tool that computes coordinates</option>
                     </param>
                     <when value="xy">
                         <param argument="x" type="text" value="" label="x coordinate" help="Index or key from either '.obs' or '.var'">
-                            <expand macro="sanitize_query" />
+                            <expand macro="sanitize_query"/>
                         </param>
                         <param argument="y" type="text" value="" label="y coordinate" help="Index or key from either '.obs' or '.var'">
-                            <expand macro="sanitize_query" />
+                            <expand macro="sanitize_query"/>
                         </param>
                         <expand macro="param_log"/>
                         <param argument="color" type="text" value="" label="Color by" help="Color points by single variable in `.obs` or `.var`">
-                            <expand macro="sanitize_query" />
+                            <expand macro="sanitize_query"/>
                         </param>
                         <conditional name="layers">
                             <param argument="use_layers" type="select" label="Use the layers attribute?">
+                                <option value="false" selected="true">No</option>
                                 <option value="true">Yes</option>
-                                <option value="false" selected="true">No</option>
                             </param>
                             <when value="true">
                                 <param argument="layer_x" type="text" value="" optional="true" label="Layers for x coordinate" help="Use the 'layers' attribute of 'adata' if present">
-                                    <expand macro="sanitize_query" />
+                                    <expand macro="sanitize_query"/>
                                 </param>
                                 <param argument="layer_y" type="text" value="" optional="true" label="Layers for y coordinate" help="Use the 'layers' attribute of 'adata' if present">
-                                    <expand macro="sanitize_query" />
+                                    <expand macro="sanitize_query"/>
                                 </param>
                                 <param argument="layer_color" type="text" value="" optional="true" label="Layers for color" help="Use the 'layers' attribute of 'adata' if present">
-                                    <expand macro="sanitize_query" />
+                                    <expand macro="sanitize_query"/>
                                 </param>
                             </when>
                             <when value="false"/>
                         </conditional>
                     </when>
                     <when value="basis">
-                        <param argument="basis" type="select" label="Plotting tool that computes coordinates" help="">
-                            <option value="pca">pca (need to run on 'tl.pca' output)</option>
+                        <param argument="basis" type="select" label="Plotting tool that computes coordinates">
+                            <option value="pca">pca (need to run on 'pl.pca' output)</option>
                             <option value="tsne">tsne (need to run on 'tl.tsne' output)</option>
                             <option value="umap">umap (need to run on 'tl.umap' output)</option>
                             <option value="diffmap">diffmap (need to run on 'tl.diffmap' output)</option>
@@ -545,11 +588,11 @@
                         <expand macro="param_color"/>
                     </when>
                 </conditional>
-                <expand macro="param_use_raw"/>
+                <expand macro="param_use_raw" falsevalue="None"/>
                 <param argument="sort_order" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Plot data points with higher values on top of others?" help="For continuous annotations used as color parameter"/>
                 <expand macro="param_groups"/>
                 <section name="plot" title="Plot attributes">
-                    <expand macro="pl_components"/>
+                    <expand macro="param_pl_components"/>
                     <expand macro="param_projection"/>
                     <expand macro="param_legend_loc"/>
                     <expand macro="param_legend_fontsize"/>
@@ -563,20 +606,25 @@
             </when>
             <when value="pl.heatmap">
                 <expand macro="params_inputs"/>
-                <expand macro="gene_symbols"/>
+                <expand macro="param_gene_symbols"/>
                 <expand macro="params_plots"/>
-                <expand macro="pl_heatmap"/>
+                <expand macro="params_pl_heatmap"/>
             </when>
             <when value="pl.dotplot">
                 <expand macro="params_inputs"/>
-                <expand macro="gene_symbols"/>
+                <expand macro="param_gene_symbols"/>
                 <expand macro="params_plots"/>
-                <expand macro="pl_dotplot"/>
+                <expand macro="params_pl_dotplot"/>
+            </when>
+            <when value="pl.tracksplot">
+                <expand macro="params_inputs"/>
+                <expand macro="param_gene_symbols"/>
+                <expand macro="params_plots"/>
             </when>
             <when value="pl.violin">
                 <conditional name="key_variables">
                     <param name="type" type="select" label="Keys for accessing variables">
-                        <option value="var_names">All variables in '.var_names'</option>
+                        <option value="var_names" selected="true">All variables in '.var_names'</option>
                         <option value="obs">All fields in '.obs'</option>
                         <option value="custom">Subset of variables in 'adata.var_names' or fields of '.obs'</option>
                     </param>
@@ -584,56 +632,56 @@
                     <when value="obs"/>
                     <when value="custom">
                         <param argument="keys" type="text" value="" label="Keys for accessing variables" help="One or a list of comma-separated index or key from '.var_names' or fields of '.obs'">
-                            <expand macro="sanitize_query" />
+                            <expand macro="sanitize_query"/>
                         </param>
                     </when>
                 </conditional>
                 <expand macro="param_groupby"/>
                 <expand macro="param_log"/>
-                <expand macro="param_use_raw"/>
+                <expand macro="param_use_raw" falsevalue="None"/>
                 <section name="violin_plot" title="Violin plot attributes">
                     <expand macro="conditional_stripplot"/>
                     <conditional name="multi_panel">
                         <param argument="multi_panel" type="select" label="Display keys in multiple panels" help="Also when 'groupby is not provided">
+                            <option value="None" selected="true">No</option>                            
                             <option value="True">Yes</option>
-                            <option value="False" selected="true">No</option>
                         </param>
+                        <when value="None"/>
                         <when value="True">
-                            <param argument="width" type="integer" min="0" value="" optional="true" label="Width of the figure" help=""/>
-                            <param argument="height" type="integer" min="0" value="" optional="true" label="Height of the figure" help=""/>
+                            <!-- <param argument="width" type="integer" min="0" value="" optional="true" label="Width of the figure"/>
+                            <param argument="height" type="integer" min="0" value="" optional="true" label="Height of the figure"/> -->
                         </when>
-                        <when value="False"/>
                     </conditional>
-                    <expand macro="param_scale"/>
                 </section>
                 <param argument="xlabel" type="text" value="" optional="true" label="Label of the x axis" help="Defaults to 'groupby' if 'rotation' is 'None',    otherwise, no label is shown.">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
-                <param argument="rotation" type="float" value="" optional="true" label="Rotation of xtick labels" help=""/>
-                <expand macro="seaborn_violinplot"/>
+                <param argument="rotation" type="float" value="" optional="true" label="Rotation of xtick labels"/>
+                <expand macro="params_seaborn_violinplot"/>
+                <expand macro="param_layer"/>
             </when>
             <when value="pl.stacked_violin">
                 <expand macro="params_inputs"/>
-                <expand macro="gene_symbols"/>
+                <expand macro="param_gene_symbols"/>
                 <expand macro="params_plots"/>
-                <expand macro="pl_stacked_violin"/>
+                <expand macro="params_pl_stacked_violin"/>
             </when>
             <when value="pl.matrixplot">
                 <expand macro="params_inputs"/>
-                <expand macro="gene_symbols"/>
+                <expand macro="param_gene_symbols"/>
                 <expand macro="params_plots"/>
-                <expand macro="pl_matrixplot"/>
+                <expand macro="params_pl_matrixplot"/>
             </when>
             <when value="pl.clustermap">
                 <param argument="obs_keys" type="text" value="" optional="true" label="Categorical annotation to plot with a different color map" help="Currently, only a single key is supported.">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
                 <expand macro="param_use_raw"/>
                 <section name="seaborn_clustermap" title="Parameters for seaborn.clustermap">
                     <param name="method" type="select" label="Linkage method to use for calculating clusters" help="More details in https://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.linkage.html">
+                        <option value="average" selected="true">average: UPGMA algorithm</option>
                         <option value="single">single: Nearest Point Algorithm</option>
                         <option value="complete">complete: Farthest Point Algorithm or Voor Hees Algorithm</option>
-                        <option value="average">average: UPGMA algorithm</option>
                         <option value="weighted">weighted: WPGMA algorithm</option>
                         <option value="centroid">centroid: UPGMC algorithm</option>
                         <option value="median">median: WPGMC algorithm</option>
@@ -643,53 +691,71 @@
                         <expand macro="distance_metric_options"/>
                     </param>
                     <param name="z_score" type="select" label="Calculate z-scores for the rows or the columns?" help="Z scores are: z = (x - mean)/std, so values in each row (column) will get the mean of the row (column) subtracted, then divided by the standard deviation of the row (column). This ensures that each row (column) has mean of 0 and variance of 1.">
-                        <option value="None">No Z-score</option>
+                        <option value="None" selected="true">No Z-score</option>
                         <option value="0">Rows</option>
                         <option value="1">Columns</option>
                     </param>
                     <param name="standard_scale" type="select" label="Standardize a dimension?" help="It means for each row or column, subtract the minimum and divide each by its maximum.">
-                        <option value="None">No standardization</option>
+                        <option value="None" selected="true">No standardization</option>
                         <option value="0">Rows</option>
                         <option value="1">Columns</option>
                     </param>
-                    <param name="col_cluster" type="boolean" truevalue="True" falsevalue="False" checked="false" label="Cluster the columns?" help=""/>
-                    <param name="row_cluster" type="boolean" truevalue="True" falsevalue="False" checked="false" label="Cluster the rows?" help=""/>
+                    <param name="col_cluster" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Cluster the columns?"/>
+                    <param name="row_cluster" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Cluster the rows?"/>
+                </section>
+            </when>
+            <when value="pl.highest_expr_genes">
+                <param argument="n_top" type="integer" min="0" value="30" label="Number of top genes"/>
+                <expand macro="param_gene_symbols"/>
+                <expand macro="param_log"/>
+                <section name="setseaborn_boxplot" title="Plot settings" expanded="false">
+                    <param argument="color" type="text" value="" optional="true" label="Color for all of the elements, or seed for a gradient palette">
+                        <expand macro="sanitize_query"/>
+                    </param>
+                    <param argument="palette" type="select" optional="true" label="Colors to use for the different levels of the hue variable" help="See https://seaborn.pydata.org/tutorial/color_palettes.html for more details.">
+                        <expand macro="seaborn_color_palette_options"/>
+                    </param>
+                    <param argument="saturation" type="float" value="0.75" label="Proportion of the original saturation to draw colors at" help="Large patches often look better with slightly desaturated colors, but set this to 1 if you want the plot colors to perfectly match the input color spec."/>
                 </section>
             </when>
             <when value="pl.highly_variable_genes">
                 <expand macro="param_log"/>
                 <param argument="highly_variable_genes" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Plot highly variable genes or gene subset?"/>
             </when>
-            <when value="pl.highest_expr_genes">
-                <param argument="n_top" type="integer" min="0" value="30" label="Number of top genes" help=""/>
-                <param argument="gene_symbols" type="text" optional="true" label="Key for field in '.var' that stores gene symbols" help="Fill it if you do not want to use '.var_names'.">
-                    <expand macro="sanitize_query" />
+            <when value="pl.scrublet_score_distribution">
+                <param name="scale_hist_obs" type="select" label="Set y axis scale transformation in matplotlib for the plot of observed transcriptomes">
+                    <option value="log" selected="true">log</option>
+                    <option value="linear">linear</option>
+                    <option value="symlog">symlog</option>
+                    <option value="logit">logit</option>
                 </param>
-                <section name="setseaborn_boxplot" title="Plot settings" expanded="false">
-                    <param argument="color" type="text" value="" optional="true" label="Color for all of the elements, or seed for a gradient palette" help="">
-                        <expand macro="sanitize_query" />
-                    </param>
-                    <param argument="palette" type="select" optional="true" label="Colors to use for the different levels of the hue variable" help="See https://seaborn.pydata.org/tutorial/color_palettes.html for more details.">
-                        <expand macro="seaborn_color_palette_options"/>
-                    </param>
-                    <param argument="saturation" type="float" value="1" label="Proportion of the original saturation to draw colors at" help="Large patches often look better with slightly desaturated colors, but set this to 1 if you want the plot colors to perfectly match the input color spec."/>
-                </section>
+                <param name="scale_hist_sim" type="select" label="Set y axis scale transformation in matplotlib for the plot of simulated doublets">
+                    <option value="linear" selected="true">linear</option>
+                    <option value="log">log</option>
+                    <option value="symlog">symlog</option>
+                    <option value="logit">logit</option>
+                </param>
+                <expand macro="pl_figsize"/>
             </when>
             <when value="pl.pca">
                 <expand macro="param_color"/>
                 <expand macro="param_use_raw"/>
                 <expand macro="param_sort_order"/>
                 <expand macro="param_groups"/>
-                <expand macro="pl_attribute_section"/>
+                <expand macro="params_pl_attribute_section"/>
+                <expand macro="params_scatter_outine"/>
                 <expand macro="section_matplotlib_pyplot_scatter"/>
+                <expand macro="param_layer"/>
             </when>
             <when value="pl.pca_loadings">
                 <param argument="components" type="text" value="1,2,3" label="List of comma-separated components" help="1, 2, 3 means first, second and third principal components">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
+                <param argument="include_lowest" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Show the variables with both highest and lowest loadings"/>
+                <param argument="n_points" type="integer" value="" optional="true" label="Number of variables to plot for each component"/>
             </when>
             <when value="pl.pca_variance_ratio">
-                <param argument="n_pcs" type="integer" min="0" value="30" label="Number of PCs to show" help=""/>
+                <param argument="n_pcs" type="integer" min="0" value="30" label="Number of PCs to show"/>
                 <expand macro="param_log"/>
             </when>
             <when value="pl.pca_overview">
@@ -697,18 +763,22 @@
                 <expand macro="param_use_raw"/>
                 <expand macro="param_sort_order"/>
                 <expand macro="param_groups"/>
-                <expand macro="pl_attribute_section"/>
+                <expand macro="params_pl_attribute_section"/>
+                <expand macro="params_scatter_outine"/>
                 <expand macro="section_matplotlib_pyplot_scatter"/>
             </when>
             <when value="pl.tsne">
                 <expand macro="param_color"/>
+                <expand macro="param_gene_symbols"/>
                 <expand macro="param_use_raw"/>
                 <expand macro="pl_edges"/>
                 <expand macro="param_arrows"/>
                 <expand macro="param_sort_order"/>
                 <expand macro="param_groups"/>
-                <expand macro="pl_attribute_section"/>
+                <expand macro="params_pl_attribute_section"/>
+                <expand macro="params_scatter_outine"/>
                 <expand macro="section_matplotlib_pyplot_scatter"/>
+                <expand macro="param_layer"/>
             </when>
             <when value="pl.umap">
                 <expand macro="param_color"/>
@@ -717,44 +787,50 @@
                 <expand macro="param_arrows"/>
                 <expand macro="param_sort_order"/>
                 <expand macro="param_groups"/>
-                <expand macro="pl_attribute_section"/>
+                <expand macro="params_pl_attribute_section"/>
+                <expand macro="params_scatter_outine"/>
                 <expand macro="section_matplotlib_pyplot_scatter"/>
+                <expand macro="param_layer"/>
             </when>
             <when value="pl.diffmap">
                 <expand macro="param_color"/>
                 <expand macro="param_use_raw"/>
                 <expand macro="param_sort_order"/>
                 <expand macro="param_groups"/>
-                <expand macro="pl_attribute_section"/>
+                <expand macro="params_pl_attribute_section"/>
+                <expand macro="params_scatter_outine"/>
                 <expand macro="section_matplotlib_pyplot_scatter"/>
+                <expand macro="param_layer"/>
             </when>
             <when value="pl.draw_graph">
                 <expand macro="param_color"/>
-                <expand macro="gene_symbols"/>
+                <expand macro="param_gene_symbols"/>
                 <expand macro="param_use_raw"/>
-                <param argument="layout" type="select" optional="false" label="Plotting layout" help="">
+                <param argument="layout" type="select" optional="false" label="Plotting layout">
                     <expand macro="options_layout"/>
                 </param>
                 <expand macro="pl_edges"/>
                 <expand macro="param_arrows"/>
                 <expand macro="param_sort_order"/>
                 <expand macro="param_groups"/>
-                <expand macro="pl_attribute_section"/>
+                <expand macro="params_pl_attribute_section"/>
+                <expand macro="params_scatter_outine"/>
                 <expand macro="section_matplotlib_pyplot_scatter"/>
+                <expand macro="param_layer"/>
             </when>
             <when value="pl.embedding_density">
                 <param argument="basis" type="text" value="umap" label="The embedding over which the density was calculated." help="This embedded representation should be found in adata.obsm['X_[basis]']">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
                 <param argument="key" type="text" optional="true" value="" label="Name of the .obs covariate that contains the density estimates" help="Alternatively, pass _groupby_.">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
                 <param argument="groupby" type="text" optional="true" value="" label="Name of the condition used in tl.embedding_density" help="Alternatively, pass _key_.">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
-                <param argument="group" type="text" optional="all" value="" label="The category in the categorical observation annotation to be plotted" 
+                <param argument="group" type="text" optional="all" value="" label="The category in the categorical observation annotation to be plotted"
                     help="For example, 'G1' in the cell cycle 'phase' covariate. If multiple categories want to be plotted use a comma separated list">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
                 <expand macro="param_color_map"/>
                 <param argument="bg_dotsize" type="integer" min="0" value="80" label="Dot size for background data points not in the group"/>
@@ -763,43 +839,58 @@
                 <expand macro="param_wspace"/>
                 <expand macro="param_hspace"/>
             </when>
-            <when value="pl.dpt_groups_pseudotime">
+            <!-- This function is commented out because it is not compatible with pandas version. If the issue is not resolved in the next update, this should be removed. -->
+            <!-- <when value="pl.dpt_groups_pseudotime">
                 <expand macro="param_color_map"/>
-            </when>
+            </when> -->
             <when value="pl.dpt_timeseries">
                 <conditional name="heatmap">
-                    <param argument="as_heatmap" type="select" label="Plot the timeseries as heatmap?" help="">
-                        <option value="True">Yes</option>
+                    <param argument="as_heatmap" type="select" label="Plot the timeseries as heatmap?">
+                        <option value="True" selected="true">Yes</option>
                         <option value="False">No</option>
                     </param>
                     <when value="True">
                         <expand macro="param_color_map"/>
                     </when>
-                    <when value="False" />
+                    <when value="False"/>
                 </conditional>
             </when>
             <when value="pl.paga">
-                <expand macro="inputs_paga"/>
+                <expand macro="params_pl_paga"/>
             </when>
             <when value="pl.paga_compare">
-                <expand macro="inputs_paga"/>
+                <expand macro="params_pl_paga"/>
+                <section name="plot" title="Plot attributes">
+                    <expand macro="param_pl_components"/>
+                    <expand macro="param_projection"/>
+                    <expand macro="param_legend_loc">
+                        <option value="on data">on data</option>
+                        <option value="right margin">right margin</option>
+                    </expand>
+                    <expand macro="param_legend_fontsize"/>
+                    <expand macro="param_legend_fontweight"/>
+                    <expand macro="param_color_map"/>
+                    <expand macro="param_palette"/>
+                    <expand macro="param_frameon"/>
+                    <expand macro="param_size"/>
+                    <expand macro="param_title"/>
+                </section>
             </when>
             <when value="pl.paga_path">
-                <param argument="nodes" type="text" value="" label="A path through nodes of the abstracted graph"
-                       help="Each node is represented by its indice (within .categories) for the groups that have been used to run PAGA. Comma-separated">
-                    <expand macro="sanitize_query" />
+                <param argument="nodes" type="text" value="" label="A path through nodes of the abstracted graph" help="Each node is represented by its indice (within .categories) for the groups that have been used to run PAGA. Comma-separated">
+                    <expand macro="sanitize_query"/>
                 </param>
                 <param argument="keys" type="text" value="" label="Keys for accessing variables" help="One or a list of comma-separated index or key from '.var_names' or fields of '.obs'">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
                 <expand macro="param_use_raw"/>
-                <param argument="annotations" type="text" value="" optional="true" label="Key to plot" help="Keys for obs, comma-separated">
-                    <expand macro="sanitize_query" />
+                <param argument="annotations" type="text" value="dpt_pseudotime" optional="true" label="Key to plot" help="Keys for obs, comma-separated">
+                    <expand macro="sanitize_query"/>
                 </param>
                 <expand macro="param_color_map"/>
                 <param argument="n_avg" type="integer" value="1" label="Number of data points to include in computation of running average"/>
                 <param argument="groups_key" type="text" value="" optional="true" label="Key of the grouping used to run PAGA" help="If not set, use uns/page/groups">
-                    <expand macro="sanitize_query" />
+                    <expand macro="sanitize_query"/>
                 </param>
                 <param argument="as_heatmap" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Plot the timeseries as heatmap?" help="If not, annotations have no effect."/>
                 <param argument="show_node_names" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Plot the node names on the nodes bar?"/>
@@ -809,8 +900,8 @@
             </when>
             <when value="pl.rank_genes_groups">
                 <expand macro="param_groups"/>
-                <expand macro="param_n_genes"/>
-                <expand macro="gene_symbols"/>
+                <expand macro="param_n_genes" value="20"/>
+                <expand macro="param_gene_symbols"/>
                 <param argument="fontsize" type="integer" min="0" value="8" label="Font size for gene names"/>
                 <expand macro="param_ncols"/>
                 <param argument="sharey" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Should the y-axis of each panels be shared?" help="If not, each panel has its own y-axis range"/>
@@ -818,51 +909,62 @@
             <when value="pl.rank_genes_groups_violin">
                 <expand macro="param_groups"/>
                 <conditional name="genes">
-                    <param argument="select" type="select" label="Which genes to plot?" help="">
-                        <option value="n_genes">A number of genes</option>
+                    <param argument="select" type="select" label="Which genes to plot?">
+                        <option value="n_genes" selected="true">A number of genes</option>
                         <option value="gene_names">A custom list of genes</option>
                     </param>
                     <when value="n_genes">
-                        <expand macro="param_n_genes"/>
+                        <expand macro="param_n_genes" value="20"/>
                     </when>
                     <when value="gene_names">
                         <param argument="gene_names" type="text" value="" label="List of genes to plot" help="A list of comma-separated names">
-                            <expand macro="sanitize_query" />
+                            <expand macro="sanitize_query"/>
                         </param>
                     </when>
                 </conditional>
-                <expand macro="gene_symbols"/>
-                <expand macro="param_use_raw"/>
+                <expand macro="param_gene_symbols"/>
+                <expand macro="param_use_raw" falsevalue="None"/>
                 <param argument="split" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Split the violins?"/>
                 <section name="violin_plot" title="Violin plot attributes">
                     <expand macro="conditional_stripplot"/>
-                    <expand macro="param_scale"/>
+                    <param argument="density_norm" type="select" label="Method used to scale the width of each violin">
+                        <option value="width" selected="true">width: each violin will have the same width</option>
+                        <option value="area">area: each violin will have the same area</option>
+                        <option value="count">count: the width of the violins will be scaled by the number of observations in that bin</option>
+                    </param>
                 </section>
             </when>
-            <when value="pl.rank_genes_groups_dotplot">
-                <expand macro="params_inputs"/>
+            <when value="pl.rank_genes_groups_stacked_violin">
                 <expand macro="pl_rank_genes_groups_ext"/>
                 <expand macro="params_plots"/>
-                <expand macro="gene_symbols"/>
-                <expand macro="pl_dotplot"/>
+                <expand macro="param_gene_symbols"/>
+                <expand macro="params_pl_stacked_violin"/>
             </when>
             <when value="pl.rank_genes_groups_heatmap">
                 <expand macro="pl_rank_genes_groups_ext"/>
                 <expand macro="params_plots"/>
-                <expand macro="gene_symbols"/>
-                <expand macro="pl_heatmap"/>
+                <expand macro="param_gene_symbols"/>
+                <expand macro="params_pl_heatmap"/>
+            </when>
+            <when value="pl.rank_genes_groups_dotplot">
+                <expand macro="pl_rank_genes_groups_ext"/>
+                <expand macro="params_plots"/>
+                <expand macro="param_gene_symbols"/>
+                <expand macro="params_pl_dotplot"/>
+                <expand macro="values_to_plot"/>
             </when>
             <when value="pl.rank_genes_groups_matrixplot">
                 <expand macro="pl_rank_genes_groups_ext"/>
                 <expand macro="params_plots"/>
-                <expand macro="gene_symbols"/>
-                <expand macro="pl_matrixplot"/>
+                <expand macro="param_gene_symbols"/>
+                <expand macro="params_pl_matrixplot"/>
+                <expand macro="values_to_plot"/>
             </when>
-            <when value="pl.rank_genes_groups_stacked_violin">
+            <when value="pl.rank_genes_groups_tracksplot">
                 <expand macro="pl_rank_genes_groups_ext"/>
                 <expand macro="params_plots"/>
-                <expand macro="gene_symbols"/>
-                <expand macro="pl_stacked_violin"/>
+                <expand macro="param_gene_symbols"/>
+                <expand macro="params_pl_heatmap"/>
             </when>
         </conditional>
         <expand macro="inputs_common_advanced"/>
@@ -894,9 +996,9 @@
         </data>
     </outputs>
     <tests>
+        <!-- test 1 -->
         <test expect_num_outputs="2">
-            <!-- test 1: pl.scatter -->
-            <param name="adata" value="pbmc68k_reduced.h5ad" />
+            <param name="adata" value="pbmc68k_reduced.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.scatter"/>
@@ -906,30 +1008,25 @@
                     <param name="color" value="HES4"/>
                 </conditional>
                 <param name="use_raw" value="True"/>
-                <param name="sort_order" value="True"/>
                 <section name="plot">
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
                     <param name="legend_fontsize" value="1"/>
                     <param name="legend_fontweight" value="normal"/>
                     <param name="color_map" value="inferno"/>
                     <param name="palette" value="inferno"/>
-                    <param name="frameon" value="True"/>
                     <param name="size" value="1"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.scatter"/>
-                    <has_text_matching expression="basis='umap'" />
+                    <has_text_matching expression="basis='umap'"/>
                     <has_text_matching expression="color=\['HES4'\]"/>
                     <has_text_matching expression="use_raw=True"/>
                     <has_text_matching expression="sort_order=True"/>
                     <has_text_matching expression="projection='2d'"/>
-                    <has_text_matching expression="legend_loc='right margin'"/>
                     <has_text_matching expression="legend_fontsize=1"/>
                     <has_text_matching expression="legend_fontweight='normal'"/>
                     <has_text_matching expression="color_map='inferno'"/>
@@ -937,11 +1034,12 @@
                     <has_text_matching expression="size=1.0"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.scatter.umap.pbmc68k_reduced.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.scatter.umap.pbmc68k_reduced.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 2 -->
         <test expect_num_outputs="2">
-            <!-- test 2: pl.scatter -->
-            <param name="adata" value="krumsiek11.h5ad" />
+            <param name="adata" value="krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.scatter"/>
@@ -949,81 +1047,102 @@
                     <param name="type" value="xy"/>
                     <param name="x" value="EKLF"/>
                     <param name="y" value="Cebpa"/>
-                    <conditional name="layers">
-                        <param name="use_layers" value="false"/>
-                    </conditional>
                 </conditional>
-                <param name="use_raw" value="False"/>
-                <param name="sort_order" value="True"/>
                 <section name="plot">
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
                     <param name="legend_fontsize" value="1"/>
                     <param name="legend_fontweight" value="normal"/>
                     <param name="palette" value="bwr"/>
-                    <param name="frameon" value="False"/>
                     <param name="size" value="1"/>
                     <param name="title" value="A title"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.scatter"/>
-                    <has_text_matching expression="x_field='EKLF'" />
+                    <has_text_matching expression="x_field='EKLF'"/>
                     <has_text_matching expression="y_field='Cebpa'"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="sort_order=True"/>
                     <has_text_matching expression="projection='2d'"/>
-                    <has_text_matching expression="legend_loc='right margin'"/>
                     <has_text_matching expression="legend_fontsize=1"/>
                     <has_text_matching expression="legend_fontweight='normal'"/>
-                    <has_text_matching expression="frameon=False"/>
+                    <has_text_matching expression="frameon=True"/>
                     <has_text_matching expression="size=1.0"/>
                     <has_text_matching expression="title='A title'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.scatter.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.scatter.krumsiek11.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 3 -->
         <test expect_num_outputs="2">
-            <!-- test 3: pl.heatmap -->
-            <param name="adata" value="krumsiek11.h5ad" />
+            <param name="adata" value="pbmc68k_reduced.h5ad"/>
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.scatter"/>
+                <conditional name="type">
+                    <param name="type" value="xy"/>
+                    <param name="x" value="n_genes"/>
+                    <param name="y" value="n_counts"/>
+                </conditional>
+                <section name="plot">
+                    <param name="legend_fontsize" value="1"/>
+                    <param name="legend_fontweight" value="normal"/>
+                    <param name="palette" value="bwr"/>
+                    <param name="size" value="1"/>
+                    <param name="title" value="A title"/>
+                </section>
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true"/>
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.scatter"/>
+                    <has_text_matching expression="use_raw=None"/>
+                    <has_text_matching expression="sort_order=True"/>
+                    <has_text_matching expression="projection='2d'"/>
+                    <has_text_matching expression="legend_fontsize=1"/>
+                    <has_text_matching expression="legend_fontweight='normal'"/>
+                    <has_text_matching expression="frameon=True"/>
+                    <has_text_matching expression="size=1.0"/>
+                    <has_text_matching expression="title='A title'"/>
+                </assert_contents>
+            </output>
+            <output name="out_png" file="pl.scatter.pbmc68k_reduced.png" ftype="png" compare="image_diff"/>
+        </test>
+
+        <!-- test 4 -->
+        <test expect_num_outputs="2">
+            <param name="adata" value="krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.heatmap"/>
-                <conditional name="var_names">
-                    <param name="type" value="all"/>
-                </conditional>
                 <param name="groupby" value="cell_type"/>
-                <param name="num_categories" value="7"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
                 <conditional name="figsize">
-                    <param name="test" value="yes"/>
-                    <param name="width" value="10" />
+                    <param name="custom" value="yes"/>
+                    <param name="width" value="10"/>
                     <param name="height" value="3"/>
                 </conditional>
                 <param name="dendrogram" value="True"/>
                 <param name="swap_axes" value="True"/>
-                <param name="show_gene_labels" value="False"/>
                 <section name="matplotlib_pyplot_imshow">
                     <param name="cmap" value="YlGnBu"/>
-                    <param name="interpolation" value="None"/>
-                    <param name="origin" value="upper"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.heatmap"/>
-                    <has_text_matching expression="var_names=adata.var_names" />
+                    <has_text_matching expression="var_names=adata.var_names"/>
                     <has_text_matching expression="groupby='cell_type'"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="num_categories=7"/>
                     <has_text_matching expression="dendrogram=True"/>
                     <has_text_matching expression="figsize=\(10, 3\)"/>
@@ -1033,61 +1152,58 @@
                     <has_text_matching expression="origin='upper'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.heatmap.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.heatmap.krumsiek11.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 5 -->
         <test expect_num_outputs="2">
-          <!-- test 4: pl.heatmap with symbols -->
-          <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad" />
-          <param name="format" value="png"/>
-          <conditional name="method">
-              <param name="method" value="pl.heatmap"/>
-              <conditional name="var_names">
-                  <param name="type" value="custom"/>
-                  <param name="var_names" value="Fog1,EKLF,SCL"/>
-              </conditional>
-              <param name="groupby" value="cell_type"/>
-              <param name="gene_symbols" value="symbol"/>
-              <param name="num_categories" value="7"/>
-              <param name="log" value="False"/>
-              <param name="use_raw" value="False"/>
-              <conditional name="figsize">
-                  <param name="test" value="yes"/>
-                  <param name="width" value="10" />
-                  <param name="height" value="3"/>
-              </conditional>
-              <param name="dendrogram" value="True"/>
-              <param name="swap_axes" value="True"/>
-              <param name="show_gene_labels" value="True"/>
-              <section name="matplotlib_pyplot_imshow">
-                  <param name="cmap" value="YlGnBu"/>
-                  <param name="interpolation" value="None"/>
-                  <param name="origin" value="upper"/>
-              </section>
-          </conditional>
-          <section name="advanced_common">
-              <param name="show_log" value="true" />
-          </section>
-          <output name="hidden_output">
-              <assert_contents>
-                  <has_text_matching expression="sc.pl.heatmap"/>
-                  <has_text_matching expression="gene_symbols='symbol'"/>
-                  <has_text_matching expression="var_names=\['Fog1', 'EKLF', 'SCL'\]" />
-                  <has_text_matching expression="groupby='cell_type'"/>
-                  <has_text_matching expression="log=False"/>
-                  <has_text_matching expression="use_raw=False"/>
-                  <has_text_matching expression="num_categories=7"/>
-                  <has_text_matching expression="dendrogram=True"/>
-                  <has_text_matching expression="figsize=\(10, 3\)"/>
-                  <has_text_matching expression="swap_axes=True"/>
-                  <has_text_matching expression="show_gene_labels=True"/>
-                  <has_text_matching expression="cmap='YlGnBu'"/>
-                  <has_text_matching expression="origin='upper'"/>
-              </assert_contents>
-          </output>
+            <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad"/>
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.heatmap"/>
+                <conditional name="var_names">
+                    <param name="type" value="custom"/>
+                    <param name="var_names" value="Fog1,EKLF,SCL"/>
+                </conditional>
+                <param name="gene_symbols" value="symbol"/>
+                <param name="groupby" value="cell_type"/>
+                <conditional name="figsize">
+                    <param name="custom" value="yes"/>
+                    <param name="width" value="10"/>
+                    <param name="height" value="3"/>
+                </conditional>
+                <param name="dendrogram" value="True"/>
+                <param name="swap_axes" value="True"/>
+                <param name="show_gene_labels" value="True"/>
+                <section name="matplotlib_pyplot_imshow">
+                    <param name="cmap" value="YlGnBu"/>
+                </section>
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true"/>
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.heatmap"/>
+                    <has_text_matching expression="gene_symbols='symbol'"/>
+                    <has_text_matching expression="var_names=\['Fog1', 'EKLF', 'SCL'\]"/>
+                    <has_text_matching expression="groupby='cell_type'"/>
+                    <has_text_matching expression="log=False"/>
+                    <has_text_matching expression="use_raw=None"/>
+                    <has_text_matching expression="num_categories=7"/>
+                    <has_text_matching expression="dendrogram=True"/>
+                    <has_text_matching expression="figsize=\(10, 3\)"/>
+                    <has_text_matching expression="swap_axes=True"/>
+                    <has_text_matching expression="show_gene_labels=True"/>
+                    <has_text_matching expression="cmap='YlGnBu'"/>
+                    <has_text_matching expression="origin='upper'"/>
+                </assert_contents>
+            </output>
         </test>
+        
+        <!-- test 6 -->
         <test expect_num_outputs="2">
-            <!-- test 5: pl.dotplot -->
-            <param name="adata" value="pbmc68k_reduced.h5ad" />
+            <param name="adata" value="pbmc68k_reduced.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.dotplot"/>
@@ -1096,9 +1212,6 @@
                     <param name="var_names" value="CD79A, MS4A1, CD8A, CD8B, LYZ, GNLY, NKG7, RP3-467N11.1, FCGR3A, FCER1A, CST3, POU2AF1, LINC00402"/>
                 </conditional>
                 <param name="groupby" value="louvain"/>
-                <param name="num_categories" value="7"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
                 <param name="dendrogram" value="True"/>
                 <repeat name="var_group_positions">
                     <param name="start" value="0"/>
@@ -1110,27 +1223,22 @@
                     <param name="end" value="12"/>
                     <param name="label" value="dendritic"/>
                 </repeat>
-                <conditional name="figsize">
-                    <param name="test" value="no"/>
-                </conditional>
                 <param name="color_map" value="hot"/>
                 <param name="dot_max" value="0.7"/>
                 <param name="dot_min" value="0.1"/>
                 <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0" />
-                    <param name="edgecolors" value="face"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.dotplot"/>
-                    <has_text_matching expression="var_names=\['CD79A', 'MS4A1', 'CD8A', 'CD8B', 'LYZ', 'GNLY', 'NKG7', 'RP3-467N11.1', 'FCGR3A', 'FCER1A', 'CST3', 'POU2AF1', 'LINC00402'\]" />
+                    <has_text_matching expression="var_names=\['CD79A', 'MS4A1', 'CD8A', 'CD8B', 'LYZ', 'GNLY', 'NKG7', 'RP3-467N11.1', 'FCGR3A', 'FCER1A', 'CST3', 'POU2AF1', 'LINC00402'\]"/>
                     <has_text_matching expression="groupby='louvain'"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="num_categories=7"/>
                     <has_text_matching expression="dendrogram=True"/>
                     <has_text_matching expression="var_group_positions=\[\(0, 1\), \(11, 12\)\]"/>
@@ -1138,309 +1246,271 @@
                     <has_text_matching expression="color_map='hot'"/>
                     <has_text_matching expression="dot_max=0.7"/>
                     <has_text_matching expression="dot_min=0.1"/>
-                    <has_text_matching expression="lw=0.0"/>
-                    <has_text_matching expression="ec='face'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.dotplot.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.dotplot.krumsiek11.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 7 -->
         <test expect_num_outputs="2">
-          <!-- test 6: pl.dotplot with symbols -->
-          <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad" />
-          <param name="format" value="png"/>
-          <conditional name="method">
-              <param name="method" value="pl.dotplot"/>
-              <conditional name="var_names">
-                  <param name="type" value="custom"/>
-                  <param name="var_names" value="Fog1,EKLF,SCL"/>
-              </conditional>
-              <param name="groupby" value="cell_type"/>
-              <param name="gene_symbols" value="symbol"/>
-              <param name="num_categories" value="7"/>
-              <param name="log" value="False"/>
-              <param name="use_raw" value="False"/>
-              <param name="dendrogram" value="True"/>
-              <section name="matplotlib_pyplot_imshow">
-                  <param name="cmap" value="YlGnBu"/>
-                  <param name="interpolation" value="None"/>
-                  <param name="origin" value="upper"/>
-              </section>
-          </conditional>
-          <section name="advanced_common">
-              <param name="show_log" value="true" />
-          </section>
-          <output name="hidden_output">
-              <assert_contents>
-                  <has_text_matching expression="sc.pl.dotplot"/>
-                  <has_text_matching expression="gene_symbols='symbol'"/>
-                  <has_text_matching expression="var_names=\['Fog1', 'EKLF', 'SCL'\]" />
-                  <has_text_matching expression="groupby='cell_type'"/>
-                  <has_text_matching expression="log=False"/>
-                  <has_text_matching expression="use_raw=False"/>
-                  <has_text_matching expression="num_categories=7"/>
-                  <has_text_matching expression="dendrogram=True"/>
-              </assert_contents>
-          </output>
+            <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad"/>
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.dotplot"/>
+                <conditional name="var_names">
+                    <param name="type" value="custom"/>
+                    <param name="var_names" value="Fog1,EKLF,SCL"/>
+                </conditional>
+                <param name="gene_symbols" value="symbol"/>
+                <param name="groupby" value="cell_type"/>              
+                <param name="dendrogram" value="True"/>
+                <section name="matplotlib_pyplot_imshow">
+                    <param name="cmap" value="YlGnBu"/>
+                </section>
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true"/>
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.dotplot"/>
+                    <has_text_matching expression="gene_symbols='symbol'"/>
+                    <has_text_matching expression="var_names=\['Fog1', 'EKLF', 'SCL'\]"/>
+                    <has_text_matching expression="groupby='cell_type'"/>
+                    <has_text_matching expression="log=False"/>
+                    <has_text_matching expression="use_raw=None"/>
+                    <has_text_matching expression="num_categories=7"/>
+                    <has_text_matching expression="dendrogram=True"/>
+                </assert_contents>
+            </output>
         </test>
+        
+        <!-- test 8 -->
         <test expect_num_outputs="2">
-            <!-- test 7: pl.violin -->
-            <param name="adata" value="pbmc68k_reduced.h5ad" />
+            <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad"/>
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.tracksplot"/>
+                <param name="gene_symbols" value="symbol"/>
+                <param name="groupby" value="cell_type"/>              
+                <param name="dendrogram" value="True"/>
+                <section name="matplotlib_pyplot_imshow">
+                    <param name="cmap" value="YlGnBu"/>
+                </section>
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true"/>
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.tracksplot"/>
+                    <has_text_matching expression="gene_symbols='symbol'"/>
+                    <has_text_matching expression="groupby='cell_type'"/>
+                    <has_text_matching expression="log=False"/>
+                    <has_text_matching expression="use_raw=None"/>
+                    <has_text_matching expression="num_categories=7"/>
+                    <has_text_matching expression="dendrogram=True"/>
+                </assert_contents>
+            </output>
+        </test>
+
+        <!-- test 9 -->
+        <test expect_num_outputs="2">
+            <param name="adata" value="pbmc68k_reduced.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.violin"/>
                 <conditional name="key_variables">
                     <param name="type" value="custom"/>
-                    <param name="keys" value="n_genes, percent_mito, n_counts" />
-                </conditional>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
+                    <param name="keys" value="n_genes, percent_mito, n_counts"/>
+                </conditional>              
                 <section name="violin_plot">
-                    <conditional name="stripplot">
-                        <param name="stripplot" value="True"/>
-                        <param name="jitter" value="True"/>
-                        <param name="size" value="1"/>
-                    </conditional>
                     <conditional name="multi_panel">
                         <param name="multi_panel" value="True"/>
-                        <param name="width" value="20"/>
-                        <param name="height" value="20"/>
                     </conditional>
-                    <param name="scale" value="width"/>
                 </section>
                 <section name="seaborn_violinplot">
-                    <param name="bw" value="scott"/>
                     <param name="linewidth" value="0"/>
-                    <param name="color" value="AliceBlue"/>
-                    <param name="palette" value="viridis"/>
-                    <param name="saturation" value="0.75"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.violin"/>
-                    <has_text_matching expression="keys=\['n_genes', 'percent_mito', 'n_counts'\]" />
+                    <has_text_matching expression="keys=\['n_genes', 'percent_mito', 'n_counts'\]"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="stripplot=True"/>
                     <has_text_matching expression="jitter=True"/>
                     <has_text_matching expression="size=1"/>
                     <has_text_matching expression="multi_panel=True"/>
-                    <has_text_matching expression="figsize=\(20, 20\)"/>
-                    <has_text_matching expression="scale='width'"/>
-                    <has_text_matching expression="bw='scott'"/>
-                    <has_text_matching expression="scale='width'"/>
-                    <has_text_matching expression="linewidth=0.0"/>
-                    <has_text_matching expression="color='AliceBlue'"/>
+                    <has_text_matching expression="bw_method='scott'"/>
                     <has_text_matching expression="saturation=0.75"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.violin.pbmc68k_reduced_custom.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.violin.pbmc68k_reduced_custom.png" ftype="png" compare="image_diff" eps="0.4"/>
         </test>
+        
+        <!-- test 10 -->
         <test expect_num_outputs="2">
-            <!-- test 8: pl.stacked_violin -->
-            <param name="adata" value="krumsiek11.h5ad" />
+            <param name="adata" value="krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.stacked_violin"/>
-                <conditional name="var_names">
-                    <param name="type" value="all"/>
-                </conditional>
                 <param name="groupby" value="cell_type"/>
-                <param name="num_categories" value="7"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
                 <param name="dendrogram" value="True"/>
-                <conditional name="figsize">
-                    <param name="test" value="no"/>
-                </conditional>
                 <param name="swap_axes" value="True"/>
                 <section name="violin_plot">
-                    <conditional name="stripplot">
-                        <param name="stripplot" value="True"/>
-                        <param name="jitter" value="True"/>
-                        <param name="size" value="1"/>
-                    </conditional>
-                    <param name="scale" value="width"/>
+                    <param name="density_norm" value="width"/>
                 </section>
-                <param name="row_palette" value="muted"/>
-                <param name="standard_scale" value="None"/>
                 <section name="seaborn_violinplot">
-                    <param name="bw" value="scott"/>
                     <param name="linewidth" value="0"/>
-                    <param name="color" value="AliceBlue"/>
-                    <param name="saturation" value="0.75"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.stacked_violin"/>
                     <has_text_matching expression="groupby='cell_type'"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="num_categories=7"/>
                     <has_text_matching expression="dendrogram=True"/>
                     <has_text_matching expression="swap_axes=True"/>
                     <has_text_matching expression="stripplot=True"/>
                     <has_text_matching expression="jitter=True"/>
                     <has_text_matching expression="size=1"/>
-                    <has_text_matching expression="scale='width'"/>
-                    <has_text_matching expression="bw='scott'"/>
-                    <has_text_matching expression="scale='width'"/>
-                    <has_text_matching expression="linewidth=0.0"/>
-                    <has_text_matching expression="color='AliceBlue'"/>
+                    <has_text_matching expression="density_norm='width'"/>
+                    <has_text_matching expression="bw_method='scott'"/>
                     <has_text_matching expression="saturation=0.75"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.stacked_violin.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.stacked_violin.krumsiek11.png" ftype="png" compare="image_diff" eps="1.1"/>
         </test>
+        
+        <!-- test 11 -->
         <test expect_num_outputs="2">
-          <!-- test 9: pl.stacked_violin with symbols -->
-          <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad" />
-          <param name="format" value="png"/>
-          <conditional name="method">
-              <param name="method" value="pl.stacked_violin"/>
-              <conditional name="var_names">
-                  <param name="type" value="custom"/>
-                  <param name="var_names" value="Fog1,EKLF,SCL"/>
-              </conditional>
-              <param name="groupby" value="cell_type"/>
-              <param name="gene_symbols" value="symbol"/>
-              <param name="num_categories" value="7"/>
-              <param name="log" value="False"/>
-              <param name="use_raw" value="False"/>
-              <param name="dendrogram" value="True"/>
-              <param name="swap_axes" value="True"/>
-          </conditional>
-          <section name="advanced_common">
-              <param name="show_log" value="true" />
-          </section>
-          <output name="hidden_output">
-              <assert_contents>
-                  <has_text_matching expression="sc.pl.stacked_violin"/>
-                  <has_text_matching expression="gene_symbols='symbol'"/>
-                  <has_text_matching expression="var_names=\['Fog1', 'EKLF', 'SCL'\]" />
-                  <has_text_matching expression="groupby='cell_type'"/>
-                  <has_text_matching expression="log=False"/>
-                  <has_text_matching expression="use_raw=False"/>
-                  <has_text_matching expression="num_categories=7"/>
-                  <has_text_matching expression="dendrogram=True"/>
-                  <has_text_matching expression="swap_axes=True"/>
-              </assert_contents>
-          </output>
+            <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad"/>
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.stacked_violin"/>
+                <conditional name="var_names">
+                    <param name="type" value="custom"/>
+                    <param name="var_names" value="Fog1,EKLF,SCL"/>
+                </conditional>
+                <param name="gene_symbols" value="symbol"/>
+                <param name="groupby" value="cell_type"/>
+                <param name="dendrogram" value="True"/>
+                <param name="swap_axes" value="True"/>
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true"/>
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.stacked_violin"/>
+                    <has_text_matching expression="gene_symbols='symbol'"/>
+                    <has_text_matching expression="var_names=\['Fog1', 'EKLF', 'SCL'\]"/>
+                    <has_text_matching expression="groupby='cell_type'"/>
+                    <has_text_matching expression="log=False"/>
+                    <has_text_matching expression="use_raw=None"/>
+                    <has_text_matching expression="num_categories=7"/>
+                    <has_text_matching expression="dendrogram=True"/>
+                    <has_text_matching expression="swap_axes=True"/>
+                </assert_contents>
+            </output>
+            <output name="out_png" file="pl.stacked_violin_pp.filter_genes_dispersion.krumsiek11-seurat.png" compare="image_diff" eps="0.6"/>
         </test>
+        
+        <!-- test 12 -->
         <test expect_num_outputs="2">
-            <!-- test 10: pl.matrixplot -->
-            <param name="adata" value="krumsiek11.h5ad" />
+            <param name="adata" value="krumsiek11.h5ad"/>
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.matrixplot"/>
+                <param name="groupby" value="cell_type"/>
+                <param name="dendrogram" value="True"/>
+                <param name="swap_axes" value="True"/>
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true"/>
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.matrixplot"/>
+                    <has_text_matching expression="var_names=adata.var_names"/>
+                    <has_text_matching expression="groupby='cell_type'"/>
+                    <has_text_matching expression="log=False"/>
+                    <has_text_matching expression="use_raw=None"/>
+                    <has_text_matching expression="num_categories=7"/>
+                    <has_text_matching expression="dendrogram=True"/>
+                    <has_text_matching expression="swap_axes=True"/>
+                    <has_text_matching expression="snap=False"/>
+                </assert_contents>
+            </output>
+            <output name="out_png" file="pl.matrixplot.krumsiek11.png" ftype="png" compare="image_diff"/>
+        </test>
+        
+        <!-- test 13 -->
+        <test expect_num_outputs="2">
+            <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.matrixplot"/>
                 <conditional name="var_names">
-                    <param name="type" value="all"/>
+                    <param name="type" value="custom"/>
+                    <param name="var_names" value="Fog1,EKLF,SCL"/>
                 </conditional>
+                <param name="gene_symbols" value="symbol"/>
                 <param name="groupby" value="cell_type"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
-                <param name="num_categories" value="7"/>
-                <param name="dendrogram" value="True"/>
                 <conditional name="figsize">
-                    <param name="test" value="no"/>
+                    <param name="custom" value="yes"/>
+                    <param name="width" value="10"/>
+                    <param name="height" value="3"/>
                 </conditional>
-                <param name="swap_axes" value="True"/>
-                <section name="matplotlib_pyplot_pcolor">
-                    <param name="cmap" value="viridis"/>
-                    <param name="edgecolors" value="face"/>
-                    <param name="snap" value="False"/>
-                </section>
+                <param name="dendrogram" value="True"/>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.matrixplot"/>
-                    <has_text_matching expression="var_names=adata.var_names" />
+                    <has_text_matching expression="gene_symbols='symbol'"/>
+                    <has_text_matching expression="var_names=\['Fog1', 'EKLF', 'SCL'\]"/>
                     <has_text_matching expression="groupby='cell_type'"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="num_categories=7"/>
                     <has_text_matching expression="dendrogram=True"/>
-                    <has_text_matching expression="swap_axes=True"/>
-                    <has_text_matching expression="cmap='viridis'"/>
-                    <has_text_matching expression="ec='face'"/>
-                    <has_text_matching expression="snap=False"/>
+                    <has_text_matching expression="swap_axes=False"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.matrixplot.krumsiek11.png" ftype="png" compare="sim_size"/>
         </test>
+        
+        <!-- test 14 -->
         <test expect_num_outputs="2">
-          <!-- test 11: pl.matrixplot with symbols -->
-          <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad" />
-          <param name="format" value="png"/>
-          <conditional name="method">
-              <param name="method" value="pl.matrixplot"/>
-              <conditional name="var_names">
-                  <param name="type" value="custom"/>
-                  <param name="var_names" value="Fog1,EKLF,SCL"/>
-              </conditional>
-              <param name="groupby" value="cell_type"/>
-              <param name="gene_symbols" value="symbol"/>
-              <param name="num_categories" value="7"/>
-              <param name="log" value="False"/>
-              <param name="use_raw" value="False"/>
-              <conditional name="figsize">
-                  <param name="test" value="yes"/>
-                  <param name="width" value="10" />
-                  <param name="height" value="3"/>
-              </conditional>
-              <param name="dendrogram" value="True"/>
-              <param name="swap_axes" value="False"/>
-          </conditional>
-          <section name="advanced_common">
-              <param name="show_log" value="true" />
-          </section>
-          <output name="hidden_output">
-              <assert_contents>
-                  <has_text_matching expression="sc.pl.matrixplot"/>
-                  <has_text_matching expression="gene_symbols='symbol'"/>
-                  <has_text_matching expression="var_names=\['Fog1', 'EKLF', 'SCL'\]" />
-                  <has_text_matching expression="groupby='cell_type'"/>
-                  <has_text_matching expression="log=False"/>
-                  <has_text_matching expression="use_raw=False"/>
-                  <has_text_matching expression="num_categories=7"/>
-                  <has_text_matching expression="dendrogram=True"/>
-                  <has_text_matching expression="swap_axes=False"/>
-              </assert_contents>
-          </output>
-        </test>
-        <test expect_num_outputs="2">
-            <!-- test 12: pl.clustermap -->
-            <param name="adata" value="krumsiek11.h5ad" />
+            <param name="adata" value="krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.clustermap"/>
-                <param name="use_raw" value="False"/>
                 <section name="seaborn_clustermap">
                     <param name="method" value="single"/>
-                    <param name="metric" value="euclidean"/>
-                    <param name="z_score" value="None"/>
-                    <param name="standard_scale" value="None"/>
                     <param name="col_cluster" value="False"/>
                     <param name="row_cluster" value="False"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.clustermap"/>
-                    <has_text_matching expression="adata=adata" />
+                    <has_text_matching expression="adata=adata"/>
                     <has_text_matching expression="use_raw=False"/>
                     <has_text_matching expression="method='single'"/>
                     <has_text_matching expression="metric='euclidean'"/>
@@ -1448,66 +1518,85 @@
                     <has_text_matching expression="row_cluster=False"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.clustermap.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.clustermap.krumsiek11.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 15 -->
         <test expect_num_outputs="2">
-            <!-- test 13: pl.highest_expr_genes -->
-            <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad" />
+            <param name="adata" value="pp.filter_genes_dispersion.krumsiek11-seurat.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.highest_expr_genes"/>
-                <param name="n_top" value="30"/>
-                <param name="gene_symbols" value="means"/>
+                <param name="gene_symbols" value="symbol"/>
                 <section name="setseaborn_boxplot">
                     <param name="color" value="blue"/>
                     <param name="saturation" value="0.5"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.highest_expr_genes"/>
-                    <has_text_matching expression="n_top=30" />
-                    <has_text_matching expression="gene_symbols='means'" />
+                    <has_text_matching expression="n_top=30"/>
+                    <has_text_matching expression="gene_symbols='symbol'"/>
                     <has_text_matching expression="color='blue'"/>
                     <has_text_matching expression="saturation=0.5"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.highest_expr_genes.filter_genes_dispersion.krumsiek11-seurat.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.highest_expr_genes.filter_genes_dispersion.krumsiek11-seurat.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 16 -->
         <test expect_num_outputs="2">
-            <!-- test 14: pl.highly_variable_genes -->
-            <param name="adata" value="pp.highly_variable_genes.seurat.blobs.h5ad" />
+            <param name="adata" value="pp.highly_variable_genes.seurat.blobs.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
-                <param name="method" value="pl.highly_variable_genes"/>
-                <param name="log" value="false"/>
-                <param name="highly_variable_genes" value="true"/>
+                <param name="method" value="pl.highly_variable_genes"/>                
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.highly_variable_genes"/>
-                    <has_text_matching expression="adata_or_result=adata" />
-                    <has_text_matching expression="log=False" />
+                    <has_text_matching expression="adata_or_result=adata"/>
+                    <has_text_matching expression="log=False"/>
                     <has_text_matching expression="highly_variable_genes=True"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.highly_variable_genes.seurat.blobs.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.highly_variable_genes.seurat.blobs.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 17 -->
         <test expect_num_outputs="2">
-            <!-- test 15: pl.pca -->
-            <param name="adata" value="pbmc68k_reduced.h5ad" />
+            <param name="adata" value="pp.scrublet.krumsiek11.h5ad"/>
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.scrublet_score_distribution"/>                
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true"/>
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.scrublet_score_distribution"/>
+                    <has_text_matching expression="adata=adata"/>
+                    <has_text_matching expression="scale_hist_obs='log'"/>
+                    <has_text_matching expression="scale_hist_sim='linear'"/>
+                </assert_contents>
+            </output>
+            <output name="out_png" file="pl.scrublet_score_distribution.png" ftype="png" compare="image_diff"/>
+        </test>
+
+        <!-- test 18 -->
+        <test expect_num_outputs="2">
+            <param name="adata" value="pbmc68k_reduced.h5ad"/>
             <param name="format" value="pdf"/>
             <conditional name="method">
                 <param name="method" value="pl.pca"/>
                 <param name="color" value="CD3D,CD79A"/>
-                <param name="use_raw" value="False"/>
-                <param name="sort_order" value="True"/>
                 <section name="plot">
                     <repeat name="components">
                         <param name="axis1" value="1"/>
@@ -1517,112 +1606,90 @@
                         <param name="axis1" value="1"/>
                         <param name="axis2" value="3"/>
                     </repeat>
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
                     <param name="legend_fontsize" value="1"/>
                     <param name="legend_fontweight" value="normal"/>
                     <param name="size" value="1"/>
-                    <param name="palette" value="viridis"/>
-                    <param name="frameon" value="True"/>
                     <param name="ncols" value="2"/>
-                    <param name="wspace" value="0.1"/>
-                    <param name="hspace" value="0.25"/>
-                </section>
-                <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0"/>
-                    <param name="edgecolors" value="face"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.pca"/>
-                    <has_text_matching expression="save='.pdf'" />
-                    <has_text_matching expression="color=\['CD3D', 'CD79A'\]" />
-                    <has_text_matching expression="use_raw=False" />
-                    <has_text_matching expression="sort_order=True" />
-                    <has_text_matching expression="components=\['1,2', '1,3'\]" />
-                    <has_text_matching expression="projection='2d'" />
-                    <has_text_matching expression="legend_loc='right margin'" />
-                    <has_text_matching expression="legend_fontsize=1" />
-                    <has_text_matching expression="legend_fontweight='normal'" />
-                    <has_text_matching expression="size=1.0" />
-                    <has_text_matching expression="palette='viridis'" />
-                    <has_text_matching expression="frameon=True" />
-                    <has_text_matching expression="ncols=2" />
-                    <has_text_matching expression="wspace=0.1" />
-                    <has_text_matching expression="hspace=0.25" />
-                    <has_text_matching expression="lw=0.0" />
-                    <has_text_matching expression="ec='face'" />
+                    <has_text_matching expression="save='.pdf'"/>
+                    <has_text_matching expression="color=\['CD3D', 'CD79A'\]"/>
+                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="sort_order=True"/>
+                    <has_text_matching expression="components=\['1,2', '1,3'\]"/>
+                    <has_text_matching expression="projection='2d'"/>
+                    <has_text_matching expression="legend_loc='right margin'"/>
+                    <has_text_matching expression="legend_fontsize=1"/>
+                    <has_text_matching expression="legend_fontweight='normal'"/>
+                    <has_text_matching expression="size=1.0"/>
+                    <has_text_matching expression="frameon=True"/>
+                    <has_text_matching expression="ncols=2"/>
+                    <has_text_matching expression="wspace=0.1"/>
+                    <has_text_matching expression="hspace=0.25"/>
                 </assert_contents>
             </output>
             <output name="out_pdf" file="pl.pca.pbmc68k_reduced.CD3D_CD79A_components_2d.pdf" ftype="pdf" compare="sim_size"/>
         </test>
+        
+        <!-- test 19 -->
         <test expect_num_outputs="2">
-            <!-- test 16: pl.pca_loadings -->
-            <param name="adata" value="pp.pca.krumsiek11.h5ad" />
+            <param name="adata" value="pp.pca.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.pca_loadings"/>
                 <param name="components" value="1,2,3"/>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.pca_loadings"/>
-                    <has_text_matching expression="components=\[1, 2, 3\]" />
+                    <has_text_matching expression="components=\[1, 2, 3\]"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.pca_loadings.pp.pca.krumsiek11.png" compare="sim_size"/>
+            <output name="out_png" file="pl.pca_loadings.pp.pca.krumsiek11.png" compare="image_diff"/>
         </test>
+        
+        <!-- test 20 -->
         <test expect_num_outputs="2">
-            <!-- test 17: pl.pca_variance_ratio -->
-            <param name="adata" value="pp.pca.krumsiek11.h5ad" />
+            <param name="adata" value="pp.pca.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.pca_variance_ratio"/>
-                <param name="n_pcs" value="5"/>
-                <param name="log" value="False"/>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.pca_variance_ratio"/>
-                    <has_text_matching expression="n_pcs=5" />
-                    <has_text_matching expression="log=False" />
+                    <has_text_matching expression="log=False"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.pca_variance_ratio.pp.pca.krumsiek11.png" compare="sim_size"/>
+            <output name="out_png" file="pl.pca_variance_ratio.pp.pca.krumsiek11.png" compare="image_diff"/>
         </test>
+        
+        <!-- test 21 -->
         <test expect_num_outputs="2">
-            <!-- test 18: pl.pca_overview -->
-            <param name="adata" value="pp.pca.krumsiek11.h5ad" />
+            <param name="adata" value="pp.pca.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.pca_overview"/>
-                <param name="use_raw" value="False"/>
-                <param name="sort_order" value="True"/>
                 <section name="plot">
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
                     <param name="legend_fontsize" value="1"/>
                     <param name="legend_fontweight" value="normal"/>
                     <param name="size" value="1"/>
-                    <param name="palette" value="viridis"/>
-                    <param name="frameon" value="True"/>
-                    <param name="ncols" value="4"/>
-                    <param name="wspace" value="0.1"/>
-                    <param name="hspace" value="0.25"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
@@ -1634,46 +1701,29 @@
                     <has_text_matching expression="legend_fontsize=1"/>
                     <has_text_matching expression="legend_fontweight='normal'"/>
                     <has_text_matching expression="size=1.0"/>
-                    <has_text_matching expression="palette='viridis'"/>
                     <has_text_matching expression="frameon=True"/>
                     <has_text_matching expression="ncols=4"/>
                     <has_text_matching expression="wspace=0.1"/>
                     <has_text_matching expression="hspace=0.25"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.pca_overview.pp.pca.krumsiek11.png" compare="sim_size"/>
+            <output name="out_png" file="pl.pca_overview.pp.pca.krumsiek11.png" compare="image_diff"/>
         </test>
+        
+        <!-- test 22 -->
         <test expect_num_outputs="2">
-            <!-- test 19: pl.tsne -->
-            <param name="adata" value="tl.tsne.krumsiek11.h5ad" />
+            <param name="adata" value="tl.tsne.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.tsne"/>
-                <param name="use_raw" value="False"/>
-                <conditional name="edges">
-                    <param name="edges" value="False" />
-                </conditional>
-                <param name="arrows" value="False" />
-                <param name="sort_order" value="True"/>
                 <section name="plot">
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
                     <param name="legend_fontsize" value="1"/>
                     <param name="legend_fontweight" value="normal"/>
-                    <param name="palette" value="viridis"/>
-                    <param name="frameon" value="True"/>
                     <param name="size" value="1"/>
-                    <param name="ncols" value="4"/>
-                    <param name="wspace" value="0.1"/>
-                    <param name="hspace" value="0.25"/>
-                </section>
-                <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0"/>
-                    <param name="edgecolors" value="face"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
@@ -1687,50 +1737,33 @@
                     <has_text_matching expression="legend_fontsize=1"/>
                     <has_text_matching expression="legend_fontweight='normal'"/>
                     <has_text_matching expression="size=1.0"/>
-                    <has_text_matching expression="palette='viridis'"/>
                     <has_text_matching expression="frameon=True"/>
                     <has_text_matching expression="ncols=4"/>
                     <has_text_matching expression="wspace=0.1"/>
                     <has_text_matching expression="hspace=0.25"/>
-                    <has_text_matching expression="lw=0.0"/>
-                    <has_text_matching expression="ec='face'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.tsne.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.tsne.krumsiek11.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 23 -->
         <test expect_num_outputs="2">
-            <!-- test 20: pl.umap -->
-            <param name="adata" value="tl.umap.neighbors_umap_euclidean.recipe_weinreb17.paul15_subsample.h5ad" />
+            <param name="adata" value="tl.umap.neighbors_umap_euclidean.recipe_weinreb17.paul15_subsample.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.umap"/>
                 <param name="color" value="paul15_clusters"/>
-                <param name="use_raw" value="False"/>
                 <conditional name="edges">
-                    <param name="edges" value="True" />
-                    <param name="edges_width" value="0.1" />
-                    <param name="edges_color" value="AliceBlue"/>
+                    <param name="edges" value="True"/>
                 </conditional>
-                <param name="arrows" value="False" />
                 <section name="plot">
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
                     <param name="legend_fontsize" value="1"/>
                     <param name="legend_fontweight" value="normal"/>
                     <param name="size" value="1"/>
-                    <param name="palette" value="viridis"/>
-                    <param name="frameon" value="True"/>
-                    <param name="ncols" value="4"/>
-                    <param name="wspace" value="0.1"/>
-                    <param name="hspace" value="0.25"/>
-                </section>
-                <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0"/>
-                    <param name="edgecolors" value="face"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
@@ -1739,7 +1772,6 @@
                     <has_text_matching expression="use_raw=False"/>
                     <has_text_matching expression="edges=True"/>
                     <has_text_matching expression="edges_width=0.1"/>
-                    <has_text_matching expression="edges_color='AliceBlue'"/>
                     <has_text_matching expression="arrows=False"/>
                     <has_text_matching expression="sort_order=True"/>
                     <has_text_matching expression="projection='2d'"/>
@@ -1747,45 +1779,31 @@
                     <has_text_matching expression="legend_fontsize=1"/>
                     <has_text_matching expression="legend_fontweight='normal'"/>
                     <has_text_matching expression="size=1.0"/>
-                    <has_text_matching expression="palette='viridis'"/>
                     <has_text_matching expression="frameon=True"/>
                     <has_text_matching expression="ncols=4"/>
                     <has_text_matching expression="wspace=0.1"/>
                     <has_text_matching expression="hspace=0.25"/>
-                    <has_text_matching expression="lw=0.0"/>
-                    <has_text_matching expression="ec='face'"/>
+                    
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.umap.neighbors_umap_euclidean.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.umap.neighbors_umap_euclidean.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 24 -->
         <test expect_num_outputs="2">
-            <!-- test 21: pl.diffmap -->
-            <param name="adata" value="tl.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.h5ad" />
+            <param name="adata" value="tl.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.diffmap"/>
                 <param name="color" value="paul15_clusters"/>
-                <param name="use_raw" value="False"/>
-                <param name="sort_order" value="True"/>
                 <section name="plot">
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
                     <param name="legend_fontsize" value="1"/>
                     <param name="legend_fontweight" value="normal"/>
                     <param name="size" value="1"/>
-                    <param name="palette" value="viridis"/>
-                    <param name="frameon" value="True"/>
-                    <param name="ncols" value="4"/>
-                    <param name="wspace" value="0.1"/>
-                    <param name="hspace" value="0.25"/>
-                </section>
-                <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0"/>
-                    <param name="edgecolors" value="face"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
@@ -1798,49 +1816,34 @@
                     <has_text_matching expression="legend_fontsize=1"/>
                     <has_text_matching expression="legend_fontweight='normal'"/>
                     <has_text_matching expression="size=1.0"/>
-                    <has_text_matching expression="palette='viridis'"/>
                     <has_text_matching expression="frameon=True"/>
                     <has_text_matching expression="ncols=4"/>
                     <has_text_matching expression="wspace=0.1"/>
                     <has_text_matching expression="hspace=0.25"/>
-                    <has_text_matching expression="lw=0.0"/>
-                    <has_text_matching expression="ec='face'"/>
+                    
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 25 -->
         <test expect_num_outputs="2">
-            <!-- test 22: pl.draw_graph -->
-            <param name="adata" value="tl.draw_graph.pp.neighbors_umap_euclidean.recipe_weinreb17.paul15_subsample.h5ad" />
+            <param name="adata" value="tl.draw_graph.pp.neighbors_umap_euclidean.recipe_weinreb17.paul15_subsample.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.draw_graph"/>
-                <param name="use_raw" value="false"/>
                 <param name="layout" value="fr"/>
                 <conditional name="edges">
                     <param name="edges" value="True"/>
-                    <param name="edges_width" value="0.1"/>
                     <param name="edges_color" value="Crimson"/>
                 </conditional>
-                <param name="arrows" value="false"/>
                 <param name="sort_order" value="false"/>
                 <section name="plot">
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
                     <param name="legend_fontweight" value="normal"/>
-                    <param name="palette" value="viridis"/>
-                    <param name="frameon" value="True"/>
-                    <param name="ncols" value="4"/>
-                    <param name="wspace" value="0.1"/>
-                    <param name="hspace" value="0.25"/>
-                </section>
-                <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0"/>
-                    <param name="edgecolors" value="face"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
@@ -1854,48 +1857,47 @@
                     <has_text_matching expression="projection='2d'"/>
                     <has_text_matching expression="legend_loc='right margin'"/>
                     <has_text_matching expression="legend_fontweight='normal'"/>
-                    <has_text_matching expression="palette='viridis'"/>
                     <has_text_matching expression="frameon=True"/>
                     <has_text_matching expression="ncols=4"/>
                     <has_text_matching expression="wspace=0.1"/>
                     <has_text_matching expression="hspace=0.25"/>
-                    <has_text_matching expression="lw=0.0"/>
-                    <has_text_matching expression="ec='face"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.draw_graph.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.draw_graph.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 26 -->
         <test expect_num_outputs="2">
-            <!-- test 23: pl.embedding_density -->
-            <param name="adata" value="tl.embedding_density.umap.pbmc68k_reduced.h5ad" />
+            <param name="adata" value="tl.embedding_density.umap.pbmc68k_reduced.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.embedding_density"/>
-                <param name="basis" value="umap"/>
                 <param name="key" value="umap_density_bulk_labels"/>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.embedding_density"/>
-                    <has_text_matching expression="basis='umap'" />
+                    <has_text_matching expression="basis='umap'"/>
                     <has_text_matching expression="key='umap_density_bulk_labels'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.embedding_density.pbmc68k_reduced.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.embedding_density.pbmc68k_reduced.png" ftype="png" compare="image_diff"/>
         </test>
-        <test expect_num_outputs="2">
-            <!-- test 24: pl.dpt_groups_pseudotime -->
-            <param name="adata" value="tl.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.h5ad" />
+        
+        <!-- This function is commented out because it is not compatible with pandas version. If the issue is not resolved in the next update, this should be removed. -->
+        <!-- test 27 -->
+        <!-- <test expect_num_outputs="2">
+            <param name="adata" value="tl.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.dpt_groups_pseudotime"/>
-                <param name="color_map" value="viridis"/>
+                
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
@@ -1903,94 +1905,73 @@
                     <has_text_matching expression="color_map='viridis'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.dpt_groups_pseudotime.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="sim_size"/>
-        </test>
+            <output name="out_png" file="pl.dpt_groups_pseudotime.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="image_diff"/>
+        </test> -->
+        
+        <!-- test 28 -->
         <test expect_num_outputs="2">
-            <!-- test 25: pl.dpt_timeseries -->
-            <param name="adata" value="tl.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.h5ad" />
+            <param name="adata" value="tl.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.dpt_timeseries"/>
-                <conditional name="heatmap">
-                    <param name="as_heatmap" value="True"/>
-                    <param name="color_map" value="viridis"/>
-                </conditional>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.dpt_timeseries"/>
-                    <has_text_matching expression="color_map='viridis'"/>
                     <has_text_matching expression="as_heatmap=True"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.dpt_timeseries.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.dpt_timeseries.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 29 -->
         <test expect_num_outputs="1">
-             <!-- test 26: pl.paga -->
-            <param name="adata" value="tl.paga.neighbors.paul15_gauss_braycurtis.h5ad" />
+            <param name="adata" value="tl.paga.neighbors.paul15_gauss_braycurtis.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.paga"/>
                 <param name="threshold" value="0.01"/>
                 <param name="color" value="louvain"/>
                 <param name="layout" value="fr"/>
-                <param name="random_state" value="0"/>
-                <param name="solid_edges" value="connectivities"/>
-                <param name="single_component" value="False"/>
                 <param name="fontsize" value="1"/>
-                <param name="node_size_scale" value="1.0"/>
-                <param name="node_size_power" value="0.5"/>
                 <param name="edge_width_scale" value="5"/>
-                <param name="arrowsize" value="30"/>
-                <param name="normalize_to_color" value="False"/>
-                <param name="cmap" value="viridis"/>
-                <param name="frameon" value="True"/>
             </conditional>
-            <output name="out_png" file="pl.paga.paul15_gauss_braycurtis.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.paga.paul15_gauss_braycurtis.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 30 -->
         <test expect_num_outputs="1">
-             <!-- test 27: pl.paga_compare -->
-            <param name="adata" value="tl.paga.neighbors.paul15_gauss_braycurtis.h5ad" />
+            <param name="adata" value="tl.paga.neighbors.paul15_gauss_braycurtis.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.paga_compare"/>
                 <param name="threshold" value="0.01"/>
                 <param name="color" value="louvain"/>
                 <param name="layout" value="fr"/>
-                <param name="random_state" value="0"/>
-                <param name="solid_edges" value="connectivities"/>
-                <param name="single_component" value="False"/>
                 <param name="fontsize" value="1"/>
-                <param name="node_size_scale" value="1.0"/>
-                <param name="node_size_power" value="0.5"/>
                 <param name="edge_width_scale" value="5"/>
-                <param name="arrowsize" value="30"/>
-                <param name="normalize_to_color" value="False"/>
-                <param name="cmap" value="viridis"/>
-                <param name="frameon" value="True"/>
             </conditional>
-            <output name="out_png" file="pl.paga_compare.paul15_gauss_braycurtis.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.paga_compare.paul15_gauss_braycurtis.png" ftype="png" compare="image_diff"/>
         </test>
-        <!--<test expect_num_outputs="2">
+
+        <!-- test 31 -->
+        <!-- <test expect_num_outputs="2">
              test pl.paga_path
-        </test>-->
+        </test> -->
+        
+        <!-- test 32 -->
         <test expect_num_outputs="2">
-            <!-- test 28: pl.rank_genes_groups -->
-            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad" />
+            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.rank_genes_groups"/>
-                <param name="gene_symbols" value="symbol"/>
-                <param name="n_genes" value="10"/>
-                <param name="fontsize" value="8"/>
-                <param name="ncols" value="4"/>
-                <param name="sharey" value="true"/>
+                <param name="n_genes" value="10"/>                
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
@@ -1998,14 +1979,14 @@
                     <has_text_matching expression="n_genes=10"/>
                     <has_text_matching expression="fontsize=8"/>
                     <has_text_matching expression="ncols=4"/>
-                    <has_text_matching expression="sharey=True"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.rank_genes_groups.rank_genes_groups.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.rank_genes_groups.rank_genes_groups.krumsiek11.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 33 -->
         <test expect_num_outputs="2">
-            <!-- test 29: pl.rank_genes_groups_violin -->
-            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad" />
+            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.rank_genes_groups_violin"/>
@@ -2013,253 +1994,145 @@
                     <param name="select" value="n_genes"/>
                     <param name="n_genes" value="10"/>
                 </conditional>
-                <param name="use_raw" value="false"/>
-                <param name="split" value="true"/>
-                <section name="violin_plot">
-                    <conditional name="stripplot">
-                        <param name="stripplot" value="True"/>
-                        <param name="jitter" value="True"/>
-                        <param name="size" value="1"/>
-                    </conditional>
-                    <param name="scale" value="width"/>
-                </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.rank_genes_groups_violin"/>
                     <has_text_matching expression="n_genes=10"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="split=True"/>
                     <has_text_matching expression="strip=True"/>
                     <has_text_matching expression="jitter=True"/>
                     <has_text_matching expression="size=1"/>
-                    <has_text_matching expression="scale='width'"/>
+                    <has_text_matching expression="density_norm='width'"/>
                 </assert_contents>
             </output>
             <output_collection name="collection_png">
-                <element name="cell_type_Ery" file="pl.rank_genes_groups_violin.Ery.png" ftype="png" compare="sim_size"/>
-                <element name="cell_type_Mk" file="pl.rank_genes_groups_violin.Mk.png" ftype="png" compare="sim_size"/>
-                <element name="cell_type_Mo" file="pl.rank_genes_groups_violin.Mo.png" ftype="png" compare="sim_size"/>
-                <element name="cell_type_Neu" file="pl.rank_genes_groups_violin.Neu.png" ftype="png" compare="sim_size"/>
-                <element name="cell_type_progenitor" file="pl.rank_genes_groups_violin.progenitor.png" ftype="png" compare="sim_size"/>
+                <element name="cell_type_Ery" file="pl.rank_genes_groups_violin.Ery.png" ftype="png" compare="image_diff" eps="3.5"/>
+                <element name="cell_type_Mk" file="pl.rank_genes_groups_violin.Mk.png" ftype="png" compare="image_diff" eps="3.5"/>
+                <element name="cell_type_Mo" file="pl.rank_genes_groups_violin.Mo.png" ftype="png" compare="image_diff" eps="3.5"/>
+                <element name="cell_type_Neu" file="pl.rank_genes_groups_violin.Neu.png" ftype="png" compare="image_diff" eps="3.5"/>
+                <element name="cell_type_progenitor" file="pl.rank_genes_groups_violin.progenitor.png" ftype="png" compare="image_diff" eps="3.5"/>
             </output_collection>
         </test>
+        
+        <!-- test 34 -->
         <test expect_num_outputs="2">
-            <!-- test 30: pl.rank_genes_groups_dotplot -->
-            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad" />
+            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
-                <param name="method" value="pl.rank_genes_groups_dotplot"/>
-                <param name="gene_symbols" value="symbol"/>
+                <param name="method" value="pl.rank_genes_groups_stacked_violin"/>
                 <param name="n_genes" value="10"/>
-                <conditional name="var_names">
-                  <param name="type" value="all"/>
-                </conditional>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
-                <param name="dendrogram" value="False"/>
-                <param name="color_map" value="viridis"/>
-                <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0" />
-                    <param name="edgecolors" value="face"/>
+                <param name="dendrogram" value="True"/>
+                <param name="swap_axes" value="True"/>
+                <section name="violin_plot">
+                    <conditional name="stripplot">
+                        <param name="size" value="1"/>
+                    </conditional>
+                    <param name="density_norm" value="width"/>
                 </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
-                    <has_text_matching expression="sc.pl.rank_genes_groups_dotplot"/>
+                    <has_text_matching expression="sc.pl.rank_genes_groups_stacked_violin"/>
                     <has_text_matching expression="n_genes=10"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
-                    <has_text_matching expression="dendrogram=False"/>
-                    <has_text_matching expression="color_map='viridis'"/>
-                    <has_text_matching expression="lw=0.0"/>
-                    <has_text_matching expression="ec='face'"/>
+                    <has_text_matching expression="use_raw=None"/>
+                    <has_text_matching expression="dendrogram=True"/>
+                    <has_text_matching expression="swap_axes=True"/>
+                    <has_text_matching expression="stripplot=True"/>
+                    <has_text_matching expression="jitter=True"/>
+                    <has_text_matching expression="size=1"/>
+                    <has_text_matching expression="density_norm='width'"/>
+                    <has_text_matching expression="bw_method='scott'"/>
+                    <has_text_matching expression="saturation=0.75"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.rank_genes_groups_dotplot.rank_genes_groups.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.rank_genes_groups_stacked_violin.rank_genes_groups.krumsiek11.png" ftype="png" compare="image_diff" eps="1.5"/>
         </test>
+        
+        <!-- test 35 -->
         <test expect_num_outputs="2">
-            <!-- test 31: pl.rank_genes_groups_heatmap -->
-            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad" />
+            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.rank_genes_groups_heatmap"/>
-                <param name="gene_symbols" value="symbol"/>
                 <param name="n_genes" value="10"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
-                <param name="dendrogram" value="False"/>
-                <param name="swap_axes" value="False"/>
-                <param name="show_gene_labels" value="False"/>
-                <section name="matplotlib_pyplot_imshow">
-                    <param name="cmap" value="viridis"/>
-                    <param name="interpolation" value="None"/>
-                    <param name="origin" value="upper"/>
-                </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.rank_genes_groups_heatmap"/>
                     <has_text_matching expression="n_genes=10"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="dendrogram=False"/>
                     <has_text_matching expression="swap_axes=False"/>
                     <has_text_matching expression="show_gene_labels=False"/>
-                    <has_text_matching expression="cmap='viridis'"/>
                     <has_text_matching expression="origin='upper'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.rank_genes_groups_heatmap.rank_genes_groups.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.rank_genes_groups_heatmap.rank_genes_groups.krumsiek11.png" ftype="png" compare="image_diff"/>
         </test>
+
+        <!-- test 36 -->
         <test expect_num_outputs="2">
-            <!-- test 32: pl.rank_genes_groups_matrixplot -->
-            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad" />
+            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad"/>
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.rank_genes_groups_dotplot"/>
+                <param name="n_genes" value="10"/>
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true"/>
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.rank_genes_groups_dotplot"/>
+                    <has_text_matching expression="n_genes=10"/>
+                    <has_text_matching expression="log=False"/>
+                    <has_text_matching expression="use_raw=None"/>
+                    <has_text_matching expression="dendrogram=False"/>
+                </assert_contents>
+            </output>
+            <output name="out_png" file="pl.rank_genes_groups_dotplot.rank_genes_groups.krumsiek11.png" ftype="png" compare="image_diff"/>
+        </test>
+        
+        <!-- test 37 -->
+        <test expect_num_outputs="2">
+            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad"/>
             <param name="format" value="png"/>
             <conditional name="method">
                 <param name="method" value="pl.rank_genes_groups_matrixplot"/>
-                <param name="gene_symbols" value="symbol"/>
                 <param name="n_genes" value="10"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
-                <param name="dendrogram" value="False"/>
-                <param name="swap_axes" value="False"/>
-                <section name="matplotlib_pyplot_pcolor">
-                    <param name="cmap" value="viridis"/>
-                    <param name="edgecolors" value="face"/>
-                    <param name="snap" value="False"/>
-                </section>
             </conditional>
             <section name="advanced_common">
-                <param name="show_log" value="true" />
+                <param name="show_log" value="true"/>
             </section>
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.rank_genes_groups_matrixplot"/>
                     <has_text_matching expression="n_genes=10"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="dendrogram=False"/>
                     <has_text_matching expression="swap_axes=False"/>
-                    <has_text_matching expression="cmap='viridis'"/>
-                    <has_text_matching expression="ec='face'"/>
                     <has_text_matching expression="snap=False"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.rank_genes_groups_matrixplot.rank_genes_groups.krumsiek11.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.rank_genes_groups_matrixplot.rank_genes_groups.krumsiek11.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 38 pl.rank_genes_groups_dotplot with marker list-->
         <test expect_num_outputs="2">
-            <!-- test 33: pl.rank_genes_groups_stacked_violin -->
-            <param name="adata" value="tl.rank_genes_groups.krumsiek11.h5ad" />
-            <param name="format" value="png"/>
-            <conditional name="method">
-                <param name="method" value="pl.rank_genes_groups_stacked_violin"/>
-                <param name="gene_symbols" value="symbol"/>
-                <param name="n_genes" value="10"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
-                <param name="dendrogram" value="True"/>
-                <param name="swap_axes" value="True"/>
-                <section name="violin_plot">
-                    <conditional name="stripplot">
-                        <param name="stripplot" value="True"/>
-                        <param name="jitter" value="True"/>
-                        <param name="size" value="1"/>
-                    </conditional>
-                    <param name="scale" value="width"/>
-                </section>
-                <param name="row_palette" value="muted"/>
-                <param name="standard_scale" value="None"/>
-                <section name="seaborn_violinplot">
-                    <param name="bw" value="scott"/>
-                    <param name="linewidth" value="0"/>
-                    <param name="color" value="AliceBlue"/>
-                    <param name="palette" value="viridis"/>
-                    <param name="saturation" value="0.75"/>
-                </section>
-            </conditional>
-            <section name="advanced_common">
-                <param name="show_log" value="true" />
-            </section>
-            <output name="hidden_output">
-                <assert_contents>
-                    <has_text_matching expression="sc.pl.rank_genes_groups_stacked_violin"/>
-                    <has_text_matching expression="n_genes=10"/>
-                    <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
-                    <has_text_matching expression="dendrogram=True"/>
-                    <has_text_matching expression="swap_axes=True"/>
-                    <has_text_matching expression="stripplot=True"/>
-                    <has_text_matching expression="jitter=True"/>
-                    <has_text_matching expression="size=1"/>
-                    <has_text_matching expression="scale='width'"/>
-                    <has_text_matching expression="bw='scott'"/>
-                    <has_text_matching expression="scale='width'"/>
-                    <has_text_matching expression="linewidth=0.0"/>
-                    <has_text_matching expression="color='AliceBlue'"/>
-                    <has_text_matching expression="saturation=0.75"/>
-                </assert_contents>
-            </output>
-            <output name="out_png" file="pl.rank_genes_groups_stacked_violin.rank_genes_groups.krumsiek11.png" ftype="png" compare="sim_size"/>
-        </test>
-        <test expect_num_outputs="2">
-            <!-- test 34: pl.scatter log !-->
-            <param name="adata" value="pbmc68k_reduced.h5ad" />
-            <param name="format" value="png"/>
-            <conditional name="method">
-                <param name="method" value="pl.scatter"/>
-                <conditional name="type">
-                    <param name="type" value="xy"/>
-                    <param name="x" value="n_genes"/>
-                    <param name="y" value="n_counts"/>
-                    <param name="log" value="True"/>
-                    <conditional name="layers">
-                        <param name="use_layers" value="false"/>
-                    </conditional>
-                </conditional>
-                <param name="use_raw" value="False"/>
-                <param name="sort_order" value="True"/>
-                <section name="plot">
-                    <param name="projection" value="2d"/>
-                    <param name="legend_loc" value="right margin"/>
-                    <param name="legend_fontsize" value="1"/>
-                    <param name="legend_fontweight" value="normal"/>
-                    <param name="palette" value="bwr"/>
-                    <param name="frameon" value="False"/>
-                    <param name="size" value="1"/>
-                    <param name="title" value="A title"/>
-                </section>
-            </conditional>
-            <section name="advanced_common">
-                <param name="show_log" value="true" />
-            </section>
-            <output name="hidden_output">
-                <assert_contents>
-                    <has_text_matching expression="sc.pl.scatter"/>
-                    <has_text_matching expression="use_raw=False"/>
-                    <has_text_matching expression="sort_order=True"/>
-                    <has_text_matching expression="projection='2d'"/>
-                    <has_text_matching expression="legend_loc='right margin'"/>
-                    <has_text_matching expression="legend_fontsize=1"/>
-                    <has_text_matching expression="legend_fontweight='normal'"/>
-                    <has_text_matching expression="frameon=False"/>
-                    <has_text_matching expression="size=1.0"/>
-                    <has_text_matching expression="title='A title'"/>
-                </assert_contents>
-            </output>
-            <output name="out_png" file="pl.scatter.pbmc68k_reduced.png" ftype="png" compare="sim_size"/>
-        </test>
-        <test expect_num_outputs="2">
-            <!-- test 35: pl.rank_genes_groups_dotplot with marker list -->
             <param name="adata" value="cosg.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_1.h5ad" />
             <param name="format" value="png"/>
             <conditional name="method">
@@ -2268,15 +2141,6 @@
                   <param name="type" value="customfile"/>
                   <param name="var_names" value="tl.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_marker_1.tsv"/>
                 </conditional>
-                <param name="groupby" value="bulk_labels"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
-                <param name="dendrogram" value="False"/>
-                <param name="color_map" value="viridis"/>
-                <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0" />
-                    <param name="edgecolors" value="face"/>
-                </section>
             </conditional>
             <section name="advanced_common">
                 <param name="show_log" value="true" />
@@ -2284,19 +2148,16 @@
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.rank_genes_groups_dotplot"/>
-                    <has_text_matching expression="groupby='bulk_labels'"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="dendrogram=False"/>
-                    <has_text_matching expression="color_map='viridis'"/>
-                    <has_text_matching expression="lw=0.0"/>
-                    <has_text_matching expression="ec='face'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_marker_1.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_marker_1.png" ftype="png" compare="image_diff"/>
         </test>
+        
+        <!-- test 39: pl.rank_genes_groups_dotplot with marker list -->
         <test expect_num_outputs="2">
-            <!-- test 36: pl.rank_genes_groups_dotplot with marker list -->
             <param name="adata" value="cosg.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_1.h5ad" />
             <param name="format" value="png"/>
             <conditional name="method">
@@ -2305,15 +2166,6 @@
                   <param name="type" value="customfile"/>
                   <param name="var_names" value="tl.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_marker_filtered_1.tsv"/>
                 </conditional>
-                <param name="groupby" value="bulk_labels"/>
-                <param name="log" value="False"/>
-                <param name="use_raw" value="False"/>
-                <param name="dendrogram" value="False"/>
-                <param name="color_map" value="viridis"/>
-                <section name="matplotlib_pyplot_scatter">
-                    <param name="linewidths" value="0" />
-                    <param name="edgecolors" value="face"/>
-                </section>
             </conditional>
             <section name="advanced_common">
                 <param name="show_log" value="true" />
@@ -2321,16 +2173,30 @@
             <output name="hidden_output">
                 <assert_contents>
                     <has_text_matching expression="sc.pl.rank_genes_groups_dotplot"/>
-                    <has_text_matching expression="groupby='bulk_labels'"/>
                     <has_text_matching expression="log=False"/>
-                    <has_text_matching expression="use_raw=False"/>
+                    <has_text_matching expression="use_raw=None"/>
                     <has_text_matching expression="dendrogram=False"/>
-                    <has_text_matching expression="color_map='viridis'"/>
-                    <has_text_matching expression="lw=0.0"/>
-                    <has_text_matching expression="ec='face'"/>
                 </assert_contents>
             </output>
-            <output name="out_png" file="pl.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_marker_filtered_1.png" ftype="png" compare="sim_size"/>
+            <output name="out_png" file="pl.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_marker_filtered_1.png" ftype="png" compare="image_diff"/>
+        </test>
+
+        <!-- test 40 -->
+        <test expect_num_outputs="2">
+            <param name="adata" value="cosg.rank_genes_groups.newton-cg.pbmc68k_highly_reduced_1.h5ad" />
+            <param name="format" value="png"/>
+            <conditional name="method">
+                <param name="method" value="pl.rank_genes_groups_tracksplot"/>
+            </conditional>
+            <section name="advanced_common">
+                <param name="show_log" value="true" />
+            </section>
+            <output name="hidden_output">
+                <assert_contents>
+                    <has_text_matching expression="sc.pl.rank_genes_groups_tracksplot"/>
+                </assert_contents>
+            </output>
+            <output name="out_png" file="pl.rank_genes_groups_tracksplot.newton-cg.pbmc68k_highly_reduced_marker_filtered_1.png" ftype="png" compare="image_diff"/>
         </test>
     </tests>
     <help><![CDATA[
@@ -2372,6 +2238,15 @@
 More details on the `scanpy documentation
 <https://scanpy.readthedocs.io/en/stable/api/scanpy.pl.dotplot.html>`__
 
+Generic: Tracks plot (`pl.tracksplot`)
+======================================
+
+In this type of plot each var_name is plotted as a filled line plot where the y values correspond to the var_name values and x is each of the cells.
+Best results are obtained when using raw counts that are not log.
+
+More details on the `scanpy documentation
+<https://scanpy.readthedocs.io/en/stable/generated/scanpy.pl.tracksplot.html>`__
+
 Generic: Violin plot (`pl.violin`)
 ==================================
 
@@ -2438,6 +2313,15 @@
 More details on the `scanpy documentation
 <https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.highly_variable_genes.html>`__
 
+Preprocessing: Plot histogram of doublet scores for observed transcriptomes and simulated doublets (`pl.scrublet_score_distribution`)
+=====================================================================================================================================
+
+The histogram for simulated doublets is useful for determining the correct doublet score threshold.
+Scrublet must have been run previously with the input object.
+
+More details on the `scanpy documentation
+<https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.scrublet_score_distribution.html>`__
+
 PCA: Scatter plot in PCA coordinates (`pl.pca`)
 ===============================================
 
@@ -2483,11 +2367,24 @@
 More details on the `scanpy documentation
 <https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.diffmap.html>`__
 
-Branching trajectories and pseudotime, clustering: Plot groups and pseudotime (`pl.dpt_groups_pseudotime`)
-===========================================================================================================
+Embeddings: Scatter plot in graph-drawing basis (`pl.draw_graph`)
+=================================================================
 
 More details on the `scanpy documentation
-<https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.dpt_groups_pseudotime.html>`__
+<https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.draw_graph.html>`__
+
+Embeddings: Plot the density of cells in an embedding (per condition) (`pl.embedding_density`)
+==============================================================================================
+
+More details on the `scanpy documentation
+<https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.embedding_density.html>`__
+
+.. This function is commented out because it is not compatible with pandas version. If the issue is not resolved in the next update, this should be removed.
+.. Branching trajectories and pseudotime, clustering: Plot groups and pseudotime (`pl.dpt_groups_pseudotime`)
+.. ===========================================================================================================
+
+.. More details on the `scanpy documentation
+.. <https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.dpt_groups_pseudotime.html>`__
 
 Branching trajectories and pseudotime, clustering: Heatmap of pseudotime series (`pl.dpt_timeseries`)
 =====================================================================================================
@@ -2533,11 +2430,11 @@
 More details on the `scanpy documentation
 <https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.rank_genes_groups_violin.html>`__
 
-Marker genes: Plot ranking of genes as dotplot plot (`pl.rank_genes_groups_dotplot`)
-====================================================================================
+Marker genes: Plot ranking of genes as stacked violin plot (`pl.rank_genes_groups_stacked_violin`)
+==================================================================================================
 
 More details on the `scanpy documentation
-<https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.rank_genes_groups_dotplot.html>`__
+<https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.rank_genes_groups_stacked_violin.html>`__
 
 Marker genes: Plot ranking of genes as heatmap plot (`pl.rank_genes_groups_heatmap`)
 ====================================================================================
@@ -2545,17 +2442,19 @@
 More details on the `scanpy documentation
 <https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.rank_genes_groups_heatmap.html>`__
 
+Marker genes: Plot ranking of genes as dotplot plot (`pl.rank_genes_groups_dotplot`)
+====================================================================================
+
+More details on the `scanpy documentation
+<https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.rank_genes_groups_dotplot.html>`__
+
 Marker genes: Plot ranking of genes as matrixplot plot (`pl.rank_genes_groups_matrixplot`)
 ==========================================================================================
 
 More details on the `scanpy documentation
 <https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.rank_genes_groups_matrixplot.html>`__
 
-Marker genes: Plot ranking of genes as stacked violin plot (`pl.rank_genes_groups_stacked_violin`)
-==================================================================================================
-
-More details on the `scanpy documentation
-<https://scanpy.readthedocs.io/en/stable/api/generated/scanpy.pl.rank_genes_groups_stacked_violin.html>`__
-    ]]></help>
+    ]]>
+    </help>
     <expand macro="citations"/>
 </tool>