view miniprot.xml @ 5:6b20d051d0dc draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/miniprot commit 810c6000c2d67e78764285c659c8082bbc573d71
author iuc
date Thu, 28 Mar 2024 17:28:56 +0000
parents 00b22efdd100
children
line wrap: on
line source

<?xml version="1.0"?>
<tool id="miniprot" name="Miniprot align" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.05">
    <description>align a protein sequence against a genome with affine gap penalty, splicing and frameshift</description>
    <macros>
        <import>macros.xml</import>
    </macros>
    <expand macro="xrefs"/>
    <expand macro="requirements"/>
    <command detect_errors="exit_code"><![CDATA[
        miniprot
        -t \${GALAXY_SLOTS:-1}
        #if str($adv.options) == "yes"
            $adv.mapping.no_splicing
            -c $adv.mapping.max_kmer
            -n $adv.mapping.min_syncmers
            -m $adv.mapping.min_chain_score
            -l $adv.mapping.second_round_kmer_size
            -e $adv.mapping.max_extension
            -p $adv.mapping.score_ratio
            -N $adv.mapping.max_secondary_alignments
            -w $adv.mapping.log_gap_penalty_weight
            -O $adv.alignment.gap_open
            -E $adv.alignment.gap_extension
            -J $adv.alignment.intron_open
            -C $adv.alignment.non_canonical_splice
            -F $adv.alignment.frameshift
            -B $adv.alignment.end_bonus
            -j $adv.alignment.splice_model
            #if str($adv.ncbi_table) !=""
                -T '$adv.ncbi_table' 
            #end if
        #if str($adv.mapping.intron_size.mode) == 'manual'
            -G $adv.mapping.intron_size.max_intron      
        #elif str($adv.mapping.intron_size.mode) == 'auto'
            -I
        #end if
    
        #if str($adv.output.prefix) != 'MP'
            -P '$adv.output.prefix'
        #end if
            $adv.output.print_unmapped_proteins
            --outn=$adv.output.outputs_per_query
            --outc=$adv.output.output_fraction_query
            --outs=$adv.output.output_score_least
            $adv.output.output_translated_protein
            $adv.output.output_no_cs
            $adv.output.output_residue_alignment
        #end if
        #if str($db.dbtype) == 'fasta'
            '$db.genomic_fasta'
            -k $db.kmer_size
            -b $db.bits_per_block  
            -M $db.modimisers
            -L $db.min_ORF
        #else
            '$db.genomic_db'
        #end if
        #if str($output_format) == "gff"
            --gff
        #else if str($output_format) == "gtf"
            --gtf
        #end if
        '$protein_fasta' > '$output_alignment'
    ]]></command>

    <inputs>
        <conditional name="db">
            <param name="dbtype" type="select" label="Database type" help="Build an index from FASTA or use a pre-indexed database">
                <option value="fasta" selected="true">FASTA</option>
                <option value="preindexed">Pre-indexed</option>
            </param>
            <when value="fasta">
                <param name="genomic_fasta" type="data" format="fasta,fasta.gz" label="Genomic sequence (FASTA)" help="Genomic contigs / scaffolds to be aligned against in FASTA format"/>
                <param argument="-k" name="kmer_size" type="integer" min="1" value="6" label="K-mer size for genome-wide indexing"/>
                <param argument="-b" name="bits_per_block" type="integer" min="1" value="8" label="Number of bits per bin" help="Miniprot splits the genome into non-overlapping bins of 2^8 bp in size"/>
                <param argument="-M" name="modimisers" type="integer" value="1" label="Sample k-mers at a rate 1/2**INT" help="Increasing this option reduces peak memory but decreases sensitivity"/>
                <param argument="-L" name="min_ORF" type="integer" value="30" label="Minimum ORF length to index"/>
            </when>
            <when value="preindexed">
                <!-- refine the datatype here once Miniprot index data type is in Galaxy -->
                <param name="genomic_db" type="data" format="binary" label="Pre-indexed genomic database" help="A pre-indexed database built by miniprot"/>
            </when>
        </conditional>
        <param name="protein_fasta" type="data" format="fasta,fasta.gz" label="Protein sequence (FASTA)" help="Protein sequences to be aligned in FASTA format"/>
        <param name="output_format" type="select" label="Output format">
            <option value="gff" selected="true">GFF3</option>
            <option value="paf">PAF</option>
            <option value="gtf">GTF</option>
        </param>
        <conditional name="adv">
            <param name="options" type="select" label="Advanced options">
                <option value="yes">Show</option>
                <option value="no" selected="true">Hide</option>
            </param>
            <when value="yes"> 
                <section name="mapping" title="Mapping">               
                    <param argument="-S" name="no_splicing" type="boolean" truevalue="-S" falsevalue="" checked="false" label="No splicing" help="No splicing (apply -G1000 -J1000 -e1000)"/>
                    <param argument="-c" name="max_kmer" type="integer" min="1" value="20000" label="Max k-mer occurences"/>
                    <param argument="-w" name="log_gap_penalty_weight" type="float" min="0" max="1" value="0.75" label="Log gap penalty weight"/>
                    <param argument="-n" name="min_syncmers" type="integer" min="1" value="3" label="Minimum number of syncmers in a chain"/>
                    <param argument="-m" name="min_chain_score" type="integer" min="0" value="0" label="Minimum chaining score"/>
                    <param argument="-l" name="second_round_kmer_size" type="integer" min="1" value="5" label="K-mer size for second round of chaining"/>
                    <param argument="-e" name="max_extension" type="integer" min="0" value="10000" label="Max extension for second round of chaining"/>
                    <param argument="-p" name="score_ratio" type="float" min="0" max="1" value="0.7" label="Minimum secondary-to-primary score ratio"/>
                    <param argument="-N" name="max_secondary_alignments" type="integer" min="0" value="30" label="Max secondary alignments to consider"/>
                    <conditional name="intron_size">
                        <param name="mode" type="select" label="Maximum intron size">
                            <option value="manual" selected="true">Manual</option>
                            <option value="auto">Auto (3.6*sqrt)</option>
                        </param>
                        <when value="manual">
                            <param argument="-G" name="max_intron" type="integer" min="0" value="200000" label="Maximum intron size"/>
                        </when> 
                        <when value="auto"/>
                    </conditional>
                </section>
                <section name="alignment" title="Alignment">
                    <param argument="-O" name="gap_open" type="integer" min="0" value="11" label="Gap open penalty"/>
                    <param argument="-E" name="gap_extension" type="integer" min="0" value="1" label="Gap extension penalty" help="A k-long gap costs open_penalty+k*extension_penalty"/>
                    <param argument="-J" name="intron_open" type="integer" min="0" value="29" label="Intron open penalty"/>
                    <param argument="-C" name="non_canonical_splice" type="float" value="1" label="Weight of splice penalty; 0 to ignore splice signals"/>
                    <param argument="-F" name="frameshift" type="integer" min="0" value="23" label="Frameshift penalty"/>
                    <param argument="-B" name="end_bonus" type="integer" min="0" value="5" label="Bonus score for alignment reaching query ends"/>
                    <param argument="-j" name="splice_model" type="select" label="Splicing model for the target genome" help="2=mammal, 1=general, 0=none">
                        <option value="O" >None: No splicing model (0)</option>
                        <option value="1" selected="true">General: Optimal splicing sequence: '|GTR...YAG|' (1)</option>
                        <option value="2">Mammal: Optimal splicing sequence: 'G|GTR...YYYNYAG|' (2)</option>
                    </param>
                </section>
                <section name="output" title="Output">
                    <param argument="-P" name="prefix" type="text" label="Prefix for IDs in GFF3 output" value="MP">
                        <sanitizer invalid_char="">
                            <valid initial="string.ascii_letters,string.digits">
                                <add value="_" />
                                <add value="-" />
                            </valid>
                        </sanitizer>
                    </param>
                    <param argument="-u" name="print_unmapped_proteins" type="boolean" truevalue="-u" falsevalue="" label="Print unmapped proteins" checked="false"/>
                    <param argument="--outn" name="outputs_per_query" type="integer" min="0" value="100" label="Outputs per query" help="The number of outputs will be the minimum of this and the max secondary alignments option"/>
                    <param argument="--aln" name="output_residue_alignment" type="boolean" truevalue="--aln" falsevalue="" checked="false" label="Output residue alignment" help="Only for GFF output" />
                    <param argument="--outs" name="output_score_least" type="float" min="0" max="1" value="0.99" label="For each protein, only output alignments with a score higher than 'best_score' multiplied by this value"/>
                    <param argument="--outc" name="output_fraction_query" type="float" value="0.1" label="Output if at least this fraction of query is aligned"/>
                    <param argument="--trans" name="output_translated_protein" type="boolean" truevalue="--trans" falsevalue="" checked="false" label="Output translated protein sequences" help="Skipping frameshift"/>
                    <param argument="--no-cs" name="output_no_cs" type="boolean" truevalue="--no-cs" falsevalue="" checked="false" label="Disable the cs tag"/>
                </section>
                <param argument="-K" name="query_batch_size" type="integer" min="1" value="2000000" label="Query batch size"/>
                <param argument="-T" name="ncbi_table" type="select" optional="true" label="Enter NCBI translation table">
                    <option value="1">1 Standard code</option>
                    <option value="2">2 Vertebrate mitochondrial</option>
                    <option value="3">3 Yeast mitochondrial</option>
                    <option value="4">4 Mold, Protozoan, and Coelenterate Mitochondrial and the Mycoplasma/Spiroplasma</option>
                    <option value="5">5 Invertebrate mitochondrial</option>
                    <option value="6">6 Ciliate, dasycladacean and hexamita nuclear</option>
                    <option value="9">9 Echinoderm and flatworm mitochondrial</option>
                    <option value="10">10 Euplotid nuclear</option>
                    <option value="11" selected="true">11 Bacterial, Archaeal and Plant Plastid</option>
                    <option value="12">12 Alternative yeast nuclear</option>
                    <option value="13">13 Ascidian mitochondrial</option>
                    <option value="14">14 Alternative flatworm mitochondrial</option>
                    <option value="16">16 Chlorophycean mitochondrial</option>
                    <option value="21">21 Trematode Mitochondrial</option>
                    <option value="22">22 Scenedesmus obliquus Mitochondrial</option>
                    <option value="23">23 Thraustochytrium Mitochondrial</option>
                    <option value="24">24 Rhabdopleuridae Mitochondrial</option>
                    <option value="25">25 Candidate Division SR1 and Gracilibacteria</option>
                    <option value="26">26 Pachysolen tannophilus Nuclear</option>
                    <option value="27">27 Karyorelict Nuclear</option>
                    <option value="28">28 Condylostoma Nuclear</option>
                    <option value="29">29 Mesodinium nuclear</option>
                    <option value="30">30 Peritrich nuclear</option>
                    <option value="31">31 Blastocrithidia nuclear</option>
                    <option value="33">33 Cephalodiscidae mitochondrial</option>
                </param>
            </when>
            <when value="no">
            </when>
        </conditional>

    </inputs>
    <outputs>
        <data name="output_alignment" format="gff3" label="Miniprot on ${on_string}">
            <change_format>
                <when input="output_format" value="paf" format="paf"/>
                <when input="output_format" value="gtf" format="gtf"/>
            </change_format>
        </data>
    </outputs>
    <tests>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta" />
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"/>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"/>
            <output name="output_alignment" ftype="gff3">
                <assert_contents>
                    <has_text text="ID=MP000001;Rank=1;Identity=0.3420;Positive=0.5104;Target=tr|I6YGH7|I6YGH7_MYCTU 1 375"/>
                    <has_text text="ID=MP000066;Rank=1;Identity=0.3613;Positive=0.5178;Target=sp|P9WQE5|PPSB_MYCTU 1 1214"/> 
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta"/>
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"/>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"/>
            <param name="output_format" value="paf"/>
            <output name="output_alignment" ftype="paf">
                <assert_contents>
                    <has_text text="tr|O06302|O06302_MYCTU" />
                    <has_text text="cs:Z::29*agcG:3*gtgA:5*ccgA:9*accS:1*gccV:4*cagL:1*gtcS:3*gtcA*gtcI*accA*gccG:8*gccS:2*ggtA:5*gccI*agcG:1*ctgA:4*gccV:5*gggL:1*gtgS:2"/>
                </assert_contents>
            </output>
        </test>     
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta" />
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"/>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"/>
            <param name="output_format" value="gff" />
            <conditional name="adv">
                <param name="options" value="yes" />
                <param name="second_round_kmer_size" value="32"/>
            </conditional>
            <output name="output_alignment" ftype="gff3">
                <assert_contents>
                    <has_text text="##gff-version 3" />
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta"></param>
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"></param>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"></param>
            <param name="output_format" value="gtf"></param>
            <conditional name="adv">
                <param name="options" value="yes"></param>
                <param name="second_round_kmer_size" value="32"></param>
            </conditional>
            <output name="output_alignment" ftype="gtf">
                <assert_contents>
                    <has_text text="NC_000962.3" />
                    <has_text text='transcript_id "MPT000004"; gene_id "MPG000004"'/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta"></param>
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"></param>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"></param>
            <param name="output_format" value="gff"></param>
            <conditional name="adv">
                <param name="options" value="yes"/>
                <section name="output">
                    <param name="output_translated_protein" value="true"/>
                </section>
            </conditional>
            <output name="output_alignment" ftype="gff3">
                <assert_contents>
                    <has_text text="tr|I6YGH7|I6YGH7_MYCTU" />
                    <has_text text="VDIDLDPSTEKLRAQIRAEVAALKAMPREPRTVAIAEGGWVLPYLPKPWGRAASPVEQIIIAQEFTAGRVKRPQIAIATWIVPSIVAFGTDNQKQRLLPPTFRGDIFWCQLFSEPGAGSDLASLATKATRVDGGWRITGQKIWTTGAQYSQWGALLARTDPSAPKHNGITYFLLDMKSEGVQVKPLRELTGKEFFNTVYLDDVFVPDELVLGEVNRGWEVSRNTLTAERVSIGGSDSTFLPTLGEFVDFVRDYRFEGQFDQVARHRAGQLIAEGHATKLLNLRSTLLTLAGGDPMAPAAISKLLSMRTGQGYAEFAVSSFGTDAVIGDTERLPGKWGEYLLASRATTIYGGTSEVQLNIIAERLLGLPRDP"/>
                    <has_n_lines n="1647"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta"></param>
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"></param>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"></param>
            <param name="output_format" value="gtf"></param>
            <conditional name="adv">
                <param name="options" value="yes"></param>
                <section name="output">
                    <param name="output_translated_protein" value="true"/>
                </section>
            </conditional>
            <output name="output_alignment" ftype="gtf">
                <assert_contents>
                    <has_text text="tr|I6YGH7|I6YGH7_MYCTU"/>
                    <has_text text="VDIDLDPSTEKLRAQIRAEVAALKAMPREPRTVAIAEGGWVLPYLPKPWGRAASPVEQIIIAQEFTAGRVKRPQIAIATWIVPSIVAFGTDNQKQRLLPPTFRGDIFWCQLFSEPGAGSDLASLATKATRVDGGWRITGQKIWTTGAQYSQWGALLARTDPSAPKHNGITYFLLDMKSEGVQVKPLRELTGKEFFNTVYLDDVFVPDELVLGEVNRGWEVSRNTLTAERVSIGGSDSTFLPTLGEFVDFVRDYRFEGQFDQVARHRAGQLIAEGHATKLLNLRSTLLTLAGGDPMAPAAISKLLSMRTGQGYAEFAVSSFGTDAVIGDTERLPGKWGEYLLASRATTIYGGTSEVQLNIIAERLLGLPRDP"/>
                    <has_text text="NC_000962.3"/>
                    <has_n_lines n="2196"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta"></param>
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"></param>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"></param>
            <param name="output_format" value="paf"></param>
            <conditional name="adv">
                <param name="options" value="yes"></param>
                <section name="output">
                    <param name="output_translated_protein" value="true"/>
                </section>
            </conditional>
            <output name="output_alignment" ftype="paf">
                <assert_contents>
                    <has_text text="tr|I6YGH7|I6YGH7_MYCTU"/>
                    <has_text text="VDIDLDPSTEKLRAQIRAEVAALKAMPREPRTVAIAEGGWVLPYLPKPWGRAASPVEQIIIAQEFTAGRVKRPQIAIATWIVPSIVAFGTDNQKQRLLPPTFRGDIFWCQLFSEPGAGSDLASLATKATRVDGGWRITGQKIWTTGAQYSQWGALLARTDPSAPKHNGITYFLLDMKSEGVQVKPLRELTGKEFFNTVYLDDVFVPDELVLGEVNRGWEVSRNTLTAERVSIGGSDSTFLPTLGEFVDFVRDYRFEGQFDQVARHRAGQLIAEGHATKLLNLRSTLLTLAGGDPMAPAAISKLLSMRTGQGYAEFAVSSFGTDAVIGDTERLPGKWGEYLLASRATTIYGGTSEVQLNIIAERLLGLPRDP"/>
                    <has_text text="sp|O05779|FTSE_MYCTU"/>
                    <has_n_lines n="654"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta"></param>
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"></param>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"></param>
            <param name="output_format" value="paf"></param>
            <conditional name="adv">
                <param name="options" value="yes"></param>
                <section name="output">
                    <param name="output_no_cs" value="true"/>
                </section>
            </conditional>
            <output name="output_alignment" ftype="paf">
                <assert_contents>
                    <has_text text="tr|I6YGH7|I6YGH7_MYCTU"/>
                    <has_text text="cg:Z:17M1D20M14I2M1I24M1I195M4D61M6D40M"/>
                    <has_text text="cg:Z:188M3I4M5I11M6I3M1I31M2D1M282U7M1D6M3D28M3I20M1D52M3D4M1D24M2I8M5I5M2I32M1D21M"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta"></param>
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"></param>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"></param>
            <param name="output_format" value="gff"></param>
            <conditional name="adv">
                <param name="options" value="yes"></param>
                <section name="output">
                    <param name="output_no_cs" value="true"/>
                </section>
            </conditional>
            <output name="output_alignment" ftype="gff3">
                <assert_contents>
                    <has_text text="##gff-version 3"/>
                    <has_text text="tr|I6YGH7|I6YGH7_MYCTU"/>
                    <has_text text="cg:Z:17M1D20M14I2M1I24M1I195M4D61M6D40M"/>
                </assert_contents>
            </output>
        </test>
        <test expect_num_outputs="1">
            <conditional name="db">
                <param name="dbtype" value="fasta"></param>
                <param name="genomic_fasta" value="input_genome.fasta.gz" ftype="fasta"></param>
            </conditional>
            <param name="protein_fasta" value="input_query.fasta.gz" ftype="fasta"></param>
            <param name="output_format" value="gtf"></param>
            <param name="ncbi_table" value="1"></param>
            <conditional name="adv">
                <param name="options" value="yes"></param>
                <section name="output">
                    <param name="output_no_cs" value="true"/>
                </section>
            </conditional>
            <output name="output_alignment" ftype="gtf">
                <assert_contents>
                    <has_text text="NC_000962.3"/>
                    <has_text text='gene_id "MPG000001"'/>
                </assert_contents>
            </output>
        </test>
    </tests>

    <help><![CDATA[
        miniprot_  rapidly aligns a protein sequence against a genome with affine gap penalty, splicing and frameshift.
        It is primarily intended for annotating protein-coding genes in a new species using known genes from other species.

        While an index of the genome to be mapped to can be built "on the fly", the Miniprot index tool can pre-index a genome
        and will result in faster performance if the genome index is reused multiple times.

        For details of the algorithm and some insight into how parameters can be tuned see this overview_.

        .. _miniprot: https://github.com/lh3/miniprot
        .. _overview: https://github.com/lh3/miniprot#algorithm-overview
    ]]></help> 
    <expand macro="citation"></expand>
</tool>