view plot.xml @ 2:4bfb75bb7c8e draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/scanpy/ commit e6675eff6b4d49386c2a9e4dde0011ba33aedbcc"
author iuc
date Thu, 05 Dec 2019 07:10:37 -0500
parents e4c0f5ee8e17
children a8f865950ac4
line wrap: on
line source

<tool id="scanpy_plot" name="Plot" version="@galaxy_version@" profile="@profile@">
    <description> with scanpy</description>
    <macros>
        <import>macros.xml</import>
    </macros>
    <expand macro="requirements"/>
    <stdio>
        <regex match="... storing" source="stderr" level="warning"/>
    </stdio>
    <expand macro="version_command"/>
    <command detect_errors="exit_code"><![CDATA[
@CMD@
      ]]></command>
    <configfiles>
        <configfile name="script_file"><![CDATA[
@CMD_imports@
@CMD_read_inputs@

sc.settings.figdir = '.'

#if $method.method == 'pl.scatter'

sc.pl.scatter(
    @CMD_param_plot_inputs@
    #if $method.type.type == 'xy'
    x='$method.type.x',
    y='$method.type.y',
        #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
    basis='$method.type.basis',
        #if str($method.type.color) != ''
            #set $color = ([x.strip() for x in str($method.type.color).split(',')])
    color=$color,
        #end if
    #end if
    use_raw=$method.use_raw,
    sort_order=$method.sort_order,
    @CMD_params_pl_groups@
    @CMD_params_pl_components@
    projection='$method.plot.projection',
    legend_loc='$method.plot.legend_loc',
    legend_fontsize=$method.plot.legend_fontsize,
    legend_fontweight='$method.plot.legend_fontweight',
    color_map='$method.plot.color_map',
    palette='$method.plot.palette',
    frameon=$method.plot.frameon,
    #if $method.plot.title
    title='$method.plot.title',
    #end if
    size=$method.plot.size)

#else if $method.method == 'pl.heatmap'
sc.pl.heatmap(
    @CMD_param_plot_inputs@
    @CMD_params_plots@
    swap_axes=$method.swap_axes,
    show_gene_labels=$method.show_gene_labels,
    cmap='$method.matplotlib_pyplot_imshow.cmap',
    #if str($method.matplotlib_pyplot_imshow.interpolation) != 'None'
    interpolation='$method.matplotlib_pyplot_imshow.interpolation',
    #end if
    #if $method.matplotlib_pyplot_imshow.alpha
    alpha=$method.matplotlib_pyplot_imshow.alpha,
    #end if
    #if $method.matplotlib_pyplot_imshow.vmin
    vmin=$method.matplotlib_pyplot_imshow.vmin,
    #end if
    #if $method.matplotlib_pyplot_imshow.vmax
    vmax=$method.matplotlib_pyplot_imshow.vmax,
    #end if
    origin='$method.matplotlib_pyplot_imshow.origin')

#else if $method.method == 'pl.dotplot'
sc.pl.dotplot(
    @CMD_param_plot_inputs@
    @CMD_params_plots@
    color_map='$method.color_map',
    #if $method.dot_max
    dot_max=$method.dot_max,
    #end if
    #if $method.dot_min
    dot_min=$method.dot_min,
    #end if
    @CMD_params_matplotlib_pyplot_scatter@)

#else if $method.method == 'pl.violin'
sc.pl.violin(
    @CMD_param_plot_inputs@
    #if $method.key_variables.type == "var_names"
        #set $key_list = adata.var_names
    #else if $method.key_variables.type == "obs"
        #set $key_list = adata.obs.select_dtypes(exclude=['category']).columns
    #else if $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
    groupby='$method.groupby',
    #end if
    log=$method.log,
    use_raw=$method.use_raw,
    @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
    xlabel='$method.xlabel',
    #end if
    #if $method.rotation
    rotation=$method.rotation,
    #end if
    @CMD_params_seaborn_violinplot@)

#else if $method.method == 'pl.stacked_violin'
sc.pl.stacked_violin(
    @CMD_param_plot_inputs@
    @CMD_params_plots@
    swap_axes=$method.swap_axes,
    @CMD_conditional_stripplot@
    scale='$method.violin_plot.scale',
    row_palette='$method.row_palette',
    #if str($method.standard_scale) != 'None'
    standard_scale='$method.standard_scale',
    #end if
    @CMD_params_seaborn_violinplot@)

#else if $method.method == 'pl.matrixplot'
sc.pl.matrixplot(
    @CMD_param_plot_inputs@
    @CMD_params_plots@
    swap_axes=$method.swap_axes,
    cmap='$method.matplotlib_pyplot_pcolor.cmap',
    #if $method.matplotlib_pyplot_pcolor.vmin
    vmin=$method.matplotlib_pyplot_pcolor.vmin,
    #end if
    #if $method.matplotlib_pyplot_pcolor.vmax
    vmax=$method.matplotlib_pyplot_pcolor.vmax,
    #end if
    edgecolors='$method.matplotlib_pyplot_pcolor.edgecolors',
    #if $method.matplotlib_pyplot_pcolor.alpha
    alpha=$method.matplotlib_pyplot_pcolor.alpha,
    #end if
    snap=$method.matplotlib_pyplot_pcolor.snap)

#else if $method.method == 'pl.clustermap'
sc.pl.clustermap(
    #if str($method.use_raw) == 'True'
    adata=adata.X,
    #else
    adata=adata,
    #end if
    show=False,
    #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'
    z_score=$method.seaborn_clustermap.z_score,
    #end if
    #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")

#else if $method.method == 'pl.highest_expr_genes'
sc.pl.highest_expr_genes(
    @CMD_param_plot_inputs@
    n_top=$method.n_top,
    #if str($method.gene_symbols) != ''
    gene_symbols='$method.gene_symbols',
    #end if
    #if str($method.setseaborn_boxplot.color) != ''
    color='$method.setseaborn_boxplot.color',
    #end if
    #if str($method.setseaborn_boxplot.palette) != 'None'
    palette='$method.setseaborn_boxplot.palette',
    #end if
    saturation=$method.setseaborn_boxplot.saturation)

#else if $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
    )

#else if $method.method == 'pl.pca'
sc.pl.pca(
    @CMD_param_plot_inputs@
    @CMD_param_color@
    use_raw=$method.use_raw,
    sort_order=$method.sort_order,
    @CMD_params_pl_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)

#else if $method.method == 'pl.pca_variance_ratio'
sc.pl.pca_variance_ratio(
    @CMD_param_plot_inputs@
    n_pcs=$method.n_pcs,
    log=$method.log)

#else if $method.method == 'pl.pca_overview'
sc.pl.pca_overview(
    @CMD_param_plot_inputs@
    @CMD_param_color@
    use_raw=$method.use_raw,
    sort_order=$method.sort_order,
    @CMD_params_pl_groups@
    @CMD_params_pl_components@
    @CMD_pl_attribute_section@
    @CMD_params_matplotlib_pyplot_scatter@)

#else if $method.method == 'pl.tsne'
sc.pl.tsne(
    @CMD_param_plot_inputs@
    @CMD_param_color@
    use_raw=$method.use_raw,
    @CMD_pl_edges@
    arrows=$method.arrows,
    sort_order=$method.sort_order,
    @CMD_params_pl_groups@
    @CMD_params_pl_components@
    @CMD_pl_attribute_section@
    @CMD_params_matplotlib_pyplot_scatter@)

#else if $method.method == 'pl.umap'
sc.pl.umap(
    @CMD_param_plot_inputs@
    @CMD_param_color@
    use_raw=$method.use_raw,
    @CMD_pl_edges@
    arrows=$method.arrows,
    sort_order=$method.sort_order,
    @CMD_params_pl_groups@
    @CMD_params_pl_components@
    @CMD_pl_attribute_section@
    @CMD_params_matplotlib_pyplot_scatter@)

#else if $method.method == 'pl.diffmap'
sc.pl.diffmap(
    @CMD_param_plot_inputs@
    @CMD_param_color@
    use_raw=$method.use_raw,
    sort_order=$method.sort_order,
    @CMD_params_pl_groups@
    @CMD_params_pl_components@
    @CMD_pl_attribute_section@
    @CMD_params_matplotlib_pyplot_scatter@)

#else if $method.method == 'pl.draw_graph'
sc.pl.draw_graph(
    @CMD_param_plot_inputs@
    @CMD_param_color@
    #if str($method.gene_symbols) != ''
    gene_symbols='$method.gene_symbols',
    #end if
    use_raw=$method.use_raw,
    #if str($method.layout) != 'None'
    layout='$method.layout',
    #end if
    edges=$method.edges.edges,
    #if str($method.edges.edges) == 'True'
    edges_width=$method.edges.edges_width,
    edges_color='$method.edges.edges_color',
    #end if
    arrows=$method.arrows,
    sort_order=$method.sort_order,
    @CMD_params_pl_groups@
    @CMD_params_pl_components@
    @CMD_pl_attribute_section@
    @CMD_params_matplotlib_pyplot_scatter@)

#else if $method.method == 'pl.dpt_groups_pseudotime'
sc.pl.dpt_groups_pseudotime(
    @CMD_param_plot_inputs@
    color_map='$method.color_map')

#else if $method.method == 'pl.dpt_timeseries'
sc.pl.dpt_timeseries(
    @CMD_param_plot_inputs@
    #if $method.heatmap.as_heatmap == "True"
    color_map='$method.heatmap.color_map',
    #end if
    as_heatmap=$method.heatmap.as_heatmap)

#else if $method.method == 'pl.paga'
sc.pl.paga(
    @CMD_param_plot_inputs@
    @CMD_params_pl_paga@)

#else if $method.method == 'pl.paga_compare'
sc.pl.paga_compare(
    @CMD_param_plot_inputs@
    @CMD_params_pl_paga@)

#else if $method.method == 'pl.paga_path'
sc.pl.paga_path(
    @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 str($method.annotations) != ''
        #set $annotations=([x.strip() for x in str($method.annotations).split(',')])
    annotations=$annotations,
    #end if
    color_map='$method.color_map',
    n_avg=$method.n_avg,
    #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)

#else if $method.method == 'pl.rank_genes_groups'
sc.pl.rank_genes_groups(
    @CMD_param_plot_inputs@
    @CMD_params_pl_groups@
    n_genes=$method.n_genes,
    #if str($method.gene_symbols) != ''
    gene_symbols='$method.gene_symbols',
    #end if
    fontsize=$method.fontsize,
    ncols=$method.ncols,
    sharey=$method.sharey)

#else if $method.method == 'pl.rank_genes_groups_violin'
sc.pl.rank_genes_groups_violin(
    @CMD_param_plot_inputs@
    @CMD_params_pl_groups@
    #if $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
    gene_symbols='$method.gene_symbols',
    use_raw=$method.use_raw,
    split=$method.split,
    strip=$method.violin_plot.stripplot.stripplot,
    #if $method.violin_plot.stripplot.stripplot == "True"
    jitter=$method.violin_plot.stripplot.jitter.jitter,
        #if $method.violin_plot.stripplot.jitter.jitter == "True"
    size=$method.violin_plot.stripplot.jitter.size,
        #end if
    #end if
    scale='$method.violin_plot.scale')

#end if
]]></configfile>
    </configfiles>
    <inputs>
        <expand macro="inputs_anndata"/>
        <expand macro="param_plot_format"/>
        <conditional name="method">
            <param argument="method" type="select" label="Method used for plotting">
                <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.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.ranking">Generic: </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.calculate_qc_metrics">Preprocessing: </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>
                <option value="pl.pca_overview">PCA: Plot PCA results, using `pl.pca_overview`</option>
                <option value="pl.tsne">Embeddings: Scatter plot in tSNE basis, using `pl.tsne`</option>
                <option value="pl.umap">Embeddings: Scatter plot in UMAP basis, using `pl.umap`</option>
                <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.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_dotplot">Marker genes: </option>!-->
                <!--<option value="pl.rank_genes_groups_heatmap">Marker genes: </option>!-->
                <!--<option value="pl.rank_genes_groups_matrixplot">Marker genes: </option>!-->
                <!--<option value="pl.rank_genes_groups_stacked_violin">Marker genes: </option>!-->
                <option value="pl.rank_genes_groups_violin">Marker genes: Plot ranking of genes for all tested comparisons, using `pl.rank_genes_groups_violin`</option>
                <!--<option value="pl.phate">Misc: </option>!-->
                <!--<option value="pl.matrix">Misc: </option>!-->
                <!--<option value="pl.paga_adjacency">Misc: </option>!-->
                <!--<option value="pl.timeseries">Misc: </option>!-->
                <!--<option value="pl.timeseries_as_heatmap">Misc: </option>!-->
                <!--<option value="pl.timeseries_subplot">Misc: </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>
                        <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`"/>
                        <param argument="y" type="text" value="" label="y coordinate" help="Index or key from either `.obs` or `.var`"/>
                        <conditional name="layers">
                            <param argument="use_layers" type="select" label="Use the layers attribute?">
                                <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"/>
                                <param argument="layer_y" type="text" value="" optional="true" label="Layers for y coordinate" help="Use the `layers` attribute of `adata` if present"/>
                                <param argument="layer_color" type="text" value="" optional="true" label="Layers for color" help="Use the `layers` attribute of `adata` if present"/>
                            </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>
                            <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>
                            <option value="draw_graph_fr">draw_graph_fr (need to run on `tl.draw_graph` output)</option>
                        </param>
                        <expand macro="param_color"/>
                    </when>
                </conditional>
                <expand macro="param_use_raw"/>
                <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="pl_groups"/>
                <section name="plot" title="Plot attributes">
                    <expand macro="pl_components"/>
                    <expand macro="param_projection"/>
                    <expand macro="param_legend_loc"/>
                    <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.heatmap">
                <expand macro="params_plots"/>
                <expand macro="param_swap_axes"/>
                <param argument="show_gene_labels" type="boolean" truevalue="True" falsevalue="False" checked="false" label="Show gene labels?" help="By default gene labels are shown when there are 50 or less genes. Otherwise the labels are removed."/>
                <section name="matplotlib_pyplot_imshow" title="Parameters for matplotlib.pyplot.imshow">
                    <expand macro="param_cmap"/>
                    <param name="interpolation" type="select" label="Interpolation method" help="">
                        <option value="None">none</option>
                        <option value="nearest">nearest</option>
                        <option value="bilinear">bilinear</option>
                        <option value="bicubic">bicubic</option>
                        <option value="spline16">spline16</option>
                        <option value="spline36">spline36</option>
                        <option value="hanning">hanning</option>
                        <option value="hamming">hamming</option>
                        <option value="hermite">hermite</option>
                        <option value="kaiser">kaiser</option>
                        <option value="quadric">quadric</option>
                        <option value="catrom">catrom</option>
                        <option value="gaussian">gaussian</option>
                        <option value="bessel">bessel</option>
                        <option value="sinc">sinc</option>
                        <option value="mitchell">mitchell</option>
                        <option value="lanczos">lanczos</option>
                    </param>
                    <expand macro="param_alpha"/>
                    <expand macro="param_vmin"/>
                    <expand macro="param_vmax"/>
                    <param name="origin" type="select" label="Place the [0,0] index of the array in the upper left or lower left corner of the axes" help=" The convention 'upper' is typically used for matrices and images.">
                        <option value="upper">Upper</option>
                        <option value="lower">Lower</option>
                    </param>
                </section>
            </when>
            <when value="pl.dotplot">
                <expand macro="params_plots"/>
                <param argument="color_map" type="select" label="Color palette">
                    <expand macro="matplotlib_pyplot_colormap"/>
                </param>
                <param argument="dot_max" type="float" value="" min="0" max="1" optional="true" label="Maximum dot size" help="If none, the maximum dot size is set to the maximum fraction value found (e.g. 0.6). If given, the value should be a number between 0 and 1. All fractions larger than dot_max are clipped to this value."/>
                <param argument="dot_min" type="float" value="" min="0" max="1" optional="true" label="Minimum dot size" help="If none, the minimum dot size is set to 0. If given, the value should be a number between 0 and 1. All fractions smaller than dot_min are clipped to this value."/>
                <expand macro="section_matplotlib_pyplot_scatter"/>
            </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="obs">All fields in `.obs`</option>
                        <option value="custom">Subset of variables in `adata.var_names` or fields of `.obs`</option>
                    </param>
                    <when value="var_names"/>
                    <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`"/>
                    </when>
                </conditional>
                <expand macro="param_groupby"/>
                <expand macro="param_log"/>
                <expand macro="param_use_raw"/>
                <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="True">Yes</option>
                            <option value="False" selected="true">No</option>
                        </param>
                        <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=""/>
                        </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."/>
                <param argument="rotation" type="float" value="" optional="true" label="Rotation of xtick labels" help=""/>
                <expand macro="seaborn_violinplot"/>
            </when>
            <when value="pl.stacked_violin">
                <expand macro="params_plots"/>
                <expand macro="param_swap_axes"/>
                <section name="violin_plot" title="Violin plot attributes">
                    <expand macro="conditional_stripplot"/>
                    <expand macro="param_scale"/>
                </section>
                <param argument="row_palette" type="select" label="Colors to use in each of the stacked violin plots">
                    <option value="muted">muted</option>
                    <expand macro="seaborn_color_palette_options"/>
                </param>
                <param argument="standard_scale" type="select" label="Standardize a dimension between 0 and 1" help="Each variable or observation is subtracted by the minimum and divided each by its maximum.">
                    <option value="None">No standardization</option>
                    <option value="var">Standardization on variable</option>
                    <option value="obs">Standardization on observation</option>
                </param>
                <expand macro="seaborn_violinplot"/>
            </when>
            <when value="pl.matrixplot">
                <expand macro="params_plots"/>
                <expand macro="param_swap_axes"/>
                <section name="matplotlib_pyplot_pcolor" title="Parameters for matplotlib.pyplot.pcolor">
                    <param argument="cmap" type="select" label="Color palette">
                        <expand macro="seaborn_color_palette_options"/>
                    </param>
                    <param argument="vmin" type="float" value="" optional="true" label="Minimum value to anchor the colormap" help=""/>
                    <param argument="vmax" type="float" value="" optional="true" label="Maximum value to anchor the colormap" help=""/>
                    <expand macro="param_matplotlib_pyplot_edgecolors"/>
                    <expand macro="param_alpha"/>
                    <param argument="snap" type="boolean" truevalue="True" falsevalue="False" checked="false" label="Snap the mesh to pixel boundaries?" help=""/>
                </section>
            </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="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="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>
                        <option value="ward">ward: incremental algorithm</option>
                    </param>
                    <param name="metric" type="select" label="Distance metric to use for the data" help="See scipy.spatial.distance.pdist documentation for more options https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html">
                        <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="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="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=""/>
                </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`."/>
                <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=""/>
                    <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>
            </when>
            <when value="pl.pca">
                <expand macro="param_color"/>
                <expand macro="param_use_raw"/>
                <expand macro="param_sort_order"/>
                <expand macro="pl_groups"/>
                <expand macro="pl_attribute_section"/>
                <expand macro="section_matplotlib_pyplot_scatter"/>
            </when>
            <when value="pl.pca_loadings">
                <param argument="components" type="text" value="1,2,3" label="Lsit of comma-separated components" help="1, 2, 3 means first, second and third principal components"/>
            </when>
            <when value="pl.pca_variance_ratio">
                <param argument="n_pcs" type="integer" min="0" value="30" label="Number of PCs to show" help=""/>
                <expand macro="param_log"/>
            </when>
            <when value="pl.pca_overview">
                <expand macro="param_color"/>
                <expand macro="param_use_raw"/>
                <expand macro="param_sort_order"/>
                <expand macro="pl_groups"/>
                <expand macro="pl_attribute_section"/>
                <expand macro="section_matplotlib_pyplot_scatter"/>
            </when>
            <when value="pl.tsne">
                <expand macro="param_color"/>
                <expand macro="param_use_raw"/>
                <expand macro="pl_edges"/>
                <expand macro="param_arrows"/>
                <expand macro="param_sort_order"/>
                <expand macro="pl_groups"/>
                <expand macro="pl_attribute_section"/>
                <expand macro="section_matplotlib_pyplot_scatter"/>
            </when>
            <when value="pl.umap">
                <expand macro="param_color"/>
                <expand macro="param_use_raw"/>
                <expand macro="pl_edges"/>
                <expand macro="param_arrows"/>
                <expand macro="param_sort_order"/>
                <expand macro="pl_groups"/>
                <expand macro="pl_attribute_section"/>
                <expand macro="section_matplotlib_pyplot_scatter"/>
            </when>
            <when value="pl.diffmap">
                <expand macro="param_color"/>
                <expand macro="param_use_raw"/>
                <expand macro="param_sort_order"/>
                <expand macro="pl_groups"/>
                <expand macro="pl_attribute_section"/>
                <expand macro="section_matplotlib_pyplot_scatter"/>
            </when>
            <when value="pl.draw_graph">
                <expand macro="param_color"/>
                <expand macro="gene_symbols"/>
                <expand macro="param_use_raw"/>
                <param argument="layout" type="select" optional="true" label="Plotting layout" help="">
                    <expand macro="options_layout"/>
                </param>
                <expand macro="pl_edges"/>
                <expand macro="param_arrows"/>
                <expand macro="param_sort_order"/>
                <expand macro="pl_groups"/>
                <expand macro="pl_attribute_section"/>
                <expand macro="section_matplotlib_pyplot_scatter"/>
            </when>
            <when value="pl.dpt_groups_pseudotime">
                <expand macro="param_color_map"/>
            </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>
                        <option value="False">No</option>
                    </param>
                    <when value="True">
                        <expand macro="param_color_map"/>
                    </when>
                    <when value="False" />
                </conditional>
            </when>
            <when value="pl.paga">
                <expand macro="inputs_paga"/>
            </when>
            <when value="pl.paga_compare">
                <expand macro="inputs_paga"/>
            </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"/>
                <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="param_use_raw"/>
                <param argument="annotations" type="text" value="" optional="true" label="Key to plot" help="Keys for obs, comma-separated"/>
                <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"/>
                <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?"/>
                <param argument="show_colorbar" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Show the colorbar?"/>
                <param argument="show_yticks" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Show the y ticks?"/>
                <param argument="normalize_to_zero_one" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Shift and scale the running average to [0, 1] per gene?"/>
            </when>
            <when value="pl.rank_genes_groups">
                <expand macro="pl_groups"/>
                <expand macro="n_genes"/>
                <expand macro="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"/>
            </when>
            <when value="pl.rank_genes_groups_violin">
                <expand macro="pl_groups"/>
                <conditional name="genes">
                    <param argument="select" type="select" label="Which genes to plot?" help="">
                        <option value="n_genes">A number of genes</option>
                        <option value="gene_names">A custom list of genes</option>
                    </param>
                    <when value="n_genes">
                        <expand macro="n_genes"/>
                    </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"/>
                    </when>
                </conditional>
                <expand macro="gene_symbols"/>
                <expand macro="param_use_raw"/>
                <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"/>
                </section>
            </when>
        </conditional>
    </inputs>
    <outputs>
        <data name="out_png" format="png" from_work_dir="*.png" label="${tool.name} (${method.method}) on ${on_string}">
            <filter>format == 'png' and method['method'] != 'pl.rank_genes_groups_violin'</filter>
        </data>
        <collection name="collection_png" type="list" label="${tool.name} (${method.method}) on ${on_string}">
            <discover_datasets pattern="rank_genes_groups_cell_type_(?P&lt;designation&gt;.*).png" format="png"/>
            <filter>format == 'png' and method['method'] == 'pl.rank_genes_groups_violin'</filter>
        </collection>
        <data name="out_pdf" format="pdf" from_work_dir="*.pdf" label="${tool.name} (${method.method}) on ${on_string}">
            <filter>format == 'pdf' and method['method'] != pl.rank_genes_groups_violin</filter>
        </data>
        <collection name="collection_pdf" type="list" label="${tool.name} (${method.method}) on ${on_string}">
            <discover_datasets pattern="rank_genes_groups_cell_type_(?P&lt;designation&gt;.*).pdf" format="pdf"/>
            <filter>format == 'pdf' and method['method'] == 'pl.rank_genes_groups_violin'</filter>
        </collection>
        <data name="out_svg" format="svg" from_work_dir="*.svg" label="${tool.name} (${method.method}) on ${on_string}">
            <filter>format == 'svg' and method['method'] != pl.rank_genes_groups_violin</filter>
        </data>
        <collection name="collection_svg" type="list" label="${tool.name} (${method.method}) on ${on_string}">
            <discover_datasets pattern="rank_genes_groups_cell_type_(?P&lt;designation&gt;.*).svg" format="svg"/>
            <filter>format == 'svg' and method['method'] == 'pl.rank_genes_groups_violin'</filter>
        </collection>
    </outputs>
    <tests>
        <test>
            <!-- test 1: pl.scatter !-->
            <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="basis"/>
                    <param name="basis" value="umap"/>
                    <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.scatter"/>
                <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'"/>
                <has_text_matching expression="palette='inferno'"/>
                <has_text_matching expression="frameon=True"/>
                <has_text_matching expression="size=1.0"/>
            </assert_stdout>
            <output name="out_png" file="pl.scatter.umap.pbmc68k_reduced.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 2: pl.scatter !-->
            <param name="adata" value="krumsiek11.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="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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.scatter"/>
                <has_text_matching expression="x='EKLF'" />
                <has_text_matching expression="y='Cebpa'"/>
                <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="color_map='viridis'"/>
                <has_text_matching expression="palette='bwr'"/>
                <has_text_matching expression="frameon=False"/>
                <has_text_matching expression="size=1.0"/>
                <has_text_matching expression="title='A title'"/>
            </assert_stdout>
            <output name="out_png" file="pl.scatter.krumsiek11.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 3: pl.heatmap !-->
            <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="log" value="False"/>
                <param name="use_raw" value="False"/>
                <param name="num_categories" value="7"/>
                <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="False"/>
                <section name="matplotlib_pyplot_imshow">
                    <param name="cmap" value="YlGnBu"/>
                    <param name="interpolation" value="None"/>
                    <param name="origin" value="upper"/>
                </section>
            </conditional>
            <assert_stdout>
                <has_text_matching expression="sc.pl.heatmap"/>
                <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="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=False"/>
                <has_text_matching expression="cmap='YlGnBu'"/>
                <has_text_matching expression="origin='upper'"/>
            </assert_stdout>
            <output name="out_png" file="pl.heatmap.krumsiek11.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 4: pl.dotplot !-->
            <param name="adata" value="pbmc68k_reduced.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="CD79A, MS4A1, CD8A, CD8B, LYZ, GNLY, NKG7, RP3-467N11.1, FCGR3A, FCER1A, CST3, POU2AF1, LINC00402"/>
                </conditional>
                <param name="groupby" value="louvain"/>
                <param name="log" value="False"/>
                <param name="use_raw" value="False"/>
                <param name="num_categories" value="7"/>
                <param name="dendrogram" value="True"/>
                <repeat name="var_group_positions">
                    <param name="start" value="0"/>
                    <param name="end" value="1"/>
                    <param name="label" value="B cells"/>
                </repeat>
                <repeat name="var_group_positions">
                    <param name="start" value="11"/>
                    <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>
            <assert_stdout>
                <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="groupby='louvain'"/>
                <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="var_group_positions=\[\(0, 1\), \(11, 12\)\]"/>
                <has_text_matching expression="var_group_labels=\['B cells', 'dendritic'\]"/>
                <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="linewidths=0.0"/>
                <has_text_matching expression="edgecolors='face'"/>
            </assert_stdout>
            <output name="out_png" file="pl.dotplot.krumsiek11.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 5: pl.violin !-->
            <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"/>
                <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.violin"/>
                <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="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="palette='viridis'"/>
                <has_text_matching expression="saturation=0.75"/>
            </assert_stdout>
            <output name="out_png" file="pl.violin.pbmc68k_reduced_custom.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 6: pl.stacked_violin !-->
            <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="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"/>
                </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"/>
                </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>
            <assert_stdout>
                <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="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="palette='viridis'"/>
                <has_text_matching expression="saturation=0.75"/>
            </assert_stdout>
            <output name="out_png" file="pl.stacked_violin.krumsiek11.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 7: pl.matrixplot !-->
            <param name="adata" value="krumsiek11.h5ad" />
            <param name="format" value="png"/>
            <conditional name="method">
                <param name="method" value="pl.matrixplot"/>
                <conditional name="var_names">
                    <param name="type" value="all"/>
                </conditional>
                <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"/>
                </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>
            </conditional>
            <assert_stdout>
                <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=False"/>
                <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="edgecolors='face'"/>
                <has_text_matching expression="snap=False"/>
            </assert_stdout>
            <output name="out_png" file="pl.matrixplot.krumsiek11.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 8: pl.clustermap !-->
            <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.clustermap"/>
                <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'"/>
                <has_text_matching expression="col_cluster=False"/>
                <has_text_matching expression="row_cluster=False"/>
            </assert_stdout>
            <output name="out_png" file="pl.clustermap.krumsiek11.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 9: pl.highest_expr_genes !-->
            <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"/>
                <section name="setseaborn_boxplot">
                    <param name="color" value="blue"/>
                    <param name="saturation" value="0.5"/>
                </section>
            </conditional>
            <assert_stdout>
                <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="color='blue'"/>
                <has_text_matching expression="saturation=0.5"/>
            </assert_stdout>
            <output name="out_png" file="pl.highest_expr_genes.filter_genes_dispersion.krumsiek11-seurat.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 10: pl.highly_variable_genes !-->
            <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"/>
            </conditional>
            <assert_stdout>
                <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="highly_variable_genes=True"/>
            </assert_stdout>
            <output name="out_png" file="pl.highly_variable_genes.seurat.blobs.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 11: pl.pca !-->
            <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"/>
                        <param name="axis2" value="2"/>
                    </repeat>
                    <repeat name="components">
                        <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>
            <assert_stdout>
                <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="linewidths=0.0" />
                <has_text_matching expression="edgecolors='face" />
            </assert_stdout>
            <output name="out_pdf" file="pl.pca.pbmc68k_reduced.CD3D_CD79A_components_2d.pdf" ftype="pdf" compare="sim_size"/>
        </test>
        <test>
            <!-- test 12: pl.pca_loadings !-->
            <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.pca_loadings"/>
                <has_text_matching expression="components=\[1, 2, 3\]" />
            </assert_stdout>
            <output name="out_png" file="pl.pca_loadings.pp.pca.krumsiek11.png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 13: pl.pca_variance_ratio !-->
            <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.pca_variance_ratio"/>
                <has_text_matching expression="n_pcs=5" />
                <has_text_matching expression="log=False" />
            </assert_stdout>
            <output name="out_png" file="pl.pca_variance_ratio.pp.pca.krumsiek11.png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 14: pl.pca_overview !-->
            <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.pca_overview"/>
                <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="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_stdout>
            <output name="out_png" file="pl.pca_overview.pp.pca.krumsiek11.png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 15: pl.tsne !-->
            <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.tsne"/>
                <has_text_matching expression="use_raw=False"/>
                <has_text_matching expression="edges=False"/>
                <has_text_matching expression="arrows=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="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="linewidths=0.0"/>
                <has_text_matching expression="edgecolors='face'"/>
            </assert_stdout>
            <output name="out_png" file="pl.tsne.krumsiek11.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 16: pl.umap !-->
            <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"/>
                </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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.umap"/>
                <has_text_matching expression="color=\['paul15_clusters'\]"/>
                <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'"/>
                <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=4"/>
                <has_text_matching expression="wspace=0.1"/>
                <has_text_matching expression="hspace=0.25"/>
                <has_text_matching expression="linewidths=0.0"/>
                <has_text_matching expression="edgecolors='face'"/>
            </assert_stdout>
            <output name="out_png" file="pl.umap.neighbors_umap_euclidean.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 17: pl.diffmap !-->
            <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.diffmap"/>
                <has_text_matching expression="color=\['paul15_clusters'\]"/>
                <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="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="linewidths=0.0"/>
                <has_text_matching expression="edgecolors='face'"/>
            </assert_stdout>
            <output name="out_png" file="pl.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 18: pl.draw_graph !-->
            <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"/>
                <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.draw_graph"/>
                <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='Crimson'"/>
                <has_text_matching expression="arrows=False"/>
                <has_text_matching expression="sort_order=False"/>
                <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="linewidths=0.0"/>
                <has_text_matching expression="edgecolors='face"/>
            </assert_stdout>
            <output name="out_png" file="pl.draw_graph.png" ftype="png" compare="sim_size"/>
        </test>
        <!--<test>
            < test pl.dpt_groups_pseudotime >
            <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.dpt_groups_pseudotime"/>
                <has_text_matching expression="color_map='viridis'"/>
            </assert_stdout>
            <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>!-->
        <test>
            <!-- test 19: pl.dpt_timeseries !-->
            <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>
            <assert_stdout>
                <has_text_matching expression="sc.pl.dpt_timeseries"/>
                <has_text_matching expression="color_map='viridis'"/>
                <has_text_matching expression="as_heatmap=True"/>
            </assert_stdout>
            <output name="out_png" file="pl.dpt_timeseries.dpt.diffmap.neighbors_gauss_braycurtis.recipe_weinreb17.paul15_subsample.png" ftype="png" compare="sim_size"/>
        </test>
        <!--<test>
             test pl.paga
            <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="paul15_clusters"/>
                <param name="labels" value="label" />
                <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"/>
        </test>!-->
        <!--<test>
             test pl.paga_compare
        </test>!-->
        <!--<test>
             test pl.paga_path
        </test>!-->  
        <test>
            <!-- test 20: pl.rank_genes_groups !-->
            <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="n_genes" value="10"/>
                <param name="fontsize" value="8"/>
                <param name="ncols" value="4"/>
                <param name="sharey" value="true"/>
            </conditional>
            <assert_stdout>
                <has_text_matching expression="sc.pl.rank_genes_groups"/>
                <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_stdout>
            <output name="out_png" file="pl.rank_genes_groups.rank_genes_groups.krumsiek11.png" ftype="png" compare="sim_size"/>
        </test>
        <test>
            <!-- test 21: pl.rank_genes_groups_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_violin"/>
                <conditional name="genes">
                    <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>
            <assert_stdout>
                <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="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'"/>
            </assert_stdout>
            <output_collection name="collection_png">
                <element name="Ery" file="pl.rank_genes_groups_violin.Ery.png" ftype="png" compare="sim_size"/>
                <element name="Mk" file="pl.rank_genes_groups_violin.Mk.png" ftype="png" compare="sim_size"/>
                <element name="Mo" file="pl.rank_genes_groups_violin.Mo.png" ftype="png" compare="sim_size"/>
                <element name="Neu" file="pl.rank_genes_groups_violin.Neu.png" ftype="png" compare="sim_size"/>
                <element name="progenitor" file="pl.rank_genes_groups_violin.progenitor.png" ftype="png" compare="sim_size"/>
            </output_collection>
        </test>
    </tests>
    <help><![CDATA[
Generic: Scatter plot along observations or variables axes (`pl.scatter`)
=========================================================================

Color the plot using annotations of observations (`.obs`), variables
(`.var`) or expression of genes (`.var_names`).

More details on the `scanpy documentation
<https://scanpy.readthedocs.io/en/latest/api/scanpy.pl.scatter.html>`__

Generic: Heatmap of the expression values of set of genes (`pl.heatmap`)
========================================================================

If `groupby` is given, the heatmap is ordered by the respective group. For
example, a list of marker genes can be plotted, ordered by clustering. If
the `groupby` observation annotation is not categorical the observation
annotation is turned into a categorical by binning the data into the number
specified in `num_categories`.

More details on the `scanpy documentation
<https://scanpy.readthedocs.io/en/latest/api/scanpy.pl.heatmap.html>`__

Generic: Makes a dot plot of the expression values (`pl.dotplot`)
=================================================================

For each var_name and each `groupby` category a dot is plotted. Each dot
represents two values: mean expression within each category (visualized by
color) and fraction of cells expressing the var_name in the
category. (visualized by the size of the dot).  If groupby is not given, the
dotplot assumes that all data belongs to a single category. A gene is not
considered expressed if the expression value in the adata (or adata.raw) is
equal to zero.

For instance, for each marker gene, the mean value and the percentage of cells
expressing the gene can be visualized for each cluster.

More details on the `scanpy documentation
<https://scanpy.readthedocs.io/en/latest/api/scanpy.pl.dotplot.html>`__

Generic: Violin plot (`pl.violin`)
==================================

Wraps `seaborn.violinplot` for `anndata.AnnData`.

More details on the `scanpy documentation
<https://scanpy.readthedocs.io/en/latest/api/scanpy.pl.violin.html>`__

Generic: Stacked violin plots (`pl.stacked_violin`)
===================================================

Makes a compact image composed of individual violin plots (from `seaborn.violinplot`) 
stacked on top of each other. Useful to visualize gene expression per cluster.

More details on the `scanpy documentation
<https://scanpy.readthedocs.io/en/latest/api/scanpy.pl.stacked_violin.html>`__

Generic: Heatmap of the mean expression values per cluster (`pl.matrixplot`)
============================================================================

Creates a heatmap of the mean expression values per cluster of each var_names

If groupby is not given, the matrixplot assumes that all data belongs to a single
category.

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.matrixplot.html>`__

Generic: Hierarchically-clustered heatmap (`pl.clustermap`)
===========================================================

Wraps `seaborn.clustermap
<https://seaborn.pydata.org/generated/seaborn.clustermap.html>`__ for
`anndata.AnnData`.

The returned object has a savefig() method that should be used if you want
to save the figure object without clipping the dendrograms.

To access the reordered row indices, use:
clustergrid.dendrogram_row.reordered_ind

Column indices, use: clustergrid.dendrogram_col.reordered_ind

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.clustermap.html>`__

Preprocessing: Plot the fraction of counts assigned to each gene over all cells (`pl.highest_expr_genes`)
=========================================================================================================

Computes, for each gene, the fraction of counts assigned to that gene within
a cell. The `n_top` genes with the highest mean fraction over all cells are
plotted as boxplots.

This plot is similar to the `scater` package function `plotHighestExprs(type= "highest-expression")`

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.highest_expr_genes.html>`__

Preprocessing: Plot dispersions versus means for genes (`pl.highly_variable_genes`)
===================================================================================

It produces Supp. Fig. 5c of Zheng et al. (2017) and MeanVarPlot() of Seurat.

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.highly_variable_genes.html>`__

PCA: Scatter plot in PCA coordinates (`pl.pca`)
===============================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.pca.html>`__

PCA: Rank genes according to contributions to PCs (`pl.pca_loadings`)
=====================================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.pca_loadings.html>`__

PCA: Plot the variance ratio (`pl.pca_variance_ratio`)
======================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.pca_variance_ratio.html>`__

PCA: Plot PCA results (`pl.pca_overview`)
=========================================

The parameters are the ones of the scatter plot. Call pca_ranking separately
if you want to change the default settings.

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.pca_overview.html>`__

Embedding: Scatter plot in tSNE basis (`pl.tsne`)
=================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.tsne.html>`__

Embeddings: Scatter plot in UMAP basis (`pl.umap`)
==================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.umap.html>`__

Embeddings: Scatter plot in Diffusion Map basis (`pl.diffmap`)
==============================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.diffmap.html>`__

Branching trajectories and pseudotime, clustering: Plot groups and pseudotime (`pl.dpt_groups_pseudotime`)
===========================================================================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.dpt_groups_pseudotime.html>`__

Branching trajectories and pseudotime, clustering: Heatmap of pseudotime series (`pl.dpt_timeseries`)
=====================================================================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.dpt_timeseries.html>`__


Branching trajectories and pseudotime, clustering: Plot the abstracted graph through thresholding low-connectivity edges (`pl.paga`)
====================================================================================================================================

This uses ForceAtlas2 or igraph's layout algorithms for most layouts.

When initializing the positions, note that - for some reason - igraph
mirrors coordinates along the x axis... that is, you should increase the
`maxiter` parameter by 1 if the layout is flipped.

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.paga.html>`__


Branching trajectories and pseudotime, clustering: Scatter and PAGA graph side-by-side (`pl.paga_compare`)
==========================================================================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.paga_compare.html>`__

Branching trajectories and pseudotime, clustering: Gene expression and annotation changes along paths (`pl.paga_path`)
======================================================================================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.paga_path.html>`__

Marker genes: Plot ranking of genes using dotplot plot (`pl.rank_genes_groups`)
===============================================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.rank_genes_groups.html>`__

Marker genes: Plot ranking of genes for all tested comparisons (`pl.rank_genes_groups_violin`)
==============================================================================================

More details on the `scanpy documentation
<https://icb-scanpy.readthedocs-hosted.com/en/stable/api/scanpy.pl.rank_genes_groups_violin.html>`__
    ]]></help>
    <expand macro="citations"/>
</tool>