Repository 'rpbasicdesign'
hg clone https://toolshed.g2.bx.psu.edu/repos/tduigou/rpbasicdesign

Changeset 0:e8e8050e9997 (2021-11-18)
Next changeset 1:de9f53630349 (2021-12-15)
Commit message:
Uploaded rpbasicdesign 0.3.4
added:
rpbasicdesign/rpbasicdesign.xml
rpbasicdesign/test-data/BASIC_construct_A1.xml
rpbasicdesign/test-data/BASIC_construct_B1.xml
rpbasicdesign/test-data/BASIC_construct_C1.xml
rpbasicdesign/test-data/biolegio_plate.csv
rpbasicdesign/test-data/constructs.csv
rpbasicdesign/test-data/lycopene_CrtEBI_from_selenzy.xml
rpbasicdesign/test-data/user_parts_plate.csv
b
diff -r 000000000000 -r e8e8050e9997 rpbasicdesign/rpbasicdesign.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rpbasicdesign/rpbasicdesign.xml Thu Nov 18 13:17:02 2021 +0000
[
@@ -0,0 +1,121 @@
+<tool id="rpbasicdesign" name="BasicDesign" version="0.3.4">
+    <description>Build DNA-BOT input files from rpSBML</description>
+    <requirements>
+        <requirement type="package" version="0.3.4">rpbasicdesign</requirement>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+        python -m rpbasicdesign.cli
+        --rpsbml_file '$rpsbml_file'
+        #if $adv.parts_files
+            #set files = '" "'.join([str($file) for $file in $adv.parts_files])
+            --parts_files "${files}"
+        #end if
+        --lms_id '$adv.lms_id'
+        --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
+        --o_dnabot_dir 'out/dnabot_in'
+        --o_sbol_dir 'out/sbol_export'
+    ]]></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="3" label="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" />
+        </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">
+            <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">
+            <discovered_dataset designation="BASIC_construct_A1" ftype="xml" file="BASIC_construct_A1.xml"/>
+            <discovered_dataset designation="BASIC_construct_B1" ftype="xml" file="BASIC_construct_B1.xml"/>
+            <discovered_dataset designation="BASIC_construct_C1" ftype="xml" file="BASIC_construct_C1.xml"/>
+        </output_collection>
+        </test>
+    </tests>
+    <help><![CDATA[
+rpbasicdesign
+================
+
+Convert rpSBML enzyme info in to BASIC construct. UniProt IDs corresponding
+enzyme variants are extracted rpSBMl files. Promoters and RBSs are randomly
+chosen from a default list. CDSs, in other words gene variants, of enzymes are
+randomly chosen from amongst the UniProt IDs extracted. Constructs generated
+can be stored as (i) a CSV file ready to be used by DNA-Bot, (ii) as SBOL
+files.
+
+Input
+-----
+
+Required:
+
+* **rpsbml_file**\ : (string) rpSBML file from which enzymes UniProt IDs will be collected.
+
+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]
+* **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.
+* **cds_permutation**\ : (boolean) Whether all combinations of CDS permutation should be built Default: true.
+
+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.
+
+Project Links
+------------------
+
+* `GitHub <https://github.com/brsynth/rpbasicdesign>`_
+
+License
+-------
+
+* `MIT <https://github.com/brsynth/rpbasicdesign/blob/master/LICENSE.txt>`_
+
+    ]]></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>
+    </citations>
+</tool>
\ No newline at end of file
b
diff -r 000000000000 -r e8e8050e9997 rpbasicdesign/test-data/BASIC_construct_A1.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rpbasicdesign/test-data/BASIC_construct_A1.xml Thu Nov 18 13:17:02 2021 +0000
b
b'@@ -0,0 +1,339 @@\n+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:sbol="http://sbols.org/v2#">\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/LMS/1">\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/LMS/1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMS"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000001"/>\n+    <sbol:displayId>LMS</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/BASIC_SEVA_37_CmR_p15A_1/1">\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000988"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1/1"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/BASIC_SEVA_37_CmR_p15A_1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/LMP/1">\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000001"/>\n+    <sbol:displayId>LMP</sbol:displayId>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/LMP/1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMP"/>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/PJ23119_BASIC/1">\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/PJ23119_BASIC"/>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:displayId>PJ23119_BASIC</sbol:displayId>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/PJ23119_BASIC/1"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000167"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U1_RBS1/1">\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/U1_RBS1/1"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n+    <sbol:displayId>U1_RBS1</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U1_RBS1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/P21684/1">\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000316"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/P21684"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/P21684/1"/>\n+    <sbol:displayId>P21684</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U2_RBS1/1">\n+    <sbol:displayId>U2_RBS1</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U2_RBS1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/U2_RBS1/1"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:C'..b'ion/BASIC_construct_A1/P21684_0/1"/>\n+        <sbol:displayId>constraint_4</sbol:displayId>\n+      </sbol:SequenceConstraint>\n+    </sbol:sequenceConstraint>\n+  </sbol:ComponentDefinition>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/LMS/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/LMS"/>\n+    <sbol:displayId>LMS</sbol:displayId>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1/1">\n+    <sbol:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1"/>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:elements></sbol:elements>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/LMP/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>LMP</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/LMP"/>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/PJ23119_BASIC/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/PJ23119_BASIC"/>\n+    <sbol:elements></sbol:elements>\n+    <sbol:displayId>PJ23119_BASIC</sbol:displayId>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U1_RBS1/1">\n+    <sbol:elements></sbol:elements>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:displayId>U1_RBS1</sbol:displayId>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U1_RBS1"/>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21684/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21684"/>\n+    <sbol:displayId>P21684</sbol:displayId>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U2_RBS1/1">\n+    <sbol:displayId>U2_RBS1</sbol:displayId>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:elements></sbol:elements>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U2_RBS1"/>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21683/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21683"/>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:displayId>P21683</sbol:displayId>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U3_RBS2/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U3_RBS2"/>\n+    <sbol:displayId>U3_RBS2</sbol:displayId>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21685/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21685"/>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>P21685</sbol:displayId>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+  </sbol:Sequence>\n+</rdf:RDF>\n'
b
diff -r 000000000000 -r e8e8050e9997 rpbasicdesign/test-data/BASIC_construct_B1.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rpbasicdesign/test-data/BASIC_construct_B1.xml Thu Nov 18 13:17:02 2021 +0000
b
b'@@ -0,0 +1,339 @@\n+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:sbol="http://sbols.org/v2#">\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/LMS/1">\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/LMS/1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMS"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000001"/>\n+    <sbol:displayId>LMS</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/BASIC_SEVA_37_CmR_p15A_1/1">\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000988"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1/1"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/BASIC_SEVA_37_CmR_p15A_1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/LMP/1">\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000001"/>\n+    <sbol:displayId>LMP</sbol:displayId>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/LMP/1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMP"/>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/PJ23101_BASIC/1">\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:displayId>PJ23101_BASIC</sbol:displayId>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000167"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/PJ23101_BASIC/1"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/PJ23101_BASIC"/>\n+    <sbol:version>1</sbol:version>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U1_RBS3/1">\n+    <sbol:displayId>U1_RBS3</sbol:displayId>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/U1_RBS3/1"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U1_RBS3"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/P21684/1">\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000316"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/P21684"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/P21684/1"/>\n+    <sbol:displayId>P21684</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U2_RBS1/1">\n+    <sbol:displayId>U2_RBS1</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U2_RBS1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/U2_RBS1/1"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:C'..b'tity rdf:resource="https://localhost/ComponentDefinition/BASIC_construct_B1/constraint_2"/>\n+      </sbol:SequenceConstraint>\n+    </sbol:sequenceConstraint>\n+  </sbol:ComponentDefinition>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/LMS/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/LMS"/>\n+    <sbol:displayId>LMS</sbol:displayId>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1/1">\n+    <sbol:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1"/>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:elements></sbol:elements>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/LMP/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>LMP</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/LMP"/>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/PJ23101_BASIC/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/PJ23101_BASIC"/>\n+    <sbol:displayId>PJ23101_BASIC</sbol:displayId>\n+    <sbol:elements></sbol:elements>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U1_RBS3/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U1_RBS3"/>\n+    <sbol:elements></sbol:elements>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>U1_RBS3</sbol:displayId>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21684/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21684"/>\n+    <sbol:displayId>P21684</sbol:displayId>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U2_RBS1/1">\n+    <sbol:displayId>U2_RBS1</sbol:displayId>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:elements></sbol:elements>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U2_RBS1"/>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21683/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21683"/>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:displayId>P21683</sbol:displayId>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U3_RBS2/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U3_RBS2"/>\n+    <sbol:displayId>U3_RBS2</sbol:displayId>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21685/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21685"/>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>P21685</sbol:displayId>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+  </sbol:Sequence>\n+</rdf:RDF>\n'
b
diff -r 000000000000 -r e8e8050e9997 rpbasicdesign/test-data/BASIC_construct_C1.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rpbasicdesign/test-data/BASIC_construct_C1.xml Thu Nov 18 13:17:02 2021 +0000
b
b'@@ -0,0 +1,339 @@\n+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:sbol="http://sbols.org/v2#">\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/LMS/1">\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/LMS/1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMS"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000001"/>\n+    <sbol:displayId>LMS</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/BASIC_SEVA_37_CmR_p15A_1/1">\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000988"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1/1"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/BASIC_SEVA_37_CmR_p15A_1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/LMP/1">\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000001"/>\n+    <sbol:displayId>LMP</sbol:displayId>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/LMP/1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMP"/>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/PJ23101_BASIC/1">\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:displayId>PJ23101_BASIC</sbol:displayId>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000167"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/PJ23101_BASIC/1"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/PJ23101_BASIC"/>\n+    <sbol:version>1</sbol:version>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U1_RBS1/1">\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/U1_RBS1/1"/>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n+    <sbol:displayId>U1_RBS1</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U1_RBS1"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/P21684/1">\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000316"/>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/P21684"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/P21684/1"/>\n+    <sbol:displayId>P21684</sbol:displayId>\n+  </sbol:ComponentDefinition>\n+  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U3_RBS2/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U3_RBS2"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:sequence rdf:resource="https://localhost/Sequence/U3_RBS2/1"/>\n+    <sbol:displayId>U3_RBS2</sbol:displayId>\n+    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n+    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n+  </sbol:ComponentDefinition>\n+  <sbol:C'..b'_BASIC_0"/>\n+        <sbol:displayId>PJ23101_BASIC_0</sbol:displayId>\n+        <sbol:version>1</sbol:version>\n+      </sbol:Component>\n+    </sbol:component>\n+  </sbol:ComponentDefinition>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/LMS/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/LMS"/>\n+    <sbol:displayId>LMS</sbol:displayId>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1/1">\n+    <sbol:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1"/>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:elements></sbol:elements>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/LMP/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>LMP</sbol:displayId>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/LMP"/>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/PJ23101_BASIC/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/PJ23101_BASIC"/>\n+    <sbol:displayId>PJ23101_BASIC</sbol:displayId>\n+    <sbol:elements></sbol:elements>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U1_RBS1/1">\n+    <sbol:elements></sbol:elements>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:displayId>U1_RBS1</sbol:displayId>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U1_RBS1"/>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21684/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21684"/>\n+    <sbol:displayId>P21684</sbol:displayId>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U3_RBS2/1">\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U3_RBS2"/>\n+    <sbol:displayId>U3_RBS2</sbol:displayId>\n+    <sbol:elements></sbol:elements>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21685/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21685"/>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+    <sbol:displayId>P21685</sbol:displayId>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/U2_RBS2/1">\n+    <sbol:displayId>U2_RBS2</sbol:displayId>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:version>1</sbol:version>\n+    <sbol:elements></sbol:elements>\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U2_RBS2"/>\n+  </sbol:Sequence>\n+  <sbol:Sequence rdf:about="https://localhost/Sequence/P21683/1">\n+    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P21683"/>\n+    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n+    <sbol:displayId>P21683</sbol:displayId>\n+    <sbol:elements>atgc</sbol:elements>\n+    <sbol:version>1</sbol:version>\n+  </sbol:Sequence>\n+</rdf:RDF>\n'
b
diff -r 000000000000 -r e8e8050e9997 rpbasicdesign/test-data/biolegio_plate.csv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rpbasicdesign/test-data/biolegio_plate.csv Thu Nov 18 13:17:02 2021 +0000
b
@@ -0,0 +1,83 @@
+Part/linker,Well,Part concentration (ng/uL)
+L1-S,A1,
+L1-P,B1,
+L2-S,A2,
+L2-P,B2,
+L3-S,A3,
+L3-P,B3,
+L4-S,A4,
+L4-P,B4,
+L5-S,A5,
+L5-P,B5,
+L6-S,A6,
+L6-P,B6,
+LMP-S,A7,
+LMP-P,B7,
+LMS-S,A8,
+LMS-P,B8,
+U1-S,C1,
+U2-S,C2,
+U3-S,C3,
+U1-RBS1-P,C4,
+U1-RBS2-P,C5,
+U1-RBS3-P,C6,
+U1-A01-P,D1,
+U1-A02-P,D2,
+U1-A03-P,D3,
+U1-A04-P,D4,
+U1-A05-P,D5,
+U1-A06-P,D6,
+U1-A07-P,D7,
+U1-A08-P,D8,
+U1-A09-P,D9,
+U1-A10-P,D10,
+U1-A11-P,D11
+U1-A12-P,D12,
+U2-RBS1-P,C7,
+U2-RBS2-P,C8,
+U2-RBS3-P,C9,
+U2-A01-P,E1,
+U2-A02-P,E2,
+U2-A03-P,E3,
+U2-A04-P,E4,
+U2-A05-P,E5,
+U2-A06-P,E6,
+U2-A07-P,E7,
+U2-A08-P,E8,
+U2-A09-P,E9,
+U2-A10-P,E10,
+U2-A11-P,E11
+U2-A12-P,E12,
+U3-RBS1-P,C10,
+U3-RBS2-P,C11,
+U3-RBS3-P,C12,
+U3-A01-P,F1,
+U3-A02-P,F2,
+U3-A03-P,F3,
+U3-A04-P,F4,
+U3-A05-P,F5,
+U3-A06-P,F6,
+U3-A07-P,F7,
+U3-A08-P,F8,
+U3-A09-P,F9,
+U3-A10-P,F10,
+U3-A11-P,F11
+U3-A12-P,F12,
+U1-AM12-P,A10,
+U1-AM24-P,B10,
+U2-AM12-P,A11,
+U2-AM24-P,B11,
+U3-AM12-P,A12,
+U3-AM24-P,B12,
+LF1-S,A9,
+LF1-P,B9,
+LF2-S,G1,
+LF2-P,H1,
+LF3-S,G2,
+LF3-P,H2,
+LF4-S,G3,
+LF4-P,H3,
+LF5-S,G4,
+LF5-P,H4,
+LF6-S,G5,
+LF6-P,H5,
\ No newline at end of file
b
diff -r 000000000000 -r e8e8050e9997 rpbasicdesign/test-data/constructs.csv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rpbasicdesign/test-data/constructs.csv Thu Nov 18 13:17:02 2021 +0000
b
@@ -0,0 +1,4 @@
+Well,Linker 1,Part 1,Linker 2,Part 2,Linker 3,Part 3,Linker 4,Part 4,Linker 5,Part 5,Linker 6,Part 6,Linker 7,Part 7,Linker 8,Part 8,Linker 9,Part 9,Linker 10,Part 10
+A1,LMS,BASIC_SEVA_37_CmR-p15A.1,LMP,PJ23119_BASIC,U1-RBS1,P21684,U2-RBS1,P21683,U3-RBS2,P21685,,,,,,,,,,
+B1,LMS,BASIC_SEVA_37_CmR-p15A.1,LMP,PJ23101_BASIC,U1-RBS3,P21684,U2-RBS1,P21683,U3-RBS2,P21685,,,,,,,,,,
+C1,LMS,BASIC_SEVA_37_CmR-p15A.1,LMP,PJ23101_BASIC,U1-RBS1,P21684,U3-RBS2,P21685,U2-RBS2,P21683,,,,,,,,,,
b
diff -r 000000000000 -r e8e8050e9997 rpbasicdesign/test-data/lycopene_CrtEBI_from_selenzy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rpbasicdesign/test-data/lycopene_CrtEBI_from_selenzy.xml Thu Nov 18 13:17:02 2021 +0000
[
b'@@ -0,0 +1,393 @@\n+<?xml version="1.0" encoding="UTF-8"?>\n+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:groups="http://www.sbml.org/sbml/level3/version1/groups/version1" xmlns:fbc="http://www.sbml.org/sbml/level3/version1/fbc/version2" level="3" version="1" groups:required="false" fbc:required="false">\n+  <model metaid="a03e1bf0f20b54a66f7b4ce262ea6b0f7579c0a1e47144a649b9e2e711f6b3ed" id="RP_model_001_0001" name="001_0001" substanceUnits="mole" timeUnits="second" extentUnits="mole" fbc:strict="true">\n+    <listOfCompartments>\n+      <compartment metaid="_2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6" sboTerm="SBO:0000290" id="c" name="cytosol" size="1" constant="true">\n+        <annotation>\n+          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">\n+            <rdf:Description rdf:about="#_2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6">\n+              <bqbiol:is>\n+                <rdf:Bag>\n+                  <rdf:li rdf:resource="http://identifiers.org/bigg.compartment/c"/>\n+                  <rdf:li rdf:resource="http://identifiers.org/bigg.compartment/c_c"/>\n+                  <rdf:li rdf:resource="http://identifiers.org/metanetx.compartment/MNXC3"/>\n+                  <rdf:li rdf:resource="http://identifiers.org/seed/c"/>\n+                  <rdf:li rdf:resource="http://identifiers.org/seed/c0"/>\n+                  <rdf:li rdf:resource="http://identifiers.org/seed/cytosol"/>\n+                  <rdf:li rdf:resource="http://identifiers.org/name/cytosol"/>\n+                </rdf:Bag>\n+              </bqbiol:is>\n+            </rdf:Description>\n+          </rdf:RDF>\n+        </annotation>\n+      </compartment>\n+    </listOfCompartments>\n+    <listOfSpecies>\n+      <species metaid="b0098569a07f786a6e9b2294639668cd4ee564dd642a38bdf429c4c6bb560b46" id="CMPD_0000000001" name="CMPD_0000000001" compartment="c" initialConcentration="1" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">\n+        <annotation>\n+          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">\n+            <rdf:Description rdf:about="#b0098569a07f786a6e9b2294639668cd4ee564dd642a38bdf429c4c6bb560b46">\n+              <bqbiol:is>\n+                <rdf:Bag/>\n+              </bqbiol:is>\n+            </rdf:Description>\n+            <rdf:BRSynth rdf:about="#b0098569a07f786a6e9b2294639668cd4ee564dd642a38bdf429c4c6bb560b46">\n+              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu">\n+                <brsynth:smiles value="[H]C(=C([H])C([H])=C(C([H])([H])[H])C([H])([H])C([H])([H])C([H])=C(C([H])([H])[H])C([H])([H])C([H])([H])C([H])=C(C([H])([H])[H])C([H])([H])C([H])([H])C([H])=C(C([H])([H])[H])C([H])([H])[H])C([H])=C(C([H])([H])[H])C([H])([H])C([H])([H])C([H])=C(C([H])([H])[H])C([H])([H])C([H])([H])C([H])=C(C([H])([H])[H])C([H])([H])C([H])([H])C([H])=C(C([H])([H])[H])C([H])([H])[H]"/>\n+                <brsynth:inchi value="InChI=1S/C40H64/c1-33(2)19-13-23-37(7)27-17-31-39(9)29-15-25-35(5)21-11-12-22-36(6)26-16-30-40(10)32-18-28-38(8)24-14-20-34(3)4/h11-12,19-22,27-30H,13-18,23-26,31-32H2,1-10H3"/>\n+                <brsynth:inchikey value="YVLPJIGOMTXXLP-UHFFFAOYSA-N"/>\n+              </brsynth:brsynth>\n+            </rdf:BRSynth>\n+          </rdf:RDF>\n+        </annotation>\n+      </species>\n+      <species metaid="_212c5940beac5625a2636d3d14fbc63cc5a8107d9dd39020ac544f296debabcc" id="MNXM132" name="MNXM132" compartment="c" initialConcentration="1" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">\n+        <annotation>\n+          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">\n+            <rdf:Description rdf:about="#_212c5940beac5625a2636d3d14fbc63cc5a8107d9dd39020ac544f296debabcc">\n+              <bqbiol:is>\n+                <rdf:Bag/>\n+   '..b':rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">\n+            <rdf:BRSynth rdf:about="#_93eef40c447d295fa61df9270c5fd909ec2ba7ee9883090552c0466873cd4299">\n+              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu">\n+                <brsynth:global_score value="-1"/>\n+              </brsynth:brsynth>\n+            </rdf:BRSynth>\n+          </rdf:RDF>\n+        </annotation>\n+        <groups:listOfMembers>\n+          <groups:member groups:idRef="rxn_1"/>\n+          <groups:member groups:idRef="rxn_2"/>\n+          <groups:member groups:idRef="rxn_3"/>\n+        </groups:listOfMembers>\n+      </groups:group>\n+      <groups:group metaid="_613b064337553014ede418c67180137a4561ff11b13f3bfa1a2765ef37ac375a" groups:id="rp_intermediate_species" groups:kind="collection">\n+        <annotation>\n+          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">\n+            <rdf:BRSynth rdf:about="#_613b064337553014ede418c67180137a4561ff11b13f3bfa1a2765ef37ac375a">\n+              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu"/>\n+            </rdf:BRSynth>\n+          </rdf:RDF>\n+        </annotation>\n+        <groups:listOfMembers>\n+          <groups:member groups:idRef="CMPD_0000000003"/>\n+          <groups:member groups:idRef="CMPD_0000000001"/>\n+        </groups:listOfMembers>\n+      </groups:group>\n+      <groups:group metaid="_564fce39b23c6cf87d12dc2c612448384fd2cd980fe3fc07829e2ef802645579" groups:id="rp_trunk_species" groups:kind="collection">\n+        <annotation>\n+          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">\n+            <rdf:BRSynth rdf:about="#_564fce39b23c6cf87d12dc2c612448384fd2cd980fe3fc07829e2ef802645579">\n+              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu"/>\n+            </rdf:BRSynth>\n+          </rdf:RDF>\n+        </annotation>\n+        <groups:listOfMembers>\n+          <groups:member groups:idRef="CMPD_0000000001"/>\n+          <groups:member groups:idRef="MNXM132"/>\n+          <groups:member groups:idRef="CMPD_0000000003"/>\n+          <groups:member groups:idRef="TARGET_0000000001"/>\n+          <groups:member groups:idRef="MNXM83"/>\n+        </groups:listOfMembers>\n+      </groups:group>\n+      <groups:group metaid="_9e3154173c97366b3980dd1642e1e35d0bdfc3274abc744e89ecb518bcd48378" groups:id="rp_completed_species" groups:kind="collection">\n+        <annotation>\n+          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">\n+            <rdf:BRSynth rdf:about="#_9e3154173c97366b3980dd1642e1e35d0bdfc3274abc744e89ecb518bcd48378">\n+              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu"/>\n+            </rdf:BRSynth>\n+          </rdf:RDF>\n+        </annotation>\n+        <groups:listOfMembers>\n+          <groups:member groups:idRef="MNXM8975"/>\n+          <groups:member groups:idRef="MNXM24"/>\n+          <groups:member groups:idRef="MNXM11"/>\n+        </groups:listOfMembers>\n+      </groups:group>\n+      <groups:group metaid="_58b3b59284e0d918d6d3f3bcadc2d757726da7594cd899cad4e745836ac967a3" groups:id="rp_sink_species" groups:kind="collection">\n+        <annotation>\n+          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">\n+            <rdf:BRSynth rdf:about="#_58b3b59284e0d918d6d3f3bcadc2d757726da7594cd899cad4e745836ac967a3">\n+              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu"/>\n+            </rdf:BRSynth>\n+          </rdf:RDF>\n+        </annotation>\n+        <groups:listOfMembers>\n+          <groups:member groups:idRef="MNXM83"/>\n+          <groups:member groups:idRef="MNXM132"/>\n+          <groups:member groups:idRef="MNXM11"/>\n+        </groups:listOfMembers>\n+      </groups:group>\n+    </groups:listOfGroups>\n+  </model>\n+</sbml>\n'
b
diff -r 000000000000 -r e8e8050e9997 rpbasicdesign/test-data/user_parts_plate.csv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rpbasicdesign/test-data/user_parts_plate.csv Thu Nov 18 13:17:02 2021 +0000
b
@@ -0,0 +1,7 @@
+Part/linker,Well,Part concentration (ng/uL)
+BASIC_SEVA_37_CmR-p15A.1,A1,
+P21683,B1,
+P21684,C1,
+P21685,D1,
+PJ23101_BASIC,E1,
+PJ23119_BASIC,F1,