Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
895957d
libre scripts
Gonza10V Apr 25, 2024
53b05cc
adding dark mode logo
Gonza10V Jan 7, 2025
8772de8
Update README.md with new logo
Gonza10V Jan 7, 2025
792f1eb
new sbol2assembly function and script
Gonza10V May 15, 2025
6287ae4
Update assembly.py
LukeDysart17 May 19, 2025
6c66831
LukeChangetoPUDU
LukeDysart17 May 20, 2025
b42071c
Update run_sbol2assembly_libre.py
LukeDysart17 May 21, 2025
ed63cbf
Update run_sbol2assembly_libre.py
LukeDysart17 May 21, 2025
f1ab491
practice push
LukeDysart17 May 21, 2025
f572676
practice push
LukeDysart17 May 21, 2025
5b7eaec
practice push
LukeDysart17 May 21, 2025
06e8904
found error that needs to be addressed with enzyme
LukeDysart17 May 21, 2025
7aad891
adding xlsx output to sbol2assembly
Gonza10V May 22, 2025
4fa7dc7
adds a file creation call
LukeDysart17 May 22, 2025
a920d87
fixes indentation error
LukeDysart17 May 22, 2025
e280cc6
fixes minor bugs
LukeDysart17 May 22, 2025
63ccdae
fixes minor bugs
LukeDysart17 May 22, 2025
b611f49
fixes minor bugs
LukeDysart17 May 22, 2025
d28f375
added xml to dictionary code
LukeDysart17 Jun 4, 2025
286ac0f
added xml to dictionary code
LukeDysart17 Jun 4, 2025
5a086e1
added xml to dictionary code
LukeDysart17 Jun 4, 2025
45bb674
recursive update to sbol2 assembly untested
LukeDysart17 Jun 4, 2025
8c694ab
recursive update to sbol2 assembly untested
LukeDysart17 Jun 4, 2025
506b238
recursive update to sbol2 assembly untested
LukeDysart17 Jun 4, 2025
b4e61c2
recursive update to sbol2 assembly untested
LukeDysart17 Jun 4, 2025
a5dec1f
recursive update to sbol2 still error with load_module
LukeDysart17 Jun 4, 2025
e0a8e35
added xml to dictionary code
LukeDysart17 Jun 5, 2025
7049187
revert back to old
LukeDysart17 Jun 5, 2025
74335f5
updates to assembly
LukeDysart17 Jun 5, 2025
f766007
updates to assembly
LukeDysart17 Jun 5, 2025
01f24d5
3 different dictionaries with promoters
LukeDysart17 Jun 11, 2025
b3db297
Added the dictionary list creator to utils
LukeDysart17 Jun 11, 2025
f44c016
Added the dictionary list creator to utils
LukeDysart17 Jun 12, 2025
b15f000
Fixed bug in dictionaryListCreator
LukeDysart17 Jun 16, 2025
1c48e22
Fixes to dictionary list creator so it can be used in runsbol2
LukeDysart17 Jun 18, 2025
03355e3
edits to runsbol2 to have the xml go directly to assembly
LukeDysart17 Jun 18, 2025
5f81313
added three promoter golden gate function to my utils
LukeDysart17 Jun 18, 2025
05e6623
Added temporary utils to avoid import errors
LukeDysart17 Jun 18, 2025
5a10e7c
Additions to assembly, still does not work issues with tempUtils import
LukeDysart17 Jun 18, 2025
ad29059
new dev repo
Gonza10V Jun 20, 2025
2dcd62b
added test files
LukeDysart17 Jun 23, 2025
bd81630
Change to notebook
LukeDysart17 Jun 25, 2025
161c2db
Working Notebooks
LukeDysart17 Jun 25, 2025
f9adb1a
Assemblies fully tested and functional for taking json
LukeDysart17 Jul 2, 2025
536f1f3
Luke Dysart final push
LukeDysart17 Jul 3, 2025
5a52cbb
Merge pull request #1 from MyersResearchGroup/luke
Gonza10V Jul 23, 2025
d972b3e
Delete scripts/LukeTestingNotebook.ipynb
Gonza10V Jul 23, 2025
87ac274
Delete scripts/sbol2_assembly_output.xlsx.xlsx
Gonza10V Jul 23, 2025
243cd06
Delete scripts/SBOL_xlsx5.xlsx
Gonza10V Jul 23, 2025
2d3f9da
Update utils.py
Gonza10V Aug 13, 2025
c465eb2
Update utils.py
Gonza10V Aug 20, 2025
2d9351c
Update utils.py
Gonza10V Aug 27, 2025
1b9ad45
Added yml file for github action
Aaron1776 Aug 29, 2025
5d0c7c0
Deleted test_setup.py and replaced with sample_preparation.py (test i…
Aaron1776 Aug 29, 2025
f3cfe87
Added simple test file to test all scripts
Aaron1776 Aug 29, 2025
6a45a3f
Added a bacterial transformation script that is more Object oriented …
Aaron1776 Aug 29, 2025
8db7dbd
Changed source code to reflect hyperparameter tuning and OOP design. …
Aaron1776 Sep 2, 2025
1cdd51b
fixed testing to use pudu in development mode
Aaron1776 Sep 3, 2025
559b374
fixed testing to only use python 3.10
Aaron1776 Sep 3, 2025
8cf4717
integrated xlsx output into assembly.py instead of having to code in …
Aaron1776 Sep 3, 2025
03f2a86
Update pyproject.toml
Gonza10V Sep 9, 2025
d7159af
Update pyproject.toml
Gonza10V Sep 9, 2025
99097bf
Delete requirements.txt
Gonza10V Sep 9, 2025
4c532c5
Merge branch 'main' into oscar_SPUR
Gonza10V Sep 9, 2025
75b5bbc
Update utils.py
Gonza10V Sep 9, 2025
51c1a60
Update utils.py
Gonza10V Sep 9, 2025
7d14e0e
Update run_sbol2assembly.py
Gonza10V Sep 9, 2025
3789b35
Update run_sbol2assembly.py
Gonza10V Sep 9, 2025
519c8fd
Update run_sbol2assembly.py
Gonza10V Sep 9, 2025
b72df47
Update run_sbol2assembly.py
Gonza10V Sep 9, 2025
b233886
Update run_sbol2assembly.py
Gonza10V Sep 9, 2025
fcb8248
Update run_sbol2assembly.py
Gonza10V Sep 9, 2025
e5489cf
Merge pull request #2 from MyersResearchGroup/oscar_SPUR
Gonza10V Sep 9, 2025
daad2e8
Relaxing dependencies
Aaron1776 Sep 16, 2025
287b5e6
Change to show which scripts are running
Aaron1776 Sep 16, 2025
d3e4e96
Merge pull request #3 from MyersResearchGroup/oscar_SPUR
Gonza10V Sep 16, 2025
dc55ee0
changed version to 1.0.0b4;
Aaron1776 Sep 19, 2025
780b348
new version
Gonza10V Sep 22, 2025
0707da2
Merge branch 'main' into oscar_SPUR
Gonza10V Sep 22, 2025
449b799
Merge pull request #4 from MyersResearchGroup/oscar_SPUR
Gonza10V Sep 22, 2025
46be39c
Fixed recovery_incubation input error
Aaron1776 Sep 23, 2025
8a7a3e3
Merge remote-tracking branch 'origin/oscar_SPUR' into oscar_SPUR
Aaron1776 Sep 23, 2025
d5c9a70
Update pyproject.toml
Gonza10V Sep 23, 2025
a623b51
Update pyproject.toml
Gonza10V Sep 30, 2025
4c1dba6
Update pyproject.toml
Gonza10V Sep 30, 2025
eba7099
Update pyproject.toml
Gonza10V Sep 30, 2025
dfa05dd
removing SBOL2 dependency
Gonza10V Oct 3, 2025
bcb5009
plating added to init
Gonza10V Oct 14, 2025
148a8e7
Delete scripts/run_sbol2assembly.py
Gonza10V Nov 11, 2025
b14e9ad
Update path for output.json in run_sbol2assembly_libre.py
Gonza10V Nov 11, 2025
b39d36a
Add initial documentation file
Gonza10V Dec 15, 2025
43bdf2e
Add files via upload
Gonza10V Dec 15, 2025
924b12c
Refactored `assembly.py` to support advanced parameter merging via JS…
Aaron1776 Dec 16, 2025
676f76b
Validated reaction volume constraints in `assembly.py` to ensure phys…
Aaron1776 Dec 18, 2025
2a6ba5d
Added `initial_tip` parameter in `assembly.py` for improved tip manag…
Aaron1776 Dec 18, 2025
508e0a7
Refactored `transformation.py` to support advanced parameter merging …
Aaron1776 Dec 19, 2025
9ed61f5
Refactored `plating.py` to support advanced parameter merging via JSO…
Aaron1776 Dec 19, 2025
6b6dba9
Refactored `assembly.py` to support advanced parameter merging via `a…
Aaron1776 Dec 19, 2025
94a36e4
Added `generate_protocol.py` to enable protocol generation for assemb…
Aaron1776 Dec 19, 2025
cdc79e6
Added transformation and plating input JSON export functionality for …
Aaron1776 Dec 19, 2025
3e3c566
Updated `apiLevel` to 2.21 in `generate_protocol.py`.
Aaron1776 Dec 19, 2025
8a2b1ae
Fixed hardcoded `num_parts=2` in `_validate_reaction_volumes` within …
Aaron1776 Jan 16, 2026
5580b32
Merge branch 'main' into oscar_SPUR
Gonza10V Jan 16, 2026
1189737
Merge pull request #5 from MyersResearchGroup/oscar_SPUR
Gonza10V Jan 16, 2026
2f199e3
Merge branch 'main' into json_Oscar
Gonza10V Jan 16, 2026
24b961c
Refactor HeatShockTransformation transfer logic and add protocol gene…
Aaron1776 Mar 5, 2026
254bb7d
Refactored transformation protocols to use updated `transformation_da…
Aaron1776 Mar 5, 2026
3e78ef3
Add ManualAssembly Markdown protocol generation for Golden Gate
Gonza10V Apr 7, 2026
bee04f8
Refine ManualAssembly markdown sections and thermocycling defaults
Gonza10V Apr 8, 2026
e086bc3
Merge pull request #11 from MyersResearchGroup/codex/add-manualassemb…
Gonza10V Apr 8, 2026
64448ed
Update assembly notes and instructions in assembly.py
Gonza10V Apr 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Python package

on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'

jobs:
build:

runs-on: [ubuntu-latest]
strategy:
fail-fast: false
matrix:
python-version: ["3.10"]

steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip

- name: Install pudu package in development mode with test dependencies
run: |
pip install -e .[test]

- name: Test scripts with opentrons_simulate
run: |
pytest -s -v
20 changes: 18 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
Welcome to the PUDU (Protocol Unified Design Unit) repository, our Python package for liquid handling robot control on Synthetic Biology workflows.


<img src="https://github.com/RudgeLab/PUDU/blob/main/images/PUDU_Logo.png#gh-light-mode-only" alt="PUDU logo" width="250"/>
<img src="https://github.com/RudgeLab/PUDU/blob/main/images/PUDU_Logo.png#gh-dark-mode-only" alt="PUDU night logo" width="250"/>
<img src="https://github.com/MyersResearchGroup/PUDU/blob/main/images/PUDU_Logo.png#gh-light-mode-only" alt="PUDU logo" width="250"/>
<img src="https://github.com/MyersResearchGroup/PUDU/blob/main/images/PUDU_Logo_dark.png#gh-dark-mode-only" alt="PUDU night logo" width="250"/>

## *The art of automated liquid handling*

Expand Down Expand Up @@ -67,3 +67,19 @@ then in the OT-2 terminal run:
## Tutorials

TODO

## Manual Golden Gate protocol generation

PUDU now supports generating a **human-readable manual Golden Gate protocol** from SBOL-style JSON input using `ManualAssembly`.

- The class builds structured per-reaction records (product, backbone, ordered parts, enzyme, and calculated reagent volumes).
- It renders a Markdown protocol suitable for lab use and future PDF conversion.
- It does **not** generate OT-2 commands.

Example script:

```bash
PYTHONPATH=src python scripts/generate_manual_assembly_protocol.py
```

This writes a protocol document to `scripts/manual_assembly_protocol.md`.
Binary file added documentation/PUDU_docs.pdf
Binary file not shown.
1 change: 1 addition & 0 deletions documentation/docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
docs
63 changes: 63 additions & 0 deletions documentation/manual_assembly_protocol_example.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Golden Gate Manual Assembly Protocol

## Overview
Golden Gate assembly is a one-pot DNA cloning method that uses a Type IIS restriction enzyme, such as BsaI, together with DNA ligase to assemble multiple DNA fragments in a predefined order.
Because Type IIS enzymes cut outside their recognition sites, they generate custom overhangs that direct fragment assembly and allow the recognition sites to be removed from the final construct.
In this protocol, plasmids containing DNA parts and a destination backbone are combined with the restriction enzyme and ligase in a single tube, then cycled in a thermocycler between digestion and ligation temperatures. Repetition of these cycles enriches for the correctly assembled composite plasmid, after which the enzymes are heat-inactivated and the reaction is held at 4 °C until collection.

## Inputs
- Number of target products: 2
- `composite_1` (https://SBOL2Build.org/composite_1/1)
- `composite_2` (https://SBOL2Build.org/composite_2/1)

## Reaction summary
| Product | Backbone | Parts | Restriction Enzyme | # DNA Components | DNA each (µL) | Enzyme (µL) | Ligase (µL) | Buffer (µL) | Water (µL) | Total (µL) |
| --- | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| composite_1 | pSB1C3 | J23101, B0034, GFP, B0015 | BsaI | 5 | 2 | 2 | 4 | 2 | 2 | 20 |
| composite_2 | pSB1C3 | J23106, B0034, RFP, B0015 | BsaI | 5 | 2 | 2 | 4 | 2 | 2 | 20 |

## Per-reaction instructions

### Product: composite_1
URI: https://SBOL2Build.org/composite_1/1

1. Label one tube as `composite_1`.
2. Add 2 µL nuclease-free water.
3. Add 2 µL 10X T4 DNA Ligase Buffer.
4. Add 4 µL T4 DNA Ligase.
5. Add 2 µL BsaI (URI: https://SBOL2Build.org/BsaI/1).
6. Add 2 µL backbone `pSB1C3` (URI: https://sbolcanvas.org/pSB1C3/1).
7. Add 2 µL part `J23101` (URI: https://sbolcanvas.org/J23101/1).
8. Add 2 µL part `B0034` (URI: https://sbolcanvas.org/B0034/1).
9. Add 2 µL part `GFP` (URI: https://sbolcanvas.org/GFP/1).
10. Add 2 µL part `B0015` (URI: https://sbolcanvas.org/B0015/1).
11. Mix gently by pipetting. Do not vortex unless explicitly intended.
12. Briefly spin down if appropriate.

### Product: composite_2
URI: https://SBOL2Build.org/composite_2/1

1. Label one tube as `composite_2`.
2. Add 2 µL nuclease-free water.
3. Add 2 µL 10X T4 DNA Ligase Buffer.
4. Add 4 µL T4 DNA Ligase.
5. Add 2 µL BsaI (URI: https://SBOL2Build.org/BsaI/1).
6. Add 2 µL backbone `pSB1C3` (URI: https://sbolcanvas.org/pSB1C3/1).
7. Add 2 µL part `J23106` (URI: https://sbolcanvas.org/J23106/1).
8. Add 2 µL part `B0034` (URI: https://sbolcanvas.org/B0034/1).
9. Add 2 µL part `RFP` (URI: https://sbolcanvas.org/RFP/1).
10. Add 2 µL part `B0015` (URI: https://sbolcanvas.org/B0015/1).
11. Mix gently by pipetting. Do not vortex unless explicitly intended.
12. Briefly spin down if appropriate.

## Thermocycling
- Use a cycling profile that holds 42°C for 2 minutes and 16°C for 5 minutes; repeat this profile 75 times.
- Denature/inactivate proteins by holding 60°C for 10 minutes followed by 80°C for 10 minutes.
- Hold at 4°C until samples are collected.

## Notes
- If the assembly was designed correctly, the final product should lack the Type IIS recognition sites used during assembly.
- This generated document is a manual instruction sheet and not an automated OT-2 protocol.
- Assumes all DNA parts are available at suitable concentrations and added at equal per-part volume.
- Store the assembly product at 4 °C for better stability until used for downstream applications.
- Validate assembled plasmids by restriction digest and gel electrophoresis, Sanger sequencing, or whole-plasmid sequencing.
Binary file added images/PUDU_Logo_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
208 changes: 208 additions & 0 deletions notebooks/Assembly_to_OT2sim.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "f62bc338",
"metadata": {},
"source": [
"# SBOL to robot simulation"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "7c2e1157",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting git+https://github.com/MyersResearchGroup/SBOL2Build.git@roles-for-RE-and-Ligases\n",
" Cloning https://github.com/MyersResearchGroup/SBOL2Build.git (to revision roles-for-RE-and-Ligases) to c:\\users\\lukef\\appdata\\local\\temp\\pip-req-build-jomazih6\n",
" Resolved https://github.com/MyersResearchGroup/SBOL2Build.git to commit 2c0a53abada3731e81e0b04ac7c391f882c74a70\n",
" Installing build dependencies: started\n",
" Installing build dependencies: finished with status 'done'\n",
" Getting requirements to build wheel: started\n",
" Getting requirements to build wheel: finished with status 'done'\n",
" Installing backend dependencies: started\n",
" Installing backend dependencies: finished with status 'done'\n",
" Preparing metadata (pyproject.toml): started\n",
" Preparing metadata (pyproject.toml): finished with status 'done'\n",
"Requirement already satisfied: biopython in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2build==0.0b1) (1.81)\n",
"Requirement already satisfied: pydna in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2build==0.0b1) (5.0.0)\n",
"Requirement already satisfied: sbol2 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2build==0.0b1) (1.4.1)\n",
"Requirement already satisfied: numpy in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from biopython->sbol2build==0.0b1) (1.21.6)\n",
"Requirement already satisfied: networkx in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from pydna->sbol2build==0.0b1) (2.6.3)\n",
"Requirement already satisfied: prettytable in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from pydna->sbol2build==0.0b1) (3.7.0)\n",
"Requirement already satisfied: appdirs in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from pydna->sbol2build==0.0b1) (1.4.4)\n",
"Requirement already satisfied: requests in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2->sbol2build==0.0b1) (2.31.0)\n",
"Requirement already satisfied: urllib3 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2->sbol2build==0.0b1) (2.0.7)\n",
"Requirement already satisfied: rdflib>=5.0 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2->sbol2build==0.0b1) (6.3.2)\n",
"Requirement already satisfied: packaging>=20.0 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2->sbol2build==0.0b1) (24.0)\n",
"Requirement already satisfied: lxml in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2->sbol2build==0.0b1) (5.3.1)\n",
"Requirement already satisfied: deprecated in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2->sbol2build==0.0b1) (1.2.18)\n",
"Requirement already satisfied: python-dateutil in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from sbol2->sbol2build==0.0b1) (2.9.0)\n",
"Requirement already satisfied: pyparsing<4,>=2.1.0 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from rdflib>=5.0->sbol2->sbol2build==0.0b1) (2.4.7)\n",
"Requirement already satisfied: isodate<0.7.0,>=0.6.0 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from rdflib>=5.0->sbol2->sbol2build==0.0b1) (0.6.1)\n",
"Requirement already satisfied: importlib-metadata<5.0.0,>=4.0.0 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from rdflib>=5.0->sbol2->sbol2build==0.0b1) (4.13.0)\n",
"Requirement already satisfied: wrapt<2,>=1.10 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from deprecated->sbol2->sbol2build==0.0b1) (1.16.0)\n",
"Requirement already satisfied: wcwidth in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from prettytable->pydna->sbol2build==0.0b1) (0.2.10)\n",
"Requirement already satisfied: six>=1.5 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from python-dateutil->sbol2->sbol2build==0.0b1) (1.17.0)\n",
"Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from requests->sbol2->sbol2build==0.0b1) (2024.8.30)\n",
"Requirement already satisfied: idna<4,>=2.5 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from requests->sbol2->sbol2build==0.0b1) (3.10)\n",
"Requirement already satisfied: charset-normalizer<4,>=2 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from requests->sbol2->sbol2build==0.0b1) (3.4.1)\n",
"Requirement already satisfied: zipp>=0.5 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from importlib-metadata<5.0.0,>=4.0.0->rdflib>=5.0->sbol2->sbol2build==0.0b1) (3.15.0)\n",
"Requirement already satisfied: typing-extensions>=3.6.4 in c:\\users\\lukef\\.conda\\envs\\test\\lib\\site-packages (from importlib-metadata<5.0.0,>=4.0.0->rdflib>=5.0->sbol2->sbol2build==0.0b1) (4.7.1)\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" Running command git clone --filter=blob:none --quiet https://github.com/MyersResearchGroup/SBOL2Build.git 'C:\\Users\\lukef\\AppData\\Local\\Temp\\pip-req-build-jomazih6'\n",
" Running command git checkout -b roles-for-RE-and-Ligases --track origin/roles-for-RE-and-Ligases\n",
" branch 'roles-for-RE-and-Ligases' set up to track 'origin/roles-for-RE-and-Ligases'.\n",
" Switched to a new branch 'roles-for-RE-and-Ligases'\n"
]
}
],
"source": [
"pip install git+https://github.com/MyersResearchGroup/SBOL2Build.git@roles-for-RE-and-Ligases"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "69c8a583",
"metadata": {},
"outputs": [],
"source": [
"import sbol2build as sb2b"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "e86cb15c",
"metadata": {},
"outputs": [],
"source": [
"import sbol2 as sb2"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "4f19b39f",
"metadata": {},
"outputs": [],
"source": [
"def test_golden_gate():\n",
" pro_doc = sb2.Document()\n",
"\n",
" pro_doc.read('../tests/pro_in_bb.xml')\n",
"\n",
" #where I am working adding 2 and 3\n",
" pro2_doc = sb2.Document()\n",
" pro2_doc.read('../tests/pro2_in_bb.xml') #add document\n",
"\n",
" pro3_doc = sb2.Document()\n",
" pro3_doc.read('../tests/pro3_in_bb.xml') #add document\n",
" \n",
" rbs_doc = sb2.Document()\n",
" rbs_doc.read('../tests/rbs_in_bb.xml')\n",
"\n",
" cds_doc = sb2.Document()\n",
" cds_doc.read('../tests/cds_in_bb.xml')\n",
" \n",
" ter_doc = sb2.Document()\n",
" ter_doc.read('../tests/terminator_in_bb.xml')\n",
"\n",
" bb_doc = sb2.Document()\n",
" bb_doc.read('../tests/backbone.xml')\n",
"\n",
" part_docs = [pro_doc, rbs_doc, cds_doc, ter_doc]\n",
"\n",
" assembly_doc = sb2.Document()\n",
" assembly_obj = sb2b.golden_gate_assembly_plan('testassem', part_docs, bb_doc, 'BsaI', assembly_doc)\n",
"\n",
" composites = assembly_obj.run()\n",
"\n",
" assembly_doc.write('validation_assembly1.xml')\n",
"\n",
" sbol_validation_result = assembly_doc.validate()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "5bf7f217",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"adding: UJHDBOTD_70_extracted_part\n",
"adding: UJHDBOTD_70_three_prime_oh\n",
"adding: Scar_B\n",
"adding: J23101\n",
"adding: UJHDBOTD_70_five_prime_oh\n",
"adding: Scar_A\n",
"adding: UJHDBOTD_45_extracted_part\n",
"adding: UJHDBOTD_45_five_prime_oh\n",
"adding: Scar_B\n",
"adding: UJHDBOTD_45_three_prime_oh\n",
"adding: Scar_C\n",
"adding: B0034\n",
"adding: UJHDBOTD_106_extracted_part\n",
"adding: GFP\n",
"adding: UJHDBOTD_106_five_prime_oh\n",
"adding: Scar_C\n",
"adding: UJHDBOTD_106_three_prime_oh\n",
"adding: Scar_D\n",
"adding: UJHDBOTD_134_extracted_part\n",
"adding: B0015\n",
"adding: UJHDBOTD_134_three_prime_oh\n",
"adding: Scar_F\n",
"adding: UJHDBOTD_134_five_prime_oh\n",
"adding: Scar_D\n",
"adding: UJHDBOTD_extracted_backbone\n",
"adding: UJHDBOTD_159_five_prime_oh\n",
"adding: Scar_F\n",
"adding: Cir_qxow\n",
"adding: UJHDBOTD_159_three_prime_oh\n",
"adding: Scar_A\n",
"adding: composite_1\n"
]
}
],
"source": [
"test_golden_gate()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "test",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading
Loading