diff rpbasicdesign.xml @ 2:8a087d7546b8 draft

"planemo upload commit f40274f6b9f6a15eb4022aab21286d4c96cd8475-dirty"
author tduigou
date Mon, 28 Mar 2022 14:16:59 +0000
parents de9f53630349
children e4821c820f7c
line wrap: on
line diff
--- a/rpbasicdesign.xml	Wed Dec 15 15:10:43 2021 +0000
+++ b/rpbasicdesign.xml	Mon Mar 28 14:16:59 2022 +0000
@@ -1,7 +1,10 @@
-<tool id="rpbasicdesign" name="BasicDesign" version="0.3.4">
+<tool id="rpbasicdesign" name="BasicDesign" version="@TOOL_VERSION@" profile="19.09">
     <description>Build DNA-BOT input files from rpSBML</description>
+    <macros>
+        <token name="@TOOL_VERSION@">1.0.1</token>
+    </macros>
     <requirements>
-        <requirement type="package" version="0.3.4">rpbasicdesign</requirement>
+        <requirement type="package" version="@TOOL_VERSION@">rpbasicdesign</requirement>
     </requirements>
     <command detect_errors="exit_code"><![CDATA[
         python -m rpbasicdesign.cli
@@ -14,46 +17,112 @@
         --lmp_id '$adv.lmp_id'
         --backbone_id '$backbone_id'
         --sample_size '$sample_size'
-        #if str($adv.cds_permutation) == "true"
-            --cds_permutation true
-        #else
-            --cds_permutation false
-        #end if
+        $adv.cds_permutation
         --o_dnabot_dir 'out/dnabot_in'
-        --o_sbol_dir 'out/sbol_export'
+        $adv.sbol_output
+        --max_enz_per_rxn $adv.max_enz_per_rxn
     ]]></command>
     <inputs>
-        <param name="rpsbml_file" type="data" format="xml" label="rpSBML file"/>
-        <param name="backbone_id" type="text" value="BASIC_SEVA_37_CmR-p15A.1" label="Backbone part ID" />
-        <param name="sample_size" type="integer" value="88" label="Number of constructs to generate" />
+        <param name="rpsbml_file" type="data" format="xml" label="rpSBML file" help="SBML file from which enzymes UniProt IDs will be collected."/>
+        <param argument="--backbone_id" type="text" value="BASIC_SEVA_37_CmR-p15A.1" label="Backbone part ID" help="Part ID to be used as the backbone.">
+            <sanitizer invalid_char="">
+                <valid initial="string.letters,string.digits">
+                    <add value=":" />
+                    <add value="." />
+                    <add value="-" />
+                    <add value="_" />
+                </valid>
+            </sanitizer>
+            <validator type="empty_field" message="Backbone ID is required"/>
+            <validator type="regex">[0-9a-zA-Z_:-]+</validator>
+        </param>
+        <param argument="--sample_size" type="integer" value="88" min="1" max="88" label="Number of constructs to generate" help="Number of construct to generate."/>
         <section name="adv" title="Advanced Options" expanded="false">
-            <param name="parts_files" type="data" format="csv" optional="true" multiple="true" label="Linkers and user parts" />
-            <param name="lms_id" type="text" value="LMS" label="LMS part ID" />
-            <param name="lmp_id" type="text" value="LMP" label="LMP part ID" />
-            <param name="cds_permutation" type="boolean" label="Perform CDS permutation?" checked="true" />
+            <param name="parts_files" type="data" format="csv" optional="true" multiple="true" label="Linkers and user parts" help="List of files providing available linkers and user parts (backbone, promoters, ...) for constructs. Default: Standard Biolegio Parts" />
+            <param argument="--lms_id" type="text" value="LMS" label="LMS part ID" help="Part ID to be used as the LMS methylated linker." >
+                <sanitizer invalid_char="">
+                    <valid initial="string.letters,string.digits">
+                        <add value=":" />
+                        <add value="-" />
+                        <add value="_" />
+                        <add value="." />
+                    </valid>
+                </sanitizer>
+                <validator type="empty_field" message="LMS ID is required"/>
+            </param>
+            <param argument="--lmp_id" type="text" value="LMP" label="LMP part ID" help="Part ID to be used as the LMP methylated linker.">
+                <sanitizer invalid_char="">
+                    <valid initial="string.letters,string.digits">
+                        <add value=":" />
+                        <add value="-" />
+                        <add value="_" />
+                        <add value="." />
+                    </valid>
+                </sanitizer>
+                <validator type="empty_field" message="LMP ID is required"/>
+            </param>
+            <param argument="--cds_permutation" type="boolean" truevalue="--cds_permutation true" falsevalue="--cds_permutation false" checked="true" label="Perform CDS permutation?" help="Whether all combinations of CDS permutation should be built." />
+            <param argument="--sbol_output" type="boolean" checked="false" truevalue="--o_sbol_dir out/sbol_export" falsevalue="" label="Output SBOL results?" help="Output folder to write SBOL depictions of constructs." />
+            <param argument="--max_enz_per_rxn" type="integer" value="1" min="1" max="99" label="Maximum number of enyzme to consider per reaction." help="Maximum number of enyzme to consider per reaction. If more enzymes are available for a given reaction, then only the last one listed in the MIRIAM annotation section will be kept."/>
         </section>
     </inputs>
     <outputs>
-        <data name="Constructs" format="csv" from_work_dir="out/dnabot_in/constructs.csv" label="${tool.name} - ${rpsbml_file.name}: constructs" />
-        <data name="User parts plate" format="csv" from_work_dir="out/dnabot_in/user_parts_plate.csv" label="${tool.name} - ${rpsbml_file.name}: User parts plate"/>
-        <data name="Biolegio plate" format="csv" from_work_dir="out/dnabot_in/biolegio_plate.csv" label="${tool.name} - ${rpsbml_file.name}: Biolegio plate"/>
-        <collection name="sbol_dir" type="list" label="${tool.name} - ${rpsbml_file.name}: SBOL constructs">
+        <data name="Constructs" format="csv" from_work_dir="out/dnabot_in/constructs.csv" label="${tool.name} on ${rpsbml_file.name}: constructs" />
+        <data name="User parts plate" format="csv" from_work_dir="out/dnabot_in/user_parts_plate.csv" label="${tool.name} on ${rpsbml_file.name}: User parts plate"/>
+        <data name="Biolegio plate" format="csv" from_work_dir="out/dnabot_in/biolegio_plate.csv" label="${tool.name} on ${rpsbml_file.name}: Biolegio plate"/>
+        <collection name="sbol_dir" type="list" label="${tool.name} on ${rpsbml_file.name}: SBOL constructs">
+            <filter> adv['sbol_output'] </filter>
             <discover_datasets pattern="__designation_and_ext__" format="xml" directory="out/sbol_export" />
         </collection>
     </outputs>
     <tests>
         <test>
-        <!-- test 1: check if identical outputs are produced -->
-        <param name="rpsbml_file" value="lycopene_CrtEBI_from_selenzy.xml" />
-        <param name="sample_size" value="3" />
-        <output name="Constructs" file="constructs.csv" ftype="csv" compare="diff"/>
-        <output name="User parts plate" file="user_parts_plate.csv" ftype="csv" compare="diff"/>
-        <output name="Biolegio plate" file="biolegio_plate.csv" ftype="csv" compare="diff"/>
-        <output_collection name="sbol_dir" type="list">
-            <element name="BASIC_construct_A1" ftype="xml" value="BASIC_construct_A1.xml" sort="true"/>
-            <element name="BASIC_construct_B1" ftype="xml" value="BASIC_construct_B1.xml" sort="true"/>
-            <element name="BASIC_construct_C1" ftype="xml" value="BASIC_construct_C1.xml" sort="true"/>
-        </output_collection>
+            <!-- test 1: check if identical outputs are produced (Lycopene input)-->
+            <param name="rpsbml_file" value="lycopene_CrtEBI_from_selenzy.xml" />
+            <param name="sample_size" value="3" />
+            <output name="Constructs" file="constructs_lycopene.csv" ftype="csv" compare="diff">
+                <assert_contents>
+                    <has_n_lines n="4"/>
+                </assert_contents>
+            </output>
+            <output name="User parts plate" file="user_parts_plate_lycopene.csv" ftype="csv" compare="diff"/>
+            <output name="Biolegio plate" file="biolegio_plate_lycopene.csv" ftype="csv" compare="diff"/>
+            <param name="sbol_output" value="--o_sbol_dir out/sbol_export" />
+            <output_collection name="sbol_dir" type="list" count="3">
+                <element name="BASIC_construct_A1">
+                    <assert_contents>
+                        <is_valid_xml />
+                        <has_text text="BASIC_construct_A1" />
+                        <has_n_lines n="339" />
+                    </assert_contents>
+                </element>
+                <element name="BASIC_construct_B1">
+                    <assert_contents>
+                        <is_valid_xml />
+                        <has_text text="BASIC_construct_B1" />
+                        <has_n_lines n="339" />
+                    </assert_contents>
+                </element>
+                <element name="BASIC_construct_C1">
+                    <assert_contents>
+                        <is_valid_xml />
+                        <has_text text="BASIC_construct_C1" />
+                        <has_n_lines n="339" />
+                    </assert_contents>
+                </element>
+            </output_collection>
+        </test>
+        <test>
+            <!-- test 2: check if identical outputs are produced (Muconate input)-->
+            <param name="rpsbml_file" value="muconate_example.xml" />
+            <param name="sample_size" value="88" />
+            <output name="Constructs" file="constructs_muconate.csv" ftype="csv" compare="diff">
+                <assert_contents>
+                    <has_n_lines n="89"/>
+                </assert_contents>
+            </output>
+            <output name="User parts plate" file="user_parts_plate_muconate.csv" ftype="csv" compare="diff"/>
+            <output name="Biolegio plate" file="biolegio_plate_muconate.csv" ftype="csv" compare="diff"/>
         </test>
     </tests>
     <help><![CDATA[
@@ -76,18 +145,19 @@
 
 Advanced options:
 
-* **parts_files**\ : (string) List of files providing available linkers and user parts (backbone, promoters, ...) for constructs. Default: [data/biolegio_parts.csv, user_parts.csv]
+* **parts_files**\ : (string) List of files providing available linkers and user parts (backbone, promoters, ...) for constructs. Default: [data/biolegio_parts.csv, data/user_parts.csv]
 * **lms_id**\ : (string) part ID to be used as the LMS methylated linker. Default: LMS.
 * **lmp_id**\ : (string) part ID to be used as the LMP methylated linker. Default: LMP.
 * **backbone_id**\ : (string) part ID to be used as the backbone. Default: BASIC_SEVA_37_CmR-p15A.1.
-* **sample_size**\ : (int) Number of construct to generate.Default: 3.
+* **sample_size**\ : (int) Number of construct to generate. Default: 88.
 * **cds_permutation**\ : (boolean) Whether all combinations of CDS permutation should be built Default: true.
+* **max_enz_per_rxn**\ : (integer) Maximum number of enyzme to consider per reaction. If more enzymes are available for a given reaction, then only the last one listed in the MIRIAM annotation section will be kept. (Default: 1). 
 
 Output
 ------
 
 * **o_dnabot_dir**\ : (string) Output folder to write construct and plate files. It will be created if it does not exist yet. Existing files will be overwritten. Default: out/dnabot_in.
-* **o_sbol_dir**\ : (string) Output folder to write SBOL depictions of constructs. It will be created if it does not exist yet. Existing files will be overwritten. Default: out/sbol_export.
+* **o_sbol_dir**\ : (string) Output folder to write SBOL depictions of constructs. Existing files will be overwritten. Default: not output.
 
 Project Links
 ------------------
@@ -101,21 +171,6 @@
 
     ]]></help>
     <citations>
-        <citation type="bibtex">
-      @article{10.1093/synbio/ysaa010,
-          author = {Storch, Marko and Haines, Matthew C and Baldwin, Geoff S},
-          title = {DNA-BOT: a low-cost, automated DNA assembly platform for synthetic biology},
-          journal = {Synthetic Biology},
-          volume = {5},
-          number = {1},
-          year = {2020},
-          month = {07},
-          issn = {2397-7000},
-          doi = {10.1093/synbio/ysaa010},
-          url = {https://doi.org/10.1093/synbio/ysaa010},
-          note = {ysaa010},
-          eprint = {https://academic.oup.com/synbio/article-pdf/5/1/ysaa010/33722340/ysaa010.pdf},
-      }
-        </citation>
+        <citation type="doi">10.1093/synbio/ysaa010</citation>
     </citations>
 </tool>
\ No newline at end of file