view busco.xml @ 20:ea8146ee148f draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/busco/ commit 9bf18dbcef34a48d3c40150ee953706bececfdd1
author iuc
date Mon, 18 Mar 2024 16:01:49 +0000
parents 2a5b8b9936bf
children
line wrap: on
line source

<tool id="busco" name="Busco" profile="20.01" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@">
    <description>assess genome assembly and annotation completeness</description>
    <macros>
        <import>macros.xml</import>
    </macros>
    <xrefs>
        <xref type="bio.tools">busco</xref>
    </xrefs>
    <requirements>
        <requirement type="package" version="@TOOL_VERSION@">busco</requirement>
        <requirement type="package" version="1.34">tar</requirement>
        <requirement type="package" version="1">fonts-conda-ecosystem</requirement>
    </requirements>
    <version_command>busco --version</version_command>
    <command><![CDATA[

#if $busco_mode.mode == 'geno' and $busco_mode.use_augustus.use_augustus_selector == 'yes':

if [ -z "\$AUGUSTUS_CONFIG_PATH" ] ; then BUSCO_PATH=\$(dirname \$(which busco)) ; export AUGUSTUS_CONFIG_PATH=\$(realpath \${BUSCO_PATH}/../config) ; fi &&
cp -r "\$AUGUSTUS_CONFIG_PATH/" augustus_dir/ &&
export AUGUSTUS_CONFIG_PATH=`pwd`/augustus_dir/ &&

#if $busco_mode.use_augustus.aug_prediction.augustus_mode == 'history':
    ## Using an augustus model from history, we need to unzip it and let augustus find it
    mkdir -p 'augustus_dir/species/' &&
    tar -C 'augustus_dir/species/' -xzf '${busco_mode.use_augustus.aug_prediction.augustus_model}' &&
#end if

#end if

busco
--in '${input}'
--mode '${busco_mode.mode}'
--out busco_galaxy
--cpu \${GALAXY_SLOTS:-4}
--evalue ${adv.evalue}
--limit ${adv.limit}
--contig_break ${adv.contig_break}

#if $lineage_conditional.selector == 'cached':
    --offline
    --download_path $lineage_conditional.cached_db.fields.path
#else
    --update-data
#end if

#if $lineage.lineage_mode == "auto_detect":
    $lineage.auto_lineage
#else if $lineage.lineage_mode == "select_lineage":
    --lineage_dataset '${lineage.lineage_dataset}'
#end if

#if $busco_mode.mode == 'geno' and $busco_mode.use_augustus.use_augustus_selector == 'yes':

    ${busco_mode.use_augustus.long}
    --augustus

    #if $busco_mode.use_augustus.aug_prediction.augustus_mode == 'builtin':
        --augustus_species '${busco_mode.use_augustus.aug_prediction.augustus_species}'
    #else if $busco_mode.use_augustus.aug_prediction.augustus_mode == 'history':
        --augustus_species local
    #end if
#end if

#if str( $busco_mode.mode ) == "geno":
    #if $busco_mode.miniprot:
        --miniprot
    #end if
#end if
    
#if $outputs and 'image' in $outputs:
    &&
    mkdir BUSCO_summaries
    &&
    ls -l busco_galaxy/run_*/ &&
    cp busco_galaxy/short_summary.*.txt BUSCO_summaries/
    &&
    generate_plot.py -wd BUSCO_summaries -rt specific
#end if

#if $outputs and 'gff' in $outputs:
    &&
    echo "\##gff-version 3" > busco_output.gff
    &&
    ## gff files can be absent
    cat busco_galaxy/run_*/busco_sequences/*busco_sequences/*.gff >> busco_output.gff 2> /dev/null || true
#end if


]]>    </command>
    <inputs>
        <param type="data" name="input" format="fasta" label="Sequences to analyse" help="Can be an assembled genome or transcriptome (DNA), or protein sequences from an annotated gene set." />
        <conditional name="lineage_conditional">
            <param name="selector" type="select" label="Lineage data source">
                <option value="download">Download lineage data</option>
                <option value="cached">Use cached lineage data</option>
            </param>
            <when value="cached">
                <param name="cached_db" label="Cached database with lineage" type="select">
                    <options from_data_table="busco_database">
                        <validator message="No BUSCO database is available" type="no_options" />
                    </options>
                </param>
            </when>
            <when value="download"/>
        </conditional>
        <conditional name="busco_mode">
            <param argument="--mode" type="select" label="Mode">
                <option value="geno">Genome assemblies (DNA)</option>
                <option value="tran">Transcriptome assemblies (DNA)</option>
                <option value="prot">annotated gene sets (protein)</option>
            </param>
            <when value="geno">
                <param name="miniprot" type="boolean" checked="false" label="Generate miniprot output"/>
                <conditional name="use_augustus">
                    <param name="use_augustus_selector" type="select" label="Use Augustus instead of Metaeuk">
                        <option value="yes">Yes, use Augustus</option>
                        <option value="no" selected="true">Use Metaeuk</option>
                    </param>
                    <when value="no" />
                    <when value="yes">
                        <conditional name="aug_prediction">
                            <param name="augustus_mode" type="select" label="Augustus species model">
                                <option value="no" selected="true">Use the default species for selected lineage</option>
                                <option value="builtin">Use another predefined species model</option>
                                <option value="history">Use a custom species model</option>
                            </param>
                            <when value="no" />
                            <when value="history">
                                <param name="augustus_model" type="data" format="augustus" label="Augustus model" />
                            </when>
                            <when value="builtin">
                                <param name="augustus_species" type="select" label="Augustus species model">
                                    <expand macro="augustus_species" />
                                </param>
                            </when>
                        </conditional>
                        <param argument="--long" type="boolean" checked="false" truevalue="--long" falsevalue="" label="Optimization mode Augustus self-training" help="Adds considerably to run time, but can improve results for some non-model organisms" />
                    </when>
                </conditional>
            </when>
            <when value="tran" />
            <when value="prot" />
        </conditional>

        <conditional name="lineage">
            <param name="lineage_mode" type="select" label="Auto-detect or select lineage?" help="Let BUSCO decide the best lineage automatically, or select from known lineage">
                <option value="auto_detect">Auto-detect</option>
                <option value="select_lineage">Select lineage</option>
            </param>
            <when value="auto_detect">
                <param name="auto_lineage" type="select" label="auto-lineage group" help="Taxonomic group to run with auto-lineage.">
                    <option value="--auto-lineage">All taxonomic groups (--auto-lineage)</option>
                    <option value="--auto-lineage-prok">Prokaryotes (--auto-lineage-prok)</option>
                    <option value="--auto-lineage-euk">Eukaryotes (--auto-lineage-euk)</option>
                </param>
            </when>
            <when value="select_lineage">
                <param argument="--lineage_dataset" type="select" label="Lineage">
                    <expand macro="lineages" />
                </param>
            </when>
        </conditional>

        <param name="outputs" type="select" optional="true" multiple="true" label="Which outputs should be generated">
            <option value="short_summary" selected="true">short summary text</option>
            <option value="missing">list with missing IDs</option>
            <option value="image">summary image</option>
            <option value="gff">gff</option>
        </param>

        <section name="adv" title="Advanced Options" expanded="False">
            <param argument="--evalue" type="float" value="0.001" min="0" max="1" label="E-value cutoff for BLAST searches." />
            <param argument="--limit" type="integer" value="3" label="How many candidate regions to consider" />
            <param argument="--contig_break" type="integer" value="10" label="Number of contiguous Ns to signify a break between contigs"/>
        </section>
    </inputs>

    <outputs>
        <data name='busco_sum' format='txt' label="${tool.name} on ${on_string}: short summary" from_work_dir="busco_galaxy/run_*/short_summary.txt">
            <filter>outputs and 'short_summary' in outputs</filter>
        </data>
        <data name='busco_table' format='tabular' label="${tool.name} on ${on_string}: full table" from_work_dir="busco_galaxy/run_*/full_table.tsv" />
        <data name='busco_missing' format='tabular' label="${tool.name} on ${on_string}: missing buscos" from_work_dir="busco_galaxy/run_*/missing_busco_list.tsv">
            <filter>outputs and 'missing' in outputs</filter>
        </data>
        <data name='summary_image' format='png' label="${tool.name} on ${on_string}: summary image" from_work_dir="BUSCO_summaries/busco_figure.png">
            <filter>outputs and 'image' in outputs</filter>
        </data>
        <data name='busco_gff' format='gff3' label="${tool.name} on ${on_string}: GFF" from_work_dir="busco_output.gff">
            <filter>outputs and 'gff' in outputs</filter>
        </data>
        <data name='busco_miniprot' format='gff3' label="${tool.name} on ${on_string}: Miniprot" from_work_dir="busco_galaxy/run_*/miniprot_output/*.gff">
            <filter>busco_mode['mode'] == 'geno' and busco_mode['miniprot']</filter>
        </data>               
    </outputs>
    
    <tests>
        <test expect_num_outputs="4">
            <param name="input" value="genome.fa" />
            <conditional name="lineage">
                <param name="lineage_mode" value="select_lineage" />
                <param name="lineage_dataset" value="arthropoda_odb10" />
            </conditional>
            <conditional name="busco_mode">
                <param name="mode" value="geno" />
                <conditional name="use_augustus">
                    <param name="use_augustus_selector" value="yes" />
                </conditional>
            </conditional>
            <param name="outputs" value="short_summary,missing,gff" />
            <output name="busco_sum" file="genome_results/short_summary" compare="re_match_multiline" />
            <output name="busco_table" file="genome_results/full_table" compare="diff" lines_diff="4" />
            <output name="busco_gff">
                <assert_contents>
                    <has_n_lines n="1"/>
                    <has_text text="##gff-version 3" />
                </assert_contents>
            </output>
            <output name="busco_missing" file="genome_results/missing_buscos_list" compare="diff" lines_diff="4">
                <assert_contents>
                    <has_text text="# BUSCO version is: @TOOL_VERSION@" />
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="5">
            <param name="input" value="proteome.fa" />
            <conditional name="lineage">
                <param name="lineage_mode" value="select_lineage" />
                <param name="lineage_dataset" value="arthropoda_odb10" />
            </conditional>
            <conditional name="busco_mode">
                <param name="mode" value="prot" />
            </conditional>
            <param name="outputs" value="short_summary,missing,image,gff" />
            <output name="busco_sum" file="proteome_results/short_summary" compare="re_match_multiline" />
            <output name="busco_table" file="proteome_results/full_table" compare="diff" lines_diff="4" />
            <output name="busco_missing" file="proteome_results/missing_buscos_list" compare="diff" lines_diff="4" />
            <output name="summary_image" file="proteome_results/summary.png" compare="sim_size" />
            <output name="busco_gff">
                <assert_contents>
                    <has_n_lines n="1"/>
                    <has_text text="##gff-version 3" />
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="5">
            <param name="input" value="transcriptome.fa" />
            <conditional name="lineage">
                <param name="lineage_mode" value="select_lineage" />
                <param name="lineage_dataset" value="arthropoda_odb10" />
            </conditional>
            <conditional name="busco_mode">
                <param name="mode" value="tran" />
            </conditional>
            <param name="outputs" value="short_summary,missing,image,gff" />
            <output name="busco_sum" file="transcriptome_results/short_summary" compare="re_match_multiline" />
            <output name="busco_table" file="transcriptome_results/full_table" compare="diff" lines_diff="6" />
            <output name="busco_missing" file="transcriptome_results/missing_buscos_list" compare="diff" lines_diff="6" />
            <output name="summary_image" file="transcriptome_results/summary.png" compare="sim_size" />
            <output name="busco_gff" file="transcriptome_results/out.gff" compare="diff" />
        </test>
        <test expect_num_outputs="4">
            <param name="input" value="genome.fa" />
            <conditional name="lineage">
                <param name="lineage_mode" value="select_lineage" />
                <param name="lineage_dataset" value="arthropoda_odb10" />
            </conditional>
            <conditional name="busco_mode">
                <param name="mode" value="geno" />
                <param name="miniprot" value="true"/>
                <conditional name="use_augustus">
                    <param name="use_augustus_selector" value="yes" />
                    <conditional name="aug_prediction">
                        <param name="augustus_mode" value="builtin" />
                        <param name="augustus_species" value="human" />
                    </conditional>
                </conditional>
            </conditional>
            <param name="outputs" value="short_summary,gff" />
            <output name="busco_sum" file="genome_results/short_summary" compare="re_match_multiline"/>
            <output name="busco_table" file="genome_results/full_table" compare="diff" lines_diff="4" />
            <output name="busco_gff">
                <assert_contents>
                    <has_n_lines n="1"/>
                    <has_text text="##gff-version 3" />
                </assert_contents>
            </output>
            <!-- The miniprot.gff file is too large. A file containing only the first 1000 lines is used for this test. -->
            <output name="busco_miniprot" file="genome_results/miniprot_1000.gff" compare="contains" lines_diff="304463"/>
        </test>
        <test expect_num_outputs="3">
            <param name="input" value="genome.fa" />
            <conditional name="lineage">
                <param name="lineage_mode" value="select_lineage" />
                <param name="lineage_dataset" value="arthropoda_odb10" />
            </conditional>
            <conditional name="busco_mode">
                <param name="mode" value="geno" />
                <conditional name="use_augustus">
                    <param name="use_augustus_selector" value="yes" />
                    <conditional name="aug_prediction">
                        <param name="augustus_mode" value="history" />
                        <param name="augustus_model" value="local.tar.gz" ftype="augustus" />
                    </conditional>
                </conditional>
            </conditional>
            <param name="outputs" value="short_summary,missing" />
            <output name="busco_sum" file="genome_results/short_summary" compare="re_match_multiline" />
            <output name="busco_table" file="genome_results/full_table" compare="diff" lines_diff="4" />
            <output name="busco_missing" file="genome_results/missing_buscos_list" compare="diff" lines_diff="4" />
        </test>
        <test expect_num_outputs="5">
            <param name="input" value="genome.fa" />
            <conditional name="lineage">
                <param name="lineage_mode" value="select_lineage" />
                <param name="lineage_dataset" value="arthropoda_odb10" />
            </conditional>
            <conditional name="busco_mode">
                <param name="mode" value="geno" />
                <conditional name="use_augustus">
                    <param name="use_augustus_selector" value="no" />
                </conditional>
            </conditional>
            <param name="outputs" value="short_summary,missing,image,gff" />
            <output name="busco_sum" file="genome_results_metaeuk/short_summary" compare="re_match_multiline" />
            <output name="busco_table" file="genome_results_metaeuk/full_table" compare="diff" lines_diff="6" />
            <output name="busco_missing" file="genome_results_metaeuk/missing_buscos_list" compare="diff" lines_diff="6" />
            <output name="summary_image" file="genome_results_metaeuk/summary.png" compare="sim_size" />
            <output name="busco_gff" ftype="gff3">
                <assert_contents>
                    <has_n_lines n="13"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="5">
            <param name="input" value="genome.fa" />
            <conditional name="lineage">
                <param name="lineage_mode" value="auto_detect" />
                <param name="auto_lineage" value="--auto-lineage" />
            </conditional>
            <conditional name="busco_mode">
                <param name="mode" value="geno" />
                <conditional name="use_augustus">
                    <param name="use_augustus_selector" value="no" />
                </conditional>
            </conditional>
            <param name="outputs" value="short_summary,missing,image,gff" />
            <output name="busco_sum" file="genome_results_metaeuk_auto/short_summary" compare="diff" lines_diff="6" />
            <output name="busco_table" file="genome_results_metaeuk_auto/full_table" compare="diff" lines_diff="6" />
            <output name="busco_missing" file="genome_results_metaeuk_auto/missing_buscos_list" compare="diff" lines_diff="2" />
            <output name="summary_image" file="genome_results_metaeuk_auto/summary.png" compare="sim_size" />
            <output name="busco_gff" file="genome_results_metaeuk_auto/out.gff" compare="diff" />
        </test>
        <test expect_num_outputs="2">
            <param name="input" value="genome.fa" />
            <conditional name="lineage_conditional">
                <param name="selector" value="cached"/>
                <param name="cached_db" value="busco-demo-db-20230328"/>
            </conditional>
            <conditional name="lineage">
                <param name="lineage_mode" value="select_lineage" />
                <param name="lineage_dataset" value="archaea_odb10" />
            </conditional>
            <param name="outputs" value="short_summary" />
            <output name="busco_sum" file="genome_results/short_summary_cached" compare="diff" lines_diff="6" />
            <output name="busco_table" file="genome_results/full_table_cached" compare="diff" lines_diff="4" />
            <assert_stdout>
                <has_text text="Running BUSCO using lineage dataset archaea_odb10 (prokaryota, 2021-02-23)"/>
            </assert_stdout>
        </test>
    </tests>
    <help><![CDATA[


BUSCO: assessing genome assembly and annotation completeness with Benchmarking Universal Single-Copy Orthologs
--------------------------------------------------------------------------------------------------------------

Interpreting the results
^^^^^^^^^^^^^^^^^^^^^^^^

BUSCO_ attempts to provide a quantitative assessment of the completeness in terms of the expected gene content of a
genome assembly, transcriptome, or annotated gene set. The results are simplified into categories of Complete
and single-copy, Complete and duplicated, Fragmented, or Missing BUSCOs.

BUSCO completeness results make sense only in the context of the biology of your organism.
You have to understand whether missing or duplicated genes are of biological or technical origin.
For instance, a high level of duplication may be explained by a recent whole duplication event
(biological) or a chimeric assembly of haplotypes (technical).
Transcriptomes and protein sets that are not filtered for isoforms will lead to a high proportion of duplicates.
Therefore you should filter them before a BUSCO analysis.
Finally, focusing on specific tissues or specific life stages and conditions in a transcriptomic experiment
is unlikely to produce a BUSCO-complete transcriptome. In this case, consistency across your samples
is what you will be aiming for.

For more information please refer to the Busco_ `user guide <https: / /busco.ezlab.org /busco_userguide.html#interpreting-the-results>`_
.

.. _BUSCO: http://busco.ezlab.org/

    ]]>    </help>
    <expand macro="citations" />
</tool>