Skip to content

Commit

Permalink
Add wrapper for varVAMP (galaxyproject#5676)
Browse files Browse the repository at this point in the history
Co-authored-by: Bjoern Gruening <[email protected]>
Co-authored-by: Wolfgang Maier <[email protected]>
  • Loading branch information
3 people authored Jan 27, 2024
1 parent bc68b3c commit 7f509fd
Show file tree
Hide file tree
Showing 9 changed files with 1,868 additions and 0 deletions.
9 changes: 9 additions & 0 deletions tools/varvamp/.shed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: varvamp
owner: iuc
description: "Variable VirusAMPlicons (varVAMP) is a tool to design primers for highly diverse viruses"
homepage_url: https://github.com/jonas-fuchs/varVAMP/
long_description: Design degenerated primers on highly variable alignments for full genome sequencing or qPCR. Specifically developed for viruses.
remote_repository_url: https://github.com/jonas-fuchs/varVAMP
type: unrestricted
categories:
- Sequence Analysis
138 changes: 138 additions & 0 deletions tools/varvamp/macros.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
<?xml version="1.0"?>
<macros>
<token name="@TOOL_VERSION@">1.1.1</token>
<token name="@VERSION_SUFFIX@">0</token>
<xml name="main_parameters">
<conditional name="main_params">
<param name="specify_how" type="select" label="How to set the main parameters, threshold for consensus nucleotides and max ambiguous nts per primer?">
<option value="set_n_ambig">Specify max ambiguous nts, estimate suitable threshold</option>
<option value="set_threshold">Specify threshold, estimate max ambiguous nts</option>
<option value="set_both">Specify values for both</option>
</param>
<when value="set_n_ambig">
<param argument="--n-ambig" type="integer" min="0" value="2" label="Maximum number of ambiguous nucleotides per primer to be tolerated (default: 2)" />
<yield />
</when>
<when value="set_threshold">
<param argument="--threshold" type="float" min="0.0" max="1.0" value="0.8" label="Threshold for consensus nucleotides" />
</when>
<when value="set_both">
<param argument="--threshold" type="float" min="0.0" max="1.0" value="0.8" label="Threshold for consensus nucleotides" />
<param argument="--n-ambig" type="integer" min="0" value="2" label="Maximum number of ambiguous nucleotides per primer to be tolerated" />
<yield />
</when>
</conditional>
</xml>
<xml name="amplicon_length_restrictions">
<param argument="--opt-length" type="integer" min="1" value="1000" label="Optimal length of the amplicons" />
<param argument="--max-length" type="integer" min="1" value="1500" label="Maximal length of the amplicons" />
</xml>
<xml name="blast_options">
<conditional name="filter_blast_hits">
<param name="choice" type="select" label="Avoid amplicons with off-target primer products?" help="This functionality requires a custom BLAST database of off-target sequences to check amplicon primer candidates against." >
<option value="no">No, don't consider off-target products</option>
<option value="yes">Yes</option>
</param>
<when value="no" />
<when value="yes">
<param argument="--database" type="data" format="blastdbn" label="BLAST database" />
<conditional name="blast_advanced_cond">
<param name="blast_advanced" type="select" label="Customize BLAST Settings?" help="Choosing Yes here, lets you overwrite advanced BLAST-related settings defined in varVAMP's default configuration file." >
<option value="no">No, use varVAMP default settings</option>
<option value="yes">Yes</option>
</param>
<when value="no" />
<when value="yes">
<section name="blast_params" title="BLAST parameters">
<param name="evalue" type="integer" min="0" value="5000" label="BLAST expect (E) value"/>
<param name="reward" type="integer" min="0" value="1" label="BLAST reward (for a nucleotide match)"/>
<param name="penalty" type="integer" max="0" value="-1" label="BLAST penalty (for a mismatch)"/>
<param name="gapopen" type="integer" min="0" value="2" label="BLAST gapopen" help="Cost to open a gap"/>
<param name="gapextend" type="integer" min="0" value="1" label="BLAST gapextend" help="Cost to extend a gap"/>
</section>
<section name="blast_hits_usage" title="varVAMP settings for handling BLAST hits">
<param name="BLAST_MAX_DIFF" type="float" min="0" max="1" value="0.5" label="BLAST_MAX_DIFF" help="Minimal fraction of identity to primer to consider a BLAST hit an off-target primer binding site" />
<param name="BLAST_SIZE_MULTI" type="float" min="1" value="2" label="BLAST_SIZE_MULTI" help="Disregard off-target amplicons with a length greater than the configured maximal length of target amplicons multiplied by this value" />
<param name="BLAST_PENALTY" type="integer" min="0" value="50" label="BLAST_PENALTY" help="Extra penalty imposed on amplicons with off-target primer products; the default of 50 should be high enough to consider such amplicons only when no other amplicons without off-target products can be found." />
</section>
</when>
</conditional>
</when>
</conditional>
</xml>
<xml name="customize_advanced">
<conditional name="advanced_config">
<param name="customize" type="select" label="Customize Advanced Settings?" help="Choosing Yes here, lets you overwrite advanced settings defined in varVAMP's default configuration file.">
<option value="no">No, use defaults for advanced settings</option>
<option value="yes">Yes</option>
</param>
<when value="no" />
<when value="yes">
<section name="basic_primer_params" title="Constraints on amplicon primers" expanded="false">
<param name="PRIMER_TMP_min" type="integer" min="0" value="56" label="Minimal melting temperature"/>
<param name="PRIMER_TMP_max" type="integer" min="0" value="63" label="Maximal melting temperature"/>
<param name="PRIMER_TMP_opt" type="integer" min="0" value="60" label="Optimal melting temperature"/>
<param name="PRIMER_GC_RANGE_min" type="integer" min="0" max="100" value="35" label="Minimal GC-content" />
<param name="PRIMER_GC_RANGE_max" type="integer" min="0" max="100" value="65" label="Maximal GC-content" />
<param name="PRIMER_GC_RANGE_opt" type="integer" min="0" max="100" value="50" label="Optimal GC-content" />
<param name="PRIMER_SIZES_min" type="integer" min="1" value="18" label="Minimal primer size" />
<param name="PRIMER_SIZES_max" type="integer" min="1" value="24" label="Maximal primer size" />
<param name="PRIMER_SIZES_opt" type="integer" min="1" value="21" label="Optimal primer size" />
<param name="PRIMER_MAX_POLYX" type="integer" min="1" value="4" label="Maximal length of polyX runs in primer" />
<param name="PRIMER_MAX_DINUC_REPEATS" type="integer" min="0" value="4" label="Maximal length of dinucleotide repeats in primer" />
<param name="PRIMER_GC_END_min" type="integer" min="0" max="5" value="1" label="Minimal number of GCs among the 3'-terminal 5 bases of the primer" />
<param name="PRIMER_GC_END_max" type="integer" min="0" max="5" value="3" label="Maximal number of GCs among the 3'-terminal 5 bases of the probe" />
<param name="PRIMER_MIN_3_WITHOUT_AMB" type="integer" min="0" value="3" label="Minimal length of 3'-end without ambiguous bases." />
<param name="PRIMER_HAIRPIN" type="integer" min="0" value="47" label="Maximal melting temperature for secondary structures (hairpins) in primer" />
<param name="PRIMER_MAX_DIMER_TMP" type="integer" min="0" value="47" label="Maximal melting temperature for primer dimers (homo- or heterodimers)" />
</section>
<yield />
<section name="pcr_params" title="PCR Parameters" expanded="false">
<param name="PCR_MV_CONC" type="float" min="0" value="100" label="Monovalent cations mM conc." />
<param name="PCR_DV_CONC" type="float" min="0" value="2" label="Divalent cations mM conc." />
<param name="PCR_DNTP_CONC" type="float" min="0" value="0.8" label="dNTP mM conc." />
<param name="PCR_DNA_CONC" type="float" min="0" value="15" label="Primer nM conc." />
</section>
<section name="penalty_multipliers" title="Primer penalties, multipliers and penalty cutoffs" expanded="false">
<param name="PRIMER_TM_PENALTY" type="float" min="0" max="10" value="2" label="Temperature penalty multiplier" help="Each °C deviation of primer melting temperature from the configured optimal melting temperature inflicts a penalty of this size." />
<param name="PRIMER_GC_PENALTY" type="float" min="0" value="0.2" label="GC-content penalty multiplier" help="Each % deviation of primer GC-content from the configured optimal GC-content inflicts a penalty of this size." />
<param name="PRIMER_SIZE_PENALTY" type="float" min="0" value="0.5" label="Primer size penalty multiplier" help="Each base deviation of primer length from the configured optimal length inflicts a penalty of this size."/>
<param name="PRIMER_MAX_BASE_PENALTY" type="integer" min="0" value="10" label="Maximal primer base penalty" help="Primer base penalty is the sum of the primer's temperature, GC-content and size penalties as defined above. If that base penalty exceeds the maximum defined here, the candidate primer gets discarded and is not considered further." />
<param name="PRIMER_3_PENALTY" type="text" value="32, 16, 8, 4, 2" optional="false" label="3' mismatch penalties" help="This comma-separated list of integers, defines the extra penalties associated with mismatches at the last, second-last, third-last, etc. base from the 3'-end of the primer. These extra penalties are added after applying the maximal base penalty threshold above.">
<validator type="regex" message="Please specify a comma-separated list of integers"> *(\d+, *)*\d+ *$</validator>
</param>
<param name="PRIMER_PERMUTATION_PENALTY" type="float" min="0" value="0.1" label="Permutations penalty" help="For primers with ambiguous bases, permutations are the number of possible non-ambiguous primer sequences that the ambiguous sequence represents. Each individual permutation inflicts the penalty defined here." />
</section>
</when>
</conditional>
</xml>
<xml name="primer_scheme_outputs">
<param name="scheme_outputs" type="select" display="checkboxes" multiple="true" optional="true" label="Primer scheme outputs">
<option value="primer_seqs" selected="true">Sequences of all designed oligos</option>
<option value="primer_binding_sites" selected="true">Primer binding sites in BED format; includes primer penalties (lower is better) as the score column</option>
<option value="amplicon_sites" selected="true">Amplicon locations in BED format; includes amplicon penalties (lower is better) in the score column</option>
<option value="primer_details" selected="true">Primer details in tabular format</option>
<yield />
</param>
</xml>
<xml name="consensus_outputs">
<param name="aln_cons_outputs" type="select" display="checkboxes" multiple="true" optional="true" label="Consensus sequence and alignment-related outputs">
<option value="ambiguous_consensus" selected="true">The consensus sequence containing ambiguous nucleotides; this sequence is what positional information in primer scheme outputs is referring to!</option>
<option value="majority_consensus">Consensus sequence without ambiguous nucleotide codes, but with the most prevalent nucleotide at each position instead.</option>
<option value="alignment_cleaned">The preprocessed alignment used to build consensus sequences</option>
</param>
</xml>
<xml name="graphical_outputs">
<param name="plot_outputs" type="select" display="checkboxes" multiple="true" optional="true" label="Graphical outputs">
<option value="amplicon_plot" selected="true">Amplicon design overview</option>
<option value="per_base_mismatches" selected="true">Per-primer barplot of mismatches to input sequences</option>
</param>
</xml>
<xml name="miscellaneous_outputs">
<param name="misc_outputs" type="select" display="checkboxes" multiple="true" optional="true" label="Other/intermediate outputs" help="These outputs enable more complete tracing of steps performed by varVAMP and serve mostly debug purposes.">
<option value="primer_regions">List of all candidate regions of the consensus sequence that were evaluated for primers in BED format</option>
<yield />
</param>
</xml>
</macros>

2 changes: 2 additions & 0 deletions tools/varvamp/test-data/ambiguous_consensus.fasta
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
>ambiguous_consensus
tatcccgtrtycaractgayatccttattaayytgatgcaaccycgrcagcttgtkttccgrccygaagtyytstggaaycayccgatccagcgrgtyatacataatgagctggagcartactgccgwgcycgygctggycgytgyctkgargtkggsgcycayccaagatcyatyaatgayaacccyaatgtyytgcaccggtgcttyctycgcccggtyggdagagaygtmcagcgytggtaytcygccccsacycgyggyccagcggcyaaytgccgccgytcygcgctacgyggyytgccccctgtcgaycgyacmtaytgcttcgacgggttytcccgctgcgcytttgccgctgagacyggratygctttataytcactrcatgacctytggccytcggaygtygcggaggcya
Loading

0 comments on commit 7f509fd

Please sign in to comment.