Visualizing Cell Signalling: the cGAS–STING Pathway

A signal followed from its trigger to the nucleus: DNA in the cytosol, a second messenger, a membrane protein that changes compartment, a kinase and a transcription factor. The example is the cGAS–STING pathway of innate immunity.

cGAS–STING sensing of cytosolic DNA

Step through the mechanism with the controls or the arrow keys, or open it in the viewer for the timeline, the thumbnails and SVG or PNG export.

TBK1 recruitmentShown: 2′3′-cGAMP ×2 (bound to STING); STING ×4 (active); TBK1 (active, bound to STING (ctt)).
cGAS–STING sensing of cytosolic DNA: TBK1 recruitment.

The mechanism

DNA does not belong in the cytosol, and its presence there signals infection or damage. The enzyme cGAS binds double-stranded DNA, assembles on it and synthesizes the second messenger 2′3′-cGAMP.

cGAMP binds dimers of STING in the membrane of the endoplasmic reticulum. STING oligomerizes and moves to the Golgi, where its C-terminal tail recruits the kinase TBK1. TBK1 phosphorylates the transcription factor IRF3, which dimerizes and enters the nucleus, where it induces type I interferon genes. That last step is not shown.

  1. 1 Cytosolic dsDNA

  2. 2 cGAS binding

  3. 3 cGAS assembly on DNA

  4. 4 2′3′-cGAMP production

  5. 5 cGAMP binding to STING

    The DNA and cGAS leave the figure here to make room for the rest of the pathway. They are hidden, not degraded.

  6. 6 STING activation and oligomerization

  7. 7 STING trafficking ER → Golgi

  8. 8 TBK1 recruitment

  9. 9 IRF3 phosphorylation

  10. 10 IRF3 dimerization

  11. 11 Nuclear translocation of IRF3

A schematic, explanatory model: it shows the order of events, not stoichiometry or kinetics.

How Molecular Motion represents it

The pathway crosses four compartments, declared in the document: the cytoplasm, the ER membrane, the Golgi membrane and the nucleus. Every actor is drawn in the band of its compartment, and translocate moves it to another. With includeBound, the IRF3 dimer enters the nucleus as one.

cGAS has a footprint of 18 base pairs of duplex DNA, so the two copies occupy adjacent stretches of the same molecule. cGAMP does not exist at the start: synthesize creates each copy, by the cGAS that made it. It is a molecule actor with its own glyph.

A figure has one bilayer. When STING is moved from the ER membrane to the Golgi membrane, the bilayer is relabelled: it is a change of context, not a journey, and vesicular transport is not drawn. The document also takes the DNA and cGAS out of the figure half way, to make room for what follows.

From examples/cgas-sting.yaml
actors:
  - id: sting
    type: protein
    label: STING
    compartment: er-membrane
    copies: 4
    interfaces: [{ id: dimer }, { id: pocket }, { id: oligo }]
    sites: [{ id: ctt, label: C-terminal tail }]
    initial: { visible: false }

steps:
  - id: cgamp
    title: 2′3′-cGAMP production
    actions:
      - { type: synthesize, product: "cgamp#1", compartment: cytoplasm, by: "cgas#1" }
      - { type: synthesize, product: "cgamp#2", compartment: cytoplasm, by: "cgas#2" }

  - id: trafficking
    title: STING trafficking ER → Golgi
    actions:
      - { type: translocate, actor: "sting#1", to: golgi-membrane }
      - { type: translocate, actor: "sting#2", to: golgi-membrane }
      - { type: translocate, actor: "sting#3", to: golgi-membrane }
      - { type: translocate, actor: "sting#4", to: golgi-membrane }

That is part of the complete file. Showing it on a page takes a few lines:

Figure.tsx
import { parseMechanism } from '@molecular-motion/core/yaml';
import { MolecularMechanism } from '@molecular-motion/react';
import source from './cgas-sting.yaml?raw';   // Vite; any way of reading the file as text works

export function Figure() {
  return <MolecularMechanism definition={parseMechanism(source)} controls />;
}

The language describes actors, sites and coordinates, and Actions lists every action used here. To change this mechanism and see the result, paste the file into the playground.

References

All examples · About Molecular Motion · Source on GitHub