# From gene to protein: how a cell builds anything

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0ie08c000tjw06yjwbgqn9
> It describes who does what, in what order, and with which technology. Read the plain-language sections first; the JSON at the end is the exact, complete data.

## Summary

- 25 steps across 3 layers
- Persona: RNA polymerase, mRNA (the message), tRNA (the delivery driver)
- Technology / systems: The nucleus, The ribosome, Folding and shipping

## How to read this file

- A process is made of **layers**. The main layer is the top level; any step of kind `subprocess` opens a detail layer with its own lanes and steps.
- **Lanes** are either persona (people/roles) or technology (systems). Each step belongs to one lane; `using` lists tools a person uses for that step.
- Step kinds: `start`, `task`, `decision` (its arrows carry the answer as a label), `subprocess`, `end`.

## From gene to protein: how a cell builds anything

Lanes:
- The nucleus: technology / system (id `nuc`)
- RNA polymerase: person / role (id `rna`)
- mRNA (the message): person / role (id `mrna`)
- The ribosome: technology / system (id `rib`)
- tRNA (the delivery driver): person / role (id `trna`)
- Folding and shipping: technology / system (id `golgi`)

Steps, in the order they run:

1. **A signal says: make this protein** [start; The nucleus; id `g1`]
   - then RNA polymerase copies the gene into mRNA
2. **RNA polymerase copies the gene into mRNA** [subprocess; RNA polymerase; id `g2`], opens the detail layer "Transcription"
   - then Cap and tail added, junk sections (introns) cut out
3. **Cap and tail added, junk sections (introns) cut out** [task; mRNA (the message); id `g3`]
   - then Is the message clean?
4. **Is the message clean?** [decision; mRNA (the message); id `g4`]
   - if "Yes" go to mRNA slips out through a nuclear pore; if "No" go to Quality control destroys the faulty message
5. **mRNA slips out through a nuclear pore** [task; mRNA (the message); id `g5`]
   - then Ribosome clamps on at the start codon
6. **Ribosome clamps on at the start codon** [task; The ribosome; id `g6`]
   - then Reads the message three letters at a time
7. **Reads the message three letters at a time** [subprocess; The ribosome; id `g7`], opens the detail layer "Translation"
   - then The chain folds into its 3D shape
8. **The chain folds into its 3D shape** [task; Folding and shipping; id `g8`]
   - then Folded correctly?
9. **Folded correctly?** [decision; Folding and shipping; id `g9`]
   - if "Yes" go to Shipped to wherever it is needed; if "No" go to Chaperone proteins help it refold
10. **Shipped to wherever it is needed** [task; Folding and shipping; id `g10`]
   - then A working protein: an enzyme, a muscle fiber, a hormone
11. **A working protein: an enzyme, a muscle fiber, a hormone** [end; Folding and shipping; id `g11`]
12. **Chaperone proteins help it refold** [task; Folding and shipping; id `g8a`]
   - then The chain folds into its 3D shape
13. **Quality control destroys the faulty message** [task; mRNA (the message); id `g3a`]
   - then RNA polymerase copies the gene into mRNA

```mermaid
flowchart LR
  subgraph l_nuc["The nucleus"]
    n_g1(["A signal says: make this protein"])
  end
  subgraph l_rna["RNA polymerase"]
    n_g2[["RNA polymerase copies the gene into mRNA"]]
  end
  subgraph l_mrna["mRNA (the message)"]
    n_g3["Cap and tail added, junk sections (introns) cut out"]
    n_g4{"Is the message clean?"}
    n_g3a["Quality control destroys the faulty message"]
    n_g5["mRNA slips out through a nuclear pore"]
  end
  subgraph l_rib["The ribosome"]
    n_g6["Ribosome clamps on at the start codon"]
    n_g7[["Reads the message three letters at a time"]]
  end
  subgraph l_golgi["Folding and shipping"]
    n_g8["The chain folds into its 3D shape"]
    n_g9{"Folded correctly?"}
    n_g8a["Chaperone proteins help it refold"]
    n_g10["Shipped to wherever it is needed"]
    n_g11(["A working protein: an enzyme, a muscle fiber, a hormone"])
  end
  n_g1 --> n_g2
  n_g2 --> n_g3
  n_g3 --> n_g4
  n_g4 -->|"Yes"| n_g5
  n_g4 -->|"No"| n_g3a
  n_g3a --> n_g2
  n_g5 --> n_g6
  n_g6 --> n_g7
  n_g7 --> n_g8
  n_g8 --> n_g9
  n_g9 -->|"Yes"| n_g10
  n_g9 -->|"No"| n_g8a
  n_g8a --> n_g8
  n_g10 --> n_g11
```

### Translation (detail of step "Reads the message three letters at a time")

Lanes:
- The ribosome: technology / system (id `rib`)
- tRNA (the delivery driver): person / role (id `trna`)
- mRNA (the message): person / role (id `mrna`)

Steps, in the order they run:

1. **Reads the next codon** [start; The ribosome; id `r1`]
   - then A tRNA with the matching anticodon arrives
2. **A tRNA with the matching anticodon arrives** [task; tRNA (the delivery driver); id `r2`]
   - then Right match?
3. **Right match?** [decision; tRNA (the delivery driver); id `r3`]
   - if "Yes" go to Amino acid added to the growing chain; if "No" go to The wrong tRNA drifts away
4. **Amino acid added to the growing chain** [task; The ribosome; id `r4`]
   - then Stop codon?
5. **Stop codon?** [decision; The ribosome; id `r5`]
   - if "Yes" go to The finished chain is released; if "No — read on" go to Reads the next codon
6. **The finished chain is released** [end; The ribosome; id `r6`]
7. **The wrong tRNA drifts away** [task; tRNA (the delivery driver); id `r2a`]
   - then A tRNA with the matching anticodon arrives

```mermaid
flowchart LR
  subgraph l_rib["The ribosome"]
    n_r1(["Reads the next codon"])
    n_r4["Amino acid added to the growing chain"]
    n_r5{"Stop codon?"}
    n_r6(["The finished chain is released"])
  end
  subgraph l_trna["tRNA (the delivery driver)"]
    n_r2["A tRNA with the matching anticodon arrives"]
    n_r3{"Right match?"}
    n_r2a["The wrong tRNA drifts away"]
  end
  n_r1 --> n_r2
  n_r2 --> n_r3
  n_r3 -->|"Yes"| n_r4
  n_r3 -->|"No"| n_r2a
  n_r2a --> n_r2
  n_r4 --> n_r5
  n_r5 -->|"Yes"| n_r6
  n_r5 -->|"No — read on"| n_r1
```

### Transcription (detail of step "RNA polymerase copies the gene into mRNA")

Lanes:
- The nucleus: technology / system (id `nuc`)
- RNA polymerase: person / role (id `rna`)

Steps, in the order they run:

1. **Finds the promoter and binds to the DNA** [start; RNA polymerase; id `t1`]
   - then DNA unwinds a short stretch
2. **DNA unwinds a short stretch** [task; The nucleus; id `t2`]
   - then Adds matching RNA letters one by one
3. **Adds matching RNA letters one by one** [task; RNA polymerase; id `t3`]
   - then Hit the terminator signal?
4. **Hit the terminator signal?** [decision; RNA polymerase; id `t4`]
   - if "Yes" go to Lets go; the mRNA copy is released; if "No — keep copying" go to Adds matching RNA letters one by one
5. **Lets go; the mRNA copy is released** [end; RNA polymerase; id `t5`]

```mermaid
flowchart LR
  subgraph l_nuc["The nucleus"]
    n_t2["DNA unwinds a short stretch"]
  end
  subgraph l_rna["RNA polymerase"]
    n_t1(["Finds the promoter and binds to the DNA"])
    n_t3["Adds matching RNA letters one by one"]
    n_t4{"Hit the terminator signal?"}
    n_t5(["Lets go; the mRNA copy is released"])
  end
  n_t1 --> n_t2
  n_t2 --> n_t3
  n_t3 --> n_t4
  n_t4 -->|"Yes"| n_t5
  n_t4 -->|"No — keep copying"| n_t3
```

## Full data (JSON)

```json
{
  "title": "From gene to protein: how a cell builds anything",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "nuc",
          "name": "The nucleus",
          "type": "system"
        },
        {
          "id": "rna",
          "name": "RNA polymerase",
          "type": "person"
        },
        {
          "id": "mrna",
          "name": "mRNA (the message)",
          "type": "person"
        },
        {
          "id": "rib",
          "name": "The ribosome",
          "type": "system"
        },
        {
          "id": "trna",
          "name": "tRNA (the delivery driver)",
          "type": "person"
        },
        {
          "id": "golgi",
          "name": "Folding and shipping",
          "type": "system"
        }
      ],
      "steps": [
        {
          "id": "g1",
          "kind": "start",
          "lane": "nuc",
          "next": [
            {
              "to": "g2"
            }
          ],
          "uses": [],
          "label": "A signal says: make this protein"
        },
        {
          "id": "g2",
          "kind": "subprocess",
          "lane": "rna",
          "next": [
            {
              "to": "g3"
            }
          ],
          "uses": [],
          "child": "m_transcribe",
          "label": "RNA polymerase copies the gene into mRNA"
        },
        {
          "id": "g3",
          "kind": "task",
          "lane": "mrna",
          "next": [
            {
              "to": "g4"
            }
          ],
          "uses": [],
          "label": "Cap and tail added, junk sections (introns) cut out"
        },
        {
          "id": "g4",
          "kind": "decision",
          "lane": "mrna",
          "next": [
            {
              "to": "g5",
              "label": "Yes"
            },
            {
              "to": "g3a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Is the message clean?"
        },
        {
          "id": "g3a",
          "kind": "task",
          "lane": "mrna",
          "next": [
            {
              "to": "g2"
            }
          ],
          "uses": [],
          "label": "Quality control destroys the faulty message"
        },
        {
          "id": "g5",
          "kind": "task",
          "lane": "mrna",
          "next": [
            {
              "to": "g6"
            }
          ],
          "uses": [],
          "label": "mRNA slips out through a nuclear pore"
        },
        {
          "id": "g6",
          "kind": "task",
          "lane": "rib",
          "next": [
            {
              "to": "g7"
            }
          ],
          "uses": [],
          "label": "Ribosome clamps on at the start codon"
        },
        {
          "id": "g7",
          "kind": "subprocess",
          "lane": "rib",
          "next": [
            {
              "to": "g8"
            }
          ],
          "uses": [],
          "child": "m_translate",
          "label": "Reads the message three letters at a time"
        },
        {
          "id": "g8",
          "kind": "task",
          "lane": "golgi",
          "next": [
            {
              "to": "g9"
            }
          ],
          "uses": [],
          "label": "The chain folds into its 3D shape"
        },
        {
          "id": "g9",
          "kind": "decision",
          "lane": "golgi",
          "next": [
            {
              "to": "g10",
              "label": "Yes"
            },
            {
              "to": "g8a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Folded correctly?"
        },
        {
          "id": "g8a",
          "kind": "task",
          "lane": "golgi",
          "next": [
            {
              "to": "g8"
            }
          ],
          "uses": [],
          "label": "Chaperone proteins help it refold"
        },
        {
          "id": "g10",
          "kind": "task",
          "lane": "golgi",
          "next": [
            {
              "to": "g11"
            }
          ],
          "uses": [],
          "label": "Shipped to wherever it is needed"
        },
        {
          "id": "g11",
          "kind": "end",
          "lane": "golgi",
          "next": [],
          "uses": [],
          "label": "A working protein: an enzyme, a muscle fiber, a hormone"
        }
      ],
      "title": "From gene to protein: how a cell builds anything",
      "parent": null
    },
    "m_translate": {
      "id": "m_translate",
      "lanes": [
        {
          "id": "rib",
          "name": "The ribosome",
          "type": "system"
        },
        {
          "id": "trna",
          "name": "tRNA (the delivery driver)",
          "type": "person"
        },
        {
          "id": "mrna",
          "name": "mRNA (the message)",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "r1",
          "kind": "start",
          "lane": "rib",
          "next": [
            {
              "to": "r2"
            }
          ],
          "uses": [],
          "label": "Reads the next codon"
        },
        {
          "id": "r2",
          "kind": "task",
          "lane": "trna",
          "next": [
            {
              "to": "r3"
            }
          ],
          "uses": [],
          "label": "A tRNA with the matching anticodon arrives"
        },
        {
          "id": "r3",
          "kind": "decision",
          "lane": "trna",
          "next": [
            {
              "to": "r4",
              "label": "Yes"
            },
            {
              "to": "r2a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Right match?"
        },
        {
          "id": "r2a",
          "kind": "task",
          "lane": "trna",
          "next": [
            {
              "to": "r2"
            }
          ],
          "uses": [],
          "label": "The wrong tRNA drifts away"
        },
        {
          "id": "r4",
          "kind": "task",
          "lane": "rib",
          "next": [
            {
              "to": "r5"
            }
          ],
          "uses": [],
          "label": "Amino acid added to the growing chain"
        },
        {
          "id": "r5",
          "kind": "decision",
          "lane": "rib",
          "next": [
            {
              "to": "r6",
              "label": "Yes"
            },
            {
              "to": "r1",
              "label": "No — read on"
            }
          ],
          "uses": [],
          "label": "Stop codon?"
        },
        {
          "id": "r6",
          "kind": "end",
          "lane": "rib",
          "next": [],
          "uses": [],
          "label": "The finished chain is released"
        }
      ],
      "title": "Translation",
      "parent": {
        "map": "m_root",
        "step": "g7"
      }
    },
    "m_transcribe": {
      "id": "m_transcribe",
      "lanes": [
        {
          "id": "nuc",
          "name": "The nucleus",
          "type": "system"
        },
        {
          "id": "rna",
          "name": "RNA polymerase",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "t1",
          "kind": "start",
          "lane": "rna",
          "next": [
            {
              "to": "t2"
            }
          ],
          "uses": [],
          "label": "Finds the promoter and binds to the DNA"
        },
        {
          "id": "t2",
          "kind": "task",
          "lane": "nuc",
          "next": [
            {
              "to": "t3"
            }
          ],
          "uses": [],
          "label": "DNA unwinds a short stretch"
        },
        {
          "id": "t3",
          "kind": "task",
          "lane": "rna",
          "next": [
            {
              "to": "t4"
            }
          ],
          "uses": [],
          "label": "Adds matching RNA letters one by one"
        },
        {
          "id": "t4",
          "kind": "decision",
          "lane": "rna",
          "next": [
            {
              "to": "t5",
              "label": "Yes"
            },
            {
              "to": "t3",
              "label": "No — keep copying"
            }
          ],
          "uses": [],
          "label": "Hit the terminator signal?"
        },
        {
          "id": "t5",
          "kind": "end",
          "lane": "rna",
          "next": [],
          "uses": [],
          "label": "Lets go; the mRNA copy is released"
        }
      ],
      "title": "Transcription",
      "parent": {
        "map": "m_root",
        "step": "g2"
      }
    }
  }
}
```
