29
|
1 <macros>
|
|
2 <xml name="requirements">
|
|
3 <requirements>
|
|
4 <requirement type="package" version="@TOOL_VERSION@">samtools</requirement>
|
|
5 <yield/>
|
|
6 </requirements>
|
|
7 </xml>
|
|
8 <token name="@TOOL_VERSION@">1.9</token>
|
|
9 <token name="@FLAGS@">#set $flags = sum(map(int, str($filter).split(',')))</token>
|
|
10 <token name="@PREPARE_IDX@"><![CDATA[
|
|
11 ##prepare input and indices
|
|
12 ln -s '$input' infile &&
|
|
13 #if $input.is_of_type('bam'):
|
|
14 #if str( $input.metadata.bam_index ) != "None":
|
|
15 ln -s '${input.metadata.bam_index}' infile.bai &&
|
|
16 #else:
|
|
17 samtools index infile infile.bai &&
|
|
18 #end if
|
|
19 #elif $input.is_of_type('cram'):
|
|
20 #if str( $input.metadata.cram_index ) != "None":
|
|
21 ln -s '${input.metadata.cram_index}' infile.crai &&
|
|
22 #else:
|
|
23 samtools index infile infile.crai &&
|
|
24 #end if
|
|
25 #end if
|
|
26 ]]></token>
|
|
27 <token name="@PREPARE_IDX_MULTIPLE@"><![CDATA[
|
|
28 ##prepare input and indices
|
|
29 #for $i, $bam in enumerate( $input_bams ):
|
|
30 ln -s '$bam' '${i}' &&
|
|
31 #if $bam.is_of_type('bam'):
|
|
32 #if str( $bam.metadata.bam_index ) != "None":
|
|
33 ln -s '${bam.metadata.bam_index}' '${i}.bai' &&
|
|
34 #else:
|
|
35 samtools index '${i}' '${i}.bai' &&
|
|
36 #end if
|
|
37 #elif $bam.is_of_type('cram'):
|
|
38 #if str( $bam.metadata.cram_index ) != "None":
|
|
39 ln -s '${bam.metadata.cram_index}' '${i}.crai' &&
|
|
40 #else:
|
|
41 samtools index '${i}' '${i}.crai' &&
|
|
42 #end if
|
|
43 #end if
|
|
44 #end for
|
|
45 ]]></token>
|
|
46 <token name="@PREPARE_FASTA_IDX@"><![CDATA[
|
|
47 ##checks for reference data ($addref_cond.addref_select=="history" or =="cached")
|
|
48 ##and sets the -t/-T parameters accordingly:
|
|
49 ##- in case of history a symbolic link is used because samtools (view) will generate
|
|
50 ## the index which might not be possible in the directory containing the fasta file
|
|
51 ##- in case of cached the absolute path is used which allows to read the cram file
|
|
52 ## without specifying the reference
|
|
53 #if $addref_cond.addref_select == "history":
|
|
54 ln -s '${addref_cond.ref}' reference.fa &&
|
|
55 samtools faidx reference.fa &&
|
|
56 #set reffa="reference.fa"
|
|
57 #set reffai="reference.fa.fai"
|
|
58 #elif $addref_cond.addref_select == "cached":
|
|
59 #set reffa=str($addref_cond.ref.fields.path)
|
|
60 #set reffai=str($addref_cond.ref.fields.path)+".fai"
|
|
61 #else
|
|
62 #set reffa=None
|
|
63 #set reffai=None
|
|
64 #end if
|
|
65 ]]></token>
|
|
66 <token name="@ADDTHREADS@"><![CDATA[
|
|
67 ##compute the number of ADDITIONAL threads to be used by samtools (-@)
|
|
68 addthreads=\${GALAXY_SLOTS:-1} && (( addthreads-- )) &&
|
|
69 ]]></token>
|
|
70 <token name="@ADDMEMORY@"><![CDATA[
|
|
71 ##compute the number of memory available to samtools sort (-m)
|
|
72 ##use only 75% of available: https://github.com/samtools/samtools/issues/831
|
|
73 addmemory=\${GALAXY_MEMORY_MB_PER_SLOT:-768} &&
|
|
74 ((addmemory=addmemory*75/100)) &&
|
|
75 ]]></token>
|
|
76 <xml name="seed_input">
|
|
77 <param name="seed" type="integer" optional="True" label="Seed for random number generator" help="If empty a random seed is used." />
|
|
78 </xml>
|
|
79 <xml name="flag_options">
|
|
80 <option value="1">read is paired</option>
|
|
81 <option value="2">read is mapped in a proper pair</option>
|
|
82 <option value="4">read is unmapped</option>
|
|
83 <option value="8">mate is unmapped</option>
|
|
84 <option value="16">read reverse strand</option>
|
|
85 <option value="32">mate reverse strand</option>
|
|
86 <option value="64">read is the first in a pair</option>
|
|
87 <option value="128">read is the second in a pair</option>
|
|
88 <option value="256">alignment or read is not primary</option>
|
|
89 <option value="512">read fails platform/vendor quality checks</option>
|
|
90 <option value="1024">read is a PCR or optical duplicate</option>
|
|
91 <option value="2048">supplementary alignment</option>
|
|
92 </xml>
|
|
93
|
|
94 <!-- region specification macros and tokens for tools that allow the specification
|
|
95 of region by bed file / space separated list of regions -->
|
|
96 <token name="@REGIONS_FILE@"><![CDATA[
|
|
97 #if $cond_region.select_region == 'tab':
|
|
98 -t '$cond_region.targetregions'
|
|
99 #end if
|
|
100 ]]></token>
|
|
101 <token name="@REGIONS_MANUAL@"><![CDATA[
|
|
102 #if $cond_region.select_region == 'text':
|
|
103 #for $i, $x in enumerate($cond_region.regions_repeat):
|
|
104 '${x.region}'
|
|
105 #end for
|
|
106 #end if
|
|
107 ]]></token>
|
|
108 <xml name="regions_macro">
|
|
109 <conditional name="cond_region">
|
|
110 <param name="select_region" type="select" label="Filter by regions" help="restricts output to only those alignments which overlap the specified region(s)">
|
|
111 <option value="no" selected="True">No</option>
|
|
112 <option value="text">Manualy specify regions</option>
|
|
113 <option value="tab">Regions from tabular file</option>
|
|
114 </param>
|
|
115 <when value="no"/>
|
|
116 <when value="text">
|
|
117 <repeat name="regions_repeat" min="1" default="1" title="Regions">
|
|
118 <param name="region" type="text" label="region" help="format chr:from-to">
|
|
119 <validator type="regex" message="Required format: CHR[:FROM[-TO]]; where CHR: string containing any character except quotes, whitespace and colon; FROM and TO: any integer">^[^\s'\":]+(:\d+(-\d+){0,1}){0,1}$</validator>
|
|
120 </param>
|
|
121 </repeat>
|
|
122 </when>
|
|
123 <when value="tab">
|
|
124 <param name="targetregions" argument="-t/--target-regions" type="data" format="tabular" label="Target regions file" help="Do stats in these regions only. Tab-delimited file chr,from,to (1-based, inclusive)" />
|
|
125 </when>
|
|
126 </conditional>
|
|
127 </xml>
|
|
128
|
|
129 <xml name="citations">
|
|
130 <citations>
|
|
131 <citation type="bibtex">
|
|
132 @misc{SAM_def,
|
|
133 title={Definition of SAM/BAM format},
|
|
134 url = {https://samtools.github.io/hts-specs/},}
|
|
135 </citation>
|
|
136 <citation type="doi">10.1093/bioinformatics/btp352</citation>
|
|
137 <citation type="doi">10.1093/bioinformatics/btr076</citation>
|
|
138 <citation type="doi">10.1093/bioinformatics/btr509</citation>
|
|
139 <citation type="bibtex">
|
|
140 @misc{Danecek_et_al,
|
|
141 Author={Danecek, P., Schiffels, S., Durbin, R.},
|
|
142 title={Multiallelic calling model in bcftools (-m)},
|
|
143 url = {http://samtools.github.io/bcftools/call-m.pdf},}
|
|
144 </citation>
|
|
145 <citation type="bibtex">
|
|
146 @misc{Durbin_VCQC,
|
|
147 Author={Durbin, R.},
|
|
148 title={Segregation based metric for variant call QC},
|
|
149 url = {http://samtools.github.io/bcftools/rd-SegBias.pdf},}
|
|
150 </citation>
|
|
151 <citation type="bibtex">
|
|
152 @misc{Li_SamMath,
|
|
153 Author={Li, H.},
|
|
154 title={Mathematical Notes on SAMtools Algorithms},
|
|
155 url = {http://www.broadinstitute.org/gatk/media/docs/Samtools.pdf},}
|
|
156 </citation>
|
|
157 <citation type="bibtex">
|
|
158 @misc{SamTools_github,
|
|
159 title={SAMTools GitHub page},
|
|
160 url = {https://github.com/samtools/samtools},}
|
|
161 </citation>
|
|
162 </citations>
|
|
163 </xml>
|
|
164 <xml name="version_command">
|
|
165 <version_command><![CDATA[samtools 2>&1 | grep Version]]></version_command>
|
|
166 </xml>
|
|
167 <xml name="stdio">
|
|
168 <stdio>
|
|
169 <exit_code range="1:" level="fatal" description="Error" />
|
|
170 </stdio>
|
|
171 </xml>
|
|
172 </macros>
|