Protocols

class synbio.protocol.Protocol(name: str = '', design: synbio.designs.Design = <synbio.designs.Design object>, how: Union[synbio.protocol.Step, Iterable[synbio.protocol.Step]] = None, separate_reagents: bool = False)

A Protocol for assembling DNA via steps in a laboratory.

name

The name of the protocol

design

The design specification for the build

how

A single composite step for assembling the Design

separate_reagents

Whether to separate reagent plate from other wells

add(step: synbio.protocol.Step) → synbio.protocol.Protocol

Add a step to the protocol.

Parameters

step – The Step to add to this protocol

add_instruction(instruction: synbio.instructions.Instruction)

Add a single Instruction to this protocol’s output.

Instructions are generated by Steps. Each Step calls this to add the step’s output to the Protocol for accumulation.

Parameters

instruction – A single instruction to add to the protocol

property input

Return a map from protocol ‘inputs’ to volumes in milliters.

Inputs are SeqRecord (DNA), Primers, Reagents and Species required to carry out the protocol.

Returns

A Dict that is a key-value map from input Content to required volume

property output

Gather the output SeqRecords from the final containers after all steps.

Returns

The plasmids that will be created after assembly

run() → synbio.protocol.Protocol

Run each step of the protcol. Build up the output records and instructions.

to_csv(filename: str = '') → str

Write CSV file(s) describing the containers/Layout after each step.

Rows of Layout/containers are written in CSV format with each step’s name as its heading.

Parameters

filename – The name of the CSV’s name

to_fasta(filename: str = '') → int

Write each output record to a FASTA file.

Uses SeqIO.write(records, filename, “fasta”).

Parameters

filename – The filename to write the FASTA file to

Returns

The number of records that were written

to_genbank(filename: str = '', split: bool = False) → int

Write each output record to a Genbank file.

Uses SeqIO.write(records, filename, “genbank”).

Parameters
  • filename – The filename to write the Genbanks to

  • split – Write a separate Genbank for each SeqRecord

Returns

The number of records that were written

to_picklists(filename: str = '', platform: str = 'tecan')

Create picklists for robotic pipetting.

Supported platforms are tecan, hamilton, and labcyte.

For each step where there’s plate to plate pipetting, create a robotic picklists. Steps where reagents or samples come from the Fridge are not written to a picklist right now.

If there are multiple passable steps, each are saved with their index in their filename. Ex: picklist.1.gwl, picklist.2.gwl

Keyword Arguments
  • filename – Name of picklist file (default: {self.name})

  • platform – Picklist platform (default: {“tecan”})

to_txt(filename: str = '')

Write the protocol’s instructions to a text file.

Parameters

filename – the filename of the instructin file

class synbio.protocols.clone.Clone(name: str = '', design: synbio.designs.Design = <synbio.designs.Design object>, enzymes: List[Bio.Restriction.Restriction.RestrictionType] = None, mix: synbio.mix.Mix = <synbio.mix.Mix object>, include: List[str] = None, min_count: int = -1, separate_reagents: bool = False)

Clone SeqRecords together using BioPython enzymes.

Digest the SeqRecords with all the Enzymes provided, find valid circularized assemblies, and create a protocol for preparing and ligating the fragments.

This protocol is based on NEB’s clone guide: https://www.neb.com/tools-and-resources/usage-guidelines/clone-guide

Keyword Arguments
  • enzymes – the list of enzymes to digest the SeqRecords with

  • include – include only plasmids with a feature matching something in the include list use in backbone selection (default: {None})

  • mix – the assembly mix to use when mixing the assemblies with enzymes

  • min_count – the minimum number of SeqRecords in an assembly for it to be considered valid. smaller assemblies are ignored

class synbio.protocols.gibson.Gibson(design: synbio.designs.Design = <synbio.designs.Design object>, name: str = '', hifi: bool = False, pcr_mix: synbio.mix.Mix = <synbio.mix.Mix object>, gibson_mix: synbio.mix.Mix = <synbio.mix.Mix object>, separate_reagents: bool = False)

Gibson Assembly.

Create primer pairs that will anneal each SeqRecord to its two neighbors so that, after PCR, the fragments will circularize via a Gibson Assembly.

Based on the Gibson Assembly protocol outlined on the NEB site for kit (e5510): https://www.neb.com/protocols/2012/12/11/gibson-assembly-protocol-e5510

Keyword Arguments
  • hifi – whether to use NEB’s HiFi assembly method

  • gibson_mix – the assembly mix to use when mixing the Gibson wells. Based on NEB’s (e5510)

class synbio.protocols.goldengate.GoldenGate(design: synbio.designs.Design = <synbio.designs.Design object>, name: str = '', enzymes: List[Bio.Restriction.Restriction.RestrictionType] = [BsaI, BpiI], include: List[str] = None, min_count: int = -1, separate_reagents: bool = False)

GoldenGate assembly.

Takes the design of a protocol and finds combinations of SeqRecords that will circularize into valid new plasmids.

This Protocol is derived from NEB’s guide: https://www.neb.com/protocols/2018/10/02/golden-gate-assembly-protocol-for-using-neb-golden-gate-assembly-mix-e1601

Full responsibilities include

  • subselecting the input designs that will form valid plasmids after digestion with BsaI and BpiI

  • adding NEB Golden Gate Assembly Mix to the valid designs as Contents for a Container

  • computing the final plasmid (SeqRecord) after ligation of digested fragments

  • memoize the sorted enzyme + ids -> SeqRecord from step #3, pass as a

  • “mutate” method for the step after ThermoCycle()

  • add steps to carry out the rest of the assembly (heat shock, incubate, etc)

Keyword Arguments
  • name – Name of this protocol

  • enzymes – List of digest enzymes to catalyze SeqRecords with

  • include – Include only plasmids with a feature matching something in the include list use in backbone selection (default: {None})

  • min_count – The minimum number of SeqRecords in an assembly for it to be considered valid. smaller assemblies are ignored

  • separate_reagents – Whether to separate reagent plate from other wells