comparison preprocessing.xml @ 0:c84663d92248 draft default tip

planemo upload for repository https://github.com/goeckslab/tools-st/tree/main/tools/spatialge commit 482b2e0e6ca7aaa789ba07b8cd689da9a01532ef
author goeckslab
date Wed, 13 Aug 2025 19:32:05 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:c84663d92248
1 <tool id="cleaning_spatialGE" name="spatialGE Preprocessing" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="22.01">
2 <description>Initial data preparation for downstream spatial transcriptomic analyses</description>
3 <macros>
4 <import>macros.xml</import>
5 </macros>
6
7 <expand macro="spatialge_requirements"/>
8
9 <command detect_errors="aggressive"><![CDATA[
10
11 ##---------------------------------------------------------
12 ## VISIUM INPUT HANDLING
13 ##---------------------------------------------------------
14
15 mkdir counts_dir &&
16
17 #if str($platform) == 'visium':
18
19 ## symlinking metadata file
20 #if $visium_metadata
21 ln -s '$visium_metadata' '${visium_metadata.name}' &&
22 #end if
23
24 ## looping over each visium sample provided
25 #for $v in $visium_samples:
26
27 ## create counts_dir with specific visium sample name
28 #set current_sample_dir = 'counts_dir/' + str($v.visium_sample_name)
29
30 ## make directory to hold spatial subdir
31 mkdir -p '$current_sample_dir/spatial' &&
32
33 ## loop over each file in the visium file collection, if ends with .h5 separate from other files
34 #for $f in $v.visium_collection:
35 #if f.name.endswith('h5')
36 ln -s '$f' '$current_sample_dir/${f.name}' &&
37 #end if
38 #end for
39
40 ## other files in visium file collection added to spatial subdir
41 #for $f in $v.visium_collection:
42 #if f.name.endswith('png') or f.name.endswith('csv') or f.name.endswith('json')
43 ln -s '$f' '$current_sample_dir/spatial/${f.name}' &&
44 #end if
45 #end for
46
47 #end for
48
49 Rscript '$__tool_directory__/spatialGE_multiple_input.R'
50
51 ## counts will now maintain .h5 and spatial subdir structure
52 --counts counts_dir
53
54 --meta '${visium_metadata.name}'
55
56 #if str($distribution_plots.plot) == 'raw_plot':
57 --distplot
58 --plotmeta '${distribution_plots.plotmeta}'
59 #if $distribution_plots.samples
60 --samples '${distribution_plots.samples}'
61 #end if
62 #end if
63
64 #if str($spot_filtering.filter) == 'filter':
65 --filter
66 #if $spot_filtering.spot_min_reads
67 --sminreads '${spot_filtering.spot_min_reads}'
68 #end if
69 #if $spot_filtering.spot_max_reads
70 --smaxreads '${spot_filtering.spot_max_reads}'
71 #end if
72 #if $spot_filtering.spot_min_genes
73 --smingenes '${spot_filtering.spot_min_genes}'
74 #end if
75 #if $spot_filtering.spot_max_genes
76 --smaxgenes '${spot_filtering.spot_max_genes}'
77 #end if
78 #if $spot_filtering.gene_min_reads
79 --gminreads '${spot_filtering.gene_min_reads}'
80 #end if
81 #if $spot_filtering.gene_max_reads
82 --gmaxreads '${spot_filtering.gene_max_reads}'
83 #end if
84 #if $spot_filtering.gene_min_spots
85 --gminspots '${spot_filtering.gene_min_spots}'
86 #end if
87 #if $spot_filtering.gene_max_spots
88 --gmaxspots '${spot_filtering.gene_max_spots}'
89 #end if
90 #end if
91
92 #if str($filtered_distribution_plots.plot) == 'filtered_plot':
93 --filterplot
94 --plotmeta '${filtered_distribution_plots.plotmeta}'
95 #if $filtered_distribution_plots.samples
96 --samples '${filtered_distribution_plots.samples}'
97 #end if
98 #end if
99
100 --type '$transformation';
101
102 #end if
103
104 ##-------------------------------------------
105 ## SINGLE COSMX INPUT HANDLING
106 ##-------------------------------------------
107
108 #if str($platform) == 'cosmx' and str($cosmx_file_quantity) == 'single_cosmx_input':
109
110 ## symlink counts and coords files
111 ln -s '$single_cosmx_counts' '${single_cosmx_counts.name}' &&
112 ln -s '$single_cosmx_spotcoords' '${single_cosmx_spotcoords.name}' &&
113
114 Rscript '$__tool_directory__/spatialGE_single_input.R'
115
116 #if $single_cosmx_counts
117 --counts '${single_cosmx_counts.name}'
118 #end if
119
120 #if $single_cosmx_spotcoords
121 --spots '${single_cosmx_spotcoords.name}'
122 #end if
123
124 --names '$cosmx_sample_names'
125
126 #if str($distribution_plots.plot) == 'raw_plot':
127 --distplot
128 --plotmeta '${distribution_plots.plotmeta}'
129 #if $distribution_plots.samples
130 --samples '${distribution_plots.samples}'
131 #end if
132 #end if
133
134 #if str($spot_filtering.filter) == 'filter':
135 --filter
136 #if $spot_filtering.spot_min_reads
137 --sminreads '${spot_filtering.spot_min_reads}'
138 #end if
139 #if $spot_filtering.spot_max_reads
140 --smaxreads '${spot_filtering.spot_max_reads}'
141 #end if
142 #if $spot_filtering.spot_min_genes
143 --smingenes '${spot_filtering.spot_min_genes}'
144 #end if
145 #if $spot_filtering.spot_max_genes
146 --smaxgenes '${spot_filtering.spot_max_genes}'
147 #end if
148 #if $spot_filtering.gene_min_reads
149 --gminreads '${spot_filtering.gene_min_reads}'
150 #end if
151 #if $spot_filtering.gene_max_reads
152 --gmaxreads '${spot_filtering.gene_max_reads}'
153 #end if
154 #if $spot_filtering.gene_min_spots
155 --gminspots '${spot_filtering.gene_min_spots}'
156 #end if
157 #if $spot_filtering.gene_max_spots
158 --gmaxspots '${spot_filtering.gene_max_spots}'
159 #end if
160 #end if
161
162 #if str($filtered_distribution_plots.plot) == 'filtered_plot':
163 --filterplot
164 --plotmeta '${filtered_distribution_plots.plotmeta}'
165 #if $filtered_distribution_plots.samples
166 --samples '${filtered_distribution_plots.samples}'
167 #end if
168 #end if
169
170 --type '$transformation'
171
172 #end if
173
174 ##---------------------------------------------------------
175 ## MULTIPLE COSMX INPUT HANDLING
176 ##---------------------------------------------------------
177
178 #if str($platform) == 'cosmx' and str($cosmx_file_quantity) == 'multiple_cosmx_input':
179
180 mkdir coords_dir &&
181
182 ## loop over each count and coord file, and symlink
183 #if str($cosmx_file_selection.cosmx_file_quantity) == 'multiple_cosmx_input':
184 #for $cf in $multiple_cosmx_counts:
185 ln -s '$cf' counts_dir/'${cf.name}' &&
186 #end for
187 #for $sc in $multiple_cosmx_spotcoords:
188 ln -s '$sc' coords_dir/'${sc.name}' &&
189 #end for
190 #end if
191
192 Rscript '$__tool_directory__/spatialGE_multiple_input.R'
193
194 #if $cosmx_file_selection.multiple_cosmx_counts
195 --counts counts_dir/
196 #end if
197
198 #if $cosmx_file_selection.multiple_cosmx_spotcoords
199 --spots coords_dir/
200 #end if
201
202 #if $cosmx_sample_names
203 --names '${cosmx_sample_names}'
204 #end if
205
206 #if str($distribution_plots.plot) == 'raw_plot':
207 --distplot
208 --plotmeta '${distribution_plots.plotmeta}'
209 #if $distribution_plots.samples
210 --samples '${distribution_plots.samples}'
211 #end if
212 #end if
213
214 #if str($spot_filtering.filter) == 'filter':
215 --filter
216 #if $spot_filtering.spot_min_reads
217 --sminreads '${spot_filtering.spot_min_reads}'
218 #end if
219 #if $spot_filtering.spot_max_reads
220 --smaxreads '${spot_filtering.spot_max_reads}'
221 #end if
222 #if $spot_filtering.spot_min_genes
223 --smingenes '${spot_filtering.spot_min_genes}'
224 #end if
225 #if $spot_filtering.spot_max_genes
226 --smaxgenes '${spot_filtering.spot_max_genes}'
227 #end if
228 #if $spot_filtering.gene_min_reads
229 --gminreads '${spot_filtering.gene_min_reads}'
230 #end if
231 #if $spot_filtering.gene_max_reads
232 --gmaxreads '${spot_filtering.gene_max_reads}'
233 #end if
234 #if $spot_filtering.gene_min_spots
235 --gminspots '${spot_filtering.gene_min_spots}'
236 #end if
237 #if $spot_filtering.gene_max_spots
238 --gmaxspots '${spot_filtering.gene_max_spots}'
239 #end if
240 #end if
241
242 #if str($filtered_distribution_plots.plot) == 'filtered_plot':
243 --filterplot
244 --plotmeta '${filtered_distribution_plots.plotmeta}'
245 #if $filtered_distribution_plots.samples
246 --samples '${filtered_distribution_plots.samples}'
247 #end if
248 #end if
249
250 --type '$transformation'
251
252 #end if
253
254 ##---------------------------------------------------------
255 ## SINGLE RAW INPUT HANDLING
256 ##---------------------------------------------------------
257
258 #if str($platform) == 'raw_data' and str($raw_file_selection.raw_file_quantity) == 'single_raw_input':
259
260 ## symlink count, coord, and metadata files
261 ln -s '$single_raw_counts' '${single_raw_counts.name}' &&
262 ln -s '$single_raw_spotcoords' '${single_raw_spotcoords.name}' &&
263 ln -s '$raw_metadata' '${raw_metadata.name}' &&
264
265 Rscript '$__tool_directory__/spatialGE_single_input.R'
266
267 #if $single_raw_counts
268 --counts '${single_raw_counts.name}'
269 #end if
270
271 #if $single_raw_spotcoords
272 --spots '${single_raw_spotcoords.name}'
273 #end if
274
275 #if $raw_metadata
276 --meta '${raw_metadata.name}'
277 #end if
278
279 #if str($distribution_plots.plot) == 'raw_plot':
280 --distplot
281 --plotmeta '${distribution_plots.plotmeta}'
282 #if $distribution_plots.samples
283 --samples '${distribution_plots.samples}'
284 #end if
285 #end if
286
287 #if str($spot_filtering.filter) == 'filter':
288 --filter
289 #if $spot_filtering.spot_min_reads
290 --sminreads '${spot_filtering.spot_min_reads}'
291 #end if
292 #if $spot_filtering.spot_max_reads
293 --smaxreads '${spot_filtering.spot_max_reads}'
294 #end if
295 #if $spot_filtering.spot_min_genes
296 --smingenes '${spot_filtering.spot_min_genes}'
297 #end if
298 #if $spot_filtering.spot_max_genes
299 --smaxgenes '${spot_filtering.spot_max_genes}'
300 #end if
301 #if $spot_filtering.gene_min_reads
302 --gminreads '${spot_filtering.gene_min_reads}'
303 #end if
304 #if $spot_filtering.gene_max_reads
305 --gmaxreads '${spot_filtering.gene_max_reads}'
306 #end if
307 #if $spot_filtering.gene_min_spots
308 --gminspots '${spot_filtering.gene_min_spots}'
309 #end if
310 #if $spot_filtering.gene_max_spots
311 --gmaxspots '${spot_filtering.gene_max_spots}'
312 #end if
313 #end if
314
315 #if str($filtered_distribution_plots.plot) == 'filtered_plot':
316 --filterplot
317 --plotmeta '${filtered_distribution_plots.plotmeta}'
318 #if $filtered_distribution_plots.samples
319 --samples '${filtered_distribution_plots.samples}'
320 #end if
321 #end if
322
323 --type '$transformation'
324
325 #end if
326
327 ##---------------------------------------------------------
328 ## MULTIPLE RAW INPUT HANDLING
329 ##---------------------------------------------------------
330
331 #if str($platform) == 'raw_data' and str($raw_file_selection.raw_file_quantity) == 'multiple_raw_input':
332
333 mkdir coords_dir &&
334
335 ## loop over each count and coord file, and symlink
336 #if str($raw_file_selection.raw_file_quantity) == 'multiple_raw_input':
337 #for $cf in $multiple_raw_counts:
338 ln -s '$cf' counts_dir/'${cf.name}' &&
339 #end for
340 #for $sc in $multiple_raw_spotcoords:
341 ln -s '$sc' coords_dir/'${sc.name}' &&
342 #end for
343 #end if
344
345 ln -s '$raw_metadata' '${raw_metadata.name}' &&
346
347 Rscript '$__tool_directory__/spatialGE_multiple_input.R'
348
349 #if $raw_file_selection.multiple_raw_counts
350 --counts counts_dir/
351 #end if
352
353 #if $raw_file_selection.multiple_raw_spotcoords
354 --spots coords_dir/
355 #end if
356
357 #if $raw_metadata
358 --meta '${raw_metadata.name}'
359 #end if
360
361 #if str($distribution_plots.plot) == 'raw_plot':
362 --distplot
363 --plotmeta '${distribution_plots.plotmeta}'
364 #if $distribution_plots.samples
365 --samples '${distribution_plots.samples}'
366 #end if
367 #end if
368
369 #if str($spot_filtering.filter) == 'filter':
370 --filter
371 #if $spot_filtering.spot_min_reads
372 --sminreads '${spot_filtering.spot_min_reads}'
373 #end if
374 #if $spot_filtering.spot_max_reads
375 --smaxreads '${spot_filtering.spot_max_reads}'
376 #end if
377 #if $spot_filtering.spot_min_genes
378 --smingenes '${spot_filtering.spot_min_genes}'
379 #end if
380 #if $spot_filtering.spot_max_genes
381 --smaxgenes '${spot_filtering.spot_max_genes}'
382 #end if
383 #if $spot_filtering.gene_min_reads
384 --gminreads '${spot_filtering.gene_min_reads}'
385 #end if
386 #if $spot_filtering.gene_max_reads
387 --gmaxreads '${spot_filtering.gene_max_reads}'
388 #end if
389 #if $spot_filtering.gene_min_spots
390 --gminspots '${spot_filtering.gene_min_spots}'
391 #end if
392 #if $spot_filtering.gene_max_spots
393 --gmaxspots '${spot_filtering.gene_max_spots}'
394 #end if
395 #end if
396
397 #if str($filtered_distribution_plots.plot) == 'filtered_plot':
398 --filterplot
399 --plotmeta '${filtered_distribution_plots.plotmeta}'
400 #if $filtered_distribution_plots.samples
401 --samples '${filtered_distribution_plots.samples}'
402 #end if
403 #end if
404
405 --type '$transformation'
406
407 #end if
408
409 ]]></command>
410 <inputs>
411 <conditional name="platform_type">
412 <param name="platform" type="select" label="Select Input Type" >
413 <option value="visium">Visium</option>
414 <option value="cosmx">CosMX-SMI</option>
415 <option value="raw_data">Raw Counts and Coordinates</option>
416 </param>
417 <when value="visium">
418 <repeat name="visium_samples" title="Visium Sample" min="1">
419 <param name="visium_sample_name" type="text" optional="false" label="Sample Name (sample ID/name in metadata file)" />
420 <param name="visium_collection" type="data_collection" multiple="true" label="Visium Files (h5, png, json, csv)" />
421 </repeat>
422 <param name="visium_metadata" type="data" format="csv,tsv" label="Metadata" />
423 </when>
424 <when value="cosmx">
425 <conditional name="cosmx_file_selection">
426 <param name="cosmx_file_quantity" type="select" label="Choose Input Quantity" >
427 <option value="single_cosmx_input">Single Sample Input</option>
428 <option value="multiple_cosmx_input">Multiple Sample Input</option>
429 </param>
430 <when value="single_cosmx_input">
431 <param name="single_cosmx_counts" type="data" format="csv,tsv" label="Expression Matrix" />
432 <param name="single_cosmx_spotcoords" type="data" format="csv,tsv" label="Metadata File" />
433 </when>
434 <when value="multiple_cosmx_input">
435 <param name="multiple_cosmx_counts" type="data_collection" format="csv,tsv" label="Collection of Expression Matrices (one file per sample)" />
436 <param name="multiple_cosmx_spotcoords" type="data_collection" format="csv,tsv" label="Collection of Metadata Files (one file per sample)" />
437 </when>
438 </conditional>
439 <param name="cosmx_sample_names" type="text" optional="false" label="Sample Name(s)" />
440 </when>
441 <when value="raw_data">
442 <conditional name="raw_file_selection">
443 <param name="raw_file_quantity" type="select" label="Choose Input Quantity" >
444 <option value="single_raw_input">Single Sample Input</option>
445 <option value="multiple_raw_input">Multiple Sample Input</option>
446 </param>
447 <when value="single_raw_input">
448 <param name="single_raw_counts" type="data" format="csv,tsv" label="Counts" />
449 <param name="single_raw_spotcoords" type="data" format="csv,tsv" label="Spot Coordinates" />
450 </when>
451 <when value="multiple_raw_input">
452 <param name="multiple_raw_counts" type="data_collection" format="csv,tsv" label="Collection of Counts Files (one per sample)" />
453 <param name="multiple_raw_spotcoords" type="data_collection" format="csv,tsv" label="Collection of spot coord files (one per sample)" />
454 </when>
455 </conditional>
456 <param name="raw_metadata" type="data" format="csv,tsv" label="Metadata" />
457 </when>
458 </conditional>
459 <conditional name="distribution_plots">
460 <param name="plot" type="select" label="Optional: Generate Distribution Plot of Raw Data" >
461 <option value="no_plot" selected="true">Do not generate distribution plot</option>
462 <option value="raw_plot">Generate distribution plot</option>
463 </param>
464 <when value="no_plot">
465 </when>
466 <when value="raw_plot">
467 <param name="plotmeta" type="select" label="Plot counts per cell or genes per cell" >
468 <option value="total_counts">Total counts</option>
469 <option value="total_genes">Total genes</option>
470 </param>
471 <param name="samples" type="text" optional="true" label="Optional subset of samples for distribution plotting (defaults to all)" />
472 </when>
473 </conditional>
474 <conditional name="spot_filtering">
475 <param name="filter" type="select" label="Optional: Perform Quality Control with Spot Filtering">
476 <option value="no_filter" selected="true">Do not perform filtering</option>
477 <option value="filter">Filter spots/cells</option>
478 </param>
479 <when value="no_filter">
480 </when>
481 <when value="filter">
482 <param name="spot_min_reads" type="integer" min="0" optional="true" label="Minimum number of total reads for a spot to be retained" />
483 <param name="spot_max_reads" type="integer" min="0" optional="true" label="Maximum number of total reads for a spot to be retained" />
484 <param name="spot_min_genes" type="integer" min="0" optional="true" label="Minimum number of genes expressed in a spot" />
485 <param name="spot_max_genes" type="integer" min="0" optional="true" label="Maximum number of genes expressed in a spot" />
486 <param name="gene_min_reads" type="integer" min="0" optional="true" label="Minimum number of total reads for a gene to be retained" />
487 <param name="gene_max_reads" type="integer" min="0" optional="true" label="Maximum number of total reads for a gene to be retained" />
488 <param name="gene_min_spots" type="integer" min="0" optional="true" label="Minimum number of spots present in a gene" />
489 <param name="gene_max_spots" type="integer" min="0" optional="true" label="Maximum number of spots present in a gene" />
490 </when>
491 </conditional>
492 <conditional name="filtered_distribution_plots">
493 <param name="plot" type="select" label="Optional: Generate Distribution Plot of Filtered Data" >
494 <option value="no_plot" selected="true">Do not generate distribution plot</option>
495 <option value="filtered_plot">Generate distribution plot</option>
496 </param>
497 <when value="no_plot">
498 </when>
499 <when value="filtered_plot">
500 <param name="plotmeta" type="select" label="Plot counts per cell or genes per cell" >
501 <option value="total_counts">Total counts</option>
502 <option value="total_genes">Total genes</option>
503 </param>
504 <param name="samples" type="text" optional="true" label="Optional subset of samples for distribution plotting (defaults to all)" />
505 </when>
506 </conditional>
507 <param name="transformation" type="select" label="Data Transformation" >
508 <option value="log" selected="true">log</option>
509 <option value="sct">sct</option>
510 </param>
511 </inputs>
512 <outputs>
513 <collection name="raw_distribution_plot" type="list" label="Raw Data Distribution Plot">
514 <discover_datasets pattern="__name_and_ext__" directory="./unfiltered_distribution_plots" ext="png" />
515 <filter>distribution_plots['plot'] == "raw_plot"</filter>
516 </collection>
517 <collection name="filtered_dist_plot" type="list" label="Filtered Data Distribution Plot">
518 <discover_datasets pattern="__name_and_ext__" directory="./filtered_distribution_plots" ext="png" />
519 <filter>filtered_distribution_plots['plot'] == "filtered_plot"</filter>
520 </collection>
521 <data name="STlist_obj" format="rds" label="STlist.rds" from_work_dir="STobj.rds">
522 </data>
523 </outputs>
524 <tests>
525 <test expect_num_outputs="1">
526 <conditional name="platform_type">
527 <param name="platform" value="raw_data" />
528 <conditional name="raw_file_selection">
529 <param name="raw_file_quantity" value="single_raw_input" />
530 <param name="single_raw_counts" value="ST_mel3_rep1_counts.tsv" />
531 <param name="single_raw_spotcoords" value="ST_mel3_rep1_mapping.tsv" />
532 </conditional>
533 <param name="raw_metadata" ftype="csv" value="thrane_clinical.csv" />
534 </conditional>
535 <output name="STlist_obj" file="STobj_raw.rds" compare="sim_size">
536 </output>
537 </test>
538 <test expect_num_outputs="2">
539 <conditional name="platform_type">
540 <param name="platform" value="raw_data" />
541 <conditional name="raw_file_selection">
542 <param name="raw_file_quantity" value="single_raw_input" />
543 <param name="single_raw_counts" value="ST_mel3_rep1_counts.tsv" />
544 <param name="single_raw_spotcoords" value="ST_mel3_rep1_mapping.tsv" />
545 </conditional>
546 <param name="raw_metadata" ftype="csv" value="thrane_clinical.csv" />
547 </conditional>
548 <conditional name="distribution_plots">
549 <param name="plot" value="raw_plot" />
550 <param name="plotmeta" value="total_counts" />
551 </conditional>
552 <output name="STlist_obj" file="STobj_raw.rds" compare="sim_size">
553 </output>
554 <output_collection name="raw_distribution_plot">
555 <element name="unfiltered_ST_mel3_rep1_counts" file="unfiltered_ST_mel3_rep1_counts.png" compare="sim_size" />
556 </output_collection>
557 </test>
558 <test expect_num_outputs="3">
559 <conditional name="platform_type">
560 <param name="platform" value="raw_data" />
561 <conditional name="raw_file_selection">
562 <param name="raw_file_quantity" value="single_raw_input" />
563 <param name="single_raw_counts" value="ST_mel3_rep1_counts.tsv" />
564 <param name="single_raw_spotcoords" value="ST_mel3_rep1_mapping.tsv" />
565 </conditional>
566 <param name="raw_metadata" ftype="csv" value="thrane_clinical.csv" />
567 </conditional>
568 <conditional name="distribution_plots">
569 <param name="plot" value="raw_plot" />
570 <param name="plotmeta" value="total_counts" />
571 </conditional>
572 <conditional name="spot_filtering">
573 <param name="filter" value="filter" />
574 <param name="spot_min_reads" value="2000" />
575 </conditional>
576 <conditional name="filtered_distribution_plots">
577 <param name="plot" value="filtered_plot" />
578 <param name="plotmeta" value="total_counts" />
579 </conditional>
580 <output name="STlist_obj" file="STobj_filtered.rds" compare="sim_size">
581 </output>
582 <output_collection name="raw_distribution_plot">
583 <element name="unfiltered_ST_mel3_rep1_counts" file="unfiltered_ST_mel3_rep1_counts.png" compare="sim_size" />
584 </output_collection>
585 <output_collection name="filtered_dist_plot">
586 <element name="filtered_ST_mel3_rep1_counts" file="filtered_ST_mel3_rep1_counts.png" compare="sim_size" />
587 </output_collection>
588 </test>
589 </tests>
590 <help>
591 <![CDATA[
592 **What it does**
593
594 spatialGE is a tool designed for the analysis and visualization of spatially-resolved transcriptomics data.
595
596 spatialGE Preprocessing is built for data reorganization and filtering with exploratory analysis. Input data will be
597 transformed into an `STlist` object for downstream spatialGE analyses. Optional quality control can be performed by filtering spots/cells
598 and genes to specific quanitities. Distribution plots of either total counts or total genes can be produced for both raw and filtered data.
599 Data transformation will prepare the data for later analysis.
600
601 **Input**
602
603 Visium:
604
605 - Sample Name: Name of Visium sample(s) that matches a sample ID in the associated metadata file.
606
607 - Visium Files: All file outputs from `spaceranger count`, must include .h5 file and .csv file from `spatial` subdirectory, and optionally including the .png and .json files (one group of files per sample). For multiple samples, select option "Insert Visium Sample".
608
609 - Metadata: Metadata file including sample ID/names for all input samples.
610
611 CosMX-SMI:
612
613 - Expression Matrix: `exprMat` file from CosMX-SMI output. If running multiple sample input, upload collection of `exprMat` files, one file per sample.
614
615 - Metadata: `metadata` file from CosMX-SMI output. If running multiple sample input, upload collection of `metadata` files, one file per sample.
616
617 - Sample Names: Sample name associated with CosMX-SMI output. If running multiple sample input, create a comma-separated list of sample names with one unique name per sample.
618
619 Raw Data:
620
621 - Counts: Raw count data file(s). If running multiple sample input, upload collection of files, one file per sample.
622
623 - Spot Coordinates: Raw coordinate file(s). If running multiple sample input, upload collection of files, one file per sample.
624
625 - Metadata: Metadata file associated with sample(s).
626
627
628 **Run modes**
629
630 Optional: Generate Distribution Plot of Raw Data
631
632 - Display violin distribution plot of samples
633
634 - Choose between plotting either total counts per spot/cell or total genes per spot/cell
635
636 - Can manually enter specific sample names to subset plot (will automatically plot all provided samples)
637
638 Optional: Perform Quality Control with Spot Filtering
639
640 - Perform quality control by filtering spots/cells
641
642 - Optional input for all filtering parameters, can provide quanitity for one to all parameters
643
644 - Specifying minimum and maximum spots/cells and/or genes will restrict the data
645
646 Optional: Generate Distribution Plot of Filtered Data
647
648 - Display violin distribution plot of samples after filtering data
649
650 - Choose between plotting either total counts per spot/cell or total genes per spot/cell
651
652 - Can manually enter specific sample names to subset plot (will automatically plot all provided samples). If sample names were specified in `Generate Distribution Plot of Raw Data`, same samples will be subset for plotting after filtering.
653
654 **Outputs**
655
656 - STlist Object RDS: saves the STlist object as an .rds file for downstream spatialGE analyses
657
658 - Raw Data Distribution Plot: distribution violin plot of all samples provided, displaying either total counts or total genes
659
660 - Filtered Data Distribution Plot: similar to raw data distribution plot, displaying distribution after quality control filtering
661
662 ]]>
663 </help>
664 <expand macro="citations"/>
665 </tool>