BjornFJohansson / pydna

Clone with Python! Data structures for double stranded DNA & simulation of homologous recombination, Gibson assembly, cut & paste cloning.
Other
166 stars 45 forks source link

Golden Gate: backbones assembling together #299

Open manulera opened 1 month ago

manulera commented 1 month ago

Hi @grassoste, you mentioned that you wanted to discuss a case where a Golden Gate assembly would yield a product where all the backbones are ligated together. You mentioned that you had a minimal example, and it would be interesting to see if they would be handled by the new assembly model.

Do you think you could share it here? If you could just add all input files as a zip in an issue comment, and provide a minimal python example I can check it out.

BjornFJohansson commented 4 weeks ago

The ligate module should be used for the assembly part imho. These are some old notes that may not be relevant anymore.

Some functionality was implemented here:

https://github.com/mleiras/pydna/blob/master/src/pydna/golden_gate.py

By a student of mine.

Abstract: https://docs.google.com/document/d/1Ur87xIwNnjQ0B9cblhs1aXBX-m4VrEheGRc0m8Vgf6w Presentation: https://docs.google.com/presentation/d/1P7PDeygNBjGbOLNA3OxjNPESZEwIDrMdHEZapQnO2So

Function:

GoldenGateDesigner(ampl, enz)

Argument:

seqs: A list of linear sequences, Amplicons or Dseqrecords

enz: A list of golden gate enzymes to use (list in order of preference)

Output:

A list of Amplicons with primers permitting assembly by golden gate

Suggested flow:

0. list all sticly ends...
1. Select compatible enzymes
2. loop over pairs of seqs
3. design relevant primer if needed (add enzyme and comp sticky end)
4. if two amplicons, design both relevant primers
5. Return a list with Dseqrecords and amplicons

5. Check all amplicons for internal restriction sites, select Golden Gate enzymes that do not cut internally
(Use goldenhinges (https://github.com/Edinburgh-Genome-Foundry/GoldenHinges) to select sticky end sequences

Function:

GoldenGateAssembler(seqs)

Argument:

seqs: A list of linear sequences, Amplicons or Dseqrecords
enz: list of enzymes

Output:

The assempled sequence

1. assume all sequences cuts
2. Try to add all sequences in order
3. If assembly not possible raise exception
4. return Dseqrecord
manulera commented 4 weeks ago

Hi @BjornFJohansson this was about a particular example that @grassoste mentioned during the hackathon