Mercurial > repos > iuc > liana_plot
view plot.xml @ 0:8b9b8d358883 draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/liana commit 8dc656081d3147b402485bd25affe05a22e5194e
| author | iuc |
|---|---|
| date | Tue, 10 Mar 2026 13:41:01 +0000 |
| parents | |
| children |
line wrap: on
line source
<tool id="liana_plot" name="Liana Plot" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> <description>visualize ligand-receptor interactions</description> <macros> <import>macros.xml</import> </macros> <expand macro="bio_tools"/> <expand macro="creators"/> <expand macro="requirements"/> <expand macro="version_command"/> <command detect_errors="exit_code"><![CDATA[ #if str($method.method) in ['pl.target_metrics', 'pl.contributions', 'pl.interactions']: cp '$method.mdata' 'misty.h5mu' && #else: cp '$method.adata' 'anndata.h5ad' && #end if cat '$script_file' > '$hidden_output' && python '$script_file' >> '$hidden_output' && ls . >> '$hidden_output' && touch 'anndata_info.txt' && cat 'anndata_info.txt' @CMD_PRETTIFY_STDOUT@ ]]></command> <configfiles> <configfile name="script_file"><![CDATA[ @CMD_IMPORTS@ import mudata as mu if os.path.exists("misty.h5mu"): import mudata as mu mdata = mu.read_h5mu("misty.h5mu") # Wrap MuData into LIANA MistyData (this is what plotting expects) else: adata = sc.read_h5ad('anndata.h5ad') #if str($method.method) == 'pl.dotplot': fig = li.plotting.dotplot( adata=adata, uns_key='$method.uns_key', #if str($method.colour) != '': colour='$method.colour', #end if #if str($method.size) != '': size='$method.size', #end if @CMD_PLOT_SOURCE_TARGET_LABELS@ @CMD_PLOT_LIGAND_RECEPTOR_COMPLEX@ @CMD_PLOT_TOP_N_ORDERBY@ inverse_colour=$method.inverse_colour, inverse_size=$method.inverse_size, cmap='$method.cmap', size_range=($method.size_range_min, $method.size_range_max), figure_size=($method.figure_size_width, $method.figure_size_height), return_fig=True) #else if str($method.method) == 'pl.dotplot_by_sample': fig = li.plotting.dotplot_by_sample( adata=adata, uns_key='$method.uns_key', sample_key='$method.sample_key', #if str($method.colour) != '': colour='$method.colour', #end if #if str($method.size) != '': size='$method.size', #end if @CMD_PLOT_SOURCE_TARGET_LABELS@ @CMD_PLOT_LIGAND_RECEPTOR_COMPLEX@ inverse_colour=$method.inverse_colour, inverse_size=$method.inverse_size, cmap='$method.cmap', size_range=($method.size_range_min, $method.size_range_max), figure_size=($method.figure_size_width, $method.figure_size_height), return_fig=True) #else if str($method.method) == 'pl.tileplot': fig = li.plotting.tileplot( adata=adata, uns_key='$method.uns_key', #if str($method.fill) != '': fill='$method.fill', #end if #if str($method.label) != '': label='$method.label', #end if @CMD_PLOT_SOURCE_TARGET_LABELS@ @CMD_PLOT_LIGAND_RECEPTOR_COMPLEX@ @CMD_PLOT_TOP_N_ORDERBY@ #if str($method.source_title) != '': source_title='$method.source_title', #end if #if str($method.target_title) != '': target_title='$method.target_title', #end if cmap='$method.cmap', label_size=$method.label_size, figure_size=($method.figure_size_width, $method.figure_size_height), return_fig=True) #else if str($method.method) == 'pl.connectivity': fig = li.plotting.connectivity( adata=adata, idx=$method.idx, spatial_key='$method.spatial_key', connectivity_key='$method.connectivity_key', size=$method.size, figure_size=($method.figure_size_width, $method.figure_size_height), return_fig=True) #else if str($method.method) == 'pl.target_metrics': fig = li.plotting.target_metrics( misty=mdata, #if str($method.key) != '': key='$method.key', #end if #if str($method.stat) != '': stat='$method.stat', #end if #if str($method.top_n) != '': top_n=$method.top_n, #end if ascending=$method.ascending, figure_size=($method.figure_size_width, $method.figure_size_height), return_fig=True) #else if str($method.method) == 'pl.contributions': fig = li.plotting.contributions( misty=mdata, #if str($method.key) != '': key='$method.key', #end if #if str($method.view_names) != '': view_names=[x.strip() for x in '$method.view_names'.split(',')], #end if figure_size=($method.figure_size_width, $method.figure_size_height), return_fig=True) #else if str($method.method) == 'pl.interactions': fig = li.plotting.interactions( misty=mdata, #if str($method.key) != '': key='$method.key', #end if #if str($method.view) != '': view='$method.view', #end if #if str($method.top_n) != '': top_n=$method.top_n, #end if ascending=$method.ascending, figure_size=($method.figure_size_width, $method.figure_size_height), return_fig=True) #end if ## Save the figure fig.save('plot.$format', dpi=150) ]]> </configfile> </configfiles> <inputs> <param name="format" type="select" label="Format for saving figure"> <option value="png" selected="true">png</option> <option value="pdf">pdf</option> <option value="svg">svg</option> </param> <conditional name="method"> <param argument="method" type="select" label="Plotting method"> <option value="pl.dotplot">Dotplot: Interactions by source and target cells (dotplot)</option> <option value="pl.dotplot_by_sample">Dotplot by sample: Interactions grouped by sample (dotplot_by_sample)</option> <option value="pl.tileplot">Tileplot: Interactions as tiles by source and target (tileplot)</option> <option value="pl.connectivity">Connectivity: Spatial connectivity weights (connectivity)</option> <option value="pl.target_metrics">MISTy Target Metrics: Plot target metrics from MISTy results (target_metrics)</option> <option value="pl.contributions">MISTy Contributions: Plot view contributions per target (contributions)</option> <option value="pl.interactions">MISTy Interactions: Plot interaction importances (interactions)</option> </param> <when value="pl.dotplot"> <expand macro="inputs_anndata"/> <expand macro="param_uns_key"/> <expand macro="param_plot_colour"/> <expand macro="param_plot_size"/> <expand macro="param_source_labels"/> <expand macro="param_target_labels"/> <expand macro="param_ligand_complex"/> <expand macro="param_receptor_complex"/> <expand macro="param_top_n"/> <expand macro="param_orderby"/> <expand macro="param_orderby_ascending"/> <expand macro="param_orderby_absolute"/> <expand macro="param_inverse_colour"/> <expand macro="param_inverse_size"/> <expand macro="param_cmap"/> <expand macro="param_size_range"/> <expand macro="param_figure_size"/> </when> <when value="pl.dotplot_by_sample"> <expand macro="inputs_anndata"/> <expand macro="param_uns_key"/> <expand macro="param_sample_key" VALUE="sample"/> <expand macro="param_plot_colour"/> <expand macro="param_plot_size"/> <expand macro="param_source_labels"/> <expand macro="param_target_labels"/> <expand macro="param_ligand_complex"/> <expand macro="param_receptor_complex"/> <expand macro="param_inverse_colour"/> <expand macro="param_inverse_size"/> <expand macro="param_cmap"/> <expand macro="param_size_range"/> <expand macro="param_figure_size"/> </when> <when value="pl.tileplot"> <expand macro="inputs_anndata"/> <expand macro="param_uns_key"/> <param argument="fill" type="text" value="" optional="true" label="Fill by column" help="Column in liana_res for tile color. E.g., 'magnitude_rank', 'specificity_rank', or p-value columns."> <expand macro="sanitize_query"/> </param> <param argument="label" type="text" value="" optional="true" label="Label by column" help="Column in liana_res to display inside tiles (e.g., 'lr_names', 'magnitude_rank')."> <expand macro="sanitize_query"/> </param> <expand macro="param_source_labels"/> <expand macro="param_target_labels"/> <expand macro="param_ligand_complex"/> <expand macro="param_receptor_complex"/> <expand macro="param_top_n"/> <expand macro="param_orderby"/> <expand macro="param_orderby_ascending"/> <expand macro="param_orderby_absolute"/> <param argument="source_title" type="text" value="" optional="true" label="Source axis title" help="Custom title for sender/source cell types axis. Default: 'Source'."> <expand macro="sanitize_query"/> </param> <param argument="target_title" type="text" value="" optional="true" label="Target axis title" help="Custom title for receiver/target cell types axis. Default: 'Target'."> <expand macro="sanitize_query"/> </param> <expand macro="param_cmap"/> <param argument="label_size" type="integer" value="12" min="1" label="Label text size" help="Font size for labels in tiles. Default: 12."> </param> <expand macro="param_figure_size" width="5" height="5"/> </when> <when value="pl.connectivity"> <expand macro="inputs_anndata"/> <param argument="idx" type="integer" value="0" min="0" label="Cell index" help="Index of the cell to plot connectivity for."/> <param argument="spatial_key" type="text" value="spatial" label="Spatial key" help="Key in adata.obsm that contains the spatial coordinates."> <expand macro="sanitize_query"/> </param> <param argument="connectivity_key" type="text" value="spatial_connectivities" label="Connectivity key" help="Key in adata.obsp that contains the spatial connectivity matrix."> <expand macro="sanitize_query"/> </param> <param argument="size" type="float" value="1" min="0" label="Point size" help="Size of the points."/> <expand macro="param_figure_size" width="5.4" height="5"/> </when> <when value="pl.target_metrics"> <param name="mdata" type="data" format="h5mu" optional="true" label="MISTy (MuData .h5mu) file" help="" /> <expand macro="param_misty_key"/> <param argument="stat" type="select" optional="true" label="Statistic to plot" help="Target metric to visualize. gain_R2: improvement from multi-view; intra_R2: intra-view variance explained; multi_R2: total variance explained."> <option value="">-- Select statistic --</option> <option value="gain_R2">gain_R2 - R² gain from spatial context</option> <option value="intra_R2">intra_R2 - Intra-view R²</option> <option value="multi_R2">multi_R2 - Total multi-view R²</option> <option value="p_value">p_value - Statistical significance</option> </param> <param argument="top_n" type="integer" value="" optional="true" min="1" label="Top N targets" help="Number of top targets to display. Empty = all targets."> </param> <param argument="ascending" type="boolean" truevalue="True" falsevalue="False" checked="false" label="Sort ascending" help="If enabled: sort by increasing values. If disabled: sort by decreasing values (default, shows highest ranking first)."> </param> <expand macro="param_figure_size" width="5" height="5"/> </when> <when value="pl.contributions"> <param name="mdata" type="data" format="h5mu" optional="true" label="MISTy (MuData .h5mu) file" help="" /> <expand macro="param_misty_key"/> <param argument="view_names" type="text" value="" optional="true" label="Views to include" help="Comma-separated view names (intra, juxta, para) to plot. Empty = all views. Useful for focusing on specific spatial scales."> <expand macro="sanitize_query"/> </param> <expand macro="param_figure_size" width="5" height="5"/> </when> <when value="pl.interactions"> <param name="mdata" type="data" format="h5mu" optional="true" label="MISTy (MuData .h5mu) file" help="" /> <expand macro="param_misty_key"/> <param argument="view" type="text" value="" optional="true" label="View name" help="Specific view (e.g., 'intra', 'juxta', 'para') to visualize interaction importances. Empty = combined importance across all views."> <expand macro="sanitize_query"/> </param> <param argument="top_n" type="integer" value="" optional="true" min="1" label="Top N interactions" help="Number of top interactions to display. Empty = show all."> </param> <param argument="ascending" type="boolean" truevalue="True" falsevalue="False" checked="false" label="Sort ascending" help="If enabled: smallest to largest. If disabled: largest to smallest (default, shows most important first)."> </param> <expand macro="param_figure_size" width="5" height="5"/> </when> </conditional> <expand macro="inputs_common_advanced"/> </inputs> <outputs> <data name="out_png" format="png" from_work_dir="plot.png" label="${tool.name} (${method.method}) on ${on_string}: PNG"> <filter>format == 'png'</filter> </data> <data name="out_pdf" format="pdf" from_work_dir="plot.pdf" label="${tool.name} (${method.method}) on ${on_string}: PDF"> <filter>format == 'pdf'</filter> </data> <data name="out_svg" format="svg" from_work_dir="plot.svg" label="${tool.name} (${method.method}) on ${on_string}: SVG"> <filter>format == 'svg'</filter> </data> <data name="hidden_output" format="txt" label="Log file"> <filter>advanced_common['show_log']</filter> </data> </outputs> <tests> <!-- 1) dotplot -> PNG --> <test expect_num_outputs="2"> <param name="format" value="png"/> <conditional name="method"> <param name="method" value="pl.dotplot"/> <param name="adata" location="https://zenodo.org/records/18388645/files/pbmc_liana_results.h5ad"/> <param name="uns_key" value="liana_res"/> <param name="colour" value="magnitude_rank"/> <param name="size" value="specificity_rank"/> <param name="inverse_colour" value="true"/> <param name="inverse_size" value="true"/> <param name="cmap" value="viridis"/> <param name="size_range_min" value="1"/> <param name="size_range_max" value="5"/> <param name="figure_size_width" value="8"/> <param name="figure_size_height" value="6"/> </conditional> <section name="advanced_common"> <param name="show_log" value="true"/> </section> <output name="out_png" ftype="png"> <assert_contents> <has_size size="390000" delta="150000"/> </assert_contents> </output> <output name="hidden_output"> <assert_contents> <has_text_matching expression="li.plotting.dotplot"/> </assert_contents> </output> </test> <!-- 2) dotplot_by_sample -> PDF --> <test expect_num_outputs="2"> <param name="format" value="pdf"/> <conditional name="method"> <param name="method" value="pl.dotplot_by_sample"/> <param name="adata" location="https://zenodo.org/records/18388645/files/multi_sample_test.h5ad"/> <param name="uns_key" value="liana_res"/> <param name="sample_key" value="sample"/> <param name="colour" value="magnitude_rank"/> <param name="size" value="specificity_rank"/> <param name="inverse_colour" value="true"/> <param name="inverse_size" value="true"/> <param name="cmap" value="viridis"/> <param name="size_range_min" value="1"/> <param name="size_range_max" value="5"/> <param name="figure_size_width" value="8"/> <param name="figure_size_height" value="6"/> </conditional> <section name="advanced_common"> <param name="show_log" value="true"/> </section> <output name="out_pdf" ftype="pdf"> <assert_contents> <has_size size="280000" delta="100000"/> </assert_contents> </output> <output name="hidden_output"> <assert_contents> <has_text_matching expression="li.plotting.dotplot_by_sample"/> </assert_contents> </output> </test> <!-- 3) tileplot -> SVG --> <test expect_num_outputs="2"> <param name="format" value="svg"/> <conditional name="method"> <param name="method" value="pl.tileplot"/> <param name="adata" location="https://zenodo.org/records/18388645/files/pbmc_liana_results.h5ad"/> <param name="uns_key" value="liana_res"/> <param name="fill" value="magnitude_rank"/> <param name="label" value="magnitude_rank"/> <param name="top_n" value="15"/> <param name="orderby" value="magnitude_rank"/> <param name="orderby_ascending" value="true"/> <param name="cmap" value="viridis"/> <param name="label_size" value="10"/> <param name="figure_size_width" value="6"/> <param name="figure_size_height" value="6"/> </conditional> <section name="advanced_common"> <param name="show_log" value="true"/> </section> <output name="out_svg" ftype="svg"> <assert_contents> <has_size size="3300000" delta="1000000"/> </assert_contents> </output> <output name="hidden_output"> <assert_contents> <has_text_matching expression="li.plotting.tileplot"/> </assert_contents> </output> </test> <!-- 4) connectivity -> PNG --> <test expect_num_outputs="2"> <param name="format" value="png"/> <conditional name="method"> <param name="method" value="pl.connectivity"/> <param name="adata" location="https://zenodo.org/records/18388645/files/spatial_small.h5ad"/> <param name="idx" value="0"/> <param name="spatial_key" value="spatial"/> <param name="connectivity_key" value="spatial_connectivities"/> <param name="size" value="1.5"/> <param name="figure_size_width" value="6"/> <param name="figure_size_height" value="5"/> </conditional> <section name="advanced_common"> <param name="show_log" value="true"/> </section> <output name="out_png" ftype="png"> <assert_contents> <has_size size="56000" delta="40000"/> </assert_contents> </output> <output name="hidden_output"> <assert_contents> <has_text_matching expression="li.plotting.connectivity"/> </assert_contents> </output> </test> <!-- 5) MISTy target_metrics -> PDF --> <test expect_num_outputs="2"> <param name="format" value="pdf"/> <conditional name="method"> <param name="method" value="pl.target_metrics"/> <param name="mdata" location="https://zenodo.org/records/18388645/files/genericMistyData_rf.h5mu"/> <param name="stat" value="gain_R2"/> <param name="ascending" value="false"/> <param name="figure_size_width" value="5"/> <param name="figure_size_height" value="5"/> </conditional> <section name="advanced_common"> <param name="show_log" value="true"/> </section> <output name="out_pdf" ftype="pdf"> <assert_contents> <has_size size="17186" delta="5000"/> </assert_contents> </output> <output name="hidden_output"> <assert_contents> <has_text_matching expression="li.plotting.target_metrics"/> </assert_contents> </output> </test> <!-- 6) MISTy contributions -> SVG --> <test expect_num_outputs="2"> <param name="format" value="svg"/> <conditional name="method"> <param name="method" value="pl.contributions"/> <param name="mdata" location="https://zenodo.org/records/18388645/files/genericMistyData_rf.h5mu"/> <param name="view_names" value="intra,juxta,para"/> <param name="figure_size_width" value="5"/> <param name="figure_size_height" value="5"/> </conditional> <section name="advanced_common"> <param name="show_log" value="true"/> </section> <output name="out_svg" ftype="svg"> <assert_contents> <has_size size="58175" delta="10000"/> </assert_contents> </output> <output name="hidden_output"> <assert_contents> <has_text_matching expression="li.plotting.contributions"/> </assert_contents> </output> </test> <!-- 7) MISTy interactions -> PNG --> <test expect_num_outputs="2"> <param name="format" value="png"/> <conditional name="method"> <param name="method" value="pl.interactions"/> <param name="mdata" location="https://zenodo.org/records/18388645/files/genericMistyData_rf.h5mu"/> <param name="view" value="para"/> <param name="top_n" value="20"/> <param name="ascending" value="false"/> <param name="figure_size_width" value="5"/> <param name="figure_size_height" value="5"/> </conditional> <section name="advanced_common"> <param name="show_log" value="true"/> </section> <output name="out_png" ftype="png"> <assert_contents> <has_size size="52184" delta="8000"/> </assert_contents> </output> <output name="hidden_output"> <assert_contents> <has_text_matching expression="li.plotting.interactions"/> </assert_contents> </output> </test> </tests> <help><![CDATA[ Liana Plotting Tools ==================== This tool provides visualization methods for LIANA ligand-receptor analysis results. Available Methods ----------------- **dotplot** Create a dotplot of interactions by source and target cells. The dot size and color can be mapped to different columns in the LIANA results (e.g., expression magnitude, specificity scores). **dotplot_by_sample** Create a dotplot of interactions grouped by sample. Useful for comparing interactions across different conditions or samples. **tileplot** Create a tileplot showing interactions as tiles organized by source and target cells. The fill color and labels can be customized. **connectivity** Plot spatial connectivity weights for a specific cell. Requires spatial data with connectivity information computed. **target_metrics** (MISTy) Plot target metrics from MISTy spatial modelling results. Shows statistics like R² gain, intra R², multi R², or p-values for each target. **contributions** (MISTy) Plot view contributions per target from MISTy results. Shows how different spatial views contribute to explaining each target variable. **interactions** (MISTy) Plot interaction importances from MISTy results. Shows the importance of predictor variables for explaining targets within a specific view. Common Parameters ----------------- **uns_key** Key in adata.uns that contains the LIANA results. Default is 'liana_res'. **colour / size** Columns in liana_res to define the color and size of dots/tiles. Common options include: 'magnitude_rank', 'specificity_rank', 'lr_means', etc. **source_labels / target_labels** Filter interactions to only show specific source or target cell types. **ligand_complex / receptor_complex** Filter interactions to only show specific ligand or receptor complexes. **top_n / orderby** Show only the top N interactions, ordered by a specific column. **inverse_colour / inverse_size** Apply -log10 transformation to the colour/size values for better visualization. **cmap** Colormap to use for plotting (e.g., 'viridis', 'plasma', 'RdBu_r'). **figure_size** Width and height of the figure in inches. Output ------ The tool outputs a plot in the selected format (PNG, PDF, or SVG). ]]></help> <expand macro="citations"/> </tool>
