comparison epibuilder-1.1.xml @ 6:991f846cafd3 draft default tip

Re-Uploaded fixed .xml
author bioinformatics_lab_ufsc
date Thu, 25 Nov 2021 04:26:05 +0000
parents
children
comparison
equal deleted inserted replaced
5:37946f736ac9 6:991f846cafd3
1 <tool id="epibuilder_1.1" name="EpiBuilder" version="1.1">
2 <description>Predict B cell epitopes</description>
3 <requirements>
4 <requirement type="package" version=">=1.8">Java</requirement>
5 <requirement type="package" version=">=2.11.0+">Blastp</requirement>
6 <requirement type="package" version=">=2.11.0+">Makeblastdb</requirement>
7 </requirements>
8 <stdio>
9 <regex match="command not found"
10 source="both"
11 level="log"
12 description="WARNING: some methods could not be applied -> check inputs and outputs files" />
13 <regex match="makeblastdb "
14 source="both"
15 level="log"
16 description="makeblastdb and blastp must be in $PATH on your Galaxy server" />
17 <regex match="blastp "
18 source="both"
19 level="log"
20 description="makeblastdb and blastp must be in $PATH on your Galaxy server" />
21 </stdio>
22 <command><![CDATA[
23 #*<!--
24 Methods used will be saved in $param with each threshold
25 Threshold is separated from method by ":"
26 Each method is separated by ";"
27 example: emini:0.8;parker:d;
28
29 >> d means defalt threshold
30 -->*#
31
32 #*<!-- Set variables that concatenate methods -->*#
33 #set param = ''
34 #set nomethod = ''
35 #set proteomes = ''
36
37 #*<!-- Add Bepipred2.0 method -->*#
38 #if $bepi_type.bepipred_origin == 'y':
39 #set bepipred_origin = '-o'
40 #*<!-- jobid -->*#
41 #elif $bepi_type.bepipred_origin == 'id':
42 #set bepipred_origin = '-jobid ' + str($bepi_type.job_id)
43 #else:
44 #set bepipred_origin = ''
45 #end if
46
47 #*<!-- Add Emini method -->*#
48 #if $emini_method.emini_choice == 'eminiyes':
49 #if $emini_method.emini_t.t_emini == 't_emini_choice'
50 #set param += 'emini:' + str($emini_method.emini_t.thresh_em_value) + ';'
51 #else:
52 #set param += 'emini:d;'
53 #end if
54 #end if
55
56 #*<!-- Add Parker method -->*#
57 #if $parker_method.parker_choice == 'parkeryes':
58 #if $parker_method.parker_t.t_parker == 't_parker_choice'
59 #set param += 'parker:' + str($parker_method.parker_t.thresh_park_value) + ';'
60 #else:
61 #set param += 'parker:d;'
62 #end if
63 #end if
64
65 #*<!-- Add Chou method -->*#
66 #if $chou_method.chou_choice == 'chouyes':
67 #if $chou_method.chou_t.t_chou == 't_chou_choice'
68 #set param += 'chou_fosman:' + str($chou_method.chou_t.thresh_chou_value) + ';'
69 #else:
70 #set param += 'chou_fosman:d;'
71 #end if
72 #end if
73
74 #*<!-- Add Karplus method -->*#
75 #if $karplus_method.karplus_choice == 'karplusyes':
76 #if $karplus_method.karplus_t.t_karplus == 't_karplus_choice'
77 #set param += 'karplus_schulz:' + str($karplus_method.karplus_t.thresh_karplus_value) + ';'
78 #else:
79 #set param += 'karplus_schulz:d;'
80 #end if
81 #end if
82
83 #*<!-- Add Kolaskar method -->*#
84 #if $kolaskar_method.kolaskar_choice == 'kolaskaryes':
85 #if $kolaskar_method.kolaskar_t.t_kolaskar == 't_kolaskar_choice'
86 #set param += 'kolaskar:' + str($kolaskar_method.kolaskar_t.thresh_kolaskar_value) + ';'
87 #else:
88 #set param += 'kolaskar:d;'
89 #end if
90 #end if
91
92
93
94 #*<!-- Clean $proteome if there's no protome -->*#
95 #if proteomes == '-proteomes ':
96 #set proteomes = ''
97 #end if
98
99
100 #*<!-- Parse blast command -->*#
101
102 #if $use_search.search_use_bool == "use":
103 #*<!-- Add proteomes, as many as given -->*#
104 #if $use_search.prot_input:
105 #for $file in $use_search.prot_input:
106 #set proteomes += str($file.prot_name) + '=' + str($file.prot_file) + ';'
107 #end for
108 #end if
109 #if $use_search.prot_input:
110 #if $use_search.blast.blast_search == 'blastyes':
111 #set blast_command = 'task=' + str($use_search.blast.blast_task)
112 #set blast_command += ';identity=' + str($use_search.blast.blast_id) + ';cover=' + str($use_search.blast.blast_cover) + ';word-size=' + str($use_search.blast.blast_wordsize)
113 #set blast_command += ';makeblastdb_path=makeblastdb;blastp_path=blastp'
114 #end if
115 #end if
116 #end if
117
118 #*<!-- Paste Command-line and run -->*#
119
120 java -jar $__tool_directory__/epibuilder-1.1.jar
121
122 #*<!-- bepipred_origin give -o if online, nothing if command and -jobid if jobID -->*#
123 #*<!-- if origin is not jobid, there is a file, and -b must be passed -->*#
124 #if $bepi_type.bepipred_origin != 'id':
125 -b ${bepi_type.bepi_out}
126 #end if
127 -t ${tresh_bepi2}
128 ${bepipred_origin}
129 #if $param:
130 -p "${param}"
131 #end if
132 -f "${basename}"
133 -min_len ${min_length}
134 -max_len ${max_length}
135 #if $proteomes:
136 -proteomes
137 "${proteomes}"
138 #if $use_search.blast.blast_search == 'blastyes':
139 -blast "${blast_command}"
140 #end if
141 #end if
142
143 #if $use_search.search_use_bool == "use":
144 #if $use_search.check_use_hit == 'nousehit':
145 -nohitacc
146 #end if
147 #end if
148 #*<!-- DONT REMOVE THIS ; -->*#
149 >log.log 2>log.log;
150
151 mv $basename-epibuilder.xlsx EpiBuilder_report.xlsx;
152
153 #*<!-- Rename output files -->*#
154 mv ${basename}-epibuilder.txt EpiBuilder;
155
156
157 ]]>
158 </command>
159 <inputs>
160 <!-- Bepipred 2.0 -->
161 <conditional name="bepi_type">
162 <param name="bepipred_origin" type="select" display="radio" label="Input files" help="Online prediction returns a csv file, command-line based returns a tsv file" >
163 <option value="y" selected="true">csv file from Bepipred 2.0</option>
164 <option value="n" >text file from IEDB Bcell Software standalone</option>
165 <option value="id">JobID from Bepipred 2.0 Server</option>
166 </param>
167 <when value="y" >
168 <param name="bepi_out" multiple="false" format="data" type="data" label="File" help="Epitopes predicted by Bepipred 2.0" />
169 </when>
170 <when value="n" >
171 <param name="bepi_out" multiple="false" format="data" type="data" label="File" help="Epitopes predicted by Bepipred 2.0" />
172 </when>
173 <when value="id" >
174 <param name="job_id" type="text" value="" label="JobID" help="Prediction must be complete - check it in: http://www.cbs.dtu.dk/cgi-bin/webface2.fcgi?jobid=YOUR_JOB_ID" >
175 <!-- Check if its an empty value-->
176 <validator type="empty_field" message="ID required"/>
177 </param>
178 </when>
179 </conditional>
180 <param name="tresh_bepi2" min="0.0" value="0.6" type="float" label="Threshold for Bepipred 2.0" help="Default = 0.6" />
181 <!-- Epitope Length -->
182 <param name="min_length" value="10" min="1" type="integer" label="Min epitope length" help="[1-X] Minimal length must be smaller than maximal length" />
183 <param name="max_length" value="30" min="2" type="integer" label="Max epitope length" help="[2-X] Maximal length must be greather than minimal length" />
184 <!-- EMINI -->
185 <conditional name="emini_method">
186 <param name="emini_choice" type="boolean" checked="true" truevalue="eminiyes" falsevalue="eminino" label="Use Emini Surface Accessibility Prediction method?" />
187 <when value="eminino">
188 </when>
189 <when value="eminiyes">
190 <conditional name="emini_t">
191 <param name="t_emini" display="radio" type="select" label="Threshold" help="Define threshold for Emini" >
192 <option value="d_emini_choice" selected="true">Default (calculated by method)</option>
193 <option value="t_emini_choice">Set Threshold</option>
194 </param>
195 <when value="t_emini_choice">
196 <param name="thresh_em_value" value="0" type="float" label="Value" />
197 </when>
198 <when value="d_emini_choice">
199 </when>
200 </conditional>
201 </when>
202 </conditional>
203 <!-- PARKER -->
204 <conditional name="parker_method">
205 <param name="parker_choice" type="boolean" checked="true" truevalue="parkeryes" falsevalue="parkerno" label="Use Parker Hydrophilicity Prediction method?" />
206 <when value="parkerno">
207 </when>
208 <when value="parkeryes">
209 <conditional name="parker_t">
210 <param name="t_parker" display="radio" type="select" label="Threshold" help="Define threshold for Parker" >
211 <option value="d_parker_choice" selected="true">Default (calculated by method)</option>
212 <option value="t_parker_choice">Set Threshold</option>
213 </param>
214 <when value="t_parker_choice">
215 <param name="thresh_park_value" value="0" type="float" label="Value" />
216 </when>
217 <when value="d_parker_choice">
218 </when>
219 </conditional>
220 </when>
221 </conditional>
222 <!-- Chou -->
223 <conditional name="chou_method">
224 <param name="chou_choice" type="boolean" checked="true" truevalue="chouyes" falsevalue="chouno" label="Use Chou &amp; Fasman Beta-Turn Prediction method?" />
225 <when value="chouno">
226 </when>
227 <when value="chouyes">
228 <conditional name="chou_t">
229 <param name="t_chou" display="radio" type="select" label="Threshold" help="Define threshold for Chou &amp; Fasman" >
230 <option value="d_chou_choice" selected="true">Default (calculated by method)</option>
231 <option value="t_chou_choice">Set Threshold</option>
232 </param>
233 <when value="t_chou_choice">
234 <param name="thresh_chou_value" value="0" type="float" label="Value" />
235 </when>
236 <when value="d_chou_choice">
237 </when>
238 </conditional>
239 </when>
240 </conditional>
241 <!-- Karplus -->
242 <conditional name="karplus_method">
243 <param name="karplus_choice" type="boolean" checked="true" truevalue="karplusyes" falsevalue="karplusno" label="Use Karplus &amp; Schulz Flexibility Prediction method?" />
244 <when value="karplusno">
245 </when>
246 <when value="karplusyes">
247 <conditional name="karplus_t">
248 <param name="t_karplus" display="radio" type="select" label="Threshold" help="Define threshold for Karplus &amp; Schulz" >
249 <option value="d_karplus_choice" selected="true">Default (calculated by method)</option>
250 <option value="t_karplus_choice">Set Threshold</option>
251 </param>
252 <when value="t_karplus_choice">
253 <param name="thresh_karplus_value" type="float" value="0" label="Value" />
254 </when>
255 <when value="d_karplus_choice">
256 </when>
257 </conditional>
258 </when>
259 </conditional>
260 <!-- Kolaskar -->
261 <conditional name="kolaskar_method">
262 <param name="kolaskar_choice" type="boolean" checked="true" truevalue="kolaskaryes" falsevalue="kolaskarno" label="Use Kolaskar &amp; Tongaonkar Antigenicity method?" />
263 <when value="kolaskarno">
264 </when>
265 <when value="kolaskaryes">
266 <conditional name="kolaskar_t">
267 <param name="t_kolaskar" display="radio" type="select" label="Threshold" help="Define threshold for Kolaskar &amp; Tongaonkar" >
268 <option value="d_kolaskar_choice" selected="true">Default (calculated by method)</option>
269 <option value="t_kolaskar_choice">Set Threshold</option>
270 </param>
271 <when value="t_kolaskar_choice">
272 <param name="thresh_kolaskar_value" type="float" value="0" label="Value" />
273 </when>
274 <when value="d_kolaskar_choice">
275 </when>
276 </conditional>
277 </when>
278 </conditional>
279 <!-- Insert Proteome -->
280 <conditional name="use_search">
281 <param name="search_use_bool" type="boolean" checked="false" truevalue="use" falsevalue="dont" label="Do you want to search the predicted epitopes in a proteome file?" />
282 <when value="dont">
283 </when>
284 <when value="use">
285 <repeat name="prot_input" title="Proteome" min="1">
286 <param type="data" name="prot_file" format="fasta" label="Proteome file" help="Protein sequences in fasta format" />
287 <param type="text" name="prot_name" label="Proteome name" help="Give a name to this dataset" >
288 <!-- Change spaces for '_' -->
289 <sanitizer>
290 <valid initial="string.printable">
291 <remove value=" "/>
292 </valid>
293 <mapping initial="none">
294 <add source=" " target="_"/>
295 </mapping>
296 </sanitizer>
297 <!-- Check if its an empty value-->
298 <validator type="empty_field" message="Basename required"/>
299 </param>
300 </repeat>
301 <param name="check_use_hit" type="boolean" checked="true" truevalue="usehit" falsevalue="nousehit" label="Show accession ID on result files?" help="Choose this option if you want to add accession ID numbers" />
302 <conditional name="blast">
303 <param name="blast_search" type="boolean" checked="false" truevalue="blastyes" falsevalue="blastno" label="Blastp" help="Choose this option if you want to add a blast search for epitopes in proteomes" />
304 <when value="blastno">
305 </when>
306 <when value="blastyes">
307 <param name="blast_id" value="90" min="1" type="integer" label="Identity" help="[0-100] Minimal identity accepted to parse blast results" />
308 <param name="blast_cover" value="90" min="2" type="integer" label="Coverage" help="[0-100] Minimal coverage accepted to parse blast results" />
309 <param name="blast_wordsize" value="4" min="1" type="integer" label="Word-Size" help="Blast argument word-size" />
310 <param name="blast_task" type="select" label="Task" help="How blastp should run">
311 <option value="blastp-short" selected="True">Blastp-short</option>
312 <option value="blastp-fast">Blastp-fast</option>
313 <option value="blastp">Blastp</option>
314 </param>
315 </when>
316 </conditional>
317 </when>
318 </conditional>
319 <param name="basename" type="text" value="" label="Basename" help="Provide a name for this run (string text without special characters)" >
320 <!-- Change spaces for '_' -->
321 <sanitizer>
322 <valid initial="string.printable">
323 <remove value=" "/>
324 </valid>
325 <mapping initial="none">
326 <add source=" " target="_"/>
327 </mapping>
328 </sanitizer>
329 <!-- Check if its an empty value-->
330 <validator type="empty_field" message="Basename required"/>
331 </param>
332 </inputs>
333 <outputs>
334 <data name="epif_out" format="txt" from_work_dir="EpiBuilder" label="EpiBuilder Output Summary - ${basename}" />
335 <data name="ep_xls" format="xlsx" from_work_dir="EpiBuilder_report.xlsx" label="EpiBuilder Report - ${basename}" />
336 <collection type="list" label="EpiBuilder Files - ${basename}" name="epif_collection" >
337 <discover_datasets format="fasta" pattern="(?P&lt;designation&gt;.*)\.fasta" visible="false" />
338 <discover_datasets format="txt" pattern="(?P&lt;designation&gt;.*)\.tsv" visible="false" />
339 <discover_datasets format="txt" pattern="(?P&lt;designation&gt;.*)\.txt" visible="false" />
340 </collection>
341 <collection type="list" label="EpiBuilder Blast Run - ${basename}" name="blast_collection" >
342 <filter>use_search['search_use_bool'] is True and use_search['blast']['blast_search'] is True</filter>
343 <discover_datasets pattern="(?P&lt;designation&gt;.*)blast\.csv" visible="false" />
344 </collection>
345 </outputs>
346 <tests>
347 <test>
348 <!-- Test all methods threshold selected, command line version of input with proteome-->
349 <conditional name="bepi_type">
350 <param name="bepipred_origin" value="y"/>
351 <param name="bepi_out" value="input_bepi_online.csv"/>
352 </conditional>
353 <param name="tresh_bepi2" value="0.6"/>
354
355 <param name="min_length" value="10" />
356 <param name="max_length" value="30" />
357
358 <conditional name="emini_method">
359 <param name="emini_choice" value="eminiyes"/>
360 <conditional name="emini_t">
361 <param name="t_emini" value="t_emini_choice"/>
362 <param name="thresh_em_value" value="0.8" />
363 </conditional>
364 </conditional>
365
366 <conditional name="parker_method">
367 <param name="parker_choice" value="parkeryes"/>
368 <conditional name="parker_t">
369 <param name="t_parker" value="t_parker_choice"/>
370 <param name="thresh_park_value" value="0.8" />
371 </conditional>
372 </conditional>
373
374 <conditional name="chou_method">
375 <param name="chou_choice" value="chouyes"/>
376 <conditional name="chou_t">
377 <param name="t_chou" value="t_chou_choice"/>
378 <param name="thresh_chou_value" value="0.8" />
379 </conditional>
380 </conditional>
381
382 <conditional name="karplus_method">
383 <param name="karplus_choice" value="karplusyes"/>
384 <conditional name="karplus_t">
385 <param name="t_karplus" value="t_karplus_choice"/>
386 <param name="thresh_karplus_value" value="0.8" />
387 </conditional>
388 </conditional>
389
390
391 <conditional name="kolaskar_method">
392 <param name="kolaskar_choice" value="kolaskaryes"/>
393 <conditional name="kolaskar_t">
394 <param name="t_kolaskar" value="t_kolaskar_choice"/>
395 <param name="thresh_kolaskar_value" value="0.8" />
396 </conditional>
397 </conditional>
398 <!-- This first part test all methods-->
399
400 <conditional name="use_search">
401 <param name="search_use_bool" value="use" />
402 <repeat name="prot_input">
403 <param name="prot_name" value="test_proteom" />
404 <param name="prot_file" value="proteom.fasta" />
405 </repeat>
406 <param name="check_use_hit" value="usehit"/>
407 <conditional name="blast">
408 <param name="blast_search" value="blastyes" />
409 <param name="blast_id" value="90" />
410 <param name="blast_cover" value="90" />
411 <param name="blast_wordsize" value="4" />
412 <param name="blast_task" value="blastp-short" />
413 </conditional>
414 </conditional>
415
416 <param name="basename" value="online" />
417
418 <output name="epif_out" file="online-EpiBuilder.txt" />
419 <output name="ep_xls" file="online-EpiBuilder.xlsx" />
420 <output_collection name= "epif_collection">
421 <element name="ep_prot_sum" file="online-EpiBuilder-protein-summary.tsv" />
422 <element name="ep_top" file="online-EpiBuilder-topology.tsv" />
423 <element name="ep_score" file="online-EpiBuilder-socre.tsv" />
424 <element name="ep_detail" file="online-EpiBuilder-epitope-detail.tsv" />
425 <element name="ep_parameters" file="online-EpiBuilder-parameters.tsv" />
426 <element name="ep_fasta" file="online-EpiBuilder-fasta.fasta" />
427 </output_collection>
428 <output_collection name="blast_collection" >
429 <element name="test_proteom" file="online-test_proteom_blast.csv" ftype="csv" />
430 </output_collection >
431 </test>
432
433 <test>
434 <!-- Test all methods threshold selected, online version of input with proteome-->
435 <conditional name="bepi_type">
436 <param name="bepipred_origin" value="y"/>
437 <param name="bepi_out" value="input_bcell_command_line.txt"/>
438 </conditional>
439
440 <param name="bepipred_origin" value="n"/>
441 <param name="tresh_bepi2" value="0.6"/>
442
443 <param name="min_length" value="10" />
444 <param name="max_length" value="30" />
445
446 <conditional name="emini_method">
447 <param name="emini_choice" value="eminiyes"/>
448 <conditional name="emini_t">
449 <param name="t_emini" value="t_emini_choice"/>
450 <param name="thresh_em_value" value="0.8" />
451 </conditional>
452 </conditional>
453
454 <conditional name="parker_method">
455 <param name="parker_choice" value="parkeryes"/>
456 <conditional name="parker_t">
457 <param name="t_parker" value="t_parker_choice"/>
458 <param name="thresh_park_value" value="0.8" />
459 </conditional>
460 </conditional>
461
462 <conditional name="chou_method">
463 <param name="chou_choice" value="chouyes"/>
464 <conditional name="chou_t">
465 <param name="t_chou" value="t_chou_choice"/>
466 <param name="thresh_chou_value" value="0.8" />
467 </conditional>
468 </conditional>
469
470 <conditional name="karplus_method">
471 <param name="karplus_choice" value="karplusyes"/>
472 <conditional name="karplus_t">
473 <param name="t_karplus" value="t_karplus_choice"/>
474 <param name="thresh_karplus_value" value="0.8" />
475 </conditional>
476 </conditional>
477
478
479 <conditional name="kolaskar_method">
480 <param name="kolaskar_choice" value="kolaskaryes"/>
481 <conditional name="kolaskar_t">
482 <param name="t_kolaskar" value="t_kolaskar_choice"/>
483 <param name="thresh_kolaskar_value" value="0.8" />
484 </conditional>
485 </conditional>
486 <!-- This first part test all methods-->
487
488 <conditional name="use_search">
489 <param name="search_use_bool" value="use"/>
490 <repeat name="prot_input">
491 <param name="prot_name" value="test_proteom" />
492 <param name="prot_file" value="proteom.fasta" />
493 </repeat>
494 <param name="check_use_hit" value="usehit"/>
495 <conditional name="blast">
496 <param name="blast_search" value="blastyes" />
497 <param name="blast_id" value="90" />
498 <param name="blast_cover" value="90"/>
499 <param name="blast_wordsize" value="4" />
500 <param name="blast_task" value="blastp-short" />
501 </conditional>
502 </conditional>
503
504 <param name="basename" value="command" />
505
506 <output name="epif_out" file="command-EpiBuilder.txt" />
507 <output name="ep_xls" file="command-EpiBuilder.xlsx" />
508 <output_collection name= "epif_collection">
509 <element name="ep_prot_sum" file="command-EpiBuilder-protein-summary.tsv" />
510 <element name="ep_top" file="command-EpiBuilder-topology.tsv" />
511 <element name="ep_score" file="command-EpiBuilder-socre.tsv" />
512 <element name="ep_detail" file="command-EpiBuilder-epitope-detail.tsv" />
513 <element name="ep_parameters" file="command-EpiBuilder-parameters.tsv" />
514 <element name="ep_fasta" file="command-EpiBuilder-fasta.fasta" />
515 </output_collection>
516 <output_collection name="blast_collection" >
517 <element name="test_proteom" file="command-test_proteom_blast.csv" ftype="csv" />
518 </output_collection >
519 </test>
520 </tests>
521 <help>
522 **How to Run**
523
524 First, you must have a file with epitopes predicted by Bepipred 2.0 or have one job submmited into bepipred's server.
525
526 .. class:: warningmark
527
528 Input this file (or jobID) and specify if Bepipred 2.0 was ran online or command-line based through bcell standalone suite.
529
530 Select methods that you want to check your epitopes for validation.
531
532 Give a threshold for each method (or use default threshold).
533
534 Optionaly, you can search validated epitopes in proteomes datasets, as many as you wish.
535
536 .. class:: warningmark
537
538 If you want to search using Blastp, this software and Makeblastdb must be avaliable on your server's $PATH.
539
540 -----
541
542 **Outputs**
543
544
545 **Summary** : Prediction overview
546
547 **Protein Summary** : Show proteins that have epitopes predicted
548
549 **Fasta** : Epitopes' sequences
550
551 **Topology** : Show epitope match in each method, aminoacid per aminoacid
552
553 **Score** : Detailed score for aminoacids
554
555 **Epitope Detail** : Properties of each predicted epitope
556
557 **Parameters** : Softwares, thresholds and parameters used for prediction
558
559 **Xls Report** : Table with epitope detail, protein summary, topology and scores
560
561 **Collection with blast files** : All blast results for each proteome
562
563
564 -----
565
566 .. class:: infomark
567
568 **For more information, checkout our GitHub page**: https://github.com/bioinfo-ufsc/EpiBuilder
569
570 -----
571
572 Please cite methods used in your analysis, available bellow
573
574 | Bioinformatics Lab - UFSC - 2021
575
576 </help>
577 <citations>
578 <citation type="doi">10.1093/nar/gkx346</citation>
579 <citation type="doi">10.1016/0014-5793(90)80535-q</citation>
580 <citation type="doi">10.1002/9780470122921.ch2</citation>
581 <citation type="doi">10.1021/bi00367a013</citation>
582 <citation type="doi">https://doi.org/10.1007/BF01195768</citation>
583 <citation type="doi">doi:10.1128/jvi.55.3.836-839.1985</citation>
584 <citation type="doi">10.1371/journal.pcbi.1006791</citation>
585 <citation type="doi">https://doi.org/10.1093/nar/gky379</citation>
586 </citations>
587 </tool>