comparison shovill.xml @ 8:ad80238462c1 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/shovill commit 1e28eb4ffcf3d9168877c291d27e533b96021445
author iuc
date Fri, 16 Sep 2022 14:39:43 +0000
parents 2a9baa0c4316
children ee17a294d3a3
comparison
equal deleted inserted replaced
7:2a9baa0c4316 8:ad80238462c1
1 <tool id="shovill" name="Shovill" version="@TOOL_VERSION@+galaxy1"> 1 <tool id="shovill" name="Shovill" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@">
2 <description>Faster SPAdes assembly of Illumina reads</description> 2 <description>Faster SPAdes assembly of Illumina reads</description>
3 <macros>
4 <token name="@TOOL_VERSION@">1.1.0</token>
5 <token name="@VERSION_SUFFIX@">1</token>
6 </macros>
3 <xrefs> 7 <xrefs>
4 <xref type="bio.tools">shovill</xref> 8 <xref type="bio.tools">shovill</xref>
5 </xrefs> 9 </xrefs>
6 <macros>
7 <token name="@TOOL_VERSION@">1.1.0</token>
8 </macros>
9 <requirements> 10 <requirements>
10 <requirement type="package" version="@TOOL_VERSION@">shovill</requirement> 11 <requirement type="package" version="@TOOL_VERSION@">shovill</requirement>
11 </requirements> 12 </requirements>
12 <version_command>shovill --version</version_command> 13 <version_command>shovill --version</version_command>
13 <command detect_errors="exit_code"><![CDATA[ 14 <command detect_errors="exit_code"><![CDATA[
17 #if str($library.lib_type) == "paired" 18 #if str($library.lib_type) == "paired"
18 #set r1_ext = $library.R1.extension 19 #set r1_ext = $library.R1.extension
19 #set r2_ext = $library.R2.extension 20 #set r2_ext = $library.R2.extension
20 #if $r1_ext == 'fastqsanger.gz' or $r1_ext == 'fastqsanger.bz2' 21 #if $r1_ext == 'fastqsanger.gz' or $r1_ext == 'fastqsanger.bz2'
21 cp '$library.R1' fastq_r1.'$r1_ext' && 22 cp '$library.R1' fastq_r1.'$r1_ext' &&
22 cp '$library.R2' fastq_r2.'$r2_ext' && 23 cp '$library.R2' fastq_r2.'$r2_ext' &&
23 #else 24 #else
24 ln -s '$library.R1' fastq_r1.'$r1_ext' && 25 ln -s '$library.R1' fastq_r1.'$r1_ext' &&
25 ln -s '$library.R2' fastq_r2.'$r2_ext' && 26 ln -s '$library.R2' fastq_r2.'$r2_ext' &&
26 #end if 27 #end if
27 #else if str($library.lib_type) == "collection" 28 #else if str($library.lib_type) == "collection"
28 #set r1_ext = $library.input1.forward.extension 29 #set r1_ext = $library.input1.forward.extension
29 #set r2_ext = $library.input1.reverse.extension 30 #set r2_ext = $library.input1.reverse.extension
30 #if $r1_ext == 'fastqsanger.gz' or $r1_ext == 'fastqsanger.bz2' 31 #if $r1_ext == 'fastqsanger.gz' or $r1_ext == 'fastqsanger.bz2'
40 ## (1) If SHOVILL_RAM is already set, use this value 41 ## (1) If SHOVILL_RAM is already set, use this value
41 ## (2) Otherwise, set based on GALAXY_MEMORY_MB 42 ## (2) Otherwise, set based on GALAXY_MEMORY_MB
42 ## (3) Or default to 4 GB if GALAXY_MEMORY_MB is unset 43 ## (3) Or default to 4 GB if GALAXY_MEMORY_MB is unset
43 GALAXY_MEMORY_GB=\$((\${GALAXY_MEMORY_MB:-4096}/1024)) && 44 GALAXY_MEMORY_GB=\$((\${GALAXY_MEMORY_MB:-4096}/1024)) &&
44 SHOVILL_RAM=\${SHOVILL_RAM:-\${GALAXY_MEMORY_GB}} && 45 SHOVILL_RAM=\${SHOVILL_RAM:-\${GALAXY_MEMORY_GB}} &&
45 46
46 shovill 47 shovill
47 --outdir 'out' 48 --outdir 'out'
48 --cpus \${GALAXY_SLOTS:-1} 49 --cpus \${GALAXY_SLOTS:-1}
49 --ram \${SHOVILL_RAM:-4} 50 --ram \${SHOVILL_RAM:-4}
50 --R1 fastq_r1.'$r1_ext' 51 --R1 'fastq_r1.$(r1_ext)'
51 --R2 fastq_r2.'$r2_ext' 52 --R2 'fastq_r2.$(r2_ext)'
52 $trim 53 $trim
53 --namefmt '$adv.namefmt' 54 --namefmt '$adv.namefmt'
54 --depth '$adv.depth' 55 --depth '$adv.depth'
55 #if $adv.gsize 56 #if $adv.gsize
56 --gsize '$adv.gsize' 57 --gsize '$adv.gsize'
59 --kmers '$adv.kmers' 60 --kmers '$adv.kmers'
60 #end if 61 #end if
61 #if $adv.opts 62 #if $adv.opts
62 --opts '$adv.opts' 63 --opts '$adv.opts'
63 #end if 64 #end if
64 $adv.nocorr
65 --minlen $adv.minlen 65 --minlen $adv.minlen
66 --mincov $adv.mincov 66 --mincov $adv.mincov
67 --assembler $assembler 67 --assembler $assembler
68 68 #if $adv.keep_files.nocorr == 'no_correction'
69 --nocorr
70 #else
71 $adv.keep_files.keepfiles
72 #end if
69 ]]></command> 73 ]]></command>
70 <inputs> 74 <inputs>
71 <conditional name="library"> 75 <conditional name="library">
72 <param name="lib_type" type="select" label="Input reads type, collection or single library" help="Select 'paired end' for a single library or 'collection' for a paired end collection"> 76 <param name="lib_type" type="select" label="Input reads type, collection or single library" help="Select 'paired end' for a single library or 'collection' for a paired end collection">
73 <option value="paired" selected="true">Paired End</option> 77 <option value="paired" selected="true">Paired End</option>
80 <when value="collection"> 84 <when value="collection">
81 <param name="input1" format="fastqsanger,fastqsanger.gz,fastqsanger.bz2" type="data_collection" collection_type="paired" label="Paired collection" help="See help section for an explanation of dataset collections"/> 85 <param name="input1" format="fastqsanger,fastqsanger.gz,fastqsanger.bz2" type="data_collection" collection_type="paired" label="Paired collection" help="See help section for an explanation of dataset collections"/>
82 </when> 86 </when>
83 </conditional> 87 </conditional>
84 <param name="trim" argument="--trim" type="boolean" truevalue="--trim" falsevalue="" label="Trim reads" help="Use Trimmomatic to remove common adaptors first (default: OFF)" /> 88 <param name="trim" argument="--trim" type="boolean" truevalue="--trim" falsevalue="" label="Trim reads" help="Use Trimmomatic to remove common adaptors first (default: OFF)" />
85 <param name="log" type="boolean" label="Output log file?" checked="true" help="Return the Shovill log file as part of the output. Default is on" />
86 <param name="assembler" argument="--assembler" type="select" label="Assembler to use" help="Which assembler would you like shovill to use, default is Spades"> 89 <param name="assembler" argument="--assembler" type="select" label="Assembler to use" help="Which assembler would you like shovill to use, default is Spades">
87 <option value="skesa">skesa</option> 90 <option value="skesa">skesa</option>
88 <option value="megahit">megahit</option> 91 <option value="megahit">megahit</option>
89 <option value="velvet">velvet</option> 92 <option value="velvet">velvet</option>
90 <option value="spades" selected="true">Spades</option> 93 <option value="spades" selected="true">Spades</option>
102 </param> 105 </param>
103 <param name="depth" argument="--depth" type="integer" value="100" label="Depth" help="Sub-sample --R1/--R2 to this depth. Disable with --depth 0 (default: 100)" /> 106 <param name="depth" argument="--depth" type="integer" value="100" label="Depth" help="Sub-sample --R1/--R2 to this depth. Disable with --depth 0 (default: 100)" />
104 <param name="gsize" argument="--gsize" type="text" value="" label="Estimated genome size" help="An estimate of the final genome size, it will autodetect if this is blank. (default: '')" /> 107 <param name="gsize" argument="--gsize" type="text" value="" label="Estimated genome size" help="An estimate of the final genome size, it will autodetect if this is blank. (default: '')" />
105 <param name="kmers" argument="--kmers" type="text" value="" label="List of kmer sizes to use" help="List of K-mer sizes to use in SPAdes. Blank is AUTO. default: ''" /> 108 <param name="kmers" argument="--kmers" type="text" value="" label="List of kmer sizes to use" help="List of K-mer sizes to use in SPAdes. Blank is AUTO. default: ''" />
106 <param name="opts" argument="--opts" type="text" value="" label="Extra SPAdes options" help="eg. --plasmid --sc ... (default: '')" /> 109 <param name="opts" argument="--opts" type="text" value="" label="Extra SPAdes options" help="eg. --plasmid --sc ... (default: '')" />
107 <param name="nocorr" argument="--nocorr" type="boolean" truevalue="--nocorr" falsevalue="" checked="True" label="Disable post-assembly correction" help="Disable post assembly correction with pilon (default: ON)" /> 110 <conditional name="keep_files">
111 <param name="nocorr" argument="--nocorr" type="select" label="Disable post-assembly correction" help="Disable post assembly correction with pilon (default: ON)">
112 <option value="no_correction" selected="true">No corrections</option>
113 <option value="yes_correction">Post assembly corrections</option>
114 </param>
115 <when value="no_correction"/>
116 <when value="yes_correction">
117 <param name="keepfiles" argument="--keepfiles" type="boolean" truevalue="--keepfiles" checked="False" falsevalue="" label="Keep bam files" help="Keep bam files only if post-assembly correction is enable"/>
118 </when>
119 </conditional>
108 <param name="minlen" argument="--minlen" type="integer" value="0" label="Minimum contig length" help="Minimum length of contig to be output. 0 is AUTO (default: 0)" /> 120 <param name="minlen" argument="--minlen" type="integer" value="0" label="Minimum contig length" help="Minimum length of contig to be output. 0 is AUTO (default: 0)" />
109 <param name="mincov" argument="--mincov" type="integer" value="2" label="Minimum contig coverage" help="Minimum coverage to call part of a contig. 0 is AUTO (default: 2)" /> 121 <param name="mincov" argument="--mincov" type="integer" value="2" label="Minimum contig coverage" help="Minimum coverage to call part of a contig. 0 is AUTO (default: 2)" />
110 </section> 122 </section>
123 <param name="log" type="boolean" label="Output log file?" checked="true" help="Return the Shovill log file as part of the output. Default is on" />
124
111 </inputs> 125 </inputs>
112
113 <outputs> 126 <outputs>
114 <data name="shovill_std_log" format="txt" label="${tool.name} on ${on_string} Log file" from_work_dir="out/shovill.log" > 127 <data name="shovill_std_log" format="txt" label="${tool.name} on ${on_string} Log file" from_work_dir="out/shovill.log" >
115 <filter>log</filter> 128 <filter>log == True</filter>
116 </data> 129 </data>
117 <data format="fasta" name="contigs" label="${tool.name} on ${on_string}: Contigs" from_work_dir="out/contigs.fa"/> 130 <data name="contigs" format="fasta" label="${tool.name} on ${on_string}: Contigs" from_work_dir="out/contigs.fa"/>
118 <data format="txt" name="contigs_graph" label="${tool.name} on ${on_string}: Contig Graph" from_work_dir="out/contigs.gfa"/> 131 <data name="contigs_graph" format="txt" label="${tool.name} on ${on_string}: Contig Graph" from_work_dir="out/contigs.gfa"/>
132 <data name="bamfiles" format="unsorted.bam" from_work_dir="out/shovill.bam" label="Bam file for ${tool.name} on ${on_string}">
133 <filter> adv['keep_files']['nocorr'] == 'yes_correction' and adv['keep_files']['keepfiles'] == True </filter>
134 </data>
119 </outputs> 135 </outputs>
120
121 <tests> 136 <tests>
122 <test> <!-- Test 1: Basic test --> 137 <test expect_num_outputs="3"> <!-- Test 1: Basic test -->
123 <param name="lib_type" value="paired" /> 138 <param name="lib_type" value="paired" />
124 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" /> 139 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" />
125 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" /> 140 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" />
126 <output name="contigs" ftype="fasta"> 141 <output name="contigs" ftype="fasta">
127 <assert_contents> 142 <assert_contents>
132 <assert_contents> 147 <assert_contents>
133 <has_text text="Read stats: total_bp = 300000"/> 148 <has_text text="Read stats: total_bp = 300000"/>
134 <has_text text="[lighter] Processed 820 reads"/> 149 <has_text text="[lighter] Processed 820 reads"/>
135 <has_text text="[FLASH] FLASH v1.2.11 complete!"/> 150 <has_text text="[FLASH] FLASH v1.2.11 complete!"/>
136 <has_text text="[spades] ======= SPAdes pipeline finished."/> 151 <has_text text="[spades] ======= SPAdes pipeline finished."/>
137 </assert_contents> 152 </assert_contents>
138 </output> 153 </output>
139 </test> 154 </test>
140 <test> <!-- Test 2: Auto everything + trim + different name format test --> 155 <test expect_num_outputs="3"> <!-- Test 2: Auto everything + trim + different name format test -->
141 <param name="lib_type" value="paired" /> 156 <param name="lib_type" value="paired" />
142 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" /> 157 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" />
143 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" /> 158 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" />
144 <param name="trim" value="true" /> 159 <param name="trim" value="true" />
145 <section name="adv"> 160 <section name="adv">
146 <param name="depth" value="0"/> 161 <param name="depth" value="0"/>
147 <param name="minlen" value="0"/> 162 <param name="minlen" value="0"/>
148 <param name="mincov" value="0"/> 163 <param name="mincov" value="0"/>
149 <param name="nocorr" value="false"/> 164 <conditional name="keep_files">
165 <param name="nocorr" value="yes_correction"/>
166 </conditional>
150 <param name="namefmt" value="contig%03d"/> 167 <param name="namefmt" value="contig%03d"/>
151 </section> 168 </section>
152 <output name="contigs" ftype="fasta"> 169 <output name="contigs" ftype="fasta">
153 <assert_contents> 170 <assert_contents>
154 <has_text text="&gt;contig001"/> 171 <has_text text="&gt;contig001"/>
164 <has_text text="[pilon] Mean total coverage:"/> 181 <has_text text="[pilon] Mean total coverage:"/>
165 <has_text text="[shovill] Done."/> 182 <has_text text="[shovill] Done."/>
166 </assert_contents> 183 </assert_contents>
167 </output> 184 </output>
168 </test> 185 </test>
169 <test> <!-- Test 3: Alternate assembler #1: Megahit --> 186 <test expect_num_outputs="3"> <!-- Test 3: Alternate assembler #1: Megahit -->
170 <param name="lib_type" value="paired" /> 187 <param name="lib_type" value="paired" />
171 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" /> 188 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" />
172 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" /> 189 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" />
173 <param name="assembler" value="megahit" /> 190 <param name="assembler" value="megahit" />
174 <output name="contigs" ftype="fasta"> 191 <output name="contigs" ftype="fasta">
175 <assert_contents> 192 <assert_contents>
176 <has_text text="&gt;contig00001"/> 193 <has_text text="&gt;contig00001"/>
177 </assert_contents> 194 </assert_contents>
178 </output> 195 </output>
179 <output name="shovill_std_log" ftype="txt" > 196 <output name="shovill_std_log" ftype="txt" >
180 <assert_contents> 197 <assert_contents>
181 <has_text text="[lighter] Processed"/> 198 <has_text text="[lighter] Processed"/>
182 <has_text text="[FLASH] FLASH v1.2.11 complete!"/> 199 <has_text text="[FLASH] FLASH v1.2.11 complete!"/>
183 <has_text_matching expression="\[megahit\] .* ALL DONE"/> 200 <has_text_matching expression="\[megahit\] .* ALL DONE"/>
184 <has_text text="[shovill] Done."/> 201 <has_text text="[shovill] Done."/>
185 </assert_contents> 202 </assert_contents>
186 </output> 203 </output>
187 </test> 204 </test>
188 <test> <!-- Test 4: Alternate assembler #2: Skesa --> 205 <test expect_num_outputs="3"> <!-- Test 4: Alternate assembler #2: Skesa -->
189 <param name="lib_type" value="paired" /> 206 <param name="lib_type" value="paired" />
190 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" /> 207 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" />
191 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" /> 208 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" />
192 <param name="assembler" value="skesa" /> 209 <param name="assembler" value="skesa" />
193 <output name="contigs" ftype="fasta"> 210 <output name="contigs" ftype="fasta">
202 <has_text text="[skesa] DONE"/> 219 <has_text text="[skesa] DONE"/>
203 <has_text text="[shovill] Done."/> 220 <has_text text="[shovill] Done."/>
204 </assert_contents> 221 </assert_contents>
205 </output> 222 </output>
206 </test> 223 </test>
207 <test> <!-- Test 5: Alternate assembler #3: Velvet --> 224 <test expect_num_outputs="3"> <!-- Test 5: Alternate assembler #3: Velvet -->
208 <param name="lib_type" value="paired" /> 225 <param name="lib_type" value="paired" />
209 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" /> 226 <param name="R1" value="mutant_R1.fastq" ftype="fastqsanger" />
210 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" /> 227 <param name="R2" value="mutant_R2.fastq" ftype="fastqsanger" />
211 <param name="assembler" value="velvet" /> 228 <param name="assembler" value="velvet" />
212 <output name="contigs" ftype="fasta"> 229 <output name="contigs" ftype="fasta">
221 <has_text text="[velvetg] Final graph has"/> 238 <has_text text="[velvetg] Final graph has"/>
222 <has_text text="[shovill] Done."/> 239 <has_text text="[shovill] Done."/>
223 </assert_contents> 240 </assert_contents>
224 </output> 241 </output>
225 </test> 242 </test>
226 <test> <!-- Test 6: Gzipped input with trimming --> 243 <test expect_num_outputs="3"> <!-- Test 6: Gzipped input with trimming -->
227 <param name="lib_type" value="paired" /> 244 <param name="lib_type" value="paired" />
228 <param name="R1" value="mutant_R1.fastq.gz" ftype="fastqsanger.gz" /> 245 <param name="R1" value="mutant_R1.fastq.gz" ftype="fastqsanger.gz" />
229 <param name="R2" value="mutant_R2.fastq.gz" ftype="fastqsanger.gz" /> 246 <param name="R2" value="mutant_R2.fastq.gz" ftype="fastqsanger.gz" />
230 <param name="trim" value="true" /> 247 <param name="trim" value="true" />
231 <output name="contigs" ftype="fasta"> 248 <output name="contigs" ftype="fasta">
240 <has_text text="[spades] ======= SPAdes pipeline finished."/> 257 <has_text text="[spades] ======= SPAdes pipeline finished."/>
241 <has_text text="[shovill] Done."/> 258 <has_text text="[shovill] Done."/>
242 </assert_contents> 259 </assert_contents>
243 </output> 260 </output>
244 </test> 261 </test>
262 <test expect_num_outputs="4"> <!-- Test 7: Add keepfiles option -->
263 <param name="lib_type" value="paired" />
264 <param name="R1" value="mutant_R1.fastq.gz" ftype="fastqsanger.gz" />
265 <param name="R2" value="mutant_R2.fastq.gz" ftype="fastqsanger.gz" />
266 <param name="trim" value="true" />
267 <section name="adv">
268 <conditional name="keep_files">
269 <param name="nocorr" value="yes_correction" />
270 <param name="keepfiles" value="True" />
271 </conditional>
272 <param name="log" value="true"/>
273 </section>
274 <output name="contigs" ftype="fasta">
275 <assert_contents>
276 <has_text text="&gt;contig00001"/>
277 </assert_contents>
278 </output>
279 <output name="bamfiles" ftype="unsorted.bam">
280 <assert_contents>
281 <has_size value="36359" delta="1000" />
282 </assert_contents>
283 </output>
284 </test>
245 </tests> 285 </tests>
246 <help><![CDATA[ 286 <help><![CDATA[
247 Synopsis: 287 Synopsis:
248 Faster de novo assembly pipeline for Illumina paired end reads based around Spades 288 Faster de novo assembly pipeline for Illumina paired end reads based around Spades
249 289
250 Details and options: 290 Details and options:
251 - Takes paired end Illumina fastq reads 291 - Takes paired end Illumina fastq reads
252 - Trim reads: Use Trimmomatic to remove common adaptors first (default: OFF) 292 - Trim reads: Use Trimmomatic to remove common adaptors first (default: OFF)
253 - Output log file: If set to "Yes", tool will return Shovill's log file as part of the output 293 - Output log file: If set to "Yes", tool will return Shovill's log file as part of the output
254 - Assembler: Which assembler should shovill use from: Skesa, Megahit, Velvet or Spades. Spades is the default. 294 - Assembler: Which assembler should shovill use from: Skesa, Megahit, Velvet or Spades. Spades is the default.
255 295
256 Advanced options: 296 Advanced options:
257 - Name format: Format of output contig FASTA IDs in 'printf' style (default: 'contig%05d') 297 - Name format: Format of output contig FASTA IDs in 'printf' style (default: 'contig%05d')
258 - Depth: Sub-sample the reads to this depth. Disable with *Depth: 0* (default: 100) 298 - Depth: Sub-sample the reads to this depth. Disable with *Depth: 0* (default: 100)
259 - Estimated genomesize: An estimate of the final genome size, it will autodetect if this is blank. (default: '') 299 - Estimated genomesize: An estimate of the final genome size, it will autodetect if this is blank. (default: '')
260 - List of kmers to use: List of K-mer sizes to use in SPAdes. Blank is AUTO. (default: '') 300 - List of kmers to use: List of K-mer sizes to use in SPAdes. Blank is AUTO. (default: '')
261 - Extra SPAdes options: Extra SPAdes options eg. --plasmid --sc ... (default: '') 301 - Extra SPAdes options: Extra SPAdes options eg. --plasmid --sc ... (default: '')
262 - Disable post-assembly correction: Disable post assembly correction with pilon (default: ON) 302 - Disable post-assembly correction: Disable post assembly correction with pilon (default: ON)
263 - Minimum contig length: Minimum length of contig to be output. 0 is AUTO (default: 0) 303 - Keep the bam files : Enable to keep mapped files from bwa in the post assembly correction (default: OFF)
264 - Minimum contig coverage: Minimum coverage to call part of a contig. 0 is AUTO (default: 2) 304 - Minimum contig length: Minimum length of contig to be output. 0 is AUTO (default: 0)
265 - Spades result to correct: Spades result to correct: before_rr, contigs or scaffolds (default: 'contigs') 305 - Minimum contig coverage: Minimum coverage to call part of a contig. 0 is AUTO (default: 2)
266 306 - Spades result to correct: Spades result to correct: before_rr, contigs or scaffolds (default: 'contigs')
267 Documentation can be found at Torsten Seemann `site <https://github.com/tseemann/shovill>`_. 307
308 Documentation can be found at Torsten Seemann `site <https://github.com/tseemann/shovill>`_.
268 ]]></help> 309 ]]></help>
269 <citations> 310 <citations>
270 <citation type="bibtex"> 311 <citation type="bibtex">
271 @UNPUBLISHED{Seemann2017, 312 @UNPUBLISHED{Seemann2017,
272 author = {Seemann, Torsten}, 313 author = {Seemann, Torsten},