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.