QuickstartΒΆ

This quickstart uses only files that ship with the repository. It does not require SynBioHub network access.

Install the package in editable mode:

python -m pip install -e ".[test]"

Load the local fixture collections:

from pathlib import Path

import sbol2

from buildcompiler.abstract_translator import extract_toplevel_definition
from buildcompiler.buildcompiler import BuildCompiler

repo = Path.cwd()
test_files = repo / "tests" / "test_files"

collection_paths = [
    test_files / "CIDARMoCloParts_collection.xml",
    test_files / "CIDARMoCloPlasmidsKit_collection.xml",
    test_files / "Enzyme_Implementations_collection.xml",
    test_files / "impl_test_collection.xml",
]

collection_docs = []
for path in collection_paths:
    doc = sbol2.Document()
    doc.read(str(path))
    collection_docs.append(doc)

design_doc = sbol2.Document()
design_doc.read(str(test_files / "abstract_design.xml"))
design = extract_toplevel_definition(design_doc)

compiler = BuildCompiler.from_local_documents(
    collection_docs,
    design_doc=design_doc,
)

Run level-1 assembly:

product_doc = sbol2.Document()
assembly_routes, product_doc = compiler.assembly_lvl1(
    [design],
    final_doc=product_doc,
    product_name="quickstart_lvl1",
)

products = assembly_routes[design.identity]
print([product.plasmid_definition.displayId for product in products])

Write SBOL and PUDU JSON artifacts:

import json

from buildcompiler.adapters.pudu import write_assembly_pudu_input_json

results = repo / "docs_results" / "quickstart"
results.mkdir(parents=True, exist_ok=True)

(results / "quickstart_lvl1_products.xml").write_text(
    product_doc.writeString(),
    encoding="utf-8",
)
write_assembly_pudu_input_json(
    compiler.last_assembly_pudu_json,
    results / "quickstart_lvl1_pudu_input.json",
)

Document.writeString() is used in offline examples because sbol2.Document.write() may attempt online validation.