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`
Binary file test-data/sparce_csr_matrix_var_str.h5ad has changed