<commit_before><?xml version='1.0' encoding='utf-8'?>
<tool id="megahit" name="MEGAHIT" version="@VERSION@.4">
    <description>for metagenomics assembly</description>
    <macros>
        <token name="@VERSION@">1.1.3</token>
    </macros>
    <requirements>
        <requirement type="package" version="@VERSION@">megahit</requirement>
    </requirements>
    <version_command>megahit --version</version_command>
    <command detect_errors="exit_code"><![CDATA[
megahit
    #if $input_option.choice == 'paired'
        -1 '${input_option.fastq_input1}'
        -2 '${input_option.fastq_input2}'
    #else if $input_option.choice == 'paired_collection'

        #if $input_option.batchmode.processmode == 'merge':
            -1 ${ ','.join(['"%s"' % x.forward for x in $input_option.batchmode.pair_input_list]) }
            -2 ${ ','.join(['"%s"' % x.reverse for x in $input_option.batchmode.pair_input_list]) }
        #else:
            -1 '${input_option.batchmode.pair_input.forward}'
            -2 '${input_option.batchmode.pair_input.reverse}'
        #end if
    #else if $input_option.choice == 'interleaved'
        --12 '${input_option.interleaved_file}'
    #else
        -r '${input_option.single_files}'
    #end if
    ##basic assembly
    --min-count '${basic_section.min_count}'
    --k-min '${basic_section.k_min}'
    --k-max '${basic_section.k_max}'
    --k-step '${basic_section.k_step}'
    --min-contig-len '${basic_section.min_contig_len}'
    ##advanced assembly
    ${advanced_section.nomercy}
    --bubble-level '${advanced_section.bubble_level}'
    --merge-level '${advanced_section.merge_level}'
    --prune-level '${advanced_section.prune_level}'
    --prune-depth '${advanced_section.prune_depth}'
    --low-local-ratio '${advanced_section.low_local_ratio}'
    ${advanced_section.nolocal}
    ${advanced_section.kmin1pass}
&& cat megahit_out/log
    ]]></command>
    <inputs>
        <conditional name="input_option">
            <param name="choice" type="select" label="Select your input option">
                <option value="single" selected="true">Single</option>
                <option value="interleaved">Interleaved-paired-end</option>
                <option value="paired">Paired-end</option>
                <option value="paired_collection">Paired-end collection</option>
            </param>
            <when value="single">
                <param name="single_files" argument="-r" type="data" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" multiple="true" label="Single-end file(s)" help="FASTQ/FASTA/FASTQ.GZ files accepted" />
            </when>
            <when value="interleaved">
                <param name="interleaved_file" argument="--12" type="data" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz,fastq.bz2" multiple="true" label="Interleaved-paired-end file(s)" help="Accepts fasta (.fasta, .fa) and fastq (.fastq) formats as well as gzip (.gz) and gzip2 (.bz2) files" />
            </when>
            <when value="paired">
                <param name="fastq_input1" argument="-1" type="data" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" multiple="true" label="Mate 1 input reads"/>
                <param name="fastq_input2" argument="-2" type="data" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" multiple="true" label="Mate 2 input reads"/>
            </when>
            <when value="paired_collection">
              <conditional name="batchmode">
                <param name="processmode" type="select" label="Run in batch mode?" help="Selecting individual mode will generate one assembly dataset for each fastq pair-end dataset. Selecting the merge option will produce one assembly dataset for all input fastq pair-end datasets" display="radio">
                  <option value="individual" selected="true">Run individually</option>
                  <option value="merge">Merge all fastq pair-end</option>
                </param>
                <when value="individual">
                  <param name="pair_input" type="data_collection" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" collection_type="paired" label="Select a paired collection"/>
                </when>
                <when value="merge">
                  <param name="pair_input_list" type="data_collection" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" collection_type="list:paired" label="Select a paired collection"/>
                </when>
              </conditional>
            </when>
        </conditional>
        <section name="basic_section" title="Basic assembly options" expanded="True">
            <param name="min_contig_len" argument="--min-contig-len" type="integer" value="200" label="minimum length of contigs to output" />
            <param name="min_count" argument="--min-count" type="integer" value="2" label="minimum multiplicity for filtering (k_min+1)-mers"/>
            <param name="k_min" argument="--k-min" type="integer" value="21" label="minimum kmer size" max="255" help="must be odd number"/>
            <param name="k_max" argument="--k-max" type="integer" value="141" label="maximum kmer size" max="255" help="must be odd number"/>
            <param name="k_step" argument="--k-step" type="integer" value="12" label="increment of kmer size of each iteration" max="28" help="must be even number"/>
        </section>
        <section name="advanced_section" title="Advanced assembly options" expanded="False">
            <param name="nomercy" type="boolean" checked="false" truevalue="--no-mercy" falsevalue=""  label="do not add mercy kmers" />
            <param name="bubble_level" argument="--bubble-level" type="integer" value="2" min="0" max="2" label="intensity of bubble merging (0-2), 0 to disable" />
            <param name="merge_level" argument="--merge-level" type="text" label="merge complex bubbles of length " value="20,0.95" />
            <param name="prune_level" argument="--prune-level" type="integer" value="2" min="0" max="3" label="strength of low depth pruning" />
            <param name="prune_depth" argument="--prune-depth" type="integer" value="2" min="0" label="remove unitigs with avg kmer depth less than this value" />
            <param name="low_local_ratio" argument="--low-local-ratio" type="float" value="0.2" label="ratio threshold to define low local coverage contigs" />
            <param name="nolocal" type="boolean" checked="false" truevalue="--no-local" falsevalue="" label="disable local assembly" />
            <param name="kmin1pass" type="boolean" checked="false" truevalue="--kmin-1pass" falsevalue="" label="use 1pass mode to build SdBG of k_min" />
        </section>
    </inputs>
    <outputs>
        <data format="fasta" name="output" from_work_dir="megahit_out/final.contigs.fa" label="Assembly with ${tool.name} on ${on_string}" />
    </outputs>
    <tests>
        <test>
            <conditional name="input_option">
                <param name="choice" value="single"/>
                <param name="single_files" value="refExample.fa" ftype="fasta"/>
            </conditional>
            <output name="output">
            <assert_contents>
              <has_line_matching expression=">k21_1 flag=3 multi=1.0486 len=576" />
            </assert_contents>
            </output>
        </test>
        <test>
            <conditional name="input_option">
                <param name="choice" value="paired"/>
                <param name="fastq_input1" value="paired-fq1.fa"/>
                <param name="fastq_input2" value="paired-fq2.fa"/>
            </conditional>
            <output name="output" file="paired_result.fa"/>
        </test>
        <test>
          <conditional name="input_option">
            <param name="choice" value="paired_collection"/>
            <conditional name="batchmode">
              <param name="processmode" value="merge"/>
              <param name="pair_input_list">
                <collection type="list:paired">
                <element name="Pair1">
                  <collection type="paired">
                    <element name="forward" value="paired-fq1.fa" ftype="fasta"/>
                    <element name="reverse" value="paired-fq2.fa" ftype="fasta"/>
                  </collection>
                </element>
                </collection>
              </param>
            </conditional>
          </conditional>
          <output name="output" file="paired_result.fa"/>
        </test>
    </tests>
    <help><![CDATA[

**What it does**

MEGAHIT is a single node assembler for large and complex metagenomics NGS reads, such as soil. It makes use of succinct de Bruijn graph (SdBG) to achieve low memory assembly. MEGAHIT can optionally utilize a CUDA-enabled GPU to accelerate its SdBG contstruction. The GPU-accelerated version of MEGAHIT has been tested on NVIDIA GTX680 (4G memory) and Tesla K40c (12G memory) with CUDA 5.5, 6.0 and 6.5.

--------

**Project links:**

https://github.com/voutcn/megahit


    ]]></help>
    <citations>
        <citation type="doi">10.1093/bioinformatics/btv033</citation>
    </citations>
</tool>
<commit_msg>supports k-list option and prioritizes over kmin,kmax,kstep; moved min-contig-len<commit_after><?xml version='1.0' encoding='utf-8'?>
<tool id="megahit" name="MEGAHIT" version="@VERSION@.4">
    <description>for metagenomics assembly</description>
    <macros>
        <token name="@VERSION@">1.1.3</token>
    </macros>
    <requirements>
        <requirement type="package" version="@VERSION@">megahit</requirement>
    </requirements>
    <version_command>megahit --version</version_command>
    <command detect_errors="exit_code"><![CDATA[
megahit
    #if $input_option.choice == 'paired'
        -1 '${input_option.fastq_input1}'
        -2 '${input_option.fastq_input2}'
    #else if $input_option.choice == 'paired_collection'

        #if $input_option.batchmode.processmode == 'merge':
            -1 ${ ','.join(['"%s"' % x.forward for x in $input_option.batchmode.pair_input_list]) }
            -2 ${ ','.join(['"%s"' % x.reverse for x in $input_option.batchmode.pair_input_list]) }
        #else:
            -1 '${input_option.batchmode.pair_input.forward}'
            -2 '${input_option.batchmode.pair_input.reverse}'
        #end if
    #else if $input_option.choice == 'interleaved'
        --12 '${input_option.interleaved_file}'
    #else
        -r '${input_option.single_files}'
    #end if
    ##basic assembly
    --min-count '${basic_section.min_count}'
    #if $basic_section["k_mer"].k_mer_method == "klist_method":
        --k-list '${basic_section["k_mer"].k_list}'
    #else:
        --k-step '${basic_section["k_mer"].k_step}'
        --k-min '${basic_section["k_mer"].k_min}'
        --k-max '${basic_section["k_mer"].k_max}'
    #end if
    ##advanced assembly
    ${advanced_section.nomercy}
    --bubble-level '${advanced_section.bubble_level}'
    --merge-level '${advanced_section.merge_level}'
    --prune-level '${advanced_section.prune_level}'
    --prune-depth '${advanced_section.prune_depth}'
    --low-local-ratio '${advanced_section.low_local_ratio}'
    ${advanced_section.nolocal}
    ${advanced_section.kmin1pass}
    --min-contig-len '${basic_section.min_contig_len}'
&& cat megahit_out/log
    ]]></command>
    <inputs>
        <conditional name="input_option">
            <param name="choice" type="select" label="Select your input option">
                <option value="single" selected="true">Single</option>
                <option value="interleaved">Interleaved-paired-end</option>
                <option value="paired">Paired-end</option>
                <option value="paired_collection">Paired-end collection</option>
            </param>
            <when value="single">
                <param name="single_files" argument="-r" type="data" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" multiple="true" label="Single-end file(s)" help="FASTQ/FASTA/FASTQ.GZ files accepted" />
            </when>
            <when value="interleaved">
                <param name="interleaved_file" argument="--12" type="data" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz,fastq.bz2" multiple="true" label="Interleaved-paired-end file(s)" help="Accepts fasta (.fasta, .fa) and fastq (.fastq) formats as well as gzip (.gz) and gzip2 (.bz2) files" />
            </when>
            <when value="paired">
                <param name="fastq_input1" argument="-1" type="data" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" multiple="true" label="Mate 1 input reads"/>
                <param name="fastq_input2" argument="-2" type="data" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" multiple="true" label="Mate 2 input reads"/>
            </when>
            <when value="paired_collection">
              <conditional name="batchmode">
                <param name="processmode" type="select" label="Run in batch mode?" help="Selecting individual mode will generate one assembly dataset for each fastq pair-end dataset. Selecting the merge option will produce one assembly dataset for all input fastq pair-end datasets" display="radio">
                  <option value="individual" selected="true">Run individually</option>
                  <option value="merge">Merge all fastq pair-end</option>
                </param>
                <when value="individual">
                  <param name="pair_input" type="data_collection" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" collection_type="paired" label="Select a paired collection"/>
                </when>
                <when value="merge">
                  <param name="pair_input_list" type="data_collection" format="fastq,fastqsanger,fasta,fastq.gz,fastqsanger.gz" collection_type="list:paired" label="Select a paired collection"/>
                </when>
              </conditional>
            </when>
        </conditional>
        <section name="basic_section" title="Basic assembly options" expanded="True">
            <param name="min_count" argument="--min-count" type="integer" value="2" label="minimum multiplicity for filtering (k_min+1)-mers"/>
            <conditional name="k_mer">
                <param name="k_mer_method" type="select" label="K-mer specification method">
                    <option value="klist_method">Specify list</option>
                    <option value="klim_method">Specify min, max, and step values</option>
                </param>
                <when value="klist_method">
                    <param name="k_list" argument="--k-list" type="text" value="21,29,39,59,79,99,119,141" label="comma-separated list of kmer size" help="all must be odd, in the range 15-255, and with increments &lt;= 28"/>
                </when>
                <when value="klim_method"> 
                    <param name="k_min" argument="--k-min" type="integer" value="21" label="minimum kmer size." max="255" help="Must be odd number. For ultra complex metagenomics data such as soil, a larger kmin, say 27, is recommended to reduce the complexity of the de Bruijn graph. Quality trimming is also recommended. For high-depth generic data, large --k-min (25 to 31) is recommended. Smaller --k-step, say 10, is more friendly to low-coverage datasets."/>
                    <param name="k_max" argument="--k-max" type="integer" value="141" label="maximum kmer size" max="255" help="must be odd number"/>
                    <param name="k_step" argument="--k-step" type="integer" value="12" label="increment of kmer size of each iteration" max="28" help="must be even number"/>
                </when>
            </conditional>
        </section>
        <section name="advanced_section" title="Advanced assembly options" expanded="False">
            <param name="nomercy" type="boolean" checked="false" truevalue="--no-mercy" falsevalue=""  label="do not add mercy kmers" />
            <param name="bubble_level" argument="--bubble-level" type="integer" value="2" min="0" max="2" label="intensity of bubble merging (0-2), 0 to disable" />
            <param name="merge_level" argument="--merge-level" type="text" label="merge complex bubbles of length " value="20,0.95" />
            <param name="prune_level" argument="--prune-level" type="integer" value="2" min="0" max="3" label="strength of low depth pruning" />
            <param name="prune_depth" argument="--prune-depth" type="integer" value="2" min="0" label="remove unitigs with avg kmer depth less than this value" />
            <param name="low_local_ratio" argument="--low-local-ratio" type="float" value="0.2" label="ratio threshold to define low local coverage contigs" />
            <param name="nolocal" type="boolean" checked="false" truevalue="--no-local" falsevalue="" label="disable local assembly" />
            <param name="kmin1pass" type="boolean" checked="false" truevalue="--kmin-1pass" falsevalue="" label="use 1pass mode to build SdBG of k_min" />
        </section>
        <section name="output_section" title="Output options" expanded="True">
            <param name="min_contig_len" argument="--min-contig-len" type="integer" value="200" label="minimum length of contigs to output" />
        </section>
    </inputs>
    <outputs>
        <data format="fasta" name="output" from_work_dir="megahit_out/final.contigs.fa" label="Assembly with ${tool.name} on ${on_string}" />
    </outputs>
    <tests>
        <test>
            <conditional name="input_option">
                <param name="choice" value="single"/>
                <param name="single_files" value="refExample.fa" ftype="fasta"/>
            </conditional>
            <output name="output">
            <assert_contents>
              <has_line_matching expression=">k21_1 flag=3 multi=1.0486 len=576" />
            </assert_contents>
            </output>
        </test>
        <test>
            <conditional name="input_option">
                <param name="choice" value="paired"/>
                <param name="fastq_input1" value="paired-fq1.fa"/>
                <param name="fastq_input2" value="paired-fq2.fa"/>
            </conditional>
            <output name="output" file="paired_result.fa"/>
        </test>
        <test>
          <conditional name="input_option">
            <param name="choice" value="paired_collection"/>
            <conditional name="batchmode">
              <param name="processmode" value="merge"/>
              <param name="pair_input_list">
                <collection type="list:paired">
                <element name="Pair1">
                  <collection type="paired">
                    <element name="forward" value="paired-fq1.fa" ftype="fasta"/>
                    <element name="reverse" value="paired-fq2.fa" ftype="fasta"/>
                  </collection>
                </element>
                </collection>
              </param>
            </conditional>
          </conditional>
          <output name="output" file="paired_result.fa"/>
        </test>
    </tests>
    <help><![CDATA[

**What it does**

MEGAHIT is a single node assembler for large and complex metagenomics NGS reads, such as soil. It makes use of succinct de Bruijn graph (SdBG) to achieve low memory assembly. MEGAHIT can optionally utilize a CUDA-enabled GPU to accelerate its SdBG contstruction. The GPU-accelerated version of MEGAHIT has been tested on NVIDIA GTX680 (4G memory) and Tesla K40c (12G memory) with CUDA 5.5, 6.0 and 6.5.

--------

**Project links:**

https://github.com/voutcn/megahit


    ]]></help>
    <citations>
        <citation type="doi">10.1093/bioinformatics/btv033</citation>
    </citations>
</tool>

{'fraction_non_alphanumeric': 0.14879104097734794, 'fraction_numerical': 0.01308220921354034, 'mean_word_length': 2.8221789883268484, 'pattern_counts': {'":': 1, '<': 268, '<?xml version=': 2, '>': 270, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3202912', 'n_tokens_mistral': 6078, 'n_tokens_neox': 5700, 'n_words': 1341}