Mercurial > repos > iuc > anndata_manipulate
diff manipulate.xml @ 1:19592ec717ef draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/anndata/ commit 8ef5f7c6f8728608a3f05bb51e11b642b84a05f5"
author | iuc |
---|---|
date | Wed, 16 Oct 2019 06:26:45 -0400 |
parents | 0ef28c0963c8 |
children | a56baceb1900 |
line wrap: on
line diff
--- a/manipulate.xml Wed Apr 10 03:25:05 2019 -0400 +++ b/manipulate.xml Wed Oct 16 06:26:45 2019 -0400 @@ -50,11 +50,76 @@ key='$manipulate.key', categories=$categories) -#else if $manipulate.function == 'transpose' -adata.transpose() - #else if $manipulate.function == 'strings_to_categoricals' adata.strings_to_categoricals() + +#else if $manipulate.function == 'transpose' +adata = adata.transpose() + +#else if $manipulate.function == 'add_annotation' +import pandas as pd +extra_annot_t = pd.read_csv('$manipulate.new_annot', sep='\t').reset_index(drop=True) + #if $manipulate.var_obs == 'var' +var_index = adata.var_names +var = pd.concat([adata.var.reset_index(drop=True), extra_annot_t], axis=1) +var.index = var_index +adata.var = var + #else if $manipulate.var_obs == 'obs' +obs_index = adata.obs.index +obs = pd.concat([adata.obs.reset_index(drop=True), extra_annot_t], axis=1) +obs.index = obs_index +adata.obs = obs + #end if + +#else if $manipulate.function == 'filter' + #if $manipulate.filter.filter == 'key' + #if $manipulate.var_obs == 'var' +filtered = adata.var['$manipulate.filter.key'] + #else if $manipulate.var_obs == 'obs' +filtered = adata.obs['$manipulate.filter.key'] + #end if + + #if $manipulate.filter.filter_key.type == 'number' + #if $manipulate.filter.filter_key.filter == 'equal' +filtered = filtered == $manipulate.filter.filter_key.value + #else if $manipulate.filter.filter_key.filter == 'equal' +filtered = filtered != $manipulate.filter.filter_key.value + #else if $manipulate.filter.filter_key.filter == 'less' +filtered = filtered < $manipulate.filter.filter_key.value + #else if $manipulate.filter.filter_key.filter == 'less_or_equal' +filtered = filtered <= $manipulate.filter.filter_key.value + #else if $manipulate.filter.filter_key.filter == 'greater' +filtered = filtered > $manipulate.filter.filter_key.value + #else if $manipulate.filter.filter_key.filter == 'greater_or_equal' +filtered = filtered >= $manipulate.filter.filter_key.value + #end if + #else if $manipulate.filter.filter_key.type == 'text' + #if $manipulate.filter.filter_key.filter == 'equal' +filtered = filtered == '$manipulate.filter.filter_key.value' + #else +filtered = filtered != '$manipulate.filter.filter_key.value' + #end if + #else if $manipulate.filter.filter_key.type == 'boolean' +filtered = filtered == $manipulate.filter.filter_key.value + #end if + + #else if $manipulate.filter.filter == 'index' + #if str($manipulate.filter.index.format) == 'file' +with open('$manipulate.filter.index.file', 'r') as filter_f: + filters = [str(x.strip()) for x in filter_f.readlines()] +filtered = filters + #else + #set $filters = [str(x.strip()) for x in $manipulate.filter.index.text.split(',')] +filtered = $filters + #end if + #end if +print(filtered) + + #if $manipulate.var_obs == 'var' +adata = adata[:,filtered] + #else if $manipulate.var_obs == 'obs' +adata = adata[filtered, :] + #end if #end if adata.write('anndata.h5ad') @@ -70,6 +135,8 @@ <option value="rename_categories">Rename categories of annotation</option> <option value="strings_to_categoricals">Transform string annotations to categoricals</option> <option value="transpose">Transpose the data matrix, leaving observations and variables interchanged</option> + <option value="add_annotation">Add new annotation(s) for observations or variables</option> + <option value="filter">Filter observations or variables</option> </param> <when value="concatenate"> <param name="other_adatas" type="data" format="h5ad" multiple="true" label="Annotated data matrix to add"/> @@ -97,13 +164,78 @@ </when> <when value="strings_to_categoricals"/> <when value="transpose"/> + <when value="add_annotation"> + <param name="var_obs" type="select" label="What to annotate?"> + <option value="var">Variables (var)</option> + <option value="obs">Observations (obs)</option> + </param> + <param name="new_annot" type="data" format="tabular" label="Table with new annotations" + help="The new table should have the same number of rows and same order than obs or var. The key names should be in the header (1st line)"/> + </when> + <when value="filter"> + <param name="var_obs" type="select" label="What to annotate?"> + <option value="var">Variables (var)</option> + <option value="obs">Observations (obs)</option> + </param> + <conditional name="filter"> + <param name="filter" type="select" label="Type of filtering?"> + <option value="key">By key (column) values</option> + <option value="index">By index (row)</option> + </param> + <when value="key"> + <param name="key" type="text" value="n_genes" label="Key to filter"/> + <conditional name="filter_key"> + <param name="type" type="select" label="Type of value to filter"> + <option value="number">Number</option> + <option value="text">Text</option> + <option value="boolean">Boolean</option> + </param> + <when value="number"> + <param name="filter" type="select" label="Filter"> + <option value="equal">equal to</option> + <option value="not_equal">not equal to</option> + <option value="less">less than</option> + <option value="less_or_equal">less than or equal to</option> + <option value="greater">greater than</option> + <option value="greater_or_equal">greater than or equal to</option> + </param> + <param name="value" type="float" value="2500" label="Value"/> + </when> + <when value="text"> + <param name="filter" type="select" label="Filter"> + <option value="equal">equal to</option> + <option value="not_equal">not equal to</option></param> + <param name="value" type="text" value="2500" label="Value"/> + </when> + <when value="boolean"> + <param name="value" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Value to keep"/> + </when> + </conditional> + </when> + <when value="index"> + <conditional name="index"> + <param name="format" type="select" label="Format for the filter by index"> + <option value="file">File</option> + <option value="text" selected="true">Text</option> + </param> + <when value="text"> + <param name="text" type="text" value="" label="List of index to keep" help="Indexes separated by a comma"/> + </when> + <when value="file"> + <param name="file" type="data" format="txt" label="File with the list of index to keep" help="One index per line"/> + </when> + </conditional> + </when> + </conditional> + </when> </conditional> </inputs> <outputs> - <data name="anndata" format="h5ad" from_work_dir="anndata.h5ad" label="${tool.name} on ${on_string}"/> + <data name="anndata" format="h5ad" from_work_dir="anndata.h5ad" label="${tool.name} (${manipulate.function}) on ${on_string}"/> </outputs> <tests> <test> + <!-- test 1 --> <param name="input" value="krumsiek11.h5ad"/> <conditional name="manipulate"> <param name="function" value="concatenate"/> @@ -122,6 +254,7 @@ <output name="anndata" value="manipulate.concatenate.h5ad" ftype="h5ad" compare="sim_size"/> </test> <test> + <!-- test 2 --> <param name="input" value="krumsiek11.h5ad"/> <conditional name="manipulate"> <param name="function" value="obs_names_make_unique"/> @@ -133,6 +266,7 @@ <output name="anndata" value="manipulate.obs_names_make_unique.h5ad" ftype="h5ad" compare="sim_size"/> </test> <test> + <!-- test 3 --> <param name="input" value="krumsiek11.h5ad"/> <conditional name="manipulate"> <param name="function" value="var_names_make_unique"/> @@ -144,6 +278,7 @@ <output name="anndata" value="manipulate.var_names_make_unique.h5ad" ftype="h5ad" compare="sim_size"/> </test> <test> + <!-- test 4 --> <param name="input" value="krumsiek11.h5ad"/> <conditional name="manipulate"> <param name="function" value="rename_categories"/> @@ -158,6 +293,7 @@ <output name="anndata" value="manipulate.rename_categories.h5ad" ftype="h5ad" compare="sim_size"/> </test> <test> + <!-- test 5 --> <param name="input" value="krumsiek11.h5ad"/> <conditional name="manipulate"> <param name="function" value="strings_to_categoricals"/> @@ -168,6 +304,7 @@ <output name="anndata" value="manipulate.strings_to_categoricals.h5ad" ftype="h5ad" compare="sim_size"/> </test> <test> + <!-- test 6 --> <param name="input" value="krumsiek11.h5ad"/> <conditional name="manipulate"> <param name="function" value="transpose"/> @@ -177,6 +314,60 @@ </assert_stdout> <output name="anndata" value="manipulate.transpose.h5ad" ftype="h5ad" compare="sim_size"/> </test> + <test> + <!-- test 7 --> + <param name="input" value="krumsiek11.h5ad"/> + <conditional name="manipulate"> + <param name="function" value="add_annotation"/> + <param name="var_obs" value="var"/> + <param name="new_annot" value="var_add_annotation.tabular"/> + </conditional> + <output name="anndata" value="manipulate.add_annotation_var.h5ad" ftype="h5ad" compare="sim_size"/> + </test> + <test> + <!-- test 8 --> + <param name="input" value="krumsiek11.h5ad"/> + <conditional name="manipulate"> + <param name="function" value="add_annotation"/> + <param name="var_obs" value="obs"/> + <param name="new_annot" value="obs_add_annotation.tabular"/> + </conditional> + <output name="anndata" value="manipulate.add_annotation_obs.h5ad" ftype="h5ad" compare="sim_size"/> + </test> + <test> + <!-- test 9 --> + <param name="input" value="krumsiek11.h5ad"/> + <conditional name="manipulate"> + <param name="function" value="filter"/> + <param name="var_obs" value="var"/> + <conditional name="filter"> + <param name="filter" value="index"/> + <conditional name="index"> + <param name="format" value="text"/> + <param name="text" value="Gata2,EKLF"/> + </conditional> + </conditional> + </conditional> + <output name="anndata" value="manipulate.filter_var_index.h5ad" ftype="h5ad" compare="sim_size"/> + </test> + <test> + <!-- test 10 --> + <param name="input" value="krumsiek11.h5ad"/> + <conditional name="manipulate"> + <param name="function" value="filter"/> + <param name="var_obs" value="obs"/> + <conditional name="filter"> + <param name="filter" value="key"/> + <param name="key" value="cell_type"/> + <conditional name="filter_key"> + <param name="type" value="text"/> + <param name="filter" value="equal"/> + <param name="value" value="progenitor"/> + </conditional> + </conditional> + </conditional> + <output name="anndata" value="manipulate.filter_obs_key.h5ad" ftype="h5ad" compare="sim_size"/> + </test> </tests> <help><![CDATA[ **What it does** @@ -211,6 +402,10 @@ Data matrix is transposed, observations and variables are interchanged. +- Add annotation for variables or observations + +- Filter data variables or observations, by index or key + @HELP@ ]]></help> <expand macro="citations"/>