diff sculpt_sequences.xml @ 1:a0cd867780ec draft default tip

planemo upload for repository https://github.com/Edinburgh-Genome-Foundry/Examples/blob/master/templates/template1.ipynb commit 6b6ce806b5d016b3c7f20318180eff2dbe64395a-dirty
author tduigou
date Thu, 17 Jul 2025 13:24:49 +0000
parents 0c7f75a2338b
children
line wrap: on
line diff
--- a/sculpt_sequences.xml	Mon Jul 07 13:11:42 2025 +0000
+++ b/sculpt_sequences.xml	Thu Jul 17 13:24:49 2025 +0000
@@ -18,14 +18,24 @@
         <requirement type="package" version="3.1.5">dna_features_viewer</requirement>
     </requirements>
     <command detect_errors="exit_code"><![CDATA[
-        #set avoid_list = [line.strip() for line in str($avoid_patterns).strip().split('\n') if line.strip()]
-        #set avoid_patterns = ','.join($avoid_list)
+        #if str($json_use.use_json_param) == "false":
+            #set avoid_list = [line.strip() for line in str($avoid_patterns).strip().split('\n') if line.strip()]
+            #set avoid_patterns = ','.join($avoid_list)
+
+            #set hairpin_lines = [line.strip() for line in str($json_use.hairpin_constraints).strip().split('\n') if line.strip()]
+            #set hairpin_constraints = '__cn__'.join($hairpin_lines)
 
-        #set hairpin_lines = [line.strip() for line in str($adv.hairpin_constraints).strip().split('\n') if line.strip()]
-        #set hairpin_constraints = '__cn__'.join($hairpin_lines)
+            #set gc_lines = [line.strip() for line in str($json_use.gc_constraints).strip().split('\n') if line.strip()]
+            #set gc_constraints = '__cn__'.join($gc_lines)
+
+            #set kmer_size = $json_use.kmer_size
 
-        #set gc_lines = [line.strip() for line in str($adv.gc_constraints).strip().split('\n') if line.strip()]
-        #set gc_constraints = '__cn__'.join($gc_lines)
+         #else:
+            #set avoid_patterns = ''
+            #set hairpin_constraints = ''
+            #set gc_constraints = ''
+            #set kmer_size = ''
+        #end if
 
         #set genbank_file_paths = ','.join([str(f) for f in $genbank_files])
         #set $file_name_mapping = ",".join(["%s:%s" % (file.file_name, file.name) for file in $genbank_files])
@@ -33,30 +43,42 @@
         mkdir 'outdir_scul' &&
         mkdir 'outdir_unscul' &&
         python '$__tool_directory__/sculpt_sequences.py' 
+            --use_json_param '$json_use.use_json_param'
             --files_to_sculpt '$genbank_file_paths'
             --file_name_mapping '$file_name_mapping' 
             --outdir_scul 'outdir_scul' 
             --outdir_unscul 'outdir_unscul' 
-            --use_file_names_as_id '$adv.use_file_names_as_ids' 
+            --use_file_names_as_id '$use_file_names_as_ids' 
             --avoid_patterns '$avoid_patterns'
-            --gc_constraints '$adv.gc_constraints'
-            --DnaOptimizationProblemClass '$DnaOptimizationProblemClass'
-            --kmer_size '$adv.kmer_size'
-            --hairpin_constraints '$adv.hairpin_constraints'
+            --gc_constraints '$gc_constraints'
+            --kmer_size '$kmer_size'
+            --hairpin_constraints '$hairpin_constraints'
+            #if $json_use.use_json_param:
+                --json_params '$json_use.json_params'
+            #else:
+                --json_params ''
+                --DnaOptimizationProblemClass '$json_use.DnaOptimizationProblemClass'
+            #end if
     ]]></command>
     <inputs>
         <param name="genbank_files" type="data_collection" collection_type="list" format="genbank" label="GenBank File(s)"/>
-        <param name="DnaOptimizationProblemClass" type="select" label="DnaOptimizationProblem Calss" help="select the assambly class">
-            <option value="DnaOptimizationProblem" selected="True">DnaOptimizationProblem</option>
-            <option value="CircularDnaOptimizationProblem">CircularDnaOptimizationProblem</option>
-        </param>
-        <param name="avoid_patterns" type="text" area="true" label="Pattern to Avoid" helps="Each pattern on a line" />
-        <section name="adv" title="Advanced Options" expanded="false">
-            <param name="hairpin_constraints" type="text" area="true" label="Hairpins Constraints" optional="true" help="e.g. (you can add others Hairpins Constraints on a new line): stem_size=20, hairpin_window=200"/>
-            <param name="gc_constraints" type="text" area="true" label="Enforce GC Content Constraints" optional="true" help="e.g. (you can add others Enforce GC Content Constraints on a new line): mini=0.3, maxi=0.7, window=100"/>
-            <param name="kmer_size" type="integer" label="K-mer Uniqueness Size" value="" optional="true" help="e.g.: 15"/>
-            <param name="use_file_names_as_ids" type="boolean" checked="True" label="Use File Names As Sequence IDs" />
-        </section>
+        <conditional name='json_use'>
+            <param name="use_json_param" type="boolean" checked="false" label="Use parameter from a JSON file" />
+            <when value="false">
+                <param name="DnaOptimizationProblemClass" type="select" label="DnaOptimizationProblem Calss" help="select the assambly class">
+                    <option value="DnaOptimizationProblem" selected="True">DnaOptimizationProblem</option>
+                    <option value="CircularDnaOptimizationProblem">CircularDnaOptimizationProblem</option>
+                </param>
+                <param name="avoid_patterns" type="text" area="true" label="Avoid Pattern Constraints" help="Each pattern on a line" />
+                <param name="hairpin_constraints" type="text" area="true" label="Hairpins Constraints" optional="true" help="e.g. (you can add others Hairpins Constraints on a new line): stem_size=20, hairpin_window=200"/>
+                <param name="gc_constraints" type="text" area="true" label="Enforce GC Content Constraints" optional="true" help="e.g. (you can add others Enforce GC Content Constraints on a new line): mini=0.3, maxi=0.7, window=100"/>
+                <param name="kmer_size" type="integer" label="K-mer Uniqueness Size" value="" optional="true" help="e.g.: 15"/>
+            </when>
+            <when value="true">
+                <param name="json_params" type="data" format="json" optional="true" label="JSON parameters file" help="Contains tool's parameters" />
+            </when>
+        </conditional>
+        <param name="use_file_names_as_ids" type="boolean" checked="True" label="Use File Names As Sequence IDs" />
     </inputs>   
     <outputs>
         <collection name="scul" type="list" label="scul group" >
@@ -68,7 +90,7 @@
     </outputs>
     <tests>
         <test> 
-        <!-- test for DnaOptimizationProblem -->
+            <!-- test for DnaOptimizationProblem -->
             <param name="genbank_files">
                 <collection type="list">
                     <element name="p15_PuroR" value="10_emma_genbanks/p15_PuroR.gb" />
@@ -83,23 +105,26 @@
                     <element name="HC_Amp_ccdB" value="10_emma_genbanks/HC_Amp_ccdB.gb" />
                 </collection>
             </param>
-            <param name="DnaOptimizationProblemClass" value="DnaOptimizationProblem" />
-            <param name="adv|use_file_names_as_ids" value="True" />
-            <!-- AvoidPatterns -->
-            <param name="avoid_patterns" value="BsaI_site
-            NotI_site
-            XbaI_site
-            ClaI_site
-            8x1mer" />
-            <!-- EnforceGCContent -->
-            <param name="adv|gc_constraints" value="mini=0.1, maxi=0.9, window=50"/>
+            <conditional name="json_use">
+                <param name="use_json_param" value="false" />
+                <param name="DnaOptimizationProblemClass" value="DnaOptimizationProblem" />
+                <!-- AvoidPatterns -->
+                <param name="avoid_patterns" value="BsaI_site
+                NotI_site
+                XbaI_site
+                ClaI_site
+                8x1mer" />
+                <!-- EnforceGCContent -->
+                <param name="gc_constraints" value="mini=0.1, maxi=0.9, window=50"/>
+            </conditional>
+            <param name="use_file_names_as_ids" value="True" />
             <output_collection name="scul" count="10">
             </output_collection>
             <output_collection name="unscul" count="10">
             </output_collection>
         </test>
         <test> 
-        <!-- test for CircularDnaOptimizationProblem -->
+            <!-- test for CircularDnaOptimizationProblem -->
             <param name="genbank_files">
                 <collection type="list">
                     <element name="p15_PuroR" value="10_emma_genbanks/p15_PuroR.gb" />
@@ -114,19 +139,48 @@
                     <element name="HC_Amp_ccdB" value="10_emma_genbanks/HC_Amp_ccdB.gb" />
                 </collection>
             </param>
-            <param name="DnaOptimizationProblemClass" value="CircularDnaOptimizationProblem" />
-            <param name="adv|use_file_names_as_ids" value="True" />
-            <!-- AvoidPatterns -->
-            <param name="avoid_patterns" value="BsaI_site
-            NotI_site
-            XbaI_site
-            ClaI_site
-            8x1mer" />
-            <!-- EnforceGCContent -->
-            <param name="adv|gc_constraints" value="mini=0.1, maxi=0.9
-            mini-0.3, maxi=0.7, window=50"/>
-            <param name="adv|hairpin_constraints" value="stem_size=20, hairpin_window=200
-            stem_size=10, hairpin_window=100"/>
+            <conditional name="json_use">
+                <param name="use_json_param" value="false" />
+                <param name="DnaOptimizationProblemClass" value="CircularDnaOptimizationProblem" />
+                <!-- AvoidPatterns -->
+                <param name="avoid_patterns" value="BsaI_site
+                NotI_site
+                XbaI_site
+                ClaI_site
+                8x1mer" />
+                <!-- EnforceGCContent -->
+                <param name="gc_constraints" value="mini=0.1, maxi=0.9
+                mini=0.3, maxi=0.7, window=50"/>
+                <param name="hairpin_constraints" value="stem_size=20, hairpin_window=200
+                stem_size=10, hairpin_window=100"/>
+            </conditional>
+            <param name="use_file_names_as_ids" value="True" />
+            <output_collection name="scul" count="10">
+            </output_collection>
+            <output_collection name="unscul" count="10">
+            </output_collection>
+        </test>
+        <test>
+            <!-- test json params -->
+            <param name="genbank_files">
+                <collection type="list">
+                    <element name="p15_PuroR" value="10_emma_genbanks/p15_PuroR.gb" />
+                    <element name="p9_PuroR" value="10_emma_genbanks/p9_PuroR.gb" />
+                    <element name="p15_Pup9_mTagBFP2roR" value="10_emma_genbanks/p9_mTagBFP2.gb" />
+                    <element name="p15_p9_BSDRPuroR" value="10_emma_genbanks/p9_BSDR.gb" />
+                    <element name="p8_Linker1" value="10_emma_genbanks/p8_Linker1.gb" />
+                    <element name="p7_L7Ae-Weiss" value="10_emma_genbanks/p7_L7Ae-Weiss.gb" />
+                    <element name="p6_Nt-IgKLsequence" value="10_emma_genbanks/p6_Nt-IgKLsequence.gb" />
+                    <element name="p6_Kozak-ATG" value="10_emma_genbanks/p6_Kozak-ATG.gb" />
+                    <element name="p4_Kt-L7Ae-Weiss" value="10_emma_genbanks/p4_Kt-L7Ae-Weiss.gb" />
+                    <element name="HC_Amp_ccdB" value="10_emma_genbanks/HC_Amp_ccdB.gb" />
+                </collection>
+            </param>
+            <conditional name="json_use">
+                <param name="use_json_param" value="true" />
+                <param name="json_params" value="test_json_workflow2.json" />
+            </conditional>
+            <param name="use_file_names_as_ids" value="True" />
             <output_collection name="scul" count="10">
             </output_collection>
             <output_collection name="unscul" count="10">
@@ -142,6 +196,9 @@
 **Parameters**:
 ---------------
 * **GenBank File(s)**: List of GenBank files to be processed.
+* **Use parameter from a JSON file**: 
+    Yes/No parameter to indicate if user want to set parameter manually or using a json file
+    If Yes, user should provide a JSON file contains all parameters
 * **DnaOptimizationProblem Class**: 
     - "DnaOptimizationProblem": is the class to define and solve an optimization problems. Its methods implement all the solver logics.
     - "CircularDnaOptimizationProblem": is a variant of DnaOptimizationProblem whose optimization algorithm assumes that the sequence is circular.