Lesson 3NoviceAbout 110 minutes

The central dogma

How a gene becomes a protein. You will copy DNA into RNA, read RNA three letters at a time, see why syn3A reads one of the stop signals as an amino acid, estimate how many copies of each molecule a cell keeps, and write Python that rebuilds all 455 of syn3A's proteins from its genome.

Watch first: what you'll learn2 minutes · narrated · captions

0:00 / 1:38
Read the transcript

Welcome to lesson three: the central dogma. This is the story of how a gene becomes a protein.

Information in a cell flows one way: from DNA, to RNA, to protein. The DNA is the master copy. The cell copies one gene at a time into RNA, then reads the RNA to build a protein.

syn3A's DNA holds four hundred and ninety-three genes, packed tightly on both of its strands. You'll learn to find any of them by its position, and cut it out in Python.

First, transcription. An enzyme called RNA polymerase finds the start of a gene, opens up the DNA, and copies one strand into RNA, about twenty-five letters a second.

Then, the genetic code. A ribosome reads the mRNA three letters at a time. Each group of three, called a codon, stands for one amino acid, or for stop.

And there's a twist. syn3A reads one of the stop signals, UGA, as an amino acid instead. You'll see why that matters.

Then, translation. tRNAs carry amino acids to the ribosome, which links them into a chain, and the chain folds into a working protein.

You'll work out how many copies of each molecule a cell keeps, using half-lives, and see what a mutation does to a protein.

You'll get to be the polymerase and the ribosome yourself, in the games.

And you'll write Python that rebuilds every one of syn3A's four hundred and fifty-five proteins from its genome, and checks them against the published ones. Let's start.

Narrated with an AI-generated voice (Amazon Polly, Ruth). The page highlights and scrolls to whatever is being described.

By the end of this lesson you will be able to:

  • Explain how information flows from DNA to RNA to protein, and name the machines that do each step
  • Read a gene's position in GenBank and turn it into a Python slice, on either strand
  • Describe how RNA polymerase finds a gene, which strand it reads, and where it stops
  • Read the genetic code, explain why codons have three letters, and work with reading frames
  • Explain why syn3A reads UGA as tryptophan, and what that means for its genes
  • Use half-lives and steady states to estimate how many mRNAs and proteins a cell keeps
  • Sort mutations into silent, missense, nonsense, and frameshift
  • Write Python that turns every one of syn3A's genes into its protein, and check all 455 against GenBank
On this page
  1. From gene to protein
  2. Genes: where the instructions are
  3. Transcription: DNA to RNA
  4. The genetic code
  5. Translation: RNA to protein
  6. How many, and how fast
  7. Mutations: when the code changes
  8. From genome to proteome in code
  9. Code milestone: the gene-to-protein pipeline
  10. Numbers to remember
  11. Sources and further reading
  12. Practice problems

From gene to protein

Lesson 2 opened the box and named the molecules in a cell. This lesson follows the information inside them. A gene is a stretch of DNA, and the cell turns it into a protein in two steps: it copies the gene into RNA, and then it reads the RNA to build the protein. By the end you will have written Python that does the same for every one of syn3A’s genes, and the 455 proteins it makes will match the published ones letter for letter.

The picture below shows the whole process. Tap a step to look closer, or switch to Code view to see the same pipeline in software terms.

From gene to protein

How a cell turns a gene into a working protein, in five steps. Tap a step, or a part of the picture.

DNA → RNA → protein: genes are copied into short-lived messages, and ribosomes read them to build proteins.

5′AUGAACGUAAACGAUAUUUUAAAAGAACUUAAACUAAGUUUAAUGGCUAAUAAAAAUAUU64-row lookup tableAUG → Met (M)GCU → Ala (A)AAU → Asn (N)Reading a codonmRNAtRNAGCUCGAAlaDNA: the genome1Gene2RNA polymerase3mRNAabout 4 minutes4Ribosomereads 3 letters at a time5Proteinlasts about 25 hourstRNAs

The central dogma

DNA → RNA → protein

Information flows one way: from the DNA genome, to short-lived RNA copies, to proteins that do the work. Biologists call this the central dogma. Tap a step, or a part of the picture, to look closer.

ACGTU: the letters (RNA has U where DNA has T)amino acids: oily, polar, positive, negative

The letters are real syn3A DNA: the start of its dnaA gene (JCVISYN3A_0001), whose protein begins MNVNDILKELKLSLMANKNI. Shapes are simplified. Numbers: GenBank CP016816.2 and Thornburg et al. (2019), Frontiers in Molecular Biosciences 6:130.

Genes: where the instructions are

A gene is a stretch of DNA that the cell copies into RNA. Most genes are recipes for proteins: their RNA is a message that ribosomes read. A few genes make RNAs that do a job themselves, such as the RNAs inside the ribosome and the transfer RNAs that bring amino acids to it.

syn3A has 493 genes. Its GenBank record lists 455 protein-coding genes and 38 RNA genes: 6 ribosomal RNA genes (two copies each of three kinds), 29 transfer RNA genes, and three others. You will sometimes see 452 protein-coding genes quoted instead; papers that use a slightly different annotation count them that way.

A protein-coding gene has more parts than the protein recipe itself. RNA polymerase, the enzyme that copies DNA into RNA, lands on a promoter just before the gene and starts copying at position +1. The copy runs to a terminator, where the polymerase lets go. Inside the copy, the protein recipe runs from a start codon, ATG, to a stop codon. The stretches before the start and after the stop are copied but not read into protein. Just before the start codon sits a short Shine–Dalgarno sequence, where the ribosome grabs on.

Parts of a gene

The parts of a bacterial gene, and the mRNA it makesA strip of double-stranded DNA, read left to right. The top strand runs 5 prime to 3 prime and the bottom strand 3 prime to 5 prime. From the left: the promoter, made of the minus 35 box (TTGACA) and the minus 10 box (TATAAT), 17 base pairs apart; a bent arrow at plus 1, where the RNA copy starts; the Shine–Dalgarno sequence AGGAGG; the start codon ATG; a few codons, with a break to show the coding part is much longer; the stop codon TAA; and the terminator. Below it, the mRNA, from plus 1 to the terminator, with its 5 prime end on the left. Its end folds into a small hairpin. The stretch before the start codon and the stretch after the stop codon are hatched: they are copied into the mRNA but not translated.promoterterminator−35−10+1startstopTTGACATATAATATGTAA5′3′3′5′17 bpAGGAGGShine–Dalgarnocodonscoding strandtemplate strandmRNA5′3′AUGUAA5′ UTRtranslated3′ UTRnot translatednot translatednot to scale
A gene, and the mRNA it makes. RNA polymerase grabs the promoter (the −35 and −10 boxes) and starts copying at +1. The copy, the mRNA, runs from +1 to the terminator. Only the middle part, from the start codon to the stop codon, is read into protein. The ends (the UTRs, untranslated regions) are copied but not read. The boxes show textbook E. coli letters; a typical syn3A coding part is about 850 letters long.

Genes on both strands

Real syn3A genes on both strands, bases 9,000 to 14,000A map of syn3A's chromosome from base 9,000 to base 14,000, with the two strands as two lines and a ruler every 1,000 bases. Above the lines, on the forward strand, the end of the gyrA gene points right. Below them, on the other strand, genes 0008, 0009 and the start of 0010 point left. Between gyrA and 0008 sits a terminator. A table lists how GenBank writes each one: gyrA as 7435..9939, and the others as complement(...), for example complement(9991..10968).syn3A, bases 9,000–14,000 (real GenBank data)9,00010,00011,00012,00013,00014,0005′3′3′5′terminatorgyrA00080009forward strand →← other strandstart codonGenBank writes them as:0007 gyrA7435..99390008complement(9991..10968)0009complement(10968..13535)0010complement(13525..15141)complement(a..b): on the other strand,starting at b and read down to a.
Genes on both strands. A real stretch of syn3A. gyrA sits on the forward strand (the letters as GenBank writes them) and points right. The next genes sit on the other strand and point left, so GenBank writes them as complement(start..end). Of syn3A's 455 protein genes, 254 are on the other strand.

Where two genes meet

Zoom on base 10,968, where gene 0009 ends and gene 0008 beginsFifteen real base pairs of syn3A, bases 10,961 to 10,975. The top row is the forward strand, 5 prime to 3 prime, left to right. The bottom row is the other strand, its partner letters. Reading the bottom row from right to left, gene 0009 ends with the stop codon TAA, and gene 0008 begins with the start codon ATG. The two codons share the letter at base 10,968.forward strand10,968ATTATAGCTACGATTATAATTATATAATGC5′3′3′5′TAA end of 0009start of 0008 ATGon the other strand, both genes readright to left, 5′ to 3′
Where two genes meet. On the other strand, gene 0009 ends with the stop codon TAA and gene 0008 starts with ATG, sharing the letter at base 10,968. GenBank numbers the forward strand, so for these genes you take the partner letters and read right to left.

DNA has two strands, and genes sit on both. GenBank writes every position along one strand, the one in the file. A gene on that strand runs left to right, from small numbers to big ones, and GenBank writes it as 7435..9939. A gene on the other strand runs the opposite way, and GenBank writes it as complement(9991..10968): the numbers are still on the file’s strand, smaller first, but the gene is read on the partner strand, from 10,968 down to 9,991.

Here are all 493 of syn3A’s genes, from its real GenBank record. Tap a gene to see its card, or step through them with Previous and Next.

syn3A’s 493 genes

syn3A’s whole chromosome, a loop of 543,379 base pairs, drawn as a circle. Every gene sits at its real place and length: the outer ring holds the genes on the forward strand, the inner ring those on the other strand. Tap a gene, or step through them.

dnaA: Chromosomal replication initiator proteindnaN: DNA polymerase III subunit betarnmV: Ribonuclease M5ksgA: 16S rRNA (adenine(1518)-N(6)/adenine(1519)-N(6))- dimethyltransferaseJCVISYN3A_0005: Uncharacterized proteingyrB: DNA gyrase subunit BgyrA: DNA gyrase subunit ArnsD: Nucleoside ABC transporter permeasernsC: Nucleoside ABC transporter permeasernsA: Nucleoside ABC transporter ATP-binding proteinrnsB: Nucleoside ABC transporter substrate-binding proteinmetRS: Methionine--tRNA ligaseJCVISYN3A_0918: Imidazoleglycerol-phosphate dehydratasetetM: Tetracycline resistance ribosomal protection proteinrpsR: 30S ribosomal protein S18priB: Single-stranded DNA-binding proteinrpsF: 30S ribosomal protein S6JCVISYN3A_0029: Uncharacterized FMN-dependent NADH-azoreductaseJCVISYN3A_0030: Uncharacterized ABC transporter ATP-binding proteinJCVISYN3A_0033: Uncharacterized proteinJCVISYN3A_0034: Uncharacterized efflux ABC transporter permeaseftsH: Membrane anchored AAA+ proteasetilS: tRNA lysidine(34) synthetaseJCVISYN3A_0042: Uncharacterized transcriptional regulatoryabD: Uncharacterized methyltransferaseholA: DNA polymerase III subunit deltatmk: dTMP kinaserecR: Recombination proteindnaX: DNA polymerase III subunit gamma and tauffs: Signal recognition particle sRNA small typeahpC: Uncharacterized peroxiredoxinJCVISYN3A_0060: Uncharacterized proteinserRS: Serine--tRNA ligasedusB: Uncharacterized tRNA dihydrouridine synthaselysRS: Lysine--tRNA ligasetrxA: ThioredoxinJCVISYN3A_0066: Low specificity hydrolaserrfA: 5S ribosomal RNArrlA: 23S ribosomal RNArrsA: 16S ribosomal RNAtRNA-Leu: tRNA-LeutRNA-Lys: tRNA-LysasnRS: Asparagine--tRNA ligaseJCVISYN3A_0077: Uncharacterized hydrolasetsaD: tRNA (adenosine(37)-N6)-threonylcarbamoyltransferase complex transferase subunit DJCVISYN3A_0080: Uncharacterized proteinmnmE: tRNA uridine(34) 5-carboxymethylaminomethyl synthesis GTPaserpsT: 30S ribosomal protein S20JCVISYN3A_0094: Uncharacterized proteinsecA: Preprotein translocase subunit AyycJ: Uncharacterized 5'-3' exonucleasexseB: Exodeoxyribonuclease VII small subunitxseA: Exodeoxyribonuclease VII large subunitnusB: Transcription antitermination factorJCVISYN3A_0108: Uncharacterized lipoproteinJCVISYN3A_0109: Deoxyribonuclease IVbcsA: Glycolipid synthase AbcsB: Glycolipid synthase BgalU: UTP--glucose-1-phosphate uridylyltransferaseJCVISYN3A_0116: Uncharacterized proteinplsY: Acyl-phosphate glycerol 3-phosphate acyltransferasegluRS: Glutamate--tRNA ligaseJCVISYN3A_0127: Uncharacterized phosphohydrolaserpoE: DNA-directed RNA polymerase subunit deltapyrG: CTP synthasefbaA: Fructose-1,6-bisphosphate aldolaseietA: Toxin-antitoxin AAA ATPaseietS: Toxin-antitoxin serine proteaserpmE: 50S ribosomal protein L31JCVISYN3A_0138: Uncharacterized proteinytqI: NanoRNAsetdk: Thymidine kinaseprfA: Peptide chain release factor 1prmC: Protein-(glutamine-N5) methyltransferase, release factor-specificJCVISYN3A_0143: Uncharacterized proteintsaC: tRNA (adenosine(37)-N6)-threonylcarbamoyltransferase complex transferase subunitJCVISYN3A_0145: Uncharacterized acetyltransferaseJCVISYN3A_0146: Uncharacterized proteinclsA: Cardiolipin synthaserpsL: 30S ribosomal protein S12rpsG: 30S ribosomal protein S7JCVISYN3A_0150: Translation elongation factor GJCVISYN3A_0151: Translation elongation factor TussrA: Transfer-messenger RNAalaRS: Alanine--tRNA ligaseJCVISYN3A_0164: Uncharacterized proteinamiC: Oligopeptide ABC transporter permeaseJCVISYN3A_0166: Oligopeptide ABC transporter permeaseamiE: Oligopeptide ABC transporter ATP-binding proteinamiF: Oligopeptide ABC transporter ATP-binding proteinamiA: Oligopeptide ABC transporter substrate-binding proteinpotC: Spermidine/putrescine ABC transporter permeasepotB: Spermidine/putrescine ABC transporter permeasepotA: Spermidine/putrescine ABC transporter ATP-binding proteinrplT: 50S ribosomal protein L20rpmI: 50S ribosomal protein L35infC: Translation initiation factor IF-3def: Peptide deformylasersmD: 16S rRNA (guanine(966)-N(2))-methyltransferasegmk: Guanylate kinaseeno: Phosphopyruvate hydratasepgpA: PhosphatidylglycerophosphataseyrrK: Putative pre-16S rRNA nucleasehptA: Hypoxanthine phosphoribosyltransferaseglpK: Glycerol kinasepfkA: 6-Phosphofructokinasepyk: Pyruvate kinasethrRS: Threonine--tRNA ligasepdhC: Branched-chain alpha-keto acid dehydrogenase subunit E2lpdA: Dihydrolipoyl dehydrogenasepta: Phosphate acetyltransferaseackA: Acetate kinaseptsI: Phosphoenolpyruvate--protein phosphotransferasecrr: PTS glucose transporter subunit IIAJCVISYN3A_0235: Uncharacterized proteinrpsD: 30S ribosomal protein S4JCVISYN3A_0239: Uncharacterized proteinthiI: tRNA 4-thiouridine(8) synthaseysxC: Ribosome biogenesis GTP-binding proteinJCVISYN3A_0248: Uncharacterized proteinJCVISYN3A_0249: Uncharacterized proteinJCVISYN3A_0250: Uncharacterized proteingreA: Transcription elongation factoruvrC: Excinuclease ABC subunit CrnjB: RNase J family beta-CASP ribonucleasenadK: NAD(+) kinasevalRS: Valine--tRNA ligaserpe: Ribulose-phosphate 3-epimeraseJCVISYN3A_0263: Ribosome small subunit-dependent GTPase AJCVISYN3A_0264: Uncharacterized serine/threonine protein kinasetsaE: tRNA (N6-adenosine(37)-N6)-threonylcarbamoyltransferase complex ATPasetsaB: tRNA N6-adenosine(37)-N6-threonylcarbamoyltransferase complex dimerization subunittRNA-Ser: tRNA-SerJCVISYN3A_0281: Uncharacterized proteinproRS: Proline--tRNA ligasernhA: Double-stranded RNA binding RNase HIlepA: Elongation factor 4JCVISYN3A_0286: Uncharacterized proteinaspRS: Aspartate--tRNA ligasehisRS: Histidine--tRNA ligaserbfA: Ribosome-binding factor AtruB: tRNA pseudouridine(55) synthaseribF: FAD synthetaserpsO: 30S ribosomal protein S15tRNA-Gly: tRNA-GlyJCVISYN3A_0296: Uncharacterized proteininfB: Translation initiation factor IF-2JCVISYN3A_0298: Uncharacterized L7Ae family proteinJCVISYN3A_0299: Uncharacterized proteinnusA: Transcription termination/antitermination protein NusArimP: Ribosome assembly cofactorfre: Flavin reductasepolC: PolC-type DNA polymerase IIIcdsA: Phosphatidate cytidylyltransferaseJCVISYN3A_0305: Uncharacterized metallopeptidasetrpRS: Tryptophan--tRNA ligaseecfS: Uncharacterized ECF transporter S componentJCVISYN3A_0315: Uncharacterized proteintkt: TransketolaseJCVISYN3A_0317: Uncharacterized proteinJCVISYN3A_0325: Uncharacterized proteinJCVISYN3A_0326: Uncharacterized proteinscpA: Chromosome segregation protein AscpB: Chromosome segregation protein BrluB: Uncharacterized pseudouridine synthasedgk: Deoxyguanosine kinaseJCVISYN3A_0332: Uncharacterized proteinJCVISYN3A_0338: Uncharacterized lipoproteinppa: Inorganic diphosphataseecfS: Uncharacterized ECF transporter S componentJCVISYN3A_0346: Uncharacterized proteincmk: Cytidylate kinaseengA: Ribosome biogenesis GTPasehupA: DNA-binding proteinJCVISYN3A_0352: Uncharacterized proteinJCVISYN3A_0353: Uncharacterized proteinrnpB: RNase P RNA component class BJCVISYN3A_0359: Ribonuclease Yffh: Signal recognition particle proteinrlmH: 23S rRNA (pseudouridine(1915)-N3)-methyltransferaserpsP: 30S ribosomal protein S16rimM: 16S rRNA processing proteintrmD: tRNA (guanosine(37)-N1)-methyltransferaserplS: 50S ribosomal protein L19ylqF: L16-binding dependent 50S subunit-maturation GTPaseywjA: Flippase AywjA: Flippase BJCVISYN3A_0373: Uncharacterized proteintRNA-Arg: tRNA-ArgJCVISYN3A_0375: Uncharacterized proteinJCVISYN3A_0376: Uncharacterized proteinobgE: Ribosome GTPasenadE: NAD(+) synthaseJCVISYN3A_0379: Uncharacterized proteinnadD: Nicotinate (nicotinamide) nucleotide adenylyltransferasemtnN: 5'-Methylthioadenosine nucleosidasednk: Deoxynucleoside kinasemnmA: tRNA 2-thiouridine(34) synthaseJCVISYN3A_0388: Uncharacterized proteinJCVISYN3A_0389: Uncharacterized proteinfmt: Methionyl-tRNA formyltransferaseefp: Elongation factor PJCVISYN3A_0392: Uncharacterized proteinlon: Endopeptidase LaJCVISYN3A_0398: Uncharacterized lipoproteinJCVISYN3A_0399: Uncharacterized efflux ABC transporter permeaseJCVISYN3A_0400: Uncharacterized proteaseJCVISYN3A_0401: Uncharacterized peptidaseybeY: rRNA maturation RNaseera: Ribosome GTPaserecO: DNA repair proteinglyRS: Glycine--tRNA ligasednaG: DNA primaserpoD: RNA polymerase subunit sigmatrmK: Uncharacterized methyltransferaseJCVISYN3A_0409: Uncharacterized proteinJCVISYN3A_0410: Uncharacterized helicaseJCVISYN3A_0411: Uncharacterized proteinJCVISYN3A_0412: Uncharacterized proteinapt: Adenine phosphoribosyltransferaserelA: Guanosine-3',5'-bis(diphosphate) 3'-pyrophosphohydrolasesmc: Chromosome segregation proteinJCVISYN3A_0416: Uncharacterized proteinJCVISYN3A_0418: Ribonuclease IIIplsX: Phosphate acyltransferasefakA: Fatty acid kinase subunit AJCVISYN3A_0421: Uncharacterized proteinrpmB: 50S ribosomal protein L28tRNA-Leu: tRNA-LeuJCVISYN3A_0424: Uncharacterized proteinpstS: Phosphate ABC transporter substrate-binding proteinpstA: Phosphate ABC transporter permeasepstB: Phosphate ABC transporter ATP-binding proteinphoU: Phosphate transport system regulatory proteinftsY: Signal recognition particle-docking proteinJCVISYN3A_0430: Uncharacterized DNA-binding proteinJCVISYN3A_0431: Uncharacterized metallophosphoesterasemetK: Methionine adenosyltransferasecutC: Uncharacterized proteinrlmFO: 23S rRNA (uridine(1939)-m5)-methyltransferasemanA: Mannose-6-phosphate isomeraseyhaM: Putative 3'-5' exoribonucleasehinT: Uncharacterized proteinJCVISYN3A_0439: Uncharacterized lipoproteinJCVISYN3A_0440: Uncharacterized lipoproteiniscS: Cysteine desulfuraseiscU: Iron-sulfur cluster assembly scaffold proteinyggN: 5-Formyltetrahydrofolate cyclo-ligaseJCVISYN3A_0444: Uncharacterized peptidasepgi: Glucose-6-phosphate isomerasedut: dUTP diphosphataseJCVISYN3A_0448: Uncharacterized rRNA methyltransferasegapdh: Glyceraldehyde-3-phosphate dehydrogenaseparE: DNA topoisomerase IV subunit BparC: DNA topoisomerase IV subunit Aldh: L-lactate dehydrogenaseJCVISYN3A_0478: Uncharacterized proteinJCVISYN3A_0479: Uncharacterized peptidaseJCVISYN3A_0481: Uncharacterized lipoproteinrpsU: 30S ribosomal protein S21JCVISYN3A_0154: Uncharacterized peptidaseJCVISYN3A_0493: Uncharacterized peptidasenanE: N-acetylmannosamine-6-phosphate 2-epimeraseJCVISYN3A_0495: Uncharacterized kinaserpmA: 50S ribosomal protein L27prp: Maturation protease for ribosomal protein L27rplU: 50S ribosomal protein L21JCVISYN3A_0503: Uncharacterized proteinrsmI: 16S rRNA (cytidine(1402)-2'-O)-methyltransferaserpmG: 50S ribosomal protein L33JCVISYN3A_0505: Uncharacterized lipoproteintRNA-Leu: tRNA-LeutRNA-Lys: tRNA-LystRNA-Gln: tRNA-GlntRNA-Tyr: tRNA-TyrtRNA-Thr: tRNA-ThrJCVISYN3A_0511: Uncharacterized proteinplsC: Acyl-phosphate glycerol 3-phosphate acyltransferaseacpS: ACP synthasedctD: Cytidine deaminaseJCVISYN3A_0516: Uncharacterized proteinrluD: Uncharacterized RNA pseudouridine synthaselspA: Lipoprotein signal peptidaseileRS: Isoleucine--tRNA ligaseJCVISYN3A_0520: Uncharacterized hydrolasesepF: Cell division proteinftsZ: Cell division proteinftsA: Cell division proteinrsmH: 16S rRNA (cytosine(1402)-N(4))-methyltransferasemraZ: Cell division/cell wall cluster transcriptional repressorrpmF: 50S ribosomal protein L32JCVISYN3A_0527: Uncharacterized proteinpheRS: Phenylalanine--tRNA ligase subunit betapheS: Phenylalanine--tRNA ligase subunit alphaJCVISYN3A_0530: Uncharacterized proteinrrfB: 5S ribosomal RNArrlB: 23S ribosomal RNArrsB: 16S ribosomal RNAargRS: Arginine--tRNA ligasefrr: Ribosome recycling factorpyrH: UMP kinaseJCVISYN3A_0538: Uncharacterized proteintsf: Translation elongation factor TsrpsB: 30S ribosomal protein S2dnaJ: Molecular chaperonednaK: Molecular chaperonegrpE: Nucleotide exchange factorhrcA: Heat-inducible transcription repressorclpB: ATP-dependent Clp protease subunit BJCVISYN3A_0548: tRNA (cytidine(34)-2'-O)-methyltransferasergdB: Non-canonical purine NTP pyrophosphatasemet14p: Adenylyl-sulfate kinaseJCVISYN3A_0592: Uncharacterized proteinJCVISYN3A_0593: Uncharacterized proteinJCVISYN3A_0599: Uncharacterized proteinrnjA: Ribonuclease JJCVISYN3A_0601: Uncharacterized proteinJCVISYN3A_0604: Uncharacterized proteinJCVISYN3A_0605: Uncharacterized proteinpgk: Phosphoglycerate kinasegapDH: Type I glyceraldehyde-3-phosphate dehydrogenasednaI: Primosomal proteindnaB: Chromosome replication initiation proteinmutM: DNA-formamidopyrimidine glycosylasepolA: DNA polymerase IdnaE: DNA polymerase III subunit alphatyrRS: Tyrosine--tRNA ligasepncB: Nicotinate phosphoribosyltransferaseJCVISYN3A_0615: Uncharacterized proteinfakB: Fatty acid binding proteinfakB: Fatty acid binding proteintRNA-Trp: tRNA-TrptRNA-Trp: tRNA-TrpJCVISYN3A_0620: Uncharacterized transcriptional regulatoracpA: Acyl carrier proteinJCVISYN3A_0622: Uncharacterized lipoproteinJCVISYN3A_0623: Uncharacterized proteintRNA-His: tRNA-HisleuRS: Leucine--tRNA ligasetRNA-Ile: tRNA-IleJCVISYN3A_0636: Uncharacterized lipoproteinrpsI: 30S ribosomal protein S9rplM: 50S ribosomal protein L13JCVISYN3A_0639: Uncharacterized efflux ABC transporter permeasetruA: tRNA pseudouridine(38-40) synthaseecfT: ECF transporter T componentecfA: ECF transporter ATPaseecfA: ECF transporter ATPaserplQ: 50S ribosomal protein L17rpoA: DNA-directed RNA polymerase subunit alpharpsK: 30S ribosomal protein S11rpsM: 30S ribosomal protein S13rpmJ: 50S ribosomal protein L36infA: Translation initiation factor IF-1map: Type I methionyl aminopeptidaseadk: Adenylate kinasesecY: Preprotein translocase subunitrplO: 50S ribosomal protein L15rpsE: 30S ribosomal protein S5rplR: 50S ribosomal protein L18rplF: 50S ribosomal protein L6rpsH: 30S ribosomal protein S8rpsN: 30S ribosomal protein S14rplE: 50S ribosomal protein L5rplX: 50S ribosomal protein L24rplN: 50S ribosomal protein L14rpsQ: 30S ribosomal protein S17rpmC: 50S ribosomal protein L29rplP: 50S ribosomal protein L16rpsC: 30S ribosomal protein S3rplV: 50S ribosomal protein L22rpsS: 30S ribosomal protein S19rplB: 50S ribosomal protein L2rplW: 50S ribosomal protein L23rplD: 50S ribosomal protein L4rplC: 50S ribosomal protein L3rpsJ: 30S ribosomal protein S10tRNA-Thr: tRNA-ThrtRNA-Val: tRNA-ValtRNA-Glu: tRNA-GlutRNA-Asn: tRNA-AsnfolD: Bifunctional 5,10-methylene-tetrahydrofolate dehydrogenase/5,10-methylene-tetrahydrofolate cyclohydrolasenatA: Sodium transportertrkA: Potassium transportergatB: Glutamyl-tRNA amidotransferase subunit BgatA: Glutamyl-tRNA amidotransferase subunit AgatC: Glutamyl-tRNA amidotransferase subunit CligA: DNA ligase (NAD(+))JCVISYN3A_0691: Uncharacterized proteinJCVISYN3A_0692: Uncharacterized pseudouridine synthaseJCVISYN3A_0693: Uncharacterized proteaseptsH: Phosphocarrier proteinpcrA: ATP-dependent DNA helicaseJCVISYN3A_0696: Uncharacterized transporterJCVISYN3A_0697: Uncharacterized glycosyl transferasethiB: Thiamine ABC transporter permeasethiQ: Thiamine ABC transporter ATP-binding proteinthiB: Thiamine ABC transporter substrate-binding proteinJCVISYN3A_0710: Uncharacterized hydrolasetRNA-Arg: tRNA-ArgtRNA-Pro: tRNA-ProtRNA-Ala: tRNA-AlatRNA-Met: tRNA-MettRNA-Met: tRNA-MettRNA-Ser: tRNA-SertRNA-Met: tRNA-MettRNA-Asp: tRNA-AsptRNA-Phe: tRNA-PhenagB: Glucosamine-6-phosphate deaminasetpiA: Triose-phosphate isomeraseJCVISYN3A_0728: Uncharacterized hydrolasepgm: Phosphoglycerate mutase (2,3-diphosphoglycerate-independent)JCVISYN3A_0730: Uncharacterized proteindeoC: Deoxyribose-phosphate aldolasedeoB: PhosphopentomutasepunA: Purine-nucleoside phosphorylasenrdE: Ribonucleotide-diphosphate reductase subunit alphanrdI: Ribonucleotide reductase assembly proteinnrdF: Ribonucleoside-diphosphate reductase subunit betasecG: Preprotein translocase subunitrnr: Ribonuclease RsmpB: SsrA-binding proteinJCVISYN3A_0777: Uncharacterized proteinJCVISYN3A_0778: Uncharacterized proteinptsG: PTS sugar transportermgtA: Magnesium-translocating P-type ATPaseatpC: F0F1 ATP synthase subunit delta/epsilonatpD: F0F1 ATP synthase subunit betaatpG: F0F1 ATP synthase subunit gammaatpA: F0F1 ATP synthase subunit alphaatpD: F0F1 ATP synthase subunit deltaatpF: F0F1 ATP synthase subunit BatpE: F0F1 ATP synthase subunit CatpB: F0F1 ATP synthase subunit AJCVISYN3A_0797: Uncharacterized proteinupp: Uracil phosphoribosyltransferaseglyA: Serine hydroxymethyltransferaserpiB: Ribose 5-phosphate isomerase BrpoC: DNA-directed RNA polymerase subunit beta'rpoB: DNA-directed RNA polymerase subunit betaJCVISYN3A_0805: Uncharacterized proteinrplG: 50S ribosomal protein L7/L12rplJ: 50S ribosomal protein L10rplA: 50S ribosomal protein L1rplK: 50S ribosomal protein L11galE: UDP-glucose 4-epimerase GalEglf: UDP-galactopyranose mutasewhiA: Uncharacterized DNA-binding proteinlgt: Diacylglyceryl transferasetrx: Thioredoxin-disulfide reductaselgt: Diacylglyceryl transferasehpr: HPr(Ser) kinase/phosphataseecfS: Uncharacterized ECF transporter S componentfolC: Dihydrofolate synthaseuvrA: Excinuclease ABC subunit AuvrB: Excinuclease ABC subunit ByqeN: DNA polymerase III subunit deltaJCVISYN3A_0827: Uncharacterized proteintRNA-Cys: tRNA-CysJCVISYN3A_0830: Uncharacterized proteinprs: Phosphoribosylpyrophosphate synthetasepth: Aminoacyl-tRNA hydrolaserplI: 50S ribosomal protein L9dnaC: Replicative DNA helicaseJCVISYN3A_0835: Uncharacterized lipoproteinecfS: Uncharacterized ECF transporter S componentcysRS: Cysteine--tRNA ligaserlmB: 23S rRNA (guanosine(2251)-2'-O)-methyltransferaserpmG: 50S ribosomal protein L33secE: Preprotein translocase subunitnusG: Antitermination proteinJCVISYN3A_0851: Uncharacterized lipoproteinJCVISYN3A_0852: Uncharacterized proteinJCVISYN3A_0853: Uncharacterized proteintopA: DNA topoisomerase IJCVISYN3A_0870: Uncharacterized C4-dicarboxylate ABC transporterychF: Uncharacterized ATPaseJCVISYN3A_0873: Uncharacterized proteinrsmG: 16S rRNA (guanine(527)-N(7))-methyltransferasepgsA: CDP-diacylglycerol--glycerol-3-phosphate 3-phosphatidyltransferaseJCVISYN3A_0876: Uncharacterized amino acid permeaseJCVISYN3A_0877: Uncharacterized proteinJCVISYN3A_0878: Uncharacterized amino acid permeasecorA: Magnesium transporterJCVISYN3A_0881: Uncharacterized MFS transportermnmG: tRNA uridine(34) 5-carboxymethylaminomethyl synthesis enzymegltP: Proton-glutamate symportercdr: Coenzyme A Disulfide ReductaseJCVISYN3A_0906: Uncharacterized proteinJCVISYN3A_0907: Uncharacterized hydrolaseyidC: Membrane protein insertasernpA: Ribonuclease P protein componentrpmH: 50S ribosomal protein L34rRNArRNAsyn3A chromosome543,379 base pairs493genes455 protein · 38 RNATap a gene
493 genes

Zoom: 10,000 bases around the origin (base 1)

539 kb540 kb541 kb542 kb1 kb2 kb3 kb4 kb5 kbdnaA: 1..1353dnaN: 1511..2638rnmV: 2675..3217ksgA: 3207..4007JCVISYN3A_0005: 4064..5155cdr: complement(537498..538841)JCVISYN3A_0906: complement(539821..540537)JCVISYN3A_0907: complement(540537..541331)yidC: complement(541408..542598)rnpA: complement(542616..542945)rpmH: complement(542952..543086)dnaAdnaNrnmVksgAcdrJCVISYN3A_0906yidCrnpAbase 1

Above the line, forward-strand genes point right (→). Below it, other-strand genes point left (←).

The whole genome

All 493 genes: 455 for proteins and 38 for RNAs. 217 lie on the forward strand (outer ring) and 276 on the other strand (inner ring).

Tap a gene on the circle or the strip, use Previous and Next, or search by name or locus tag.

Protein genes, by rough group

  • Translation 94
  • Making and processing RNA 49
  • DNA 26
  • Transport 31
  • Metabolism 109
  • Membrane and secretion 13
  • Cell division 3
  • Unknown function 130
  • RNA genes 38rRNA, tRNA, other

The groups are rough guesses from the product names in GenBank, so a few genes sit in the wrong one. Very short genes (a tRNA gene is about 76 bases) are drawn a little wider than true scale so you can see them.

Data: NCBI GenBank CP016816.2 (JCVI-syn3A), via site/src/data/syn3a-genes.json.

Some things to notice:

  • The genes are packed tight. 88% of the genome codes for protein. The middle-sized gap between two neighboring genes is only 36 base pairs, and 63 pairs of neighbors overlap.
  • Both strands carry genes: 201 protein genes on the file’s strand and 254 on the other.
  • Proteins come in all sizes. The shortest is 37 amino acids, ribosomal protein L36 (gene rpmJ). The middle length is 283 and the longest is 1,795.
  • Even this minimal cell has mysteries. The 2018 GenBank record calls 130 proteins “uncharacterized”. Later work worked out jobs for many of them, but about 90 are still unclear.

Math toolkit: positions and strands

GenBank counts bases from 1, and a range includes both ends. So dnaA, at 1..1353, is

length=end−start+1=1,353−1+1=1,353 bases\text{length} = \text{end} - \text{start} + 1 = 1{,}353 - 1 + 1 = 1{,}353 \text{ bases}

That is 1,353÷3=4511{,}353 \div 3 = 451 codons. The last codon is the stop, which adds no amino acid, so the protein has 450 amino acids.

Python counts from 0, and a slice stops just before its end index. GenBank’s base 1 is Python’s genome[0], so GenBank’s start..end is

genome[start - 1:end]

The start moves down by one, and the end stays where it is, because the slice leaves out its end index. For dnaA that is genome[0:1353]: 1,353 letters.

For a gene on the other strand, cut out the same slice and then take its reverse complement, from Lesson 2. The gene at complement(9991..10968) is reverse_complement(genome[9990:10968]): 978 letters that start with the start codon ATG.

Check yourselfsyn3A's ftsZ gene runs from base 331,411 to base 332,568, on the other strand. How long is it, and how many amino acids does its protein have?

Length: 332,568−331,411+1=1,158332{,}568 - 331{,}411 + 1 = 1{,}158 bases. That is 1,158÷3=3861{,}158 \div 3 = 386 codons, and without the stop codon, 385 amino acids.

Check yourselfWhich Python slice holds ftsZ, and what do you do with it next?

genome[331410:332568]. The gene is on the other strand, so take the reverse complement of that slice before reading it.

Check yourselfLetter 10 of a gene is in which codon, and where in it?

Codon ⌊(10−1)÷3⌋+1=4\lfloor (10 - 1) \div 3 \rfloor + 1 = 4, as its first letter. Codon 1 holds letters 1–3, codon 2 letters 4–6, codon 3 letters 7–9, and codon 4 starts at letter 10.

Transcription: DNA to RNA

Transcription copies a gene into RNA. The enzyme that does it is RNA polymerase. First it has to find where a gene starts. A helper protein called the sigma factor rides on the polymerase and feels along the DNA for two short signposts: in E. coli, the letters TTGACA (the −35 box) and TATAAT (the −10 box), about 17 base pairs apart. The numbers say how far each box sits before position +1, where copying starts, about 7 bases after the −10 box. Real promoters rarely match all twelve letters, and the closer the match, the more often the gene is copied.

Once it has bound, the polymerase pulls the two DNA strands apart. It reads one of them, the template strand, and builds the RNA by pairing with it: A with U, T with A, G with C, C with G. The two strands run in opposite directions, so the polymerase reads the template from its 3′ end toward its 5′ end, and the RNA grows from its 5′ end to its 3′ end.

The other DNA strand is the coding strand. The RNA has the same letters as the coding strand, with U in place of T. That is why gene sequences are always written as the coding strand: the RNA, and the protein, can be read straight off it.

The figure shows the three stages. The polymerase lands on the promoter; it opens a bubble about 13 base pairs long and copies the template, with the newest 8 or so RNA letters still paired to the DNA; and at the end of the gene it lets go.

1 · Sigma finds the promoter

RNA polymerase with sigma, sitting on a promoterA large blue-violet RNA polymerase sits on top of a straight, closed DNA double strand. An orange sigma factor lies along its lower left side and touches the DNA in two places: at the minus 35 box, TTGACA, and at the minus 10 box, TATAAT, 17 base pairs apart. A bent arrow marks plus 1, where the RNA will start, pointing right. The top strand runs 5 prime to 3 prime from left to right, and the bottom strand 3 prime to 5 prime. One rung is drawn per base pair. The letters are made up around the textbook boxes.Closed: the DNAis still paired.5′3′3′5′RNA polymerasesigma (σ)−35TTGACA−10TATAAT17 bp+1
Sigma finds the promoter. The sigma factor rides on RNA polymerase and feels along the DNA for two short boxes, TTGACA at −35 and TATAAT at −10, 17 base pairs apart. When both fit, the enzyme settles there. The DNA is still closed. (Made-up DNA around the textbook E. coli boxes; one rung per base pair.)

2 · The bubble: copying

RNA polymerase copying DNA inside an open bubbleInside a translucent RNA polymerase, the DNA strands are pulled apart into a bubble 13 base pairs long. The top strand, the coding strand, arches over the bubble. The bottom strand, the template strand, runs 3 prime to 5 prime from left to right and is the one being read. Eight RNA letters sit paired to the template letters: the RNA–DNA hybrid. The RNA's 3 prime end is at the right, next to the template letter that will be read next. Its 5 prime end leaves through a channel at the top left. The polymerase moves to the right at about 25 letters a second. The letters are real syn3A DNA from inside the gyrA gene.moves → about 25 letters a second5′3′3′5′AAGAGGATAACTACTCCTATTGATUCCUAUUG5′RNA3′RNA polymerasecoding strandhybrid: 8 pairsopen bubble: 13 base pairstemplate strand, read 3′ → 5′
The bubble: copying. The enzyme opens about 13 base pairs. It reads the template strand from its 3′ end toward its 5′ end and adds RNA letters to the RNA's 3′ end, so the RNA grows 5′ → 3′. The newest 8 RNA letters stay paired to the template; the rest peels off. The RNA matches the coding strand, with U for T. (Real syn3A DNA from inside the gyrA gene.)

3 · The terminator: letting go

Termination: the RNA folds into a hairpin and the polymerase lets goThe end of the RNA copied from syn3A's gyrA gene. Just after the gene, the RNA letters AUCGGG and CCCGAU pair with each other, so the RNA folds into a hairpin: a stem of 6 pairs, 4 of them G–C, with a loop of 4 letters on top. After the hairpin comes a run of U's, UUUUU, at the RNA's 3 prime end. The RNA polymerase floats away at the top right, and the DNA below is closed again. The DNA under the hairpin has the same letters, with arrows showing the two halves that mirror each other.5′3′3′5′DNA closes againterminator DNARNApolymeraselets goCAAAAAAAUCGGGAAAUCCCGAUUUUUU5′ …3′hairpinG–C pairs (3 bonds)hold tightloopU's: a weak gripthe RNA floats free
The terminator: letting go. Just past the end of syn3A's gyrA gene, the new RNA pairs with itself and folds into a hairpin with a stem rich in G–C pairs. Behind the hairpin, the RNA is held only by a run of U's, whose A–U pairs with the DNA are weak. The hairpin pulls on the enzyme, the grip fails, and the polymerase and the RNA come off. (Real syn3A letters.)

How does the polymerase know where to stop? Many bacterial genes end with a terminator: a stretch rich in G and C that, once copied, folds back on itself into a tight hairpin, followed by a run of T’s. The hairpin pulls on the polymerase, and behind it the RNA is held only by weak A–U pairs, so the RNA comes loose. syn3A’s gyrA gene ends with one: the third panel of the figure shows its real letters.

In the whole-cell model of syn3A, each polymerase adds about 25 letters per second, a value measured in E. coli. So a 1,000-letter gene takes

1,000 letters25 letters per second=40 seconds\frac{1{,}000 \text{ letters}}{25 \text{ letters per second}} = 40 \text{ seconds}

syn3A has about 187 RNA polymerases, and about 29 of them are copying a gene at any moment. The genes for ribosomal RNA are copied fastest, about 90 letters per second, with two polymerases on each.

Now be the polymerase. In Polymerase Pilot, slide along the DNA until both of sigma’s windows match, bind, choose your template strand, and spot the terminator before you reach it. The sequences are made up, built around the textbook boxes.

3D game · Polymerase Pilot

Be the RNA polymerase

Mistakes 0Stars 0/15

1. Find the promoter

You are RNA polymerase, the enzyme that copies a gene into RNA. First, find where a gene starts: its promoter.

Your sigma factor (σ, the orange part) has two reading windows, 17 base pairs apart. One looks for TTGACA (the −35 box). The other looks for TATAAT (the −10 box).

Slide along the DNA. When both windows match, the grip meter fills up. Then tap Bind here.

The DNA here is made up, built around the textbook boxes and terminator of E. coli genes.

−35−10+1
AATTCTTTAGAACACTTTACACATACTTTCCTTTAGCTTATGTTTGTAGTTGTATCAAGTTTGACAGTCATCTCATCAGCCAGTATAATACTACAAACCAGTGGGTCGATTATCGAACTG
TTAAGAAATCTTGTGAAATGTGTATGAAAGGAAATCGAATACAAACATCAACATAGTTCAAACTGTCAGTAGAGTAGTCGGTCATATTATGATGTTTGGTCACCCAGCTAATAGCTTGAC

Sigma reads the top strand, 5′→3′, left to right →

−35 window 1/6AATTCTwants TTGACA
−10 window 3/6TACTTTwants TATAAT
Grip 4 · no grip

The sequences in this game are made up, built around the textbook E. coli promoter boxes (−35 TTGACA, −10 TATAAT) and a typical terminator. Drawn roughly to scale: the DNA is 2 nm wide with 0.34 nm per base pair, and a real RNA polymerase is about 15 nm long.

Your first Python of the lesson does the polymerase’s job: given a template strand, written 5′ to 3′ as sequences always are, return the mRNA, also 5′ to 3′. The last check uses a real syn3A gene on the other strand, where GenBank’s strand is the template.

Python exercise

Transcribe: DNA to mRNA

Ctrl+Enter runs your code. Tab indents; press Esc then Tab to leave the editor.

The genetic code

A ribosome reads an mRNA three letters at a time. Each group of three is a codon, and each codon stands for one amino acid or for “stop”. The table that links them is the genetic code. Four letters in three positions make 4×4×4=644 \times 4 \times 4 = 64 codons, for only 20 amino acids and stop, so most amino acids have several codons. AUG is special: it means methionine, and it is also the usual start codon, where a ribosome begins.

The code is often drawn as a wheel. Read it from the center out: the first letter of the codon, then the second, then the third, and on the rim the amino acid. Tap any codon or amino acid, or build a codon with the buttons.

The genetic code

Read the wheel from the center out: the first letter of a codon, then the second, then the third, and on the rim the amino acid it stands for. Tap any codon or amino acid.

64 codons: 61 stand for the 20 amino acids and 3 mean stop.

UCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGUCAGFPheLLeuSSerYTyrStopCCysStopWTrpLLeuPProHHisQGlnRArgIIleMMetTThrNAsnKLysSSerRArgVValAAlaDAspEGluGGlyWTrp

Build a codon:

1st
2nd
3rd

64 codons, 20 amino acids

Three letters, each one of four (U, C, A, G), give 4 × 4 × 4 = 64 codons. Most amino acids have two or more codons, so a change in the third letter often makes no difference.

syn3A’s 455 genes hold 159,283 codons. The most used is AAA (lysine), 15,126 times; the rarest is CGG (arginine), only 10 times.

oily (hydrophobic)polar (water-loving)positive chargenegative chargeglycine and prolinestopstart (AUG)

Codes: NCBI genetic code tables 1 (standard) and 4 (Mycoplasma and Spiroplasma). Usage: all codons of syn3A’s 455 protein genes, start and stop codons included, from GenBank CP016816.2.

A different code in syn3A

Almost all living things use the same code, the standard code. syn3A doesn’t. Like the mycoplasma bacteria it was built from, it uses genetic code 4, where one codon changes meaning: UGA means tryptophan, not stop. syn3A has only two stop codons, UAA and UAG. Switch the wheel to syn3A’s code to watch UGA flip.

The change is real and the genome is full of it. Inside syn3A’s genes, TGA (UGA in the mRNA) appears 1,383 times, against only 36 for TGG, tryptophan’s other codon. 343 of its 455 genes contain a TGA. syn3A has a transfer RNA whose anticodon pairs with UGA, and it lacks the release factor that reads UGA as stop in E. coli. Read with the standard code, 343 of its proteins would be cut short.

Turn on syn3A’s usage on the wheel to see which codons the cell really uses. Its DNA is rich in A and T, and its codons show it: AAA, for lysine, appears 15,126 times, and CGG only 10. Only 7.75% of third letters are G or C.

Math toolkit: codons and reading frames

Why three letters? A code needs at least 21 different words: 20 amino acids and stop. With 4 letters,

  • 1-letter words give 41=44^1 = 4: not enough.
  • 2-letter words give 42=164^2 = 16: still not enough.
  • 3-letter words give 43=644^3 = 64: enough, with 43 to spare.

So three is the shortest length that works, and the spare words are why most amino acids have several codons: 61 codons for 20 amino acids in the standard code, about 3 each.

A ribosome has to start reading in the right place. Shift the start by one letter and every codon changes. Take ATGAAACCC:

  • Starting at letter 1: ATG AAA CCC, which reads M K P.
  • Starting at letter 2: TGA AAC, then two letters left over.
  • Starting at letter 3: GAA ACC, then one letter left over.

These are the three reading frames of a strand. In Python they start at index 0, 1, or 2. The other strand has three more, so every stretch of DNA has six reading frames. A gene uses one of them, from its start codon on.

Two exercises turn this into code. First, cut a sequence into codons in any frame.

Python exercise

Cut a sequence into codons

Ctrl+Enter runs your code. Tab indents; press Esc then Tab to leave the editor.

Then translate: look each codon up in the genetic code, which the engine gives you as two Python dicts in virtualcell.genetic_code, STANDARD_CODE and SYN3A_CODE. Their keys are RNA codons such as "AUG", and "*" means stop. Stop at the first stop codon. One check translates a real syn3A gene, rpmH, whose protein is part of the ribosome.

Python exercise

Translate: mRNA to protein

Ctrl+Enter runs your code. Tab indents; press Esc then Tab to leave the editor.

Math toolkit: chance and stop codons

How do you find a gene in a long string of DNA? Look for a long stretch with no stop codon. In random DNA with all four letters equally common, each codon is a stop with chance

p=364≈0.047(standard code)p = \frac{3}{64} \approx 0.047 \quad \text{(standard code)}

So stops turn up about every 1÷p≈211 \div p \approx 21 codons. With syn3A’s code, only 2 of the 64 codons are stops: p=2/64≈0.031p = 2/64 \approx 0.031, about one every 32 codons.

syn3A’s letters aren’t equally common: A is 37.5% of its genome, T 38.2%, G 11.9%, and C 12.4%. The chance of a codon is the product of the chances of its letters, so

P(TAA)=0.382×0.375×0.375≈0.054,P(TAG)=0.382×0.375×0.119≈0.017P(\text{TAA}) = 0.382 \times 0.375 \times 0.375 \approx 0.054, \qquad P(\text{TAG}) = 0.382 \times 0.375 \times 0.119 \approx 0.017

Together, p≈0.071p \approx 0.071: in random DNA with syn3A’s letters, a stop turns up about every 14 codons. A and T are common, and so are TAA and TAG.

Now the chance that nn random codons in a row contain no stop. Each one misses with chance 1−p1 - p, and the chances multiply:

P(no stop in n codons)=(1−p)nP(\text{no stop in } n \text{ codons}) = (1 - p)^n

For big nn, use logs as in Lesson 1: log⁡10((1−p)n)=n×log⁡10(1−p)\log_{10}\big((1-p)^n\big) = n \times \log_{10}(1 - p). For a middle-sized syn3A gene of 283 codons, with p=0.071p = 0.071:

283×log⁡10(0.929)=283×(−0.032)≈−9.0283 \times \log_{10}(0.929) = 283 \times (-0.032) \approx -9.0

So the chance is about 10−910^{-9}, one in a billion. A long open stretch almost never happens by chance, which is why it marks a gene. A stretch from a start codon to the next stop in the same frame is called an open reading frame, or ORF.

Find the gene puts this to work on real syn3A DNA. Each lane under the letters shows one reading frame, with stop codons as red bars. Find the long stretch with no stops that starts with ATG. Later levels shuffle a real gene, flip to the other strand, and switch to syn3A’s code.

Game · Find the gene

Which frame reads through?

Stars 0/15
syn3A’s code (4): stops TAA TAGMade-up DNA

 

DNA5′
AGATTTTCAATTGTTATCACTTTTAGGAAACACTAGTCTCTTAAAAGTCTTTAAGTATTA

1. Three frames

A ribosome reads a gene three letters at a time. Each group of three is a codon, and each codon stands for one amino acid.

But where do you start? Start at letter 1, 2 or 3 and the same letters fall into different codons. These are the three reading frames, +1, +2 and +3 (offsets 0, 1 and 2 in Python).

Red bars are stop codons. Find the frame that reads all the way through without one. This sequence is made up.

oily polar + charge − charge ATG (start) stop

Translation: RNA to protein

Translation turns an mRNA into a protein. It happens on the ribosome, a machine made of three RNAs and about fifty proteins, in two parts: a small subunit that holds the mRNA and a large subunit that joins the amino acids. syn3A has about 500 ribosomes.

The ribosome can’t read amino acids. Transfer RNAs (tRNAs) are the adapters. Each tRNA carries one kind of amino acid at one end, and at the other end has three letters, its anticodon, that pair with a codon. The ribosome only checks that pairing; the amino acid just rides along. syn3A manages with 29 kinds of tRNA for its 62 codons that mean amino acids, because some tRNAs pair loosely at the third letter.

The ribosome has three places for tRNAs side by side along the mRNA: the A site, where a new tRNA arrives, the P site, which holds the tRNA carrying the growing chain, and the E site, where the empty tRNA exits.

Reading the mRNA

A ribosome reading mRNA, with tRNAs in the E, P and A sitesA ribosome made of a large sky-blue subunit on top and a smaller gold subunit below. The mRNA runs between them from its 5 prime end on the left to its 3 prime end on the right. Three pink tRNAs stand side by side in the gap: in the E site, an empty tRNA tilting away to leave; in the P site, a tRNA holding the growing protein chain; in the A site, a newly arrived tRNA carrying one amino acid, H. Each tRNA's three anticodon letters pair with the three codon letters below it: CCA with GGU, AAA with UUU, CAC with GUG. The chain of 31 amino acids runs from the P-site tRNA up through a tunnel in the large subunit and out of the top, where it starts to coil. The mRNA is real: codons 29 to 33 of syn3A's rpmJ gene, for ribosomal protein L36.EPAexitpeptidearrivalsmall subunitGGUUUUGUGACUCCAAAACACAAA5′3′KMHgrowing chain31 amino acids so farexit tunnellargesubunittRNAanticodoncodonleavesthe ribosome moves 3 letters at a time
Reading the mRNA. The ribosome reads the mRNA from 5′ to 3′, one codon of three letters at a time. A tRNA whose anticodon pairs with the codon brings the matching amino acid into the A site; the chain held in the P site is joined onto it; then everything shifts one codon and the empty tRNA leaves from the E site. The chain leaves through a tunnel in the large subunit. (Real syn3A mRNA: codons 29–33 of rpmJ, which makes ribosomal protein L36, itself a part of the ribosome.)

The start

The start of translation: the small subunit finds the start codonThe start of syn3A's rpmH mRNA, 5 prime on the left. The gold small subunit of the ribosome sits on it. A tail of its 16S ribosomal RNA, ending in its 3 prime end, pairs with the Shine–Dalgarno sequence AGGAGG: the letters UCCUCC sit under A G G A G G. 7 letters later comes the start codon AUG, in the P site, where the first tRNA, carrying methionine (M), pairs with it through its anticodon UAC. The A site to its right is empty. A dashed outline above shows the large subunit, which joins next.large subunitjoins nextEPAstart codonsmall subunitemptyUACMfirst tRNAbrings MUCCUCC3′16S rRNAits 3′ end, part ofthe small subunitAAAGGAGGUAGUGGUAUGAAA5′3′Shine–Dalgarno7 letters
The start. The small subunit finds where to begin: the 3′ end of its 16S rRNA pairs with the Shine–Dalgarno sequence, AGGAGG, which puts the start codon AUG 7 letters later right in the P site. The first tRNA, carrying methionine (M), pairs with AUG. Then the large subunit joins and reading begins. (Real syn3A: the start of rpmH, ribosomal protein L34.)

Many ribosomes at once

A polysome: several ribosomes on one mRNAOne mRNA, 5 prime on the left and 3 prime on the right, with four ribosomes on it, about 300 letters apart. Each has a protein chain trailing from its top. The chains get longer from left to right: about 30, 130, 230, 330 amino acids, because the ribosomes farther along started earlier. The mRNA is a typical syn3A one: 1,050 letters coding for a 349-amino-acid protein.5′ → 3′: each ribosome moves right,and its chain grows as it goes5′3′startstop30 aa130 aa230 aa330 aaabout 300 letters
Many ribosomes at once. As soon as one ribosome moves off the start, another can board, so one mRNA carries several, about one every 300 letters. Each started at the 5′ end, so the ones farther along have longer chains. In syn3A's model a ribosome reads 5 amino acids a second, so a new one boards about every 20 seconds and each mRNA makes about 3 proteins a minute. (A typical syn3A mRNA: 1,050 coding letters for a 349-amino-acid protein.)

To start, the small subunit’s own RNA pairs with the Shine–Dalgarno sequence, AGGAGG or something like it, which puts the start codon a few letters later right in the P site. The first tRNA brings methionine. Whatever the start codon is (in syn3A, 437 genes start with ATG, 12 with GTG, and a few with TTG, ATA, or ATT), the first amino acid is always methionine, M. Then the large subunit joins.

Then the same cycle repeats for every codon:

  1. A tRNA whose anticodon pairs with the codon in the A site arrives.
  2. The chain on the P-site tRNA is joined onto the new amino acid by a peptide bond.
  3. The ribosome moves 3 letters along. The tRNAs shift from A to P and from P to E, and the empty one leaves.

The chain threads out through a tunnel in the large subunit and starts to fold. When a stop codon reaches the A site, no tRNA fits. A release factor binds instead and cuts the protein free. syn3A has one, which reads UAA and UAG.

As soon as one ribosome moves away from the start, another can board, so one mRNA carries several ribosomes at once, about one every 300 letters. Bacteria have no nucleus, so ribosomes start reading an mRNA while the polymerase is still making it.

In Ribosome Rush, you are the ribosome. The codon waiting in the A site is shown in big letters. Tap the tRNA whose anticodon pairs with it, letter by letter, and pick the release factor at a stop codon. Level 4 tests what you know about syn3A’s code, and level 5 builds a real syn3A protein from start to stop.

3D game · Ribosome Rush

You are the ribosome

Streak 0Stars 0/15

1. Read the codon

You are the ribosome. You read the mRNA three letters at a time. Each group of three is a codon, and each codon calls for one amino acid.

tRNAs bring the amino acids. Find the codon in the little codon table, then tap the tRNA card with that amino acid.

The first codon, AUG, is the start codon: it takes a starter tRNA carrying methionine (M). At the stop codon, pick the release factor.

This mRNA is made up: 6 codons.

Codon 1 of 60 mistakes
P site · start codon5′AUG3′3′???5′
AUUIle
AUCIle
AUAIle
AUGMet

This mRNA is made up. The game uses exact pairs; real tRNAs can also pair loosely (wobble) at the third letter, so syn3A gets by with 29 kinds of tRNA. Sizes are not to scale: a real ribosome is about 20 nm across, and the folded protein is a sketch.

How many, and how fast

Here are the main numbers for gene expression in syn3A. Most come from the whole-cell model built by Zaida Luthey-Schulten’s group, and some of them were measured in E. coli.

In one syn3A cellValue
Genes493: 455 for proteins, 38 for RNAs
RNA polymerasesabout 187, with about 29 copying at any moment
Transcription speedabout 25 letters per second
mRNAsa few hundred at a time: about one per gene
mRNA half-lifeabout 4 minutes
Ribosomesabout 500
Translation speedabout 5 amino acids per second (10–20 in E. coli)
Ribosomes on one mRNAabout one every 300 letters
Protein half-lifeabout 25 hours
Cell cycleabout 105 minutes

A middle-sized syn3A protein has 283 amino acids. Its gene, with the stop codon, is (283+1)×3=852(283 + 1) \times 3 = 852 letters long. Copying it takes 852÷25≈34852 \div 25 \approx 34 seconds, and one ribosome reads it in 283÷5≈57283 \div 5 \approx 57 seconds.

Math toolkit: half-lives and steady state

An mRNA doesn’t last. Enzymes chop it up at random: every mRNA has the same small chance of being chopped in each second, however old it is. Then the number left falls by half every half-life, t1/2t_{1/2}. For syn3A’s mRNAs that is about 4 minutes. Start with 8 copies and stop making more:

  • after 4 minutes, about 4 are left;
  • after 8 minutes, about 2;
  • after 12 minutes, about 1.

In general, after a time tt the fraction left is

fraction left=(12)t/t1/2\text{fraction left} = \left(\tfrac{1}{2}\right)^{t / t_{1/2}}

How long does one mRNA last, on average? Longer than one half-life, because a few copies survive for many half-lives and pull the average up. The average lifetime is

τ=t1/2ln⁡2≈1.44×t1/2\tau = \frac{t_{1/2}}{\ln 2} \approx 1.44 \times t_{1/2}

where ln⁡2≈0.693\ln 2 \approx 0.693 is the natural logarithm of 2, math.log(2) in Python. It comes from the same ee you met in Lesson 2: the fraction left is also e−t/τe^{-t/\tau}. For a 4-minute half-life, τ=4÷0.693≈5.8\tau = 4 \div 0.693 \approx 5.8 minutes.

Now keep making new copies, at a steady rate kk per minute. At first the count climbs. But the more copies there are, the more get chopped each minute: about one in every τ\tau minutes’ worth. The count stops changing when the copies made each minute equal the copies chopped:

k=Nτ⟹N=k×τk = \frac{N}{\tau} \quad\Longrightarrow\quad N = k \times \tau

This is a steady state: the copies keep changing, but their number doesn’t. It settles at the production rate times the average lifetime, wherever it started.

Now put the numbers together for one gene:

  • A ribosome reads 5 amino acids, or 15 letters, per second, so it clears 300 letters in 20 seconds, and a new ribosome can board every 20 seconds. Each mRNA makes about 3 proteins a minute.
  • Each mRNA lasts about 5.8 minutes, so it makes about 3×5.8≈173 \times 5.8 \approx 17 proteins in its life.
  • A ribosomal protein needs about 500 new copies every cell cycle, one for each new ribosome. That takes about 500÷17≈29500 \div 17 \approx 29 mRNAs in 105 minutes: about 0.3 new mRNAs a minute.
  • At steady state the cell then holds 0.3×5.8≈1.70.3 \times 5.8 \approx 1.7 copies of that mRNA at a time.

So even a busy gene keeps only one or two copies of its mRNA. With so few molecules, chance matters: some cells will have more and some fewer, which is what Lesson 7 is about.

Expression Factory simulates one gene in one syn3A cell, from birth to division, with real randomness. The pink strands are mRNAs, the purple balls riding them are ribosomes, and every gold dot is a finished protein. Use the sliders to set how often the gene is copied, how long each mRNA lasts, and how many proteins each one makes, then try the five challenges.

Simulation · Expression Factory

One gene, one cell, one cell cycle

Stars 0/15

Challenge: syn3A holds about one mRNA per gene at any moment. Set the transcription rate so this gene averages about 1 mRNA, keep it there for the last 30 minutes, and let the cell reach division.

1. One at a time

This is one gene in one syn3A cell, from birth to division: 105 minutes, sped up.

RNA polymerase copies the gene into mRNA at random moments. Ribosomes ride each mRNA and build proteins, until the mRNA is chopped up.

Right now this gene makes far too many mRNAs. Slow it down until it averages about 1.

★★★ within 10% of 1 · ★★ within 25% · ★ within 50%

  • Gene
  • RNA polymerase
  • mRNA
  • Ribosome
  • Protein
  • Average of many cells ± spread

These settings average 1.00 × 5.8 = 5.8 mRNAs. Goal: about 1.

1.00 mRNAs a minute

New mRNAs at random moments, on average one every 1.0 minutes.

4 minutes

Each second, each mRNA has a 0.29% chance of being chopped up. syn3A: 4 minutes.

3.0 a minute

A ribosome boards every 20 s and takes 70 s to read the mRNA, so 3.5 ride it at once. syn3A: 3.

3 min per second

A 105-minute run takes 35 s.

The numbers for a typical syn3A protein of 349 amino acids (1,050 letters of mRNA)

Mean lifetime of one mRNA
half-life ÷ ln 2 = 4 ÷ 0.693 = 5.8 min
mRNAs at a time (steady state)
rate × lifetime = 1.00 × 5.8 = 5.8
Proteins from each mRNA
3.0 a minute × 5.8 min = 17.3
Proteins by division
1.00 × 105 = 105 mRNAs × 17.3 ≈ 1,818; the model expects 1,660 ± 234

Why less than the quick estimate? It counts every protein those mRNAs will ever make, but the last ones are still being read at division, and each protein takes 70 s to finish. The ± is the spread from chance alone (one standard deviation): about two cells in three land within it.

Numbers from syn3A’s model (Thornburg et al. 2019). Ribosomes and proteins are drawn roughly to scale; the mRNAs are drawn short (stretched out, 1,050 letters would be about 600 nm, longer than the 400 nm cell). A simplified model: real cells also change these rates as they grow.

Then put the steady-state formula into code.

Python exercise

How many copies of an mRNA?

Ctrl+Enter runs your code. Tab indents; press Esc then Tab to leave the editor.

What a protein costs

Making a protein is expensive. Loading each amino acid onto its tRNA uses about 2 ATP, and the ribosome uses about 2 more for each step, so each amino acid costs about 4 ATP. A middle-sized protein of 283 amino acids costs about 283×4≈1,100283 \times 4 \approx 1{,}100 ATP. Recall from Lesson 2 that each ATP is worth about 20 kT.

For the whole cell: 500 ribosomes at 5 amino acids per second, for 105 minutes, join about

500×5×105×60≈1.6×107 amino acids500 \times 5 \times 105 \times 60 \approx 1.6 \times 10^{7} \text{ amino acids}

That is about 45,000 new proteins of average size every cell cycle, for about 60 million ATP. The syn3A model’s own estimate is similar: about 77 million ATP for all the work of copying and reading genes in one cycle, 59 million of it for translation.

Mutations: when the code changes

A mutation is a change in the DNA. The simplest kind swaps one letter for another, and what it does to the protein depends on where it lands:

  • Silent: the new codon means the same amino acid, so the protein doesn’t change. This happens most often at the third letter. GCA, GCC, GCG, and GCT all mean alanine.
  • Missense: one amino acid changes. Some swaps barely matter; others break the protein.
  • Nonsense: the new codon is a stop, so the protein ends early.

In syn3A’s ptsH gene, the 88 codons between the start and the stop allow 792 one-letter changes (3 for each letter). 173 of them are silent, 591 are missense, and 28 are nonsense.

Adding or removing a letter is worse. The ribosome still reads in threes from the start, so every codon after the change is regrouped: a frameshift. The protein is wrong from that point on, and the new frame soon hits a stop codon by chance, in syn3A’s DNA after about 14 codons. In 1961, Francis Crick, Sydney Brenner, and colleagues used frameshifts in a virus gene to show that the code is read three letters at a time. One extra letter broke the gene, and three extra letters close together let it work again.

syn3A’s code adds a twist. A change from TGG to TGA is silent in syn3A, because both mean tryptophan. In E. coli the same change is a nonsense mutation.

In Mutation Lab, a real syn3A gene runs across the top in codons, with its protein underneath as a chain of beads. Tap a codon to zoom in, then change, insert, or delete a letter, and watch the protein rebuild itself. Each mission asks for one kind of mutation.

Game · Mutation Lab

1. Silent

Stars 0/18

Goal: Change one letter and keep the protein exactly the same.

Tip: try the third letter of a codon.
ptsH · JCVISYN3A_0694 · real syn3A DNA, 270 letterssyn3A’s code

Mission 1: Silent

This is ptsH, a real syn3A gene (JCVISYN3A_0694). Its 270 letters make a protein of 89 amino acids that helps the cell take in sugar.

Change one letter so the protein stays exactly the same. That is a silent mutation. It works because the code has spare words: several codons can mean the same amino acid.

Tap a codon to zoom in, pick a letter, then choose what to change it to.

Real geneThe real gene: 89 amino acids.

Change a letter and watch what happens to the protein.

Start the mission, then tap a codon to zoom in.

0 edits tried

Check yourselfA gene's codon AAA (lysine) changes to AAG. What kind of mutation is it?

Silent: AAG also means lysine, so the protein doesn’t change.

Check yourselfA codon TTA (leucine) changes to TAA. What happens?

TAA is a stop codon, so this is a nonsense mutation: the protein ends at that point, and everything after it is never made.

Check yourselfWhy does deleting 3 letters do less damage than deleting 1?

Three letters are a whole codon. The protein loses one amino acid (or two, if the deletion spans two codons), but every codon after it is read in the right frame. Deleting 1 letter shifts the frame for the rest of the gene.

From genome to proteome in code

Now put the whole lesson into code. The proteome is the full set of a cell’s proteins. The plan: read the list of genes from syn3A’s GenBank record, cut each gene out of the genome, translate it with syn3A’s code, and check every protein against the one GenBank lists.

In Lesson 2 you read the sequence at the end of a GenBank file. The genes are listed above it, in the FEATURES table. Here is the entry for the gene on the other strand from earlier, from syn3A’s real record:

     gene            complement(9991..10968)
                     /gene="rnsD; uptD"
                     /locus_tag="JCVISYN3A_0008"
     CDS             complement(9991..10968)
                     /gene="rnsD; uptD"
                     /locus_tag="JCVISYN3A_0008"
                     /codon_start=1
                     /transl_table=4
                     /product="Nucleoside ABC transporter permease"
                     /protein_id="AVX54576.1"
                     /translation="MTILFNTSILTWALALVGVLLFASLSSLVSEKAGVVNIAVEGMM
                     IIGALVVSILGTYLTSNDNKSNYTQIPIVLLAGVITAVFALLHAFPAITLKANQIISG

Each feature starts on a line with its kind at position 5, such as gene or CDS (a coding sequence: the part that becomes protein), and its location after it. The lines below it, indented by 21 spaces, are its qualifiers: a /, a name, =, and a value in quotes. Long values carry on over several lines. /transl_table=4 is GenBank’s note that this gene uses code 4. The record also marks 3 broken genes, pseudogenes, with a bare /pseudo; they make no protein.

This exercise is a challenge: read the whole FEATURES table into a list of Python dicts. The starter walks you through it step by step.

Python exercise

Challenge: read the genes in a GenBank record

Ctrl+Enter runs your code. Tab indents; press Esc then Tab to leave the editor.

Now the pipeline. For each protein-coding gene, cut it out with genome[start - 1:end], take the reverse complement if it is on the other strand, translate it, and make the first amino acid M. The starter includes working versions of the functions you wrote earlier, so this exercise doesn’t depend on them. The last check runs all 455 genes.

Python exercise

Every gene to its protein

Ctrl+Enter runs your code. Tab indents; press Esc then Tab to leave the editor.

One more, if you want it: find the genes yourself, with no GenBank at all, by searching for long open reading frames. The checks compare your list with GenBank’s genes, and the success message explains the ones you miss.

Python exercise

Optional challenge: find the genes yourself

Ctrl+Enter runs your code. Tab indents; press Esc then Tab to leave the editor.

Code milestone: the gene-to-protein pipeline

Two new modules join the engine in this lesson:

  • virtualcell/expression.py holds transcribe, codons, translate, mrna_steady_state, and find_orfs.
  • virtualcell/annotation.py holds parse_features and gene_to_protein.

Two pieces are written for you. virtualcell/genetic_code.py has the standard code and syn3A’s code 4. genomes.py can now load syn3A’s full GenBank record, and constants.py has this lesson’s numbers: polymerases, ribosomes, speeds, and half-lives.

Copy each function you wrote into its module, replacing the stub, then run the checks from the engine folder:

python -m pytest

When they pass, the engine can rebuild syn3A’s proteome:

from virtualcell.genomes import load_syn3a_genome, load_syn3a_genbank
from virtualcell.annotation import parse_features, gene_to_protein

genome = load_syn3a_genome()
genes = [f for f in parse_features(load_syn3a_genbank())
         if f["kind"] == "CDS" and "pseudo" not in f]

proteins = {g["locus_tag"]: gene_to_protein(genome, g) for g in genes}
print(len(proteins))                        # 455
print(proteins["JCVISYN3A_0648"])           # MKVRSSVKQICDKCRVIRRKGRVMIICVTPKHKQRQG
print(sum(proteins[g["locus_tag"]] == g["translation"] for g in genes))  # 455

Numbers to remember

QuantityValue
A gene in GenBankstart..end, counted from 1, both ends included
Its lengthend − start + 1
The same gene in Pythongenome[start - 1:end], reverse-complemented if on the other strand
Promoter boxes (E. coli)−35 TTGACA and −10 TATAAT, about 17 base pairs apart
Codons3 letters; 64 codons for 20 amino acids and stop
syn3A’s code (code 4)UGA means tryptophan; stops are UAA and UAG
Stops in random DNA1 in 21 codons (equal letters, standard code); about 1 in 14 in syn3A’s DNA
Transcriptionabout 25 letters per second
Translationabout 5 amino acids per second in syn3A’s model; 10–20 in E. coli
syn3A493 genes; about 187 RNA polymerases; about 500 ribosomes
mRNA half-lifeabout 4 minutes; average lifetime = half-life ÷ ln 2, about 5.8 minutes
Steady statenumber of copies = production rate × average lifetime
Cost of a proteinabout 4 ATP per amino acid

Next lesson: molecules in motion. You will see how molecules wander through a crowded cell by random walks, how fast reactions happen, and build your first simulator.

Sources and further reading

  • Thornburg ZR, et al. Kinetic modeling of the genetic information processes in a minimal cell. Frontiers in Molecular Biosciences 6:130 (2019). Polymerase and ribosome counts, speeds, half-lives, and ATP costs.
  • Thornburg ZR, et al. Fundamental behaviors emerge from simulations of a living minimal cell. Cell 185:345–360 (2022).
  • Breuer M, et al. Essential metabolism for a minimal cell. eLife 8:e36842 (2019).
  • Bianchi DM, et al. Toward the complete functional characterization of a minimal bacterial proteome. Journal of Physical Chemistry B 126:6820–6834 (2022).
  • syn3A’s genome and genes: NCBI GenBank record CP016816.2.
  • The genetic codes: NCBI, The Genetic Codes, tables 1 and 4.
  • Crick FHC. On protein synthesis. Symposia of the Society for Experimental Biology 12:138–163 (1958).
  • Crick FHC, Barnett L, Brenner S, Watts-Tobin RJ. General nature of the genetic code for proteins. Nature 192:1227–1232 (1961).
  • Milo R, Phillips R. Cell Biology by the Numbers. Garland Science, 2015. Free online at book.bionumbers.org.
  • Alberts B, et al. Molecular Biology of the Cell, 6th edition. Garland Science, 2014.