Mercurial > repos > iuc > scanpy_inspect
changeset 21:3b5ef3b00cdd draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/scanpy/ commit 76bfefa9116713dc1078ae407ab6dd69ed14a244
author | iuc |
---|---|
date | Wed, 26 Mar 2025 09:42:09 +0000 |
parents | d86cb2ce311b |
children | |
files | inspect.xml test-data/sparce_csr_matrix_var_str.h5ad |
diffstat | 2 files changed, 56 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/inspect.xml Fri Oct 18 10:39:04 2024 +0000 +++ b/inspect.xml Wed Mar 26 09:42:09 2025 +0000 @@ -1,4 +1,4 @@ -<tool id="scanpy_inspect" name="Scanpy Inspect and manipulate" version="@TOOL_VERSION@+galaxy1" profile="@PROFILE@"> +<tool id="scanpy_inspect" name="Scanpy Inspect and manipulate" version="@TOOL_VERSION@+galaxy2" profile="@PROFILE@"> <macros> <import>macros.xml</import> <xml name="params_score_genes"> @@ -57,12 +57,36 @@ @CMD_READ_INPUTS@ #if str($method.method) == 'pp.calculate_qc_metrics': +#if str($method.qc_vars) != '': + #set $qc_vars = [str(x.strip()) for x in str($method.qc_vars).split(',')] + +# function to convert 'True' and 'False' strings to boolean values + +def fix_var_keys(adata, var_keys): + for key in var_keys: + if key not in adata.var.columns: + raise ValueError(f"Column '{key}' not found in adata.var") + + if adata.var[key].dtype == bool: + continue # Skip conversion if already boolean + + unique_values = set(adata.var[key].astype(str).str.upper()) + if not unique_values.issubset({'TRUE', 'FALSE'}): + raise ValueError(f"Column '{key}' contains values other than 'True' or 'False'. qc_vars must contain only boolean (True/False) columns.") + + adata.var[key] = adata.var[key].astype(str).str.upper().map({'TRUE': True, 'FALSE': False}).astype(bool) + print(f"'{key}' has been converted to a boolean.") + + return adata + +adata = fix_var_keys(adata, $qc_vars) +#end if + sc.pp.calculate_qc_metrics( adata=adata, expr_type='$method.expr_type', var_type='$method.var_type', #if str($method.qc_vars) != '': - #set $qc_vars = [str(x.strip()) for x in str($method.qc_vars).split(',')] qc_vars=$qc_vars, #end if #if str($method.percent_top) != '': @@ -858,8 +882,8 @@ <param name="solver" value="liblinear"/> <conditional name="penalty"> <param name="penalty" value="l2"/> - <param name="random_state" value="1"/> </conditional> + <param name="random_state" value="1"/> </conditional> </conditional> </conditional> @@ -908,8 +932,8 @@ <param name="solver" value="liblinear"/> <conditional name="penalty"> <param name="penalty" value="l2"/> - <param name="random_state" value="1"/> </conditional> + <param name="random_state" value="1"/> </conditional> </conditional> </conditional> @@ -1130,8 +1154,8 @@ <param name="solver" value="liblinear"/> <conditional name="penalty"> <param name="penalty" value="l2"/> - <param name="random_state" value="1"/> </conditional> + <param name="random_state" value="1"/> </conditional> </conditional> </conditional> @@ -1217,6 +1241,33 @@ </assert_contents> </output> </test> + <!-- test 19: check str var conversion to boolean --> + <test expect_num_outputs="2"> + <param name="adata" value="sparce_csr_matrix_var_str.h5ad"/> + <conditional name="method"> + <param name="method" value="pp.calculate_qc_metrics"/> + <param name="qc_vars" value="mito,negative"/> + </conditional> + <section name="advanced_common"> + <param name="show_log" value="true"/> + </section> + <output name="hidden_output"> + <assert_contents> + <has_text_matching expression="sc.pp.calculate_qc_metrics"/> + <has_text_matching expression="expr_type='counts'"/> + <has_text_matching expression="var_type='genes'"/> + <has_text_matching expression="qc_vars=\['mito', 'negative'\]"/> + <has_text_matching expression="\'mito\' has been converted to a boolean."/> + <has_text_matching expression="\'negative\' has been converted to a boolean."/> + </assert_contents> + </output> + <output name="anndata_out" ftype="h5ad"> + <assert_contents> + <has_h5_keys keys="obs/n_genes_by_counts,obs/log1p_n_genes_by_counts,obs/total_counts,obs/log1p_total_counts,obs/pct_counts_in_top_50_genes,obs/pct_counts_in_top_100_genes,obs/pct_counts_in_top_200_genes,obs/pct_counts_in_top_500_genes,obs/total_counts_mito,obs/log1p_total_counts_mito,obs/pct_counts_mito,obs/total_counts_negative,obs/log1p_total_counts_negative,obs/pct_counts_negative"/> + <has_h5_keys keys="var/n_cells_by_counts,var/mean_counts,var/log1p_mean_counts,var/pct_dropout_by_counts,var/total_counts,var/log1p_total_counts"/> + </assert_contents> + </output> + </test> </tests> <help><![CDATA[ Calculate quality control metrics., using `pp.calculate_qc_metrics`