bebop / poly

A Go package for engineering organisms.
https://pkg.go.dev/github.com/bebop/poly
MIT License
677 stars 73 forks source link

Functions for split sequence for scarless assembly using optimal overhangs #317

Closed isaacguerreir closed 1 year ago

isaacguerreir commented 1 year ago

Is your feature request related to a problem? Please describe.

One important problem to be solved is how to split a sequence into N fragments in a way that it could be mounted again later. A good algorithm would make it possible to exponentially synthesize and build bigger DNA sequences, if compared with a more manual and error-prone design.

Split input DNA sequences into PCR-amplified fragments that can be joined using Golden Gate Assembly. Junctions are selected to generate overhangs that are predicted to ligate with high fidelity. The data from recent publications on ligation fidelity using T4 DNA Ligase (1, 2) represents subsets of the data sets discussed in those papers.

Describe the solution you'd like

The most widespread way to make this on the bench is by ligating PCR-amplified fragments using Golden Gate Assembly. To make a Golden Gate reaction optimal is important to design fragments that have high-fidelity overhangs. High-fidelity overhangs are a fancy way to describe groups of overhangs that are less chance to be incorrectly digested and ligated (cut and copied). A probabilistic matrix correlating different overhangs could be found on some papers.

A single-molecule sequencing assay for the comprehensive profiling of T4 DNA ligase fidelity and bias during DNA end-joining (2018). Nucleic Acids Research, gky303, https://doi.org/10.1093/nar/gky303 Comprehensive profiling of four base overhang ligation fidelity by T4 DNA Ligase and application to DNA assembly (2018). ACS Synthetic Biology, https://doi.org/10.1021/acssynbio.8b00333i

I already have made a lot of the algorithms to solve this problem, and you can find it here.

Describe alternatives you've considered

A more simple solution could be to use a lower and fixed set of overhangs and use this on everything, one possible example.

Koeng101 commented 1 year ago

Don't we already have this @isaacguerreir ?

Koeng101 commented 1 year ago

https://github.com/TimothyStiles/poly/blob/main/synthesis/fragment/example_test.go

isaacguerreir commented 1 year ago

You're right, @Koeng101. I was trying to implement some ideas today and I totally forget it was already implemented. Thanks for point out.

I'm closing this issue.