Enzymes and metabolism
How a cell runs its chemistry. You will see why enzymes make slow reactions fast but still have a top speed, follow glucose through syn3A's glycolysis gene by gene, count where its ATP goes, write the whole network as one matrix, and run flux balance analysis on a real piece of syn3A's published metabolic model to predict which genes it cannot live without.
Watch first: what you'll learn1 minute · narrated · captions
Read the transcript
Welcome to lesson five. A cell is a chemical factory, and today you'll learn how it runs and what powers it.
syn3A is a thin client: it imports sugar, amino acids and nucleosides, then builds itself with about three hundred reactions.
Left alone, many of these reactions would take years, some millions of years. Enzymes make them happen in a few milliseconds.
But every enzyme has a top speed. Once it is busy all the time, adding more sugar doesn't make it any faster.
syn3A gets all of its energy from one pathway, glycolysis: ten steps that split each sugar and make ATP along the way.
ATP is the cell's cash. syn3A keeps only about seventy thousand, and remakes that many every two or three seconds.
To see the whole factory at once, we write every reaction into one table, the stoichiometric matrix: a chemical ledger.
At steady state every molecule is made exactly as fast as it is used, so every row of the ledger balances.
Flux balance analysis then asks an optimizer: within these limits, what's the most the cell can make? The answer sits on a corner.
You'll be an enzyme, build glycolysis, balance a network, and predict which genes syn3A can't live without. Let's begin.
By the end of this lesson you will be able to:
- Explain how an enzyme lowers a reaction's energy barrier, and why it can't change where the reaction ends up
- Use the Michaelis–Menten equation, and read kcat, Km and Vmax off a saturation curve
- Tell competitive from noncompetitive inhibitors by what they do to Km and Vmax
- Follow glucose through glycolysis in syn3A, gene by gene, and count the ATP and NADH it makes
- Use pools and flows to work out how fast a cell remakes its ATP, and turn model fluxes into molecules per second
- Write a metabolic network as a stoichiometric matrix, and multiply it by a list of reaction speeds by hand
- Set up flux balance analysis as a linear program, and explain why the best answer sits on a corner
- Run flux balance analysis and gene knockouts on a real piece of syn3A's metabolic model in Python
On this page
- Life runs on chemistry
- Enzymes make reactions fast
- How fast an enzyme can work
- Inhibitors: slowing enzymes down
- Glycolysis: sugar to energy
- ATP: the energy currency
- The stoichiometric matrix
- Flux balance analysis
- Knockouts: which genes can syn3A lose
- Code milestone: flux balance analysis
- Numbers to remember
- Sources and further reading
- Practice problems
Life runs on chemistry
In Lesson 3 you followed a gene all the way to a protein. Most of the proteins a cell makes are enzymes: molecules that make one chemical reaction happen, over and over. This lesson is about what they do. By the end you will have written Python that predicts how much energy syn3A can make from its food, and which of its genes it cannot live without.
Metabolism is the name for all the chemical reactions in a cell. Some break food down to release energy. Others use that energy to build the cell’s parts: amino acids, nucleotides, lipids. Think of the cell as a factory. Raw materials come in through the doors, machines (the enzymes) turn them into parts, and the factory runs on one kind of power.
For syn3A, someone has written the whole factory down. In 2019 Marian Breuer, Zaida Luthey-Schulten and their colleagues published a metabolic model of syn3A called iMB155: a list of every reaction they could find evidence for. It has
- 338 reactions: 85 of them are “exchanges” that let a molecule enter or leave the medium around the cell, 86 carry molecules across the membrane, and 167 change one molecule into another inside the cell;
- 304 metabolites (small molecules that take part in reactions): 220 inside the cell and 84 outside;
- 155 genes, whose proteins run the reactions. That is about a third of syn3A’s protein genes.
Inside the cell, the reactions sort into a few areas: 50 for nucleotides, 43 for amino acids, 32 for central metabolism (breaking down sugar), 19 for lipids, 14 for vitamins and other helpers, 8 that assemble the big molecules, and 1 that adds up everything the cell needs to grow. This lesson uses the model’s real data, so you will see this credit wherever it appears: Metabolic model iMB155 from Breuer et al. 2019, eLife 8:e36842, CC BY 4.0.
What syn3A imports and what it makes
A bacterium like E. coli can build almost everything it needs from sugar and a few salts. syn3A can’t. Its genome was cut down to the bare minimum, and most of the genes for building blocks went with it. So it imports almost every part ready-made. In the model, 78 kinds of molecule can come in:
- glucose, its only source of energy, and glycerol, a building block for lipids;
- all 20 amino acids, loose, and most of them also as short chains of four;
- nucleosides and bases, the parts of DNA and RNA letters;
- fatty acids and cholesterol for the membrane;
- vitamins and pieces of helper molecules, such as riboflavin, nicotinate and coenzyme A;
- salts, ammonia, oxygen, carbon dioxide and water.
What does it send out? Mostly lactate and acetate, the leftovers of burning glucose, plus some pyruvate and carbon dioxide.
You may have learned that cells burn sugar all the way to carbon dioxide, using oxygen, in two big stages called the TCA cycle (or Krebs cycle) and the respiratory chain. That is how your own cells get most of their energy. syn3A has neither. It gets all of its energy from the first, short part of sugar breakdown, glycolysis, and throws the half-used leftovers away as lactate and acetate. As the 2022 whole-cell model put it, “all ATP in Syn3A is generated by the central metabolism.” It is wasteful, but it needs only about a dozen proteins. You will build that pathway, gene by gene, later in this lesson.
Enzymes make reactions fast
Many reactions in a cell are “downhill”: the products have less energy than the starting molecules, so the reaction can happen on its own. But downhill doesn’t mean fast. In plain water at room temperature, a peptide bond (the link between two amino acids in a protein) takes about 400 years to break by itself. Pulling a phosphate off a sugar takes about a million years. A cell that divides every two hours can’t wait that long.
A catalyst is a molecule that makes a reaction go faster and comes out unchanged at the end, ready to do it again. An enzyme is a catalyst made of protein. Enzymes often speed reactions up by ten orders of magnitude (10¹⁰ times) or more.
Each enzyme has a pocket, the active site, shaped to hold one particular molecule, its substrate. The enzyme turns the substrate into a product and lets it go. In the 1890s Emil Fischer pictured the pocket as a rigid lock with the substrate as its key. Today we know many enzymes move: they close around the substrate once it has docked, like a hand closing around a ball. This is called induced fit. Inside the closed pocket, the enzyme’s side chains push and pull on the substrate’s atoms, holding it in a strained shape that is close to the halfway point of the reaction.
The figure shows both ideas, a close-up of a real active site from syn3A’s glycolysis (triose-phosphate isomerase, gene tpiA), and the cycle every enzyme goes through: bind, react, release.
Two ways to fit
Inside the active site
- 1A lysine: its positive charge holds the phosphate, which is negative.
- 2A glutamate, a base, pulls an H⁺ off carbon 1.
- 3A histidine, an acid, donates an H⁺ to the oxygen on carbon 2.
The enzyme cycle
The record holder is an enzyme called orotidine 5′-phosphate decarboxylase. It removes a carbon dioxide from a molecule on the way to making the RNA letter U. Without the enzyme, in water at room temperature, half the molecules would react in about 78 million years. The enzyme speeds the reaction up about 10¹⁷ times, a hundred thousand million million. Divide 78 million years by 10¹⁷ and you get about 25 milliseconds. You will do that division yourself in the Math toolkit below.
Math toolkit: energy barriers and rates
Picture a reaction as a ball that has to roll over a hill. The starting molecules sit in a valley on the left, the products in a lower valley on the right. To get from one to the other, the molecule has to pass through a strained, high-energy shape at the top of the hill, the transition state. The height of the hill above the starting valley is the energy barrier, measured in kilojoules per mole (kJ/mol).
What gets molecules over the top? Heat. Molecules are always being bumped by their neighbors, and now and then a lucky bump gives one enough energy. In Lesson 2 you met the Boltzmann factor: the share of molecules that have at least an energy is about
where is the energy of ordinary heat jiggling, per mole. (It is the same as per molecule; Lesson 2 used them interchangeably.) At body temperature, 37 °C, kJ/mol. The reaction’s speed follows that share: twice as many molecules with enough energy means twice as fast.
Now lower the barrier by some amount . The share goes from to , which is times bigger. When is that 10 times bigger? When , because . So
Three examples, from small to huge:
- Lower the barrier by 5.9 kJ/mol: , so 10 times faster.
- Lower it by kJ/mol: , so 1,000 times faster. Each 5.94 multiplies by another 10, so three of them make .
- Lower it by kJ/mol: times faster. That is the record enzyme’s speed-up. (The record was measured at 25 °C, where is a bit smaller, 2.48 kJ/mol, so there the step is 5.71 kJ/mol and the drop is kJ/mol.)
Going the other way: a speed-up of needs a drop of kJ/mol, and a drop of gives a speed-up of .
Now turn a speed-up into time. In Lessons 3 and 4 you met the rate constant , the chance per second that one molecule reacts, and its link to the half-time:
For the record reaction in water, = 78 million years. A year has about seconds, so that is seconds, and
The enzyme multiplies by : per second. The new half-time is seconds, the 25 milliseconds from before.
Try it below. The ball is a molecule rattling in the left valley. Turn on the enzyme to open a lower path through the hill, and load the record preset to see the numbers above in the table.
There is one thing an enzyme can’t do. It lowers the barrier for the way back by exactly the same amount, because both directions pass through the same transition state at the top. So if it makes the forward reaction 1,000 times faster, it makes the reverse reaction 1,000 times faster too. The balance point, where forward and backward run equally fast, doesn’t move. An enzyme can’t make a reaction go further, only get to its end sooner. Turn on Show the way back in the widget: , the ratio that sets the balance point, is the same with and without the enzyme.
Check yourselfAt 37 °C, an enzyme lowers a barrier by 23.8 kJ/mol. How much faster does the reaction go?
, so : about 10,000 times faster.
Check yourselfA reaction has a half-time of 10 hours. An enzyme speeds it up a million times. What is the new half-time?
10 hours is seconds. Divide by : 0.036 seconds, or 36 milliseconds.
Check yourselfAn enzyme speeds up the forward reaction 1,000 times. What does it do to the reverse reaction?
It speeds that up 1,000 times too, because it lowers both barriers by the same amount. Where the reaction ends up doesn’t change.
How fast an enzyme can work
An enzyme has one active site (some have a few) and handles one molecule at a time. Each cycle has three steps: the substrate S binds to the enzyme E, the bound complex ES reacts, and the product P is released:
The double arrow means the substrate can also fall off again before reacting. After the last step the enzyme is free and ready for the next substrate.
So an enzyme has a top speed. Even if a new substrate is waiting the instant the last product leaves, the reaction step itself takes time. The number of molecules one enzyme can finish per second, when it never has to wait, is its turnover number, (“k cat”, short for catalytic). Phosphofructokinase, one of syn3A’s glycolysis enzymes, has a of about 111 per second (a value measured for E. coli’s version of the enzyme).
The whole cell’s top speed for that reaction, , is times the number of enzyme copies. syn3A has about 458 copies of phosphofructokinase, so
How close an enzyme gets to its top speed depends on how much substrate is around. When substrate is scarce, the enzyme spends most of its time waiting for one to bump into it, and more substrate means more bumps and a faster rate. When substrate is plentiful, the enzyme is always busy: a new molecule arrives the moment the last one leaves. Adding even more then does nothing, because the enzyme is already working flat out. This leveling off is called saturation.
In Enzyme Rush, you are the enzyme. Catch a sugar, press Catalyze, and listen: while you are busy, new sugars bounce off with a thud. Each round puts one point on the chart. Watch the points climb and then flatten out.
3D game · Enzyme Rush
Be the enzyme
Rate against [S]
1. Catch and convert
You are an enzyme: a protein that speeds up one chemical reaction. Orange sugars (glucose 6-phosphate, the first stop of glycolysis) drift around you.
When one lands in the groove between your two halves (the active site), press Catalyze, press Space, or tap the enzyme. Your halves close, the sugar is reshaped into fructose 6-phosphate (lime), and it pops out.
You hold one sugar at a time. While you are busy, others bump off: listen for the thud.
Goal: 30 seconds at [S] = 2 mM. Make 10 products for one star, 13 for two, 16 for three.
The game is slowed down so you can play it: a real enzyme like this one (syn3A’s glucose-6-phosphate isomerase, pgi) does this hundreds of times a second.
Math toolkit: saturation curves
Let’s build the formula for the rate from the game, one piece at a time. Each product takes two stretches of time: the wait until a substrate docks, and the work of reacting it.
- The work time is . In Enzyme Rush, = 2 per second, so each reaction takes 0.5 seconds.
- The wait time depends on how much substrate there is. Substrate docks at a rate , where [S] is the substrate concentration and is a binding rate constant, as in Lesson 4. The average wait is one over that. In the game, = 0.4 per second per mM, so at 5 mM substrate molecules dock times a second, and the wait is 0.5 seconds.
At 5 mM in the game, one product takes second: a rate of 1 per second, exactly half the top speed of 2. Try two more:
| [S] | Wait | Work | Time per product | Rate | Share of top speed |
|---|---|---|---|---|---|
| 0.56 mM | 4.5 s | 0.5 s | 5 s | 0.2 per s | 10% |
| 5 mM | 0.5 s | 0.5 s | 1 s | 1 per s | 50% |
| 45 mM | 0.056 s | 0.5 s | 0.556 s | 1.8 per s | 90% |
The wait shrinks as you add substrate, but the work never does. That fixed half second is why the rate can never pass 2 per second.
Now the same thing with letters. The rate of one enzyme is one over the time per product:
Fractions inside fractions are hard to read, so multiply the top and the bottom by . That doesn’t change the value:
Then divide the top and the bottom by :
The group is a concentration. It gets its own name, the Michaelis constant, . In the game it is mM. Multiply by the number of enzymes to get the whole cell’s rate, and you have the Michaelis–Menten equation:
Read it as two parts. is the top speed, and the fraction is the share of the time each enzyme is busy. (A real enzyme can also let go of its substrate without reacting. That changes what is made of, but not the shape of the curve.)
Every Michaelis–Menten curve has the same shape, whatever the enzyme. Measure [S] in units of : if , the share of top speed is .
| [S] | Share of top speed |
|---|---|
| = 10% | |
| = 50% | |
| = 75% | |
| = 90% |
Going from half speed to 90% takes nine times as much substrate. Getting the last 10% takes forever.
You have seen this curve before. In Lesson 4, the fraction of a protein bound to its partner was : half bound when the partner’s concentration equals . The Michaelis–Menten fraction is the same shape, with in place of . That makes sense: an enzyme is busy exactly when it has a substrate bound.
Now write it in Python. The function takes the substrate concentration, and , and returns the rate. One check uses syn3A’s real glucose-6-phosphate isomerase.
Check yourselfAn enzyme has Km = 0.2 mM and Vmax = 100 per second. How fast does it go at 0.2 mM? At 1.8 mM?
At 0.2 mM, [S] = , so half speed: 50 per second. At 1.8 mM, [S] = , so 90%: 90 per second.
Check yourselfHow much substrate does an enzyme need to run at 75% of its top speed?
. In general, for a share you need , and .
Check yourselfWhen [S] is much smaller than Km, what happens to the rate if you double [S]?
It almost doubles. With [S] tiny, , so , a straight line through zero. The enzyme is mostly waiting, and twice the substrate means twice the bumps.
Real enzymes, real numbers
What do real enzymes look like? Arren Bar-Even, Ron Milo and colleagues collected measurements of several thousand enzymes in 2011. The typical (median) enzyme has a of about 10 per second and a of about 0.1 mM. Enzymes of central metabolism, such as those of glycolysis, are faster, about 30 per second. The champions are carbonic anhydrase and superoxide dismutase, at a million to ten million reactions per second; restriction enzymes, which cut DNA, manage only one every 10 to 100 seconds.
Lesson 4 showed that two molecules can’t meet faster than diffusion brings them together: about per second per molar. The ratio says how well an enzyme does when its substrate is scarce, and it has the same units. For the typical enzyme it is per second per molar, about 10,000 times below that limit. A few enzymes, triose-phosphate isomerase among them, come close to the limit: almost every substrate that touches them reacts.
Here are five of syn3A’s own glycolysis enzymes. The values are the ones syn3A’s 2022 whole-cell model uses, and the values are the ones Breuer and colleagues used. Both were measured in related enzymes, used in syn3A’s model: nobody has measured them in syn3A itself. The copy numbers come from counting syn3A’s proteins.
| Enzyme (gene) | Substrate | (mM) | (per s) | Copies per cell | Top speed, × copies (per s) |
|---|---|---|---|---|---|
| Glucose-6-phosphate isomerase (pgi) | G6P | 0.28 | 929 | 266 | 247,000 |
| Phosphofructokinase (pfkA) | F6P | 0.21 | 111 | 458 | 50,800 |
| Pyruvate kinase (pyk) | PEP | 0.075 | 3,204 | 551 | 1,765,000 |
| Lactate dehydrogenase (ldh) | pyruvate | 0.96 | 643 | 1,100 | 707,000 |
| Aldolase (fbaA) | FBP | 0.005 | 2.95 | 227 | 670 |
In Km Detective you work out and the way a biochemist does: from measurements. Each case gives you dots, one per experiment, and you fit a curve over them. The data are simulated, with noise, from the real values in the table.
Game · Km Detective
Case 1. Read the curve
A made-up enzyme
Substrate: substrate · Rate: µM per second
Lay the curve over the dots: set the top speed (Vmax), then Km.
Made-up numbers, with no noise: the dots sit exactly on the true curve.
Where the numbers come from
A made-up enzyme for practice, so the numbers are round.
How close your curve is to the best least-squares fit (the curve with the smallest total squared miss).
Simulated data from published constants. syn3A enzyme values: Metabolic model iMB155 from Breuer et al. 2019, eLife 8:e36842, CC BY 4.0. Km values from Thornburg et al. 2022 (Cell 185:345). Invertase: Michaelis & Menten 1913, reanalyzed by Johnson & Goody 2011.
Now compare an enzyme’s top speed with the work the cell needs from it. syn3A takes up about 15,000 glucose molecules per second, and every one passes through phosphofructokinase. Its 458 copies can do about 50,800 per second, so
Phosphofructokinase works at about 30% of its top speed. That is typical: in Breuer’s model, most enzymes could go 10 to 1,000 times faster than the flow the cell needs. The spare capacity lets the cell speed up when it has to.
Now aldolase. Its borrowed of 2.95 per second, times 227 copies, gives a top speed of only 670 per second. But aldolase also has to handle all 15,000 sugars a second. That is about 20 times more than it could do. The cell is alive, so the borrowed number must be wrong for syn3A: perhaps measured in a different organism or under different conditions. Checking capacity against flow is a quick way to catch such errors.
Two short functions: an enzyme’s top speed from and its copies, and how busy it is for a given flow. The success message prints all five enzymes against the flow syn3A’s model needs.
Inhibitors: slowing enzymes down
An inhibitor is a molecule that slows an enzyme down. Cells use them to control their pathways, and many drugs are inhibitors. They come in two main kinds, and you can tell them apart by what they do to the saturation curve.
A competitive inhibitor looks like the substrate. It fits into the active site but can’t react, so while it sits there, the enzyme is blocked. Substrate and inhibitor compete for the same spot. Add enough substrate and it wins most of the time, so the top speed doesn’t change. But the enzyme needs more substrate to reach half speed: the apparent goes up.
[I] is the inhibitor’s concentration, and is how tightly it binds: the inhibitor concentration that occupies the enzyme half the time, like Lesson 4’s . At , the bracket is 2, so doubles.
A noncompetitive inhibitor binds somewhere else on the enzyme and locks it, whether or not a substrate is in the pocket. More substrate doesn’t help, because the substrate isn’t what’s being pushed out. A locked enzyme is simply out of action. So goes down, and stays the same:
At , half the enzymes are locked and the top speed halves.
Leonor Michaelis and Maud Menten wrote down the saturation curve in 1913, studying invertase, an enzyme that splits table sugar (sucrose) into glucose and fructose. They followed the reaction by shining polarized light through the sugar solution, because sucrose and its products twist the light by different amounts. Re-analyzed in 2011 by Kenneth Johnson and Roger Goody, their data give = 16.7 mM and = 0.76 mM per minute.
They also saw that the enzyme’s own products slow it down. Fructose is a competitive inhibitor with = 58.8 mM, and glucose one with = 91 mM. With 100 mM fructose in the mix:
So with 16.7 mM sucrose, the enzyme drops from half speed (0.38 mM per minute) to mM per minute.
Cells use inhibition to control their pathways. Often the final product of a pathway inhibits one of its first enzymes, so the pathway slows down by itself when enough product has piled up. This is called feedback inhibition, and Lesson 6 builds whole circuits out of feedback.
Write both kinds of inhibited rate. The checks use invertase’s real constants.
This one is a challenge: given a list of measured rates, find the and that fit them best, as you did by hand in Km Detective. The data are simulated from real enzymes, with noise added. The starter walks you through a search.
Check yourselfA competitive inhibitor is present at a concentration equal to its Ki. What happens to Km and Vmax?
doubles, because . stays the same: with enough substrate, the enzyme still reaches its top speed.
Check yourselfAdding lots of substrate doesn't bring back an inhibited enzyme's top speed. Which kind of inhibitor is it?
Noncompetitive. It locks the enzyme away from the active site, so substrate can’t push it out.
Glycolysis: sugar to energy
A pathway is a chain of reactions where the product of one enzyme is the substrate of the next. Glycolysis (“sugar splitting”) is the pathway that breaks one glucose, a sugar with six carbon atoms, into two molecules of pyruvate, with three carbons each. It has ten steps, in three acts:
- Invest. The cell spends ATP to stick phosphate groups onto the sugar. That makes it more reactive, and the charged phosphates keep it from leaking out of the cell.
- Split. The six-carbon sugar is cut into two three-carbon halves.
- Pay off. Each half is rearranged, step by step, in a way that releases energy, and that energy is stored as ATP.
One of the pay-off steps also strips electrons from the sugar. They are picked up by a carrier molecule, NAD⁺ (nicotinamide adenine dinucleotide), which becomes NADH when loaded. Think of NAD⁺ as an empty cart and NADH as a full one. Keep that cart in mind: it will turn out to be a problem.
Count the textbook version per glucose. The invest steps spend 2 ATP. The pay-off steps make 2 ATP per half, and there are two halves, so 4 ATP. Net:
plus 2 NADH and 2 pyruvate.
Here is the whole pathway as syn3A runs it, with its real gene names and the length of each protein. Orange badges mark six-carbon sugars, lime ones the three-carbon halves, and violet the two-carbon pieces. Follow the arrows down from glucose to pyruvate, then out to lactate or acetate at the bottom.
Glycolysis in syn3A
The ten steps in syn3A
Here are the steps with the genes that do them in syn3A, from its GenBank record. The locus tags (JCVISYN3A_ and four digits) are the genes’ IDs; you met them in Lesson 3.
| Step | What happens | Enzyme | Gene | Locus tag |
|---|---|---|---|---|
| In | glucose comes in and gets a phosphate: glucose 6-phosphate (G6P) | the PTS (four proteins) | ptsI, ptsH, crr, ptsG | 0233, 0694, 0234, 0779 |
| 1 | G6P is rearranged into fructose 6-phosphate (F6P) | glucose-6-phosphate isomerase | pgi | 0445 |
| 2 | a second phosphate, from ATP: fructose 1,6-bisphosphate (FBP) | phosphofructokinase | pfkA | 0220 |
| 3 | FBP is cut into two three-carbon halves, DHAP and G3P | aldolase | fbaA | 0131 |
| 4 | DHAP is turned into a second G3P | triose-phosphate isomerase | tpiA | 0727 |
| 5 | G3P gets a phosphate and gives two electrons to NAD⁺: 1,3-bisphosphoglycerate | glyceraldehyde-3-phosphate dehydrogenase (GAPDH) | gapDH | 0607 |
| 6 | one phosphate moves to ADP, making ATP: 3-phosphoglycerate (3PG) | phosphoglycerate kinase | pgk | 0606 |
| 7 | the other phosphate moves along the molecule: 2PG | phosphoglycerate mutase | pgm | 0729 |
| 8 | a water comes off: phosphoenolpyruvate (PEP) | enolase | eno | 0213 |
| 9 | the last phosphate moves to ADP, making ATP: pyruvate | pyruvate kinase | pyk | 0221 |
Everything from step 5 on happens twice per glucose, once for each half.
Textbooks count ten steps, starting with hexokinase, an enzyme that puts a phosphate from ATP onto glucose. syn3A has no hexokinase gene: it was removed when the genome was cut down. So the table has the PTS, then nine enzymes.
Instead, glucose enters through the PTS (phosphotransferase system), four proteins that work like a bucket chain. ptsI takes a phosphate from PEP, the molecule that step 9 turns into pyruvate. It hands the phosphate to ptsH, which hands it to crr, which hands it to ptsG. ptsG sits in the membrane, and it attaches the phosphate to glucose as it carries the sugar into the cell. So glucose arrives already as G6P, and syn3A has paid for it with one of its own PEPs, from the end of its own assembly line.
Does syn3A still make a profit? Count again, per glucose:
- Phosphofructokinase spends 1 ATP. There is no hexokinase to spend another.
- Phosphoglycerate kinase makes 1 ATP per half: 2 ATP.
- Of the two PEPs, one paid for the glucose. Only the other reaches pyruvate kinase: 1 ATP.
The same profit as the textbook version, paid in a different way. And both PEPs still end up as pyruvate: the one that paid the PTS becomes pyruvate when it gives up its phosphate.
In Glycolysis Line you build the pathway as a factory line. Put each enzyme in its slot, follow the carbons through the split, watch the ATP wallet, then switch to syn3A’s genes and its PTS.
3D game · Glycolysis Line
Run the sugar factory
The ten stations · tap one for details
Genes and locus tags from syn3A’s GenBank record; reactions from the metabolic model iMB155 (Breuer et al. 2019, eLife 8:e36842, CC BY 4.0). The molecules are simplified: hydrogens, water and H⁺ are left out, and the line runs far slower than a cell, which makes about 15,000 glucose into pyruvate every second.
Check yourselfHow many ATP does syn3A make from 5 glucose sent all the way to lactate?
2 per glucose, so 10 ATP. It also fills 10 NAD⁺ carts with electrons, and, as the next section explains, the lactate step empties all 10 again.
Check yourselfSix carbons go in with each glucose. How many carbons come out as pyruvate?
Six: two pyruvates of three carbons each. Glycolysis rearranges the carbons but loses none.
Paying back NADH: lactate and acetate
Step 5, GAPDH, needs an empty NAD⁺ cart for every G3P. syn3A’s whole-cell model starts with about 2.18 mM NAD⁺, which in a cell as small as syn3A is about 44,000 molecules. (You will see how to turn mM into molecules in the next Math toolkit.) Glycolysis runs at about 15,000 glucose per second, two G3P each, so GAPDH fills about 30,000 carts a second. If nothing emptied them:
In about a second and a half, every cart would be full and glycolysis would stop.
The fix is lactate dehydrogenase (gene ldh, JCVISYN3A_0475). It hands the electrons back to pyruvate:
Each pyruvate empties exactly one cart, and each glucose filled two carts and made two pyruvates, so the books balance. The lactate leaves the cell. No ATP is made in this step; it exists only to return the carts. Your muscles do the same thing when they run short of oxygen.
syn3A has a second route, which pays better. Pyruvate can be cut into a two-carbon acetyl group plus carbon dioxide (genes pdhC and lpdA, 0227 and 0228), passed to phosphate (pta, 0229), and finally to ADP by acetate kinase (ackA, 0230), which makes one extra ATP per pyruvate. The acetate leaves the cell. But the first step of this route fills another NAD⁺ cart instead of emptying one.
Those carts are emptied by an NADH oxidase, which hands the electrons to oxygen and makes water. Oddly, no gene for it is known in syn3A: the one it had was removed when the genome was cut down. Both syn3A models need the reaction, so they assume some other protein does the job. And acetate can only leave the cell so fast. The model borrows a limit from a related bacterium: at most about 6.9 acetate for every 7.4 glucose. So syn3A sends some pyruvate each way. With all acetate, each glucose could make up to 4 ATP; with the limit, the model’s best is about 2.9.
ATP: the energy currency
All that ATP: what is it, and why does every cell use it? ATP (adenosine triphosphate) is a nucleotide, like the letters of RNA. It has three parts: a base called adenine, a sugar called ribose, and a tail of three phosphate groups. The phosphates are all negatively charged and repel each other. When water breaks the bond to the last one, ATP becomes ADP (adenosine diphosphate) plus a loose phosphate, and energy is released.
How much? Under the standard conditions chemists use for tables, about 30 kJ/mol. But a cell keeps far more ATP than ADP, and that pushes the reaction harder. In E. coli growing on glucose it releases about 47 kJ/mol. As in Lesson 2, we use about 50 kJ/mol, or about 20 kT per ATP: . One ATP carries
The figure shows the molecule, with the bond that breaks; the cycle of ATP being spent and remade; and how small syn3A’s supply is compared with how fast it flows.
The molecule
The cycle
A small pool, a big flow
Why is it so useful? Because energies add up. Suppose a cell needs a reaction that is uphill: say it needs 20 kJ/mol put in, so on its own it barely happens. If an enzyme ties it to breaking one ATP, the two together release about kJ/mol, and the combined reaction is downhill. This is called coupling. Phosphofructokinase does it: it takes a phosphate from ATP and puts it on the sugar in one move. So do ribosomes, pumps and almost every builder in the cell. ATP is the currency; glycolysis earns it, and everything else spends it.
Math toolkit: pools and flows
A cell’s ATP is a pool: an amount that is constantly drained and refilled. Think of a bathtub with the tap on and the plug out. How long does one molecule stay in the tub, on average? Divide the amount by the flow:
A tub holding 100 liters, with 10 liters a minute flowing through, replaces its water every 10 minutes. It is Lesson 3’s steady state again, read the other way: there, the number of copies was the production rate times the average lifetime.
To use it, we need pools as numbers of molecules. Concentrations come in mM, so here is the conversion for syn3A, one step at a time.
- 1 mM means moles per liter.
- syn3A is a sphere 200 nm in radius, with a volume of 0.0335 femtoliters (fL), and 1 fL is liters. So the volume is liters.
- Moles in the cell: .
- Molecules: multiply by Avogadro’s number from Lesson 1: .
Now the ATP pool. The whole-cell model starts syn3A with 3.65 mM ATP, a value estimated from other bacteria (nobody has measured it in syn3A). That is 74,000 ATP molecules. The same model makes about 35,000 ATP per second, and spends about as many. So
The cell’s entire supply of ATP is used up and remade about every 2 seconds. Other pools are even faster. PEP, at 0.041 mM, is about 830 molecules, made at about 30,000 per second: replaced every 30 milliseconds or so.
Metabolic models like iMB155 don’t count molecules per second. They measure a flux, the speed of a reaction, in millimoles per gram of dry weight per hour (mmol per gram dry weight per hour), which lets the same numbers work for a test tube of cells of any size. To turn that into molecules per second in one syn3A cell:
- 1 mmol is moles.
- One syn3A cell has about 10.2 femtograms of dry mass, grams (a 400 nm sphere, mostly water, the rest protein, RNA, DNA and lipid).
- So per cell, per hour: moles.
- Molecules per hour: .
- Per second: divide by 3,600 seconds in an hour: .
Check yourselfA pool of 500 molecules is made and used at 1,000 per second. What is its turnover time?
seconds.
Check yourselfThe model says acetate leaves at 6.9 mmol per gram dry weight per hour. How many acetate molecules is that per second, in one syn3A cell?
per second.
Check yourselfsyn3A's model starts with about 0.22 mM ADP. About how many molecules is that?
ADP molecules, about 17 times fewer than ATP.
Where the ATP goes
What does syn3A spend 35,000 ATP a second on? The biggest item is making protein. Each amino acid costs about 4 ATP (Lesson 3), and about 500 ribosomes add about 5 amino acids a second each:
Next is importing food: the whole-cell model assumes 1 ATP per molecule brought in, about 5,000 a second. Copying and reading genes takes about 2,900 more. Upkeep takes about 1,000: the membrane leaks protons, and the ATP synthase runs backwards to pump them out again, using at least 0.575 mmol per gram dry weight per hour of ATP, or a second. Everything else the cell builds, such as lipids and nucleotides, uses the rest.
The published model splits the bill its own way, and one surprise is how much it can’t explain. Of all the ATP it makes, 31% goes to a lump of growth costs that the modelers could not put a name to, 30% to making protein, and 26% to phosphofructokinase, glycolysis’s own investment step. Nucleotides, transport, RNA and proton pumping take 2–3% each.
The ATP Economy runs syn3A’s budget live. The gold tank is the ATP pool. Glycolysis pours coins in; ribosomes, transporters, polymerases, the proton pump and a building crane take them out. Move the sliders and see how fast the tank responds.
Simulation · The ATP Economy
Earn it, spend it, every second
Challenge: Set the glucose uptake, press Play, and hold ATP between 3 and 4 mM for 20 seconds. Use as little sugar as you can.
- Translation37%
- Imports19%
- Gene work11%
- Upkeep4%
- Building30%
A budget model: real cells regulate every one of these flows. The numbers are per second, for one cell, in real time.
The arithmetic, right now
- Income with plenty of ATP
- 2 × 6,000 glucose = 12,000 a second
- Spending with plenty of ATP
- 10,000 + 5,000 + 2,900 + 1,000 + 8,000 = 26,900 a second
- Pool in molecules
- 3.67 mM × 20,170 per mM = 74,000
- Turnover time
- pool ÷ spending = 74,000 ÷ 0 = 0.0 s
At full speed glycolysis could pay 12,000 a second, but it slows when ATP runs low (it must invest ATP first) or when ADP runs short (ATP is made from ADP). Spenders slow a little as ATP gets scarce. So the pool settles where income equals spending.
Where the numbers come from
- Pool: 1 mM in syn3A = 10⁻³ mol/L × 3.35 × 10⁻¹⁷ L × 6.022 × 10²³ = 20,170 molecules. The whole-cell model starts with 3.65 mM ATP, about 74,000 molecules (Thornburg et al. 2022, Cell 185:345; estimated from E. coli and M. pneumoniae, not measured in syn3A). ATP + ADP is held at 80,000 (about 4 mM).
- Glucose: about 15,000 taken up a second; glycolysis pays 2 ATP each (Thornburg et al. 2022).
- Acetate: at most 6.9 mmol per gram dry weight per hour in syn3A’s model (Breuer et al. 2019, borrowed from M. pneumoniae) × 1,706 ≈ 11,800 a second.
- Translation: 500 ribosomes × 5 amino acids a second × 4 ATP = 10,000 a second (Thornburg et al. 2019; 503 ribosomes counted in a syn3A tomogram).
- Imports: about 5,000 a second, 1 ATP per molecule brought in (Thornburg et al. 2022). Gene work: 18 million ATP per cell cycle ÷ 6,300 s ≈ 2,900 a second (Thornburg et al. 2019, derived).
- Upkeep: at least 0.575 mmol per gram dry weight per hour for proton pumping by the ATP synthase (Breuer et al. 2019) × 1,706 ≈ 1,000 a second. Building: the rest, 8,000.
- Assumed (chosen so the defaults match the model’s pool and flows): glycolysis runs at N² ÷ (6,000² + N²) of full speed and needs ADP (× ADP ÷ (1,000 + ADP)); each spender runs at N ÷ (4,000 + N) of its set rate (Km about 0.2 mM, between the model’s 0.12 for PFK and 0.37 for PGK). Steps of 5 ms.
- FBA view: Metabolic model iMB155 from Breuer et al. 2019, eLife 8:e36842, CC BY 4.0.
How much power is that? If glycolysis makes about 30,000 ATP a second (15,000 glucose to lactate, 2 each), the cell runs on watts. A 10-watt light bulb uses as much power as about four million billion syn3A cells.
The stoichiometric matrix
Now step back and look at the whole factory at once. Glycolysis alone has a dozen reactions, and syn3A’s model has 338. To reason about all of them together, we write them in one table.
Start with one reaction, phosphofructokinase (PFK):
Write it as a column of numbers, one per molecule: how many it uses (negative) and how many it makes (positive). PFK uses one F6P and one ATP, and makes one FBP and one ADP. So its column has −1 for F6P, −1 for ATP, +1 for FBP, +1 for ADP, and 0 for every other molecule. These numbers are the reaction’s stoichiometry (“stoy-key-OM-etry”, the counting of molecules in a reaction).
Now put every reaction’s column side by side. You get a table with one row per metabolite and one column per reaction: the stoichiometric matrix, written . Each entry says what one reaction does to one molecule. Read down a column to see a reaction. Read across a row to see every reaction that makes or uses one molecule.
This lesson uses a core of syn3A’s model: 19 reactions for the PTS, glycolysis, the lactate and acetate routes, the oxidase, and the exits. They are iMB155’s own reactions, with a few pairs of steps joined into one, plus one added reaction, ATPM, that stands for all the cell’s ATP spending. They involve 19 balanced metabolites. A few small molecules, H⁺, water, phosphate, carbon dioxide, oxygen and the glucose outside, are left out of the table, as if the medium supplied or removed them freely.
Here is the matrix. Tap a reaction to read its column, or tap a molecule’s row to see every reaction that touches it. Start with the small toy network, then switch to syn3A’s core.
Math toolkit: vectors and matrices
This toolkit starts from zero. Two new words: vector and matrix.
A vector is a list of numbers in a fixed order. For example, the speeds of two reactions, PFK at 7.4 and aldolase at 7.4, make the vector . A list of every reaction’s speed is called the flux vector, written . The order matters: the first number always belongs to the first reaction, and so on. In Python it is just a list.
The one operation you need is the dot product: take two lists of the same length, multiply the numbers in matching positions, and add the results. For and :
With three numbers: . That’s all it is: pair up, multiply, add. In Python:
sum(x * y for x, y in zip([2, 3], [4, 5])) # 23
A matrix is a table of numbers, with rows and columns. Its size is written rows × columns: a 2 × 3 matrix has 2 rows and 3 columns, so 6 entries. Each row of a matrix is itself a list of numbers, a vector.
Matrix times vector means: do a dot product of each row with the vector, one row at a time. Each row gives one number, so the answer is a list with one number per row. Here is a 2 × 2 example:
The first row, , dotted with gives 0. The second row, , gives 3. The vector is written standing up, as a column, but it is the same list.
What does it mean for a metabolic network? Say this matrix is for two reactions, R1 that makes A from food, and R2 that turns A into B. Row A is : R1 makes A, R2 uses it. Row B is : only R2 touches B, and it makes it. With both reactions running at 3 per second, A is made at 3 and used at 3, so it doesn’t change: 0. B is made at 3 and never used, so it piles up: +3 per second. Each entry of is how fast one molecule piles up (positive) or runs out (negative).
Now a 3 × 3. Three molecules in a loop: R1 turns A into B, R2 turns B into C, and R3 turns C back into A.
| R1 (A → B) | R2 (B → C) | R3 (C → A) | |
|---|---|---|---|
| A | −1 | 0 | +1 |
| B | +1 | −1 | 0 |
| C | 0 | +1 | −1 |
With every reaction at 2, :
- Row A:
- Row B:
- Row C:
Every row is 0: nothing changes. Now speed R1 up to 3, so . Row A becomes , and row B becomes , while C stays 0. A runs down by 1 per second and B piles up by 1 per second.
Now one real row from syn3A’s core. FBP is made by PFK and used by aldolase (the reaction FBA in the model), so its row has +1 under PFK, −1 under FBA, and 0 everywhere else. In the model’s best plan, both run at 7.4 mmol per gram dry weight per hour:
FBP stays level. The whole core matrix has entries, but only 53 of them are not zero, because each reaction touches only a few molecules. The full model’s matrix is , about 100,000 entries, almost all zero.
Build the matrix in Python. Given a list of reactions, each with its stoichiometry as a dict, return the metabolites, the reaction ids, and the rows of . The checks start with a toy and end with syn3A’s core.
Then multiply it by a flux vector: one dot product per row. With the model’s best fluxes, all 19 rows of syn3A’s core come out zero.
Check yourselfWrite the column for lactate dehydrogenase: pyruvate + NADH → lactate + NAD⁺.
Pyruvate −1, NADH −1, lactate +1, NAD⁺ +1, and 0 for every other molecule.
Check yourselfIn the core's best plan, PGK runs at 14.8, pyruvate kinase at 7.4, acetate kinase at 6.9, PFK at 7.4 and ATPM at 21.7. The first three make ATP and the last two use it. Does ATP balance?
. Yes: ATP is made exactly as fast as it is used.
Check yourselfA matrix has 4 rows and 5 columns. How many entries does it have, and how long is the answer when you multiply it by a vector?
entries. The vector must have 5 numbers (one per column), and the answer has 4 (one per row).
Steady state: every tank stays level
Picture each metabolite as a tank of water, and each reaction as a pipe that drains some tanks and fills others. If any tank keeps rising, that molecule piles up until it poisons the cell; if any keeps falling, it runs out and the pathway stops. A healthy, steadily growing cell keeps every tank roughly level. That is a steady state, and in the matrix language it is one short equation:
It says: every row of , dotted with the flux vector, comes out zero. Every molecule is made exactly as fast as it is used.
Usually there are many flux vectors that do this. Pyruvate, for example, can go to lactate or to acetate, and any split balances its tank, as long as the two together take everything glycolysis makes. The network has more reactions than balance conditions, so the conditions leave choices open.
Some choices are ruled out by bounds: the lowest and highest speed each reaction is allowed. A one-way reaction can’t run backwards, so its lowest speed is 0. Glucose can come in at most 7.4 mmol per gram dry weight per hour, and acetate can leave at most 6.9. Both limits are borrowed from Mycoplasma pneumoniae, a relative, because nobody has measured them in syn3A.
Flux Plumber turns this into plumbing. Each tank is a molecule and each pipe a reaction; set the valves until every tank is level. The early levels are small made-up networks; the later ones are syn3A’s real core.
Game · Flux Plumber
Keep every tank level
Goal: Make the tank stay level: out = in.
Tap a valve (the little wheels) or a chip above to set it.
Ledger: one row per tank, made − used
A made-up network for practice. Flows are in molecules per second; the tank levels show what would happen if the plan ran for a while.
Flux balance analysis
Steady state leaves many plans open, and bounds narrow them down. To pick one, add a goal: make as much of something as possible. For a growing cell, the usual goal is growth itself. In our core, we ask for as much ATP as possible, through the ATPM reaction. Then hand the whole thing to an optimizer. That is flux balance analysis (FBA):
- Steady state: .
- Bounds: every reaction’s speed between its lowest and highest allowed value.
- Goal: make one reaction, or a mix of them, as fast as possible.
FBA needs no enzyme speeds and no concentrations, only the reactions and their limits. That is why it can be run on a whole cell’s metabolism.
On syn3A’s core, FBA’s answer is an ATP flux of 21.7 mmol per gram dry weight per hour, about ATP per second in one cell. On the full model with growth as the goal, it predicts that syn3A doubles every 2.02 hours. Measured syn3A doubles in about 2 hours.
Before the math, look at the picture. Every point on this chart is a plan: how much glucose to take in, and how much acetate to send out. The shaded region holds every plan the limits allow. Press Sweep the goal line and watch the line of equal ATP slide until it touches the last allowed point.
Math toolkit: linear programming
This toolkit also starts from zero. A linear program is a problem of the form “choose some numbers to make a goal as big as possible, without breaking any limits”, where the goal and the limits are all linear: each number counts with a fixed weight, added up. No squares, no products of two choices. So is linear, but or is not. Doubling a choice doubles its effect.
syn3A’s core boils down to two choices. (The other reactions follow from them, through the steady-state rows.) Call them
- : how fast glucose comes in;
- : how fast acetate goes out.
Everything is in mmol per gram dry weight per hour.
The goal. Each glucose sent to lactate makes 2 ATP. Each acetate makes 1 more on top. So
For example, and give .
The limits. Each glucose makes 2 pyruvates. Every pyruvate that doesn’t leave as acetate becomes lactate, so lactate is , and lactate can’t be negative. Together with the two borrowed limits:
- : glucose can’t come in faster than 7.4.
- : acetate can’t leave faster than 6.9.
- : you can’t make more acetate than you have pyruvate.
- and : no running backwards.
Now draw it. Put along the bottom and up the side. Each limit is a straight line, with the allowed side on one side of it:
- is a vertical line; allowed plans are to its left.
- is a horizontal line; allowed plans are below it.
- is a sloping line through , , and so on; allowed plans are below it, on the side with lots of glucose.
The plans that obey every limit form a region with straight sides, a polygon, called the feasible region. Its corners are where two limits meet. Here there are four: ; ; ; and the point where meets , which is , so .
Level lines. Now draw the goal. All the plans that give the same ATP lie on one straight line. For ATP = 10, passes through and , because and . For ATP = 14, it passes through and . Bigger ATP means the same slope, shifted up and to the right. Finding the best plan means sliding that line as far up and right as it can go while it still touches the feasible region.
Check yourselfIs the plan g = 3, a = 7 allowed?
No, for two reasons: is above the acetate limit of 6.9, and it needs more pyruvate than .
Check yourselfHow much ATP does the plan g = 6, a = 4 make, and how much lactate?
ATP: . Lactate: .
Why the answer sits on a corner
Here is the feasible region’s four corners, with the ATP each gives:
| Corner | ATP |
|---|---|
| 0 | |
| 14.8 | |
| 13.8 | |
| 21.7 |
The best is , with 21.7: exactly what FBA found on the full 19-reaction core.
Why must the best plan be a corner? Take any plan inside the region. Moving it a little in the direction of more glucose raises ATP, and nothing stops you until you hit a limit, an edge. Now walk along that edge. The goal is a straight line, so as you walk, ATP changes at a steady rate: always up, always down, or not at all. If it goes up, keep walking until the next limit, which is a corner. So the best plan always sits on a corner, where two limits meet. A solver doesn’t need to try every plan, only the corners, and clever ones skip most of those too.
Read the winning corner in words: take in all the glucose the cell can get (7.4), send out as much acetate as can leave (6.9), and turn the rest of the pyruvate into lactate (). ATP: , or per glucose. The limits that the answer presses against, here the glucose and acetate limits, are called binding constraints. They tell you what would help: raise the acetate limit to 10 and ATP rises to .
Sometimes there is a tie. If the goal’s level lines are parallel to one edge of the region, every point along that edge is equally good: an alternative optimum. The full syn3A model has one. It lets pyruvate itself leak out of the cell, and if pyruvate leaks instead of becoming lactate, the extra NADH can be emptied by the oxidase. That gives exactly the same ATP. The solver has to pick one, and it happens to pick the leak, so the full model’s FBA shows no lactate at all. Whenever an FBA answer looks odd, check for a tie.
Now run FBA yourself. The starter builds the matrix; you set up the goal and the bounds, call the solver, and return the answer. The checks expect 21.7 for syn3A’s core, and 14.8 with the acetate exit closed.
Check yourselfIf acetate couldn't leave at all (acetate limit 0), what would the best plan be?
The region shrinks to the line from to . The best corner is : all lactate, ATP.
Check yourselfWhy is the corner (3.45, 6.9) where it is?
It is where the acetate limit, , meets the pyruvate limit, . Solving gives .
Knockouts: which genes can syn3A lose
FBA can also ask: what if a gene were missing? Each reaction in the model has a gene rule saying which genes it needs. “A and B” means it needs both, like the PTS, which needs all four of ptsI, ptsH, crr and ptsG. “A or B” means either will do, for two enzymes that can stand in for each other. A reaction with no gene (such as the oxidase) is assumed to always work.
To knock out a gene in the computer, find every reaction whose rule fails without it, set that reaction’s speed to zero, and solve again. If the best goal drops to zero (or close to it), the gene is essential: the cell can’t live without it. This kind of test, done in the computer rather than in a dish, is called in silico.
On syn3A’s core:
- Knock out any of the 13 genes of the PTS and glycolysis, and ATP drops to 0. There is no other way for sugar to get through.
- Knock out pdhC, lpdA, pta or ackA, and the acetate route closes. ATP drops to 14.8 (32% less): all lactate.
- Knock out ldh, and pyruvate has nowhere to go but acetate. Acetate can leave at only 6.9, so glucose has to drop to 3.45, and ATP falls to 13.8 (36% less).
On the full model with growth as the goal, 123 of its 155 genes are essential: 79%. The acetate genes aren’t essential, but losing one slows growth from a doubling time of 2.02 hours to 3.22 hours.
How do you check that in real cells? The team at the J. Craig Venter Institute used transposon mutagenesis. A transposon is a piece of DNA that can insert itself at random places in a genome; wherever it lands inside a gene, it breaks that gene. Make a large population of cells with insertions in random places, let them grow, and read where the insertions are. Genes that never carry an insertion in growing cells are essential. Genes whose broken cells grow, but poorly, are quasi-essential. The rest are non-essential.
For 153 of the model’s genes, here is how the model and the lab compare, counting quasi-essential genes as essential:
| Lab: essential or quasi | Lab: non-essential | |
|---|---|---|
| Model: essential | 123 | 0 |
| Model: non-essential | 18 | 12 |
The model is right for genes: an accuracy of . Of the 141 genes the lab says the cell needs, it finds 123 (87%, its sensitivity). Of the 12 the lab says it can lose, it gets all 12 (100%, its specificity). Every gene the model calls essential is at least quasi-essential in the lab.
Accuracy can flatter a model when one answer is much more common than the other. A model that called every gene essential would score here and know nothing. So modelers also use the Matthews correlation coefficient (MCC), a score from −1 to 1 that is 1 for a perfect prediction, 0 for no better than guessing, and −1 for always wrong. syn3A’s model scores about 0.59: clearly better than guessing, clearly not perfect.
The misses are the interesting part. The lab finds four genes essential that the model thinks the cell can lose, and all four sit right next to glycolysis:
- ldh (0475), lactate dehydrogenase. Without it, the model lets pyruvate leak out of the cell and empties the extra NADH with the oxidase, the one with no known gene. Real cells can’t do that, it seems.
- pta (0229) and ackA (0230), the acetate route. The model says the cell would only grow slower, 3.22 hours instead of 2.02. The real cells die.
- gapdh (0451), a second GAPDH that makes NADPH instead of NADH. Breuer and colleagues suggest the cell needs NADPH in ways the model doesn’t capture.
Each miss points to something we don’t yet understand about syn3A.
This last exercise is a challenge. Write the gene-rule check, the knockout, and the scan over every gene, then find syn3A’s essential core genes. The success message compares your list with the lab’s.
Check yourselfA reaction's rule is “A and B”. Can it run if B is knocked out? What if the rule is “A or B”?
With “A and B”, no: it needs both. With “A or B”, yes: A can do the job alone.
Check yourselfA model calls 50 genes essential, and the lab agrees for 45 of them. It calls 50 non-essential, and the lab agrees for 40. What is its accuracy?
.
Code milestone: flux balance analysis
Two new modules join the engine in this lesson:
virtualcell/enzymes.pyholdsmichaelis_menten,max_rate,busy_fraction,competitive_rate,noncompetitive_rateandfit_michaelis_menten.virtualcell/metabolism.pyholdsstoichiometric_matrix,mass_balance,is_steady_state,flux_balance,reaction_allowed,knockoutandessential_genes.
One is written for you. virtualcell/metabolic_model.py has the real core of syn3A’s metabolism (19 reactions from iMB155, Breuer et al. 2019, CC BY 4.0), the five enzymes’ constants, a linear-program solver in plain Python, and a loader for the whole published model. constants.py has this lesson’s numbers, including the 1,706 molecules per second per unit of flux.
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 run syn3A’s metabolism:
from virtualcell.enzymes import michaelis_menten
from virtualcell.metabolic_model import core_reactions
from virtualcell.metabolism import flux_balance, essential_genes
print(michaelis_menten(0.28, 929, 0.28)) # 464.5, half of PGI's top speed
core = core_reactions()
best = flux_balance(core, "ATPM")
print(best["objective"]) # 21.7
print(best["fluxes"]["LACout"]) # 7.9
closed = flux_balance(core, "ATPM", {"ACout": (0, 0)})
print(closed["objective"]) # 14.8, no acetate
print(len(essential_genes(core, "ATPM"))) # 13
For the whole model, 338 reactions, metabolic_model.solve_lp_scipy does the same job with SciPy’s faster solver; the knockouts exercise has an optional extra that uses it.
Numbers to remember
| Quantity | Value |
|---|---|
| syn3A’s metabolic model (iMB155) | 338 reactions, 304 metabolites, 155 genes |
| Typical enzyme | about 10 per second, about 0.1 mM |
| Record speed-up | (78 million years → about 25 ms) |
| Barrier and speed | 5.9 kJ/mol lower = 10× faster at 37 °C |
| Michaelis–Menten | ; half speed at , 90% at |
| Competitive / noncompetitive | raises / lowers |
| Glycolysis | 2 ATP and 2 NADH per glucose; up to 4 ATP with acetate |
| syn3A’s glucose | about 15,000 molecules per second, through the PTS (no hexokinase) |
| NAD⁺ without recycling | runs out in about 1.5 seconds |
| ATP | about 50 kJ/mol, about 20 kT; about 74,000 in a syn3A cell, remade every 2–3 s |
| 1 mM in syn3A | about 20,000 molecules |
| 1 mmol per gram dry weight per hour | about 1,706 molecules per second in one syn3A cell |
| Steady state | |
| FBA on syn3A’s core | 21.7 ATP per gram dry weight per hour (about 37,000 per second) |
| Gene essentiality | 123 of 155 essential in the model; 88% agreement with the lab |
Next lesson: gene regulation and circuits. You will see how genes switch each other on and off, build switches and clocks out of feedback, and write an engine that simulates them.
Sources and further reading
- Breuer M, et al. Essential metabolism for a minimal cell. eLife 8:e36842 (2019). The metabolic model iMB155, its FBA results and gene essentiality; CC BY 4.0. Supplementary files 3 (essentiality), 7 (kcat and protein copies) and 10 (the model).
- Thornburg ZR, et al. Fundamental behaviors emerge from simulations of a living minimal cell. Cell 185:345–360 (2022). Glucose uptake, ATP production and costs, starting concentrations, and the values.
- Thornburg ZR, et al. Kinetic modeling of the genetic information processes in a minimal cell. Frontiers in Molecular Biosciences 6:130 (2019). The ATP cost of gene expression.
- Hutchison CA III, et al. Design and synthesis of a minimal bacterial genome. Science 351:aad6253 (2016). The transposon experiments behind the essential-gene calls.
- Wodke JAH, et al. Dissecting the energy metabolism in Mycoplasma pneumoniae through genome-scale metabolic modeling. Molecular Systems Biology 9:653 (2013). The borrowed glucose and acetate limits.
- Bar-Even A, et al. The moderately efficient enzyme: evolutionary and physicochemical trends shaping enzyme parameters. Biochemistry 50:4402–4410 (2011).
- Radzicka A, Wolfenden R. A proficient enzyme. Science 267:90–93 (1995). The 78-million-year reaction.
- Michaelis L, Menten ML. Die Kinetik der Invertinwirkung. Biochemische Zeitschrift 49:333–369 (1913).
- Johnson KA, Goody RS. The original Michaelis constant: translation of the 1913 Michaelis–Menten paper. Biochemistry 50:8264–8269 (2011).
- Bennett BD, et al. Absolute metabolite concentrations and implied enzyme active site occupancy in Escherichia coli. Nature Chemical Biology 5:593–599 (2009).
- Orth JD, Thiele I, Palsson BØ. What is flux balance analysis? Nature Biotechnology 28:245–248 (2010). A short, friendly introduction.
- syn3A’s genome and genes: NCBI GenBank record CP016816.2.
- Milo R, Phillips R. Cell Biology by the Numbers. Garland Science, 2015. Free online at book.bionumbers.org. Enzyme rates, reactions without enzymes, and the energy in ATP.