Mercurial > repos > tduigou > get_from_db
changeset 0:1769c133986b draft default tip
planemo upload for repository https://github.com/brsynth/galaxytools/tree/main/tools commit 3401816c949b538bd9c67e61cbe92badff6a4007-dirty
author | tduigou |
---|---|
date | Wed, 11 Jun 2025 09:42:52 +0000 |
parents | |
children | |
files | get_db_info.py seq_form_db.xml test-data/2-step-golden_gate_plan.csv test-data/test_missing_input.csv testMock.py |
diffstat | 5 files changed, 1854 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/get_db_info.py Wed Jun 11 09:42:52 2025 +0000 @@ -0,0 +1,267 @@ +import subprocess +import argparse +import time +import os +import socket +import re +from Bio.Seq import Seq +import pandas as pd +from Bio.SeqRecord import SeqRecord +from sqlalchemy import create_engine, inspect +from sqlalchemy.engine.url import make_url +from sqlalchemy.sql import text +from sqlalchemy.exc import OperationalError + + +def fix_db_uri(uri): + """Replace __at__ with @ in the URI if needed.""" + return uri.replace("__at__", "@") + + +def is_port_in_use(uri): + """Check if a TCP port is already in use on host.""" + url = make_url(uri) + host = url.host + port = url.port + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.settimeout(2) + return s.connect_ex((host, port)) == 0 + + +def extract_db_name(uri): + """Extract the database name from the SQLAlchemy URI.""" + url = make_url(uri) + return url.database + + +# this fuction is to activate the Docker id the DB is in container. BUT IT IS NOT USED IN MAIN() +def start_postgres_container(db_name): + """Start a PostgreSQL container with the given database name as the container name.""" + container_name = db_name + + # Check if container is already running + container_running = subprocess.run( + f"docker ps -q -f name={container_name}", shell=True, capture_output=True, text=True + ) + + if container_running.stdout.strip(): + print(f"Container '{container_name}' is already running.") + return + + # Check if container exists (stopped) + container_exists = subprocess.run( + f"docker ps -a -q -f name={container_name}", shell=True, capture_output=True, text=True + ) + + if container_exists.stdout.strip(): + print(f"Starting existing container '{container_name}'...") + subprocess.run(f"docker start {container_name}", shell=True) + print(f"PostgreSQL Docker container '{container_name}' activated.") + return + + # If container does not exist, create and start a new one + port = 5432 if not is_port_in_use(5432) else 5433 + postgres_password = os.getenv("POSTGRES_PASSWORD", "RK17") + + start_command = [ + "docker", "run", "--name", container_name, + "-e", f"POSTGRES_PASSWORD={postgres_password}", + "-p", f"{port}:5432", + "-d", "postgres" + ] + + try: + subprocess.run(start_command, check=True) + print(f"PostgreSQL Docker container '{container_name}' started on port {port}.") + except subprocess.CalledProcessError as e: + print(f"Failed to start Docker container: {e}") + + +def wait_for_db(uri, timeout=60): + """Try connecting to the DB until it works or timeout.""" + engine = create_engine(uri) + start_time = time.time() + while time.time() - start_time < timeout: + try: + with engine.connect(): + print("Connected to database.") + return + except OperationalError: + print("Database not ready, retrying...") + time.sleep(2) + raise Exception("Database connection failed after timeout.") + + +def fetch_annotations(csv_file, sequence_column, annotation_columns, db_uri, table_name, fragment_column_name, output): + """Fetch annotations from the database and save the result as GenBank files.""" + db_uri = fix_db_uri(db_uri) + df = pd.read_csv(csv_file, sep=',', header=None) + + engine = create_engine(db_uri) + connection = engine.connect() + + annotated_data = [] + + try: + with connection: + inspector = inspect(engine) + columns = [column['name'] for column in inspector.get_columns(table_name)] + + # Fetch all fragments from the table once + if fragment_column_name not in columns: + raise ValueError(f"Fragment column '{fragment_column_name}' not found in table '{table_name}'.") + + fragment_column_index = columns.index(fragment_column_name) + all_rows = connection.execute(text(f"SELECT * FROM {table_name}")).fetchall() + fragment_map = {row[fragment_column_index]: row for row in all_rows} + + # Compare fragments between CSV and DB + csv_fragments = set() + all_ids = set(df[0].dropna().astype(str)) + for _, row in df.iterrows(): + for col in df.columns: + if col != 0: + fragment = row[col] + if pd.notna(fragment): + fragment_str = str(fragment) + if fragment_str not in all_ids: + csv_fragments.add(fragment_str) + + db_fragments = set(fragment_map.keys()) + missing_fragments = sorted(list(csv_fragments - db_fragments)) + if missing_fragments: + raise ValueError( + f" Missing fragments in DB: {', '.join(missing_fragments)}" + ) + + # === CONTINUE WITH GB FILE CREATION === + for _, row in df.iterrows(): + annotated_row = {"Backbone": row[0], "Fragments": []} + for col in df.columns: + if col != 0: + fragment = row[col] + if fragment not in csv_fragments: + continue + db_row = fragment_map.get(fragment) + + if db_row: + fragment_data = {"id": fragment} + for i, column_name in enumerate(columns[1:]): # skip ID column + fragment_data[column_name] = db_row[i + 1] + else: + fragment_data = {"id": fragment, "metadata": "No data found"} + + annotated_row["Fragments"].append(fragment_data) + + annotated_data.append(annotated_row) + + except Exception as e: + print(f"Error occurred during annotation: {e}") + raise # Ensures the error exits the script + + # GenBank file generation per fragment + try: + for annotated_row in annotated_data: + backbone_id = annotated_row["Backbone"] + for fragment in annotated_row["Fragments"]: + fragment_id = fragment["id"] + sequence = fragment.get(sequence_column, "") + annotation = fragment.get(annotation_columns, "") + + # Create the SeqRecord + record = SeqRecord( + Seq(sequence), + id=fragment_id, + name=fragment_id, + description=f"Fragment {fragment_id} from Backbone {backbone_id}" + ) + + # Add annotations to GenBank header + record.annotations = { + k: str(fragment[k]) for k in annotation_columns if k in fragment + } + + # LOCUS line extraction from annotation (copy-paste the LOCUS from annotation) + locus_line_match = re.search(r"LOCUS\s+.+", annotation) + if locus_line_match: + locus_line = locus_line_match.group() + else: + print(f"LOCUS info missing for fragment {fragment_id}") + locus_line = f"LOCUS {fragment_id: <20} {len(sequence)} bp DNA linear UNK 01-JAN-2025" + + # Format sequence as per GenBank standards (with ORIGIN and line breaks) + if "ORIGIN" in sequence: + origin_block = sequence.strip() + else: + # Format sequence as per GenBank standards (with ORIGIN and line breaks) + formatted_sequence = "ORIGIN\n" + seq_str = str(record.seq) + for i in range(0, len(seq_str), 60): # 60 bases per line + line_seq = seq_str[i:i + 60] + formatted_sequence += f"{str(i + 1).rjust(9)} { ' '.join([line_seq[j:j+10] for j in range(0, len(line_seq), 10)]) }\n" + origin_block = formatted_sequence.strip() + + # Find and copy the FEATURES section directly from annotation + features_section = "" + features_start = annotation.find("FEATURES") + if features_start != -1: + features_section = annotation[features_start:] + + # Writing the GenBank file + if not os.path.exists(output): + os.makedirs(output) + + gb_filename = os.path.join(output, f"{fragment_id}.gb") + with open(gb_filename, "w") as f: + # Write the LOCUS line + f.write(locus_line + "\n") + # Write DEFINITION, ACCESSION, and other annotations + f.write(f"DEFINITION {record.description}\n") + f.write(f"ACCESSION {record.id}\n") + f.write(f"VERSION DB\n") + f.write(f"KEYWORDS .\n") + f.write(f"SOURCE .\n") + # Write the FEATURES section directly from annotation + f.write(features_section) + # Write the ORIGIN section + f.write(origin_block + "\n") + f.write("//\n") + + except Exception as e: + print(f"Error saving GenBank files: {e}") + return + + +def main(): + parser = argparse.ArgumentParser(description="Fetch annotations from PostgreSQL database and save as JSON.") + parser.add_argument("--input", required=True, help="Input CSV file") + parser.add_argument("--sequence_column", required=True, help="DB column contains sequence for ganbank file") + parser.add_argument("--annotation_columns", required=True, help="DB column contains head for ganbank file") + parser.add_argument("--db_uri", required=True, help="Database URI connection string") + parser.add_argument("--table", required=True, help="Table name in the database") + parser.add_argument("--fragment_column", required=True, help="Fragment column name in the database") + parser.add_argument("--output", required=True, help="Output dir for gb files") + args = parser.parse_args() + + # Wait until the database is ready + db_uri = fix_db_uri(args.db_uri) + # db_name = extract_db_name(db_uri) + # start_postgres_container(db_name) + MAX_RETRIES = 3 + for attempt in range(1, MAX_RETRIES + 1): + try: + wait_for_db(db_uri) + break # Success + except Exception as e: + if attempt == MAX_RETRIES: + print(f"Attempt {attempt} failed: Could not connect to database at {db_uri}.") + raise e + else: + time.sleep(2) + + # Fetch annotations from the database and save as gb + fetch_annotations(args.input, args.sequence_column, args.annotation_columns, db_uri, args.table, args.fragment_column, args.output) + + +if __name__ == "__main__": + main()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/seq_form_db.xml Wed Jun 11 09:42:52 2025 +0000 @@ -0,0 +1,135 @@ +<tool id="seq_form_db" name="Get sequences Data From DB" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.09"> + <description>Import fragment's data from an accessible DB and export it as .gb files</description> + <macros> + <token name="@VERSION_SUFFIX@">0</token> + <token name="@TOOL_VERSION@">0.1.0</token> + </macros> + <requirements> + <requirement type="package" version="2.2.3">pandas</requirement> + <requirement type="package" version="2.0.40">sqlalchemy</requirement> + <requirement type="package" version="2.9.9">psycopg2</requirement> + <requirement type="package" version="1.85">biopython</requirement> + </requirements> + <command detect_errors="exit_code"><![CDATA[ + mkdir 'outdir' && + python '$__tool_directory__/get_db_info.py' + --input '$input' + --sequence_column '$sequence_column' + --annotation_columns '$annotation_columns' + --db_uri '$db_uri' + --table '$table' + --fragment_column '$fragment_column' + --output 'outdir' + ]]></command> + <inputs> + <param name="input" type="data" format="csv" label="Input CSV File" /> + <param name="table" type="text" label="DB Table Name" optional="false" /> + <param name="sequence_column" type="text" label="DB Column Contains Sequence For ganbank File" optional="false" /> + <param name="annotation_columns" type="text" label="DB Column Contains Annotation For Ganbank File" optional="false" /> + <param name="fragment_column" type="text" label="DB IDs Column Name" optional="false" /> + <param name="db_uri" type="text" label="DB Connection URI" help="postgresql://container_name:password@host:port/path/to/database" optional="false" /> + </inputs> + <outputs> + <collection name="output_gb" type="list" label="GenBank Files collection" > + <discover_datasets pattern="(?P<name>.*).gb" format="genbank" directory="outdir" /> + </collection> + </outputs> + <tests> + <!--python get_db_info.py -input 'test-data/test_input.csv' -sequence_column 'sequence' -annotation_column 'annotation' -db_uri 'postgresql://postgres:RK17@localhost:5432/test_fragments_db' -table 'sample' -fragment_column 'fragment' -output 'test-data/output'--> + <test> + <param name="input" value="2-step-golden_gate_plan.csv" /> + <param name="table" value="sample" /> + <param name="sequence_column" value="sequence" /> + <param name="annotation_columns" value="annotation" /> + <param name="fragment_column" value="fragment" /> + <param name="db_uri" value="postgresql://postgres:RK17@localhost:5432/test_fragments_db" /> + <output_collection name="output_gb" type="list" count="12"> + <element name="part_A"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_B"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_C"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_D"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_E"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_F"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_G"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_H"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_I"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_J"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_K"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + <element name="part_L"> + <assert_contents> + <has_n_lines min="10" /> + </assert_contents> + </element> + </output_collection> + </test> + </tests> + + <help><![CDATA[ +Get sequences Data From DB +========================== + +Implemented a system to generate GenBank (.gb) files for ADN fragments in CSV input, based on data retrieved from an accessible database via URI requests. + +**Parameters**: +--------------- +* **Input CSV File**: Assembly csv contains construct IDs in the first column and their corresponding fragments in the following columns. (Without Header) +* **DB Table Name**: Name of the target table in the database. +* **DB Column Contains Sequence For ganbank File**: Column storing sequence data, expected to start with "ORIGIN". +* **DB Column Contains Annotation For Ganbank File**: Column containing annotation data, starting with "FEATURES" and including "LOCUS" information. Other metadata is optional. +* **DB IDs Column Name**: Column holding the unique fragment IDs. +* **DB Connection URI**: URI used to connect to the database (e.g., postgresql://postgres:pass@localhost:5432/test_fragments_db). + ]]></help> + <citations> + <citation type="bibtex"> + @unpublished{seq_form_db + author = {Ramiz Khaled}, + title = {{seq_form_db}}, + url = {https://github.com/brsynth/}, + } + </citation> + </citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/2-step-golden_gate_plan.csv Wed Jun 11 09:42:52 2025 +0000 @@ -0,0 +1,4 @@ +construct_3,construct_1,part_L,part_J,part_K,, +construct_4,construct_2,part_L,part_J,part_K,, +construct_1,part_A,part_B,part_C,part_D,part_E,part_F +construct_2,part_A,part_G,part_H,part_I,part_F,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/test_missing_input.csv Wed Jun 11 09:42:52 2025 +0000 @@ -0,0 +1,4 @@ +Sample-1,ACP10001AaCbbBS,NEW20001BbDccKT,XYZ10003AaCbbBS +Sample-2,CFP10002AaCbbBS,ACP10001AaCbbBS,ALT30005CcEddLM +Sample-3,XYZ10003AaCbbBS,ALT30005CcEddLM,ACP10001AaCbbBS +Sample-4,QWE10004AaCbbBS,NEW20001BbDccKT,CFP10002AaCbbBS
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testMock.py Wed Jun 11 09:42:52 2025 +0000 @@ -0,0 +1,1444 @@ +import psycopg2 +import subprocess +import time + + +def docker_container_exists(name): + """Vérifie si le conteneur Docker existe (arrêté ou démarré).""" + result = subprocess.run( + f"docker ps -a -q -f name={name}", + shell=True, capture_output=True, text=True + ) + return bool(result.stdout.strip()) + + +def docker_container_is_running(name): + """Vérifie si le conteneur Docker est en cours d'exécution.""" + result = subprocess.run( + f"docker ps -q -f name={name}", + shell=True, capture_output=True, text=True + ) + return bool(result.stdout.strip()) + + +def docker_start_container(name): + """Démarre un conteneur Docker existant.""" + subprocess.run(f"docker start {name}", shell=True, check=True) + + +def docker_run_container(name, password="RK17", port=5432): + """Crée et démarre un nouveau conteneur PostgreSQL.""" + subprocess.run( + f"docker run --name {name} -e POSTGRES_PASSWORD={password} -p {port}:5432 -d postgres", + shell=True, check=True + ) + + +def docker_stop_container(name): + """Arrête un conteneur Docker.""" + subprocess.run(f"docker stop {name}", shell=True, check=True) + + +def wait_postgres_ready(host="localhost", port=5432, timeout=30): + """Attend que Postgres accepte les connexions.""" + import socket + start = time.time() + while time.time() - start < timeout: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + try: + sock.connect((host, port)) + return True + except ConnectionRefusedError: + time.sleep(1) + raise RuntimeError("PostgreSQL is not ready after timeout") + + +def create_db_and_insert_data(): + container_name = "test_fragments_db" + + # 1. Vérifier si conteneur existe + if docker_container_exists(container_name): + print(f"Conteneur Docker '{container_name}' existe.") + # 2. Démarrer s'il n'est pas déjà lancé + if not docker_container_is_running(container_name): + print(f"Démarrage du conteneur '{container_name}'...") + docker_start_container(container_name) + else: + print(f"Conteneur '{container_name}' déjà en cours d'exécution.") + else: + print(f"Création et démarrage du conteneur '{container_name}'...") + docker_run_container(container_name) + + # 3. Attendre que PostgreSQL soit prêt + wait_postgres_ready() + + # 4. Connexion et création DB + table + insertion + conn = psycopg2.connect( + dbname='postgres', user='postgres', password='RK17', + host='localhost', port='5432' + ) + conn.autocommit = True + cursor = conn.cursor() + + cursor.execute("SELECT 1 FROM pg_catalog.pg_database WHERE datname = 'test_fragments_db';") + exists = cursor.fetchone() + + if exists: + print("Base de données 'test_fragments_db' déjà existante, suppression...") + cursor.execute("DROP DATABASE test_fragments_db;") + + cursor.execute("CREATE DATABASE test_fragments_db;") + print("Base de données 'test_fragments_db' créée.") + + cursor.close() + conn.close() + # Connect to the PostgreSQL container (default 'postgres' database for setup) + conn = psycopg2.connect( + dbname='postgres', # Default database + user='postgres', # Default user + password='RK17', # Password from Docker environment + host='localhost', # Running locally on the default Docker network + port='5432' # Default PostgreSQL port + ) + + conn.autocommit = True # Necessary to create a database + cursor = conn.cursor() + + # Check if the test database already exists + cursor.execute("SELECT 1 FROM pg_catalog.pg_database WHERE datname = 'test_fragments_db';") + exists = cursor.fetchone() + + if exists: + print("Database 'test_fragments_db' already exists, dropping it...") + cursor.execute("DROP DATABASE test_fragments_db;") + + # Create the new database for testing + cursor.execute('CREATE DATABASE test_fragments_db;') + print("Database 'test_fragments_db' created.") + + cursor.close() + conn.close() + + # Now connect to the new test database + conn = psycopg2.connect( + dbname='test_fragments_db', + user='postgres', + password='RK17', + host='localhost', + port='5432' + ) + + cursor = conn.cursor() + + # Create the 'sample' table instead of 'fragments' + cursor.execute(''' + CREATE TABLE sample ( + fragment TEXT PRIMARY KEY, + sequence TEXT, + annotation TEXT, + metadata_1 TEXT, + metadata_2 TEXT + ); + ''') + + # Insert mock data + cursor.executemany(''' + INSERT INTO sample (fragment, sequence, annotation, metadata_1, metadata_2) + VALUES (%s, %s, %s, %s, %s); +''', [ + ( + 'part_A', + '''ORIGIN + 1 tcacaggatg gtccaacgaa actaggcttt agacgaggga tgaatgaccg acccccactc + 61 gtggcactaa cggacagact tccctgacgg ttattcgacc attaaagtca gacatgcggg + 121 ggtgaataaa ttagccaaat tgtgtcgaag aaaagacgtg cggctggcac ataaggcagt + 181 cttgatccta gtcttgcagg gatgcacgta agtcgcctca attaactgca gccgagctcc + 241 aggttaccaa agaccctagt atgccagggc ctaacggttg gagtatatta tgggtacgca + 301 atagtgcgga agttaacctg ggcaacatcc aggtgagagg ttggacggaa gcgacagtaa + 361 gtggccatag actgccgagt cgtgttaatg aatcgctata cgcccatgga gttgtggggt + 421 cgttttatcc gagtaggggc ccgctgacta cttcgtccag acaatatgcc gtcttcaata + 481 gtctacctga gagtcatgcc ggcatttccg acgctgagtg aaacccgcgt agccaggcga + 541 aatttgcatc ttgaaatacc actgcagatc agccagtaag gcccatataa gggcgctggt + 601 gttctggcga cagataaagt gttatctaat gtaacccgcg gacttttaga ggatacttga + 661 atgcgggcat atcgtcccac cagcgtcacg tggtcgggct agcggcagac aaactctgcc + 721 gatgtttttc tttgccgcga tagcgggcta gtcaattcac tatccggcga tgaagcatag + 781 attgttatcg cgcttatgcg gaggataatc aagtcttggc agaacctgct cgctcatgca + 841 ctggtgaggc gtggttatcc taacaaccgc ctaggacgaa gaatgggctc ggtagggaca + 901 gttcgtgcgt ttagcttcgt cccatcttaa tgctgtctgg agggaggcta catgcgaaca + 961 gaagccgtgg gcgaaagttg ttgatccggg tctaacacgg ataagggcca tggtgaacgc + 1021 atcatgcgat acttcttggt agttcttcta acatgaccgt gccatagccc ttaccctttg + 1081 aagaagttaa cctatctgcc gtctcctgca cgaatagcga ctggactcgg gtattttgga + 1141 tacctcacga aagcacttcg atcggccgaa gcatggatat ttcgccggac gggcccgaat + 1201 agagagcctt gtatgtcggt tagtacaacg cagtcctgga gacatctacg cggatgggcc + 1261 taggggctgg acttaacatt gggtaacgta cctggtccaa agtgaatgca aagcactttt + 1321 acaaagcgcg ggtccccgtg ggtgtttagg gtagaagatt ggcggatgct acgaacgatc + 1381 ccgctttgaa actatcatta catcgtgtaa aagagacact taacaaaggc caataaactg + 1441 ccagtaagaa tcgctcagtg cggtgctggg gacgctaagt aggggcaaca gccagtgaag + 1501 gacgtgaccg acctttctca gataagatat gctggcgtct atctaataag catagtgaaa + 1561 aaccaaccat ttcacttaca cgaagtacat ttgcattgct agtaaagacg cctaaacaga + 1621 agtgcccttg catgctgtat gtctatagtc cttagggaag catcagccct tctacttatt + 1681 cgaggtctga gaaaccctgg acaagctccg aattattcaa tgtgcctgtc tccgaggtta + 1741 gatagcgcta tgctcttaag agttgcacag aatgaccatc ctggaatgtc cctggagggg + 1801 tctaggtatg ctgatcgaag ggtgctctaa ggacttgacg tgcgtccgag gagggtgctg + 1861 cctccttcgc ctttagatcc aacgcggatc acatgcgcgt gagctaatag gatcaccttc + 1921 tgctccgatt tttaccctcc tgggtcactt ccgaatgagg tagcgggcga aatataatgt + 1981 ctccactcgt aggtgttccc tgtatgtgaa gctctatagt ggacaaaggt ttgatgaact + 2041 agcccccgta tacgctctca ccgacggacg cgggggtctg ttatttgaag catcatacat + 2101 gcgaaggtgc cttctcagca acgaaaggta gtgggagtgt acaagttcaa tgcgccgcca + 2161 taggtctgag tatacaaggg gatgccccca tccacaacgg gattggctac ccggagagct + 2221 ggctccgctc caacaaataa ttatattaac ctattggaat tccacctgca tatcagagga + 2281 gagagacctt tacggctatt ctgtttaccg gatccatcgg taccaaggat cagaaagtga + 2341 cacggtttga acgggttgtt gtaatacttt gagtatacct ctgacgctga gcgtgtcgtc + 2401 ctgagcgcag actcaataac atagcagtcc gacatcgccg tgatatgtaa atgcaacgaa + 2461 tttaggtctt gactcggtct accatgtcaa aagggtagcc agatttcagc gcgaaattga + 2521 actttgtgtt tagtgtgggg tcctcggtta caaaatagga tcagacatgt gtgattttgg + 2581 taacctagtc tggcagtccg acagacttcg ctatgatttg atggggccgg cctataattg + 2641 gcttgcgcaa cccgctcatc tcgggcgtgt tttacttcct gcggtcccca cgccctattt + 2701 tcgggccagc tgtaggtgct agagtgaatg ctggcgaata agattccccg ctatttggcg + 2761 cctcgccaca gctctggcac tatgggggga gtttctctgt tccttaaaca gcacccgttt + 2821 ttgaggtgta ttggtttcgg ttctgcatta ggcaattcgt accgtacaat caattacgac + 2881 acattggcgg cagttatcag ctacccatcg caaagcacac acccacatgt atctattttt + 2941 cgcaaattcc aaaagcttcg attgagattg catcggtagt ccctcagaca tgtcgtaatc + 3001 gaatgcctct tgttccatga gagagagaag tatggcgcga accgctctgc ctttaatttg + 3061 gttctaccat ccacgagttt aaggggcata accctgccca gcactttccg aggctcacgt + 3121 tcatgctacg gtagcacctt tctgcgggtc tcacgctgtc aatatgcagg tgctgcagga + 3181 atttgtctcc aatcgacttg agatatcgca agcatgaaat tatattagac acgccagaga + 3241 acttgggaag cagcactggt agtgatagca acccgagtac agtaacgagt gagcttctga + 3301 tcatgagctc tcctacggcg tcaatgcgac gaatgcccag catgcactct cgctatccat + 3361 gcctgctagg gtggcattat gctcaggaac agttgtagct tggatatcgt ctagatgaaa + 3421 tacctggaca ctggttagcg tcgtcaagca ccaaggacat tcacacgctc gcggtctttc + 3481 gtctccctaa gcgttcggca gtcgggcgtg aagaggttgt aatcagacgg aacaaagcct + 3541 gaaaaaattc cagcgacgta gtattcatga tcctgtacca tctgtagccg ccgcggcgca + 3601 cgattgaatg taggctacta accccatccg tgttagcgat gtgagtttct accgcaacga + 3661 atgctcaagc gaaccttctt ctttcgtccg caacccacaa gccgtggtta tgacagctaa + 3721 attgtcccag acatcccttt attacacaag agctccagcg gaatacctag tcacagcggt + 3781 aatgacacaa agctcttagt tagtccaggg actacttctg tctacagcac atcacactca + 3841 ttatcagcat cagtgtagag acggagaaca tgggctatcc tataccaaga tccgccatct + 3901 aaacatttga agtttcccgt cttctataac ttagcactcg acgctattct gctgagtgcg + 3961 cttagtctgt agcgacttgc gaaatccata aactgagaat tgaaagagag tgcataaccg + 4021 aaacctttgt ggcatatttc cgttgaaacg taccagaaca gccgtttagt gcggaacata + 4081 cagtatcctg ataaagcact caacccaaca gacaccctat gccgatagcg ggatgctaac + 4141 aagtatagtc atgatgattt ctcggacagc ggggtttggt acagctgcaa tccgtgattt + 4201 aaattcggac ctctgcacac accgacggtt acccatatcc tctacggctg taggaagttt + 4261 taccttggat gtcattctga tttcggcgta tc +''', + '''LOCUS part_A 4292 bp ds-DNA circular UNK 28-OCT-2019 +DEFINITION . +ACCESSION part_A +VERSION part_A +KEYWORDS "creator:SynthSys Center". +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + RBS 2332..2343 + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 2208..2238 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + promoter 2289..2323 + /label="yet another feature" + /ApEinfo_fwdcolor="#85dae9" + misc_feature 3162..3178 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + -35_signal 228..233 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + gene 1009..2028 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + -35_signal 51..56 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + CDS 2350..3027 + /label="another feature" + /ApEinfo_fwdcolor="#ff00ff" + CDS complement(3376..4191) + /label="yet another feature" + /ApEinfo_fwdcolor="#993366" + misc_RNA 87..639 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 2257 + /label="another feature" + /ApEinfo_fwdcolor="#84b0dc" + terminator 3119..3146 + /label="yet another feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 2053..2100 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 2278..2281 + /label="another feature" + /ApEinfo_fwdcolor="#ff0000" + misc_RNA complement(90..197) + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 726..734 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 2274..2277 + /label="another feature" + /ApEinfo_fwdcolor="#faac61" + rep_origin 51..639 + /label="yet another feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 2161..2185 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + -10_signal 206..211 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature complement(3292..3332) + /label="yet another feature" + /ApEinfo_fwdcolor="#c6c9d1" + rep_origin 760..1008 + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + terminator 3032..3103 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 3158..3161 + /label="yet another feature" + /ApEinfo_fwdcolor="#faac61" + misc_feature 3173..3178 + /label="feature" + /ApEinfo_fwdcolor="#84b0dc" + gene complement(3376..4191) + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 2258..2262 + /label="yet another feature" + /ApEinfo_fwdcolor="#84b0dc" + misc_feature 3342..3365 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 3204..3227 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 2256..2273 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + -10_signal 72..77 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 2029..2052 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + CDS 1009..2028 + /label="yet another feature" + /ApEinfo_fwdcolor="#993366" + misc_feature 3237..3265 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 3154..3157 + /label="another feature" + /ApEinfo_fwdcolor="#ff0000" + misc_feature 3180..3290 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 2212..2236 + /label="feature" + /ApEinfo_fwdcolor="#f8d3a9" + misc_feature 1..24 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" +''', + 'Metadata1 for part_A', 'Metadata2 for part_A' + ), + ( + 'part_B', + '''ORIGIN + 1 cgggtctagc cacgcggctg aaaatgcgcc tcaccaagtt cagagagttg taatttaaag + 61 gaccaaagaa cgtccattat gaagacacca atgagaaaag ttcattgcga tcgcagctta + 121 gactgacgtg aagttccaac atttggcata cgtacttgtt aagttcctcc ggctatatgc + 181 gctaggcgca ggtatattag ccggacatct gcaaggttga cgctgaagcc ttatcggtaa + 241 tgcaagcaca acggtattgc agacacacaa taggaagtta tgttaacagg agagggtgat + 301 gccgatgatt acgccccgcg tcgacagtac aataaaacag ctagatcatg tcgaaagtgt + 361 aggcaaaaca ggtaggtgca ggacaggagg gttccctcaa gtcggcttgc tttatgtggc + 421 gaatctgata cccataccgg ctatacatcg gccagggaat atcacagatt ttaaatgagc + 481 ggagatagac ctatgggacc gcatcgatgc aagacatcgc ctacagatac ataatctgga + 541 agacgcagat atcagtacgc tccttcctgg gaggcgtggt ccttggcacc agtcggccac + 601 cccttagcgt ttcacctaag caacgaatcc aggactcctc ttttagcgtt tgggtgtcag + 661 gcgcatcagg agtggttaaa tgaacgctgt acttcgcaag ataattgtga agatctctgc + 721 tattccttaa cattaccacc aactttgcct acatatggcg taatcaaaaa tgcagcgggg + 781 tgctcgatcg tgaaccctca atcacgatgt gctatggcgt agccacacaa catagttccg + 841 gtctggaatt cggtctctgg agagcatacg gtgctctggg ctcacacgta cttcctcttg + 901 tcacgcgcct ttgtagagca ttagggcgga ggtcactggg acggggatca gagagcttaa + 961 aatcccaagt agcagtgcct aaggtgtaga atcttgtgca gatcttcgtc tggcccgaaa + 1021 cctgggcctc cacaacaatg tcgggtcttt tataatttga aaacatcgcg ccttacccgc + 1081 accgcgcagg acgattagac acagggggtc atgtccatgg ttcggggtaa gccaaattta + 1141 catcgagtgt gggcttcatt gaggagaggg cgttacgata cccgttaaat gaaaacccgg + 1201 acagtctcta actgataggc ctgataatcg ccaaatgaag tcgcaattag cagtacatga + 1261 ctggcagata tgtcgccgga gacggtatgg gggacctatc ctaggttggc acgcgagcgc + 1321 gaatgacgcc tatcttatcc ccctgcacgt gatggtatcg tcccaactat cttttacctc + 1381 atcaacgttt tcctgcataa tctgcaagat ggagagtccg cgagtgcggg gagtacgaga + 1441 tcacaaatct gccctgaaga caaagctcgc aggccgtact caggaaatag catcgactca + 1501 cacatatcgg gaacggcaaa gagtgcatcg gccaatgcaa actattgaac gtccatgaaa + 1561 ttgtgtcaaa ctactagtgt gtggacttgc gtcaaggcca tggcgcaata ctcaaagccc + 1621 cggtatttat cccccgcaga gtatccgtgc ggatggagtt ccacagctct ttggacatgc + 1681 aatgcgtggc gctacatgct ccgctgatac agaatatcta atgtctcgcc tcttgccgtc + 1741 gaccctacaa ctactgcacg ggcagagtgg acgcgacccc tgagcggtgc agaaccttag + 1801 tataaggcaa gggtggcacg gccgagccgc acttgctcct actaggccgt gctcgaagct + 1861 attgatgcaa gcacagtatt cccgatttgt aaagcaaggt gcccgtagcc atacacccag + 1921 ctactcaccg gccaatttcg accctctcta tctcagacct ccgcatattc ccaaactcct + 1981 gctcaagtat gaaatgaccg gctcctccta aggcctgcgg acatggagtc atgcgtggaa + 2041 tgccgtgtag gtagggtaca cacagcctta ccatgtaggg caataaatta tagactactg + 2101 acattgattc cttgagggcc cgttcacttg tgggggaacc aggaaggcgc cgatagtcat + 2161 cacttaaaca catgcgacgc atccatttca agaaagacac gctacgggtc tacaccgcct + 2221 atagttctaa tttgggcccc ggtacgcaca tcgatgtact ctccattaca gcatagcaca + 2281 tcagcggccc tagttagcgc ttctttttgt tccaacattc aatagcgggg actgcattat + 2341 cctcacccta tttgttgcat aggtatttgg ccgtatactt gggaaagagc aaccacggga + 2401 gtgcactaga aactgattca cccatgttat aacgcgttgc tcgcaagtcg tactgtggcc + 2461 acgcacaggt caggcaatcg caaccatgtc ttagcagttt gtaagaagac ctttaaacat + 2521 gtacctcaca gcaatctcgg aacttttaat tttcctgagt caatgacatg ctagctccgt + 2581 ccacttgtaa tcaccgtcat aacacagtta gcctgcaaaa gggcgtgtac accttgccac + 2641 tttaaagctg accgaataac ctacctacag gagatgctta gtgccacgga atgatctcgc + 2701 aatgcttagt cttacaccca gtgaatcaac ccaagacctc gccgactgaa cggtattgag + 2761 tccaatcccg agaggcaatt tatggccgtt agtgacagtc ggtcgctgat agaataaggc + 2821 agactcgtct taagcgggct gctttaagag aaaatggagc cctgacgaag aagtggatga + 2881 accaggtttt gacaacgtcc catattggta atgtaggctc gttatcaaga gataggttta + 2941 gaaggctcaa tgctcgacgt aaaagaagtc ttaagctcta tgagccagtg atgagagcta + 3001 attatagggc gcattcgttg gggtaaggtt gcgaattgtc atttaactaa aaccgacggc + 3061 aatgtgagac cctgcagtcc gcctacacct ggctcactga ggcggcaacc gttatcgaag + 3121 cagcatgtat tggtagtacc tgtcgccgat ttccttggga gtgcgctgtt gcgataacgc + 3181 ttatttatgg tttgcgcggg atgtatctaa tgcggccgcc gcccgatcag cctgaacact + 3241 gcggtcatga gccggtccat catgcagttc gcctgtaatt ataacctatt tgttaatggg + 3301 gcttacagag gagcttccaa cgcatctacg agtaacggct gggatcacaa cttagccacc + 3361 ttgtagcagg gacataccgc tttgcgacta ctgcgattct ctaacgagtc ttctgattgg + 3421 tcctatgctc tttcaaaatc tcgataccgt agccaaccct gctgcccacc ttaaactatg + 3481 acaggacaca ccattgtgcc aacctacacc ttaccagtag ttctgctctc caccactaat + 3541 acgatgtcag aggccagaag gagcaccgtc aacaaacgcg ataatcaggg cggcgaagat + 3601 ggaagtagct tgggttgtcg gtgggcaggt caggcgttag tgttatttga ataccaactg + 3661 ttagaccaca gcgactcgaa cagtccgcaa gtcaagtgcg gtcggctttt acaggtggcg + 3721 gattttcatt ccaccattcg ggtctaggtg tggtactaac cgcggtcata cgtggagttg + 3781 aaccgcctga cgcactaagc tatgcgggca acaatatcgc caaagtcatt gtgttgggtt + 3841 ttcacaacag tcacttcgct cacggccgaa ttaaatatct ctaactatta agccattttc + 3901 caaccatcgg ctatcccagc ggttcaatcc gaatcgttac cagtgggtag ctgcagagga + 3961 tcctaagggc gggtcccgct tactgtaact cgtcatgtct cgtggtctac caattcggtt + 4021 agtattcgtg ccatgtatct cataagggtt gcagtttcgt cattgtcgta gttccttaat + 4081 ggactggtac gacccggttg ttatacaacc atcaatcgtt aacggacatt agtgagccga + 4141 ggagaagacc catcagcgga taacccgcca ttatcaccga tactgacata tgagtgccat + 4201 actgggactg gcttcacgtg agggacctca aagtgagtcg tacaaggcag ctcctcaaa +''', + '''LOCUS part_B 4259 bp ds-DNA circular UNK 29-OCT-2019 +DEFINITION . +ACCESSION part_B +VERSION part_B +KEYWORDS "Source" "Sequence" "Freezer" "Shelf" "Box" "Concentration" "Use". +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + primer_bind 531..550 + /label="feature" + /ApEinfo_fwdcolor="#faac61" + terminator 3078..3135 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + CDS complement(join(4216..4259,1..616)) + /label="yet another feature" + /ApEinfo_fwdcolor="#f58a5e" + exon 2863..3060 + /label="feature" + /ApEinfo_fwdcolor="#75c6a9" + gene 2863..3060 + /label="another feature" + /ApEinfo_fwdcolor="#faac61" + terminator 4101..4195 + /label="yet another feature" + /ApEinfo_fwdcolor="#9eafd2" + primer_bind complement(3410..3429) + /label="feature" + /ApEinfo_fwdcolor="#faac61" + primer_bind 778..796 + /label="another feature" + /ApEinfo_fwdcolor="#75c6a9" + misc_feature 859..862 + /label="yet another feature" + /ApEinfo_fwdcolor="#ffef86" + primer_bind complement(3159..3176) + /label="feature" + /ApEinfo_fwdcolor="#faac61" + misc_feature 863..3060 + /label="another feature" + /ApEinfo_fwdcolor="#f58a5e" + rep_origin complement(3330..3918) + /label="yet another feature" + /ApEinfo_fwdcolor="#84b0dc" + misc_feature 3061..3064 + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + terminator 800..843 + /label="another feature" + /ApEinfo_fwdcolor="#85dae9" +''', + 'Metadata1 for part_B', 'Metadata2 for part_B' + ), + ( + 'part_C', + '''ORIGIN + 1 tggctaggtc tccaatggtt tcaccggagc tgagatcgca ttaaagtcac actacgaatt + 61 atttgtcccc gcggctccag agacaaattt ctaggagtgg gttcatggag aaccgtgaca + 121 agcatggtag cttcaaatag cgtcatcgga tcttaaagtg attgtgacat atatgggatt + 181 gcgcgtctct cttacacaag ctagtgtgcg cgaggtgctg aacacctatt acgtcaactc + 241 ccgggatccc ggcgggttac agagacataa gcagggtgtc catcattaac ttcgatgttg + 301 agcccgtgcc ctgatcaaac acctctcgta gtagtgggtg ccggccgtgt attattttgg + 361 gggagaggat gcgccctaag caatttcttt ccatcggcca gccattcgac gccggcacgc + 421 aagttgttgc gggcactgtt gcagttcccg tactagagtc tcaagtctag aggtaccagc + 481 atcaggaaga tgggtacttc gtgtggatct tctcctgaac ctgaaacctg aagagctaaa + 541 gcgcgtcgcg ctgccatacg ataagtcgct ctcatttccg gaagacgtcg ttgggtgatg + 601 gcgaacaatc gcgaaacgaa aatcgcggtc ggtatgttga ttcaagacgg gctacgggcg + 661 ggttactaac aggtgcgcag aaatgtgatg ggtcacttga ccatgaactt tcgcgccgtc + 721 gcttctgtgg actggccggc tccctgatag tgcactagcc cgttgatatg cccattacca + 781 tttggcggcg cagtgtgcca gcgggattaa gatgcgtggc gtacaactat ccgcactttg + 841 ctgacgcaca aaggcaactg atggacagcc ttcgggcatt cgactggttg gctgagttcg + 901 cctgcctatt aatatgcttg tggaaattga tttacagcgc ctacttctac ttaggtgtac + 961 ctatttacgg cacagggata aaggctgaca gaaaagtcct ggacaggtca taggtagttg + 1021 tcagacctac aatggtataa cttgagagtc ctgtaccgca catgcggttg tagctagatg + 1081 tccagaagac cgtagctagc gacgagtggg ttgcacgcgc attttgggaa ggggctgcgc + 1141 gagggtgggg tcacgggtta ttccatttct aaatgctaaa ccagcagttg ctttagttct + 1201 gacctagcag gcatgtcata tgtatggcta gattattagt acaatgcagg actaagaaag + 1261 cctgagactt aaatgcgttg gtttttcagc cgacgggccg ggagggcaga tggccgaatg + 1321 cgcactgagg agtgcattgc gagggaatag gcggaccacc aggtcccctc acatactgtg + 1381 gataaaccta cccagggaca actcacgcca tcattttcaa gagtagcact actttccact + 1441 aagtacggtt tgtcgagagc cggtggcacc gtgcgacgag cttgtgggca ctaggcgaac + 1501 cgggttatat aggactgcct tgcggtgcgg gaatacttta ccccgtggag aggccataaa + 1561 agcttacatt tattgtagcc gctagcggtt tcgacgcgct caagtggggc tttatcttag + 1621 agtatcaaat aatgccctct cagcttcatc ttgatttttg tgtttggggt agtgtatccg + 1681 atgggtcacc ttcttgacct tggggagctc catccatcgt accaatactc cgtttctttg + 1741 tgttgcctac cgagtaatcg aataccgcac gagggctaga atctaattta aggtgggtct + 1801 tatccctgtt gtttggacct aacgctgtaa caaatcactt ccgcgacggg tgtcattacg + 1861 tcttctatcc gccaccggtt caacagtgcg tcgaatgcca agtccctatt acccgcattg + 1921 taaagccatt acaatacctc cggtgatata attgattgcc ggttggcaag ggatcatctg + 1981 tacgggccgc gattgattgc tgataaggaa cggcggtaag gaacgtatcg cgtacgaggt + 2041 tgtacactgg aaccgctaaa caagcggtat cgctaaatta ccggcgatta tatcaaggga + 2101 atcttaggta gcacgaagcc ctacgccctg gaaacaggat cggcgcgagg ccgtggacat + 2161 attagcctac gtttttttac acccagattt ccgacgatgt ccacagctaa ggctatccta + 2221 aaccgcaaac acatataacc gcagtataaa gcacgggatg attccttggc catcttgcaa + 2281 gcagtgcaag gcaattctgg tgataggggc aaggcagtga accgagtggt cagcgtattg + 2341 tgaccctgca attgtcatgg cagataattg tttatgaacc tgtttcacac acccatccct + 2401 tggatctcca gcgtagttac taatagtacg atttcctggt gttctgtcac ccgccttgct + 2461 gccttcacgc ctgccccacg ttttgctgtc cactgaatat cgctctaatt aataggtgtc + 2521 acactgtatc aggtaagtcc attccgggtg ctattggatc attcctgaga tgtaccaccg + 2581 atcccatagg cgttaggtct tacatctgga gtgaaaaaga tcagcatcga actataggta + 2641 gataaaggtc atgactgtta acagagaatc gttcctatcg caaccttcac taactggaag + 2701 gcacccccac actttgatta gtaagcccct agcgaatgta gtgatccaag aacatcgagt + 2761 atactttagc tctcggttca ggcatgtatg caatcgacca cccttccgtt cagagtactc + 2821 tcaaccagca gatttctaaa ctttatagcc tccgcccact aaaattgcct tatctcaggt + 2881 tgactcttgg atgtagctgt aatctaacat acacatggag ctgcggcaaa ttatcgtacg + 2941 tccaaaccac caccggatca gtggcgatac tattctcgca aaaaagccat ccagcattgg + 3001 aacaagtgtt aaccagcatt tttctgagtc ccccggaaag aaagttgact acactacatc + 3061 cataaatgct agagtgtgga ttcgccatgt gttacaacgg tcaaccgaaa ggttagcatg + 3121 atacttcgtt gttcaatcgg acgttcgagc gccctccctg tttatcactt gatccccctt + 3181 ttgaaacatg tgcgctgcga cgcagggctg ggagagtcac cggaaaccaa aagcccgacc + 3241 tcggacgtgt agggccctcc gtttgccatc aatggcgatg taggattctc ttttaataca + 3301 acgttcactc aattaacgtc ttggtataag cgtcgaacgt gaccgaggtt gacaccagtg + 3361 tcacggctgc gccggggttt gttgctccgc gtgtacaggg tattggttcg tgagacctag + 3421 cca +''', + '''LOCUS part_C 3423 bp ds-DNA linear UNK 20-NOV-2019 +DEFINITION . +ACCESSION part_C +VERSION part_C +KEYWORDS . +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + CDS 18..3275 + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + CDS 3276..3404 + /label="another feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 2486 + /label="yet another feature" + /ApEinfo_fwdcolor="#b1ff67" + misc_feature 3411..3423 + /label="feature" + /ApEinfo_fwdcolor="#faac61" + misc_feature 3407..3410 + /label="another feature" + /ApEinfo_fwdcolor="#f8d3a9" + misc_feature 14..17 + /label="yet another feature" + /ApEinfo_fwdcolor="#f8d3a9" + misc_feature 1..13 + /label="feature" + /ApEinfo_fwdcolor="#faac61" + misc_feature 3131 + /label="another feature" + /ApEinfo_fwdcolor="#b1ff67" + misc_feature 2078 + /label="yet another feature" + /ApEinfo_fwdcolor="#b1ff67" + misc_feature 14 + /label="feature" + /ApEinfo_fwdcolor="#b1ff67" +''', + 'Metadata1 for part_C', 'Metadata2 for part_C' + ), + ( + 'part_D', + '''ORIGIN + 1 accctgcagt ccgtgaatta agaccaatcc actggagctc tatacaggac atcagcgatc + 61 ggtcgagtaa aaccgagttt ctggactccc ttagtctgag aattgtacct tattacgaat + 121 ccggaaatga agtgcgctca taaaatcttg atcgctaact gttttccgct ttttgaacct + 181 acagtcagct atttcgccgc aagcgaggtt tatccccttt tgtgtgtgtc agcgggcgaa + 241 cgtggaggac aattatgacg aatgcctaat aaccaacgta ggcttggctg gtgaggacat + 301 tgcccttccc cttctactaa ccagtgttgt tcagatcatg taccaagtgc agtaatgcta + 361 atcccctgaa ttctgacgtt ggatttggag cgtgattggc aattatccgc tgcaaggcgt + 421 agtatcgcta tctgggaaaa cttagggttg caagcaaggt catcgcccgt ctctagatcc + 481 gacgggagcc tcaccctgca tgaggaagtc ctaatccgct ctaaacaaga gctgaacact + 541 ggatgtctcg cagtagattt gctagaatgc aatgctggct cgtgtgcagc ctcaaggtca + 601 ccatgcttcc gttaaattcc acgctctccg agtctgctgg ttcgggataa atctacgtga + 661 cattcgcgag gtcccggcct gtagatcgtc tcggcaggag agaacacggt tgatccccca + 721 cgcggaaccg atagatgcca ggctagatga tgactgaagg tagtttgtac gagtgacctc + 781 tctagccaag tattttcccg tctcttaagt tatagccgct ctcattccgg gttgtgatat + 841 ccttcatatc cactctctgt aaaatgctgg gttgttcttc tctccacggt cagggaatcg + 901 cctcttttcg gataaacgac attatttcgc gccacagaac ggtttggggg tcgaaggacc + 961 ctagactttg ggtatcccac tcttaccgga tggtaccgct atctccccag ggtccatcgg + 1021 aatggctagc cacgttaccc ttatctgtca gtatcagtct cagacttaag tataccacgg + 1081 tagcgacagc tgtcttttaa tggcccgggc agggagccgg gcccaccgtc catggtccac + 1141 tgtaagggta tctgcaacct tcgccgagct tcttccccaa ggaggtagta ccttaccaaa + 1201 cttccgagtc agtatcgtca aaggggcccc tagggctcac accatcgagt ttccgcggct + 1261 taccagtcta gcctgatatg tttcaggtca ggaaataaga ggtatagccc cgtggacacg + 1321 tactgttcga gcggctagat gtaggttgag ttaagtacag tagacgcgtt ggataccgtc + 1381 gaacattact ccgtctgcca agggtagccg agtacttctt ccggctcggc cattccgact + 1441 aagttagttt cgaattgacg tgccaaagcg tggctcccag tcatttgtcc ttaaattaaa + 1501 cataagtttt ttacctgctc gcgtgccggc cgcttgaggg ggcagcaaga agtcggttca + 1561 aatggggtgt taagaccggt gttgcaagcg gaccatccag agttagcgtc ctcgacgaaa + 1621 cgttaacaat cgtgagatta gaggtcgaat atccccttcg tagggggttt tattgtgcaa + 1681 gatgcgcaaa tgaaccccaa ccttgcgggc ctgtagcgaa caggcgaaaa ggtccaatac + 1741 ggcgcccgat gcaccgtaaa acaggtcctc taactgtgtg ttctacgctc tccggatcct + 1801 gtatataaga acgaatcccc ttttcctagg gcccggccgc gtagacccag tacacttgac + 1861 tttcacgaag atccatccta ctcccatacg cttgagagtg ccaacgtagt ttgtaaccga + 1921 ccttgcctcg gctagaaagg cattttgtcg catgtggcca gcctgtcagg gcgtgctcta + 1981 ggcttgacga ttagtgctac gggatgattc gtaaccgagc tgacgggacg cctctggaat + 2041 tcggtctctt tcgatggtgc ctcctctacg tagatctact ggataaccgt ccccaatatc + 2101 cgcttcccaa cgtagattgc cgacaggcat aagcttcggg ggcgcaaagg ccgacgtccg + 2161 cattgcagtg tagctttgtg agcaggaagt gtgatagtct ttcgattatt aaagtctgag + 2221 ctgaatgaaa aaaggtccaa cgaatggagg acgcgaagac atgggtgtct cttatggccc + 2281 gagcgggagt aatggcggtt cgtacataaa ggctgaaagg attctggcgt tagctgtctt + 2341 acgttggatt ggcccttcaa attatcgatg ttagctgatt cggtgtaccg ggcgaggaaa + 2401 gcgctctcag aacaacttca tatacgaggt tcgactataa tggtctaagc tcctgggcta + 2461 gtctcaagaa gcgggtacct ttagtagcac gtatcgacgg caaagcaaag aataaaaact + 2521 tggctttgca tcgtgcaaag atttctaact aggttgttta agggctggta tctatgtccc + 2581 gctataacag cgcgcctaca gtagaagttt aaccatgaca tacctttgaa gtgttcgtat + 2641 cacacacaag gaaggagcat gtggacacca ctgagctttg ag +''', + '''LOCUS part_D 2682 bp ds-DNA circular UNK 30-OCT-2019 +DEFINITION . +ACCESSION part_D +VERSION part_D +KEYWORDS "Source:Subcloned from vector Andrew" "Sequence" "Freezer" "Shelf" + "Box:Mobius box" "Concentration" "Use:Mobius". +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + rep_origin complement(262..850) + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 2642..2671 + /label="another feature" + /ApEinfo_fwdcolor="#b1ff67" + terminator 1991..2034 + /label="yet another feature" + /ApEinfo_fwdcolor="#c6c9d1" + CDS 2054..2566 + /label="feature" + /ApEinfo_fwdcolor="#84b0dc" + misc_feature 1919..1938 + /label="another feature" + /ApEinfo_fwdcolor="#f58a5e" + misc_feature 2050..2053 + /label="yet another feature" + /ApEinfo_fwdcolor="#f8d3a9" + misc_feature 2576..2641 + /label="feature" + /ApEinfo_fwdcolor="#b7e6d7" + terminator 10..67 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 143..162 + /label="yet another feature" + /ApEinfo_fwdcolor="#75c6a9" + misc_feature 2675..2678 + /label="feature" + /ApEinfo_fwdcolor="#f8d3a9" + CDS 2618..2641 + /label="another feature" + /ApEinfo_fwdcolor="#84b0dc" + CDS complement(1148..1807) + /label="yet another feature" + /ApEinfo_fwdcolor="#b7e6d7" + terminator 1033..1127 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" +''', + 'Metadata1 for part_D', 'Metadata2 for part_D' + ), + ( + 'part_E', + '''ORIGIN + 1 tggctaggtc tccgctttga tcagcacgcg tctcagagtt tcagggggac ccaaattact + 61 ggtcctcaat tgggacgcga ccgcatctcc ccacgaaagc ttatggggat tgcccactgc + 121 ccagcttcaa atctgaaggt tcggcttatt gacagggtct aacacgcagc tcaactgctc + 181 gaggttagag gcgtaatgac gggccccgat agccttctac gattacgtcc agcaggaacc + 241 ccacagcttt tccctacgtc taacaccgtg aaagcaaaac tgtctgccct tttacatggt + 301 ctttaaggaa tctctgcact tatgttatta ggtatgagac ctagcca +''', + '''LOCUS part_E 347 bp ds-DNA linear UNK 20-OCT-2019 +DEFINITION . +ACCESSION part_E +VERSION part_E +KEYWORDS . +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + 3'UTR 21..330 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 1..13 + /label="another feature" + /ApEinfo_fwdcolor="#faac61" + misc_feature 18..20 + /label="yet another feature" + /ApEinfo_fwdcolor="#b1ff67" + misc_feature 14..17 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 331..334 + /label="another feature" + /ApEinfo_fwdcolor="#f8d3a9" + misc_feature 14..17 + /label="yet another feature" + /ApEinfo_fwdcolor="#f8d3a9" + misc_feature 335..347 + /label="feature" + /ApEinfo_fwdcolor="#faac61" +''', + 'Metadata1 for part_E', 'Metadata2 for part_E' + ), + ( + 'part_F', + '''ORIGIN + 1 accctgcagt ccgctcacgg accgcaagga cgggctaatt aggaggcaac gccgatgggg + 61 ccgcagttca gcgctgcaat gtttgctgaa cagggatgtc acgcatactc gtctacaccg + 121 cccgtgaccc gttatcacgg ttgaagtgtc gaggactagt gctgccgctg cgtgagggac + 181 acaagctgct atttgtccat acgccatgtg ctccgagctc atgctgccat gagacaatga + 241 gacatgtcgc caataatcga gtgacgagtc agaatgacct ggctccgcat aaccgttcaa + 301 agttattgac aacgcatctt tcgtagttcg tgcagcagcg gtctttcttc tatagccgac + 361 tagatgttaa gggactcctg gataccgcta gttttaccct ctccaggaag ccagcgaggg + 421 cgtgccgcaa gtcccaatag ataccgggca tgatcaaggg gccctgtgct ctgagtctgg + 481 aggcgacagt gcgctgcagc tcagaggtgg ttattgcgaa ccggcaccgc tggacagcac + 541 ccacggggac acgtaagtaa tttagggtct gggccaacgg ctcagcgcca gtaggattaa + 601 caaactcgac taatcaatgt gccagctact tccgccgggt ctgacggggc ggcacccatt + 661 accatgtgta ctgaataggg attccgagcg accgtaaagg cgttcctaag tgtcatatac + 721 tggcaactag aggcactcac atcggggtta agggcccacc gtaatggcca cgcaggatac + 781 caattggccg ggtgaggatc tattcacgcc gatggggagt tctaagcccg agttattggt + 841 gctagtggct tggacctgtg tgtcgatgat gcgcgatata gaggcgcggg actagctggg + 901 gtccacaggt gctatgttgg gtgcgctcta tggacgtccg gaaagagact aatgcaacgg + 961 tatggcatca agcgcgaccg atggggagac tggaaattgt gaaatagtgt actggcgcga + 1021 tcattaaata ttgcatacgc tgtccgttat gacctagagg ggattatttg aacgagaggt + 1081 cttgggaact gcattggaga tggtcagatg gaatgcgaaa tgtatcacca cgggcggccg + 1141 aaggggagac agactatccc tagttggctt cggtaaccgt aatcagatgg aacggcgggt + 1201 aatgctgata ccgagcgctc gtacggcgcg tggtgatgac acggtctgat gtcgtagcaa + 1261 acgagccggt cctcgtacaa caggctcaca tctcaatcac gcataccaac cgattacata + 1321 acgcgatcta tatttgggga actctactta ctaccctgtc tgcagagtgc gttctatgat + 1381 cctcccctac gtgacggcca acgattagtc ggcctaggtc taacggataa aaggactccc + 1441 cagtacatgt gaccatatga gccaggccgt cgagcgcgac cactccccag cctatagtga + 1501 ggaggagcgg tattcggtta aagtttagct agcgactttt ttgtcaccga agtagggacg + 1561 ggcatattgt ttacccttaa agcggggatc aatccattgg ggtcggcagt cataaaagga + 1621 tctaagcccc caaagcgcat ggtaaggtac tcccgggttt cccgaaatct aggcaagtct + 1681 cggtgggtgt cagcctgacg agtagggcac gttaccgagg ccacggtgct tgatgactac + 1741 gggtgaatcg aaccgatcaa acgcacagca tctaaaccct ggtgtactgg tccacagggg + 1801 gacaagtctt tgaagtgtcg cttcagatga cggccgcggg ccaatctgaa ttgttagaca + 1861 ccgacagtag ggtgtgcaac tcgctcgggc aagagtgtaa aggcacatcc tccccgaggt + 1921 aagttatacc gctctaacgg cgcgggcagc ttttcaactc aacacttccg cggttcagtc + 1981 ctgagcatta ggctgcatgt ctatcacaag aggtgcgggg aacgacaagg gctctggaat + 2041 tcggtctctg gtaagctccc ataagagcac cacttcgtgt accttgctaa ctcccttcat + 2101 ccccacccgc gaaaacttaa gacgtcaccc ctgttattat cccgtgcact cctaaagtgc + 2161 gatgggcaag aacgcaaaca attgtctgag atttatatgg gcggcggaca tagtcagaga + 2221 gccttatata atctcccacg tcttgccagt ccgagttatg agaaacccgg gaccgatgac + 2281 gctattacgg tcgcccagcg aggttcaaca gagcgaggca taggagtcat tacgcgtgtt + 2341 agcttcaaca tgcgtggaag tgaaacggat ctataaaacg gcgtggagtc atcagcttga + 2401 gcagatctaa cttactcgcc acgcgcgcaa atcgtctttc gctgtccacg ttatacgtaa + 2461 ctcgcttgag +''', + '''LOCUS part_F 2470 bp ds-DNA circular UNK 20-OCT-2019 +DEFINITION . +ACCESSION part_F +VERSION part_F +KEYWORDS . +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + terminator 1991..2034 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" + terminator 10..67 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + rep_origin complement(262..850) + /label="yet another feature" + /ApEinfo_fwdcolor="#ffef86" + CDS complement(1148..1807) + /label="feature" + /ApEinfo_fwdcolor="#b7e6d7" + misc_feature 2054..2462 + /label="another feature" + /ApEinfo_fwdcolor="#faac61" + primer_bind complement(2351..2371) + /label="yet another feature" + /ApEinfo_fwdcolor="#85dae9" + terminator 1033..1127 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" +''', + 'Metadata1 for part_F', 'Metadata2 for part_F' + ), + ( + 'part_G', + '''ORIGIN + 1 tggctaggtc tccggaggaa cttctatggg acgaaagatg cgcagctcga caaatctcaa + 61 attggaaacc gtctaaggtc tttgagccca cgctaggcca ccgaatagtt gcgagctcgt + 121 gggcaattgc tggctagcgg tttgtatcgt atacgtaaca agagattgcg ccggattcat + 181 tcgtgtgggg tgctttcaca tcggaatact caagagtggg ggtttgcgct ttaatatgac + 241 ggcctcatgc accccaaaaa taagagcgcc aatttcatcg accacattcc ggacaattct + 301 gacttccctg tcggatcgac cctcgctcac aactcctaga actccaagac ggtaggacgt + 361 cagccgaaaa ggaggagtga cgacgggccc tcctagctga agcaatgggg ggcgtcgacc + 421 ctagcctggt gtgggacttc ggagggtcgg gcgtgtggcc attcctgcac gaggggccct + 481 tgcagtatcg aactttgacg agaaagtggg gggcgaccta taaacatagc ggagttcaat + 541 actcctgcaa gtgcatgatg acgttcagcg ttggcacatc gaacgcgtcg ctacacttgc + 601 tcaccggaag gcaaaataga ccggcagctg gcccgcacgg acgtctagac tcctacgctg + 661 tcaaatgcac gatgactatt agcatgcgga attcgaggcg gccggtacat cgagacacgc + 721 tggtcttaat acctgtgtta tgtcaaaaca agtgtctcgg cggctttgta ctacgctgtg + 781 aatgcgcatg atgttgcgag aagctgaacg ttggtagcag tctacaacag aaccgacgag + 841 ctacggacgg gttacagcag gatcccctct taaggcatta ttcgacgact ccaggttcta + 901 accgatcagt aattgcctcg gatggtcgta cgtgttaacc gagacagcaa ggcaccacat + 961 agacaactgc atagggcgcc tacaggtcca caatcagggt ggcccaagat cctcaaagac + 1021 ttgttgcagt ctctgcttat tccgtttaac acgttgtgtg agctctagct tactacctca + 1081 tcggtgtcgg gagtgattta ggaatgtgag acctagcca +''', + '''LOCUS part_G 1119 bp ds-DNA linear UNK 25-OCT-2019 +DEFINITION . +ACCESSION part_G +VERSION part_G +KEYWORDS . +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + GoldenGate 1..13 + /label="feature" + /ApEinfo_fwdcolor="#faac61" + GoldenGate 1107..1119 + /label="another feature" + /ApEinfo_fwdcolor="#faac61" +''', + 'Metadata1 for part_G', 'Metadata2 for part_G' + ), + ( + 'part_H', + '''ORIGIN + 1 aacatggatc cgttacacaa ggtctactcc gcgatgtggg ctcaccccct agatcccttt + 61 tcctaccgcc cgatcgcaaa ctacgcgtag cttcacggct ctctgtctgt cggctgacct + 121 gcggctcatt tttcatccat ttagtatagg ttgcaagggg tgtgactgat ttctctacat + 181 aaagaagcct atagtaccac atgcaatgcc gatccggtga gtgctgtagt ccttattccg + 241 gcttggtggc ctcctgccac ttaggatcgc aacggaattc tagttcctaa cgtcccttct + 301 acctgattaa gtgagagaaa acggaaccaa cctaagacat ctatgcatcg atgttttaca + 361 atgacgagag tgctccatgg ttcatactgg ggacatagtt tcgggcattt aggcccgcaa + 421 gagttcgggt atctagtttt tccgtacgaa aaacaccacc ttagaacagg tcacacgagt + 481 acagagagta aacccgtaat gttttcaccc attccccgat ttgactgcaa acaaacaagt + 541 ctccccgtat cgcttcattg ttttatcaac gggggcggaa tcgtagacca ataattaacg + 601 acaactctag gcttttcaac cgacgggggc aaagtctgaa atgcctgaga aaggcacaac + 661 gacggtggga ggggcccctg caaatattgt tctagcactc caggattcac accaacctcg + 721 gggccagcca ttccggtact tttggttata cggcaggata ccacgtccct aagcggagta + 781 tacacggagt tgccttagcc aggtacccgc ttaaccgtcc aactcccctg agtggtacgt + 841 ccatcacgcc gcgtaaacgg tttccaaaag agtaagctta ggcattcctc acctgtcacg + 901 tccctcttaa gatccctgcc tcgaactggg atcttgtaaa aatgtggcca tgggagcagg + 961 agttcatgtg gggcgacggc gatcggacgc ccctttaaac cagagccctt gacgctagga + 1021 gatcagtaga gttacccgga atgagatctc taatctaagt ttgatacgac gaaagcggcc + 1081 tgacgggcgc tactcatgct cttagaatcc gtcacttatt ctgccacaga tccgaggtac + 1141 tgtggatgtt atttgcggag actggcctcg gattaggggt actaagtccg agatgtcatg + 1201 agttaagccc aattcactag ttgcattgtc aacgagtgga cctccaaaac gatgttaggg + 1261 tcactacccc aagcgagcac ctccgctagg accacacacc cccactttca aggtattttg + 1321 ttcgcatcac ataccgtctt ccctttgcgg tctaatagtg aagcttggga caaggaacgg + 1381 ccagtcgcag caatactacg agtgagagtc ctaggcgcaa ctacgtaggt tccgcaaacg + 1441 tgttgtggat tactgttgag gtttgagttt atccggaggg ctgtgtaaga attaccagct + 1501 agtcaaaagc cctgcatggc ctgatctcat tagatacctc ggccgggccg aggcaaatcc + 1561 gtgaacaaaa accatgcatt tattctatca tagaaacatt tgttacacat ctactggccg + 1621 tgtgccgtga acaagaactc aatttagtta tcaagggact gctgtaaacg gagccgcgtc + 1681 acccgcgtgc acacgtgtag tgcttacgcc ggcccccgtc cagcgacacc gtagtcaagt + 1741 aaaaaatgcg tattcacgac ctcacgtacc cgtttcggag ggtgccttga cgcatagagt + 1801 tgtctgtgtg attggaattt gtaaggggtc cgcccatgta aaatagagcc catgtcttac + 1861 gaggacatga ggaaacatag gttctggtgg ccttccaaga agctgcctct acactccttc + 1921 tctttaatca ccgaaaacct taccttgaga ggacgtcatt cgtcaaaaca aaatattggt + 1981 ggcaaattaa gattaccact ataggcggtc tcaaatggaa gacgcgttta gtcttcggcc + 2041 cccagacggc accggcagag ccactgccaa tgccttttac gctgaactct tcgactttgg + 2101 catgtgcgac tgactatacg ccgatggccc taccctgcag cggaaaggca cagggccaaa + 2161 aacagtggaa gcgcaccgct agagctttac taaatccttt agggtgaacc ggtgttcagt + 2221 caacagaaac atatgactag tccttaatgg cactactaaa ggcggcccat ctcttttgta + 2281 ggtcacgtct catcgtttag caagcgtccg ccatccgagg agtatcctag tacgtgagag + 2341 ggtgttttac ctcatcacat ggtttttggc tagatgtggc agatgccagc tgatacctta + 2401 caacccgcta taacggtttc tggatcgacg atacaacctg cttcggcata tcataatggc + 2461 ggcctcatag gacttccaat catggttatg cgagtttgat gtgttgaaga ttgtgagggg + 2521 aaaccttttt ccgagtacgt tgaatctgcg actgatggtg aacaactcat cgagagggat + 2581 gtgcgggcag tctccttgat gcgcgaaaag gagtcgcgac cgcgtgttcg tgacgcactt + 2641 gatgctagac cgtaggggct cattatctcc tgaaacagta gctagctttt ggtgtccgag + 2701 tcagcttagg cacagtaatt gaaaagaagg aaatgcgtga aaactaaacg tagacactcc + 2761 ttgctaagaa ttccctggtc tttttcgagc atagactacc gtaggtaaaa ggcttgtcgt + 2821 gtcacaaata gacttgatct gttcggcata tacacatcct actgcttcag taaccaagga + 2881 cgattctccg gccattggac tgtgggacca cccgcgttca aacggaatcc tctacgaacg + 2941 gttaagaaag gagcccactg cttgcggaga catatcgttg ctgagtggta caccggtgag + 3001 tcaaaaagta ctgacactac tggtggactc tcgggtacga tgtgtggggt attggcatac + 3061 tatggcgcta agcgtggaat agtgtttcca atagcccttt acctaagaag cattctgaca + 3121 catgggttgg acttttacac agacctataa ctcgtatccg gcctggtgat gtatgtccgc + 3181 ttatcactga atgcaggatt ccgccaattc cgctcgcggg ttctcggaca acgggccatg + 3241 gagatggatc aatgagccat gttgattacc atttcactac acacggttag tcaattccgg + 3301 agatcataat tcgacaattg aatatgcgtg atacgctttc tgttaccagg atcgttgcta + 3361 attagtttcc aatgtcacag tgttgggcgg cgaggtatca cggcgctctg ggtagaatgg + 3421 cggtgcctga ctggacctca taactggtaa catacctatg accaaaggag gtcagacacc + 3481 gatgagtcgg tgacatgggc ggtcacagcg tgccctgcat agtaatacag ctcgtttcta + 3541 gacatttgtc ctaattcgcc acacaagtac gagagcgggg gtaacccatc accatcgtgc + 3601 ccgtaggtac ctaatcttca tcgagcgcta ttgttaaagt ggactcaggg atcggcatct + 3661 cgtgtagctt tgagaccggg gcccgaggat gtatgccttg catggaactt gactaatctc + 3721 agtaatactg gccgtgtatt ggtgtgtctt ccttggcctc acatgggaac attaccacat + 3781 ataacatcat ggggttcagt ctattactaa cgaagtcact aaaacgtact cgacggcgca + 3841 tgcgagtatc gacgtagcgg ttggttacct taagctgact tggtctatgc atacactgat + 3901 tagcttgtag cggtggcctt cgacgtctgt atcgtaggcg ttgtttgttg caaacacaaa + 3961 cgacctagcg tcaagacccc ttctagagaa agagagtgac gactcttgtc agttcaactc + 4021 tgtggtacgc cgctgcgaga tgcgcgttgc cacggcagac cccatgaact cgttcaagct + 4081 aaactctagt tcacgctaca tgtgtttgtt tctgcgtacg caaaagtact aggtacagct + 4141 atcttttggg ccccaagtgg gaccacactt tcggtcttcc tagcaaggct ataaaaccgt + 4201 atggcatgag tccttgatct gcatttcgtt tagacagagc gagatg +''', + '''LOCUS part_H 4246 bp ds-DNA circular UNK 07-NOV-2019 +DEFINITION . +ACCESSION part_H +VERSION part_H +KEYWORDS "creator:militzis" "marker:SmR". +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + primer_bind 1966..1982 + /label="feature" + /ApEinfo_fwdcolor="#a020f0" + terminator 3774..3860 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + rep_origin complement(63..651) + /label="yet another feature" + /ApEinfo_fwdcolor="#ffef86" + CDS 2015..3667 + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + promoter 1987..2005 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + CDS complement(744..1535) + /label="yet another feature" + /ApEinfo_fwdcolor="#b7e6d7" + misc_feature 3667..3670 + /label="feature" + /ApEinfo_fwdcolor="#ff0000" + terminator 3952..3979 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + primer_bind complement(3694..3710) + /label="yet another feature" + /ApEinfo_fwdcolor="#a020f0" +''', + 'Metadata1 for part_H', 'Metadata2 for part_H' + ), + ( + 'part_I', + '''ORIGIN + 1 accctgcagt ccgcatccaa gcttgctggg gcctctatcc gggacctgct tccgtacccc + 61 gtccgcctat caggctaacg actctgcctg ccattcaggc tcaccggcaa gttggagtga + 121 cctcttcatc gatacaaata gcgcatacgc cagacatacc gcccacgcac tcgaccataa + 181 aattccccgt cacggcgcgc acctccacac tccgtggcct aaggaacgtg gcagccggct + 241 gggccacttt ttagactacc atcggctcat ttttagaagg ccaccggctg tccgtcaatc + 301 gtacccgttt aggcctcctt aacacagttc cgaatagtta cctcaagatg cggatacagg + 361 atggctcccc caggggtcta gttcagtctt ttgtcgcctg cgcttgaacc tttatgcagc + 421 gatccacaaa cggaacaccg agatttgtat ttgggagggc aggctttgga ggaacggtgt + 481 atgtactttt gcttggtacc ctaggtaccc cacgatctaa tcggtcttcc tgacaggtga + 541 cagaggaggc cgtaactgcg accacaggct aactgcggcc ttaacttatg gtcgcgaact + 601 gcataagggc gtcgccgccc gttgtcagtg cgaattctgt tagtcgtcgt gtacaccttc + 661 cggtctaaca tctcgtagtt actagaagag cggatgggtc ctgtaaagag agcaggttcc + 721 cgtcttctct cactttaccg gtactggtgt gaccgggtgt gagtgatact gtgattccgc + 781 tactattgct atgcctgccg tcgtagctag atacgatccc agaacatttt gggctgattt + 841 caagtctctc cgggattccg taacgacggt tctcgaactg aatagctttg agatatcgca + 901 atattccttg gttgactctt gtccccggga cacaagtcgt gtgcaatatg tatacgtcag + 961 tatgctcgag actcctaagg ccgcatatct atgctatcac tattgcctat gcagtaactg + 1021 gctaagcttg tggggtactt gcacatgact catgtcaagg tcggaggatt cccagacagt + 1081 tggcatcatc agtgcgttca aggcggggag cgaccagcca gatattgatc gacgaggtgc + 1141 cacgaagtgt tccaaggtta tttttagtat gttacatcca tcagcgggtc taggccatac + 1201 cggtctatat tatggtgagt cgtataggct gtaatgccgg ctgcacaatc tacggccgat + 1261 tgcacataaa atggtcaact aacgacaagc tctgattctc aacttggata aaccttatca + 1321 caaaaggtcc gacacggttc agccgaggta aatcaaagtg attatgactc caggagcgac + 1381 acaaagttgc actgtctact gttggtcatc accgtactgc aaacgggtaa agatacttag + 1441 ctttgttagc tattgcagaa cctaattgct ttcctgccct aaggcgatcc ggatcctcta + 1501 tttatcaagt taattatcag agcttagctc aagtcaaagg tcttagtcag gtatggttta + 1561 gtcggcttat ctcgctccga taaacccctc gcgcctcgga ttcattcacg cgtttatatg + 1621 gtgaggggcg acccgtaggc tagtcgcact cctcggcaat taatcctaca gaaacctaga + 1681 catgggagtt gcgatcctcg agatacggcc tgagagggtc ggcaaagtgg gtgcttcatt + 1741 ctcttcggcg gagttcgcag gctctagaat gcctggtttt catctcgaca taaattacga + 1801 tgttatctcg tgcattatta ccccttttct gcaggtttta agtcgagtct agtcttacta + 1861 acgctgttct tcccgagaag gtgtccaggt tagatctcgg catattttca ctggcgcgct + 1921 atccgacagg aagacagcac ccgttaagcg ccccagtcac atcaagatca gtcctatgtt + 1981 gactcttgct ggaggtcttc tcgaatccag ctaatgttgg attacccgcc cctctggaat + 2041 tcggtctctg cttttattat ccggcatgca tgcggcgttg catcgcttca tcgtcatcga + 2101 catatcgtta gcgggactta tcagggtccc atcacggctg tgacagctgt tcataagtgt + 2161 aatagcagtc accccaccaa atgcaagact gttcccaaac taagtgctag ggaggttggc + 2221 tacctatcgg cgtggcagtt gaccgggttt ttcttagtac ctgccttcca atctccgata + 2281 aaagcaagat gacttcctgc ttgcgctaaa gtctgaattc gctaaggggg cagattcatt + 2341 accagagact gccaaagtca accgccgaac gatactggaa tatatggagg tatgag +''', + '''LOCUS part_I 2396 bp ds-DNA circular UNK 29-OCT-2019 +DEFINITION . +ACCESSION part_I +VERSION part_I +KEYWORDS . +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + terminator 1991..2034 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" + terminator 10..67 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + rep_origin complement(262..850) + /label="yet another feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 2054..2388 + /label="feature" + /ApEinfo_fwdcolor="#f8d3a9" + CDS complement(1148..1807) + /label="another feature" + /ApEinfo_fwdcolor="#b7e6d7" + terminator 1033..1127 + /label="yet another feature" + /ApEinfo_fwdcolor="#c6c9d1" +''', + 'Metadata1 for part_I', 'Metadata2 for part_I' + ), + ( + 'part_J', + '''ORIGIN + 1 ctcatgggag tgtagcgcta gccatagttg acctgtcagc cggtcaaggt tggtccgaac + 61 ctagccagtt agacgaccag ctcccccact attgcacagt gcctgtataa gcacgtcagt + 121 gtctggcacc actgtgcgcg gtgtggtcct cgggacgatc ttcctacggc tacccatgcg + 181 ctagtgatta cagacgatcg ttttttcttt ttctgtggtg caaatacaca agatacgtca + 241 agagtcctag cagcctcatc ttgccaattg caggggtacc gattcaccca tggtatcagt + 301 cacgcaaaaa aagacgacat cggagttgct ggcgactggc aaaagaaaac atctatctgc + 361 cgtggcgttc gtctagcgca gcgagccgac tgactactcc gttatctcaa atttagtttc + 421 gtaagatctt cacgggagcc ggccagctga agaatctata ggtctaccgc tagaggaagc + 481 ccgtttacaa ccgacgtact agtccgacag caatcgtcag catgccaatt tattgtatca + 541 ggttgagaat gcaccactac ggaatcgacg tgccactggc cgcacgatac tagtgcgctg + 601 gtaaacaggc caggagctct aaatctggag tggtgtgaat ttaaccgcgg aacgattgtt + 661 gcacgcggtc cctgtgactc tgttgggagc actgtccccg gctccggata agtgatgtga + 721 acgaaaaggt gggctgacca gagatagggt taaggacggg cgatcgtagt ggacgattac + 781 tgctgatctt ccgagcactc tgagtcgcgc ggcgtatcgg gagttacccc gctcgctaca + 841 catctgaatt ccgccggata ctatgggtgc agagtggatc accttttcgt gacccgtata + 901 ttcgtcgttc tcatcactgt cctccgcgat ttatttcaat cgtcggtttc gccagatgca + 961 ttcctgggga agtcatcgcg acagtgcgct gcgcgcacag ctcttcttgg tttattcgag + 1021 attgtggttt atcaacatgg tctatctacg gactgattag aatattccca cgttaagccg + 1081 acgtgcattg gtactggctc cttaattaag cgcagagggt aggcgccttt tcttgtgcaa + 1141 accattatat gaggaactag caaacactat ggcgcaatat gtccacgtga ctcgagcatt + 1201 ctgtgttgcg gtagcgattt cactagtcac aaacggatag attctacggc gcacccggtg + 1261 catcgttgta tgttcagcaa tttggtcata tcccgctcct ctattcaatc tcttttttcg + 1321 tcaggggggg cacatacttg gagcagctgc gcctaacatt acaataagca gtcggagctc + 1381 agtacaaaac ccttatctta gcggtccgtt ctggaattcg gtctcaggag atatgcaggt + 1441 gtttacggct aggcacttac gcgaaatttc agctcgcggc aaactgtgct tatgcgactt + 1501 cagctagtcg tcatcgagtg ctgacgcgct tgttctacct taaggtgccc gctatcgcat + 1561 tgtccagggt tcggctatga gggtcggaac cagatcgcac ctacatgatg tcacgatact + 1621 attattcacg tcgttagaga acggacggtc cttcgtcctc acaggaaaat tattagaaat + 1681 ggtcaaccgg gtccacaaac gggcaattgc cactttggta gtacggttgc acataagatg + 1741 atatttacgc cttctgcgtt caggttacga tagtcgttga tggggctcgc tccgggtgaa + 1801 gttgatccag taaaatgggc gtcgatactt ctcctgtgag ctaagcgtct aaattcattc + 1861 ctagtctcgt gacgagaaca gaaaagacta aaccacgcgt gatggacctt ggtaagcgct + 1921 tgtcggtcta acttgtctca tctcacacgg tatgttcttg tgagcgctga ccagcccgtg + 1981 tccctgacgg ggaattcatt ctaacttacg gcttgggcgt cgtgatgttt cggaatccag + 2041 gatattacac agtagatgta gcttgtggcc gaacgagtgt atttcctgcg tcggattacc + 2101 tcatttcttg ttaatctgcc tacaattaag ccctttcagc agccttccct ctcgtttata + 2161 tttcgacagt caccgtgaca gtgtgatcga gctgtgggaa aatcacaata tagacgttag + 2221 ttgcttcgac agaaacggcg aatgtacgcg gttgtgatgg atgagacagg ccattcaatt + 2281 ctattcagcg aagttcagat tggttgctac tgctaaagga tgcgcatttg tcctttctgc + 2341 gcacctgcat atacccctaa gatgccagcg caatacggca tcgcagggca agcaacaccg + 2401 cacagcatgt ccctaaaggg aagatttaat acggactcag tcaagttgtg agaaacgaca + 2461 atacattgag tggaatgccc tttggtacgt tggcgataga tctaacgaga aacttcaacg + 2521 agatctagag tatcggactg agatgcatca tggctaggga ttgctgaatg gatatctttg + 2581 ccaaaatgag ctcgactagg aatctcagac tgccagctac gaaaagctgg gggatattca + 2641 tttccgctct tgtaaggcgc acgatgaccc tgtggagcaa aattcgacgc ggcaacgtag + 2701 tcaaagtacg gcctatctgg gacggagatg ggattgtttc tgtattcatg ccggcctctt + 2761 gagattgtaa ggatacccgg ccacagtctc gtaagaaacc cgatatcgct caaacgaatt + 2821 gacatcagtt agggcttgcg ctctagcaac cacgcgtcgg gtgttcgact gaatttaaga + 2881 tccagcgcaa accattcctt aaaggcggtc caggtgaaac cggctctgat aatgtacagt + 2941 ggattgtcca gttcgcttca aagtgcaatc aggcaaggta ctggcaagtc accgcttggg + 3001 gccggtttca gtggagcttt atcgacaaaa ggccgggccc tttggcctag agctcacttt + 3061 tggtgtcgtt cacgagtgag aactttggct cgcagcttga atgcttgtca cgtttagggt + 3121 tatacaacgt ttctataaac tacctatgac aaatcccgat cttctgaaac tccataagga + 3181 ctaagagagt ccgcgacagt ttcacttggt cggtgctatt gactatgtca cgcatgcccg + 3241 gtaaagcttt taagcaaagc ctgatatatc acgggaggtt actcaaagca ttttctaaag + 3301 ggacagcgga ctcacattag cctaatataa acccgatcag gccatgcacc tcgattcacc + 3361 ggaaggtagt accatgcacc ggatatttgg gacaacagtg aatagtacat cgtaaaatgt + 3421 caaggcctag ctatttttca ctggtgtctt atctctatta caacacacac ggatgtcccg + 3481 agcctacact ttcaaatata ctcaaggttc gctgttaagg gtaatacaag agtgctcggt + 3541 ttagtatcca tatgttggta caagtgactg tgctagccgt aaattaattc ggcttccatt + 3601 ccagcttggg tgtttagggt ctagacggtt gaaaccagaa agagtacaga caaaaccgta + 3661 gctctcccaa ggttgatcct ccagacacct acccacacta gtagcgcagg cctagaggag + 3721 acgttaggag cggaattgta cattcagtat cgcattaagc acaaagacag acaaacctag + 3781 aagccactta tcccctcgta ggagtacaac ggcagcgctt tcgggaggag ttgcctaact + 3841 acgctctgga cagcaagtcc cagaatgaag aaaatgactt ggcgagaacc caccactaca + 3901 tgcagggtct tgggaccggt cagcacagct tatccatgcg gcaattccgg acgaccgcga + 3961 atgaggatca cgacactgcc gatgttgcac cattgacctt ctcctatgca acaagggctt + 4021 aagatggtag atggtaatag agtagcctgc gaccttatgc ggtaatacac aaaaaccggt + 4081 aaacagtgcg ttgatgctgt gtgctggcgc atttgtgtac cttgctgggc tcgtataaaa + 4141 ttctgtcagc aggacgttca cctcccttct gctagtcgct aggcacaaac ggaaaaggtc + 4201 taatcgcgcg cgtgctcgtt agagtactgg ggcctcccac cacggatgat cacctcgccg + 4261 atacatttgg ccttatgtct caataagacc tcatggtcta tcctacacca tagatttgga + 4321 aagtctagtt gctgcctagc aggctgatag caagcgtcgt acgaggatcg aggaagggca +''', + '''LOCUS part_J 4380 bp ds-DNA circular UNK 31-OCT-2019 +DEFINITION . +ACCESSION part_J +VERSION part_J +KEYWORDS "Source" "Sequence" "Freezer" "Shelf" "Box" "Concentration" "Use" + "creator:SynthSys Center" "marker:SmR". +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + rep_origin join(4298..4380,1..166) + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + promoter 1442..1476 + /label="another feature" + /ApEinfo_fwdcolor="#85dae9" + misc_feature 2345..2362 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + CDS complement(2550..3341) + /label="feature" + /ApEinfo_fwdcolor="#b7e6d7" + misc_feature 1187..1210 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 1366..1396 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + CDS complement(2550..3455) + /label="feature" + /ApEinfo_fwdcolor="#993366" + misc_feature 2421..2449 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + -35_signal 3766..3771 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + CDS 167..1186 + /label="feature" + /ApEinfo_fwdcolor="#993366" + misc_feature 2526..2549 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + gene 167..1186 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + -10_signal 3744..3749 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + CDS 1503..2222 + /label="another feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 1409..1426 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + -35_signal 3589..3594 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + terminator 2227..2298 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 1319..1343 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 1370..1394 + /label="feature" + /ApEinfo_fwdcolor="#f8d3a9" + misc_RNA 3625..4177 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + terminator 2314..2341 + /label="yet another feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 2364..2474 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + misc_RNA complement(3628..3735) + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 4264..4272 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + RBS 1485..1496 + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 2353..2356 + /label="another feature" + /ApEinfo_fwdcolor="#ff0000" + misc_feature complement(2476..2516) + /label="yet another feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 3539..3562 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 1427..1430 + /label="another feature" + /ApEinfo_fwdcolor="#ff0000" + -10_signal 3610..3615 + /label="yet another feature" + /ApEinfo_fwdcolor="#b4abac" + misc_feature 1211..1258 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" + gene complement(2550..3455) + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + rep_origin 3589..4177 + /label="yet another feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 1414..1419 + /label="feature" + /ApEinfo_fwdcolor="#84b0dc" + misc_feature 2388..2411 + /label="another feature" + /ApEinfo_fwdcolor="#b4abac" + terminator 1409..1411 + /label="yet another feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 2357..2362 + /label="feature" + /ApEinfo_fwdcolor="#84b0dc" +''', + 'Metadata1 for part_J', 'Metadata2 for part_J' + ), + ( + 'part_K', + '''ORIGIN + 1 accagacagc ttccctgctg cttagagtgc catggggaat tgatctgtgt tcaatgactt + 61 taccataagc gcgcatcgtc attgcatcac gtgctttatc tctcgtagct agtagggaac + 121 aagagtttgc gaccactggt ggaatttcta gccgctatgt gaaaagtcac tagtagtatt + 181 aatagtcggc acatcgcgta cgcagtgctg agattcccct cactgttact tgagctagtc + 241 gcgccttgac agaccgcctt tcgaaggtgg cagagtgcct aatatattgc cacgttgagc + 301 gtactccttc ccggagtttc atcttaccgc cgggcgcgcg aagctacgtt tttcgaattt + 361 actaacgcac gctgacggtg gaagggcgat tggactggtt agattcaggt atgccttaag + 421 cgtactttac aaccagaggc tttatttgat tgtctaatct tcgtcaaaga acgaatacca + 481 gcgcttgagg ggtgactaga ctaataggag acaccgtctg tatcactcgt cggctatggc + 541 cgtactgtga acgcgacggg ccctaccagg ccacagattc ctatgtacgt tgcaagggtg + 601 ggctttgacc gttgcaacgg cgcactaggt ggcattcttc tctgctgcca atgatccgcc + 661 tcgccgagct aggggcgaag caggttatga cgcagcggaa cggtagtact atctaatatc + 721 aactaaaatt gtttctcaaa ggttcaaact agtattcttt attagaaacg atgatggcat + 781 ccggaacagg gttatggccc aggtgctgga tgaagccttg cctcgaggga cttagtcgcg + 841 tcgcccctct accaaggcgc taacggctag cgagatggtt gaggcgggag ccccgccact + 901 ttctagttga attcagagct acgtatcctg atgctaatcc ctcgaagaac tttccgatgc + 961 agctactatc tctttcgtaa agttagaata ggaacccggt aacggtggaa cgtcccgtca + 1021 taggaggttg tctcctacac tatctaagta cgtcagaaga tcgatttcct cagccgctga + 1081 ccccgtccgg catgaccagc gccgaacgta taggccgtat tgctgccgga acgactgctt + 1141 caaaggtaac catagccgtg gtacagtgac aacccactta gctattaaat catgcgcact + 1201 ctagacctct tgcacatacg gagcaactat gtatctaatt ggcacgagac atagaggagg + 1261 gccaatcaca gtagtttact ggtcgaattc cacctgcata tggagagaca ctccttcatc + 1321 aacagcagag gttacatacg tttaacctga ccgatggttg cccatcgaaa gcaaggaccc + 1381 acgggtaggc agctgttgtt tgatatgctt ttgtccccgg aaggcgccga taaaattata + 1441 cgccgtcccc cgcgtccgtt acgagcttcg tgatgttgcg ggctgaagtt ccctacgagt + 1501 caataggcca actcgaatgg ctaaatggtt gcaacccaca ggctcaactt tgaaggtaat + 1561 acgccaaaat ccaatatgct ctttcgggta gcgcataaaa ccttctgggg gccactgcag + 1621 acagtcatgg aggactacgt gcaacactac gctctagagt gatgatgtgg cagtcaaccg + 1681 agggctgtta agagaagtct gtgcacgaaa atcaatgagt cggtgtaatc ttcaccttcc + 1741 tacaaaccaa ggcttgaggg cctcaatttc gagcaccact tcttgaccaa gccgttcgcc + 1801 ggtataggag ttacgaattc gggtcgtctg ccgtctttga accatagata agtacctccc + 1861 gagtcgggag aacacgaatc gcatcagaac tcatcgaagg gtgttacttt gcccatcggc + 1921 atccccgaag attaattgca ttcgaaattt taacttcgag aatcatccgt gctaaccaac + 1981 gtggacgagc tatgaacgtt tacgtgttca gtatctagga attgacacgt ctccgatagc + 2041 gggagtcacg gcatgagtta cggcttttgt gaccagcgtc tgtgtaattt tattgacagt + 2101 ttcatatata gtgtctcgtc ttgcctttga gattcacagg ctgtaagagg gatgccgtcg + 2161 tgtatatgcc tgcagttaga gcttccttgt caggacgagc aactcactcc ttctggtgat + 2221 gctttgctag catgtagctt cgggtacttg cggaaaagga cagcctacag tgtctgcggc + 2281 ggtacgtcac taatatgaca tacgctgtgg acatcgtgaa gcggcgaatc gctccagatt + 2341 gaggtttaca gagtactcca tagtcacaca actcagaata tgcaggtgct gcagtgaccg + 2401 aatcctctca ggtcgcgctg gcggcccgtt tgagagtgct gaaagcgaag tttatccgca + 2461 ccgtcatcca gtgcacctcc cccagagaat gattacttgt gaatgcggtt aacctgaggg + 2521 ccgacgccgc gattaaattt ttaacgtgat gcacaagctg ggggcactct cccctggggt + 2581 caggttataa ttttaaaccc actacggacc tggactgcaa gatgcttagt ccacgcgtct + 2641 catagaccgt cggtctatag ccatgttcaa cgccgccagg ctgggcgcat aactgtatgt + 2701 gactttgtcc acatccaagg cgacgatggc ggcagttggc cggagggctg gctgtcaagg + 2761 ggccacgcgg atgaagggag ctcatacgca actatggagc gcggtatata gtataggatc + 2821 cgccgggaca cgcgggaatc aagggacaaa ggagcagtca gcgtgaaatc tttacgggtg + 2881 aagcgcgctc gtaccaccta gtcccgccta aggcccttgt gtcgtgcaac atcgctgggg + 2941 cgacggatga caatatgatc aaggcccgag agctttgaat gtaagaggcg tattataaag + 3001 cctaggtccg catgttgata cggggagcag cccatgcgca gtaggaaggt ccgaccaccc + 3061 ttttctgagg tctactccaa cctccttgcc gagtgctctc cgctatctcc acgcatagca + 3121 tactccgctt ctaacatctt cttcaaagca tacacgctac ttagcagagc aaatcgacac + 3181 gcccatggag tggtccgctc aaaccgcgca attaagtata agctaatgtg acggaccgga + 3241 cctacgattt cccccaactc gtggggatca gttgactcgt ctcagcttat gagacataat + 3301 tacggtcata gggtacgcct atgcccctca gagatctcta ggtcatatgc cctatcgggt + 3361 gctcggtgac cattgtctca tacaaagtca tatttggcag ggcttctatg gacgagtatt + 3421 atgtgcccaa aagggaacgt ctgagttggg attcgcttct aaccaatact ctaatggtac + 3481 ctaatttaat gtggtcgctg cgcaccccgc cgggtacaac tgctgagttc ctgagatcgg + 3541 tacggcaaac atcttttatc cagacgaggg ttctggccag aattgatgtt cagatacgag + 3601 aaggcatgtc atgtcacaag gattttggag aatt +''', + '''LOCUS part_K 3634 bp ds-DNA circular UNK 28-OCT-2019 +DEFINITION . +ACCESSION part_K +VERSION part_K +KEYWORDS "creator:SynthSys Center" "marker:KanR, BlpR". +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + misc_feature 1268..1284 + /label="feature" + /ApEinfo_fwdcolor="#b4abac" + CDS complement(join(3199..3634,1..380)) + /label="another feature" + /ApEinfo_fwdcolor="#b7e6d7" + misc_feature 2374..2377 + /label="yet another feature" + /ApEinfo_fwdcolor="#faac61" + misc_feature 2395..2419 + /label="feature" + /ApEinfo_fwdcolor="#f8d3a9" + promoter 1382..1560 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + misc_feature 2370..2373 + /label="yet another feature" + /ApEinfo_fwdcolor="#ff0000" + misc_feature 2389..2393 + /label="feature" + /ApEinfo_fwdcolor="#84b0dc" + misc_feature 1239..1261 + /label="another feature" + /ApEinfo_fwdcolor="#f8d3a9" + rep_origin complement(2510..3098) + /label="yet another feature" + /ApEinfo_fwdcolor="#ffef86" + terminator 2117..2369 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" + CDS 1562..2112 + /label="another feature" + /ApEinfo_fwdcolor="#b7e6d7" + rep_origin 671..1106 + /label="yet another feature" + /ApEinfo_fwdcolor="#ffef86" +''', + 'Metadata1 for part_K', 'Metadata2 for part_K' + ), + ( + 'part_L', + '''ORIGIN + 1 gtccgatgcg agcaccacct atagataccc taatcagcat ggtcccggtg accattacca + 61 ccgacggcct tgttttaaac gaaggcgctc actatacaag aaactaatgt ctcccacaag + 121 gctcagaccc agccggtgct ttcagcgctc cccgttggcg ccccccgaag accatagaga + 181 ggtgctctgt taacaactat aatgaaaggg attattgagg gagtcggagg tgaattctga + 241 agccttaccc ctacggtcgt ggtcatcatc acggatcgcg ataagcggcc ggtctgttac + 301 ggacgccact acgaggaggg tttcttggca atcaaggcta cgcattacaa ccatcggggt + 361 cggtctggct gaacaatctt gatgttcaac ctttgttacc ggctccttgt gttattatcc + 421 ggtttttttg atctatatgt ttataaggaa gcggtgcaga ccgtagagaa ataccggcta + 481 aggcagtcgc tcaatgcaca ccagcatcgc cgagacatat aaagccataa acattaattg + 541 gaatgctagt cacagcgtgt tgactggacg cttaaaagtt tctacaaaag gtatagtttt + 601 aacatttctc tgagttagcg ctatcgggtc gactgacatc tagaattgac acgttactca + 661 cctggatcct agtcacactc cgggaaccgc tcgcttagtg gcagtagcgg ggggcgtccc + 721 taggatagct gcgcaaagcg tggtttatct aatcgtggct tgtgtggaca tgatgctgtt + 781 caggcgcatc tgtggccgcc acagcattac caagctaatc agaaaccgcg gcatgtcccc + 841 gcgatgcgag aggcatctgt tagagccaaa gagtggaggt ctgtaatatc gctagcggag + 901 attttctaag gggcgtggga ctttatcccg atatggctga acgatccaac ggcaaatggt + 961 tctgccattg aactttaacc atgaatagac tccaggcgag ggataatgga aataatagca + 1021 ggaaatgaca atctactagg tgcgcactat caagattgta tgtttgcgta tcgtagttct + 1081 aatggtcttg tgtcccgtat tgggtcggac ggtgctgttc ctgatcgtag caatgcccgg + 1141 ttagaatcac gcatcggagc gatcatttcg ggcgatacgc gttcgttctg tccactcttg + 1201 tgggagtccg acgtatgcct gctcggtatt gttttattca ggcgacagta cctcccattc + 1261 aaatatacag ggttatacta cacaccacga gtaataaaga cttgtgttgt gccaattcct + 1321 cgtgggactg ccacgctcgt gagcttcgcg gttacatacc cctatgtccc caactgttgg + 1381 tggcaaatcc ctaatctaat ctattgtatc acagtcggtc aacgactgaa attggggcaa + 1441 caccaacagt gctcttacga tattcgtctg tgtctaacaa tccaacaaaa agctgttatt + 1501 atgatggagg atcttggatt gcgtcagtac tacggtgttg tacgagaatt gcatgatgat + 1561 tcctcgatgt cgagtccttg caagatcgtg atctatagcc aagctgctgc tgtagatcaa + 1621 cctcaccggg gcgggggtcc cattactatg ggcggcatta gagtaccata gatgaacgcg + 1681 agcagagaca tgtcaatgta tcccagtcct gcagtactac gtcagtctct gctcctgggg + 1741 ccaatgcacg cctgtagaat agggccgtgt tcccatgaga aatttgaggg acttacgatt + 1801 agatggcctt ggcaggggac tccgcgtacg tgtggggatg aaccggcacc ggccttggcc + 1861 ctgagtaaat gtaagcgata tcaacttcgc tattcatgat cagtggtatt cgtgtaggca + 1921 ccgaaagtcc cttggcgaaa gtagagacat acgatacgga ccgcaagcga gcagaatttc + 1981 agcacatgac agttattagc ttttttctaa tggtgctccc attatgattg tcaagtcccg + 2041 actgctagct gtaggatgaa acacatccac acacgtgtta ccatactgat tttgacacta + 2101 cttcctaacc gggccgaatg gtatctgctg cgatgcttag ttacgtaaca gccgaatgtc + 2161 acgccactgc atattgtggt tctggaattc cacctgcata tgtcacgcta gagaccgtat + 2221 gaggtgggcg gatagtggtg acttcaaacc catatgcagg tgctgca +''', + '''LOCUS part_L 2267 bp ds-DNA circular UNK 28-OCT-2019 +DEFINITION . +ACCESSION part_L +VERSION part_L +KEYWORDS "creator:SynthSys Center" "marker:KanR". +SOURCE . + ORGANISM . + . +FEATURES Location/Qualifiers + misc_feature join(2263..2267,1) + /label="feature" + /ApEinfo_fwdcolor="#84b0dc" + terminator 2..59 + /label="another feature" + /ApEinfo_fwdcolor="#c6c9d1" + CDS complement(1140..1955) + /label="yet another feature" + /ApEinfo_fwdcolor="#b7e6d7" + misc_feature 2206..2209 + /label="feature" + /ApEinfo_fwdcolor="#ff0000" + misc_feature 2202..2205 + /label="another feature" + /ApEinfo_fwdcolor="#faac61" + terminator 2139..2182 + /label="yet another feature" + /ApEinfo_fwdcolor="#c6c9d1" + rep_origin complement(254..842) + /label="feature" + /ApEinfo_fwdcolor="#ffef86" + misc_feature 2248..2251 + /label="another feature" + /ApEinfo_fwdcolor="#ff0000" + misc_feature 2185..2190 + /label="yet another feature" + /ApEinfo_fwdcolor="#84b0dc" + terminator 1025..1119 + /label="feature" + /ApEinfo_fwdcolor="#c6c9d1" +''', + 'Metadata1 for part_L', 'Metadata2 for part_L' + ) +]) + + conn.commit() + print("Mock data inserted into 'sample' table.") + + cursor.close() + conn.close() + + +if __name__ == "__main__": + create_db_and_insert_data()