Getting started with the Synthetic™ bio-programming language

 

  • Synthetic™ is a bio-hardware description language.
  • <project-name>.cyto is the project’s entry point.
  • Synthetic™ supports C and C++ style comments.
  • Each line of code ends with a semicolon ; .

Strand Variables

 

  • Strand Variables are declared using the Strand datatype (~).
  • Strands may contain raw nucleotide sequences (written as lower case letters, e.g. acgt ).
  • Strands may contain raw amino acid sequences (written as upper case letters, e.g. ARNDCEQGHILKMFPSTWYV).
  • Use the arrow <- operator in order to append composites of nucleotide and amino acid sequences into the strand variable.

Multiplication Operator

 

  • As seen above, sequences can be grouped by enclosing them with white space or by using parentheses.
  • Sequences can be multiplied using the multiplication operator xn.

Complement Operator

  • Use the complement ~ operator in order to get the complementary enclosed sequence (a becomes t, t becomes a, g becomes c and c becomes g).

Direction Operators

 

  • The coding strand is written from the 5′ (5 prime end) to the 3′ (3 prime end).
  • By default, raw nucleotide or amino acid sequences are written from 5′ to 3′.
  • You can explicitly specify the sequence direction by flanking the desired sequence either with 5′ and 3′ or with 3′ and 5′.
  • A sequence flanked with 3′ to 5′ is appended in reverse order.

File Variables

 

  • In Synthetic™, files are also variables.
  • There are two types of file variables: .nuc and .aa.
  • File variables store data in FASTA format.
  • Files can be created programmatically or manually.
  • A .nuc file stores a FASTA sequence of nucleotides.
  • A .aa file stores a FASTA sequence of both amino acids and nucleotides.

Plasmid Variables

 

  • Plasmid variables work similar to strand variables.
  • Plasmid variables store 2 strands, one for the plasmid backbone and one for the plasmid insert.
  • Use the arrow <- operator to append a sequence to the plasmid backbone.
  • Use the flank U (or u) operator to append a sequence to the plasmid insert.

Genetic Parts (Annotations)

 

  • Synthetic™ supports the following annotations for iGEM genetic parts and devices: promoter, rbs (for ribosome binding site), protein_domain, trans_unit (translational unit), cds (protein coding sequence), composite, terminator, dna, protein_gen (protein generator), reporter, inverter, sender, receiver, measurement_device.
  • Use curly brackets ‘{‘ ‘}’ in order to flank a sequence, after the annotation declaration: annotation_type { my_sequence }.
  • Read more about annotations at the iGEM Catalog Of Parts.

Reverse Complement Operator

 

  • Performing a reverse complement to genetic parts (annotations) is easy ! Add ‘r’ at the beginning of each annotation, rannotation_type{my-sequence}.

Variables Reference Box

 

  • Strands can also be appended to other strands, by using the reference box operator.
  • enclose the strand variable name within an opening and a closing bracket [ my_previously_declared_strand ].

iGEM Reference Box

 

  • Synthetic™ has a built in support for iGEM BioBrick parts.
  • Use iGEM BioBrick Ids enclosed in quotes and brackets in order to append their sequence.
  • Databases reference boxes are the right way to use Synthetic™.

Protein Data Bank Reference Box

 

  • Synthetic™ has a built in support for Protein Data Bank (PDB) entries.
  • Use PDB Ids enclosed in quotes and brackets in order to append their chain sequence.
  • If not specified otherwise, the first chain is retrieved implicitly.
  • You can explicitly retrieve a different chain by using the chain letter preceded by the dot ‘.’ operator (both upper case and lower case letters are supported).
  • Formats: [‘my_pdb_id’] or [‘my_pdb_id.my_chain_id’].
  • Databases reference boxes are the right way to use Synthetic™.

NCBI Reference Box

 

  • Synthetic™ has a built in support for NCBI entries.
  • Use NCBI Version Ids enclosed in quotes and brackets in order to append their corresponding sequence.

Codon Usage Optimizations

 

  • Synthetic™ has a built in support for codon usage optimizations for strand, plasmid and file variables.
  • Use the ‘optimized for (organism_name)’ operator, prior to the arrow <- operator, in order to convert amino acids to the optimized nucleotides representations, during compilation.
  • Start typing the organism name within the parentheses, press ctrl+space and choose from the popup list the correct organism.

The ‘Include’ directive (add other .cyto files)

 

  • Place different modular functionality in different .cyto files by using the include “file_name.cyto” command.