comparison varvamp.xml @ 0:462e62be07e1 draft

planemo upload for repository https://github.com/jonas-fuchs/varVAMP commit 7f509fd29e994d1561ff9de14f26cf49f018dd2d
author iuc
date Sat, 27 Jan 2024 12:34:39 +0000
parents
children 80e18c0836e5
comparison
equal deleted inserted replaced
-1:000000000000 0:462e62be07e1
1 <tool id="varvamp" name="varVAMP" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="23.0">
2 <description>design primers for highly diverse viruses</description>
3 <macros>
4 <import>macros.xml</import>
5 </macros>
6 <xrefs>
7 <xref type="bio.tools">varvamp</xref>
8 </xrefs>
9 <requirements>
10 <requirement type="package" version="@TOOL_VERSION@">varvamp</requirement>
11 </requirements>
12 <version_command>varvamp --version</version_command>
13 <command detect_errors="exit_code"><![CDATA[
14 VARVAMP_CONFIG=custom_config varvamp
15
16 $mode.m_select
17 #if $mode.main_params.specify_how in ("set_threshold", "set_both"):
18 --threshold $mode.main_params.threshold
19 #end if
20 #if $mode.main_params.specify_how in ("set_n_ambig", "set_both"):
21 --n-ambig $mode.main_params.n_ambig
22 #if $mode.m_select == "qpcr":
23 --pn-ambig $mode.main_params.pn_ambig
24 #end if
25 #end if
26 #if str( $mode.m_select ) == "single":
27 --opt-length $mode.opt_length
28 --max-length $mode.max_length
29 #if $mode.limit_report.choice == "yes":
30 --report-n $mode.limit_report.report_n
31 #end if
32 #elif str( $mode.m_select ) == "tiled":
33 --opt-length $mode.opt_length
34 --max-length $mode.max_length
35 --overlap $mode.overlap
36 #elif str( $mode.m_select ) == "qpcr":
37 --test-n $mode.test_n
38 --deltaG $mode.deltaG
39 #end if
40 #if $mode.filter_blast_hits.choice == "yes":
41 --database '${mode.filter_blast_hits.database.extra_files_path}/blastdb'
42 #end if
43 --threads \${GALAXY_SLOTS:-1}
44
45 '$alignment'
46 results/
47
48 #if $mode.m_select == 'qpcr' and $mode.scheme_outputs and 'primer_seqs' in $mode.scheme_outputs:
49 ## make the primer sequences fasta discoverable under the same name that is used in "single" mode
50 && mv results/oligos.fasta results/primers.fasta
51 #end if
52 #if $mode.m_select == 'tiled' and $mode.scheme_outputs and 'primer_dimers' in $mode.scheme_outputs:
53 ## ensure the unsolvable_primer_dimers.tsv file, which varVAMP creates only conditionally, exists in all cases, in which we try to discover it as an output
54 && cp -n dimers_fallback.tsv results/unsolvable_primer_dimers.tsv
55 #end if
56 ]]></command>
57 <configfiles>
58 <configfile filename="custom_config"><![CDATA[#if $mode.advanced_config.customize == "yes":
59 PRIMER_TMP = ($mode.advanced_config.basic_primer_params.PRIMER_TMP_min, $mode.advanced_config.basic_primer_params.PRIMER_TMP_max, $mode.advanced_config.basic_primer_params.PRIMER_TMP_opt)
60 PRIMER_GC_RANGE = ($mode.advanced_config.basic_primer_params.PRIMER_GC_RANGE_min, $mode.advanced_config.basic_primer_params.PRIMER_GC_RANGE_max, $mode.advanced_config.basic_primer_params.PRIMER_GC_RANGE_opt)
61 PRIMER_SIZES = ($mode.advanced_config.basic_primer_params.PRIMER_SIZES_min, $mode.advanced_config.basic_primer_params.PRIMER_SIZES_max, $mode.advanced_config.basic_primer_params.PRIMER_SIZES_opt)
62 PRIMER_MAX_POLYX = $mode.advanced_config.basic_primer_params.PRIMER_MAX_POLYX
63 PRIMER_MAX_DINUC_REPEATS = $mode.advanced_config.basic_primer_params.PRIMER_MAX_DINUC_REPEATS
64 PRIMER_HAIRPIN = $mode.advanced_config.basic_primer_params.PRIMER_HAIRPIN
65 PRIMER_GC_END = ($mode.advanced_config.basic_primer_params.PRIMER_GC_END_min, $mode.advanced_config.basic_primer_params.PRIMER_GC_END_max)
66 PRIMER_MIN_3_WITHOUT_AMB = $mode.advanced_config.basic_primer_params.PRIMER_MIN_3_WITHOUT_AMB
67 PRIMER_MAX_DIMER_TMP = $mode.advanced_config.basic_primer_params.PRIMER_MAX_DIMER_TMP
68 #if str($mode.m_select) == "qpcr":
69 QPROBE_TMP = ($mode.advanced_config.qpcr_params.QPROBE_TMP_min, $mode.advanced_config.qpcr_params.QPROBE_TMP_max, $mode.advanced_config.qpcr_params.QPROBE_TMP_opt)
70 QPROBE_SIZES = ($mode.advanced_config.qpcr_params.QPROBE_SIZES_min, $mode.advanced_config.qpcr_params.QPROBE_SIZES_max, $mode.advanced_config.qpcr_params.QPROBE_SIZES_opt)
71 QPROBE_GC_RANGE = ($mode.advanced_config.qpcr_params.QPROBE_GC_RANGE_min, $mode.advanced_config.qpcr_params.QPROBE_GC_RANGE_max, $mode.advanced_config.qpcr_params.QPROBE_GC_RANGE_opt)
72 QPROBE_GC_END = ($mode.advanced_config.qpcr_params.QPROBE_GC_END_min, $mode.advanced_config.qpcr_params.QPROBE_GC_END_max)
73 QPRIMER_DIFF = $mode.advanced_config.qpcr_params.QPRIMER_DIFF
74 QPROBE_TEMP_DIFF = ($mode.advanced_config.qpcr_params.QPROBE_TEMP_DIFF_min, $mode.advanced_config.qpcr_params.QPROBE_TEMP_DIFF_max)
75 QPROBE_DISTANCE = ($mode.advanced_config.qpcr_params.QPROBE_DISTANCE_min, $mode.advanced_config.qpcr_params.QPROBE_DISTANCE_max)
76 END_OVERLAP = $mode.advanced_config.qpcr_params.END_OVERLAP
77 QAMPLICON_LENGTH = ($mode.advanced_config.qpcr_params.QAMPLICON_LENGTH_min, $mode.advanced_config.qpcr_params.QAMPLICON_LENGTH_max)
78 QAMPLICON_GC = ($mode.advanced_config.qpcr_params.QAMPLICON_GC_min, $mode.advanced_config.qpcr_params.QAMPLICON_GC_max)
79 QAMPLICON_DEL_CUTOFF = $mode.advanced_config.qpcr_params.QAMPLICON_DEL_CUTOFF
80 #end if
81 PCR_MV_CONC = $mode.advanced_config.pcr_params.PCR_MV_CONC
82 PCR_DV_CONC = $mode.advanced_config.pcr_params.PCR_DV_CONC
83 PCR_DNTP_CONC = $mode.advanced_config.pcr_params.PCR_DNTP_CONC
84 PCR_DNA_CONC = $mode.advanced_config.pcr_params.PCR_DNA_CONC
85 PRIMER_TM_PENALTY = $mode.advanced_config.penalty_multipliers.PRIMER_TM_PENALTY
86 PRIMER_GC_PENALTY = $mode.advanced_config.penalty_multipliers.PRIMER_GC_PENALTY
87 PRIMER_SIZE_PENALTY = $mode.advanced_config.penalty_multipliers.PRIMER_SIZE_PENALTY
88 PRIMER_MAX_BASE_PENALTY = $mode.advanced_config.penalty_multipliers.PRIMER_MAX_BASE_PENALTY
89 PRIMER_3_PENALTY = $mode.advanced_config.penalty_multipliers.PRIMER_3_PENALTY
90 PRIMER_PERMUTATION_PENALTY = $mode.advanced_config.penalty_multipliers.PRIMER_PERMUTATION_PENALTY
91 #end if
92 #if $mode.filter_blast_hits.choice == "yes":
93 #if $mode.filter_blast_hits.blast_advanced_cond.blast_advanced == "yes":
94 BLAST_SETTINGS = {
95 "outfmt": "6 qseqid sseqid qlen length mismatch gapopen sstart send sstrand",
96 "evalue": $mode.filter_blast_hits.blast_advanced_cond.blast_params.evalue,
97 "reward": $mode.filter_blast_hits.blast_advanced_cond.blast_params.reward,
98 "penalty": $mode.filter_blast_hits.blast_advanced_cond.blast_params.penalty,
99 "gapopen": $mode.filter_blast_hits.blast_advanced_cond.blast_params.gapopen,
100 "gapextend": $mode.filter_blast_hits.blast_advanced_cond.blast_params.gapextend
101 }
102 BLAST_MAX_DIFF = $mode.filter_blast_hits.blast_advanced_cond.blast_hits_usage.BLAST_MAX_DIFF
103 BLAST_SIZE_MULTI = $mode.filter_blast_hits.blast_advanced_cond.blast_hits_usage.BLAST_SIZE_MULTI
104 BLAST_PENALTY = $mode.filter_blast_hits.blast_advanced_cond.blast_hits_usage.BLAST_PENALTY
105 #end if
106 #end if
107 ]]></configfile>
108 <configfile filename="dimers_fallback.tsv"><![CDATA[#set $line = '\t'.join(['pool', 'primer_name_1', 'primer_name_2', 'dimer melting temp'])
109 $line]]></configfile>
110 </configfiles>
111 <inputs>
112 <param name="alignment" type="data" format="fasta" label="Multiple alignment of viral sequences" />
113 <conditional name="mode">
114 <param name="m_select" type="select" label="What kind of primers would you like to design? (varvamp mode)">
115 <option value="single">Primers for single amplicons (single)</option>
116 <option value="tiled">Tiled primer scheme for whole-genome sequencing (tiled)</option>
117 <option value="qpcr">qPCR primers (qpcr)</option>
118 </param>
119 <when value="single">
120 <expand macro="main_parameters" />
121 <expand macro="amplicon_length_restrictions" />
122 <expand macro="blast_options" />
123 <conditional name="limit_report">
124 <param name="choice" type="select" label="Limit the number of amplicons to report?">
125 <option value="no">No, report all qualifying amplicons</option>
126 <option value="yes">Yes, set an upper limit on amplicons to be reported</option>
127 </param>
128 <when value="no" />
129 <when value="yes">
130 <param argument="--report-n" type="integer" min="1" value="20" label="Report only the n highest scoring amplicons" />
131 </when>
132 </conditional>
133 <expand macro="customize_advanced" />
134 <expand macro="primer_scheme_outputs">
135 <option value="amplicon_assignment">Primer-to-amplicon assignment in tabular format; lists primers belonging to the same amplicon on one line for simpler automated parsing</option>
136 </expand>
137 <expand macro="consensus_outputs" />
138 <expand macro="graphical_outputs" />
139 <expand macro="miscellaneous_outputs">
140 <option value="all_primers">Binding sites of ALL high-scoring primers that were considered in BED format; includes primer penalties (lower is better) as the score column</option>
141 </expand>
142 </when>
143 <when value="tiled">
144 <expand macro="main_parameters" />
145 <expand macro="amplicon_length_restrictions" />
146 <param argument="--overlap" type="integer" min="1" value="100" label="Minimal required overlap between tiled amplicons" help="default: 100" />
147 <expand macro="blast_options" />
148 <expand macro="customize_advanced" />
149 <expand macro="primer_scheme_outputs">
150 <option value="amplicon_assignment" selected="true">Primer-to-amplicon assignment in tabular format; lists primers belonging to the same amplicon on one line; required input for automated primer trimming in some downstream analysis workflows</option>
151 <option value="primer_dimers" selected="true">If any primers in the tiling scheme are predicted to form primer dimers, details about these will be found in this tabular output.</option>
152 </expand>
153 <expand macro="consensus_outputs" />
154 <expand macro="graphical_outputs" />
155 <expand macro="miscellaneous_outputs">
156 <option value="all_primers">Binding sites of ALL high-scoring primers that were considered in BED format; includes primer penalties (lower is better) as the score column</option>
157 </expand>
158 </when>
159 <when value="qpcr">
160 <expand macro="main_parameters">
161 <param argument="--pn-ambig" type="integer" min="0" value="1" label="Maximum number of ambiguous nucleotides per qPCR probe to be tolerated" help="To enforce specificity of detection, varVAMP will refuse to work if you set this value higher than for the amplicon primers above, and you may actually want to set it slightly lower than that value." />
162 </expand>
163 <param argument="--test-n" type="integer" min="1" value="50" label="Top n qPCR amplicons to test" help="test the top n qPCR amplicons for secondary structures at the minimal primer temperature. (default: 50)" />
164 <param argument="--deltaG" type="integer" value="-3" label="Minimum free energy (kcal/mol/K) cutoff" help="Minimum free energy (kcal/mol/K) cutoff at the lowest primer melting temperature. (default: -3." />
165 <expand macro="blast_options" />
166 <expand macro="customize_advanced">
167 <section name="qpcr_params" title="Constraints on qPCR probes and amplicons" expanded="false">
168 <!--basic probe parameters-->
169 <param name="QPROBE_TMP_min" type="integer" min="0" value="64" label="Minimal qPCR probe melting temperature" help="With varVAMP default settings, the probe melting temperatures are 7°C higher than those of amplicon primers." />
170 <param name="QPROBE_TMP_max" type="integer" min="0" value="70" label="Maximal qPCR probe melting temperature" help="With varVAMP default settings, the probe melting temperatures are 7°C higher than those of amplicon primers." />
171 <param name="QPROBE_TMP_opt" type="integer" min="0" value="67" label="Optimal qPCR probe melting temperature" help="With varVAMP default settings, the probe melting temperatures are 7°C higher than those of amplicon primers." />
172 <param name="QPROBE_SIZES_min" type="integer" min="0" value="20" label="Minimal qPCR probe size" />
173 <param name="QPROBE_SIZES_max" type="integer" min="0" value="30" label="Maximal qPCR probe size" />
174 <param name="QPROBE_SIZES_opt" type="integer" min="0" value="25" label="Optimal qPCR probe size" />
175 <param name="QPROBE_GC_RANGE_min" type="integer" min="0" max="100" value="40" label="Minimal qPCR probe GC-content" />
176 <param name="QPROBE_GC_RANGE_max" type="integer" min="0" max="100" value="80" label="Maximal qPCR probe GC-content" />
177 <param name="QPROBE_GC_RANGE_opt" type="integer" min="0" max="100" value="60" label="Optimal qPCR probe GC-content" />
178 <param name="QPROBE_GC_END_min" type="integer" min="0" max="5" value="0" label="Minimal number of GCs among the 3'-terminal 5 bases of the probe" />
179 <param name="QPROBE_GC_END_max" type="integer" min="0" max="5" value="4" label="Maximal number of GCs among the 3'-terminal 5 bases of the probe" />
180 <!--constraints for amplicon design-->
181 <param name="QPRIMER_DIFF" type="integer" min="0" max="10" value="2" label="Maximal melting temperature difference among qPCR primers" />
182 <param name="QPROBE_TEMP_DIFF_min" type="integer" min="0" max="20" value="5" label="Minimal melting temperature difference between qPCR probe and primers" />
183 <param name="QPROBE_TEMP_DIFF_max" type="integer" min="0" max="20" value="10" label="Maximal melting temperature difference between qPCR probe and primers" />
184 <param name="QPROBE_DISTANCE_min" type="integer" min="0" max="20" value="4" label="Minimal distance of the qPCR probe from the primer on the same strand" />
185 <param name="QPROBE_DISTANCE_max" type="integer" min="0" max="20" value="15" label="Maximal distance of the qPCR probe from the primer on the same strand" />
186 <param name="END_OVERLAP" type="integer" min="0" max="10" value="5" label="End Overlap" help="Maximal overlap in bases between the ends of the qPCR probe and the primer on the opposite strand" />
187 <param name="QAMPLICON_LENGTH_min" type="integer" min="0" max="300" value="70" label="Minimal length of qPCR amplicons" />
188 <param name="QAMPLICON_LENGTH_max" type="integer" min="0" max="300" value="200" label="Maximal length of qPCR amplicons" />
189 <param name="QAMPLICON_GC_min" type="integer" min="0" max="100" value="40" label="Minimal GC-content of qPCR amplicons" />
190 <param name="QAMPLICON_GC_max" type="integer" min="0" max="100" value="60" label="Maximal GC-content of qPCR amplicons" />
191 <param name="QAMPLICON_DEL_CUTOFF" type="integer" min="0" max="10" value="4" label="Cutoff for deletions allowed in aligned regions under qPCR amplicons" help ="qPCR amplicon candidates are not considered further if they span regions of the alignment that contain deletions as long as this cutoff in bases, or longer."/>
192 </section>
193 </expand>
194 <expand macro="primer_scheme_outputs">
195 <option value="qpcr_design" selected="true">qPCR amplicon details in tabular format</option>
196 </expand>
197 <expand macro="consensus_outputs" />
198 <expand macro="graphical_outputs" />
199 <expand macro="miscellaneous_outputs">
200 <option value="probe_regions">List of all candidate regions of the consensus sequence that were evaluated for qPCR probes in BED format</option>
201 </expand>
202 </when>
203 </conditional>
204 </inputs>
205 <outputs>
206 <data name="varvamp_log" format="txt" from_work_dir="results/varvamp_log.txt" label="${tool.name} on ${on_string}: Analysis Log" />
207 <data name="primer_seqs" format="fasta" from_work_dir="results/primers.fasta" label="${tool.name} on ${on_string}: Sequences of designed oligos">
208 <filter>mode['m_select'] in ('single', 'qpcr') and mode['scheme_outputs'] and 'primer_seqs' in mode['scheme_outputs']</filter>
209 </data>
210 <collection name="primer_seqs_collection" type="list" label="${tool.name} on ${on_string}: per-pool primer sequences">
211 <filter>mode['m_select'] == 'tiled' and mode['scheme_outputs'] and 'primer_seqs' in mode['scheme_outputs']</filter>
212 <data name="pool1_sequences" format="fasta" from_work_dir="results/primers_pool_0.fasta" label="${tool.name} on ${on_string}: Sequences of designed pool 1 primers" />
213 <data name="pool2_sequences" format="fasta" from_work_dir="results/primers_pool_1.fasta" label="${tool.name} on ${on_string}: Sequences of designed pool 2 primers" />
214 </collection>
215 <data name="primers_bed" format="bed" from_work_dir="results/primers.bed" label="${tool.name} on ${on_string}: Primer binding sites">
216 <filter>mode['scheme_outputs'] and 'primer_binding_sites' in mode['scheme_outputs']</filter>
217 </data>
218 <data name="amplicons_bed" format="bed" from_work_dir="results/amplicons.bed" label="${tool.name} on ${on_string}: Amplicon locations">
219 <filter>mode['scheme_outputs'] and 'amplicon_sites' in mode['scheme_outputs']</filter>
220 </data>
221 <data name="primers_details" format="tabular" from_work_dir="results/*primers.tsv" label="${tool.name} on ${on_string}: Primer details">
222 <filter>mode['scheme_outputs'] and 'primer_details' in mode['scheme_outputs']</filter>
223 </data>
224 <data name="qpcr_details" format="tabular" from_work_dir="results/qpcr_design.tsv" label="${tool.name} on ${on_string}: qPCR amplicon details" >
225 <filter>mode['scheme_outputs'] and 'qpcr_design' in mode['scheme_outputs']</filter>
226 </data>
227 <data name="primer_amplicon_assignments" format="tabular" from_work_dir="results/primer_to_amplicon_assignment.tabular" label="${tool.name} on ${on_string}: Primer to amplicon assignments">
228 <filter>mode['scheme_outputs'] and 'amplicon_assignment' in mode['scheme_outputs']</filter>
229 </data>
230 <data name="unresolved_primer_dimers" format="tabular" from_work_dir="results/unsolvable_primer_dimers.tsv" label="${tool.name} on ${on_string}: Unresolved primer dimers">
231 <filter>mode['scheme_outputs'] and 'primer_dimers' in mode['scheme_outputs']</filter>
232 </data>
233 <data name="ambiguous_consensus" format="fasta" from_work_dir="results/ambiguous_consensus.fasta" label="${tool.name} on ${on_string}: Ambiguous consensus sequence">
234 <filter>mode['aln_cons_outputs'] and 'ambiguous_consensus' in mode['aln_cons_outputs']</filter>
235 </data>
236 <data name="majority_consensus" format="fasta" from_work_dir="results/data/majority_consensus.fasta" label="${tool.name} on ${on_string}: Majority consensus sequence (no ambiguity codes)">
237 <filter>mode['aln_cons_outputs'] and 'majority_consensus' in mode['aln_cons_outputs']</filter>
238 </data>
239 <data name="alignment_cleaned" format="fasta" from_work_dir="results/data/alignment_cleaned.fasta" label="${tool.name} on ${on_string}: Alignment cleaned">
240 <filter>mode['aln_cons_outputs'] and 'alignment_cleaned' in mode['aln_cons_outputs']</filter>
241 </data>
242 <data name="amplicon_plot" format="pdf" from_work_dir="results/amplicon_plot.pdf" label="${tool.name} on ${on_string}: Amplicon design overview plot">
243 <filter>mode['plot_outputs'] and 'amplicon_plot' in mode['plot_outputs']</filter>
244 </data>
245 <data name="per_base_mismatches" format="pdf" from_work_dir="results/per_base_mismatches.pdf" label="${tool.name} on ${on_string}: Per-base mismatches barplots">
246 <filter>mode['plot_outputs'] and 'per_base_mismatches' in mode['plot_outputs']</filter>
247 </data>
248 <data name="primer_regions" format="bed" from_work_dir="results/data/primer_regions.bed" label="${tool.name} on ${on_string}: All candidate primer regions">
249 <filter>mode['misc_outputs'] and 'primer_regions' in mode['misc_outputs']</filter>
250 </data>
251 <data name="probe_regions" format="bed" from_work_dir="results/data/probe_regions.bed" label="${tool.name} on ${on_string}: All candidate qPCR probe regions">
252 <filter>mode['misc_outputs'] and 'probe_regions' in mode['misc_outputs']</filter>
253 </data>
254 <data name="all_primers" format="bed" from_work_dir="results/data/all_primers.bed" label="${tool.name} on ${on_string}: All primer sites">
255 <filter>mode['misc_outputs'] and 'all_primers' in mode['misc_outputs']</filter>
256 </data>
257 </outputs>
258 <tests>
259 <test expect_num_outputs="8">
260 <param name="alignment" value="hepatitis_e_aln_shrunk.fasta"/>
261 <conditional name="mode">
262 <param name='m_select' value="single"/>
263 <conditional name="main_params">
264 <param name="specify_how" value="set_both"/>
265 <param name="threshold" value="0.8"/>
266 <param name="n_ambig" value="3"/>
267 </conditional>
268 <param name="opt_length" value="300"/>
269 <param name="max_length" value="400"/>
270 <conditional name="limit_report">
271 <param name="choice" value="yes" />
272 <param name="report_n" value="5"/>
273 </conditional>
274 </conditional>
275 <output name="varvamp_log" ftype="txt" compare="contains" file="test1.log" />
276 <output name="ambiguous_consensus" ftype="fasta" file="ambiguous_consensus.fasta" />
277 <output name="amplicon_plot" ftype="pdf">
278 <assert_contents>
279 <has_text text="%PDF"/>
280 <has_text text="%%EOF"/>
281 </assert_contents>
282 </output>
283 <output name="primers_bed" ftype="bed">
284 <assert_contents>
285 <has_n_lines n="2" />
286 </assert_contents>
287 </output>
288 <output name="amplicons_bed" ftype="bed">
289 <assert_contents>
290 <has_n_lines n="1"/>
291 </assert_contents>
292 </output>
293 <output name="per_base_mismatches" ftype="pdf">
294 <assert_contents>
295 <has_text text="%PDF"/>
296 <has_text text="%%EOF"/>
297 </assert_contents>
298 </output>
299 <output name="primer_seqs" ftype="fasta">
300 <assert_contents>
301 <has_line line=">AMPLICON_0_LEFT"/>
302 <has_line line=">AMPLICON_0_RIGHT"/>
303 <has_n_lines n="4"/>
304 </assert_contents>
305 </output>
306 </test>
307 <test expect_num_outputs="12">
308 <param name="alignment" value="hepatitis_e_aln_shrunk.fasta"/>
309 <conditional name="mode">
310 <param name='m_select' value="tiled"/>
311 <conditional name="main_params">
312 <param name="specify_how" value="set_both"/>
313 <param name="threshold" value="0.6"/>
314 <param name="n_ambig" value="2"/>
315 </conditional>
316 <param name="opt_length" value="150"/>
317 <param name="max_length" value="300"/>
318 <param name="overlap" value="100"/>
319 </conditional>
320 <output name="varvamp_log" ftype="txt" compare="contains" file="test2.log" />
321 <output name="primers_bed" ftype="bed">
322 <assert_contents>
323 <has_n_lines n="4" />
324 </assert_contents>
325 </output>
326 <output name="amplicons_bed" ftype="bed">
327 <assert_contents>
328 <has_n_lines n="2"/>
329 </assert_contents>
330 </output>
331 <output name="primer_amplicon_assignments" ftype="tabular">
332 <assert_contents>
333 <has_n_lines n="2"/>
334 <has_n_columns n="2"/>
335 </assert_contents>
336 </output>
337 <output name="unresolved_primer_dimers" ftype="tabular">
338 <assert_contents>
339 <has_n_lines n="1"/>
340 </assert_contents>
341 </output>
342 <output_collection name="primer_seqs_collection" type="list" count="2">
343 <element name="pool1_sequences" ftype="fasta">
344 <assert_contents>
345 <has_n_lines n="4"/>
346 <has_line line=">AMPLICON_0_LEFT"/>
347 </assert_contents>
348 </element>
349 <element name="pool2_sequences" ftype="fasta">
350 <assert_contents>
351 <has_n_lines n="4"/>
352 <has_line line=">AMPLICON_1_LEFT"/>
353 </assert_contents>
354 </element>
355 </output_collection>
356 </test>
357 <test expect_num_outputs="9">
358 <param name="alignment" value="hepatitis_e_aln_shrunk.fasta"/>
359 <conditional name="mode">
360 <param name='m_select' value="qpcr"/>
361 <conditional name="main_params">
362 <param name="specify_how" value="set_both"/>
363 <param name="threshold" value="0.7"/>
364 <param name="n_ambig" value="1"/>
365 <param name="pn_ambig" value="1"/>
366 </conditional>
367 <param name="test_n" value="180"/>
368 <param name="deltaG" value="-15"/>
369 </conditional>
370 <output name="varvamp_log" ftype="txt" compare="contains" file="test3.log" />
371 <output name="primers_bed" ftype="bed">
372 <assert_contents>
373 <has_n_lines n="3" />
374 </assert_contents>
375 </output>
376 <output name="amplicons_bed" ftype="bed">
377 <assert_contents>
378 <has_n_lines n="1"/>
379 </assert_contents>
380 </output>
381 <output name="primer_seqs" ftype="fasta">
382 <assert_contents>
383 <has_line line=">QPCR_SCHEME_0_PROBE"/>
384 <has_line line=">QPCR_SCHEME_0_LEFT"/>
385 <has_line line=">QPCR_SCHEME_0_RIGHT"/>
386 <has_n_lines n="6"/>
387 </assert_contents>
388 </output>
389 <output name="qpcr_details" ftype="tabular">
390 <assert_contents>
391 <has_n_lines n="2"/>
392 </assert_contents>
393 </output>
394 </test>
395 <test expect_num_outputs="1">
396 <!-- Similar to test 1, but try to modify some of varVAMP's
397 advanced params, and see whether that gets reflected in the log file.
398 -->
399 <param name="alignment" value="hepatitis_e_aln_shrunk.fasta"/>
400 <conditional name="mode">
401 <param name='m_select' value="single"/>
402 <conditional name="main_params">
403 <param name="specify_how" value="set_both"/>
404 <param name="threshold" value="0.8"/>
405 <param name="n_ambig" value="3"/>
406 </conditional>
407 <param name="opt_length" value="300"/>
408 <param name="max_length" value="400"/>
409 <conditional name="limit_report">
410 <param name="choice" value="yes" />
411 <param name="report_n" value="5"/>
412 </conditional>
413 <conditional name="advanced_config">
414 <param name="customize" value="yes"/>
415 <section name="basic_primer_params">
416 <param name="PRIMER_GC_RANGE_min" value="20"/>
417 <param name="PRIMER_GC_RANGE_max" value="80"/>
418 </section>
419 </conditional>
420 <param name="scheme_outputs" value=""/>
421 <param name="aln_cons_outputs" value=""/>
422 <param name="plot_outputs" value=""/>
423 <param name="misc_outputs" value=""/>
424 </conditional>
425 <output name="varvamp_log" ftype="txt" compare="contains" file="test4.log" />
426 </test>
427 </tests>
428 <help><![CDATA[
429
430 .. class:: infomark
431
432 **What it does**
433
434 variable VirusAMPlicons (varVAMP) is a tool to design primers for highly diverse viruses. The input is an alignment of your viral (full-genome) sequences.
435
436 For a lot of virus genera it is difficult to design pan-specific primers. varVAMP solves this by introducing ambiguous characters into primers and minimizes mismatches at the 3' end. Primers might not work for some sequences of your input alignment but should recognize the large majority.
437
438 varVAMP can be run in three different **modes**:
439
440 * SINGLE: varVAMP searches for the very best primers and reports back non-overlapping amplicons which can be used for PCR-based screening approaches.
441 * TILED: varVAMP uses a graph based approach to design overlapping (tiled) amplicons that together cover the entire viral genome. This designs amplicons that are suitable for Oxford Nanopore or Illumina based full-genome sequencing.
442 * QPCR: varVAMP searches for small amplicons with an optimized internal probe (TaqMan). It minimizes temperature differences between the primers and checks for amplicon secondary structures.
443
444 Algorithmic parameters:
445
446 These are explained very well on the `How varVAMP works <https://github.com/jonas-fuchs/varVAMP/blob/master/docs/how_varvamp_works.md>`__ page of the varVAMP documentation.
447
448 Outputs:
449
450 This tool can produce lots of informative output and the different modes come with what we hope are reasonable default choices.
451
452 The most important output, however, is the **Analysis Log**, which will always be generated and contains essential information about what parameters where used by varVAMP during the run and about intermediate results. You should always check this file. Together with the tool's standard output and error streams, it is the place to spot issues with your analysis and to start debugging them.
453
454 .. class:: infomark
455
456 Testing with a new alignment/analysis:
457
458 As a first check whether a new alignment of viral sequences can be used with specific settings of the tool, it may help to disable all configurable outputs, which will leave you with only the Analysis Log. This will be enough to see if there are any errors with the combination of alignment and settings, and whether you are on a roughly correct track (varVAMP reports some primers, for example). This way, you're not flooding your analysis history with lots of likely useless datasets, and once you've fixed potential issues you can add back more outputs and rerun the analysis.
459 ]]></help>
460 <citations>
461 <citation type="doi">https://github.com/jonas-fuchs/varVAMP/</citation>
462 </citations>
463 </tool>