view vegan_rarefaction.xml @ 3:af1211ed6c8e draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/vegan/ commit f93edebf6c946402f105f0622aacb0baa216a70c
author iuc
date Fri, 15 Mar 2024 15:26:48 +0000
parents b0d5976540e3
children
line wrap: on
line source

<tool id="vegan_rarefaction" name="Vegan Rarefaction" version="@TOOL_VERSION@">
    <description>
        curve and statistics
    </description>
    <macros>
        <import>macros.xml</import>
    </macros>
    <expand macro="bio.tools_xrefs" />
    <expand macro="requirements" />
    <expand macro="stdio" />
    <expand macro="version_command" />
    <command><![CDATA[
        #if "output_r_script" in str( $include_outputs ).split( "," ):
            cp "${vegan_rarefaction_script}" "${output_r_script}" &&
        #end if
        Rscript "${vegan_rarefaction_script}"
    ]]>
    </command>
    <configfiles>
        <configfile name="vegan_rarefaction_script"><![CDATA[
@RSCRIPT_PREAMBLE@
@RSCRIPT_LOAD_TABULAR_FILE@
#set $include_files = str( $include_outputs ).split( "," )

#if str( $sample_size ) == '':
raremax <- min(rowSums(input_abundance))
raremax_offset <- -1
sprintf("Automatically determining subsampling size, will apply offset to slope calculation and species probabilities.")
#else:
raremax = $sample_size
raremax_offset <- 0
#end if
sprintf("Using sample size: %i", raremax)
Srare <- rarefy(input_abundance, sample=raremax, se=FALSE, MARGIN=1)
#if "output_richness" in $include_files:
write.table(Srare, "${output_richness}", quote=FALSE, col.names=NA, sep = "\t")
#end if

#if "output_slope" in $include_files:
write.table(rareslope(input_abundance, sample=raremax+raremax_offset), "${output_slope}", quote=FALSE, sep = "\t")
#end if

S <- specnumber(input_abundance)
#if "output_species_count" in $include_files:
write.table(S, "${ output_species_count }", quote=FALSE, col.names=NA, sep="\t" )
#end if

#if "output_species_frequency" in $include_files:
write.table(specnumber(input_abundance, MARGIN=2), "${ output_species_frequency }", quote=FALSE, col.names=NA, sep="\t" )
#end if

#if "output_species_probabilities" in $include_files:
write.table(drarefy(input_abundance, sample=raremax+raremax_offset), "${ output_species_probabilities }", quote=FALSE, col.names=NA, sep="\t" )
#end if

#if "output_random_rarefied" in $include_files:
write.table( t( rrarefy(input_abundance, sample=raremax) ), "${ output_random_rarefied }", quote=FALSE, col.names=NA, sep="\t" )
#end if

#if "output_plot" in $include_files:
png('${output_plot}', width=1020, height=800, units='px')
rarecurve(input_abundance, step = ${step_size}, sample = raremax, xlab = "${xlab}", ylab = "${ylab}", label="${label}", col = "blue", cex = 0.6)
invisible(dev.off())
#end if
    ]]>
        </configfile>
    </configfiles>
    <inputs>
        <expand macro="params_load_tabular_file" />
        <param name="sample_size" type="integer" value="" min="1" optional="True" label="Subsample size for rarefying community" help="Leave empty to subsample by community size for the smallest sample."/>
        <param name="step_size" type="integer" value="1" min="1" label="Step size for sample sizes"/>
        <param name="xlab" type="text" value="Sample Size" label="X-axis label"/>
        <param name="ylab" type="text" value="Species" label="Y-axis label"/>
        <param name="label" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="True" label="Label rarefaction curves by rownames of X"/>
        <param name="include_outputs" type="select" multiple="True" label="Datasets to create">
            <option value="output_species_count" selected="true">Count of species</option>
            <option value="output_species_frequency" selected="true">Species frequency</option>
            <option value="output_richness" selected="true">Richness</option>
            <option value="output_species_probabilities" selected="true">Species probabilities</option>
            <option value="output_slope" selected="true">Slope of rarefaction curve</option>
            <option value="output_plot" selected="true">Rarefaction plot</option>
            <option value="output_random_rarefied" selected="true">Randomly rarefied community matrix</option>
            <option value="output_r_script" selected="false">R script</option>
        </param>
    </inputs>
    <outputs>
        <data format="tabular" name="output_species_count" label="${tool.name} on ${on_string} (number of species)">
            <filter>"output_species_count" in include_outputs</filter>
        </data>
        <data format="tabular" name="output_species_frequency" label="${tool.name} on ${on_string} (frequency of species)">
            <filter>"output_species_frequency" in include_outputs</filter>
        </data>
        <data format="tabular" name="output_richness" label="${tool.name} on ${on_string} (estimated richness)">
            <filter>"output_richness" in include_outputs</filter>
        </data>
        <data format="tabular" name="output_species_probabilities" label="${tool.name} on ${on_string} (species probabilities)">
            <filter>"output_species_probabilities" in include_outputs</filter>
        </data>
        <data format="tabular" name="output_slope" label="${tool.name} on ${on_string} (slope of curve)">
            <filter>"output_slope" in include_outputs</filter>
        </data>
        <data format="png" name="output_plot" label="${tool.name} on ${on_string} (plot)">
            <filter>"output_plot" in include_outputs</filter>
        </data>
        <data format="tabular" name="output_random_rarefied" label="${tool.name} on ${on_string} (Random rarefied community matrix)">
            <filter>"output_random_rarefied" in include_outputs</filter>
        </data>
        <data format="txt" name="output_r_script" label="${tool.name} on ${on_string} (Rscript)">
            <filter>"output_r_script" in include_outputs</filter>
        </data>
    </outputs>
    <tests>
        <test expect_num_outputs="7">
            <param name="input_abundance" ftype="tabular" value="vegan_in.tabular"/>
            <param name="species_column" value="6"/>
            <param name="sample_columns" value="2"/>
            <param name="sample_size" value=""/>
            <param name="step_size" value="1"/>
            <param name="xlab" value="Sample Size"/>
            <param name="ylab" value="Species"/>
            <param name="label" value="TRUE"/>
            <output name="output_species_count" ftype="tabular" file="vegan_output_species_count.tabular" />
            <output name="output_species_frequency" ftype="tabular" file="vegan_output_species_frequency.tabular" />
            <output name="output_richness" ftype="tabular" file="vegan_output_richness.tabular" />
            <output name="output_species_probabilities" ftype="tabular" file="vegan_output_species_probabilities.tabular" />
            <output name="output_slope" ftype="tabular" file="vegan_output_slope.tabular" />
            <output name="output_plot" ftype="png" file="vegan_output_plot.png"  compare="sim_size" />
            <output name="output_random_rarefied" ftype="tabular" file="vegan_output_random_rarefied.tabular" />
        </test>
    </tests>
    <help>
        <![CDATA[

        Gives the expected species richness in random subsamples of size sample from the community. The size of sample should be smaller than total community size, but the function will work for larger sample as well (with a warning) and return non-rarefied species richness (and standard error = 0). Rarefaction can be performed only with genuine counts of individuals. The function rarefy is based on Hurlbert’s (1971) formulation, and the standard errors on Heck et al. (1975).

        Returns probabilities that species occur in a rarefied community of size sample.

        Draws a rarefaction curve for each row of the input data. The rarefaction curves are evaluated using the interval of step sample sizes, always including 1 and total sample size. If sample is specified, a vertical line is drawn at sample with horizontal lines for the rarefied species richnesses.


.. class:: warningmark

When subsampling by community size, slope of the rarefaction curve and species probabilities are computed using community size-1
        ]]>
    </help>
    <expand macro="citations" />
</tool>