Mercurial > repos > iuc > seurat_data
changeset 0:50c5abeb08ba draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/seurat_v5 commit a9214c07b0cc929a51fd92a369bb89c675b6c88d
| author | iuc |
|---|---|
| date | Wed, 11 Sep 2024 10:21:26 +0000 |
| parents | |
| children | 4ec52a83ec82 |
| files | inspect_and_manipulate.xml macros.xml |
| diffstat | 2 files changed, 1192 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/inspect_and_manipulate.xml Wed Sep 11 10:21:26 2024 +0000 @@ -0,0 +1,755 @@ +<tool id="seurat_data" name="Seurat Data Management" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> + <description>- Inspect and Manipulate </description> + <macros> + <import>macros.xml</import> + </macros> + <expand macro="requirements"/> + <expand macro="version_command"/> + <command detect_errors="exit_code"><![CDATA[ +@CMD@ + ]]></command> + <configfiles> + <configfile name="script_file"><![CDATA[ +@CMD_imports@ +@CMD_read_inputs@ + +#if $method.method == 'Inspect' + #if $method.inspect.inspect == 'General' + sink('inspect.txt') + seurat_obj + sink() + + #else if $method.inspect.inspect == 'Features' + inspect<-Features(seurat_obj[['$method.inspect.assay']]) + row.names = FALSE + col.names = FALSE + @CMD_inspect_rds_outputs@ + + #else if $method.inspect.inspect == 'Cells' + inspect<-Cells( + seurat_obj, + #if $method.layer != '' + layer = $method.layer + #end if + ) + row.names = FALSE + col.names = FALSE + @CMD_inspect_rds_outputs@ + + #else if $method.inspect.inspect == 'Idents' + inspect<-Idents(seurat_obj) + row.names = TRUE + col.names = FALSE + @CMD_inspect_rds_outputs@ + + #else if $method.inspect.inspect == 'Metadata' + #if $method.inspect.view_metadata != '' + inspect<-seurat_obj[['$method.inspect.view_metadata']] + #else + inspect<-seurat_obj[[]] + #end if + row.names = TRUE + col.names = TRUE + @CMD_inspect_rds_outputs@ + + #else if $method.inspect.inspect == 'Matrix' + inspect<-LayerData( + seurat_obj, + assay='$method.inspect.assay', + layer='$method.inspect.layer' + ) + row.names = TRUE + col.names = TRUE + @CMD_inspect_rds_outputs@ + + #end if + +#else if $method.method == 'Manipulate' + #if $method.manipulate.manipulate == 'Change_Idents' + Idents(seurat_obj)<- '$method.manipulate.change' + + #else if $method.manipulate.manipulate == 'Rename_Idents' + #if $method.manipulate.stash_idents.stash_idents == 'true' + seurat_obj[['$method.manipulate.stash_idents.old_ident']]<-Idents(seurat_obj) + #end if + #if $method.manipulate.rename.rename_all == 'true' + new_names = c(unlist(strsplit(gsub(" ", "", '$method.manipulate.rename.new_names'), ","))) + names(new_names)<-levels(seurat_obj) + seurat_obj<-RenameIdents( + seurat_obj, + new_names + ) + #else if $method.manipulate.rename.rename_all == 'false' + seurat_obj<-RenameIdents( + seurat_obj, + '$method.manipulate.rename.old_name' = '$method.manipulate.rename.new_name' + ) + #end if + + #else if $method.manipulate.manipulate == 'Add_Metadata' + meta_data<-read.table( + "$method.manipulate.metadata", + header = TRUE, + row.names = 1, + sep = "\t" + ) + seurat_obj<-AddMetaData( + seurat_obj, + metadata = meta_data, + ) + + #else if $method.manipulate.manipulate == 'Merge' + y = list() + #for $file in $method.manipulate.add_seurat + y<-append(y, readRDS('${file}')) + #end for + seurat_obj<-merge(x = seurat_obj, y) + + #if $method.manipulate.join.join == 'true' + seurat_obj[['$method.manipulate.join.assay']]<-JoinLayers( + seurat_obj[['$method.manipulate.join.assay']] + ) + #end if + + #else if $method.manipulate.manipulate == 'Subset_Ident' + seurat_obj<-subset( + seurat_obj, + idents = c(unlist(strsplit(gsub(" ", "", '$method.manipulate.idents'), ","))), + ) + + #else if $method.manipulate.manipulate == 'Subset_Group' + seurat_obj<-subset( + seurat_obj, + subset = $method.manipulate.grouping == '$method.manipulate.groups', + ) + + #else if $method.manipulate.manipulate == 'DietSeurat' + + #if $method.manipulate.features + features_list<-paste(readLines('$method.manipulate.features'), collapse=",") + #end if + + seurat_obj<-DietSeurat( + seurat_obj, + #if $method.manipulate.layers != '' + layers = c(unlist(strsplit(gsub(" ", "", '$method.manipulate.layers'), ","))), + #else if $method.manipulate.features + features = c(unlist(strsplit(features_list, ","))), + #else if $method.manipulate.assays != '' + assays = c(unlist(strsplit(gsub(" ", "", '$method.manipulate.assays'), ","))), + #else if $method.manipulate.dimreducs != '' + dimreducs = c(unlist(strsplit(gsub(" ", "", '$method.manipulate.dimreducs'), ","))), + #else if $method.manipulate.graphs != '' + graphs = c(unlist(strsplit(gsub(" ", "", '$method.manipulate.graphs'), ","))), + #else if $method.manipulate.features != '' + misc = $method.manipulate.misc + #end if + ) + + #else if $method.manipulate.manipulate == 'AggregateExpression' + + #if $method.manipulate.features + features_list<-paste(readLines('$method.manipulate.features'), collapse=",") + #end if + + seurat_obj<-AggregateExpression( + seurat_obj, + group.by = c(unlist(strsplit(gsub(" ", "", '$method.manipulate.group_by'), ","))), + #if $method.assays != '' + assays = c(unlist(strsplit(gsub(" ", "", '$method.manipulate.assays'), ","))), + #end if + #if $method.manipulate.features + features = c(unlist(strsplit(features_list, ","))), + #end if + normalization.method = '$method.manipulate.normalization_method.normalization_method', + #if $method.manipulate.normalization_method.normalization_method == 'CLR' + margin = $method.manipulate.normalization_method.margin, + #end if + scale.factor = $method.manipulate.scale_factor, + #if $method.manipulate.block_size + block.size = $method.manipulate.block_size, + #end if + return.seurat = TRUE + ) + + #else if $method.manipulate.manipulate == 'DefaultAssay' + DefaultAssay(object = seurat_obj)<-'$method.manipulate.default_assay' + + #end if + +#end if + +@CMD_rds_write_outputs@ + +]]></configfile> + </configfiles> + <inputs> + <expand macro="input_rds"/> + <conditional name="method"> + <param name="method" type="select" label="Method used"> + <option value="Inspect">Inspect Seurat Object</option> + <option value="Manipulate">Manipulate Seurat Object</option> + </param> + <when value="Inspect"> + <conditional name="inspect"> + <param name="inspect" type="select" label="Display information about"> + <option value="General">General</option> + <option value="Features">Features</option> + <option value="Cells">Cells</option> + <option value="Idents">Cell Identities</option> + <option value="Metadata">Cell Metadata</option> + <option value="Matrix">Matrix</option> + </param> + <when value="General"> + </when> + <when value="Features"> + <param name="assay" type="text" value="RNA" label="Assay to display features for"> + <expand macro="valid_name"/> + </param> + </when> + <when value="Cells"> + <expand macro="select_layer"/> + </when> + <when value="Idents"> + </when> + <when value="Metadata"> + <param name="view_metadata" type="text" optional="true" value="" label="Metadata to view" help="leave blank to view all metadata"/> + </when> + <when value="Matrix"> + <param name="assay" type="text" value="RNA" label="Assay to display matrix for"> + <expand macro="valid_name"/> + </param> + <param name="layer" type="text" value="data" label="Layer to display matrix for"> + <expand macro="valid_name"/> + </param> + </when> + </conditional> + </when> + <when value="Manipulate"> + <conditional name="manipulate"> + <param name="manipulate" type="select" label="Manipulation to perform"> + <option value="Change_Idents">Change annotation used as idents</option> + <option value="Rename_Idents">Rename idents</option> + <option value="Add_Metadata">Add metadata</option> + <option value="Merge">Merge Seurat Objects</option> + <option value="Subset_Ident">Subset by Ident</option> + <option value="Subset_Group">Subset by Group</option> + <option value="DietSeurat">Choose elements to keep with 'DietSeurat'</option> + <option value="AggregateExpression">Pseudobulk cells with 'AggregateExpression'</option> + <option value="DefaultAssay">Set default assay</option> + </param> + <when value="Change_Idents"> + <param name="change" type="text" value="" label="New annotation to use as ident"/> + </when> + <when value="Rename_Idents"> + <conditional name="rename"> + <param name="rename_all" type="select" label="Rename all idents"> + <option value="true" selected="true">Yes</option> + <option value="false">No - just rename one ident</option> + </param> + <when value="true"> + <param name="new_names" type="text" value="" label="New names" help="comma-separated list, must be same as number of idents"> + <expand macro="valid_list"/> + </param> + </when> + <when value="false"> + <param name="old_name" type="text" value="" label="Name of ident to change"/> + <param name="new_name" type="text" value="" label="New name for ident"> + <expand macro="valid_name"/> + </param> + </when> + </conditional> + <conditional name="stash_idents"> + <param name="stash_idents" type="select" label="Save copy of old idents first"> + <option value="false" selected="true">No</option> + <option value="true">Yes</option> + </param> + <when value="false"> + </when> + <when value="true"> + <param name="old_ident" type="text" value="old.ident" label="Name to store old idents under"/> + </when> + </conditional> + </when> + <when value="Add_Metadata"> + <param name="metadata" type="data" format="tabular,tsv" label="Cell metadata to add" help="table with cell names in first column"/> + </when> + <when value="Merge"> + <param name="add_seurat" type="data" format="rds" multiple="true" label="Seurat object to merge"/> + <conditional name="join"> + <param name="join" type="select" label="Join layers after merging"> + <option value="false" selected="true">No</option> + <option value="true">Yes</option> + </param> + <when value="false"> + </when> + <when value="true"> + <param argument="assay" type="text" value="RNA" label="Name of assay to join"> + <expand macro="valid_name"/> + </param> + </when> + </conditional> + </when> + <when value="Subset_Ident"> + <param name="idents" type="text" value="" label="Idents to keep" help="comma-separated list of clusters or idents"> + <expand macro="valid_list"/> + </param> + </when> + <when value="Subset_Group"> + <param name="grouping" type="text" value="" label="Grouping to use to select cells" help="from the object metadata e.g. batch, donor"/> + <param name="groups" type="text" value="" label="Group to keep" help="enter a single category from the grouping"/> + </when> + <when value="DietSeurat"> + <param argument="layers" type="text" value="counts" label="Layers to keep" help="comma-separated list"> + <expand macro="valid_list"/> + </param> + <param argument="assays" type="text" value="RNA" label="Assays to keep" help="comma-separated list"> + <expand macro="valid_list"/> + </param> + <param argument="features" type="data" format="txt,tabular" optional="true" label="List of features to keep" help="text file with one feature on each line, leave blank to keep all"/> + <param argument="dimreducs" type="text" optional="true" value="" label="Dimensional Reductions to keep" help="comma-separated list, leave blank to remove all"> + <expand macro="valid_list"/> + </param> + <param argument="graphs" type="text" optional="true" value="" label="Graphs to keep" help="comma-separated list, leave blank to remove all"> + <expand macro="valid_list"/> + </param> + <param argument="misc" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="true" label="Keep misc slot"/> + </when> + <when value="AggregateExpression"> + <param name="group_by" type="text" value="ident" label="Aggregate expression for these categories" help="comma-separated list of group/condition names (group.by)"/> + <param argument="assays" type="text" optional="true" value="" label="Assays to use" help="comma-separated list, leave blank to use all assays"> + <expand macro="valid_list"/> + </param> + <param argument="features" type="data" format="txt,tabular" optional="true" label="Features to use" help="text file with one feature on each line, leave blank to use all features"/> + <expand macro="normalize"/> + </when> + <when value="DefaultAssay"> + <param name="default_assay" type="text" value="RNA" label="Assay to use as default"> + <expand macro="valid_name"/> + </param> + </when> + </conditional> + </when> + </conditional> + <expand macro="inputs_common_advanced"/> + </inputs> + <outputs> + <expand macro="seurat_outputs"/> + <expand macro="inspect_out"/> + </outputs> + <tests> + <test expect_num_outputs="2"> + <!-- test1: Inspect General--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/integrated_umap.rds"/> + <conditional name="method"> + <param name="method" value="Inspect"/> + <conditional name="inspect"> + <param name="inspect" value="General"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="seurat_obj"/> + </assert_contents> + </output> + <output name="inspect_general" location="https://zenodo.org/records/13732784/files/inspect.txt" ftype="txt"> + <assert_contents> + <has_text_matching expression="An object of class Seurat"/> + </assert_contents> + </output> + </test> + <test expect_num_outputs="2"> + <!-- test2: Inspect Cells--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/rawdata.rds"/> + <conditional name="method"> + <param name="method" value="Inspect"/> + <conditional name="inspect"> + <param name="inspect" value="Cells"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="Cells"/> + </assert_contents> + </output> + <output name="inspect_tabular" location="https://zenodo.org/records/13732784/files/inspect_cells.tabular" ftype="tabular"> + <assert_contents> + <has_n_columns n="1"/> + </assert_contents> + </output> + </test> + <test expect_num_outputs="2"> + <!-- test3: Inspect Features--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/citeseq.rds"/> + <conditional name="method"> + <param name="method" value="Inspect"/> + <conditional name="inspect"> + <param name="inspect" value="Features"/> + <param name="assay" value="ADT"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="Features"/> + </assert_contents> + </output> + <output name="inspect_tabular" location="https://zenodo.org/records/13732784/files/inspect_features.tabular" ftype="tabular"> + <assert_contents> + <has_n_columns n="1"/> + </assert_contents> + </output> + </test> + <test expect_num_outputs="2"> + <!-- test4: Inspect Metadata--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/added_metadata.rds"/> + <conditional name="method"> + <param name="method" value="Inspect"/> + <conditional name="inspect"> + <param name="inspect" value="Metadata"/> + <param name="view_metadata" value="Group"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="seurat_obj"/> + </assert_contents> + </output> + <output name="inspect_tabular" location="https://zenodo.org/records/13732784/files/inspect_metadata_group.tabular" ftype="tabular"> + <assert_contents> + <has_n_columns n="1"/> + </assert_contents> + </output> + </test> + <test expect_num_outputs="2"> + <!-- test5: Inspect Idents--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/renamed_clusters.rds"/> + <conditional name="method"> + <param name="method" value="Inspect"/> + <conditional name="inspect"> + <param name="inspect" value="Idents"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="Idents"/> + </assert_contents> + </output> + <output name="inspect_tabular" location="https://zenodo.org/records/13732784/files/inspect_idents.tabular" ftype="tabular"> + <assert_contents> + <has_n_columns n="2"/> + </assert_contents> + </output> + </test> + <test expect_num_outputs="2"> + <!-- test6: Inspect Matrix--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/clusters.rds"/> + <conditional name="method"> + <param name="method" value="Inspect"/> + <conditional name="inspect"> + <param name="inspect" value="Matrix"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="seurat_obj"/> + </assert_contents> + </output> + <output name="inspect_tabular" location="https://zenodo.org/records/13732784/files/inspect_matrix.tabular" ftype="tabular"> + <assert_contents> + <has_n_columns n="249"/> + </assert_contents> + </output> + </test> + <test expect_num_outputs="2"> + <!-- test7: Change Idents--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/clusters.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="Change_Idents"/> + <param name="change" value="orig.idents"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="Idents"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13732784/files/changed_idents.rds" ftype="rds"/> + </test> + <test expect_num_outputs="2"> + <!-- test8: Rename Idents--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/clusters.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="Rename_Idents"/> + <conditional name="rename"> + <param name="rename_all" value="true"/> + <param name="new_names" value="Cell A, Cell B, Cell C, Cell D"/> + </conditional> + <conditional name="stash_idents"> + <param name="stash_idents" value="true"/> + <param name="old_ident" value="renamed"/> + </conditional> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="Idents"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13732784/files/renamed_clusters.rds" ftype="rds"/> + </test> + <test expect_num_outputs="2"> + <!-- test9: Add Metadata--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/rawdata.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="Add_Metadata"/> + <param name="metadata" location="https://zenodo.org/records/13732784/files/metadata.tsv"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="AddMetaData"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13732784/files/added_metadata.rds" ftype="rds"/> + </test> + <test expect_num_outputs="2"> + <!-- test10: Merge--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/subset_Group_A.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="Merge"/> + <param name="add_seurat" location="https://zenodo.org/records/13732784/files/subset_B16.rds,https://zenodo.org/records/13732784/files/subset_B8.rds"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="merge"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13736785/files/merged.rds" ftype="rds"/> + </test> + <test expect_num_outputs="2"> + <!-- test11: Subset Ident--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/clusters.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="Subset_Ident"/> + <param name="idents" value="2, 3"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="subset"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13732784/files/subset_cluster.rds" ftype="rds"/> + </test> + <test expect_num_outputs="2"> + <!-- test12: Subset Group--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/added_metadata.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="Subset_Group"/> + <param name="grouping" value="Group"/> + <param name="groups" value="Group_A"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="subset"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13732784/files/subset_Group_A.rds" ftype="rds"/> + </test> + <test expect_num_outputs="2"> + <!-- test13: DietSeurat--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/integrated_umap.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="DietSeurat"/> + <param name="assays" value="ADT"/> + <param name="dimreducs" value="pca, umap"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="DietSeurat"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13732784/files/diet_seurat.rds" ftype="rds"/> + </test> + <test expect_num_outputs="2"> + <!-- test14: AggregateExpression--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/integrated_umap.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="AggregateExpression"/> + <param name="group_by" value="Group"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="AggregateExpression"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13732784/files/aggregated.rds" ftype="rds" compare="sim_size"/> + </test> + <test expect_num_outputs="2"> + <!-- test15: Default Assay--> + <param name="seurat_rds" location="https://zenodo.org/records/13732784/files/citeseq.rds"/> + <conditional name="method"> + <param name="method" value="Manipulate"/> + <conditional name="manipulate"> + <param name="manipulate" value="DefaultAssay"/> + <param name="default_assay" value="ADT"/> + </conditional> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="DefaultAssay"/> + </assert_contents> + </output> + <output name="rds_out" location="https://zenodo.org/records/13732784/files/default.rds" ftype="rds"/> + </test> + </tests> + <help><![CDATA[ +Seurat +====== + +Seurat is an R package designed for QC, analysis, and exploration of single-cell RNA-seq data. + +Seurat aims to enable users to identify and interpret sources of heterogeneity from single-cell transcriptomic measurements, and to integrate diverse types of single-cell data. + +Inspect and Manipulate +====================== + +A selection of essential functions to display information about a Seurat Object or make basic changes to the object. + +More details on these essential commands can be found in the `seurat documentation +<https://satijalab.org/seurat/articles/essential_commands>`__ + +Inspect +======= + +General - basic information about the Seurat Object +Features - list of features, select which assay to display features from if object contains multimodal data +Cells - list of cell barcodes/ids, select layer to display cells for if object contains multiple layers +Idents - list showing Ident for each cell +Metadata - table of cell metadata +Matrix - show the full matrix + +Manipulate +========== + +Functions to add, change, or remove selected elements of a Seurat Object. + +Change Idents +============= + +Change which annotation in your cell metadata is used as the Ident column. + +Rename Idents +============= + +Rename the classes in the Ident column (e.g. to replace cluster numbers with cell types). + +You have the option to stash the original idents in a new column called 'old.ident' before renaming the classes in the Ident column. + +AddMetaData +=========== + +Merge +===== + +Combine two Seurat Objects into a single Seurat Object. +Each object will be placed in a separate layer, but you can choose to run the JoinLayers function after merging to combine the objects into a single layer. + +Subset +====== + +Subset a group of cells based on their ident or another grouping in your cell metadata. + +DietSeurat +========== + +Keep only certain aspects of the Seurat object. +Can be useful in functions that utilize merge as it reduces the amount of data in the merge + +More details on these essential commands can be found in the `seurat documentation +<https://satijalab.org/seurat/reference/dietseurat>`__ + +AggregateExpression +=================== + +Returns summed counts ("pseudobulk") for each identity class. + +More details on the `seurat documentation +<https://satijalab.org/seurat/reference/aggregateexpression>`__ + + +DefaultAssay +============ + +Set the default assay for multimodal data. + +You can use the Inspect - General function to check which assay is currently active and which other assays are available. + + ]]></help> + <expand macro="citations"/> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macros.xml Wed Sep 11 10:21:26 2024 +0000 @@ -0,0 +1,437 @@ +<macros> + <token name="@TOOL_VERSION@">5.0</token> + <token name="@VERSION_SUFFIX@">0</token> + <token name="@PROFILE@">23.0</token> + <xml name="requirements"> + <requirements> + <requirement type="package" version="@TOOL_VERSION@">r-seurat</requirement> + <requirement type="package" version="1.2.1">fit-sne</requirement> + <requirement type="package" version="3.58.1">bioconductor-limma</requirement> + <requirement type="package" version="1.28.0">bioconductor-mast</requirement> + <requirement type="package" version="1.42.0">bioconductor-deseq2</requirement> + <requirement type="package" version="2.1.3">r-svglite</requirement> + <requirement type="package" version="1.1">r-metap</requirement> + <requirement type="package" version="1.14.0">bioconductor-glmGamPoi</requirement> + <requirement type="package" version="0.5.3">umap-learn</requirement> <!-- https://github.com/satijalab/seurat/issues/8283 --> + <requirement type="package" version="0.10.2">leidenalg</requirement> + <requirement type="package" version="1.2.0">r-harmony</requirement> + <requirement type="package" version="1.18.0">bioconductor-batchelor</requirement> + <requirement type="package" version="2.0.0">numpy</requirement> + <requirement type="package" version="2.2.2">pandas</requirement> + </requirements> + </xml> + <xml name="citations"> + <citations> + <citation type="doi">10.1038/s41587-023-01767-y</citation> + </citations> + </xml> + <xml name="sanitize_query" token_validinitial="string.printable"> + <sanitizer> + <valid initial="@VALIDINITIAL@"> + <remove value="'" /> + </valid> + </sanitizer> + </xml> + <xml name="sanitize_vectors" token_validinitial="string.digits"> + <sanitizer> + <valid initial="@VALIDINITIAL@"> + <add value=","/> + </valid> + </sanitizer> + </xml> + <xml name="version_command"> + <version_command><![CDATA[ +echo $(R --version | grep version | grep -v GNU)", Seurat version" $(R --vanilla --slave -e "library(Seurat); cat(sessionInfo()\$otherPkgs\$DESeq2\$Version)" 2> /dev/null | grep -v -i "WARNING: ") + ]]></version_command> + </xml> + + <token name="@CMD_imports@"><![CDATA[ +library(Seurat) + ]]> + </token> + <token name="@reticulate_hack@"><![CDATA[ +library(reticulate) +## HACK: CI biocontainers do not contain a useable conda binary, just the env. +## see: https://github.com/galaxyproject/tools-iuc/issues/5585#issuecomment-1803773923 +is_biocontainer = grepl("^# cmd: /opt/conda/bin/", + paste0(reticulate:::python_info_condaenv_find("/usr/local/"), + "-none")) +if (is_biocontainer) { + ## conda detection false positive + assignInNamespace("is_conda_python", function(x) FALSE, ns="reticulate") + use_python("/usr/local/bin/python") +} else { + conda_path = Sys.getenv("CONDA_PREFIX") + if (conda_path != "") { + ## Active conda env found + use_python(file.path(conda_path, "bin", "python3")) + } else { + ## Not biocontainer or conda, assume system python + use_python("/usr/bin/python3") + } +}]]> + </token> + <xml name="input_rds"> + <param name="seurat_rds" type="data" format="rds" label="Input file with the Seurat object"/> + </xml> + <token name="@CMD_read_inputs@"><![CDATA[ +seurat_obj = readRDS('seurat.rds') + ]]> + </token> + <token name="@CMD_read_expression_matrix@"><![CDATA[ +counts<-read.table("matrix.tab", header=TRUE, row.names=1, sep="\t") + ]]>] + </token> + <token name="@CMD@"><![CDATA[ +cp '$seurat_rds' seurat.rds && +cat '$script_file' > $hidden_output && +Rscript '$script_file' >> $hidden_output + ]]> + </token> + <xml name="inputs_common_advanced"> + <section name="advanced_common" title="Advanced Output" expanded="false"> + <param name="show_log" type="boolean" checked="false" label="Output Log?" /> + </section> + </xml> + <xml name="outputs_common_advanced"> + <data name="hidden_output" format="txt" label="Log file" > + <filter>advanced_common['show_log']</filter> + </data> + </xml> + <xml name="seurat_outputs"> + <data name="rds_out" format="rds" from_work_dir="seurat.rds" label="${tool.name} (${method.method}) on ${on_string}: RDS"> + <filter>method['method'] != 'Inspect'</filter> + </data> + <expand macro="outputs_common_advanced"/> + </xml> + <token name="@CMD_rds_write_outputs@"><![CDATA[ +saveRDS(seurat_obj, 'seurat.rds') + ]]> + </token> + <xml name="variable_out"> + <data name="variable_tabular" format="txt" from_work_dir="variable_out.txt" label="${tool.name} (${method.method}) on ${on_string}: Top variable features list"> + <filter>method['method'] == 'FindVariableFeatures' or method['method'] == 'SCTransform'</filter> + <filter>method['output_topN']['output_topN'] == 'true'</filter> + </data> + </xml> + <token name="@CMD_write_variable_tab@"><![CDATA[ +write.table(top_N, 'variable_out.txt', sep= "\t", col.names = FALSE, quote = FALSE) + ]]> + </token> + <xml name="markers_out"> + <data name="markers_tabular" format="csv" from_work_dir="markers_out.csv" label="${tool.name} (${method.method}) on ${on_string}: Markers list"> + <filter>method['method'] == 'FindAllMarkers' or method['method'] == 'FindMarkers' or method['method'] == 'FindConservedMarkers'</filter> + </data> + </xml> + <token name="@CMD_write_markers_tab@"><![CDATA[ +write.csv(seurat_obj, 'markers_out.csv', quote = FALSE) + ]]> + </token> + <xml name="print_top_pcs"> + <data name="top_pcs" format="txt" from_work_dir="print_pcs.txt" label="${tool.name} Print PCs on ${on_string}"> + <filter>method['method'] == 'RunPCA' and method['print_pcs']['print_pcs'] == 'true'</filter> + </data> + </xml> + <xml name="inspect_out"> + <data name="inspect_tabular" format="tabular" from_work_dir="inspect_out.tab" label="${tool.name} Inspect (${method.inspect.inspect}) on ${on_string}"> + <filter>method['method'] == 'Inspect' and method['inspect']['inspect'] != 'General'</filter> + </data> + <data name="inspect_general" format="txt" from_work_dir="inspect.txt" label="${tool.name} Inspect General on ${on_string}"> + <filter>method['method'] == 'Inspect' and method['inspect']['inspect'] == 'General'</filter> + </data> + </xml> + <token name="@CMD_inspect_rds_outputs@"><![CDATA[ +write.table(inspect, 'inspect_out.tab', sep="\t", col.names = col.names, row.names = row.names, quote = FALSE) + ]]> + </token> + <xml name="plot_out"> + <data name="plot_out_png" format="png" from_work_dir="plot.png" label="${tool.name} (${method.method}) on ${on_string}: png plot"> + <filter>plot_format == 'png'</filter> + </data> + <data name="plot_out_pdf" format="pdf" from_work_dir="plot.pdf" label="${tool.name} (${method.method}) on ${on_string}: pdf plot"> + <filter>plot_format == 'pdf'</filter> + </data> + <data name="plot_out_svg" format="svg" from_work_dir="plot.svg" label="${tool.name} (${method.method}) on ${on_string}: svg plot"> + <filter>plot_format == 'svg'</filter> + </data> + <data name="plot_out_jpeg" format="jpeg" from_work_dir="plot.jpeg" label="${tool.name} (${method.method}) on ${on_string}: jpeg plot"> + <filter>plot_format == 'jpeg'</filter> + </data> + <data name="plot_out_tex" format="tex" from_work_dir="plot.tex" label="${tool.name} (${method.method}) on ${on_string}: tex plot"> + <filter>plot_format == 'tex'</filter> + </data> + <data name="plot_out_tiff" format="tiff" from_work_dir="plot.tiff" label="${tool.name} (${method.method}) on ${on_string}: tiff plot"> + <filter>plot_format == 'tiff'</filter> + </data> + <data name="plot_out_eps" format="eps" from_work_dir="plot.eps" label="${tool.name} (${method.method}) on ${on_string}: eps plot"> + <filter>plot_format == 'eps'</filter> + </data> + </xml> + <xml name="param_eps" tokens="eps_value"> + <param argument="eps" type="float" value="@EPS_VALUE@" label="Small number to avoid numerical errors"/> + </xml> + <xml name="valid_name"> + <validator type="regex" message="Please only use letters, numbers, or _ - .">^[\w\-.]+$</validator> + </xml> + <xml name="valid_reduction_key"> + <validator type="regex" message="Please only use letters and _">^[A-Za-z_]+$</validator> + </xml> + <xml name="valid_list"> + <validator type="regex" message="Please only use letters, numbers, or _ - . ,">^[\w\-., ]+$</validator> + </xml> + <xml name="valid_cell_name"> + <validator type="regex" message="Please only use letters, numbers, or punctuation marks">^[\w[:punct:]]+$</validator> + </xml> + <xml name="valid_cell_list"> + <validator type="regex" message="Please only use letters, numbers, or punctuation marks">^[\w[:punct:]]+$</validator> + </xml> + <xml name="select_assay"> + <param argument="assay" type="text" optional="true" value="" label="Name of assay to use" help="leave blank to use default assay"> + <expand macro="valid_name"/> + </param> + </xml> + <xml name="select_assay_RNA"> + <param argument="assay" type="text" value="RNA" label="Name of assay to use"> + <expand macro="valid_name"/> + </param> + </xml> + <xml name="select_slot_data"> + <param argument="slot" type="select" label="Slot to pull data from"> + <option value="counts">counts</option> + <option value="data" selected="true">data</option> + <option value="scale.data">scale.data</option> + <option value="raw.data">raw.data</option> + </param> + </xml> + <xml name="select_slot_scale"> + <param argument="slot" type="select" label="Slot to pull data from"> + <option value="counts">counts</option> + <option value="data">data</option> + <option value="scale.data" selected="true">scale.data</option> + <option value="raw.data">raw.data</option> + </param> + </xml> + <xml name="select_slot_counts"> + <param argument="slot" type="select" label="Slot to pull data from"> + <option value="counts" selected="true">counts</option> + <option value="data">data</option> + <option value="scale.data">scale.data</option> + <option value="raw.data">raw.data</option> + </param> + </xml> + <xml name="select_layer"> + <param argument="layer" type="text" optional="true" value="" label="Layer to pull data from" help="leave blank to use default"> + <expand macro="valid_name"/> + </param> + </xml> + <xml name="select_reduction_pca"> + <param argument="reduction" type="text" value="pca" label="Name of reduction to use" help="default is pca"> + <expand macro="valid_name"/> + </param> + </xml> + <xml name="select_reduction_umap"> + <param argument="reduction" type="text" value="umap" label="Name of reduction to use" help="first defaults to umap, then tsne, then pca"> + <expand macro="valid_name"/> + </param> + </xml> + <xml name="set_topN"> + <param name="topN" type="integer" value="10" label="Number to show"/> + </xml> + <xml name="set_dims"> + <param argument="dims" type="integer" optional="true" value="10" label="Number of dimensions from reduction to use as input"/> + </xml> + <xml name="normalize"> + <conditional name="normalization_method"> + <param name="normalization_method" type="select" label="Method for normalization" help="(normalization.method)"> + <option value="LogNormalize" selected="true">LogNormalize</option> + <option value="CLR">CLR</option> + <option value="RC">RC</option> + </param> + <when value="LogNormalize"></when> + <when value="CLR"> + <param argument="margin" type="select" checked="true" label="Normalize across features (1) or cells (2)"> + <option value="1" selected="true">features</option> + <option value="2">cells</option> + </param> + </when> + <when value="RC"></when> + </conditional> + <param name="scale_factor" type="integer" value="10000" label="Set scale factor for normalization" help="(scale.factor)"/> + <param name="block_size" type="integer" optional="true" value="" label="Number of cells to run in each block" help="(block.size)"/> + </xml> + <xml name="integration_inputs"> + <param argument="dims" type="integer" value="30" label="Number of dimensions from reduction to use for integration"/> + <param name="dims_to_integrate" type="integer" optional="true" value="" label="Number of dimensions to return integrated values for" help="(dims.to.integrate)"/> + <param name="k_weight" type="integer" value="100" label="Number of neighbors to consider when weighting anchors" help="(k.weight)"/> + <param name="weight_reduction" type="text" optional="true" value="" label="Name of reduction(s) to use for calculating anchor weights" help="leave blank to use full corrected space (weight.reduction)"> + <expand macro="valid_list"/> + </param> + <param name="sd_weight" type="float" value="1" label="Controls bandwidth of Gaussian kernel for weighting"/> + <param name="preserve_order" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Preserve order" help="do not reorder objects based on size for each pairwise integration (preserve.order)"/> + </xml> + <xml name="markers_inputs"> + <param argument="features" type="data" format="txt,tabular" optional="true" value="" label="Features to test" help="text file with one feature on each line, leave empty to use all genes"/> + <param name="logfc_threshold" type="float" value="0.1" label="Minimum log-fold difference to test" help="(logfc.threshold)"/> + <conditional name="test_use"> + <param name="test_use" type="select" label="Select test to run" help="(test.use)"> + <option value="wilcox" selected="true">wilcox</option> + <option value="wilcox_limma">wilcox_limma</option> + <option value="bimod">bimod</option> + <option value="roc">roc</option> + <option value="t">t</option> + <option value="negbinom">negbinom</option> + <option value="poisson">poisson</option> + <option value="LR">LR</option> + <option value="MAST">MAST</option> + <option value="DESeq2">DESeq2</option> + </param> + <when value="wilcox"> + <expand macro="select_slot_data"/> + </when> + <when value="wilcox_limma"> + <expand macro="select_slot_data"/> + </when> + <when value="bimod"> + <expand macro="select_slot_data"/> + </when> + <when value="roc"> + <expand macro="select_slot_data"/> + <param name="return_thresh" type="float" value="0.01" min="0.0" max="1.0" label="Only return markers with a p-value below or power above this threshold" help="(return.thresh)"/> + </when> + <when value="t"> + <expand macro="select_slot_data"/> + </when> + <when value="negbinom"> + <expand macro="select_slot_counts"/> + <param name="latent_vars" type="text" optional="true" value="" label="Select variables to test" help="(latent.vars)"/> + <param name="min_cells_feature" type="integer" value="3" label="Minimum number of cells expressing the feature in at least one cluster" help="(min.cells.feature)"/> + </when> + <when value="poisson"> + <expand macro="select_slot_counts"/> + <param name="latent_vars" type="text" optional="true" value="" label="Select variables to test" help="(latent.vars)"/> + <param name="min_cells_feature" type="integer" value="3" label="Minimum number of cells expressing the feature in at least one cluster" help="(min.cells.feature)"/> + </when> + <when value="LR"> + <expand macro="select_slot_data"/> + <param name="latent_vars" type="text" optional="true" value="" label="Select variables to test" help="(latent.vars)"/> + </when> + <when value="MAST"> + <expand macro="select_slot_data"/> + <param name="latent_vars" type="text" optional="true" value="" label="Select variables to test" help="(latent.vars)"/> + </when> + <when value="DESeq2"> + <expand macro="select_slot_counts"/> + </when> + </conditional> + </xml> + <xml name="advanced_markers_inputs"> + <expand macro="select_assay"/> + <param name="fc_name" type="text" optional="true" value="" label="Choose a name for the fold change, average difference, or custom function column" help="(fc.name)"> + <expand macro="valid_name"/> + </param> + <param name="min_pct" type="float" value="0.01" min="0" max="100" label="Minimum percentage of cells genes must be present in to be tested" help="(min.pct)"/> + <param name="min_diff_pct" type="float" optional="true" value="" label="Minimum difference in percentage of expression between groups for genes to be tested" help="defaults to -Inf (min.diff.pct)"/> + <param name="only_pos" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Only return positive markers" help="(only.pos)"/> + <param name="max_cells_per_ident" type="integer" optional="true" value="" label="Downsample each identity class to a max number of cells" help="defaults to Inf for no downsampling (max.cells.per.ident)"/> + <param name="random_seed" type="integer" optional = "true" value="1" label="Set a random seed for downsampling" help="(random.seed)"/> + <param name="min_cells_group" type="integer" value="3" label="Minimum number of cells in one group" help="(min.cells.group)"/> + <param argument="densify" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Convert to dense matrix before running DE test"/> + </xml> + <xml name="plot_types"> + <param name="plot_format" type="select" label="Format of plot to produce"> + <option value="png">png</option> + <option value="pdf">pdf</option> + <option value="svg">svg</option> + <option value="jpeg">jpeg</option> + <option value="tex">tex</option> + <option value="tiff">tiff</option> + <option value="eps">eps</option> + </param> + </xml> + <xml name="plot_sizes"> + <conditional name="resize"> + <param name="resize" type="select" label="Change size of plot"> + <option value="false" selected="true">No</option> + <option value="true">Yes</option> + </param> + <when value="false"></when> + <when value="true"> + <param argument="width" type="integer" value="2100" label="Width of plot in pixels"/> + <param argument="height" type="integer" value="2100" label="Height of plot in pixels"/> + </when> + </conditional> + </xml> + <xml name="plot_cols"> + <param argument="cols" type="text" optional="true" value="" label="Colours to use for plotting" help="comma separated list"> + <expand macro="valid_list"/> + </param> + </xml> + <xml name="plot_log_scale"> + <param argument="log" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Plot on a log scale"/> + </xml> + <xml name="plot_2_dims"> + <param name="dims_1" type="integer" value="1" label="Dimension to plot on x axis"/> + <param name="dims_2" type="integer" value="2" label="Dimension to plot on y axis"/> + </xml> + <xml name="plot_projected_and_balanced"> + <param argument="projected" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Use reduction values for full dataset" help="i.e. projected dimensional reduction values"/> + <param argument="balanced" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Return an equal number of genes with + and - scores"/> + </xml> + <xml name="plot_disp_min_max"> + <param name="disp_min" type="float" optional="true" value="-2.5" label="Minimum display value" help="all values below are clipped (disp.min)"/> + <param name="disp_max" type="float" optional="true" value="" label="Maximum display value" help="all values above are clipped. Defaults to 2.5 if slot is scale.data, otherwise defaults to 6 (disp.max)"/> + </xml> + <xml name="plot_shuffle_and_seed"> + <conditional name="shuffle"> + <param argument="shuffle" type="select" label="Randomly shuffle order of points" help="can help with crowded plots if points of interest are hidden"> + <option value="TRUE">Yes</option> + <option value="FALSE" selected="true">No</option> + </param> + <when value="TRUE"> + <param argument="seed" type="integer" value="1" label="Set random seed for shuffling"/> + </when> + <when value="FALSE"></when> + </conditional> + </xml> + <xml name="plot_order"> + <param argument="order" type="text" optional="true" value="" label="Specify the order of plotting for the idents" help="a full comma-separated list or the ident to be plotted last on the top"> + <expand macro="valid_list"/> + </param> + </xml> + <xml name="plot_group_by"> + <param name="group_by" type="text" optional="true" value="" label="Factor to group cells by" help="(group.by)"/> + </xml> + <xml name="plot_split_by"> + <param name="split_by" type="text" optional="true" value="" label="Factor or identity to split the plot by" help="(split.by)"/> + </xml> + <xml name="plot_alpha"> + <param argument="alpha" type="integer" value="1" label="Alpha value for points"/> + </xml> + <xml name="plot_pt_size"> + <param name="pt_size" type="float" optional="true" value="" label="Point size for plot" help="(pt.size)"/> + </xml> + <xml name="plot_smooth"> + <param argument="smooth" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Smooth the graph"/> + </xml> + <xml name="plot_ncol"> + <param argument="ncol" type="integer" optional="true" value="" label="Number of columns to display"/> + </xml> + <xml name="raster_select"> + <conditional name="raster"> + <param argument="raster" type="select" label="Convert points to raster format" help="NULL will automatically use raster if more than 100,000 points plotted"> + <option value="NULL" selected="true">NULL</option> + <option value="TRUE">TRUE</option> + <option value="FALSE">FALSE</option> + </param> + <when value="NULL"></when> + <when value="TRUE"> + <param name="raster_x" type="integer" value="512" label="Horizontal length of raster plot (pixels)"/> + <param name="raster_y" type="integer" value="512" label="Vertical height of raster plot (pixels)"/> + </when> + <when value="FALSE"></when> + </conditional> + </xml> + <xml name="raster_boolean"> + <param argument="raster" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="true" label="Convert to raster format"/> + </xml> +</macros>
