comparison gffread.xml @ 0:5f6e6582c01d draft

planemo upload commit a52cc16ed8d0d60e99742b55fccbdedcbb64b82c
author devteam
date Thu, 14 May 2015 13:08:14 -0400
parents
children 48fe74f391ab
comparison
equal deleted inserted replaced
-1:000000000000 0:5f6e6582c01d
1 <tool id="gffread" name="gffread" version="@VERSION@.0">
2 <description>Filters and/or converts GFF3/GTF2 records</description>
3 <expand macro="requirements" />
4 <expand macro="stdio" />
5 <macros>
6 <import>cuff_macros.xml</import>
7 <xml name="fasta_output_select">
8 <param name="fa_outputs" type="select" display="checkboxes" multiple="true" label="Select fasta outputs">
9 <option value="-w exons.fa">fasta file with spliced exons for each GFF transcript (-w exons.fa)</option>
10 <option value="-x cds.fa">fasta file with spliced CDS for each GFF transcript (-x cds.fa)</option>
11 <option value="-y pep.fa">protein fasta file with the translation of CDS for each record (-y pep.fa)</option>
12 <option value="-W">for each fasta: record the exon coordinates projected onto the spliced sequence (-W)</option>
13 </param>
14 </xml>
15 <xml name="ref_filtering_select">
16 <param name="ref_filtering" type="select" display="checkboxes" multiple="true" label="reference based filters">
17 <option value="-N">discard multi-exon mRNAs that have any intron with a non-canonical splice site consensus, i.e. not GT-AG, GC-AG or AT-AC (-N)</option>
18 <option value="-J">discard any mRNAs that either lack initial START codon or the terminal STOP codon, or have an in-frame stop codon (-J)</option>
19 <option value="-V">discard any mRNAs with CDS having in-frame stop codons (-V)</option>
20 <option value="-H">check and adjust the starting CDS phase if the original phase leads to a translation with an in-frame stop codon (-H with -V)</option>
21 <!-- gffread bug: B not in missing from param to the arg parser
22 <option value="-B">single-exon transcripts are also checked on the opposite strand (-B with -V)</option>
23 -->
24 </param>
25 </xml>
26 <xml name="trackname">
27 <param name="tname" type="text" value="" size="30" optional="true" label="Trackname to use in the second column of each GFF output line" help="(-t track_name}">
28 <validator type="regex">\w+</validator>
29 </param>
30 </xml>
31 <xml name="merge_opts">
32 <option value="-K">also collapse shorter, fully contained transcripts with fewer introns than the container (-K)</option>
33 <option value="-Q">remove the containment restriction: multi-exon transcripts will be collapsed if just their introns match, while single-exon transcripts can partially overlap 80% (-Q)</option>
34 <option value="-d dupinfo">output collapsing info (-d dupinfo)</option>
35 </xml>
36 <xml name="cluster_opts">
37 <option value="--force-exons"> make sure that the lowest level GFF features are printed as 'exon' features (--force-exons)</option>
38 <option value="-Z">merge close exons into a single exon (for intron size &lt; 4) (-Z)</option>
39 </xml>
40 <xml name="merge_opt_sel">
41 <param name="merge_options" type="select" display="checkboxes" multiple="true" label="Merge options">
42 <expand macro="cluster_opts" />
43 <expand macro="merge_opts" />
44 </param>
45 </xml>
46 <xml name="cluster_opt_sel">
47 <param name="merge_options" type="select" display="checkboxes" multiple="true" label="Cluster options">
48 <expand macro="cluster_opts" />
49 </param>
50 </xml>
51 </macros>
52 <command>
53 <![CDATA[
54 #if $reference_genome.source == 'history':
55 ln -s $reference_genome.genome_fasta genomeref.fa &&
56 #end if
57 gffread $input
58 #if $reference_genome.source == 'cached':
59 -g "${reference_genome.fasta_indexes.fields.path}"
60 #if $reference_genome.ref_filtering and str($reference_genome.ref_filtering) != '':
61 #echo ' '.join(str($reference_genome.ref_filtering).split(','))
62 #end if
63 #elif $reference_genome.source == 'history':
64 -g genomeref.fa
65 #if $reference_genome.ref_filtering and str($reference_genome.ref_filtering) != '':
66 #echo ' '.join(str($reference_genome.ref_filtering).split(','))
67 #end if
68 #end if
69 #if $filtering and str($filtering) != '':
70 #echo " "
71 #echo ' '.join(str($filtering).split(','))
72 #end if
73 #if $maxintron and $maxintron > 0:
74 -i $maxintron
75 #end if
76 #if $region.region_filter == 'filter':
77 -r $region.range $region.discard_partial
78 #end if
79 #if $merging.merge_sel != 'none':
80 $merging.merge_cmd
81 #if $merging.merge_options:
82 #echo ' '.join(str($merging.merge_options).split(','))
83 #end if
84 #end if
85 #if $chr_replace:
86 -m "$chr_replace"
87 #end if
88 ##
89 ## Although documented, does not appear to be used in the gffread code
90 ## #if $seq_info:
91 ## -A -s "$seq_info"
92 ## #end if
93 ##
94 ## outputs
95 #if $reference_genome.source != 'none':
96 #if $reference_genome.fa_outputs and str($reference_genome.fa_outputs) != '':
97 #echo ' ' + ' '.join(str($reference_genome.fa_outputs).split(','))
98 #end if
99 #end if
100 #if $gffs.gff_fmt != 'none':
101 #if $gffs.tname:
102 -t "$gffs.tname"
103 #end if
104 #if $gffs.gff_fmt == 'gff':
105 #if $input.datatype.file_ext == 'gft':
106 $gffs.ensembl
107 #end if
108 $gffs.output_cmd
109 #elif $gffs.gff_fmt == 'gtf':
110 $gffs.output_cmd
111 #end if
112 #end if
113 ]]>
114 </command>
115 <inputs>
116 <param name="input" type="data" format="gff3,gtf" label="Input GFF3 or GTF feature file"/>
117 <!-- filtering -->
118 <param name="filtering" type="select" display="checkboxes" multiple="true" label="filters">
119 <option value="-U">discard single-exon transcripts (-U)</option>
120 <option value="-C">coding only: discard mRNAs that have no CDS feature (-C)</option>
121 <option value="-G">only parse additional exon attributes from the first exon and move them to the mRNA level (useful for GTF input) (-G)</option>
122 <option value="-O">process also non-transcript GFF records (by default non-transcript records are ignored) (-O)</option>
123 <option value="--no-pseudo">filter out records matching the 'pseudo' keyword (--no-pseudo)</option>
124 </param>
125 <conditional name="region">
126 <param name="region_filter" type="select" label="Filter by genome region">
127 <option value="none">No</option>
128 <option value="filter">Yes</option>
129 </param>
130 <when value="none"/>
131 <when value="filter">
132 <param name="range" type="text" value="" size="60" label="Only show transcripts overlapping coordinate range">
133 <help><![CDATA[
134 (-r [['strand']'chr':]'start'..'end') <br>
135 examples: <br>
136 1000..500000 <br>
137 chr1:1000..500000 <br>
138 +chr1:1000..500000 <br>
139 -chr1:1000..500000
140 ]]>
141 </help>
142 <validator type="regex">(([+-])?(\w+:))?\d+\.\.\d+</validator>
143 </param>
144 <param name="discard_partial" type="boolean" truevalue="-R" falsevalue="" check="false"
145 label="discard all transcripts that are not fully contained within the given range" help="(-R)"/>
146 </when>
147 </conditional>
148 <param name="maxintron" type="integer" value="" optional="true" min="0" label="Filter out transcipts with large introns"
149 help="If set, discard transcripts having an intron larger (-i max_intron)"/>
150 <param name="chr_replace" type="data" format="tabular" optional="true" label="Replace reference sequence names" >
151 <help><![CDATA[(-m chr_replace) <br>
152 chr_replace is a reference sequence replacement table consisting of 2 columns: "original_ref_ID" "new_ref_ID"<br>
153 It is useful for switching between Ensembl and UCSC naming conventions <br>
154 NOTE: GFF records on reference sequences that are not found among the "original_ref_ID" entries in this file will be filtered out
155 ]]>
156 </help>
157 </param>
158
159 <!-- Although documented, does not appear to be used in the gffread code
160 <param name="seq_info" type="data" format="tabular" optional="true" label="Use the description field as the value for a 'descr' attribute to the GFF record">
161 <help>
162 (-s seq_info.fsize -A) useful with mRNA/EST/protein mappings &lt;br&gt;
163 seq_info input file is a 3 column tab-delimited file providing this info for each of the mapped sequences: &lt;br&gt;
164 "seq-name" "seq-length" "seq-description" &lt;br&gt;
165 </help>
166 </param>
167 -->
168
169 <!-- merging -->
170 <conditional name="merging">
171 <param name="merge_sel" type="select" label="Transcript merging" help="(-M/--merge or --cluster-only)">
172 <option value="none">none</option>
173 <option value="merge">merge: cluster the input transcripts into loci, collapsing matching transcripts</option>
174 <option value="cluster">cluster-only: merge but without collapsing matching transcripts</option>
175 </param>
176 <when value="none"/>
177 <when value="merge">
178 <param name="merge_cmd" type="hidden" value="--merge"/>
179 <expand macro="merge_opt_sel" />
180 </when>
181 <when value="cluster">
182 <param name="merge_cmd" type="hidden" value="--cluster-only"/>
183 <expand macro="cluster_opt_sel" />
184 </when>
185 </conditional>
186 <!-- reference sequence file -->
187 <!-- Error: -g option is required for options -w, -x, -y, -V, -N, -M -->
188 <conditional name="reference_genome">
189 <param name="source" type="select" label="Reference Genome" help="(-g genome.fasta) NOTE: Required for fasta outputs">
190 <option value="none">none</option>
191 <option value="cached"></option>
192 <option value="history">From your history</option>
193 </param>
194 <when value="none">
195 </when>
196 <when value="cached">
197 <param name="fasta_indexes" type="select" label="Source FASTA Sequence">
198 <options from_data_table="all_fasta"/>
199 </param>
200 <expand macro="ref_filtering_select" />
201 <expand macro="fasta_output_select" />
202 </when>
203 <when value="history">
204 <param name="genome_fasta" type="data" format="fasta" label="Genome Reference Fasta"/>
205 <expand macro="ref_filtering_select" />
206 <expand macro="fasta_output_select" />
207 </when>
208 </conditional>
209
210 <!-- outputs -->
211 <conditional name="gffs">
212 <param name="gff_fmt" type="select" optional="true" label="Feature File Output" help="(-o output.gff3|output.gtf)">
213 <option value="none">none</option>
214 <option value="gff">GFF</option>
215 <option value="gtf">GTF</option>
216 </param>
217 <when value="none">
218 </when>
219 <when value="gff">
220 <param name="output_cmd" type="hidden" value="-o output.gff3"/>
221 <param name="ensembl" type="boolean" truevalue="-L" falsevalue="" check="false" label="Ensembl GTF to GFF3 conversion" help="(-L)"/>
222 <expand macro="trackname" />
223 </when>
224 <when value="gtf">
225 <param name="output_cmd" type="hidden" value="-T -o output.gtf"/>
226 <expand macro="trackname" />
227 </when>
228 </conditional>
229
230 <param name="full_gff_attribute_preservation" type="boolean" truevalue="-F" falsevalue="" check="false"
231 label="full GFF attribute preservation (all attributes are shown)" help="(-F)"/>
232 <param name="decode_url" type="boolean" truevalue="-D" falsevalue="" check="false"
233 label="decode url encoded characters within attributes" help="(-D)"/>
234 <param name="expose" type="boolean" truevalue="-E" falsevalue="" check="false"
235 label="warn about duplicate transcript IDs and other potential problems with the given GFF/GTF records" help="(-E)"/>
236
237 </inputs>
238 <outputs>
239 <data name="output_gff" format="gff3" metadata_source="input" label="${tool.name} on ${on_string}: gff3" from_work_dir="output.gff3">
240 <filter>gffs['gff_fmt'] == 'gff'</filter>
241 </data>
242 <data name="output_gtf" format="gtf" metadata_source="input" label="${tool.name} on ${on_string}: gtf" from_work_dir="output.gtf">
243 <filter>gffs['gff_fmt'] == 'gtf'</filter>
244 </data>
245 <data name="output_exons" format="fasta" label="${tool.name} on ${on_string}: exons.fa" from_work_dir="exons.fa">
246 <filter>'fa_outputs' in reference_genome and str(reference_genome['fa_outputs']).find('exons.fa') > 0 </filter>
247 </data>
248 <data name="output_cds" format="fasta" label="${tool.name} on ${on_string}: cds.fa" from_work_dir="cds.fa">
249 <filter>'fa_outputs' in reference_genome and str(reference_genome['fa_outputs']).find('cds.fa') > 0</filter>
250 </data>
251 <data name="output_pep" format="fasta" label="${tool.name} on ${on_string}: pep.fa" from_work_dir="pep.fa">
252 <filter>'fa_outputs' in reference_genome and str(reference_genome['fa_outputs']).find('pep.fa') > 0</filter>
253 </data>
254 <data name="output_dupinfo" format="txt" label="${tool.name} on ${on_string}: dupinfo" from_work_dir="dupinfo">
255 <filter>'merge_options' in merging and merging['merge_options'].find('dupinfo') > 0</filter>
256 </data>
257 </outputs>
258 <tests>
259 <test>
260 <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/>
261 <param name="gff_fmt" value="gff"/>
262 <output name="output_gff" file="Homo_sapiens.GRCh37_19.71.gff3" ftype="gff3" />
263 </test>
264
265 <test>
266 <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/>
267 <param name="filtering" value="--no-pseudo"/>
268 <param name="gff_fmt" value="gtf"/>
269 <output name="output_gtf">
270 <assert_contents>
271 <not_has_text text="pseudo" />
272 </assert_contents>
273 </output>
274 </test>
275
276 <test>
277 <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/>
278 <param name="region_filter" value="filter"/>
279 <param name="range" value="19:496500..504965"/>
280 <param name="gff_fmt" value="gtf"/>
281 <output name="output_gtf">
282 <assert_contents>
283 <has_text text="ENST00000587541" />
284 <has_text text="ENST00000382683" />
285 </assert_contents>
286 </output>
287 </test>
288
289 <test>
290 <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/>
291 <param name="region_filter" value="filter"/>
292 <param name="range" value="19:496500..504965"/>
293 <param name="discard_partial" value="true"/>
294 <param name="gff_fmt" value="gtf"/>
295 <output name="output_gtf">
296 <assert_contents>
297 <has_text text="ENST00000587541" />
298 <has_text text="ENST00000382683" />
299 </assert_contents>
300 </output>
301 </test>
302
303 <test>
304 <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/>
305 <param name="filtering" value="-C"/>
306 <param name="region_filter" value="filter"/>
307 <param name="range" value="19:496500..504965"/>
308 <param name="gff_fmt" value="gtf"/>
309 <output name="output_gtf">
310 <assert_contents>
311 <not_has_text text="ENST00000587541" />
312 <has_text text="ENST00000382683" />
313 </assert_contents>
314 </output>
315 </test>
316
317 <test>
318 <param name="input" ftype="gtf" value="Homo_sapiens.GRCh37_19.71.gtf"/>
319 <param name="source" value="history"/>
320 <param name="genome_fasta" ftype="fasta" value="Homo_sapiens.GRCh37.71.dna.chromosome.19.fa"/>
321 <param name="fa_outputs" value="-w exons.f,-x cds.fa,-y pep.fa"/>
322 <param name="region_filter" value="filter"/>
323 <param name="range" value="19:496500..504965"/>
324 <param name="gff_fmt" value="gtf"/>
325 <output name="output_gtf">
326 <assert_contents>
327 <not_has_text text="ENST00000587541" />
328 <has_text text="ENST00000382683" />
329 </assert_contents>
330 </output>
331 <output name="output_exons">
332 <assert_contents>
333 <has_text text="ENST00000346144 gene=MADCAM1 CDS=47-932" />
334 <has_text text="CTATTTAAGCGGCTTCCCCGCGGCCTCGGGACAGAGGGGACTGAGCATGGATTTCGGACTGGCCCTCCTG" />
335 </assert_contents>
336 </output>
337 <output name="output_cds">
338 <assert_contents>
339 <has_text text="ENST00000346144 gene=MADCAM1" />
340 <has_text text="ATGGATTTCGGACTGGCCCTCCTGCTGGCGGGGCTTCTGGGGCTCCTCCTCGGCCAGTCCCTCCAGGTGA" />
341 </assert_contents>
342 </output>
343 <output name="output_pep">
344 <assert_contents>
345 <has_text text="ENST00000346144 gene=MADCAM1" />
346 <has_text text="MDFGLALLLAGLLGLLLGQSLQVKPLQVEPPEPVVAVALGASRQLTCRLACADRGASVQWRGLDTSLGAV" />
347 </assert_contents>
348 </output>
349 </test>
350
351 </tests>
352 <help>
353 <![CDATA[
354 **gffread Filters and/or converts GFF3/GTF2 records**
355
356 The gffread command is distributed with the cufflinks_ package.
357
358 .. _cufflinks: http://cole-trapnell-lab.github.io/cufflinks/
359
360 Usage: ::
361
362 gffread "input_gff" [-g "genomic_seqs_fasta" | "dir"][-s "seq_info.fsize"]
363 [-o "outfile.gff"] [-t "tname"] [-r [["strand"]"chr":]"start".."end" [-R]]
364 [-CTVNJMKQAFGUBHZWTOLE] [-w "exons.fa"] [-x "cds.fa"] [-y "tr_cds.fa"]
365 [-i "maxintron"]
366
367 Options: ::
368
369 -g full path to a multi-fasta file with the genomic sequences
370 for all input mappings, OR a directory with single-fasta files
371 (one per genomic sequence, with file names matching sequence names)
372 -s <seq_info.fsize> is a tab-delimited file providing this info
373 for each of the mapped sequences:
374 <seq-name> <seq-length> <seq-description>
375 (useful for -A option with mRNA/EST/protein mappings)
376 -i discard transcripts having an intron larger than <maxintron>
377 -r only show transcripts overlapping coordinate range <start>..<end>
378 (on chromosome/contig <chr>, strand <strand> if provided)
379 -R for -r option, discard all transcripts that are not fully
380 contained within the given range
381 -U discard single-exon transcripts
382 -C coding only: discard mRNAs that have no CDS feature
383 -F full GFF attribute preservation (all attributes are shown)
384 -G only parse additional exon attributes from the first exon
385 and move them to the mRNA level (useful for GTF input)
386 -A use the description field from <seq_info.fsize> and add it
387 as the value for a 'descr' attribute to the GFF record
388
389 -O process also non-transcript GFF records (by default non-transcript
390 records are ignored)
391 -V discard any mRNAs with CDS having in-frame stop codons
392 -H for -V option, check and adjust the starting CDS phase
393 if the original phase leads to a translation with an
394 in-frame stop codon
395 -B for -V option, single-exon transcripts are also checked on the
396 opposite strand
397 -N discard multi-exon mRNAs that have any intron with a non-canonical
398 splice site consensus (i.e. not GT-AG, GC-AG or AT-AC)
399 -J discard any mRNAs that either lack initial START codon
400 or the terminal STOP codon, or have an in-frame stop codon
401 (only print mRNAs with a fulll, valid CDS)
402 --no-pseudo: filter out records matching the 'pseudo' keyword
403
404 -M/--merge : cluster the input transcripts into loci, collapsing matching
405 transcripts (those with the same exact introns and fully contained)
406 -d <dupinfo> : for -M option, write collapsing info to file <dupinfo>
407 --cluster-only: same as --merge but without collapsing matching transcripts
408 -K for -M option: also collapse shorter, fully contained transcripts
409 with fewer introns than the container
410 -Q for -M option, remove the containment restriction:
411 (multi-exon transcripts will be collapsed if just their introns match,
412 while single-exon transcripts can partially overlap (80%))
413
414 --force-exons: make sure that the lowest level GFF features are printed as
415 "exon" features
416 -E expose (warn about) duplicate transcript IDs and other potential
417 problems with the given GFF/GTF records
418 -D decode url encoded characters within attributes
419 -Z merge close exons into a single exon (for intron size<4)
420 -w write a fasta file with spliced exons for each GFF transcript
421 -x write a fasta file with spliced CDS for each GFF transcript
422 -W for -w and -x options, also write for each fasta record the exon
423 coordinates projected onto the spliced sequence
424 -y write a protein fasta file with the translation of CDS for each record
425 -L Ensembl GTF to GFF3 conversion (implies -F; should be used with -m)
426 -m <chr_replace> is a reference (genomic) sequence replacement table with
427 this format:
428 <original_ref_ID> <new_ref_ID>
429 For example from UCSC naming to Ensembl naming:
430 chr1 1
431 chr2 2
432 GFF records on reference sequences that are not found among the
433 <original_ref_ID> entries in this file will be filtered out
434 -o the "filtered" GFF records will be written to <outfile.gff>
435 (use -o- for printing to stdout)
436 -t use <trackname> in the second column of each GFF output line
437 -T -o option will output GTF format instead of GFF3
438
439 ]]>
440 </help>
441 <citations>
442 <citation type="doi">10.1038/nbt.1621</citation>
443 </citations>
444 </tool>