comparison cooc_mutbamscan.xml @ 1:9f1660129403 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/cojac commit 5b54fc7af13196445abda407054e01dd3e5603c6
author iuc
date Mon, 31 Jul 2023 15:23:23 +0000
parents 373c1735d31f
children d58a57db7a96
comparison
equal deleted inserted replaced
0:373c1735d31f 1:9f1660129403
1 <tool id="cooc_mutbamscan" name="Cojac: mutbamscan" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" 1 <tool id="cooc_mutbamscan" name="Cojac: mutbamscan" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@"
2 profile="@PROFILE@"> 2 profile="@PROFILE@">
3 <description> 3 <description>
4 scan an alignment file for mutation co-occurrences 4 scans an alignment file for mutation co-occurrences
5 </description> 5 </description>
6 <macros> 6 <macros>
7 <import>macros.xml</import> 7 <import>macros.xml</import>
8 </macros> 8 </macros>
9 <expand macro="biotools"/> 9 <expand macro="biotools"/>
10 <expand macro="requirements"/> 10 <expand macro="requirements">
11 <requirement type="package" version="0.1.0">viramp-hub</requirement>
12 </expand>
11 <expand macro="version"/> 13 <expand macro="version"/>
12 <command detect_errors="exit_code"><![CDATA[ 14 <command detect_errors="exit_code"><![CDATA[
13 ln -s '$bed_file' 'bed_file' && 15 ## arrange BAM inputs and index files into a V-pipe-style folder structure
14 @VOCDIR_COMMAND@ 16 ## that cojac understands
15 #import re 17 sh arrange_samples.sh &&
16 #set identifier = re.sub('[^\s\w\-\\.]', '_', str($bam_file.element_identifier)) 18
17 ln -s '$bam_file' ${identifier}.bam && 19 #if $spec_layout.mode == 'separate':
18 ln -s '${bam_file.metadata.bam_index}' ${identifier}.bai && 20 #set $voc_config = $spec_layout.voc_source
19 cooc-mutbamscan 21 @VOCDIR_COMMAND@
20 -a '${identifier}.bam' 22 ## prepare amplicon information
21 -b 'bed_file' 23 #if $spec_layout.amplicon_definitions.choice == 'insert_scheme':
22 -m '$vocdir' 24 ln -s '$spec_layout.amplicon_definitions.insert_bed' bed_cojac.bed &&
23 -y cooc.yaml 25 #else if $spec_layout.amplicon_definitions.choice == 'primer_scheme':
24 -j cooc.json 26 scheme-convert '$spec_layout.amplicon_definitions.primer_bed' -t bed -b cojac -o bed_cojac.bed &&
25 #if $amplicons_file.choice == 'build' 27 #else:
26 -A amplicons.yaml 28 scheme-convert '$spec_layout.amplicon_definitions.primer_bed' -t bed -b cojac -a '$spec_layout.amplicon_definitions.amplicon_info' -o bed_cojac.bed &&
29 #end if
30 #end if
31
32 ## run cojac
33 cojac cooc-mutbamscan
34 ## use a sample list file to tell cojac to look for the inputs in the
35 ## V-pipe-style folder stucture we've created earlier.
36 -s samples_list.tsv
37 -p inputs
38 -b bed_cojac.bed
39 #if $spec_layout.mode == 'separate':
40 -m voc/
41 -A amplicons.yaml
42 --cooc $spec_layout.cooc
27 #else 43 #else
28 -Q '$amplicons_file.in_amp' 44 -Q '$spec_layout.in_amp'
29 #end if 45 #end if
30 -t cooc.tsv 46 #if 'yaml' in $out_opts.output_formats:
31 --cooc $cooc 47 -y cooc.yaml
48 #end if
49 #if 'json' in $out_opts.output_formats:
50 -j cooc.json
51 #end if
52 #if 'tabular' in $out_opts.output_formats:
53 -t cooc.tsv
54 #end if
32 ]]></command> 55 ]]></command>
56 <configfiles>
57 <configfile filename="arrange_samples.sh"><![CDATA[#for $dataset in $mapped_input:
58 #set $sample_id = $dataset.element_identifier.replace("'", '_').replace('/', '_')
59 mkdir -p 'inputs/$sample_id/1/alignments/' &&
60 ln -s '$dataset' 'inputs/$sample_id/1/alignments/REF_aln.bam' &&
61 ln -s '$dataset.metadata.bam_index' 'inputs/$sample_id/1/alignments/REF_aln.bam.bai' &&
62 #end for
63 #set $num_samples = len($mapped_input)
64 echo "Gathered $num_samples sample and index files for cojac to discover from a samples list."
65 ]]></configfile>
66 <configfile filename="samples_list.tsv"><![CDATA[#for $dataset in $mapped_input:
67 #set $line = '\t'.join([$dataset.element_identifier.replace("'", '_').replace('/', '_'), '1', str($dataset)])
68 $line
69 #end for]]></configfile>
70 </configfiles>
33 <inputs> 71 <inputs>
34 <expand macro="vocdir_input"/> 72 <param name="mapped_input" type="data" format="bam" multiple="true" label="Aligned reads input to analyze"/>
35 <param name="bed_file" type="data" format="bed" 73 <conditional name="spec_layout">
36 label="BED file defining the amplicons"/> 74 <param name="mode" type="select" label="How would you like to provide amplicon and lineage information?">
37 <param name="bam_file" type="data" format="bam,cram,sam" 75 <option value="separate">Separately</option>
38 label="Alignment BAM/CRAM/SAM file"/> 76 <option value="combined">Combined</option>
39 <param argument="--cooc" type="integer" min="1" value="2"
40 label="Minimum number of cooccurence mutations on the same amplicon"/>
41 <conditional name="amplicons_file">
42 <param name="choice" type="select" label="Source of amplicons YAML file">
43 <option value="build">Build from BED + set of YAMLs for variants of concern</option>
44 <option value="custom">From history</option>
45 </param> 77 </param>
46 <when value="build"/> 78 <when value="separate">
47 <when value="custom"> 79 <expand macro="vocdir_input"/>
48 <param name="in_amp" type="data" format="yaml" 80 <conditional name="amplicon_definitions">
49 label="YAML file to query amplicons"/> 81 <param name="choice" type="select" label="Format of amplicon definitions">
82 <option value="insert_scheme">Amplicon insert scheme (Cojac-native format)</option>
83 <option value="primer_scheme">Primer scheme (with autodetection of grouping into amplicons</option>
84 <option value="primer_scheme_plus">Primer scheme and explicit amplicon grouping information</option>
85 </param>
86 <when value="insert_scheme">
87 <param name="insert_bed" type="data" format="bed" label="Amplicon insert scheme" help="BED dataset providing the positions of the amplicon inserts (i.e. excluding the primer sequences) on the reference sequence."/>
88 </when>
89 <when value="primer_scheme">
90 <param name="primer_bed" type="data" format="bed" label="Primer scheme" help="The tool will attempt to autodetect the relationship between primers and amplicons based on the primer names."/>
91 </when>
92 <when value="primer_scheme_plus">
93 <param name="primer_bed" type="data" format="bed" label="Primer scheme" />
94 <param name="amplicon_info" type="data" format="tabular" label="Primers to amplicons assignments" help ="This input should have one line of tab-separated primer names (as they appear in the primer scheme) per amplicon."/>
95 </when>
96 </conditional>
97 <param argument="--cooc" type="integer" min="1" value="2" label="Minimum number of mutations required to co-occur on an amplicon"/>
98 <param name="output_cojac_ampl" type="boolean" checked="true" label="Produce combined per-amplicon lineage definition output" help="The tool can generate a YAML-formatted report of expected co-occurrences of mutations per amplicon and lineage. This output combines amplicon scheme and lineage definitions and can be used for rerunning the tool with identical configuration in 'Combined' mode. It is also a recommended input to the cojac pubmut tool so leave this option checked if you are intending to use this downstream tool."/>
99 </when>
100 <when value="combined">
101 <param name="in_amp" type="data" format="yaml" label="Combined per-amplicon lineage definitions"
102 help="YAML-formatted report of expected co-occurrences of mutations per amplicon and lineage generated by a previous run of the tool."/>
50 </when> 103 </when>
51 </conditional> 104 </conditional>
52 <param name="output_files" type="select" display="checkboxes" 105 <section name="out_opts" title="Output options" expanded="true">
53 multiple="true" label="Output files"> 106 <param name="output_formats" type="select" display="checkboxes" multiple="true" label="Produce output in these formats"
54 <option value="yaml" selected="true">YAML</option> 107 help="Please note that only yaml- and json-formatted results can be processed with the downstream pubmut and tabmut tools.">
55 <option value="json">JSON</option> 108 <option value="yaml">YAML</option>
56 <option value="tabular">tabular</option> 109 <option value="json" selected="true">JSON</option>
57 </param> 110 <option value="tabular">tabular</option>
111 </param>
112 </section>
58 </inputs> 113 </inputs>
59 <outputs> 114 <outputs>
60 <data name="cooc_yaml" format="yaml" 115 <data name="cooc_yaml" format="yaml" from_work_dir="cooc.yaml" label="${tool.name} on ${on_string}: Mutation co-occurrence (yaml)">
61 label="${tool.name} on ${on_string}: Mutation cooccurrence (yaml)" 116 <filter>'yaml' in out_opts['output_formats']</filter>
62 from_work_dir="cooc.yaml"> 117 </data>
63 <filter>'yaml' in output_files</filter> 118 <data name="cooc_json" format="json" from_work_dir="cooc.json" label="${tool.name} on ${on_string}: Mutation co-occurrence (json)">
64 </data> 119 <filter>'json' in out_opts['output_formats']</filter>
65 <data name="cooc_json" format="json" 120 </data>
66 label="${tool.name} on ${on_string}: Mutation cooccurrence (json)" 121 <data name="cooc_tsv" format="tabular" from_work_dir="cooc.tsv" label="${tool.name} on ${on_string}: Mutation co-occurrence (tabular)">
67 from_work_dir="cooc.json"> 122 <filter>'tabular' in out_opts['output_formats']</filter>
68 <filter>'json' in output_files</filter> 123 </data>
69 </data> 124 <data name="amplicons" format="yaml" from_work_dir="amplicons.yaml" label="${tool.name} on ${on_string}: Combined per-amplicon lineage definitions">
70 <data name="cooc_tsv" format="tabular" 125 <filter>spec_layout['mode'] == 'separate' and spec_layout['output_cojac_ampl']</filter>
71 label="${tool.name} on ${on_string}: Mutation cooccurrence (tabular)"
72 from_work_dir="cooc.tsv">
73 <filter>'tabular' in output_files</filter>
74 </data>
75 <data name="amplicons" format="yaml"
76 label="${tool.name} on ${on_string}: Amplicons (yaml)"
77 from_work_dir="amplicons.yaml">
78 <filter>amplicons_file['choice'] == 'build'</filter>
79 </data> 126 </data>
80 </outputs> 127 </outputs>
81 <tests> 128 <tests>
82 <!-- Test 1: build yaml for amplicons from bed and voc/ --> 129 <!-- Test 1: build yaml for amplicons from bed and voc/ -->
83 <test expect_num_outputs="4"> 130 <test expect_num_outputs="4">
84 <conditional name="vocdir_option"> 131 <param name="mapped_input" value="tbam11.bam"/>
85 <param name="choice" value="custom"/> 132 <conditional name="spec_layout">
86 <param name="voc_file" value="omicron_ba1_mutations.yaml"/> 133 <conditional name="voc_source">
87 </conditional> 134 <param name="choice" value="custom"/>
88 <param name="bam_file" value="tbam11.bam"/> 135 <param name="collection">
89 <param name="bed_file" value="nCoV-2019.insert.V3.bed"/> 136 <collection type="list">
90 <conditional name="amplicons_file"> 137 <element name="BA.1" ftype="yaml" value="omicron_ba1_mutations.yaml" />
91 <param name="choice" value="build"/> 138 </collection>
92 </conditional> 139 </param>
93 <param name="output_files" value="yaml,json,tabular"/> 140 </conditional>
141 <conditional name="amplicon_definitions">
142 <param name="insert_bed" value="nCoV-2019.insert.V3.bed" ftype="bed"/>
143 </conditional>
144 </conditional>
145 <section name="out_opts">
146 <param name="output_formats" value="yaml,json,tabular"/>
147 </section>
94 <output name="cooc_yaml" ftype="yaml"> 148 <output name="cooc_yaml" ftype="yaml">
95 <assert_contents> 149 <assert_contents>
96 <has_text text="76_om1"/> 150 <has_text text="76_om1"/>
97 <has_text text="81_om1"/> 151 <has_text text="81_om1"/>
98 </assert_contents> 152 </assert_contents>
114 <has_text text="76_om1"/> 168 <has_text text="76_om1"/>
115 <has_text text="81_om1"/> 169 <has_text text="81_om1"/>
116 </assert_contents> 170 </assert_contents>
117 </output> 171 </output>
118 </test> 172 </test>
119 <!-- Test 2: supply yaml for amplicons and voc/ from cache --> 173 <!-- Test 2: configure via cojac yaml -->
120 <test expect_num_outputs="2"> 174 <test expect_num_outputs="2">
121 <conditional name="vocdir_option"> 175 <param name="mapped_input" value="tbam11.bam"/>
122 <param name="choice" value="cache"/> 176 <conditional name="spec_layout">
123 </conditional> 177 <param name="mode" value="combined"/>
124 <param name="bam_file" value="tbam11.bam"/>
125 <param name="bed_file" value="nCoV-2019.insert.V3.bed"/>
126 <conditional name="amplicons_file">
127 <param name="choice" value="custom"/>
128 <param name="in_amp" value="amplicons111.yaml"/> 178 <param name="in_amp" value="amplicons111.yaml"/>
129 </conditional> 179 </conditional>
130 <param name="output_files" value="yaml,tabular"/> 180 <section name="out_opts">
181 <param name="output_formats" value="yaml,tabular"/>
182 </section>
183 <output name="cooc_yaml" ftype="yaml">
184 <assert_contents>
185 <has_text text="76_om1"/>
186 <has_text text="81_om1"/>
187 </assert_contents>
188 </output>
189 <output name="cooc_tsv" ftype="tabular">
190 <assert_contents>
191 <has_text text="76_om1"/>
192 <has_text text="81_om1"/>
193 </assert_contents>
194 </output>
195 </test>
196 <!-- Test 3: use computed cojac format amplicon definitions from 2 files -->
197 <test expect_num_outputs="2">
198 <param name="mapped_input" value="tbam11.bam"/>
199 <conditional name="spec_layout">
200 <conditional name="voc_source">
201 <param name="choice" value="builtin"/>
202 </conditional>
203 <conditional name="amplicon_definitions">
204 <param name="choice" value="primer_scheme_plus"/>
205 <param name="primer_bed" value="primers.bed" ftype="bed"/>
206 <param name="amplicon_info" value="ampl_info.tsv"/>
207 </conditional>
208 <param name="output_cojac_ampl" value="false"/>
209 </conditional>
210 <section name="out_opts">
211 <param name="output_formats" value="yaml,tabular"/>
212 </section>
213 <output name="cooc_yaml" ftype="yaml">
214 <assert_contents>
215 <has_text text="76_om1"/>
216 <has_text text="81_om1"/>
217 </assert_contents>
218 </output>
219 <output name="cooc_tsv" ftype="tabular">
220 <assert_contents>
221 <has_text text="76_om1"/>
222 <has_text text="81_om1"/>
223 </assert_contents>
224 </output>
225 </test>
226 <!-- Test 4: test primer scheme as input -->
227 <test expect_num_outputs="2">
228 <param name="mapped_input" value="tbam11.bam"/>
229 <conditional name="spec_layout">
230 <conditional name="voc_source">
231 <param name="choice" value="builtin"/>
232 </conditional>
233 <conditional name="amplicon_definitions">
234 <param name="choice" value="primer_scheme"/>
235 <param name="primer_bed" value="primers.bed" ftype="bed"/>
236 </conditional>
237 <param name="output_cojac_ampl" value="false"/>
238 </conditional>
239 <section name="out_opts">
240 <param name="output_formats" value="yaml,tabular"/>
241 </section>
131 <output name="cooc_yaml" ftype="yaml"> 242 <output name="cooc_yaml" ftype="yaml">
132 <assert_contents> 243 <assert_contents>
133 <has_text text="76_om1"/> 244 <has_text text="76_om1"/>
134 <has_text text="81_om1"/> 245 <has_text text="81_om1"/>
135 </assert_contents> 246 </assert_contents>
143 </test> 254 </test>
144 </tests> 255 </tests>
145 <help><![CDATA[ 256 <help><![CDATA[
146 @HELP_HEADER@ 257 @HELP_HEADER@
147 258
148 Information about **cooc-mutbamscan** method 259 Information about **cojac cooc-mutbamscan**
149 ============================================ 260 ===========================================
150 261
151 The method scans an alignment BAM/CRAM/SAM file for mutation co-occurrences and output a JSON or YAML file. 262 The tool scans an alignment BAM/CRAM/SAM file for mutation co-occurrences.
152 263 It can report its findings in json, yaml and/or tabular format.
153 ]]></help> 264 ]]></help>
154 <expand macro="citations"/> 265 <expand macro="citations"/>
155 </tool> 266 </tool>