Repository 'rpbasicdesign'
hg clone https://eddie.galaxyproject.org/repos/tduigou/rpbasicdesign

Changeset 1:a9e9eb8a392c (2021-11-15)
Previous changeset 0:37185c8a8f46 (2021-10-12) Next changeset 2:a38e9f95d155 (2021-12-15)
Commit message:
Uploaded
modified:
rpbasicdesign/rpbasicdesign.xml
rpbasicdesign/test-data/BASIC_construct_A1.xml
rpbasicdesign/test-data/constructs.csv
rpbasicdesign/test-data/user_parts_plate.csv
added:
rpbasicdesign/test-data/BASIC_construct_B1.xml
rpbasicdesign/test-data/BASIC_construct_C1.xml
rpbasicdesign/test-data/lycopene_CrtEBI_from_selenzy.xml
removed:
rpbasicdesign/test-data/BASIC_construct_A2.xml
rpbasicdesign/test-data/BASIC_construct_A3.xml
rpbasicdesign/test-data/muconate_example.xml
b
diff -r 37185c8a8f46 -r a9e9eb8a392c rpbasicdesign/rpbasicdesign.xml
--- a/rpbasicdesign/rpbasicdesign.xml Tue Oct 12 15:24:00 2021 +0000
+++ b/rpbasicdesign/rpbasicdesign.xml Mon Nov 15 13:20:34 2021 +0000
[
@@ -1,7 +1,7 @@
-<tool id="rpbasicdesign" name="BasicDesign" version="0.3.1">
+<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.1">rpbasicdesign</requirement>
+        <requirement type="package" version="0.3.4">rpbasicdesign</requirement>
     </requirements>
     <command detect_errors="exit_code"><![CDATA[
         python -m rpbasicdesign.cli
@@ -34,73 +34,70 @@
         </section>
     </inputs>
     <outputs>
-        <data name="Constructs" format="csv" from_work_dir="out/dnabot_in/constructs.csv" label="${tool.name}: constructs" />
-        <data name="User parts plate" format="csv" from_work_dir="out/dnabot_in/user_parts_plate.csv" label="${tool.name}: User parts plate"/>
-        <data name="Biolegio plate" format="csv" from_work_dir="out/dnabot_in/biolegio_plate.csv" label="${tool.name}: Biolegio plate"/>
-        <collection name="sbol_dir" type="list" label="${tool.name}: SBOL constructs">
+        <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="muconate_example.xml" />
+        <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_A2" ftype="xml" file="BASIC_construct_A2.xml"/>
-            <discovered_dataset designation="BASIC_construct_A3" ftype="xml" file="BASIC_construct_A3.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[
-        usage: python -m rpbasicdesign.cli [-h] --rpsbml_file RPSBML_FILE
-
-                             [--parts_files PARTS_FILES [PARTS_FILES ...]]
-
-                             [--lms_id LMS_ID]
-                             [--lmp_id LMP_ID] [--backbone_id BACKBONE_ID]
-                             [--sample_size SAMPLE_SIZE]
-                             [--cds_permutation CDS_PERMUTATION]
-                             [--o_dnabot_dir O_DNABOT_DIR]
-                             [--o_sbol_dir O_SBOL_DIR]
+rpbasicdesign
+================
 
 Convert rpSBML enzyme info in to BASIC construct. UniProt IDs corresponding
-enzyme variants are extracted from 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.
+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.
 
-optional arguments:
-  -h, --help            show this help message and exit
-  --rpsbml_file RPSBML_FILE
-                        rpSBML file from which enzymes UniProt IDs will be
-                        collected
+Input
+-----
 
-  --parts_files PARTS_FILES [PARTS_FILES ...]
-                        List of files providing available linkers and user
-                        parts (backbone, promoters, ...) for constructs.
+Required:
+
+* **rpsbml_file**\ : (string) rpSBML file from which enzymes UniProt IDs will be collected.
+
+Advanced options:
 
-  --lms_id LMS_ID       part ID to be used as the LMS methylated linker
-  --lmp_id LMP_ID       part ID to be used as the LMP methylated linker
-  --backbone_id BACKBONE_ID
-                        part ID to be used as the backbone
-  --sample_size SAMPLE_SIZE
-                        Number of construct to generate.
-  --cds_permutation CDS_PERMUTATION
-                        Whether all combinations of CDS permutation should be built Default: true
-  --o_dnabot_dir O_DNABOT_DIR
-                        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 O_SBOL_DIR
-                        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
+* **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>
b
diff -r 37185c8a8f46 -r a9e9eb8a392c rpbasicdesign/test-data/BASIC_construct_A1.xml
--- a/rpbasicdesign/test-data/BASIC_construct_A1.xml Tue Oct 12 15:24:00 2021 +0000
+++ b/rpbasicdesign/test-data/BASIC_construct_A1.xml Mon Nov 15 13:20:34 2021 +0000
b
b'@@ -1,339 +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:version>1</sbol:version>\n     <sbol:displayId>LMS</sbol:displayId>\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/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:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\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:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1/1"/>\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:sequence rdf:resource="https://localhost/Sequence/LMP/1"/>\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:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMP"/>\n-    <sbol:displayId>LMP</sbol:displayId>\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:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:version>1</sbol:version>\n-    <sbol:displayId>PJ23119_BASIC</sbol:displayId>\n   </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U3_RBS3/1">\n-    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U3_RBS3"/>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/U3_RBS3/1"/>\n-    <sbol:version>1</sbol:version>\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>U3_RBS3</sbol:displayId>\n-  </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/P31019/1">\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:00'..b'uence rdf:about="https://localhost/Sequence/U3_RBS3/1">\n-    <sbol:displayId>U3_RBS3</sbol:displayId>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U3_RBS3"/>\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/P31019/1">\n-    <sbol:version>1</sbol:version>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P31019"/>\n-    <sbol:elements>atgc</sbol:elements>\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:displayId>P31019</sbol:displayId>\n-  </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/U2_RBS3/1">\n-    <sbol:displayId>U2_RBS3</sbol:displayId>\n-    <sbol:version>1</sbol:version>\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:persistentIdentity rdf:resource="https://localhost/Sequence/U2_RBS3"/>\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/Q84BZ3/1">\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:displayId>Q84BZ3</sbol:displayId>\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:persistentIdentity rdf:resource="https://localhost/Sequence/Q84BZ3"/>\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/U1_RBS2/1">\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:persistentIdentity rdf:resource="https://localhost/Sequence/U1_RBS2"/>\n-    <sbol:displayId>U1_RBS2</sbol:displayId>\n   </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/Q8FB35/1">\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:persistentIdentity rdf:resource="https://localhost/Sequence/Q8FB35"/>\n-    <sbol:elements>atgc</sbol:elements>\n-    <sbol:displayId>Q8FB35</sbol:displayId>\n   </sbol:Sequence>\n </rdf:RDF>\n'
b
diff -r 37185c8a8f46 -r a9e9eb8a392c rpbasicdesign/test-data/BASIC_construct_A2.xml
--- a/rpbasicdesign/test-data/BASIC_construct_A2.xml Tue Oct 12 15:24:00 2021 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,339 +0,0 @@\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:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMS"/>\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000001"/>\n-    <sbol:version>1</sbol:version>\n-    <sbol:displayId>LMS</sbol:displayId>\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/BASIC_SEVA_37_CmR_p15A_1/1">\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000988"/>\n-    <sbol:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/BASIC_SEVA_37_CmR_p15A_1"/>\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/BASIC_SEVA_37_CmR_p15A_1/1"/>\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:version>1</sbol:version>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/LMP/1"/>\n-    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMP"/>\n-    <sbol:displayId>LMP</sbol:displayId>\n-  </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/PJ23101_BASIC/1">\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/PJ23101_BASIC"/>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/PJ23101_BASIC/1"/>\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000167"/>\n-    <sbol:displayId>PJ23101_BASIC</sbol:displayId>\n-    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:version>1</sbol:version>\n-  </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U2_RBS1/1">\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n-    <sbol:version>1</sbol:version>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/U2_RBS1/1"/>\n-    <sbol:displayId>U2_RBS1</sbol:displayId>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U2_RBS1"/>\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/O85674/1">\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/O85674"/>\n-    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:displayId>O85674</sbol:displayId>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/O85674/1"/>\n-    <sbol:version>1</sbol:version>\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000316"/>\n-  </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U3_RBS2/1">\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n-    <sbol:displayId>U3_RBS2</sbol:displayId>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/U3_RBS2/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/U3_RBS2"/>\n-  </sbol:ComponentDefinition>\n-  <sbol:C'..b'tity rdf:resource="https://localhost/ComponentDefinition/BASIC_construct_A2/constraint_5"/>\n-      </sbol:SequenceConstraint>\n-    </sbol:sequenceConstraint>\n-  </sbol:ComponentDefinition>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/LMS/1">\n-    <sbol:displayId>LMS</sbol:displayId>\n-    <sbol:version>1</sbol:version>\n-    <sbol:elements></sbol:elements>\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/LMS"/>\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: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:persistentIdentity rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1"/>\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:persistentIdentity rdf:resource="https://localhost/Sequence/LMP"/>\n-    <sbol:displayId>LMP</sbol:displayId>\n-    <sbol:elements></sbol:elements>\n-  </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/PJ23101_BASIC/1">\n-    <sbol:displayId>PJ23101_BASIC</sbol:displayId>\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/PJ23101_BASIC"/>\n-    <sbol:elements></sbol:elements>\n-    <sbol:version>1</sbol:version>\n-  </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/U2_RBS1/1">\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U2_RBS1"/>\n-    <sbol:version>1</sbol:version>\n-    <sbol:displayId>U2_RBS1</sbol:displayId>\n-    <sbol:elements></sbol:elements>\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/O85674/1">\n-    <sbol:elements>atgc</sbol:elements>\n-    <sbol:version>1</sbol:version>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/O85674"/>\n-    <sbol:displayId>O85674</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/U3_RBS2/1">\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:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-  </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/Q43984/1">\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/Q43984"/>\n-    <sbol:elements>atgc</sbol:elements>\n-    <sbol:displayId>Q43984</sbol:displayId>\n-    <sbol:version>1</sbol:version>\n-  </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/U1_RBS3/1">\n-    <sbol:version>1</sbol:version>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U1_RBS3"/>\n-    <sbol:elements></sbol:elements>\n-    <sbol:displayId>U1_RBS3</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/Q3KIF2/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/Q3KIF2"/>\n-    <sbol:displayId>Q3KIF2</sbol:displayId>\n-    <sbol:elements>atgc</sbol:elements>\n-  </sbol:Sequence>\n-</rdf:RDF>\n'
b
diff -r 37185c8a8f46 -r a9e9eb8a392c rpbasicdesign/test-data/BASIC_construct_A3.xml
--- a/rpbasicdesign/test-data/BASIC_construct_A3.xml Tue Oct 12 15:24:00 2021 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,339 +0,0 @@\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:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMS"/>\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000001"/>\n-    <sbol:version>1</sbol:version>\n-    <sbol:displayId>LMS</sbol:displayId>\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/BASIC_SEVA_37_CmR_p15A_1/1">\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000988"/>\n-    <sbol:displayId>BASIC_SEVA_37_CmR_p15A_1</sbol:displayId>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/BASIC_SEVA_37_CmR_p15A_1"/>\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/BASIC_SEVA_37_CmR_p15A_1/1"/>\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:version>1</sbol:version>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/LMP/1"/>\n-    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/LMP"/>\n-    <sbol:displayId>LMP</sbol:displayId>\n-  </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/PJ23101_BASIC/1">\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/PJ23101_BASIC"/>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/PJ23101_BASIC/1"/>\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000167"/>\n-    <sbol:displayId>PJ23101_BASIC</sbol:displayId>\n-    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:version>1</sbol:version>\n-  </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U3_RBS3/1">\n-    <sbol:type rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U3_RBS3"/>\n-    <sbol:sequence rdf:resource="https://localhost/Sequence/U3_RBS3/1"/>\n-    <sbol:version>1</sbol:version>\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000139"/>\n-    <sbol:displayId>U3_RBS3</sbol:displayId>\n-  </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/P95607/1">\n-    <sbol:displayId>P95607</sbol:displayId>\n-    <sbol:role rdf:resource="http://identifiers.org/so/SO:0000316"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/P95607"/>\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/P95607/1"/>\n-  </sbol:ComponentDefinition>\n-  <sbol:ComponentDefinition rdf:about="https://localhost/ComponentDefinition/U2_RBS2/1">\n-    <sbol:version>1</sbol:version>\n-    <sbol:displayId>U2_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:sequence rdf:resource="https://localhost/Sequence/U2_RBS2/1"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/U2_RBS2"/>\n-  </sbol:ComponentDefinition>\n-  <sbol:C'..b'www.biopax.org/release/biopax-level3.owl#DnaRegion"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/ComponentDefinition/BASIC_construct_A3"/>\n-  </sbol:ComponentDefinition>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/LMS/1">\n-    <sbol:displayId>LMS</sbol:displayId>\n-    <sbol:version>1</sbol:version>\n-    <sbol:elements></sbol:elements>\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/LMS"/>\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: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:persistentIdentity rdf:resource="https://localhost/Sequence/BASIC_SEVA_37_CmR_p15A_1"/>\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:persistentIdentity rdf:resource="https://localhost/Sequence/LMP"/>\n-    <sbol:displayId>LMP</sbol:displayId>\n-    <sbol:elements></sbol:elements>\n-  </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/PJ23101_BASIC/1">\n-    <sbol:displayId>PJ23101_BASIC</sbol:displayId>\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/PJ23101_BASIC"/>\n-    <sbol:elements></sbol:elements>\n-    <sbol:version>1</sbol:version>\n-  </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/U3_RBS3/1">\n-    <sbol:displayId>U3_RBS3</sbol:displayId>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U3_RBS3"/>\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:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/P95607/1">\n-    <sbol:version>1</sbol:version>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P95607"/>\n-    <sbol:displayId>P95607</sbol:displayId>\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:elements>atgc</sbol:elements>\n-  </sbol:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/U2_RBS2/1">\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U2_RBS2"/>\n-    <sbol:version>1</sbol:version>\n-    <sbol:displayId>U2_RBS2</sbol:displayId>\n-    <sbol:elements></sbol:elements>\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/P23262/1">\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/P23262"/>\n-    <sbol:displayId>P23262</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/U1_RBS1/1">\n-    <sbol:displayId>U1_RBS1</sbol:displayId>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/U1_RBS1"/>\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:Sequence>\n-  <sbol:Sequence rdf:about="https://localhost/Sequence/Q5QUP2/1">\n-    <sbol:version>1</sbol:version>\n-    <sbol:displayId>Q5QUP2</sbol:displayId>\n-    <sbol:encoding rdf:resource="http://www.chem.qmul.ac.uk/iubmb/misc/naseq.html"/>\n-    <sbol:persistentIdentity rdf:resource="https://localhost/Sequence/Q5QUP2"/>\n-    <sbol:elements>atgc</sbol:elements>\n-  </sbol:Sequence>\n-</rdf:RDF>\n'
b
diff -r 37185c8a8f46 -r a9e9eb8a392c 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 Mon Nov 15 13:20:34 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 37185c8a8f46 -r a9e9eb8a392c 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 Mon Nov 15 13:20:34 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 37185c8a8f46 -r a9e9eb8a392c rpbasicdesign/test-data/constructs.csv
--- a/rpbasicdesign/test-data/constructs.csv Tue Oct 12 15:24:00 2021 +0000
+++ b/rpbasicdesign/test-data/constructs.csv Mon Nov 15 13:20:34 2021 +0000
b
@@ -1,4 +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,U3-RBS3,P31019,U2-RBS3,Q84BZ3,U1-RBS2,Q8FB35,,,,,,,,,,
-A2,LMS,BASIC_SEVA_37_CmR-p15A.1,LMP,PJ23101_BASIC,U2-RBS1,O85674,U3-RBS2,Q43984,U1-RBS3,Q3KIF2,,,,,,,,,,
-A3,LMS,BASIC_SEVA_37_CmR-p15A.1,LMP,PJ23101_BASIC,U3-RBS3,P95607,U2-RBS2,P23262,U1-RBS1,Q5QUP2,,,,,,,,,,
+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 37185c8a8f46 -r a9e9eb8a392c 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 Mon Nov 15 13:20:34 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 37185c8a8f46 -r a9e9eb8a392c rpbasicdesign/test-data/muconate_example.xml
--- a/rpbasicdesign/test-data/muconate_example.xml Tue Oct 12 15:24:00 2021 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,762 +0,0 @@\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="_18c8363b353eb1a7e07d55a06341eb4d95a6b814d979179b3ce92dbf96f781d1" id="RP_model_10_1" name="RetroPath_Pathway_10_1" substanceUnits="mole" timeUnits="second" extentUnits="mole" fbc:strict="true">\n-    <listOfUnitDefinitions>\n-      <unitDefinition metaid="_226864b81a892b72349b14689476616d515915efae9ce2fdae39d3e2d35080b7" id="mmol_per_gDW_per_hr">\n-        <listOfUnits>\n-          <unit kind="mole" exponent="1" scale="-3" multiplier="1"/>\n-          <unit kind="gram" exponent="1" scale="0" multiplier="1"/>\n-          <unit kind="second" exponent="1" scale="0" multiplier="3600"/>\n-        </listOfUnits>\n-      </unitDefinition>\n-      <unitDefinition metaid="_51acbb7fb816c66b4d28658c5a27b3f2f82eb1a3128d2be53ea26ba2512c7988" id="kj_per_mol">\n-        <listOfUnits>\n-          <unit kind="joule" exponent="1" scale="3" multiplier="1"/>\n-          <unit kind="mole" exponent="-1" scale="1" multiplier="1"/>\n-        </listOfUnits>\n-      </unitDefinition>\n-    </listOfUnitDefinitions>\n-    <listOfCompartments>\n-      <compartment metaid="_0c32e77f2fb959353e7468bcfd34f77e3ccdf372ee7cbfb421adaa62487323c0" sboTerm="SBO:0000290" id="MNXC3" 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="#_0c32e77f2fb959353e7468bcfd34f77e3ccdf372ee7cbfb421adaa62487323c0">\n-              <bqbiol:is>\n-                <rdf:Bag>\n-                  <rdf:li rdf:resource="http://identifiers.org/name/cytosol"/>\n-                  <rdf:li rdf:resource="http://identifiers.org/seed/cytosol"/>\n-                  <rdf:li rdf:resource="http://identifiers.org/seed/c0"/>\n-                  <rdf:li rdf:resource="http://identifiers.org/seed/c"/>\n-                  <rdf:li rdf:resource="http://identifiers.org/metanetx.compartment/MNXC3"/>\n-                  <rdf:li rdf:resource="http://identifiers.org/bigg.compartment/c_c"/>\n-                  <rdf:li rdf:resource="http://identifiers.org/bigg.compartment/c"/>\n-                </rdf:Bag>\n-              </bqbiol:is>\n-            </rdf:Description>\n-          </rdf:RDF>\n-        </annotation>\n-      </compartment>\n-    </listOfCompartments>\n-    <listOfSpecies>\n-      <species metaid="_7eabbfed5f4f0a7a6fcb6d4590d6ea021f0bee237a58f70a612c8d09a8605b26" id="CMPD_0000000007__64__MNXC3" name="CMPD_0000000007" compartment="MNXC3" 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="#_7eabbfed5f4f0a7a6fcb6d4590d6ea021f0bee237a58f70a612c8d09a8605b26">\n-              <bqbiol:is>\n-                <rdf:Bag/>\n-              </bqbiol:is>\n-            </rdf:Description>\n-            <rdf:BRSynth rdf:about="#_7eabbfed5f4f0a7a6fcb6d4590d6ea021f0bee237a58f70a612c8d09a8605b26">\n-              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu"/>\n-            </rdf:BRSynth>\n-          </rdf:RDF>\n-        </annotation>\n-      </species>\n-      <species metaid="_2c27bb432be6149f648dcec0e702fd9bdf6449fb9f730bd86eeb0b63b93d8858" id="CMPD_0000000003__64__MNXC3" name="CMPD_0000000003" compartment="MNXC3" 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="#'..b'       <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="MNXM337__64__MNXC3"/>\n-          <groups:member groups:idRef="MNXM4__64__MNXC3"/>\n-          <groups:member groups:idRef="MNXM10__64__MNXC3"/>\n-        </groups:listOfMembers>\n-      </groups:group>\n-      <groups:group metaid="a0632962b19a6626a8e5b8b0699565bc2b66d7a8198f2028eccf4fd75d766e04" groups:id="ignored_species_for_FBA" 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="#a0632962b19a6626a8e5b8b0699565bc2b66d7a8198f2028eccf4fd75d766e04">\n-              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu"/>\n-            </rdf:BRSynth>\n-          </rdf:RDF>\n-        </annotation>\n-      </groups:group>\n-    </groups:listOfGroups>\n-    <fbc:listOfObjectives fbc:activeObjective="obj_fraction">\n-      <fbc:objective fbc:id="obj_biomass" fbc:type="maximize">\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="#">\n-              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu">\n-                <brsynth:flux_value units="mmol_per_gDW_per_hr" value="0.7638744755010283"/>\n-              </brsynth:brsynth>\n-            </rdf:BRSynth>\n-          </rdf:RDF>\n-        </annotation>\n-        <fbc:listOfFluxObjectives>\n-          <fbc:fluxObjective fbc:reaction="biomass" fbc:coefficient="1">\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="#">\n-                  <brsynth:brsynth xmlns:brsynth="http://brsynth.eu">\n-                    <brsynth:flux_value units="mmol_per_gDW_per_hr" value="0.7638744755010283"/>\n-                  </brsynth:brsynth>\n-                </rdf:BRSynth>\n-              </rdf:RDF>\n-            </annotation>\n-          </fbc:fluxObjective>\n-        </fbc:listOfFluxObjectives>\n-      </fbc:objective>\n-      <fbc:objective fbc:id="obj_fraction" fbc:type="maximize">\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="#">\n-              <brsynth:brsynth xmlns:brsynth="http://brsynth.eu">\n-                <brsynth:flux_value units="mmol_per_gDW_per_hr" value="1.3739918359668453"/>\n-              </brsynth:brsynth>\n-            </rdf:BRSynth>\n-          </rdf:RDF>\n-        </annotation>\n-        <fbc:listOfFluxObjectives>\n-          <fbc:fluxObjective metaid="_079444b36c016c3df7c493b212a17c85744da6f580d18d9405e9a78475b3b909" fbc:reaction="rxn_target" fbc:coefficient="1">\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="#_079444b36c016c3df7c493b212a17c85744da6f580d18d9405e9a78475b3b909">\n-                  <brsynth:brsynth xmlns:brsynth="http://brsynth.eu">\n-                    <brsynth:flux_value units="mmol_per_gDW_per_hr" value="1.3739918359668453"/>\n-                  </brsynth:brsynth>\n-                </rdf:BRSynth>\n-              </rdf:RDF>\n-            </annotation>\n-          </fbc:fluxObjective>\n-        </fbc:listOfFluxObjectives>\n-      </fbc:objective>\n-    </fbc:listOfObjectives>\n-  </model>\n-</sbml>\n'
b
diff -r 37185c8a8f46 -r a9e9eb8a392c rpbasicdesign/test-data/user_parts_plate.csv
--- a/rpbasicdesign/test-data/user_parts_plate.csv Tue Oct 12 15:24:00 2021 +0000
+++ b/rpbasicdesign/test-data/user_parts_plate.csv Mon Nov 15 13:20:34 2021 +0000
b
@@ -1,13 +1,7 @@
 Part/linker,Well,Part concentration (ng/uL)
 BASIC_SEVA_37_CmR-p15A.1,A1,
-O85674,A2,
-P23262,A3,
-P31019,A4,
-P95607,A5,
-PJ23101_BASIC,A6,
-PJ23119_BASIC,A7,
-Q3KIF2,A8,
-Q43984,A9,
-Q5QUP2,A10,
-Q84BZ3,A11,
-Q8FB35,A12,
+P21683,B1,
+P21684,C1,
+P21685,D1,
+PJ23101_BASIC,E1,
+PJ23119_BASIC,F1,