view scanpy-find-cluster.xml @ 16:5e68e130fafe draft

"planemo upload for repository https://github.com/ebi-gene-expression-group/container-galaxy-sc-tertiary/tree/develop/tools/tertiary-analysis/scanpy commit e572b5425460d57f1bd13ab6374674c1c6801ab3-dirty"
author ebi-gxa
date Thu, 17 Sep 2020 16:24:22 +0000
parents c46750e2e4a4
children b45b85d5c7ec
line wrap: on
line source

<?xml version="1.0" encoding="utf-8"?>
<tool id="scanpy_find_cluster" name="Scanpy FindCluster" version="@TOOL_VERSION@+galaxy1" profile="@PROFILE@">
  <description>based on community detection on KNN graph</description>
  <macros>
    <import>scanpy_macros2.xml</import>
  </macros>
  <expand macro="requirements"/>
  <command detect_errors="exit_code"><![CDATA[
#from pathlib import Path
#if $settings.resolution_file
    #set resolution = Path($settings.resolution_file.__str__).read_text().strip()
#elif $settings.resolution
    #set resolution = $settings.resolution.__str__.strip()
#end if

ln -s '${input_obj_file}' input.h5 &&
PYTHONIOENCODING=utf-8 scanpy-find-cluster
    ${method}
#if $settings.default == "false"
    --neighbors-key '${settings.neighbors_key}'
    #if $settings.key_added
        #set key_added = $settings.key_added.replace('METHOD', $method.__str__)
        #if $resolution
            #set key_added = $key_added.replace('RESOLUTION', $resolution.__str__)
        #end if
        --key-added '${key_added}'
    #end if
    #if $resolution
        --resolution '$resolution'
    #end if
    #if $settings.layer
        --layer '${settings.layer}'
    #end if
    #if $settings.restrict_to
        --restrict-to '${settings.restrict_to}'
    #end if
    #if $settings.use_weights
        --use-weights
    #end if
    --random-state '${settings.random_seed}'
    ${settings.directed}
#end if
#if $output_cluster
    --export-cluster output.tsv
#end if
    @INPUT_OPTS@
    @OUTPUT_OPTS@
]]></command>

  <inputs>
    <expand macro="input_object_params"/>
    <expand macro="output_object_params"/>
    <param name="output_cluster" type="boolean" checked="true" label="Output cluster in two column text format"/>

    <param name="method" type="select" label="Clustering algorithm">
      <option value="louvain" selected="true">Louvain</option>
      <option value="leiden">Leiden</option>
    </param>

    <conditional name="settings">
      <param name="default" type="boolean" checked="true" label="Use programme defaults"/>
      <when value="true"/>
      <when value="false">
        <param name="neighbors_key" argument="--neighbors-key" value="neighbors" type="text"
            label="Name of the slot that holds the KNN graph"/>
        <param name="layer" argument="--layer" value="" type="text"
            label="Key from adata.layers whose value will be used to perform tests on. (Default: use .X)"/>
        <param name="key_added" argument="--key-added" type="text" optional="true"
            label="Additional suffix to the name of the slot to save the calculated clustering" help="If included, the keyword 'METHOD' will be substituted with the value of the method setting and 'RESOLUTION' with the value of that field."/>
        <param name="resolution" argument="--resolution" type="float" min="0.0" value="1.0"
               label="Resolution, high value for more and smaller clusters"/>
        <param name="resolution_file" argument="--resolution" type="data" format="txt,tsv" optional="true"
               label="File with resolution, use with parameter iterator. Overrides the resolution setting"/>
        <param name="restrict_to" argument="--restrict-to" type="text" optional="true"
               label="Restrict clustering to certain sample categories"/>
        <param name="use_weights" argument="--use-weights" type="boolean" checked="false" label="Use weights from knn graph"/>
        <param name="random_seed" argument="--random-seed" type="integer" value="0" label="Seed for random number generator"/>
        <param name="directed" argument="--directed" type="boolean" truevalue="--directed" falsevalue="--undirected" checked="true"
               label="Interpret the adjacency matrix as directed graph."/>
      </when>
    </conditional>
  </inputs>

  <outputs>
    <expand macro="output_data_obj" description="Clusters"/>
    <data name="output_txt" format="tsv" from_work_dir="output.tsv" label="${tool.name} on ${on_string}: Cluster table">
      <filter>output_cluster</filter>
    </data>
  </outputs>

  <tests>
    <test>
      <param name="input_obj_file" value="compute_graph.h5"/>
      <param name="input_format" value="anndata"/>
      <param name="output_format" value="anndata"/>
      <param name="output_txt" value="true"/>
      <param name="default" value="false"/>
      <param name="resolution" value="1.0"/>
      <param name="random_seed" value="0"/>
      <output name="output_h5" file="find_cluster.h5" ftype="h5" compare="sim_size"/>
      <output name="output_txt" file="find_cluster.tsv" ftype="tsv"/>
    </test>
  </tests>

  <help><![CDATA[
======================================================================
Cluster cells into subgroups (`scanpy.tl.louvain`, `scanpy.tl.leiden`)
======================================================================

Cluster cells using the Louvain algorithm (Blondel et al, 2008) in the
implementation of Traag et al, 2017, or the Leiden algorithm (Traag et al,
2019). The Louvain algorithm has been proposed for single-cell analysis by
Levine et al, 2015.

This requires to run `Scanpy ComputeGraph`, first.

It by default yields `louvain` or `leiden`, generated cluster label.

@HELP@

@VERSION_HISTORY@
]]></help>
  <expand macro="citations">
    <citation type="doi">10.1088/1742-5468/2008/10/P10008</citation>
    <citation type="doi">10.1016/j.cell.2015.05.047</citation>
    <citation type="doi">10.1038/s41598-019-41695-z</citation>
    <citation type="doi">10.5281/zenodo.35117</citation>
  </expand>
</tool>