rliterman@29
|
1 <tool id="csp2-snp" name="CSP2 (SNP Pipeline Mode)" version="0.9.7_Dev21">
|
rliterman@29
|
2 <description>Run SNP Pipeline analysis on isolates using one or more references.</description>
|
rliterman@29
|
3 <requirements>
|
rliterman@29
|
4 <requirement type="package" version="24.10.1">nextflow</requirement>
|
rliterman@29
|
5 <requirement type="package" version="1.5.8">micromamba</requirement>
|
rliterman@29
|
6 </requirements>
|
rliterman@29
|
7 <version_command>nextflow -version</version_command>
|
rliterman@29
|
8 <command detect_errors="aggressive"><![CDATA[
|
rliterman@51
|
9 mkdir ./queries ./references;
|
rliterman@29
|
10
|
rliterman@59
|
11 #set query_fasta_input=""
|
rliterman@59
|
12 #set ref_fasta_input=""
|
rliterman@59
|
13 #set query_reads_forward=""
|
rliterman@59
|
14 #set query_reads_reverse=""
|
rliterman@59
|
15 #set ref_reads_forward=""
|
rliterman@59
|
16 #set ref_reads_reverse=""
|
rliterman@57
|
17
|
rliterman@61
|
18 export QUERY_FASTA_SELECT="$query_fasta.query_fasta_select"
|
rliterman@61
|
19 export QUERY_READS_SELECT="$query_reads.query_reads_select"
|
rliterman@61
|
20 export REF_FASTA_SELECT="$ref_fasta.ref_fasta_select"
|
rliterman@61
|
21 export REF_READS_SELECT="$ref_reads.ref_reads_select"
|
rliterman@61
|
22
|
rliterman@62
|
23 echo "Query Fasta: \$QUERY_FASTA_SELECT";
|
rliterman@62
|
24 echo "Ref Fasta: \$REF_FASTA_SELECT";
|
rliterman@62
|
25
|
rliterman@62
|
26 echo "Query Reads: \$QUERY_READS_SELECT";
|
rliterman@62
|
27 echo "Ref Reads: \$REF_READS_SELECT";
|
rliterman@62
|
28
|
rliterman@61
|
29 if [[ "\$QUERY_FASTA_SELECT" == 'collection' ]]; then
|
rliterman@58
|
30 #set query_fasta_input=$query_fasta.coll.elements
|
rliterman@61
|
31 elif [[ "\$QUERY_FASTA_SELECT" == 'history' ]]; then
|
rliterman@58
|
32 #set query_fasta_input=$query_fasta.list
|
rliterman@61
|
33 fi;
|
rliterman@58
|
34
|
rliterman@61
|
35 if [[ "\$REF_FASTA_SELECT" == 'collection' ]]; then
|
rliterman@59
|
36 #set ref_fasta_input=$ref_fasta.coll.elements
|
rliterman@61
|
37 elif [[ "\$REF_FASTA_SELECT" == 'history' ]]; then
|
rliterman@59
|
38 #set ref_fasta_input=$ref_fasta.list
|
rliterman@61
|
39 fi;
|
rliterman@59
|
40
|
rliterman@61
|
41 if [[ "\$QUERY_READS_SELECT" == 'collection' ]]; then
|
rliterman@59
|
42 #set query_reads_forward=$query_reads.coll.forward
|
rliterman@59
|
43 #set query_reads_reverse=$query_reads.coll.reverse
|
rliterman@61
|
44 elif [[ "\$QUERY_READS_SELECT" == 'history' ]]; then
|
rliterman@59
|
45 #set query_reads_forward=$query_reads.list
|
rliterman@61
|
46 fi;
|
rliterman@59
|
47
|
rliterman@61
|
48 if [[ "\$REF_READS_SELECT" == 'collection' ]]; then
|
rliterman@59
|
49 #set ref_reads_forward=$ref_reads.coll.forward
|
rliterman@59
|
50 #set ref_reads_reverse=$ref_reads.coll.reverse
|
rliterman@62
|
51 elif [[ "\$REF_READS_SELECT" == 'history' ]]; then
|
rliterman@59
|
52 #set ref_reads_forward=$ref_reads.list
|
rliterman@61
|
53 fi;
|
rliterman@59
|
54
|
rliterman@62
|
55 if [[ "\$QUERY_FASTA_SELECT" == 'none' ]]; then
|
rliterman@55
|
56 export QUERY_FASTA_ARG="";
|
rliterman@29
|
57 else
|
rliterman@58
|
58 #for query in $query_fasta_input:
|
rliterman@55
|
59 ln -sf ${query} ./queries/${query.element_identifier};
|
rliterman@55
|
60 #end for
|
rliterman@55
|
61 export QUERY_FASTA_ARG="--fasta ./queries";
|
rliterman@29
|
62 fi;
|
rliterman@29
|
63
|
rliterman@62
|
64 if [[ "\$REF_FASTA_SELECT" == "none" ]]; then
|
rliterman@55
|
65 export REF_FASTA_ARG="";
|
rliterman@58
|
66 else
|
rliterman@58
|
67 #for ref in $ref_fasta_input:
|
rliterman@55
|
68 ln -sf ${ref} ./references/${ref.element_identifier};
|
rliterman@55
|
69 #end for
|
rliterman@58
|
70 export REF_FASTA_ARG="--fasta ./references";
|
rliterman@29
|
71 fi;
|
rliterman@29
|
72
|
rliterman@62
|
73 if [[ "\$QUERY_READS_SELECT" == "none" ]]; then
|
rliterman@55
|
74 export QUERY_READS_ARG="";
|
rliterman@29
|
75 else
|
rliterman@58
|
76 #for query in $query_reads_forward $query_reads_reverse:
|
rliterman@55
|
77 ln -sf ${query} ./queries/${query.element_identifier};
|
rliterman@55
|
78 #end for
|
rliterman@55
|
79 export QUERY_READS_ARG="--reads ./queries";
|
rliterman@29
|
80 fi;
|
rliterman@29
|
81
|
rliterman@62
|
82 if [[ "\$REF_READS_SELECT" == "none" ]]; then
|
rliterman@58
|
83 export QUERY_READS_ARG="";
|
rliterman@58
|
84 else
|
rliterman@58
|
85 #for ref in $ref_reads_forward $ref_reads_reverse:
|
rliterman@55
|
86 ln -sf ${ref} ./references/${ref.element_identifier};
|
rliterman@55
|
87 #end for
|
rliterman@58
|
88 export QUERY_READS_ARG="--reads ./queries";
|
rliterman@29
|
89 fi;
|
rliterman@29
|
90
|
rliterman@59
|
91 if [ -n "$trim_name" ] && [ "$trim_name" != "None" ]; then
|
rliterman@29
|
92 export TRIM_ARG="--trim_name $trim_name";
|
rliterman@29
|
93 else
|
rliterman@29
|
94 export TRIM_ARG="";
|
rliterman@29
|
95 fi;
|
rliterman@29
|
96
|
rliterman@29
|
97 if [[ "$rescue" == "true" ]]; then
|
rliterman@29
|
98 export RESCUE_ARG="--rescue";
|
rliterman@29
|
99 else
|
rliterman@29
|
100 export RESCUE_ARG="";
|
rliterman@29
|
101 fi;
|
rliterman@29
|
102
|
rliterman@52
|
103 nextflow run ${__tool_directory__}/CSP2/CSP2.nf -profile csp2_galaxy --runmode snp \$QUERY_FASTA_ARG \$REF_FASTA_ARG \$QUERY_READS_ARG \$REF_READS_ARG \$TRIM_ARG \$RESCUE_ARG --readext $readext --forward $forward --reverse $reverse --ref_readext $readext --ref_forward $forward --ref_reverse $reverse --min_cov $min_cov --min_iden $min_iden --min_len $min_len --ref_edge $ref_edge --query_edge $query_edge --dwin $dwin --wsnps $wsnps --max_missing $max_missing --n_ref $n_ref --out ./CSP2_SNP_Output > Nextflow_Log.txt 2>&1 &&
|
rliterman@51
|
104 mkdir CSP2_Output &&
|
rliterman@51
|
105 cat CSP2_SNP_Output/logs/Reference_IDs.txt | while read line; do cp 'CSP2_SNP_Output/SNP_Analysis/'\$line'/CSP2_SNP_Pipeline.log' 'CSP2_Output/'\$line'_CSP2_SNP_Pipeline.log'; cp 'CSP2_SNP_Output/SNP_Analysis/'\$line'/Reference_Screening.tsv' 'CSP2_Output/'\$line'_Reference_Screening.tsv'; cp 'CSP2_SNP_Output/SNP_Analysis/'\$line'/snp_distance_matrix_preserved.tsv' 'CSP2_Output/'\$line'_snp_distance_matrix_preserved.tsv'; cp 'CSP2_SNP_Output/SNP_Analysis/'\$line'/snp_distance_pairwise_preserved.tsv' 'CSP2_Output/'\$line'_snp_distance_pairwise_preserved.tsv'; cp 'CSP2_SNP_Output/SNP_Analysis/'\$line'/snpma_preserved.fasta' 'CSP2_Output/'\$line'_snpma_preserved.fasta';done &&
|
rliterman@51
|
106 ls -la CSP2_Output;
|
rliterman@33
|
107
|
rliterman@34
|
108 ]]>
|
rliterman@29
|
109 </command>
|
rliterman@29
|
110 <inputs>
|
rliterman@55
|
111 <conditional name="query_fasta">
|
rliterman@55
|
112 <param name="query_fasta_select" type="select" label="Get query assemblies from a collection or your history">
|
rliterman@55
|
113 <option value="none" selected="true">Do not provide query assemblies</option>
|
rliterman@55
|
114 <option value="collection">Query assemblies from a collection_type</option>
|
rliterman@55
|
115 <option value="history">Query assemblies from your history</option>
|
rliterman@55
|
116 </param>
|
rliterman@55
|
117 <when value="none">
|
rliterman@55
|
118 </when>
|
rliterman@55
|
119 <when value="collection">
|
rliterman@55
|
120 <param label="Query Assembly Collection" name="coll" type="data_collection" format="fasta" collection_type="list" />
|
rliterman@55
|
121 </when>
|
rliterman@55
|
122 <when value="history">
|
rliterman@55
|
123 <param label="Query Assembly List" type="data" name="list" format="fasta" multiple="true" />
|
rliterman@55
|
124 </when>
|
rliterman@55
|
125 </conditional>
|
rliterman@55
|
126
|
rliterman@55
|
127 <conditional name="ref_fasta">
|
rliterman@55
|
128 <param name="ref_fasta_select" type="select" label="Get reference assemblies from a collection or your history">
|
rliterman@55
|
129 <option value="none" selected="true">Do not provide reference assemblies</option>
|
rliterman@55
|
130 <option value="collection">Reference assemblies from a collection_type</option>
|
rliterman@55
|
131 <option value="history">Reference assemblies from your history</option>
|
rliterman@55
|
132 </param>
|
rliterman@55
|
133 <when value="none">
|
rliterman@55
|
134 </when>
|
rliterman@55
|
135 <when value="collection">
|
rliterman@55
|
136 <param label="Reference Assembly Collection" name="coll" type="data_collection" format="fasta" collection_type="list" />
|
rliterman@55
|
137 </when>
|
rliterman@55
|
138 <when value="history">
|
rliterman@55
|
139 <param label="Reference Assembly List" type="data" name="list" format="fasta" multiple="true" />
|
rliterman@55
|
140 </when>
|
rliterman@55
|
141 </conditional>
|
rliterman@55
|
142 <conditional name="query_reads">
|
rliterman@55
|
143 <param name="query_reads_select" type="select" label="Get query reads from a paired-end collection or your history">
|
rliterman@55
|
144 <option value="none" selected="true">Do not provide query reads</option>
|
rliterman@55
|
145 <option value="collection">Query reads from a collection_type</option>
|
rliterman@55
|
146 <option value="history">Query reads from your history</option>
|
rliterman@55
|
147 </param>
|
rliterman@55
|
148 <when value="none">
|
rliterman@55
|
149 </when>
|
rliterman@55
|
150 <when value="collection">
|
rliterman@55
|
151 <param label="Query Reads Collection" name="coll" type="data_collection" format="fastq,fastqsanger,fastq.gz,fastqsanger.gz,fastq.bz2,fastqsanger.bz2" collection_type="paired" />
|
rliterman@55
|
152 </when>
|
rliterman@55
|
153 <when value="history">
|
rliterman@55
|
154 <param label="Query Reads List" type="data" name="list" format="fastq,fastqsanger,fastq.gz,fastqsanger.gz,fastq.bz2,fastqsanger.bz2" multiple="true" />
|
rliterman@55
|
155 </when>
|
rliterman@55
|
156 </conditional>
|
rliterman@55
|
157
|
rliterman@55
|
158 <conditional name="ref_reads">
|
rliterman@55
|
159 <param name="ref_reads_select" type="select" label="Get reference reads from a paired-end collection or your history">
|
rliterman@55
|
160 <option value="none" selected="true">Do not provide reference reads</option>
|
rliterman@55
|
161 <option value="collection">Refrence reads from a collection_type</option>
|
rliterman@55
|
162 <option value="history">Refrence reads from your history</option>
|
rliterman@55
|
163 </param>
|
rliterman@55
|
164 <when value="none">
|
rliterman@55
|
165 </when>
|
rliterman@55
|
166 <when value="collection">
|
rliterman@55
|
167 <param label="Refrence Reads Collection" name="coll" type="data_collection" format="fastq,fastqsanger,fastq.gz,fastqsanger.gz,fastq.bz2,fastqsanger.bz2" collection_type="paired" />
|
rliterman@55
|
168 </when>
|
rliterman@55
|
169 <when value="history">
|
rliterman@55
|
170 <param label="Refrence Reads List" type="data" name="list" format="fastq,fastqsanger,fastq.gz,fastqsanger.gz,fastq.bz2,fastqsanger.bz2" multiple="true" />
|
rliterman@55
|
171 </when>
|
rliterman@55
|
172 </conditional>
|
rliterman@55
|
173
|
rliterman@29
|
174 <param name="min_cov" type="float" value="85" label="Minimum reference genome coverage to proceed with distance estimation" optional="true" />
|
rliterman@29
|
175 <param name="min_iden" type="float" value="99" label="Minimum alignment percent identity to detect SNPs" optional="true" />
|
rliterman@29
|
176 <param name="min_len" type="integer" value="500" label="Minimum alignment length to detect SNPs" optional="true" />
|
rliterman@29
|
177 <param name="ref_edge" type="integer" value="150" label="Prune SNPs within this many bases of reference contig edge" optional="true" />
|
rliterman@29
|
178 <param name="query_edge" type="integer" value="150" label="Prune SNPs within this many bases of query contig edge" optional="true" />
|
rliterman@29
|
179 <param name="dwin" type="text" value="1000,125,15" label="Comma-separated set of window sizes for SNP density filtration (Set to 0 to disable density filtration)" optional="true" />
|
rliterman@29
|
180 <param name="wsnps" type="text" value="3,2,1" label="Comma-separated list of maximum SNP counts per density window" optional="true" />
|
rliterman@29
|
181 <param name="readext" type="text" value="fastq.gz" label="Read extension format (e.g., fastq.gz)" optional="true" />
|
rliterman@29
|
182 <param name="forward" type="text" value="_1.fastq.gz" label="Forward read suffix (e.g. _1.fastq.gz)" optional="true" />
|
rliterman@29
|
183 <param name="reverse" type="text" value="_2.fastq.gz" label="Forward read suffix (e.g. _2.fastq.gz)" optional="true" />
|
rliterman@59
|
184 <param name="trim_name" type="text" value="" label="Text to remove from all file names (e.g., _contigs_skesa)" optional="true" />
|
rliterman@29
|
185 <param name="rescue" type="boolean" value="false" label="Enable SNP edge rescue mode" optional="true" />
|
rliterman@29
|
186 <param name="max_missing" type="float" value="50" label="Maximum percent of isolates allowed to have missing data to retain a SNP" optional="true" />
|
rliterman@52
|
187 <param name="n_ref" type="integer" value="1" label="Number of reference genomes to select" optional="true" />
|
rliterman@52
|
188
|
rliterman@29
|
189 </inputs>
|
rliterman@29
|
190 <outputs>
|
rliterman@34
|
191 <data name="isolate_data" format="tabular" label="Isolate Data" from_work_dir="CSP2_SNP_Output/Isolate_Data.tsv" />
|
rliterman@29
|
192 <data name="raw_mummer" format="tabular" label="Raw MUMmer Output" from_work_dir="CSP2_SNP_Output/Raw_MUMmer_Summary.tsv" />
|
rliterman@51
|
193
|
rliterman@51
|
194 <collection name="csp2_logs" type='list' label="CSP2 Log">
|
rliterman@51
|
195 <discover_datasets pattern="(?P<designation>.+)_CSP2_SNP_Pipeline\.log" directory="CSP2_Output" format='txt'/>
|
rliterman@51
|
196 </collection>
|
rliterman@51
|
197 <collection name="csp2_alignments" type='list' label="CSP2 Alignment">
|
rliterman@51
|
198 <discover_datasets pattern="(?P<designation>.+)_snpma_preserved\.fasta" directory="CSP2_Output" format='fasta'/>
|
rliterman@51
|
199 </collection>
|
rliterman@51
|
200 <collection name="csp2_matrices" type='list' label="CSP2 Matrices">
|
rliterman@51
|
201 <discover_datasets pattern="(?P<designation>.+)_snp_distance_matrix_preserved\.tsv" directory="CSP2_Output" format='tabular'/>
|
rliterman@51
|
202 </collection>
|
rliterman@51
|
203 <collection name="csp2_pairwise" type='list' label="CSP2 Pairwise Distances">
|
rliterman@51
|
204 <discover_datasets pattern="(?P<designation>.+)_snp_distance_pairwise_preserved\.tsv" directory="CSP2_Output" format='tabular'/>
|
rliterman@51
|
205 </collection>
|
rliterman@51
|
206 <collection name="csp2_ref_screening" type='list' label="CSP2 Reference Screening">
|
rliterman@51
|
207 <discover_datasets pattern="(?P<designation>.+)_Reference_Screening\.tsv" directory="CSP2_Output" format='tabular'/>
|
rliterman@37
|
208 </collection>
|
rliterman@29
|
209 </outputs>
|
rliterman@29
|
210 <tests>
|
rliterman@29
|
211 <test>
|
rliterman@29
|
212 <param name="query_fasta">
|
rliterman@29
|
213 <collection type="list">
|
rliterman@29
|
214 <element name="Sample_A" value="assemblies/Sample_A.fasta" />
|
rliterman@29
|
215 <element name="Sample_B" value="assemblies/Sample_B.fasta" />
|
rliterman@29
|
216 <element name="Sample_C" value="assemblies/Sample_C.fasta" />
|
rliterman@29
|
217 <element name="Sample_D" value="assemblies/Sample_D.fasta" />
|
rliterman@29
|
218 <element name="Sample_E" value="assemblies/Sample_E.fasta" />
|
rliterman@29
|
219 <element name="Sample_F" value="assemblies/Sample_F.fasta" />
|
rliterman@29
|
220 <element name="Sample_G" value="assemblies/Sample_G.fasta" />
|
rliterman@29
|
221 <element name="Sample_H" value="assemblies/Sample_H.fasta" />
|
rliterman@29
|
222 <element name="Sample_I" value="assemblies/Sample_I.fasta" />
|
rliterman@29
|
223 <element name="Sample_J" value="assemblies/Sample_J.fasta" />
|
rliterman@29
|
224 <element name="Sample_K" value="assemblies/Sample_K.fasta" />
|
rliterman@29
|
225 <element name="Sample_L" value="assemblies/Sample_L.fasta" />
|
rliterman@29
|
226 <element name="Sample_M" value="assemblies/Sample_M.fasta" />
|
rliterman@29
|
227 <element name="Sample_N" value="assemblies/Sample_N.fasta" />
|
rliterman@29
|
228 <element name="Sample_O" value="assemblies/Sample_O.fasta" />
|
rliterman@29
|
229 </collection>
|
rliterman@29
|
230 </param>
|
rliterman@29
|
231 <param name="query_reads">
|
rliterman@29
|
232 <collection type="list">
|
rliterman@29
|
233 <element name="Forward" value="reads/Week_42_Reads_1.fq.gz" />
|
rliterman@29
|
234 <element name="Reverse" value="reads/Week_42_Reads_2.fq.gz" />
|
rliterman@29
|
235 </collection>
|
rliterman@29
|
236 </param>
|
rliterman@29
|
237
|
rliterman@29
|
238 <param name="ref_id" value="Sample_A,Sample_B" />
|
rliterman@29
|
239 <param name="readext" value="fq.gz" />
|
rliterman@29
|
240 <param name="forward" value="_1.fq.gz" />
|
rliterman@29
|
241 <param name="reverse" value="_2.fq.gz" />
|
rliterman@29
|
242
|
rliterman@29
|
243 <output name="isolate_data" value="Isolate_Data.tsv" />
|
rliterman@29
|
244 </test>
|
rliterman@29
|
245 </tests>
|
rliterman@29
|
246 <help>
|
rliterman@29
|
247 This tool takes query assemblies and reference assemblies and calculates the pairwise distance between each query/reference combination. If no reference is provided, all queries are compared to all other queries.
|
rliterman@29
|
248 </help>
|
rliterman@29
|
249 <citations>
|
rliterman@29
|
250 <citation type="doi">10.XXXX/placeholder.doi</citation>
|
rliterman@29
|
251 <citation type="bibtex">@article{example2024,title={CFSAN SNP Pipeline 2 (CSP2): a pipeline for fast and accurate SNP distance estimation from bacterial genome assemblies.},author={Doe, John and Smith, Jane},journal={Submitted},year={2024}}
|
rliterman@29
|
252 </citation>
|
rliterman@29
|
253 </citations>
|
rliterman@29
|
254 </tool>
|
rliterman@29
|
255
|