Browse Source

More links

master
David Larlet 3 years ago
parent
commit
266c965681

+ 295
- 0
cache/2021/1039b631578007d23759a99c2238cda9/index.html View File

@@ -0,0 +1,295 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the <title>
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>Biohacking Lite (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://karpathy.github.io/2020/06/11/biohacking-lite/">

<body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">

<article>
<header>
<h1>Biohacking Lite</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="https://karpathy.github.io/2020/06/11/biohacking-lite/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>Throughout my life I never paid too much attention to health, exercise, diet or nutrition. I knew that you’re supposed to get some exercise and eat vegetables or something, but it stopped at that (“mom said”-) level of abstraction. I also knew that I can probably get away with some ignorance while I am young, but at some point I was messing with my health-adjusted life expectancy. So about halfway through 2019 I resolved to spend some time studying these topics in greater detail and dip my toes into some biohacking. And now… it’s been a year!</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/subway_map.png">
<div class="thecap"><p>A "subway map" of human metabolism. For the purposes of this post the important parts are the metabolism of the three macronutrients (green: lipids, red: carbohydrates, blue: amino acids), and orange: where the magic happens - oxidative metabolism, including the citric acid cycle, the electron transport chain and the ATP Synthase. </p><a href="https://drive.google.com/file/d/1WC7v8HE4XtNd_yvsJReliX6_LN3agCFb/view?usp=sharing">full detail link.</a></div>
</div>

<p>Now, I won’t lie, things got a bit out of hand over the last year with ketogenic diets, (continuous) blood glucose / beta-hydroxybutyrate tests, intermittent fasting, extended water fasting, various supplements, blood tests, heart rate monitors, dexa scans, sleep trackers, sleep studies, cardio equipments, resistance training routines etc., all of which I won’t go into full details of because it lets a bit too much of the mad scientist crazy out. But as someone who has taken plenty of physics, some chemistry but basically zero biology during my high school / undergrad years, undergoing some of these experiments was incredibly fun and a great excuse to study a number of textbooks on biochemistry (I liked “Molecular Biology of the Cell”), biology (I liked Campbell’s Biology), human nutrition (I liked “Advanced Nutrition and Human Metabolism”), etc.</p>

<p>For this post I wanted to focus on some of my experiments around weight loss because 1) weight is very easy to measure and 2) the biochemistry of it is interesting. In particular, in June 2019 I was around 200lb and I decided I was going to lose at least 25lb to bring myself to ~175lb, which according to a few publications is the weight associated with the lowest all cause mortality for my gender, age, and height. Obviously, a target weight is an <a href="https://www.calculator.net/ideal-weight-calculator.html">exceedingly blunt instrument</a> and is by itself just barely associated with health and general well-being. I also understand that weight loss is a sensitive, complicated topic and much has been discussed on the subject from a large number of perspectives. The goal of this post is to nerd out over biochemistry and energy metabolism in the animal kingdom, and potentially inspire others on their own biohacking lite adventure.</p>

<p><strong>What weight is lost anyway</strong>? So it turns out that, roughly speaking, we weigh more because our batteries are very full. A human body is like an iPhone with a battery pack that can grow nearly indefinitely, and with the abundance of food around us we scarcely unplug from the charging outlet. In this case, the batteries are primarily the adipose tissue and triglycerides (fat) stored within, which are eagerly stockpiled (or sometimes also synthesized!) by your body to be burned for energy in case food becomes scarce. This was all very clever and dandy when our hunter gatherer ancestors downed a mammoth once in a while during an ice age, but not so much today with weaponized truffle double chocolate fudge cheesecakes masquerading on dessert menus.</p>

<p><strong>Body’s batteries</strong>. To be precise, the body has roughly 4 batteries available to it, each varying in its total capacity and the latency/throughput with which it can be mobilized. The biochemical implementation details of each storage medium vary but, remarkably, in every case your body discharges the batteries for a single, unique purpose: to synthesize adenosine triphosphate, or ATP from ADP (alright technically/aside some also goes to the “redox power” of NADH/NADPH). The synthesis itself is relatively straightforward, taking one molecule of adenosine diphosphate (ADP), and literally snapping on a 3rd phosphate group to its end. Doing this is kind of like a molecular equivalent of squeezing and loading a spring:</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/atpspring.svg">
<img src="https://karpathy.github.io/assets/bio/atpsynthesis.svg">
<div class="thecap"><p>Synthesis of ATP from ADP, done by snapping in a 3rd phosphate group to "load the spring". Images borrowed from </p><a href="https://learn.genetics.utah.edu/content/metabolism/atp/">here</a><p>.</p></div>
</div>

<p>This is completely not obvious and remarkable - a single molecule (ATP) functions as a universal $1 bill that energetically “pays for” much of the work done by your protein machinery. Even better, this system turns out to have an ancient origin and is common to all life on Earth. Need to (active) transport some molecule across the cell membrane? ATP binding to the transmembrane protein provides the needed “umph”. Need to temporarily untie the DNA against its hydrogen bonds? ATP binds to the protein complex to power the unzipping. Need to move myosin down an actin filament to contract a muscle? ATP to the rescue! Need to shuttle proteins around the cell’s cytoskeleton? ATP powers the tiny molecular motor (kinesin). Need to attach an amino acid to tRNA to prepare it for protein synthesis in the ribosome? ATP required. You get the idea.</p>

<p>Now, the body only maintains a very small amount ATP molecules “in supply” at any time. The ATP is quickly hydrolyzed, chopping off the third phosphate group, releasing energy for work, and leaving behind ADP. As mentioned, we have roughly 4 batteries that can all be “discharged” into re-generating ATP from ADP:</p>

<ol>
<li><strong>super short term battery</strong>. This would be the <a href="https://en.wikipedia.org/wiki/Phosphocreatine">Phosphocreatine system</a> that buffers phosphate groups attached to creatine so ADP can be very quickly and locally recycled to ATP, barely worth mentioning for our purposes since its capacity is so minute. A large number of athletes take Creatine supplements to increase this buffer.</li>
<li><strong>short term battery</strong>. Glycogen, a branching polysaccharide of glucose found in your liver and skeletal muscle. The liver can store about 120 grams and the skeletal muscle about 400 grams. About 4 grams of glucose also circulates in your blood. Your body derives approximately ~4 kcal/g from full oxidation of glucose (adding up glycolysis and oxidative phosphorylation), so if you do the math your glycogen battery stores about 2,000 kcal. This also happens to be roughly the base metabolic rate of an average adult, i.e. the energy just to “keep the lights on” for 24 hours. Now, glycogen is not an amazing energy storage medium - not only is it not very energy dense in grams/kcal, but it is also a sponge that binds too much water with it (~3g of water per 1g of glycogen), which finally brings us to:</li>
<li><strong>long term battery</strong>. Adipose tissue (fat) is by far your primary super high density super high capacity battery pack. For example, as of June 2019, ~40lb of my 200lb weight was fat. Since fat is significantly more energy dense than carbohydrates (9 kcal/g instead of just 4 kcal/g), my fat was storing 40lb = 18kg = 18,000g x 9kcal/g = 162,000 kcal. This is a staggering amount of energy. If energy was the sole constraint, my body could run on this alone for 162,000/2,000 = 81 days. Since 1 stick of dynamite is about 1MJ of energy (239 kcal), we’re talking 678 sticks of dynamite. Or since a 100KWh Tesla battery pack stores 360MJ, if it came with a hand-crank I could in principle charge it almost twice! Hah.</li>
<li><strong>lean body mass :(</strong>. When sufficiently fasted and forced to, your body’s biochemistry will resort to burning lean body mass (primarily muscle) for fuel to power your body. This is your body’s “last resort” battery.</li>
</ol>

<p>All four of these batteries are charged/discharged at all times to different amounts. If you just ate a cookie, your cookie will promptly be chopped down to glucose, which will circulate in your bloodstream. If there is too much glucose around (in the case of cookies there would be), your anabolic pathways will promptly store it as glycogen in the liver and skeletal muscle, or (more rarely, if in vast abundance) convert it to fat. On the catabolic side, if you start jogging you’ll primarily use (1) for the first ~3 seconds, (2) for the next 8-10 seconds anaerobically, and then (2, 3) will ramp up aerobically (a higher latency, higher throughput pathway) once your body kicks into a higher gear by increasing the heart rate, breathing rate, and oxygen transport. (4) comes into play mostly if you starve yourself or deprive your body of carbohydrates in your diet.</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/energy_metabolism_1.png">
<img src="https://karpathy.github.io/assets/bio/atp_recycling.png">
<div class="thecap"><b>Left</b><p>: nice summary of food, the three major macronutrient forms of it, its respective storage systems (glycogen, muscle, fat), and the common "discharge" of these batteries all just to make ATP from ADP by attaching a 3rd phosphate group. </p><b>Right</b><p>: Re-emphasizing the "molecular spring": ATP is continuously re-cycled from ADP just by taking the spring and "loading" it over and over again. Images borrowed from </p><a href="https://voer.edu.vn/m/overview-of-metabolic-reactions/b446ba09">this nice page</a><p>.</p></div>
</div>

<p>Since I am a computer scientist it is hard to avoid a comparison of this “energy hierarchy” to the memory hierarchy of a typical computer system. Moving energy around (stored chemically in high energy C-H / C-C bonds of molecules) is expensive just like moving bits around a chip. (1) is your L1/L2 cache - it is local, immediate, but tiny. Anaerobic (2) via glycolysis in the cytosol is your RAM, and aerobic respiration (3) is your disk: high latency (the fatty acids are shuttled over all the way from adipose tissue through the bloodstream!) but high throughput and massive storage.</p>

<p><strong>The source of weight loss</strong>. So where does your body weight go exactly when you “lose it”? It’s a simple question but it stumps most people, including my younger self. Your body weight is ultimately just the sum of the individual weights of the atoms that make you up - carbon, hydrogen, nitrogen, oxygen, etc. arranged into a zoo of complex, organic molecules. One day you could weigh 180lb and the next 178lb. Where did the 2lb of atoms go? It turns out that most of your day-to-day fluctuations are attributable to water retention, which can vary a lot with your levels of sodium, your current glycogen levels, various hormone/vitamin/mineral levels, etc. The contents of your stomach/intestine and stool/urine also add to this. But where does the fat, specifically, go when you “lose” it, or “burn” it? Those carbon/hydrogen atoms that make it up don’t just evaporate out of existence. (If our body could evaporate them we’d expect E=mc^2 of energy, which would be cool). Anyway, it turns out that you breathe out most of your weight. Your breath looks transparent but you inhale a bunch of oxygen and you exhale a bunch of carbon dioxide. The carbon in that carbon dioxide you just breathed out may have just seconds ago been part of a triglyceride molecule in your fat. It’s highly amusing to think that every single time you breathe out (in a fasted state) you are literally breathing out your fat carbon by carbon. There is a good <a href="https://www.youtube.com/watch?v=vuIlsN32WaE">TED talk</a> and even a whole <a href="https://www.bmj.com/content/349/bmj.g7257">paper</a> with the full biochemistry/stoichiometry involved.</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/weight_loss.gif">
<p class="thecap">Taken from the above paper. You breathe out 84% of your fat loss.</p>
</div>

<p><strong>Combustion</strong>. Let’s now turn to the chemical process underlying weight loss. You know how you can take wood and light it on fire to “burn” it? This chemical reaction is <em>combustion</em>; You’re taking a bunch of organic matter with a lot of C-C and C-H bonds and, with a spark, providing the activation energy necessary for the surrounding voraciously electronegative oxygen to react with it, stripping away all of the carbons into carbon dioxide (CO2) and all of the hydrogens into water (H2O). This reaction releases a lot of heat in the process, thus sustaining the reaction until all energy-rich C-C and C-H bonds are depleted. These bonds are referred to as “energy-rich” because energetically carbon reeeallly wants to be carbon dioxide (CO2) and hydrogen reeeeally wants to be water (H2O), but this reaction is gated by an activation energy barrier, allowing large amounts of C-C/C-H rich macromolecules to exist in stable forms, in ambient conditions, and in the presence of oxygen.</p>

<p><strong>Cellular respiration: “slow motion” combustion</strong>. Remarkably, your body does the exact same thing as far as inputs (organic compounds), outputs (CO2 and H2O) and stoichiometry are concerned, but the burning is not explosive but slow and controlled, with plenty of molecular intermediates that torture biology students. This biochemical miracle begins with fats/carbohydrates/proteins (molecules rich in C-C and C-H bonds) and goes through stepwise, complete, slow-motion combustion via glycolysis / beta oxidation, citric acid cycle, oxidative phosphorylation, and finally the electron transport chain and the whoa-are-you-serious molecular motor - the <a href="https://en.wikipedia.org/wiki/ATP_synthase">ATP synthase</a>, imo the most incredible macromolecule not DNA. Okay potentially a tie with the Ribosome. Even better, this is an exceedingly efficient process that traps almost 40% of the energy in the form of ATP (the rest is lost as heat). This is much more efficient than your typical internal combustion motor at around 25%. I am also skipping a lot of incredible detail that doesn’t fit into a paragraph, including how food is chopped up piece by piece all the way to tiny acetate molecules, how their electrons are stripped and loaded up on molecular shuttles (NAD+ -&gt; NADH), how they then quantum tunnel their way down the electron transport chain (literally a flow of electricity down a protein complex “wire”, from food to oxygen), how this pumps protons across the inner mitochondrial membrane (an electrochemical equaivalent of pumping water uphill in a hydro plant), how this process is brilliant, flexible, ancient, highly conserved in all of life and very closely related to photosynthesis, and finally how the protons are allowed to flow back through little holes in the ATP synthase, spinning it like a water wheel on a river, and powering its head to take an ADP and a phosphate and snap them together to ATP.</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/combustion.jpeg">
<img src="https://karpathy.github.io/assets/bio/combustion2.png">
<div class="thecap"><a href="https://ib.bioninja.com.au/higher-level/topic-8-metabolism-cell/untitled/energy-conversions.html">Left</a><p>: Chemically, as far as inputs and outputs alone are concerned, burning things with fire is identical to burning food for our energy needs. </p><a href="https://www.docsity.com/en/energy-conversion-fundamentals-of-biology-lecture-slides/241294/">Right</a><p>: the complete oxidation of C-C / C-H rich molecules powers not just our bodies but a lot of our technology.</p></div>
</div>

<p><strong>Photosynthesis: “inverse combustion”</strong>. If H2O and CO2 are oh so energetically favored, it’s worth keeping in mind where all of this C-C, C-H rich fuel came from in the first place. Of course, it comes from plants - the OG nanomolecular factories. In the process of photosynthesis, plants strip hydrogen atoms away from oxygen in molecules of water with light, and via further processing snatch carbon dioxide (CO2) lego blocks from the atmosphere to build all kinds of organics. Amusingly, unlike fixing hydrogen from H2O and carbon from CO2, plants are unable to fix the plethora of nitrogen from the atmosphere (the triple bond in N2 is very strong) and rely on bacteria to synthesize more chemically active forms (Ammonia, NH3), which is why chemical fertilizers are so important for plant growth and why the Haber-Bosch process basically averted the Malthusian catastrophe. Anyway, the point is that plants build all kinds of insanely complex organic molecules from these basic lego blocks (carbon dioxide, water) and all of it is fundamentally powered by light via the miracle of photosynthesis. The sunlight’s energy is trapped in the C-C / C-H bonds of the manufactured organics, which we eat and oxidize back to CO2 / H2O (capturing ~40% of in the form of a 3rd phosphate group on ATP), and finally convert to blog posts like this one, and a bunch of heat. Also, going in I didn’t quite appreciate just how much we know about all of the reactions involved, that we we can track individual atoms around all of them, and that any student can easily calculate answers to questions such as “How many ATP molecules are generated during the complete oxidation of one molecule of palmitic acid?” (<a href="https://www.youtube.com/watch?v=w6V9RFs9NGk">it’s 106</a>, now you know).</p>

<blockquote>
<p>We’ve now established in some detail that fat is your body’s primary battery pack and we’d like to breathe it out. Let’s turn to the details of the accounting.</p>
</blockquote>

<p><strong>Energy input</strong>. Humans turn out to have a very simple and surprisingly narrow energy metabolism. We don’t partake in the miracle of photosynthesis like plants/cyanobacteria do. We don’t oxidize inorganic compounds like hydrogen sulfide or nitrite or something like some of our bacteria/archaea cousins. Similar to everything else alive, we do not fuse or fission atomic nuclei (that would be awesome). No, the only way we input any and all energy into the system is through the breakdown of food. “Food” is actually a fairly narrow subset of organic molecules that we can digest and metabolize for energy. It includes classes of molecules that come in 3 major groups (“macros”): proteins, fats, carbohydrates and a few other special case molecules like alcohol. There are plenty of molecules we can’t metabolize for energy and don’t count as food, such as cellulose (fiber; actually also a carbohydrate, a major component of plants, although some of it is digestible by some animals like cattle; also your microbiome loooves it), or hydrocarbons (which can only be “metabolized” by our internal combustion engines). In any case, this makes for exceedingly simple accounting: the energy input to your body is upper bounded by the number of food calories that you eat. The food industry attempts to guesstimate these by adding up the macros in each food, and you can find these estimates on the nutrition labels. In particular, naive calorimetry would over-estimate food calories because as mentioned not everything combustible is digestible.</p>

<p><strong>Energy output</strong>. You might think that most of your energy output would come from movement, but in fact 1) your body is exceedingly efficient when it comes to movement, and 2) it is energetically unintuitively expensive to just exist. To keep you alive your body has to maintain homeostasis, manage thermo-regulation, respiration, heartbeat, brain/nerve function, blood circulation, protein synthesis, active transport, etc etc. Collectively, this portion of energy expenditure is called the Base Metabolic Rate (BMR) and you burn this “for free” even if you slept the entire day. As an example, my BMR is somewhere around 1800kcal/day (a common estimate due to Mifflin St. Jeor for men is <em>10 x weight (kg) + 6.25 x height (cm) - 5 x age (y) + 5</em>). Anyone who’s been at the gym and ran on a treadmill will know just how much of a free win this is. I start panting and sweating uncomfortably just after a small few hundred kcal of running. So yes, movement burns calories, but the 30min elliptical session you do in the gym is a drop in the bucket compared to your base metabolic rate. Of course if you’re doing the elliptical for cardio-vascular health - great! But if you’re doing it thinking that this is necessary or a major contributor to losing weight, you’d be wrong.</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/cookie.jpg">
<img src="https://karpathy.github.io/assets/bio/sweating.jpg">
<p class="thecap">This chocolate chip cookie powers 30 minutes of running at 6mph (a pretty average running pace).</p>
</div>

<p><strong>Energy deficit</strong>. In summary, the amount of energy you expend (BMR + movement) subtract the amount you take in (via food alone) is your energy deficit. This means you will discharge your battery more than you charge it, and breathe out more fat than you synthesize/store, decreasing the size of your battery pack, and recording less on the scale because all those carbon atoms that made up your triglyceride chains in the morning are now diffused around the atmosphere.</p>

<blockquote>
<p>So… a few textbooks later we see that to lose weight one should eat less and move more.</p>
</blockquote>

<p><strong>Experiment section</strong>. So how big of a deficit should one introduce? I did not want the deficit to be so large that it would stress me out, make me hangry and impact my work. In addition, with greater deficit your body will increasingly begin to sacrifice lean body mass (<a href="https://www.ncbi.nlm.nih.gov/pubmed/15615615">paper</a>). To keep things simple, I aimed to lose about 1lb/week, which is consistent with a few recommendations I found in a few <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4033492/">papers</a>. Since 1lb = 454g, 1g of fat is estimated at approx. 9 kcal, and adipose tissue is ~87% lipids, some (very rough) napkin math suggests that 3500 kcal = 1lb of fat. The precise details of this are <a href="https://www.ncbi.nlm.nih.gov/pubmed/21872751">much more complicated</a>, but this would suggest a target deficit of about 500 kcal/day. I found that it was hard to reach this deficit with calorie restriction alone, and psychologically it was much easier to eat near the break even point and create most of the deficit with cardio. It also helped a lot to adopt a 16:8 intermittent fasting schedule (i.e. “skip breakfast”, eat only from e.g. 12-8pm) which helps control appetite and dramatically reduces snacking. I started the experiment in June 2019 at about 195lb (day 120 on the chart below), and 1 year later I am at 165lb, giving an overall empirical rate of 0.58lb/week:</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/weight.png">
<p class="thecap">My weight (lb) over time (days). The first 120 days were "control" where I was at my regular maintenance eating whatever until I felt full. From there I maintained an average 500kcal deficit per day. Some cheating and a few water fasts are discernable.</p>
</div>

<p><strong>Other stuff</strong>. I should mention that despite the focus of this post the experiment was of course much broader for me than weight loss alone, as I tried to improve many other variables I started to understand were linked to longevity and general well-being. I went on a relatively low carbohydrate mostly Pescetarian diet, I stopped eating nearly all forms of sugar (except for berries) and processed foods, I stopped drinking calories in any form (soda, orange juice, alcohol, milk), I started regular cardio a few times a week (first running then cycling), I started regular resistance training, etc. I am not militant about any of these and have cheated a number of times on all of it because I think sticking to it 90% of the time produces 90% of the benefit. As a result I’ve improved a number of biomarkers (e.g. resting heart rate, resting blood glucose, strength, endurance, nutritional deficiencies, etc). I wish I could say I feel significantly better or sharper, but honestly I feel about the same. But the numbers tell me I’m supposed to be on a better path and I think I am content with that 🤷.</p>

<p><strong>Explicit modeling</strong>. Now, getting back to weight, clearly the overall rate of 0.58lb/week is not our expected 1lb/week. To validate the energy deficit math I spent 100 days around late 2019 very carefully tracking my daily energy input and output. For the input I recorded my total calorie intake - I kept logs in my notes app of everything I ate. When nutrition labels were not available, I did my best to estimate the intake. Luckily, I have a strange obsession with guesstimating calories in any food, I’ve done so for years for fun, and have gotten quite good at it. Isn’t it a ton of fun to always guess calories in some food before checking the answer on the nutrition label and seeing if you fall within 10% correct? No? Alright. For energy output I recorded the number my Apple Watch reports in the “Activity App”. TLDR simply subtracting expenditure from intake gives the approximate deficit for that day, which we can use to calculate the expected weight loss, and finally compare to the actual weight loss. As an example, an excerpt of the raw data and the simple calculation looks something like:</p>

<pre>
2019-09-23: Morning weight 180.5. Ate 1700, expended 2710 (Δkcal 1010, Δw 0.29). Tomorrow should weight 180.2
2019-09-24: Morning weight 179.8. Ate 1790, expended 2629 (Δkcal 839, Δw 0.24). Tomorrow should weight 179.6
2019-09-25: Morning weight 180.6. Ate 1670, expended 2973 (Δkcal 1303, Δw 0.37). Tomorrow should weight 180.2
2019-09-26: Morning weight 179.7. Ate 2140, expended 2529 (Δkcal 389, Δw 0.11). Tomorrow should weight 179.6
2019-09-27: Morning weight nan. Ate 2200, expended 2730 (Δkcal 530, Δw 0.15). Tomorrow should weight nan
2019-09-28: Morning weight nan. Ate 2400, expended 2800 (Δkcal 400, Δw 0.11). Tomorrow should weight
2019-09-29: Morning weight 181.0. Ate 1840, expended 2498 (Δkcal 658, Δw 0.19). Tomorrow should weight 180.8
2019-09-30: Morning weight 181.8. Ate 1910, expended 2883 (Δkcal 973, Δw 0.28). Tomorrow should weight 181.5
2019-10-01: Morning weight 179.4. Ate 2000, expended 2637 (Δkcal 637, Δw 0.18). Tomorrow should weight 179.2
2019-10-02: Morning weight 179.5. Ate 1920, expended 2552 (Δkcal 632, Δw 0.18). Tomorrow should weight 179.3
</pre>

<p>Where we have a few <code class="language-plaintext highlighter-rouge">nan</code> if I missed a weight measurement in the morning. Plotting this we get the following:</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/expected_loss.png">
<p class="thecap">Expected weight based on simple calorie deficit formula (blue) vs. measured weight (red).</p>
</div>

<p>Clearly, my actual weight loss (red) turned out to be slower than expected one based on our simple deficit math (blue). So this is where things get interesting. A number of possibilities come to mind. I could be consistently underestimating calories eaten. My Apple Watch could be overestimating my calorie expenditure. The naive conversion math of 1lb of fat = 3500 kcal could be off. I think one of the other significant culprits is that when I eat protein I am naively recording its caloric value under intake, implicitly assuming that my body burns it for energy. However, since I was simultaneously resistance training and building some muscle, my body could redirect 1g of protein into muscle and instead mobilize only ~0.5g of fat to cover the same energy need (since fat is 9kcal/g and protein only 4kcal/g). The outcome is that depending on my muscle gain my weight loss would look slower, as we observe. Most likely, some combination of all of the above is going on.</p>

<p><strong>Water factor</strong>. Another fun thing I noticed is that my observed weight can fluctuate and rise a lot, even while my expected weight calculation expects a loss. I found that this discrepancy grows with the amount of carbohydrates in my diet (dessert, bread/pasta, potatoes, etc.). Eating these likely increases glycogen levels, which as I already mentioned briefly, acts as a sponge and soaks up water. I noticed that my weight can rise multiple pounds, but when I revert back to my typical low-carbohydrate pasketerianish diet these “fake” pounds evaporate in a matter of a few days. The final outcome are wild swings in my body weight depending mostly on how much candy I’ve succumbed to, or if I squeezed in some pizza at a party.</p>

<p><strong>Body composition</strong>. Since simultaneous muscle building skews the simple deficit math, to get a better fit we’d have to understand the details of my body composition. The weight scale I use (<a href="https://www.withings.com/us/en/body-plus">Withings Body+</a>) claims to estimate and separate fat weight and lean body weight by the use of <a href="https://en.wikipedia.org/wiki/Bioelectrical_impedance_analysis">bioelectrical impedance analysis</a>, which uses the fact that more muscle is more water is less electrical resistance. This is the most common approach accessible to a regular consumer. I didn’t know how much I could trust this measurement so I also ordered three DEXA scans (a gold standard for body composition measurements used in the literature based on low dosage X-rays) separated 1.5 months apart. I used <a href="https://www.bodyspec.com/">BodySpec</a>, who charge $45 per scan, each taking about 7 minutes at one of their physical locations. The amount of radiation is tiny - about 0.4 uSv, which is the dose you’d get by eating <a href="https://en.wikipedia.org/wiki/Banana_equivalent_dose">4 bananas</a> (they contain radioactive potassium-40). I was not able to get a scan recently due to COVID-19. Here is my body composition data visualized from both sources during late 2019:</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/body_composition.png">
<p class="thecap">My ~daily reported fat and lean body mass measurements based on bioelectrical impedance and the 3 DEXA scans. <br>red = fat, blue = lean body mass. (also note two y-axes are superimposed)</p>
</div>

<p><strong>BIA vs DEXA</strong>. Unfortunately, we can see that the BIA measurement provided by my scale disagrees with DEXA results by a lot. That said, I am also forced to interpret the DEXA scan with skepticism specifically for the lean body mass amount, which is <a href="https://www.bodyspec.com/blog/post/will_drinking_water_affect_my_scan">affected by hydration level</a>, with water showing up mostly as lean body mass. In particular, during my third measurement I was fasted and in ketosis. Hence my glycogen levels were low and I was less hydrated, which I believe showed up as a dramatic loss of muscle. That said, focusing on fat, both approaches show me losing body fat at roughly the same rate, though they are off by an absolute offset.</p>

<p><strong>BIA</strong>. An additional way to see that BIA is making stuff up is that it shows me losing lean body mass over time. I find this relatively unlikely because during the entire course of this experiment I exercised regularly and was able to monotonically increase my strength in terms of weight and reps for most exercises (e.g. bench press, pull ups, etc.). So that makes no sense either ¯\<em>(ツ)</em>/¯</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/dexa.png">
<p class="thecap">The raw numbers for my DEXA scans. I was allegedly losing fat. The lean tissue estimate is noisy due to hydration levels.</p>
</div>

<p><strong>Summary</strong> So there you have it. DEXA scans are severely affected by hydration (which is hard to control) and BIA is making stuff up entirely, so we don’t get to fully resolve the mystery of the slower-than-expected weight loss. But overall, maintaining an average deficit of 500kcal per day did lead to about 60% of the expected weight loss over the course of a year. More importantly, we studied the process by which our Sun’s free energy powers blog posts via a transformation of nuclear binding energy to electromagnetic radiation to heat. The photons power the fixing of carbon in CO2 and hydrogen in H2O into C-C/C-H rich organic molecules in plants, which we digest and break back down via a “slow” stepwise combustion in our cell’s cytosols and mitochondria, which “charges” some (ATP) molecular springs, which provide the “umph” that fires the neurons and moves the fingers. Also, any excess energy is stockpiled by the body as fat, so we need to intake less of it or “waste” some of it away on movement to discharge our primary battery and breathe out our weight. It’s been super fun to self-study these topics (which I skipped in high school), and I hope this post was an interesting intro to some of it. Okay great. I’ll now go eat some cookies, because yolo.</p>

<p><br><br>
<strong>(later edits)</strong></p>

<ul>
<li>discussion on <a href="https://news.ycombinator.com/item?id=23501021">hacker news</a></li>
<li>my original post used to be about twice as long due to a section of nutrition. Since the topic of <em>what</em> to each came up so often alongside <em>how much</em> to each I am including a quick TLDR on my final diet here, without the 5-page detail. In rough order of importance: Eat from 12-8pm only. Do not drink any calories (no soda, no alcohol, no juices, avoid milk). Avoid sugar like the plague, including carbohydrate-heavy foods that immediately break down to sugar (bread, rice, pasta, potatoes), including to a lesser extent natural sugar (apples, bananas, pears, etc - we’ve “weaponized” these fruits in the last few hundred years via strong artificial selection into <a href="https://www.sciencealert.com/fruits-vegetables-before-domestication-photos-genetically-modified-food-natural">actual candy bars</a>), berries are ~okay. Avoid processed food (follow Michael Pollan’s heuristic of only shopping on the outer walls of a grocery store, staying clear of its center). For meat stick mostly to fish and prefer chicken to beef/pork. For me the avoidance of beef/pork is 1) ethical - they are intelligent large animals, 2) environmental - they have a large environmental footprint (cows generate a lot of methane, a highly potent greenhouse gas) and their keeping leads to a lot of deforestation, 3) health related - a few papers point to some cause for concern in consumption of red meat, and 4) global health - a large fraction of the worst offender infectious diseases are zootopic and jumped to humans from close proximity to livestock.</li>
</ul>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="/david/log/" title="Accès au flux RSS">🤖</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
<abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend>Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 145
- 0
cache/2021/1039b631578007d23759a99c2238cda9/index.md View File

@@ -0,0 +1,145 @@
title: Biohacking Lite
url: https://karpathy.github.io/2020/06/11/biohacking-lite/
hash_url: 1039b631578007d23759a99c2238cda9

<p>Throughout my life I never paid too much attention to health, exercise, diet or nutrition. I knew that you’re supposed to get some exercise and eat vegetables or something, but it stopped at that (“mom said”-) level of abstraction. I also knew that I can probably get away with some ignorance while I am young, but at some point I was messing with my health-adjusted life expectancy. So about halfway through 2019 I resolved to spend some time studying these topics in greater detail and dip my toes into some biohacking. And now… it’s been a year!</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/subway_map.png">
<div class="thecap"><p>A "subway map" of human metabolism. For the purposes of this post the important parts are the metabolism of the three macronutrients (green: lipids, red: carbohydrates, blue: amino acids), and orange: where the magic happens - oxidative metabolism, including the citric acid cycle, the electron transport chain and the ATP Synthase. </p><a href="https://drive.google.com/file/d/1WC7v8HE4XtNd_yvsJReliX6_LN3agCFb/view?usp=sharing">full detail link.</a></div>
</div>

<p>Now, I won’t lie, things got a bit out of hand over the last year with ketogenic diets, (continuous) blood glucose / beta-hydroxybutyrate tests, intermittent fasting, extended water fasting, various supplements, blood tests, heart rate monitors, dexa scans, sleep trackers, sleep studies, cardio equipments, resistance training routines etc., all of which I won’t go into full details of because it lets a bit too much of the mad scientist crazy out. But as someone who has taken plenty of physics, some chemistry but basically zero biology during my high school / undergrad years, undergoing some of these experiments was incredibly fun and a great excuse to study a number of textbooks on biochemistry (I liked “Molecular Biology of the Cell”), biology (I liked Campbell’s Biology), human nutrition (I liked “Advanced Nutrition and Human Metabolism”), etc.</p>

<p>For this post I wanted to focus on some of my experiments around weight loss because 1) weight is very easy to measure and 2) the biochemistry of it is interesting. In particular, in June 2019 I was around 200lb and I decided I was going to lose at least 25lb to bring myself to ~175lb, which according to a few publications is the weight associated with the lowest all cause mortality for my gender, age, and height. Obviously, a target weight is an <a href="https://www.calculator.net/ideal-weight-calculator.html">exceedingly blunt instrument</a> and is by itself just barely associated with health and general well-being. I also understand that weight loss is a sensitive, complicated topic and much has been discussed on the subject from a large number of perspectives. The goal of this post is to nerd out over biochemistry and energy metabolism in the animal kingdom, and potentially inspire others on their own biohacking lite adventure.</p>

<p><strong>What weight is lost anyway</strong>? So it turns out that, roughly speaking, we weigh more because our batteries are very full. A human body is like an iPhone with a battery pack that can grow nearly indefinitely, and with the abundance of food around us we scarcely unplug from the charging outlet. In this case, the batteries are primarily the adipose tissue and triglycerides (fat) stored within, which are eagerly stockpiled (or sometimes also synthesized!) by your body to be burned for energy in case food becomes scarce. This was all very clever and dandy when our hunter gatherer ancestors downed a mammoth once in a while during an ice age, but not so much today with weaponized truffle double chocolate fudge cheesecakes masquerading on dessert menus.</p>

<p><strong>Body’s batteries</strong>. To be precise, the body has roughly 4 batteries available to it, each varying in its total capacity and the latency/throughput with which it can be mobilized. The biochemical implementation details of each storage medium vary but, remarkably, in every case your body discharges the batteries for a single, unique purpose: to synthesize adenosine triphosphate, or ATP from ADP (alright technically/aside some also goes to the “redox power” of NADH/NADPH). The synthesis itself is relatively straightforward, taking one molecule of adenosine diphosphate (ADP), and literally snapping on a 3rd phosphate group to its end. Doing this is kind of like a molecular equivalent of squeezing and loading a spring:</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/atpspring.svg">
<img src="https://karpathy.github.io/assets/bio/atpsynthesis.svg">
<div class="thecap"><p>Synthesis of ATP from ADP, done by snapping in a 3rd phosphate group to "load the spring". Images borrowed from </p><a href="https://learn.genetics.utah.edu/content/metabolism/atp/">here</a><p>.</p></div>
</div>

<p>This is completely not obvious and remarkable - a single molecule (ATP) functions as a universal $1 bill that energetically “pays for” much of the work done by your protein machinery. Even better, this system turns out to have an ancient origin and is common to all life on Earth. Need to (active) transport some molecule across the cell membrane? ATP binding to the transmembrane protein provides the needed “umph”. Need to temporarily untie the DNA against its hydrogen bonds? ATP binds to the protein complex to power the unzipping. Need to move myosin down an actin filament to contract a muscle? ATP to the rescue! Need to shuttle proteins around the cell’s cytoskeleton? ATP powers the tiny molecular motor (kinesin). Need to attach an amino acid to tRNA to prepare it for protein synthesis in the ribosome? ATP required. You get the idea.</p>

<p>Now, the body only maintains a very small amount ATP molecules “in supply” at any time. The ATP is quickly hydrolyzed, chopping off the third phosphate group, releasing energy for work, and leaving behind ADP. As mentioned, we have roughly 4 batteries that can all be “discharged” into re-generating ATP from ADP:</p>

<ol>
<li><strong>super short term battery</strong>. This would be the <a href="https://en.wikipedia.org/wiki/Phosphocreatine">Phosphocreatine system</a> that buffers phosphate groups attached to creatine so ADP can be very quickly and locally recycled to ATP, barely worth mentioning for our purposes since its capacity is so minute. A large number of athletes take Creatine supplements to increase this buffer.</li>
<li><strong>short term battery</strong>. Glycogen, a branching polysaccharide of glucose found in your liver and skeletal muscle. The liver can store about 120 grams and the skeletal muscle about 400 grams. About 4 grams of glucose also circulates in your blood. Your body derives approximately ~4 kcal/g from full oxidation of glucose (adding up glycolysis and oxidative phosphorylation), so if you do the math your glycogen battery stores about 2,000 kcal. This also happens to be roughly the base metabolic rate of an average adult, i.e. the energy just to “keep the lights on” for 24 hours. Now, glycogen is not an amazing energy storage medium - not only is it not very energy dense in grams/kcal, but it is also a sponge that binds too much water with it (~3g of water per 1g of glycogen), which finally brings us to:</li>
<li><strong>long term battery</strong>. Adipose tissue (fat) is by far your primary super high density super high capacity battery pack. For example, as of June 2019, ~40lb of my 200lb weight was fat. Since fat is significantly more energy dense than carbohydrates (9 kcal/g instead of just 4 kcal/g), my fat was storing 40lb = 18kg = 18,000g x 9kcal/g = 162,000 kcal. This is a staggering amount of energy. If energy was the sole constraint, my body could run on this alone for 162,000/2,000 = 81 days. Since 1 stick of dynamite is about 1MJ of energy (239 kcal), we’re talking 678 sticks of dynamite. Or since a 100KWh Tesla battery pack stores 360MJ, if it came with a hand-crank I could in principle charge it almost twice! Hah.</li>
<li><strong>lean body mass :(</strong>. When sufficiently fasted and forced to, your body’s biochemistry will resort to burning lean body mass (primarily muscle) for fuel to power your body. This is your body’s “last resort” battery.</li>
</ol>

<p>All four of these batteries are charged/discharged at all times to different amounts. If you just ate a cookie, your cookie will promptly be chopped down to glucose, which will circulate in your bloodstream. If there is too much glucose around (in the case of cookies there would be), your anabolic pathways will promptly store it as glycogen in the liver and skeletal muscle, or (more rarely, if in vast abundance) convert it to fat. On the catabolic side, if you start jogging you’ll primarily use (1) for the first ~3 seconds, (2) for the next 8-10 seconds anaerobically, and then (2, 3) will ramp up aerobically (a higher latency, higher throughput pathway) once your body kicks into a higher gear by increasing the heart rate, breathing rate, and oxygen transport. (4) comes into play mostly if you starve yourself or deprive your body of carbohydrates in your diet.</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/energy_metabolism_1.png">
<img src="https://karpathy.github.io/assets/bio/atp_recycling.png">
<div class="thecap"><b>Left</b><p>: nice summary of food, the three major macronutrient forms of it, its respective storage systems (glycogen, muscle, fat), and the common "discharge" of these batteries all just to make ATP from ADP by attaching a 3rd phosphate group. </p><b>Right</b><p>: Re-emphasizing the "molecular spring": ATP is continuously re-cycled from ADP just by taking the spring and "loading" it over and over again. Images borrowed from </p><a href="https://voer.edu.vn/m/overview-of-metabolic-reactions/b446ba09">this nice page</a><p>.</p></div>
</div>

<p>Since I am a computer scientist it is hard to avoid a comparison of this “energy hierarchy” to the memory hierarchy of a typical computer system. Moving energy around (stored chemically in high energy C-H / C-C bonds of molecules) is expensive just like moving bits around a chip. (1) is your L1/L2 cache - it is local, immediate, but tiny. Anaerobic (2) via glycolysis in the cytosol is your RAM, and aerobic respiration (3) is your disk: high latency (the fatty acids are shuttled over all the way from adipose tissue through the bloodstream!) but high throughput and massive storage.</p>

<p><strong>The source of weight loss</strong>. So where does your body weight go exactly when you “lose it”? It’s a simple question but it stumps most people, including my younger self. Your body weight is ultimately just the sum of the individual weights of the atoms that make you up - carbon, hydrogen, nitrogen, oxygen, etc. arranged into a zoo of complex, organic molecules. One day you could weigh 180lb and the next 178lb. Where did the 2lb of atoms go? It turns out that most of your day-to-day fluctuations are attributable to water retention, which can vary a lot with your levels of sodium, your current glycogen levels, various hormone/vitamin/mineral levels, etc. The contents of your stomach/intestine and stool/urine also add to this. But where does the fat, specifically, go when you “lose” it, or “burn” it? Those carbon/hydrogen atoms that make it up don’t just evaporate out of existence. (If our body could evaporate them we’d expect E=mc^2 of energy, which would be cool). Anyway, it turns out that you breathe out most of your weight. Your breath looks transparent but you inhale a bunch of oxygen and you exhale a bunch of carbon dioxide. The carbon in that carbon dioxide you just breathed out may have just seconds ago been part of a triglyceride molecule in your fat. It’s highly amusing to think that every single time you breathe out (in a fasted state) you are literally breathing out your fat carbon by carbon. There is a good <a href="https://www.youtube.com/watch?v=vuIlsN32WaE">TED talk</a> and even a whole <a href="https://www.bmj.com/content/349/bmj.g7257">paper</a> with the full biochemistry/stoichiometry involved.</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/weight_loss.gif">
<p class="thecap">Taken from the above paper. You breathe out 84% of your fat loss.</p>
</div>

<p><strong>Combustion</strong>. Let’s now turn to the chemical process underlying weight loss. You know how you can take wood and light it on fire to “burn” it? This chemical reaction is <em>combustion</em>; You’re taking a bunch of organic matter with a lot of C-C and C-H bonds and, with a spark, providing the activation energy necessary for the surrounding voraciously electronegative oxygen to react with it, stripping away all of the carbons into carbon dioxide (CO2) and all of the hydrogens into water (H2O). This reaction releases a lot of heat in the process, thus sustaining the reaction until all energy-rich C-C and C-H bonds are depleted. These bonds are referred to as “energy-rich” because energetically carbon reeeallly wants to be carbon dioxide (CO2) and hydrogen reeeeally wants to be water (H2O), but this reaction is gated by an activation energy barrier, allowing large amounts of C-C/C-H rich macromolecules to exist in stable forms, in ambient conditions, and in the presence of oxygen.</p>

<p><strong>Cellular respiration: “slow motion” combustion</strong>. Remarkably, your body does the exact same thing as far as inputs (organic compounds), outputs (CO2 and H2O) and stoichiometry are concerned, but the burning is not explosive but slow and controlled, with plenty of molecular intermediates that torture biology students. This biochemical miracle begins with fats/carbohydrates/proteins (molecules rich in C-C and C-H bonds) and goes through stepwise, complete, slow-motion combustion via glycolysis / beta oxidation, citric acid cycle, oxidative phosphorylation, and finally the electron transport chain and the whoa-are-you-serious molecular motor - the <a href="https://en.wikipedia.org/wiki/ATP_synthase">ATP synthase</a>, imo the most incredible macromolecule not DNA. Okay potentially a tie with the Ribosome. Even better, this is an exceedingly efficient process that traps almost 40% of the energy in the form of ATP (the rest is lost as heat). This is much more efficient than your typical internal combustion motor at around 25%. I am also skipping a lot of incredible detail that doesn’t fit into a paragraph, including how food is chopped up piece by piece all the way to tiny acetate molecules, how their electrons are stripped and loaded up on molecular shuttles (NAD+ -&gt; NADH), how they then quantum tunnel their way down the electron transport chain (literally a flow of electricity down a protein complex “wire”, from food to oxygen), how this pumps protons across the inner mitochondrial membrane (an electrochemical equaivalent of pumping water uphill in a hydro plant), how this process is brilliant, flexible, ancient, highly conserved in all of life and very closely related to photosynthesis, and finally how the protons are allowed to flow back through little holes in the ATP synthase, spinning it like a water wheel on a river, and powering its head to take an ADP and a phosphate and snap them together to ATP.</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/combustion.jpeg">
<img src="https://karpathy.github.io/assets/bio/combustion2.png">
<div class="thecap"><a href="https://ib.bioninja.com.au/higher-level/topic-8-metabolism-cell/untitled/energy-conversions.html">Left</a><p>: Chemically, as far as inputs and outputs alone are concerned, burning things with fire is identical to burning food for our energy needs. </p><a href="https://www.docsity.com/en/energy-conversion-fundamentals-of-biology-lecture-slides/241294/">Right</a><p>: the complete oxidation of C-C / C-H rich molecules powers not just our bodies but a lot of our technology.</p></div>
</div>

<p><strong>Photosynthesis: “inverse combustion”</strong>. If H2O and CO2 are oh so energetically favored, it’s worth keeping in mind where all of this C-C, C-H rich fuel came from in the first place. Of course, it comes from plants - the OG nanomolecular factories. In the process of photosynthesis, plants strip hydrogen atoms away from oxygen in molecules of water with light, and via further processing snatch carbon dioxide (CO2) lego blocks from the atmosphere to build all kinds of organics. Amusingly, unlike fixing hydrogen from H2O and carbon from CO2, plants are unable to fix the plethora of nitrogen from the atmosphere (the triple bond in N2 is very strong) and rely on bacteria to synthesize more chemically active forms (Ammonia, NH3), which is why chemical fertilizers are so important for plant growth and why the Haber-Bosch process basically averted the Malthusian catastrophe. Anyway, the point is that plants build all kinds of insanely complex organic molecules from these basic lego blocks (carbon dioxide, water) and all of it is fundamentally powered by light via the miracle of photosynthesis. The sunlight’s energy is trapped in the C-C / C-H bonds of the manufactured organics, which we eat and oxidize back to CO2 / H2O (capturing ~40% of in the form of a 3rd phosphate group on ATP), and finally convert to blog posts like this one, and a bunch of heat. Also, going in I didn’t quite appreciate just how much we know about all of the reactions involved, that we we can track individual atoms around all of them, and that any student can easily calculate answers to questions such as “How many ATP molecules are generated during the complete oxidation of one molecule of palmitic acid?” (<a href="https://www.youtube.com/watch?v=w6V9RFs9NGk">it’s 106</a>, now you know).</p>

<blockquote>
<p>We’ve now established in some detail that fat is your body’s primary battery pack and we’d like to breathe it out. Let’s turn to the details of the accounting.</p>
</blockquote>

<p><strong>Energy input</strong>. Humans turn out to have a very simple and surprisingly narrow energy metabolism. We don’t partake in the miracle of photosynthesis like plants/cyanobacteria do. We don’t oxidize inorganic compounds like hydrogen sulfide or nitrite or something like some of our bacteria/archaea cousins. Similar to everything else alive, we do not fuse or fission atomic nuclei (that would be awesome). No, the only way we input any and all energy into the system is through the breakdown of food. “Food” is actually a fairly narrow subset of organic molecules that we can digest and metabolize for energy. It includes classes of molecules that come in 3 major groups (“macros”): proteins, fats, carbohydrates and a few other special case molecules like alcohol. There are plenty of molecules we can’t metabolize for energy and don’t count as food, such as cellulose (fiber; actually also a carbohydrate, a major component of plants, although some of it is digestible by some animals like cattle; also your microbiome loooves it), or hydrocarbons (which can only be “metabolized” by our internal combustion engines). In any case, this makes for exceedingly simple accounting: the energy input to your body is upper bounded by the number of food calories that you eat. The food industry attempts to guesstimate these by adding up the macros in each food, and you can find these estimates on the nutrition labels. In particular, naive calorimetry would over-estimate food calories because as mentioned not everything combustible is digestible.</p>

<p><strong>Energy output</strong>. You might think that most of your energy output would come from movement, but in fact 1) your body is exceedingly efficient when it comes to movement, and 2) it is energetically unintuitively expensive to just exist. To keep you alive your body has to maintain homeostasis, manage thermo-regulation, respiration, heartbeat, brain/nerve function, blood circulation, protein synthesis, active transport, etc etc. Collectively, this portion of energy expenditure is called the Base Metabolic Rate (BMR) and you burn this “for free” even if you slept the entire day. As an example, my BMR is somewhere around 1800kcal/day (a common estimate due to Mifflin St. Jeor for men is <em>10 x weight (kg) + 6.25 x height (cm) - 5 x age (y) + 5</em>). Anyone who’s been at the gym and ran on a treadmill will know just how much of a free win this is. I start panting and sweating uncomfortably just after a small few hundred kcal of running. So yes, movement burns calories, but the 30min elliptical session you do in the gym is a drop in the bucket compared to your base metabolic rate. Of course if you’re doing the elliptical for cardio-vascular health - great! But if you’re doing it thinking that this is necessary or a major contributor to losing weight, you’d be wrong.</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/cookie.jpg">
<img src="https://karpathy.github.io/assets/bio/sweating.jpg">
<p class="thecap">This chocolate chip cookie powers 30 minutes of running at 6mph (a pretty average running pace).</p>
</div>

<p><strong>Energy deficit</strong>. In summary, the amount of energy you expend (BMR + movement) subtract the amount you take in (via food alone) is your energy deficit. This means you will discharge your battery more than you charge it, and breathe out more fat than you synthesize/store, decreasing the size of your battery pack, and recording less on the scale because all those carbon atoms that made up your triglyceride chains in the morning are now diffused around the atmosphere.</p>

<blockquote>
<p>So… a few textbooks later we see that to lose weight one should eat less and move more.</p>
</blockquote>

<p><strong>Experiment section</strong>. So how big of a deficit should one introduce? I did not want the deficit to be so large that it would stress me out, make me hangry and impact my work. In addition, with greater deficit your body will increasingly begin to sacrifice lean body mass (<a href="https://www.ncbi.nlm.nih.gov/pubmed/15615615">paper</a>). To keep things simple, I aimed to lose about 1lb/week, which is consistent with a few recommendations I found in a few <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4033492/">papers</a>. Since 1lb = 454g, 1g of fat is estimated at approx. 9 kcal, and adipose tissue is ~87% lipids, some (very rough) napkin math suggests that 3500 kcal = 1lb of fat. The precise details of this are <a href="https://www.ncbi.nlm.nih.gov/pubmed/21872751">much more complicated</a>, but this would suggest a target deficit of about 500 kcal/day. I found that it was hard to reach this deficit with calorie restriction alone, and psychologically it was much easier to eat near the break even point and create most of the deficit with cardio. It also helped a lot to adopt a 16:8 intermittent fasting schedule (i.e. “skip breakfast”, eat only from e.g. 12-8pm) which helps control appetite and dramatically reduces snacking. I started the experiment in June 2019 at about 195lb (day 120 on the chart below), and 1 year later I am at 165lb, giving an overall empirical rate of 0.58lb/week:</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/weight.png">
<p class="thecap">My weight (lb) over time (days). The first 120 days were "control" where I was at my regular maintenance eating whatever until I felt full. From there I maintained an average 500kcal deficit per day. Some cheating and a few water fasts are discernable.</p>
</div>

<p><strong>Other stuff</strong>. I should mention that despite the focus of this post the experiment was of course much broader for me than weight loss alone, as I tried to improve many other variables I started to understand were linked to longevity and general well-being. I went on a relatively low carbohydrate mostly Pescetarian diet, I stopped eating nearly all forms of sugar (except for berries) and processed foods, I stopped drinking calories in any form (soda, orange juice, alcohol, milk), I started regular cardio a few times a week (first running then cycling), I started regular resistance training, etc. I am not militant about any of these and have cheated a number of times on all of it because I think sticking to it 90% of the time produces 90% of the benefit. As a result I’ve improved a number of biomarkers (e.g. resting heart rate, resting blood glucose, strength, endurance, nutritional deficiencies, etc). I wish I could say I feel significantly better or sharper, but honestly I feel about the same. But the numbers tell me I’m supposed to be on a better path and I think I am content with that 🤷.</p>

<p><strong>Explicit modeling</strong>. Now, getting back to weight, clearly the overall rate of 0.58lb/week is not our expected 1lb/week. To validate the energy deficit math I spent 100 days around late 2019 very carefully tracking my daily energy input and output. For the input I recorded my total calorie intake - I kept logs in my notes app of everything I ate. When nutrition labels were not available, I did my best to estimate the intake. Luckily, I have a strange obsession with guesstimating calories in any food, I’ve done so for years for fun, and have gotten quite good at it. Isn’t it a ton of fun to always guess calories in some food before checking the answer on the nutrition label and seeing if you fall within 10% correct? No? Alright. For energy output I recorded the number my Apple Watch reports in the “Activity App”. TLDR simply subtracting expenditure from intake gives the approximate deficit for that day, which we can use to calculate the expected weight loss, and finally compare to the actual weight loss. As an example, an excerpt of the raw data and the simple calculation looks something like:</p>

<pre>
2019-09-23: Morning weight 180.5. Ate 1700, expended 2710 (Δkcal 1010, Δw 0.29). Tomorrow should weight 180.2
2019-09-24: Morning weight 179.8. Ate 1790, expended 2629 (Δkcal 839, Δw 0.24). Tomorrow should weight 179.6
2019-09-25: Morning weight 180.6. Ate 1670, expended 2973 (Δkcal 1303, Δw 0.37). Tomorrow should weight 180.2
2019-09-26: Morning weight 179.7. Ate 2140, expended 2529 (Δkcal 389, Δw 0.11). Tomorrow should weight 179.6
2019-09-27: Morning weight nan. Ate 2200, expended 2730 (Δkcal 530, Δw 0.15). Tomorrow should weight nan
2019-09-28: Morning weight nan. Ate 2400, expended 2800 (Δkcal 400, Δw 0.11). Tomorrow should weight
2019-09-29: Morning weight 181.0. Ate 1840, expended 2498 (Δkcal 658, Δw 0.19). Tomorrow should weight 180.8
2019-09-30: Morning weight 181.8. Ate 1910, expended 2883 (Δkcal 973, Δw 0.28). Tomorrow should weight 181.5
2019-10-01: Morning weight 179.4. Ate 2000, expended 2637 (Δkcal 637, Δw 0.18). Tomorrow should weight 179.2
2019-10-02: Morning weight 179.5. Ate 1920, expended 2552 (Δkcal 632, Δw 0.18). Tomorrow should weight 179.3
</pre>

<p>Where we have a few <code class="language-plaintext highlighter-rouge">nan</code> if I missed a weight measurement in the morning. Plotting this we get the following:</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/expected_loss.png">
<p class="thecap">Expected weight based on simple calorie deficit formula (blue) vs. measured weight (red).</p>
</div>

<p>Clearly, my actual weight loss (red) turned out to be slower than expected one based on our simple deficit math (blue). So this is where things get interesting. A number of possibilities come to mind. I could be consistently underestimating calories eaten. My Apple Watch could be overestimating my calorie expenditure. The naive conversion math of 1lb of fat = 3500 kcal could be off. I think one of the other significant culprits is that when I eat protein I am naively recording its caloric value under intake, implicitly assuming that my body burns it for energy. However, since I was simultaneously resistance training and building some muscle, my body could redirect 1g of protein into muscle and instead mobilize only ~0.5g of fat to cover the same energy need (since fat is 9kcal/g and protein only 4kcal/g). The outcome is that depending on my muscle gain my weight loss would look slower, as we observe. Most likely, some combination of all of the above is going on.</p>

<p><strong>Water factor</strong>. Another fun thing I noticed is that my observed weight can fluctuate and rise a lot, even while my expected weight calculation expects a loss. I found that this discrepancy grows with the amount of carbohydrates in my diet (dessert, bread/pasta, potatoes, etc.). Eating these likely increases glycogen levels, which as I already mentioned briefly, acts as a sponge and soaks up water. I noticed that my weight can rise multiple pounds, but when I revert back to my typical low-carbohydrate pasketerianish diet these “fake” pounds evaporate in a matter of a few days. The final outcome are wild swings in my body weight depending mostly on how much candy I’ve succumbed to, or if I squeezed in some pizza at a party.</p>

<p><strong>Body composition</strong>. Since simultaneous muscle building skews the simple deficit math, to get a better fit we’d have to understand the details of my body composition. The weight scale I use (<a href="https://www.withings.com/us/en/body-plus">Withings Body+</a>) claims to estimate and separate fat weight and lean body weight by the use of <a href="https://en.wikipedia.org/wiki/Bioelectrical_impedance_analysis">bioelectrical impedance analysis</a>, which uses the fact that more muscle is more water is less electrical resistance. This is the most common approach accessible to a regular consumer. I didn’t know how much I could trust this measurement so I also ordered three DEXA scans (a gold standard for body composition measurements used in the literature based on low dosage X-rays) separated 1.5 months apart. I used <a href="https://www.bodyspec.com/">BodySpec</a>, who charge $45 per scan, each taking about 7 minutes at one of their physical locations. The amount of radiation is tiny - about 0.4 uSv, which is the dose you’d get by eating <a href="https://en.wikipedia.org/wiki/Banana_equivalent_dose">4 bananas</a> (they contain radioactive potassium-40). I was not able to get a scan recently due to COVID-19. Here is my body composition data visualized from both sources during late 2019:</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/body_composition.png">
<p class="thecap">My ~daily reported fat and lean body mass measurements based on bioelectrical impedance and the 3 DEXA scans. <br>red = fat, blue = lean body mass. (also note two y-axes are superimposed)</p>
</div>

<p><strong>BIA vs DEXA</strong>. Unfortunately, we can see that the BIA measurement provided by my scale disagrees with DEXA results by a lot. That said, I am also forced to interpret the DEXA scan with skepticism specifically for the lean body mass amount, which is <a href="https://www.bodyspec.com/blog/post/will_drinking_water_affect_my_scan">affected by hydration level</a>, with water showing up mostly as lean body mass. In particular, during my third measurement I was fasted and in ketosis. Hence my glycogen levels were low and I was less hydrated, which I believe showed up as a dramatic loss of muscle. That said, focusing on fat, both approaches show me losing body fat at roughly the same rate, though they are off by an absolute offset.</p>

<p><strong>BIA</strong>. An additional way to see that BIA is making stuff up is that it shows me losing lean body mass over time. I find this relatively unlikely because during the entire course of this experiment I exercised regularly and was able to monotonically increase my strength in terms of weight and reps for most exercises (e.g. bench press, pull ups, etc.). So that makes no sense either ¯\<em>(ツ)</em>/¯</p>

<div class="imgcap">
<img src="https://karpathy.github.io/assets/bio/dexa.png">
<p class="thecap">The raw numbers for my DEXA scans. I was allegedly losing fat. The lean tissue estimate is noisy due to hydration levels.</p>
</div>

<p><strong>Summary</strong> So there you have it. DEXA scans are severely affected by hydration (which is hard to control) and BIA is making stuff up entirely, so we don’t get to fully resolve the mystery of the slower-than-expected weight loss. But overall, maintaining an average deficit of 500kcal per day did lead to about 60% of the expected weight loss over the course of a year. More importantly, we studied the process by which our Sun’s free energy powers blog posts via a transformation of nuclear binding energy to electromagnetic radiation to heat. The photons power the fixing of carbon in CO2 and hydrogen in H2O into C-C/C-H rich organic molecules in plants, which we digest and break back down via a “slow” stepwise combustion in our cell’s cytosols and mitochondria, which “charges” some (ATP) molecular springs, which provide the “umph” that fires the neurons and moves the fingers. Also, any excess energy is stockpiled by the body as fat, so we need to intake less of it or “waste” some of it away on movement to discharge our primary battery and breathe out our weight. It’s been super fun to self-study these topics (which I skipped in high school), and I hope this post was an interesting intro to some of it. Okay great. I’ll now go eat some cookies, because yolo.</p>

<p><br><br>
<strong>(later edits)</strong></p>

<ul>
<li>discussion on <a href="https://news.ycombinator.com/item?id=23501021">hacker news</a></li>
<li>my original post used to be about twice as long due to a section of nutrition. Since the topic of <em>what</em> to each came up so often alongside <em>how much</em> to each I am including a quick TLDR on my final diet here, without the 5-page detail. In rough order of importance: Eat from 12-8pm only. Do not drink any calories (no soda, no alcohol, no juices, avoid milk). Avoid sugar like the plague, including carbohydrate-heavy foods that immediately break down to sugar (bread, rice, pasta, potatoes), including to a lesser extent natural sugar (apples, bananas, pears, etc - we’ve “weaponized” these fruits in the last few hundred years via strong artificial selection into <a href="https://www.sciencealert.com/fruits-vegetables-before-domestication-photos-genetically-modified-food-natural">actual candy bars</a>), berries are ~okay. Avoid processed food (follow Michael Pollan’s heuristic of only shopping on the outer walls of a grocery store, staying clear of its center). For meat stick mostly to fish and prefer chicken to beef/pork. For me the avoidance of beef/pork is 1) ethical - they are intelligent large animals, 2) environmental - they have a large environmental footprint (cows generate a lot of methane, a highly potent greenhouse gas) and their keeping leads to a lot of deforestation, 3) health related - a few papers point to some cause for concern in consumption of red meat, and 4) global health - a large fraction of the worst offender infectious diseases are zootopic and jumped to humans from close proximity to livestock.</li>
</ul>

+ 513
- 0
cache/2021/1cb1c46e0a1adcd0917179a214a16e0a/index.html View File

@@ -0,0 +1,513 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the <title>
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>DNA seen through the eyes of a coder (or, If you are a hammer, everything looks like a nail) (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://berthub.eu/articles/posts/amazing-dna/">

<body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">

<article>
<header>
<h1>DNA seen through the eyes of a coder (or, If you are a hammer, everything looks like a nail)</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="https://berthub.eu/articles/posts/amazing-dna/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<blockquote>
<p><strong>Updates:</strong>
8th of January 2021:
This article has been revised and updated, scientifically and in terms of dead links. Revision made by Tomás Simões (<a href="https://twitter.com/putadagravidade" target="_blank">@putadagravidade</a> / tomasprsimoes@gmail.com). Feel free to contact me if I made a mistake.</p>

<p>25th of August 2017:
This page has led to a two-hour presentation called <a href="https://berthub.eu/dna/" target="_blank">DNA: The code of Life</a> as presented at <a href="https://sha2017.org/" target="_blank">SHA 2017</a>. Includes slides and video and a <a href="https://berthub.eu/articles/posts/dna-the-code-of-life/" target="_blank">summarizing blogpost</a>. If you like this page, you’ll love the presentation.</p>
</blockquote>

<p>This is some rambling by a computer programmer about DNA. I’m not a molecular geneticist
(Update: 20 years after starting this post, I can fake it reasonably well.
This page was started somewhere in 2001, and it may need some more updating
here and there. Since 2001 I’ve learned a few things and I think I need to
revisit some parts of this page.)</p>

<p>If you spot mistakes, please contact me (<a href="https://twitter.com/PowerDNS_Bert" target="_blank">@PowerDNS_Bert</a> / bert@hubertnet.nl).</p>

<p>I’m not trying to force my view unto the DNA - each observation here is quite ‘uncramped’. To see where I got all this from, head to the Bibliography (end of the page).</p>

<h2 id="the-source-code">The source code</h2>

<p>Is <a href="ftp://ftp.ensembl.org/pub/current_genbank/homo_sapiens/" target="_blank">here</a>. This not a joke. We can wonder about the license though. Maybe we should ask the walking product of this source: <a href="https://www.theguardian.com/world/2002/apr/28/medicalscience.research" target="_blank">Craig Venter</a> (update: not quite true, it is mostly someone else). The source can be viewed via a wonderful set of perl scripts called <a href="http://www.ensembl.org/index.html" target="_blank">‘Ensembl’</a>. The human genome is about 3 gigabases long, which boils down to 750 megabytes. Depressingly enough, this is only 3.6 (update: used to be 2.8, apparently Firefox decreased in size, huh.) Mozilla browsers.</p>

<p>DNA is not like C source but more like byte-compiled code for a virtual machine called ‘the nucleus’. It is very doubtful that there is a source to this byte compilation - what you see is all you get.</p>

<p></p>

<p><center>
<figure>
<img src="/articles/amazing-dna/dna.jpg" alt="Illustration of a DNA molecule."> <figcaption>
<p>Illustration of a DNA molecule.</p>
</figcaption>
</figure></p>
<p></center></p>
<p>The language of DNA is digital, but not binary. Where binary encoding has 0 and 1 to work with (2 - hence the ‘bi’nary), DNA has 4 positions, T, C, G and A.</p>

<p>Whereas a digital byte is mostly 8 binary digits, a DNA ‘byte’ (called a ‘codon’) has three digits. Because each digit can have 4 values instead of 2, a DNA codon has 64 possible values, compared to a binary byte which has 256.</p>

<p>A typical example of a DNA codon is ‘GCC’, which encodes the amino acid Alanine. A larger number of these amino acids combined are called a ‘polypeptide’ or ‘protein’, and these are chemically active in making a living being.</p>

<p>See also <a href="https://www.nature.com/scitable/definition/codon-155/" target="_blank">https://www.nature.com/scitable/definition/codon-155/</a></p>

<h2 id="position-independent-code">Position Independent Code</h2>

<p><em>Dynamically linked libraries (.so under Unix, .dll on Windows) code cannot use static addresses internally because the code may appear in different places in memory in different situations. DNA has this too, where it is called ‘transposing code’:</em></p>

<p>Nearly half of the human genome is composed of transposable elements or jumping DNA. First recognized in the 1940s by Dr. Barbara McClintock in studies of peculiar inheritance patterns found in the colors of Indian corn, jumping DNA refers to the idea that some stretches of DNA are unstable and “transposable,” ie., they can move around – on and between chromosomes.</p>

<p><a href="https://www.nature.com/scitable/topicpage/transposons-the-jumping-genes-518/" target="_blank">https://www.nature.com/scitable/topicpage/transposons-the-jumping-genes-518/</a></p>

<h2 id="conditional-compilation">Conditional compilation</h2>

<p></p>

<p><center>
<figure>
<img src="/articles/amazing-dna/human_chrom.gif" alt="Illustration of human chromosomes."> <figcaption>
<p>Illustration of human chromosomes.</p>
</figcaption>
</figure></p>
<p></center></p>
<p>Of the 20,000 to 30,000 genes now thought to be in the human genome (update: <strong>quite</strong> <a href="https://bmcbiol.biomedcentral.com/articles/10.1186/s12915-018-0564-x#Sec5" target="_blank">debatable</a>), most cells express only a very small part - which makes sense, a liver cell has little need for the DNA code that makes neurons.</p>

<p>But as almost all cells carry around a full copy (‘distribution’) of the genome, a system is needed to #ifdef out stuff not needed. And that is just how it works. The genetic code is full of #if/#endif statements.</p>

<p>This is why ‘<a href="https://www.bhf.org.uk/informationsupport/heart-matters-magazine/research/breakthroughs-in-stem-cell-research" target="_blank">stem cells</a>’ are so hot right now - these cells have the ability to differentiate into everything. The code hasn’t been #ifdeffed out yet, so to speak.</p>

<p>Stated more exactly, stem cells do not have everything turned on - they are not at once liver cells and neurons. Cells can be likened to state machines, starting out as a stem cell. Over the lifetime of the cell, during which time it may clone (‘fork()’) many times, it specializes. Each specialization can be regarded as choosing a branch in a tree.</p>

<p>Each cell can make (or be induced to make) decisions about its future, which each make it more specialized. These decisions are persistent over cloning using transcription factors and by modifying the way DNA is stored spatially (‘steric effects’).</p>

<p>A liver cell, although it carries the genes to do so, will generally not be able to function as a skin cell. There are some indications out there that it is possible to ‘breed’ cells ‘upwards’ into the hierarchy, making them pluripotent. See also <a href="https://www.sciencedaily.com/releases/2002/01/020131074645.htm" target="_blank">this article</a>.</p>

<h2 id="epigenetics-imprinting-runtime-binary-patching">Epigenetics &amp; imprinting: runtime binary patching</h2>

<p>Although the actual relevant changes in the DNA of an organism rarely occur within a generation, substantial tinkering goes on by activating or deactivating parts of our genome, without altering the actual code.</p>

<p>This can be compared to the Linux kernel, which at boot time discovers what CPU it is running on, and actually disables parts of its binary code in case (for example) it is running on a single CPU system. This goes beyond something like if(numcpus &gt; 1), it is the actual nopping out of locking. Crucially, this nopping occurs in memory and not on the disk based image.</p>

<p>Similarly, as an embryo develops in the mother’s womb, its DNA is edited substantially to reduce its growth rate, and the size of the placenta. In such a way, the competing interests of the father (‘large strong children’) and the mother (‘survive pregnancy’) are balanced. Such ‘imprinting’ can only happen within the mother, since the father’s genome doesn’t know anything about the size of the mother.</p>

<p>Recently, it is also becoming clear that the metabolic status of the parents influences the <a href="https://en.wikipedia.org/wiki/Transgenerational_epigenetic_inheritance" target="_blank">chances of long life, cancer and diabetes in their grandchildren</a>. This also makes sense, as surviving in a food poor climate may require a different metabolic strategy than in one where food is abundantly available.</p>

<p>Mechanisms behind epigenetics and imprinting are ‘methylation’, which attaches methyl groups to DNA to ‘flip’ their activation status, but also histone modification, which can curl up DNA so it is not activated.</p>

<p>Some of these DNA edits are heritable and passed on to children, other forms may only impact one animal.</p>

<p>This field is still developing rapidly, and it may be that our DNA is much more dynamic than originally thought.</p>

<p></p>

<p><center>
<figure>
<img src="/articles/amazing-dna/intron.gif" alt="From genes to proteins."> <figcaption>
<p>From genes to proteins.</p>
</figcaption>
</figure></p>
<p></center></p>
<p>The genome is littered with old copies of genes and experiments that went wrong somewhere in the recent past - say, the last half a million years. This code is there but inactive. These are called the ‘pseudo genes’.</p>

<p>Furthermore, 97% of your DNA is commented out. DNA is linear and read from start to end. The parts that should not be decoded are marked very clearly, much like C comments. The 3% that is used directly form the so called ‘exons’. The comments, that come ‘in-between’ are called ‘introns’.</p>

<p>These comments are fascinating in their own right. Like C comments they have a start marker, like /*, and a stop marker, like */. But they have some more structure. Remember that DNA is like a tape - the comments need to be snipped out physically! The start of a comment is almost always indicated by the letters ‘GT’, which thus corresponds to /*, the end is signaled by ‘AG’, which is then like */.</p>

<p>However because of the snipping, some glue is needed to connect the code before the comment to the code after, which makes the comments more like html comments, which are longer: ‘&lt;!–’ signifies the start, ‘–&gt;’ the end.</p>

<p>So an actual stretch of DNA with exons and introns might look like this:</p>

<pre><code>ACTUAL CODE&lt;!-- blah blah blah blah ---- blah --&gt;ACTUAL CODE
| | | | | |
exon 1 donor intron 1 branch acceptor exon 2
(start of comment) (end of comment)
</code></pre>

<p>The start of the comment is clear, which is then followed by a lot of non-coding DNA. Somewhere very near the end of the comment there is a ‘branch site’, which indicates that the comment will end soon. Then some more comment follows, and then the actual terminator.</p>

<p>The actual cutting of the comments happens after the DNA has been transcribed into RNA and is performed by looping the comment and bringing the pieces of actual code close together. Then the RNA is cut at the ‘branch site’ near the end of the comment, after which the ‘donor’ (comment start) and ‘acceptor’ (comment end) are connected to each other.</p>

<p>Now, what are these comments good for? That discussion is part of a holy war that can rival the <a href="https://xkcd.com/378/" target="_blank">vi/emacs one</a>. When comparing different species, we know that some introns show fewer code changes than the neighboring exons. This suggests that the comments are doing something important.</p>

<p>There are lots of possible explanations for the massive amount of non-coding DNA - one of the most appealing (to a coder) has to do with ‘folding propensity’. DNA needs to be stored in a highly coiled form, but not all DNA codes lend themselves well to this.</p>

<p>This may remind you of <a href="https://www.redhill.net.au/d/10.php" target="_blank">RLL or MFM</a> coding. On a hard disk, a bit is encoded by a polarity transition or the lack thereof. A naive encoding would encode a 0 as ‘no transition’ and 1 as ‘a transition’.</p>

<p>Encoding 000000 is easy - just keep the magnetic phase unchanged for a few micrometers. However, when decoding, uncertainty creeps in - how many micrometers did we read? Does this correspond to 6 zeroes or 5? To prevent this problem, data is treated such that these long stretches of no transitions do not occur.</p>

<p>If we see ‘no transition,no transition,transition,transition’ on disk, we can be sure that this corresponds to ‘0011’ - it is exceedingly unlikely that our reading process is so imprecise that this might correspond to ‘00011’ or ‘00111’. So we need to insert spacers so as to prevent too little transitions. This is called ‘Run Length Limiting’ on magnetic media.</p>

<p>The thing to note is that sometimes, transitions need to be inserted to make sure that the data can be stored reliably. Introns may do much the same thing by making sure that the resulting code can be coiled properly.</p>

<p>However, this area of molecular biology is a minefield! Huge diatribes rage about variants with exciting names like ‘introns early’ or ‘introns late’, and massive words like ‘folding propensity’ and ‘stem-loop potential’. I think it best to let this discussion rage on a bit.</p>

<blockquote>
<p>2013 Update: ten years on, the debate still hasn’t settled! It is very clear that ‘Junk DNA’ is a misnomer, but as to its immediate function, there is no consensus. Check out Fighting about ENCODE and junk for a discussion of where we stand.</p>

<p>2021 Update: eighteen years on, the debate is nowhere close to being settled. It is now somewhat consensual that ‘Junk DNA’ has important and diverse functions, but new discoveries are being made on a daily basis. <a href="https://www.advancedsciencenews.com/that-junk-dna-is-full-of-information/" target="_blank">https://www.advancedsciencenews.com/that-junk-dna-is-full-of-information/</a></p>
</blockquote>

<h2 id="fork-and-fork-bombs-tumors">fork() and fork bombs (‘tumors’)</h2>

<p>Like with Unix, cells are not ‘spawned’ - they are forked. All cells started out from your ovum which has forked itself many times since. Like processes, both halves of the fork() are (mostly) identical to begin with, but they may from then on decide to do different things.</p>

<p>As with Unix, great problems arise when cells keep on forking. They quickly exhaust resources, sometimes leading to death. This is called a tumor. The cell is riddled with ‘ulimits’ and ‘watchdogs’ to prevent this sort of thing from happening. The number of divisions is limited by <a href="https://en.wikipedia.org/wiki/Telomere#Shortening" target="_blank">Telomere shortening</a>, for example.</p>

<p>A cell cannot clone unless very stringent conditions are met - a ‘<a href="https://www.openbsd.org/" target="_blank">secure by default</a>’ configuration. It is only when these safeguards fail that tumors can grow. Like with computer security, it is hard to strike a balance between security (‘no cells can divide’) and usability.</p>

<p>Compare this to the well known <a href="https://www.youtube.com/watch?v=eqvBaj8UYz4" target="_blank">Halting Problem</a>, first described by the founder of Computer Science, <a href="https://www.turing.org.uk/index.html" target="_blank">Alan Turing</a>. Perhaps it is as impossible to predict if a program will ever finish as it is to create a functional genome that cannot get cancer?</p>

<h2 id="mirroring-failover">Mirroring, failover</h2>

<p></p>

<p><center>
<figure>
<img src="/articles/amazing-dna/helix.gif" alt="Stretch of DNA."> <figcaption>
<p>Stretch of DNA.</p>
</figcaption>
</figure></p>
<p></center></p>
<p>Each DNA Helix is redundant in itself - you can see the genome as a twisted ladder whereby each spoke contains two bases - hence the word ‘base-pair’. If one of these bases is missing, it can be derived from the one on the other side. T always binds to A, C always to G. So, we can state that the genome is mirrored within the helix. ‘RAID-1’ so to speak.</p>

<p>Furthermore, there are two copies of each chromosome present - one from each parent, with the notable exception of the Y chromosome, which is only present in males. The actual details are complicated - but most genes are thus present twice. In case one is broken or unsuccessfully mutated, the other independent copy is still there. This is what we would normally call ‘failover’.</p>

<h2 id="cluttered-apis-dependency-hell">Cluttered APIs, dependency hell</h2>

<p>As proteins interact in the cell, they rely on each others’ characteristics. It has just been shown that <a href="https://www.nature.com/articles/srep44948" target="_blank">proteins that interact with a lot of other proteins cannot evolve</a>, or at least, only do so at a very slow rate.</p>

<p>They propose that this is because of great internal dependencies which inhibit the changing of the ‘contract’ of the protein. It is also noted that evolution does take place, but very slowly as both parts of the dependency need to evolve in a compatible way at the same time.</p>

<h2 id="viruses-worms">Viruses, worms</h2>

<p>Somebody recently proposed in a discussion that it would be really cool to hack the genome and compromise it so as to insert code that would copy itself to other genomes, using the host-body as its vehicle. ‘Just like the <a href="https://en.wikipedia.org/wiki/Nimda" target="_blank">nimda worm</a>!’</p>

<p><em>He shortly thereafter realized that this is exactly what biological viruses have been doing for millions of years. And they are exceedingly good at it.
A lot of these viruses have become a fixed part of our genome and hitch a ride with all of us. To do so, they have to hide from the virus scanner which tries to detect foreign code and prevent it from getting into the DNA.</em></p>

<h2 id="the-central-dogma-c-o-a-out-exe">The Central Dogma: .c -&gt; .o -&gt; a.out/.exe</h2>

<p>When scientists were still discovering the basics of genetics they were faced with lots of different chemicals but the correlation was unclear. When it became clear what comes from what it was hailed as a great triumph and called ‘The Central Dogma’.</p>

<p>This dogma tells us that DNA is used to make RNA and that RNA is used to make proteins, which is like saying that from a .c file comes a .o object file, which can be compiled into an executable (a.out/exe). It also tells us that this is the only order in which information flows.</p>

<p>Now, the Central Dogma has <a href="https://en.wikipedia.org/wiki/Central_dogma_of_molecular_biology#Transfers_of_information_not_explicitly_covered_in_the_theory" target="_blank">recently been tarnished</a> somewhat. Like any billion year old coding project, a lot of hacking has been going on, and sometimes information flows the other way. Sometimes RNA patches the DNA and at other times, the DNA is modified by proteines created earlier.</p>

<p>But generally, the dependencies are clear, so the Central Dogma remains important.</p>

<h2 id="binary-patching-aka-gene-therapy">Binary patching aka ‘Gene therapy’</h2>

<p></p>

<p><center>
<figure>
<img src="/articles/amazing-dna/genetherapy1big.gif">
</figure></p>
<p></center><p>
We can fiddle easily enough with DNA. There are companies to which you can send an ASCII file with DNA characters, and they will synthesize the corresponding ‘output’ for you. We can also splice DNA into developing animals and plants.</p>
<p></p><p>It is far harder to ‘patch the running executable’, as any programmer can attest. It is just like that with the genome. To change a running copy (‘a human’), you need to edit each and every relevant copy of the gene you want to patch.</p></p>
<p>For many years, medical science has tried to patch people with SCID, or ‘Severe Combined Immunodeficiency’, which is a very nasty disease which in effect disables the immune system - leading to very ill patients. It has been clear for quite a while now which letters in the DNA need to be fixed in order to cure these people.</p>

<p>Many attempts where made to patch running people, using viruses that insert new DNA into living organisms, but this proved to be very hard. The genome is guarded far too well for such a simple approach to work - cells guard their code <a href="https://www.zdnet.com/article/windows-xp-source-code-leaked-online-on-4chan-out-of-all-places/" target="_blank">better than Microsoft</a>!</p>

<p>However, recently the right virus was found which was able to breach the protection of the genome and fix the broken characters, leading to <a href="https://www.medicalnewstoday.com/articles/320018" target="_blank">apparently healthy people</a>.</p>

<h2 id="bug-regression">Bug Regression</h2>

<p>When fixing a bug in a computer program, we often introduce new bugs in the course of doing so. The genome is rife with this thing. A lot of African Americans are immune to Malaria but instead suffer from <a href="https://en.wikipedia.org/wiki/Sickle_cell_disease" target="_blank">sickle cell anemia</a>:
&gt;In tropical regions of the world where the parasite-borne disease malaria is prevalent, people with a single copy of a particular genetic mutation have a survival advantage.
(…)
While inheriting one copy of the mutation confers a benefit, inheriting two copies is a tragedy. Children born with two copies of the genetic mutation have sickle cell anemia, a painful disease that affects the red blood cells.
&gt;
&gt;<a href="https://books.google.pt/books?id=xBFNZCI3kd4C&amp;pg=RA3-PA17&amp;lpg=RA3-PA17&amp;dq=While+inheriting+one+copy+of+the+mutation+confers+a+benefit,+inheriting+two+copies+is+a+tragedy.+Children+born+with+two+copies+of+the+genetic+mutation&amp;source=bl&amp;ots=9LdQL5OKSx&amp;sig=ACfU3U13NQpobFuPP7fVuSf1E8ZO1eLhTA&amp;hl=pt-PT&amp;sa=X&amp;ved=2ahUKEwi1hZ6RlYvuAhVDxIUKHVvOCyoQ6AEwAHoECAEQAg#v=onepage&amp;q=While%20inheriting%20one%20copy%20of%20the%20mutation%20confers%20a%20benefit%2C%20inheriting%20two%20copies%20is%20a%20tragedy.%20Children%20born%20with%20two%20copies%20of%20the%20genetic%20mutation&amp;f=false" target="_blank">Link to quote</a></p>

<p>There are quite a few examples of this happening. See also the wonderful book <a href="https://www.amazon.com/exec/obidos/ASIN/0060932902" target="_blank">‘Genome’ by Matt Ridley.</a></p>

<p>Like computer storage, DNA (and its intermediate ‘RNA’) can get corrupted. To protect against common ‘single bit errors’, the encoding from individual DNA letters to proteins is degenerate. There are 4 RNA characters, U, C, G and A - in other words, a ‘byte’ is 2 bits long. Three characters correspond to an amino acid.</p>

<p></p>

<p><center>
<figure>
<img src="/articles/amazing-dna/nucleotides.jpg">
</figure></p>
<p></center></p>
<p>6 bits could conceivably map to 64 amino acids, yet there are only 20 in use. For example, UCU, UCC, UCA and UCG all encode for ‘Serine’, whereas only UGG maps to ‘Tryptophan’.
Now, it turns out that some likely ‘typos’ (UCU -&gt; UCC) in the encoding lead to an identical amino acid being expressed. For more about this fascinating phenomenon, read <a href="https://www.amazon.com/exec/obidos/ASIN/0465045669" target="_blank">‘Metamagical Themas’ by Douglas Hofstadter</a>.</p>

<p><a href="https://www.reddit.com/r/ProgrammerHumor/comments/a482un/the_base_code_is_sacred_and_cannot_be_questioned/" target="_blank">Some code is sacred</a>. We may not remember who wrote it, or why - we just know that it works. The guy who thought it up may have left the company already. Such code is not to be tinkered with.</p>

<p>DNA knows the concept of the ‘molecular clock’. Some parts of the genome are actively changing and some parts are sacrosanct. A good example of the latter are the Histone genes H3 and H4.</p>

<p>These genes are fundamental to the actual storage of the genome and are thus of paramount importance. Any failure in this code rapidly leads to a non-functioning organism.</p>

<p>So it is to be expected that this code isn’t tinkered with and that turns out the case. The H3 an H4 genes have a <em>zero</em> effective mutation rate in humans. But it goes far beyond that. You share almost the exact same code with anything from chickens to grass or molds.</p>

<table><tr><td></td><td>
RATES OF NUCLEOTIDE SUBSTITUTION PER SITE PER <b>1000 MILLION YEARS</b> BETWEEN
VARIOUS HUMAN AND RODENT PROTEINS-CODING GENES WITH DIVERGENCE SET AT
80 MILLION YEARS BASED ON FOSSIL EVIDENCE:<p>
</p><table border="1"><tr><td>gene</td><td>Number of codons</td><td>Effective rate</td>
</tr><tr><td>histone 3</td><td>135</td><td>0.00</td>
</tr><tr><td>histone 4</td><td>101</td><td>0.00</td>
</tr><tr><td>insulin</td><td>51</td><td>0.13</td>
</tr><tr><td>gamma interferon</td><td>136</td><td>2.79</td>
</tr></table>
</td><td></td></tr><tr><td></td>
<td>
<p>
<a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC117386/">Source</a>
</p></td></tr></table>

<p>Now, it does appear that there are two ways the genome can make sure that code does not mutate. The first way is described above: use amino acids that are highly degenerate and making sure that those typos that DO occur result in the same output.</p>

<p>Furthermore, genes can be copied earlier or later in the cell’s reproductive process, leading to more or less favorable copying conditions. Many more of such conditions apply.</p>

<p>It appears as if H3 and H4 were authored very carefully as they do have a lot of ‘synonymous changes’, which through the clever techniques described above do not lead to changes in the output.</p>

<h2 id="framing-errors-start-and-stop-bits">Framing errors: start and stop bits</h2>

<p><code>...0 0000 0001 0000 0010 0000 0011 0...</code></p>

<p>This clearly describes the 8 bit values 1, 2 and 3. The spaces I added make it clear where a byte starts and stops. Many serial devices employ stop and start bits to encode where you start reading. If we shift this sequence slightly:</p>

<p><code>...00 0000 0010 000 00100 000 00110 ...</code></p>

<p>It suddenly reads 2, 4, 6! To prevent this from happening in DNA there are elaborate signals that tell the cell where to start reading. Interestingly, there are pieces of genome that can be read from multiple starting points, and produce useful (but different) results either way. That is what I call a cool hack!</p>

<p>Each way a strand of DNA can be read is called an <a href="http://bioweb.uwlax.edu/GenWeb/Molecular/Seq_Anal/Translation/translation.html" target="_blank">Open Reading Frame</a> and there are generally 6, 3 each way.</p>

<h2 id="massive-multiprocessing-each-cell-is-a-universe">Massive multiprocessing: each cell is a universe</h2>

<p>Now, DNA is not like a computer programming language. It really isn’t. But there are some whopping analogies. We can view each cell as a CPU, running its own kernel. Each cell has a copy of the entire kernel, but choses to activate only the relevant parts. Which modules or drivers it loads, so to speak.</p>

<p></p>

<p><center>
<figure>
<img src="/articles/amazing-dna/cell.jpg" alt="A cell"> <figcaption>
<p>A cell</p>
</figcaption>
</figure></p>
<p></center></p>
<p>If a cell needs to do something (‘call a function’), it whips up the right piece of the genome and transcribes it into RNA. The RNA is then translated into a sequence of amino acids, which together make up a protein the DNA coded for. Now for the really cool bit :-)</p>

<p>This protein is tagged with a shipping address. This is a marker consisting of several amino acids which tell the rest of the cell where this protein needs to go. There is machinery which acts on these instructions, and delivers the protein, which is potentially on the outside of the cell.</p>

<p>The delivery instruction is then stripped off and several post processing steps may be performed, possibly activating the protein - which is good, because you may not want to transport an active protein through places where it should not do work.</p>

<h2 id="self-hosting-bootstrapping">Self hosting &amp; bootstrapping</h2>

<p>If we were to destroy all existing C compilers on the planet and leave only the code for one, we would be in great trouble. Yes, we have the C code to a C compiler, but we need a C compiler to compile it!</p>

<p>In actual fact, this was solved by not writing the first C compiler in C (duh), but in a language that was available already: B. See <a href="https://web.archive.org/web/20080113133738/cm.bell-labs.com/cm/cs/who/dmr/chist.html" target="_blank">here</a> for details about ‘bootstrapping’.</p>

<p>The same holds for the genome. To create a new ‘binary’ of a specimen, a <em>living</em> copy is required. The genome needs an elaborate toolchain in order to deliver a living thing. The code itself is impotent. This toolchain is commonly called ‘your parents’.</p>

<p>Update: Recently, it has become possible to ‘bootstrap’ life with very little actually living source material. The dictum “every cell comes from a cell” is becoming less true. See for example Mycoplasma laboratory.</p>

<p>It appears that RNA, which is an intermediate code between DNA and a protein, may have been the ‘B’ for DNA. Which begs the question where RNA came from. It is very interesting to note that extra-terrestrial objects often contain amino acids! See <a href="http://www.google.com/search?hl=en&amp;q=amino+acids+meteorites" target="_blank">http://www.google.com/search?hl=en&amp;q=amino+acids+meteorites</a></p>

<h2 id="the-makefile">The Makefile</h2>

<p></p>

<p><center>
<figure>
<img src="/articles/amazing-dna/homeobox.gif">
</figure></p>
<p></center><p>
Organisms typically start out as a single cell, which as said before contains two entire copies of the genome. The big tarfile so to speak, with all files extracted, ready to go. Now what?</p>
<p></p><p>Enter the Homeobox genes. Cells must be copied and assigned a purpose. The Homeobox genes start out by laying a ‘top to bottom’ dependency which reads ‘start with the head’. In order to make this happen, a chemical gradient is created by which cells can sense where they are, and decide if they need to do things useful for building a head, or for building a primordial notochord.</p></p>
<p>Only discovered in 1983, the <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2561923/" target="_blank">Homeobox genes</a> are a very exciting area of research right now. It is interesting to note that like a Makefile, ‘HOX’ genes only trigger things in other genes and don’t materially build things themselves.</p>

<p>The homeobox ‘syntax’ appears to be very ‘holy’ in the sense described above. What happens if you copy paste the ‘legs selector’ part of a mouse HOX gene into the fruit fly Homeobox:</p>

<blockquote>
<p>“In fact, when the mouse Hox-B6 gene is inserted in Drosophila, it can substitute for Antennapedia and produce legs in place of antennae”</p>

<p><a href="https://biology-pages.info/H/HomeoboxGenes.html" target="_blank">https://biology-pages.info/H/HomeoboxGenes.html</a></p>
</blockquote>

<p>The fruitfly and human genomes did not branch just millions of years ago but <strong>hundreds of millions of years ago</strong>. And you can copy paste parts (‘Selectors’ in the genetic language) of the Makefile and it still clicks. Please note that the ‘build a leg’ routine in a fruit fly is of course radically different from that in a mouse, but the ‘selector’ correctly triggers the right instructions.</p>

<h2 id="plugins-plasmids">Plugins: Plasmids</h2>

<p>All living organisms have DNA, sometimes organized into multiple chromosomes (‘libraries’), sometimes in only one, typically circular in that case. This goes for most bacteria. Next to this large main genome, such bacteria frequently also host ‘plasmids’: tiny circles of DNA with specific functions.</p>

<p>Such plasmids are somewhat portable between species, and through a variety of mechanisms they do indeed get transferred horizontally. By this way even non-identical bacteria can ‘learn’ antibiotic resistance from each other, for example.</p>

<p>Compared to the programming world, a plasmid is not voluntary, and is like LD_PRELOADing a .so or the equivalent on other platforms. And in fact, plasmids are frequently injected for research purposes. They can easily be injected in all kinds of bacteria, and immediately get to work.</p>

<p>Plasmids copy themselves independently from the main chromosome, and are thus a permanent fixture of bacteria. To make this happen, a plasmid features the magnificently named <strong>‘<a href="https://en.wikipedia.org/wiki/Origin_of_replication" target="_blank">Origin of Replication</a>‘</strong> gene which gets triggered when the cell wants to divide.</p>

<h2 id="further-reading">Further reading</h2>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0060932902" target="_blank">Genome</a> by Matt Ridley</strong></p>

<p>An amazing account of an effect each chromosome has on our lives. Very readable yet strict in not ‘dumbing down’ the theory. Contains an impressive set of references.
Source of many of the more impressive examples found on this page.
And to help Matt along in the quest he clearly sets out in his book, I would like to state quite clearly:
<strong>Genes are not there to cause diseases</strong></p>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0471330612" target="_blank">Human Molecular Genetics, second edition</a> by Tom Strachan and Andrew P. Read</strong></p>

<p>Neatly fills the gap between ‘primary literature’ (ie, peer reviewed academic magazines and papers) and introductory textbooks. I’m literally dragging myself through this book, constantly looking things up in order to understand everything. If you really want to know the details about introns, exons, RNA in all its variants, how genes cause and prevent diseases, this is the book.</p>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0192860925" target="_blank">The Selfish Gene</a> by Richard Dawkins</strong></p>

<p><a href="https://en.wikipedia.org/wiki/Richard_Dawkins" target="_blank">Richard Dawkins</a> is the <a href="https://en.wikipedia.org/wiki/W._Richard_Stevens" target="_blank">Richard Stevens</a> of evolution theory. Both have contributed practical work but are most famous for their crystal clear expositions of existing theory, opening up the world they describe to an audience of millions.</p>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0393315703" target="_blank">The Blind Watchmaker : Why the Evidence of Evolution Reveals a Universe Without Design</a> by Richard Dawkins</strong></p>

<p>Again a book by Dawkins. More about evolution than about genes but clearly explains how evolution can be responsible for the intricate design found in many living things.
Again very readable and fascinating on every level.</p>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0465045669" target="_blank">Metamagical Themas</a> by Douglas Hofstadter</strong></p>

<p>This is an ‘idea’ book. It is filled to the brim with ideas, they simply ooze out of the pages. Many of these ideas are about information theory, genetics, life, intelligence, music, mathematics and people.
Clearly not a genetic textbook but has been influential in imbuing enthusiasm for all things genetic in many people. Can often be found dirt cheap in second hand bookstores.
Recommended.</p>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="/david/log/" title="Accès au flux RSS">🤖</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
<abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend>Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 371
- 0
cache/2021/1cb1c46e0a1adcd0917179a214a16e0a/index.md View File

@@ -0,0 +1,371 @@
title: DNA seen through the eyes of a coder (or, If you are a hammer, everything looks like a nail)
url: https://berthub.eu/articles/posts/amazing-dna/
hash_url: 1cb1c46e0a1adcd0917179a214a16e0a

<blockquote>
<p><strong>Updates:</strong>
8th of January 2021:
This article has been revised and updated, scientifically and in terms of dead links. Revision made by Tomás Simões (<a href="https://twitter.com/putadagravidade" target="_blank">@putadagravidade</a> / tomasprsimoes@gmail.com). Feel free to contact me if I made a mistake.</p>

<p>25th of August 2017:
This page has led to a two-hour presentation called <a href="https://berthub.eu/dna/" target="_blank">DNA: The code of Life</a> as presented at <a href="https://sha2017.org/" target="_blank">SHA 2017</a>. Includes slides and video and a <a href="https://berthub.eu/articles/posts/dna-the-code-of-life/" target="_blank">summarizing blogpost</a>. If you like this page, you’ll love the presentation.</p>
</blockquote>

<p>This is some rambling by a computer programmer about DNA. I’m not a molecular geneticist
(Update: 20 years after starting this post, I can fake it reasonably well.
This page was started somewhere in 2001, and it may need some more updating
here and there. Since 2001 I’ve learned a few things and I think I need to
revisit some parts of this page.)</p>

<p>If you spot mistakes, please contact me (<a href="https://twitter.com/PowerDNS_Bert" target="_blank">@PowerDNS_Bert</a> / bert@hubertnet.nl).</p>

<p>I’m not trying to force my view unto the DNA - each observation here is quite ‘uncramped’. To see where I got all this from, head to the Bibliography (end of the page).</p>

<h2 id="the-source-code">The source code</h2>

<p>Is <a href="ftp://ftp.ensembl.org/pub/current_genbank/homo_sapiens/" target="_blank">here</a>. This not a joke. We can wonder about the license though. Maybe we should ask the walking product of this source: <a href="https://www.theguardian.com/world/2002/apr/28/medicalscience.research" target="_blank">Craig Venter</a> (update: not quite true, it is mostly someone else). The source can be viewed via a wonderful set of perl scripts called <a href="http://www.ensembl.org/index.html" target="_blank">‘Ensembl’</a>. The human genome is about 3 gigabases long, which boils down to 750 megabytes. Depressingly enough, this is only 3.6 (update: used to be 2.8, apparently Firefox decreased in size, huh.) Mozilla browsers.</p>

<p>DNA is not like C source but more like byte-compiled code for a virtual machine called ‘the nucleus’. It is very doubtful that there is a source to this byte compilation - what you see is all you get.</p>

<p></p><center>
<figure>
<img src="/articles/amazing-dna/dna.jpg" alt="Illustration of a DNA molecule."> <figcaption>
<p>Illustration of a DNA molecule.</p>
</figcaption>
</figure>

</center>

<p>The language of DNA is digital, but not binary. Where binary encoding has 0 and 1 to work with (2 - hence the ‘bi’nary), DNA has 4 positions, T, C, G and A.</p>

<p>Whereas a digital byte is mostly 8 binary digits, a DNA ‘byte’ (called a ‘codon’) has three digits. Because each digit can have 4 values instead of 2, a DNA codon has 64 possible values, compared to a binary byte which has 256.</p>

<p>A typical example of a DNA codon is ‘GCC’, which encodes the amino acid Alanine. A larger number of these amino acids combined are called a ‘polypeptide’ or ‘protein’, and these are chemically active in making a living being.</p>

<p>See also <a href="https://www.nature.com/scitable/definition/codon-155/" target="_blank">https://www.nature.com/scitable/definition/codon-155/</a></p>

<h2 id="position-independent-code">Position Independent Code</h2>

<p><em>Dynamically linked libraries (.so under Unix, .dll on Windows) code cannot use static addresses internally because the code may appear in different places in memory in different situations. DNA has this too, where it is called ‘transposing code’:</em></p>

<p>Nearly half of the human genome is composed of transposable elements or jumping DNA. First recognized in the 1940s by Dr. Barbara McClintock in studies of peculiar inheritance patterns found in the colors of Indian corn, jumping DNA refers to the idea that some stretches of DNA are unstable and “transposable,” ie., they can move around – on and between chromosomes.</p>

<p><a href="https://www.nature.com/scitable/topicpage/transposons-the-jumping-genes-518/" target="_blank">https://www.nature.com/scitable/topicpage/transposons-the-jumping-genes-518/</a></p>

<h2 id="conditional-compilation">Conditional compilation</h2>

<p></p><center>
<figure>
<img src="/articles/amazing-dna/human_chrom.gif" alt="Illustration of human chromosomes."> <figcaption>
<p>Illustration of human chromosomes.</p>
</figcaption>
</figure>

</center>

<p>Of the 20,000 to 30,000 genes now thought to be in the human genome (update: <strong>quite</strong> <a href="https://bmcbiol.biomedcentral.com/articles/10.1186/s12915-018-0564-x#Sec5" target="_blank">debatable</a>), most cells express only a very small part - which makes sense, a liver cell has little need for the DNA code that makes neurons.</p>

<p>But as almost all cells carry around a full copy (‘distribution’) of the genome, a system is needed to #ifdef out stuff not needed. And that is just how it works. The genetic code is full of #if/#endif statements.</p>

<p>This is why ‘<a href="https://www.bhf.org.uk/informationsupport/heart-matters-magazine/research/breakthroughs-in-stem-cell-research" target="_blank">stem cells</a>’ are so hot right now - these cells have the ability to differentiate into everything. The code hasn’t been #ifdeffed out yet, so to speak.</p>

<p>Stated more exactly, stem cells do not have everything turned on - they are not at once liver cells and neurons. Cells can be likened to state machines, starting out as a stem cell. Over the lifetime of the cell, during which time it may clone (‘fork()’) many times, it specializes. Each specialization can be regarded as choosing a branch in a tree.</p>

<p>Each cell can make (or be induced to make) decisions about its future, which each make it more specialized. These decisions are persistent over cloning using transcription factors and by modifying the way DNA is stored spatially (‘steric effects’).</p>

<p>A liver cell, although it carries the genes to do so, will generally not be able to function as a skin cell. There are some indications out there that it is possible to ‘breed’ cells ‘upwards’ into the hierarchy, making them pluripotent. See also <a href="https://www.sciencedaily.com/releases/2002/01/020131074645.htm" target="_blank">this article</a>.</p>

<h2 id="epigenetics-imprinting-runtime-binary-patching">Epigenetics &amp; imprinting: runtime binary patching</h2>

<p>Although the actual relevant changes in the DNA of an organism rarely occur within a generation, substantial tinkering goes on by activating or deactivating parts of our genome, without altering the actual code.</p>

<p>This can be compared to the Linux kernel, which at boot time discovers what CPU it is running on, and actually disables parts of its binary code in case (for example) it is running on a single CPU system. This goes beyond something like if(numcpus &gt; 1), it is the actual nopping out of locking. Crucially, this nopping occurs in memory and not on the disk based image.</p>

<p>Similarly, as an embryo develops in the mother’s womb, its DNA is edited substantially to reduce its growth rate, and the size of the placenta. In such a way, the competing interests of the father (‘large strong children’) and the mother (‘survive pregnancy’) are balanced. Such ‘imprinting’ can only happen within the mother, since the father’s genome doesn’t know anything about the size of the mother.</p>

<p>Recently, it is also becoming clear that the metabolic status of the parents influences the <a href="https://en.wikipedia.org/wiki/Transgenerational_epigenetic_inheritance" target="_blank">chances of long life, cancer and diabetes in their grandchildren</a>. This also makes sense, as surviving in a food poor climate may require a different metabolic strategy than in one where food is abundantly available.</p>

<p>Mechanisms behind epigenetics and imprinting are ‘methylation’, which attaches methyl groups to DNA to ‘flip’ their activation status, but also histone modification, which can curl up DNA so it is not activated.</p>

<p>Some of these DNA edits are heritable and passed on to children, other forms may only impact one animal.</p>

<p>This field is still developing rapidly, and it may be that our DNA is much more dynamic than originally thought.</p>



<p></p><center>
<figure>
<img src="/articles/amazing-dna/intron.gif" alt="From genes to proteins."> <figcaption>
<p>From genes to proteins.</p>
</figcaption>
</figure>

</center>

<p>The genome is littered with old copies of genes and experiments that went wrong somewhere in the recent past - say, the last half a million years. This code is there but inactive. These are called the ‘pseudo genes’.</p>

<p>Furthermore, 97% of your DNA is commented out. DNA is linear and read from start to end. The parts that should not be decoded are marked very clearly, much like C comments. The 3% that is used directly form the so called ‘exons’. The comments, that come ‘in-between’ are called ‘introns’.</p>

<p>These comments are fascinating in their own right. Like C comments they have a start marker, like /*, and a stop marker, like */. But they have some more structure. Remember that DNA is like a tape - the comments need to be snipped out physically! The start of a comment is almost always indicated by the letters ‘GT’, which thus corresponds to /*, the end is signaled by ‘AG’, which is then like */.</p>

<p>However because of the snipping, some glue is needed to connect the code before the comment to the code after, which makes the comments more like html comments, which are longer: ‘&lt;!–’ signifies the start, ‘–&gt;’ the end.</p>

<p>So an actual stretch of DNA with exons and introns might look like this:</p>

<pre><code>ACTUAL CODE&lt;!-- blah blah blah blah ---- blah --&gt;ACTUAL CODE
| | | | | |
exon 1 donor intron 1 branch acceptor exon 2
(start of comment) (end of comment)
</code></pre>

<p>The start of the comment is clear, which is then followed by a lot of non-coding DNA. Somewhere very near the end of the comment there is a ‘branch site’, which indicates that the comment will end soon. Then some more comment follows, and then the actual terminator.</p>

<p>The actual cutting of the comments happens after the DNA has been transcribed into RNA and is performed by looping the comment and bringing the pieces of actual code close together. Then the RNA is cut at the ‘branch site’ near the end of the comment, after which the ‘donor’ (comment start) and ‘acceptor’ (comment end) are connected to each other.</p>

<p>Now, what are these comments good for? That discussion is part of a holy war that can rival the <a href="https://xkcd.com/378/" target="_blank">vi/emacs one</a>. When comparing different species, we know that some introns show fewer code changes than the neighboring exons. This suggests that the comments are doing something important.</p>

<p>There are lots of possible explanations for the massive amount of non-coding DNA - one of the most appealing (to a coder) has to do with ‘folding propensity’. DNA needs to be stored in a highly coiled form, but not all DNA codes lend themselves well to this.</p>

<p>This may remind you of <a href="https://www.redhill.net.au/d/10.php" target="_blank">RLL or MFM</a> coding. On a hard disk, a bit is encoded by a polarity transition or the lack thereof. A naive encoding would encode a 0 as ‘no transition’ and 1 as ‘a transition’.</p>

<p>Encoding 000000 is easy - just keep the magnetic phase unchanged for a few micrometers. However, when decoding, uncertainty creeps in - how many micrometers did we read? Does this correspond to 6 zeroes or 5? To prevent this problem, data is treated such that these long stretches of no transitions do not occur.</p>

<p>If we see ‘no transition,no transition,transition,transition’ on disk, we can be sure that this corresponds to ‘0011’ - it is exceedingly unlikely that our reading process is so imprecise that this might correspond to ‘00011’ or ‘00111’. So we need to insert spacers so as to prevent too little transitions. This is called ‘Run Length Limiting’ on magnetic media.</p>

<p>The thing to note is that sometimes, transitions need to be inserted to make sure that the data can be stored reliably. Introns may do much the same thing by making sure that the resulting code can be coiled properly.</p>

<p>However, this area of molecular biology is a minefield! Huge diatribes rage about variants with exciting names like ‘introns early’ or ‘introns late’, and massive words like ‘folding propensity’ and ‘stem-loop potential’. I think it best to let this discussion rage on a bit.</p>

<blockquote>
<p>2013 Update: ten years on, the debate still hasn’t settled! It is very clear that ‘Junk DNA’ is a misnomer, but as to its immediate function, there is no consensus. Check out Fighting about ENCODE and junk for a discussion of where we stand.</p>

<p>2021 Update: eighteen years on, the debate is nowhere close to being settled. It is now somewhat consensual that ‘Junk DNA’ has important and diverse functions, but new discoveries are being made on a daily basis. <a href="https://www.advancedsciencenews.com/that-junk-dna-is-full-of-information/" target="_blank">https://www.advancedsciencenews.com/that-junk-dna-is-full-of-information/</a></p>
</blockquote>

<h2 id="fork-and-fork-bombs-tumors">fork() and fork bombs (‘tumors’)</h2>

<p>Like with Unix, cells are not ‘spawned’ - they are forked. All cells started out from your ovum which has forked itself many times since. Like processes, both halves of the fork() are (mostly) identical to begin with, but they may from then on decide to do different things.</p>

<p>As with Unix, great problems arise when cells keep on forking. They quickly exhaust resources, sometimes leading to death. This is called a tumor. The cell is riddled with ‘ulimits’ and ‘watchdogs’ to prevent this sort of thing from happening. The number of divisions is limited by <a href="https://en.wikipedia.org/wiki/Telomere#Shortening" target="_blank">Telomere shortening</a>, for example.</p>

<p>A cell cannot clone unless very stringent conditions are met - a ‘<a href="https://www.openbsd.org/" target="_blank">secure by default</a>’ configuration. It is only when these safeguards fail that tumors can grow. Like with computer security, it is hard to strike a balance between security (‘no cells can divide’) and usability.</p>

<p>Compare this to the well known <a href="https://www.youtube.com/watch?v=eqvBaj8UYz4" target="_blank">Halting Problem</a>, first described by the founder of Computer Science, <a href="https://www.turing.org.uk/index.html" target="_blank">Alan Turing</a>. Perhaps it is as impossible to predict if a program will ever finish as it is to create a functional genome that cannot get cancer?</p>

<h2 id="mirroring-failover">Mirroring, failover</h2>

<p></p><center>
<figure>
<img src="/articles/amazing-dna/helix.gif" alt="Stretch of DNA."> <figcaption>
<p>Stretch of DNA.</p>
</figcaption>
</figure>

</center>

<p>Each DNA Helix is redundant in itself - you can see the genome as a twisted ladder whereby each spoke contains two bases - hence the word ‘base-pair’. If one of these bases is missing, it can be derived from the one on the other side. T always binds to A, C always to G. So, we can state that the genome is mirrored within the helix. ‘RAID-1’ so to speak.</p>

<p>Furthermore, there are two copies of each chromosome present - one from each parent, with the notable exception of the Y chromosome, which is only present in males. The actual details are complicated - but most genes are thus present twice. In case one is broken or unsuccessfully mutated, the other independent copy is still there. This is what we would normally call ‘failover’.</p>

<h2 id="cluttered-apis-dependency-hell">Cluttered APIs, dependency hell</h2>

<p>As proteins interact in the cell, they rely on each others’ characteristics. It has just been shown that <a href="https://www.nature.com/articles/srep44948" target="_blank">proteins that interact with a lot of other proteins cannot evolve</a>, or at least, only do so at a very slow rate.</p>

<p>They propose that this is because of great internal dependencies which inhibit the changing of the ‘contract’ of the protein. It is also noted that evolution does take place, but very slowly as both parts of the dependency need to evolve in a compatible way at the same time.</p>

<h2 id="viruses-worms">Viruses, worms</h2>

<p>Somebody recently proposed in a discussion that it would be really cool to hack the genome and compromise it so as to insert code that would copy itself to other genomes, using the host-body as its vehicle. ‘Just like the <a href="https://en.wikipedia.org/wiki/Nimda" target="_blank">nimda worm</a>!’</p>

<p><em>He shortly thereafter realized that this is exactly what biological viruses have been doing for millions of years. And they are exceedingly good at it.
A lot of these viruses have become a fixed part of our genome and hitch a ride with all of us. To do so, they have to hide from the virus scanner which tries to detect foreign code and prevent it from getting into the DNA.</em></p>

<h2 id="the-central-dogma-c-o-a-out-exe">The Central Dogma: .c -&gt; .o -&gt; a.out/.exe</h2>

<p>When scientists were still discovering the basics of genetics they were faced with lots of different chemicals but the correlation was unclear. When it became clear what comes from what it was hailed as a great triumph and called ‘The Central Dogma’.</p>

<p>This dogma tells us that DNA is used to make RNA and that RNA is used to make proteins, which is like saying that from a .c file comes a .o object file, which can be compiled into an executable (a.out/exe). It also tells us that this is the only order in which information flows.</p>

<p>Now, the Central Dogma has <a href="https://en.wikipedia.org/wiki/Central_dogma_of_molecular_biology#Transfers_of_information_not_explicitly_covered_in_the_theory" target="_blank">recently been tarnished</a> somewhat. Like any billion year old coding project, a lot of hacking has been going on, and sometimes information flows the other way. Sometimes RNA patches the DNA and at other times, the DNA is modified by proteines created earlier.</p>

<p>But generally, the dependencies are clear, so the Central Dogma remains important.</p>

<h2 id="binary-patching-aka-gene-therapy">Binary patching aka ‘Gene therapy’</h2>

<p></p><center>
<figure>
<img src="/articles/amazing-dna/genetherapy1big.gif">
</figure>

</center><p>
We can fiddle easily enough with DNA. There are companies to which you can send an ASCII file with DNA characters, and they will synthesize the corresponding ‘output’ for you. We can also splice DNA into developing animals and plants.

</p><p>It is far harder to ‘patch the running executable’, as any programmer can attest. It is just like that with the genome. To change a running copy (‘a human’), you need to edit each and every relevant copy of the gene you want to patch.</p>

<p>For many years, medical science has tried to patch people with SCID, or ‘Severe Combined Immunodeficiency’, which is a very nasty disease which in effect disables the immune system - leading to very ill patients. It has been clear for quite a while now which letters in the DNA need to be fixed in order to cure these people.</p>

<p>Many attempts where made to patch running people, using viruses that insert new DNA into living organisms, but this proved to be very hard. The genome is guarded far too well for such a simple approach to work - cells guard their code <a href="https://www.zdnet.com/article/windows-xp-source-code-leaked-online-on-4chan-out-of-all-places/" target="_blank">better than Microsoft</a>!</p>

<p>However, recently the right virus was found which was able to breach the protection of the genome and fix the broken characters, leading to <a href="https://www.medicalnewstoday.com/articles/320018" target="_blank">apparently healthy people</a>.</p>

<h2 id="bug-regression">Bug Regression</h2>

<p>When fixing a bug in a computer program, we often introduce new bugs in the course of doing so. The genome is rife with this thing. A lot of African Americans are immune to Malaria but instead suffer from <a href="https://en.wikipedia.org/wiki/Sickle_cell_disease" target="_blank">sickle cell anemia</a>:
&gt;In tropical regions of the world where the parasite-borne disease malaria is prevalent, people with a single copy of a particular genetic mutation have a survival advantage.
(…)
While inheriting one copy of the mutation confers a benefit, inheriting two copies is a tragedy. Children born with two copies of the genetic mutation have sickle cell anemia, a painful disease that affects the red blood cells.
&gt;
&gt;<a href="https://books.google.pt/books?id=xBFNZCI3kd4C&amp;pg=RA3-PA17&amp;lpg=RA3-PA17&amp;dq=While+inheriting+one+copy+of+the+mutation+confers+a+benefit,+inheriting+two+copies+is+a+tragedy.+Children+born+with+two+copies+of+the+genetic+mutation&amp;source=bl&amp;ots=9LdQL5OKSx&amp;sig=ACfU3U13NQpobFuPP7fVuSf1E8ZO1eLhTA&amp;hl=pt-PT&amp;sa=X&amp;ved=2ahUKEwi1hZ6RlYvuAhVDxIUKHVvOCyoQ6AEwAHoECAEQAg#v=onepage&amp;q=While%20inheriting%20one%20copy%20of%20the%20mutation%20confers%20a%20benefit%2C%20inheriting%20two%20copies%20is%20a%20tragedy.%20Children%20born%20with%20two%20copies%20of%20the%20genetic%20mutation&amp;f=false" target="_blank">Link to quote</a></p>

<p>There are quite a few examples of this happening. See also the wonderful book <a href="https://www.amazon.com/exec/obidos/ASIN/0060932902" target="_blank">‘Genome’ by Matt Ridley.</a></p>



<p>Like computer storage, DNA (and its intermediate ‘RNA’) can get corrupted. To protect against common ‘single bit errors’, the encoding from individual DNA letters to proteins is degenerate. There are 4 RNA characters, U, C, G and A - in other words, a ‘byte’ is 2 bits long. Three characters correspond to an amino acid.</p>

<p></p><center>
<figure>
<img src="/articles/amazing-dna/nucleotides.jpg">
</figure>

</center>

<p>6 bits could conceivably map to 64 amino acids, yet there are only 20 in use. For example, UCU, UCC, UCA and UCG all encode for ‘Serine’, whereas only UGG maps to ‘Tryptophan’.
Now, it turns out that some likely ‘typos’ (UCU -&gt; UCC) in the encoding lead to an identical amino acid being expressed. For more about this fascinating phenomenon, read <a href="https://www.amazon.com/exec/obidos/ASIN/0465045669" target="_blank">‘Metamagical Themas’ by Douglas Hofstadter</a>.</p>



<p><a href="https://www.reddit.com/r/ProgrammerHumor/comments/a482un/the_base_code_is_sacred_and_cannot_be_questioned/" target="_blank">Some code is sacred</a>. We may not remember who wrote it, or why - we just know that it works. The guy who thought it up may have left the company already. Such code is not to be tinkered with.</p>

<p>DNA knows the concept of the ‘molecular clock’. Some parts of the genome are actively changing and some parts are sacrosanct. A good example of the latter are the Histone genes H3 and H4.</p>

<p>These genes are fundamental to the actual storage of the genome and are thus of paramount importance. Any failure in this code rapidly leads to a non-functioning organism.</p>

<p>So it is to be expected that this code isn’t tinkered with and that turns out the case. The H3 an H4 genes have a <em>zero</em> effective mutation rate in humans. But it goes far beyond that. You share almost the exact same code with anything from chickens to grass or molds.</p>

<table><tr><td></td><td>
RATES OF NUCLEOTIDE SUBSTITUTION PER SITE PER <b>1000 MILLION YEARS</b> BETWEEN
VARIOUS HUMAN AND RODENT PROTEINS-CODING GENES WITH DIVERGENCE SET AT
80 MILLION YEARS BASED ON FOSSIL EVIDENCE:<p>
</p><table border="1"><tr><td>gene</td><td>Number of codons</td><td>Effective rate</td>
</tr><tr><td>histone 3</td><td>135</td><td>0.00</td>
</tr><tr><td>histone 4</td><td>101</td><td>0.00</td>
</tr><tr><td>insulin</td><td>51</td><td>0.13</td>
</tr><tr><td>gamma interferon</td><td>136</td><td>2.79</td>
</tr></table>
</td><td></td></tr><tr><td></td>
<td>
<p>
<a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC117386/">Source</a>
</p></td></tr></table>

<p>Now, it does appear that there are two ways the genome can make sure that code does not mutate. The first way is described above: use amino acids that are highly degenerate and making sure that those typos that DO occur result in the same output.</p>

<p>Furthermore, genes can be copied earlier or later in the cell’s reproductive process, leading to more or less favorable copying conditions. Many more of such conditions apply.</p>

<p>It appears as if H3 and H4 were authored very carefully as they do have a lot of ‘synonymous changes’, which through the clever techniques described above do not lead to changes in the output.</p>

<h2 id="framing-errors-start-and-stop-bits">Framing errors: start and stop bits</h2>

<p><code>...0 0000 0001 0000 0010 0000 0011 0...</code></p>

<p>This clearly describes the 8 bit values 1, 2 and 3. The spaces I added make it clear where a byte starts and stops. Many serial devices employ stop and start bits to encode where you start reading. If we shift this sequence slightly:</p>

<p><code>...00 0000 0010 000 00100 000 00110 ...</code></p>

<p>It suddenly reads 2, 4, 6! To prevent this from happening in DNA there are elaborate signals that tell the cell where to start reading. Interestingly, there are pieces of genome that can be read from multiple starting points, and produce useful (but different) results either way. That is what I call a cool hack!</p>

<p>Each way a strand of DNA can be read is called an <a href="http://bioweb.uwlax.edu/GenWeb/Molecular/Seq_Anal/Translation/translation.html" target="_blank">Open Reading Frame</a> and there are generally 6, 3 each way.</p>

<h2 id="massive-multiprocessing-each-cell-is-a-universe">Massive multiprocessing: each cell is a universe</h2>

<p>Now, DNA is not like a computer programming language. It really isn’t. But there are some whopping analogies. We can view each cell as a CPU, running its own kernel. Each cell has a copy of the entire kernel, but choses to activate only the relevant parts. Which modules or drivers it loads, so to speak.</p>

<p></p><center>
<figure>
<img src="/articles/amazing-dna/cell.jpg" alt="A cell"> <figcaption>
<p>A cell</p>
</figcaption>
</figure>

</center>

<p>If a cell needs to do something (‘call a function’), it whips up the right piece of the genome and transcribes it into RNA. The RNA is then translated into a sequence of amino acids, which together make up a protein the DNA coded for. Now for the really cool bit :-)</p>

<p>This protein is tagged with a shipping address. This is a marker consisting of several amino acids which tell the rest of the cell where this protein needs to go. There is machinery which acts on these instructions, and delivers the protein, which is potentially on the outside of the cell.</p>

<p>The delivery instruction is then stripped off and several post processing steps may be performed, possibly activating the protein - which is good, because you may not want to transport an active protein through places where it should not do work.</p>

<h2 id="self-hosting-bootstrapping">Self hosting &amp; bootstrapping</h2>

<p>If we were to destroy all existing C compilers on the planet and leave only the code for one, we would be in great trouble. Yes, we have the C code to a C compiler, but we need a C compiler to compile it!</p>

<p>In actual fact, this was solved by not writing the first C compiler in C (duh), but in a language that was available already: B. See <a href="https://web.archive.org/web/20080113133738/cm.bell-labs.com/cm/cs/who/dmr/chist.html" target="_blank">here</a> for details about ‘bootstrapping’.</p>

<p>The same holds for the genome. To create a new ‘binary’ of a specimen, a <em>living</em> copy is required. The genome needs an elaborate toolchain in order to deliver a living thing. The code itself is impotent. This toolchain is commonly called ‘your parents’.</p>

<p>Update: Recently, it has become possible to ‘bootstrap’ life with very little actually living source material. The dictum “every cell comes from a cell” is becoming less true. See for example Mycoplasma laboratory.</p>

<p>It appears that RNA, which is an intermediate code between DNA and a protein, may have been the ‘B’ for DNA. Which begs the question where RNA came from. It is very interesting to note that extra-terrestrial objects often contain amino acids! See <a href="http://www.google.com/search?hl=en&amp;q=amino+acids+meteorites" target="_blank">http://www.google.com/search?hl=en&amp;q=amino+acids+meteorites</a></p>

<h2 id="the-makefile">The Makefile</h2>

<p></p><center>
<figure>
<img src="/articles/amazing-dna/homeobox.gif">
</figure>

</center><p>
Organisms typically start out as a single cell, which as said before contains two entire copies of the genome. The big tarfile so to speak, with all files extracted, ready to go. Now what?

</p><p>Enter the Homeobox genes. Cells must be copied and assigned a purpose. The Homeobox genes start out by laying a ‘top to bottom’ dependency which reads ‘start with the head’. In order to make this happen, a chemical gradient is created by which cells can sense where they are, and decide if they need to do things useful for building a head, or for building a primordial notochord.</p>

<p>Only discovered in 1983, the <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2561923/" target="_blank">Homeobox genes</a> are a very exciting area of research right now. It is interesting to note that like a Makefile, ‘HOX’ genes only trigger things in other genes and don’t materially build things themselves.</p>

<p>The homeobox ‘syntax’ appears to be very ‘holy’ in the sense described above. What happens if you copy paste the ‘legs selector’ part of a mouse HOX gene into the fruit fly Homeobox:</p>

<blockquote>
<p>“In fact, when the mouse Hox-B6 gene is inserted in Drosophila, it can substitute for Antennapedia and produce legs in place of antennae”</p>

<p><a href="https://biology-pages.info/H/HomeoboxGenes.html" target="_blank">https://biology-pages.info/H/HomeoboxGenes.html</a></p>
</blockquote>

<p>The fruitfly and human genomes did not branch just millions of years ago but <strong>hundreds of millions of years ago</strong>. And you can copy paste parts (‘Selectors’ in the genetic language) of the Makefile and it still clicks. Please note that the ‘build a leg’ routine in a fruit fly is of course radically different from that in a mouse, but the ‘selector’ correctly triggers the right instructions.</p>

<h2 id="plugins-plasmids">Plugins: Plasmids</h2>

<p>All living organisms have DNA, sometimes organized into multiple chromosomes (‘libraries’), sometimes in only one, typically circular in that case. This goes for most bacteria. Next to this large main genome, such bacteria frequently also host ‘plasmids’: tiny circles of DNA with specific functions.</p>

<p>Such plasmids are somewhat portable between species, and through a variety of mechanisms they do indeed get transferred horizontally. By this way even non-identical bacteria can ‘learn’ antibiotic resistance from each other, for example.</p>

<p>Compared to the programming world, a plasmid is not voluntary, and is like LD_PRELOADing a .so or the equivalent on other platforms. And in fact, plasmids are frequently injected for research purposes. They can easily be injected in all kinds of bacteria, and immediately get to work.</p>

<p>Plasmids copy themselves independently from the main chromosome, and are thus a permanent fixture of bacteria. To make this happen, a plasmid features the magnificently named <strong>‘<a href="https://en.wikipedia.org/wiki/Origin_of_replication" target="_blank">Origin of Replication</a>‘</strong> gene which gets triggered when the cell wants to divide.</p>

<h2 id="further-reading">Further reading</h2>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0060932902" target="_blank">Genome</a> by Matt Ridley</strong></p>

<p>An amazing account of an effect each chromosome has on our lives. Very readable yet strict in not ‘dumbing down’ the theory. Contains an impressive set of references.
Source of many of the more impressive examples found on this page.
And to help Matt along in the quest he clearly sets out in his book, I would like to state quite clearly:
<strong>Genes are not there to cause diseases</strong></p>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0471330612" target="_blank">Human Molecular Genetics, second edition</a> by Tom Strachan and Andrew P. Read</strong></p>

<p>Neatly fills the gap between ‘primary literature’ (ie, peer reviewed academic magazines and papers) and introductory textbooks. I’m literally dragging myself through this book, constantly looking things up in order to understand everything. If you really want to know the details about introns, exons, RNA in all its variants, how genes cause and prevent diseases, this is the book.</p>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0192860925" target="_blank">The Selfish Gene</a> by Richard Dawkins</strong></p>

<p><a href="https://en.wikipedia.org/wiki/Richard_Dawkins" target="_blank">Richard Dawkins</a> is the <a href="https://en.wikipedia.org/wiki/W._Richard_Stevens" target="_blank">Richard Stevens</a> of evolution theory. Both have contributed practical work but are most famous for their crystal clear expositions of existing theory, opening up the world they describe to an audience of millions.</p>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0393315703" target="_blank">The Blind Watchmaker : Why the Evidence of Evolution Reveals a Universe Without Design</a> by Richard Dawkins</strong></p>

<p>Again a book by Dawkins. More about evolution than about genes but clearly explains how evolution can be responsible for the intricate design found in many living things.
Again very readable and fascinating on every level.</p>

<p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/0465045669" target="_blank">Metamagical Themas</a> by Douglas Hofstadter</strong></p>

<p>This is an ‘idea’ book. It is filled to the brim with ideas, they simply ooze out of the pages. Many of these ideas are about information theory, genetics, life, intelligence, music, mathematics and people.
Clearly not a genetic textbook but has been influential in imbuing enthusiasm for all things genetic in many people. Can often be found dirt cheap in second hand bookstores.
Recommended.</p>

+ 189
- 0
cache/2021/30069f97e4aa989a1d89fe8d88538da8/index.html View File

@@ -0,0 +1,189 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the <title>
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>We Had the COVID-19 Vaccine the Whole Time (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://nymag.com/intelligencer/2020/12/moderna-covid-19-vaccine-design.html">

<body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">

<article>
<header>
<h1>We Had the COVID-19 Vaccine the Whole Time</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="https://nymag.com/intelligencer/2020/12/moderna-covid-19-vaccine-design.html" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<div class="article-content inline" data-editable="content" itemprop="articleBody">
<div class="lede-image-wrapper inline horizontal">
<picture> <source media="(min-resolution: 192dpi) and (min-width: 1180px), (-webkit-min-device-pixel-ratio: 2) and (min-width: 1180px)" srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.2x.rhorizontal.w700.jpg 2x"></source> <source media="(min-width: 1180px) " srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.rhorizontal.w700.jpg"></source> <source media="(min-resolution: 192dpi) and (min-width: 768px), (-webkit-min-device-pixel-ratio: 2) and (min-width: 768px)" srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.2x.rhorizontal.w700.jpg 2x"></source> <source media="(min-width: 768px)" srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.rhorizontal.w700.jpg"></source> <source media="(min-resolution: 192dpi), (-webkit-min-device-pixel-ratio: 2)" srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.2x.rhorizontal.w700.jpg"></source> <img src="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.rhorizontal.w700.jpg" class="lede-image" data-src="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.rhorizontal.w700.jpg" data-content-img alt=""> </picture>
<div class="lede-image-data">
<p class="attribution">
In August 1957, Dr. Joseph Ballinger gave a nurse at a New York hospital the first H2N2-vaccine shot to be administered in the city.
<span class="credit">Photo: AP Photo/AP2009</span>
</p>
</div>
</div>
<p class="clay-paragraph_drop-cap" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib2wreh000k6wn9a6yd8qa7@published" data-word-count="202">You may be surprised to learn that of the trio of long-awaited coronavirus vaccines, the most promising, Moderna’s mRNA-1273, which <a href="https://www.thecut.com/2020/11/a-second-covid-vaccine-may-be-nearly-95-percent-effective.html">reported a 94.5 percent efficacy rate</a> on November 16, had been designed by January 13. This was just two days after the genetic sequence had been made public in an act of scientific and humanitarian generosity that resulted in China’s Yong-Zhen Zhang’s being temporarily forced out of his lab. In Massachusetts, the Moderna vaccine design took all of one weekend. It was completed before China had even acknowledged that the disease could be transmitted from human to human, more than a week before the first confirmed coronavirus case in the United States. By the time the first American death was announced a month later, the vaccine had already been manufactured and shipped to the National Institutes of Health for the beginning of its Phase I clinical trial. This is — as the country and the world are rightly celebrating — the fastest timeline of development in the history of vaccines. It also means that for the entire span of the pandemic in this country, which has already killed more than 250,000 Americans, we had the tools we needed to prevent it .</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327h0001t3g6fnkphsf6c@published" data-word-count="108">To be clear, I don’t want to suggest that Moderna should have been allowed to <a href="https://nymag.com/intelligencer/2020/12/what-we-know-about-u-s-covid-19-vaccine-distribution-plan.html">roll out its vaccine</a> in February or even in May, when interim results from its Phase I trial demonstrated its basic safety. “That would be like saying we put a man on the moon and then asking the very same day, ‘What about going to Mars?’ ” says Nicholas Christakis, who directs Yale’s Human Nature Lab and whose new book, <a href="https://www.amazon.com/Apollos-Arrow-Profound-Enduring-Coronavirus/dp/0316628212?ascsubtag=%5B%5Din%5Bp%5Dckib2wrch00006wn9pez37kva&amp;tag=thestrategistsite-20" data-track-type="product-link" data-track-id=""><em>Apollo’s Arrow</em></a><em>,</em> sketches the way COVID-19 may shape our near-term future. Moderna’s speed was “astonishing,” Christakis says, though the design of other vaccines was nearly as fast: BioNTech with Pfizer, Johnson &amp; Johnson, AstraZeneca.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327lu001u3g6fymch6hvv@published" data-word-count="321">Could things have moved faster from design to deployment? Given the grim prospects for winter, it is tempting to wonder. Perhaps, in the future, we will. But given existing vaccine infrastructure, probably not. Already, as Baylor’s Peter Hotez pointed out to me, “Operation Warp Speed” meant running clinical trials simultaneously rather than sequentially, manufacturing the vaccine at the same time, and authorizing the vaccine under “emergency use” in December based only on preliminary data that doesn’t track the long-term durability of protection or even measure the vaccine’s effect on transmission (only how much it protects against disease). And as Georgetown virologist Angela Rasmussen told me, the name itself may have needlessly risked the trust of Americans already concerned about the safety of this, or any, vaccine. Indeed, it would have been difficult in May to find a single credentialed epidemiologist, vaccine researcher, or public-health official recommending a rapid vaccine rollout — though, it’s worth noting, as early as July the <em>MIT Technology Review</em> <a href="https://www.technologyreview.com/2020/07/29/1005720/george-church-diy-coronavirus-vaccine/">reported</a> that a group of 70 scientists in the orbit of Harvard and MIT, including “celebrity geneticist” George Church, were taking a totally DIY nasal-spray vaccine, never even intended to be tested, and developed by a personal genomics entrepreneur named Preston Estep (also the author of a self-help-slash-life-extension book called <em>The Mindspan Diet</em>). China began administering a vaccine to its military in June. Russia approved its version in August. And while most American scientists worried about the speed of those rollouts, and the risks they implied, our approach to the pandemic here raises questions, too, about the strange, complicated, often contradictory ways we approach matters of risk and uncertainty during a pandemic — and how, perhaps, we might think about doing things differently next time. That a vaccine was available for the entire brutal duration may be, to future generations trying to draw lessons from our death and suffering, the most tragic, and ironic, feature of this plague.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckic49y6s000s3g6fc7er99g8@published" data-word-count="249">For all of modern medical history, Christakis writes in <em>Apollo’s Arrow</em>, vaccines and cures for infectious disease have typically arrived, if they arrive, only in the end stage of the disease, once most of the damage had already been done and the death rate had dramatically declined. For measles, for scarlet fever, for tuberculosis, for typhoid, the miracle drugs didn’t bring rampant disease to a sudden end — they shut the door for good on outbreaks that had largely died out already. This phenomenon is called the McKeown hypothesis — that medical interventions tend to play only a small role compared to public-health measures, socioeconomic advances, and the natural dynamics of the disease as it spreads through a population. The new coronavirus vaccines have arrived at what counts as warp speed, but not in time to prevent what CDC director Robert Redfield predicts will be “the most difficult time in the public-health history of this nation,” and do not necessarily represent a reversal of the McKeown hypothesis: The country may still reach herd immunity through natural disease spread, Christakis says, at roughly the same time as the rollout of vaccines is completed. Redfield believes there may be 200,000 more American deaths to come. This would mean what Christakis calls a “once-in-a-century calamity” had unfolded start-to-finish between the time the solution had been found and the time we felt comfortable administering it. A half a million American lives would have been lost in the interim. Around the world, considerably more.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327nk001v3g6f7j0o7ebe@published" data-word-count="228">In weighing other risks and uncertainties, Americans have been much less cautious,<strong> </strong>and not just in the case of marching maskless into Wal-Marts. On March 28, on what would normally be considered very thin evidentiary ground, the FDA issued an emergency-use authorization for the drug hydroxychloroquine. On May 1, it issued an EUA for remdesevir. On August 23, it issued another for convalescent plasma (the practice of injecting antibodies from the blood of recovered patients into those sick with the disease). These were all speculative authorizations — gambles, without concrete evidence, that existing treatments which scientists and doctors had some reason to suspect might help with the treatment of COVID-19 would be both safe and effective. All of these bets were lost. None of them, in the end, proved effective. Hydroxychloroquine, famously, proved dangerous, too, increasing risk of death in patients receiving it. Just one drug, the steroid dexamethasone, has proven to be a worthwhile treatment for COVID-19 in a randomized control trial — though given too early, it too can be dangerous. And at least some of the threefold decline in COVID-19 fatality rates observed over the spring and summer, the University College of London disease geneticist Francois Balloux told me recently, can be attributed to doctors no longer trying so many experimental treatments and focusing instead on the basic, old-fashioned job of simply keeping patients alive.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327q5001w3g6f5uhz1qb5@published" data-word-count="306">The treatment dilemmas facing physicians and patients in the early stages of a novel pandemic are, of course, not the same as the dilemma of rushing a new vaccine to a still-healthy population — we defer to the judgment of desperate patients, with physicians inclined to try to help them, but not to the desires of vaccine candidates, no matter how desperate. An unsafe vaccine, like the one for polio that killed ten and paralyzed 200 in 1955, could cause medical disaster and public-health backlash — though, as Balloux <a href="https://twitter.com/ballouxfrancois/status/1334226473327206400?s=11">points out</a>, since none of the new coronavirus vaccines use real viral material, that kind of accident, which affected one in a thousand recipients, would be impossible. (These days, one adverse impact in a million is the rule-of-thumb threshold of acceptability.) An ineffective vaccine could also give false security to those receiving it, thereby helping spread the disease by providing population-scale license to irresponsible behavior (indoor parties, say, or masklessness). But on other matters of population-level guidance, our messaging about risk has been erratic all year, too. In February and March, we were warned against the use of masks, in part on the grounds that a false sense of security would lead to irresponsible behavior — on balance, perhaps the most consequential public-health mistake in the whole horrid pandemic. In April, with schools already shut, we closed playgrounds. In May, beaches — unable or unwilling to live with even the very-close-to-zero risk of socializing outside (often shaming those who gathered there anyway). But in September, we opened bars and restaurants and gyms, inviting pandemic spread even as we knew the seasonality of the disease would make everything much riskier in the fall. The whole time, we also knew that the Moderna vaccine was essentially safe. We were just waiting to know for sure that it worked, too.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327rq001x3g6fnu0bfbq7@published" data-word-count="221">None of the scientists I spoke to for this story were at all surprised by either outcome — all said they expected the vaccines were safe and effective all along. Which has made a number of them wonder whether, in the future, at least, we might find a way to do things differently — without even thinking in terms of trade-offs. Rethinking our approach to vaccine development, they told me, could mean moving faster without moving any more recklessly. A layperson might look at the 2020 timelines and question whether, in the case of an onrushing pandemic, a lengthy Phase III trial — which tests for efficacy — is necessary. But the scientists I spoke to about the way this pandemic may reshape future vaccine development were more focused on how to accelerate or skip Phase I, which tests for safety. More precisely, they thought it would be possible to do all the research, development, preclinical testing, and Phase I trials for new viral pandemics before those new viruses had even emerged — to have those vaccines sitting on the shelf and ready to go when they did. They also thought it was possible to do this for nearly the entire universe of potential future viral pandemics — at least 90 percent of them, one of them told me, and likely more.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327tn001y3g6fqth82bzy@published" data-word-count="95">As Hotez explained to me, the major reason this vaccine timeline has shrunk is that much of the research and preclinical animal testing was done in the aftermath of the 2003 SARS pandemic (that is, for instance, how we knew to target the spike protein). This would be the model.<strong> </strong>Scientists have a very clear sense of which virus families have pandemic potential, and given the resemblance of those viruses, can develop not only vaccines for all of them but also ones that could easily be tweaked to respond to new variants within those families.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckic4qvva000x3g6frxsy4szl@published" data-word-count="151">“We do this every year for influenza,” Rasmussen says. “We don’t know which influenza viruses are going to be circulating, so we make our best guess. And then we formulate that into a vaccine using essentially the same technology platform that all the other influenza vaccines are based on.” The whole process takes a few months, and utilizes a “platform” that we already know is basically safe. With enough funding, you could do the same for viral pandemics, and indeed conduct Phase I trials for the entire set of possible future outbreaks before any of them made themselves known to the public. In the case of a pandemic produced by a new strain in these families, you might want to do some limited additional safety testing, but because the most consequential adverse effects take place in the days right after the vaccine is given, that additional diligence could be almost immediate.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327xq001z3g6fvrzh5ilv@published" data-word-count="221">According to Florian Krammer, a vaccine scientist at Mount Sinai, you could do all of this at a cost of about $20 million to $30 million per vaccine and, ideally, would do so for between 50 and 100 different viruses — enough, he says, to functionally cover all the phylogenies that could give rise to pandemic strains in the future. (“It’s extremely unlikely that there is something out there that doesn’t belong to one of the known families, that would have been flying under the radar,” he says. “I wouldn’t be worried about that.”) In total, he estimates, the research and clinical trials necessary to do this would cost between $1 billion and $3 billion. So far this year, the U.S. government has spent more than $4 trillion on pandemic relief. Functionally, it’s a drop in the bucket, though Krammer predicts our attention, and the funding, will move on once this pandemic is behind us, leaving us no more prepared for the next one. When he compares the cost of such a project to the Pentagon’s F-35 — you could build vaccines for five potential pandemics for the cost of a single plane, and vaccines for all of them for a fraction of the cost of that fighter-jet program as a whole — he isn’t signaling confidence it will happen, but the opposite.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327zd00203g6fkbpbhei9@published" data-word-count="179">Krammer spent the early months of the pandemic focused on serological testing — it was his lab that gave New York City its first clear picture of just how far the pandemic had spread through the five boroughs in the spring— but recently, he has turned his attention to how to accelerate the timeline of vaccine delivery. In <a href="https://www.cell.com/med/fulltext/S2666-6340(20)30027-1">a just-published paper in <em>Cell</em></a><em>,</em> he suggests it isn’t just that Phase I clinical work and the larger, longer Phase II safety trials which could be done preemptively, entirely before the arrival of new pandemics. Some Phase III efficacy testing, he says, could be done then, as well — especially for existing rather than novel strains. “To look for immunogenicity”—whether scientists can provoke the right immune response — “you don’t even have to develop the vaccine,” he says. “You can make antigens in the research center and just test it — that’s pretty inexpensive.” And if a Phase III trial were deemed necessary, it could start just weeks after the disease was identified and conclude in as soon as ten weeks.</p>

<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib3283j00213g6fg1wb034c@published" data-word-count="102">If we do all that, he says, the entire timeline could be compressed to as few as three months. The production and distribution of a vaccine adds considerable cost, bureaucracy, and even some chaos, as we’re likely about to see. But three months from the design of the Moderna vaccine was April 13. The second and third surges, the return to school and the long-dreaded fall, 225,000 more deaths and 50 million more infections — all of that still lay ahead. Shave another month off somehow and you’re at March 13, the day the very first person in New York City died.</p>

</div>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="/david/log/" title="Accès au flux RSS">🤖</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
<abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend>Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 39
- 0
cache/2021/30069f97e4aa989a1d89fe8d88538da8/index.md View File

@@ -0,0 +1,39 @@
title: We Had the COVID-19 Vaccine the Whole Time
url: https://nymag.com/intelligencer/2020/12/moderna-covid-19-vaccine-design.html
hash_url: 30069f97e4aa989a1d89fe8d88538da8

<div class="article-content inline" data-editable="content" itemprop="articleBody">
<div class="lede-image-wrapper inline horizontal">
<picture> <source media="(min-resolution: 192dpi) and (min-width: 1180px), (-webkit-min-device-pixel-ratio: 2) and (min-width: 1180px)" srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.2x.rhorizontal.w700.jpg 2x"></source> <source media="(min-width: 1180px) " srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.rhorizontal.w700.jpg"></source> <source media="(min-resolution: 192dpi) and (min-width: 768px), (-webkit-min-device-pixel-ratio: 2) and (min-width: 768px)" srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.2x.rhorizontal.w700.jpg 2x"></source> <source media="(min-width: 768px)" srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.rhorizontal.w700.jpg"></source> <source media="(min-resolution: 192dpi), (-webkit-min-device-pixel-ratio: 2)" srcset="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.2x.rhorizontal.w700.jpg"></source> <img src="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.rhorizontal.w700.jpg" class="lede-image" data-src="https://pyxis.nymag.com/v1/imgs/47c/fc9/621dbf6b0a589406bd7d2ccddfb2a65463-col-1-vaccine.rhorizontal.w700.jpg" data-content-img alt=""> </picture>
<div class="lede-image-data">
<p class="attribution">
In August 1957, Dr. Joseph Ballinger gave a nurse at a New York hospital the first H2N2-vaccine shot to be administered in the city.
<span class="credit">Photo: AP Photo/AP2009</span>
</p>
</div>
</div>
<p class="clay-paragraph_drop-cap" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib2wreh000k6wn9a6yd8qa7@published" data-word-count="202">You may be surprised to learn that of the trio of long-awaited coronavirus vaccines, the most promising, Moderna’s mRNA-1273, which <a href="https://www.thecut.com/2020/11/a-second-covid-vaccine-may-be-nearly-95-percent-effective.html">reported a 94.5 percent efficacy rate</a> on November 16, had been designed by January 13. This was just two days after the genetic sequence had been made public in an act of scientific and humanitarian generosity that resulted in China’s Yong-Zhen Zhang’s being temporarily forced out of his lab. In Massachusetts, the Moderna vaccine design took all of one weekend. It was completed before China had even acknowledged that the disease could be transmitted from human to human, more than a week before the first confirmed coronavirus case in the United States. By the time the first American death was announced a month later, the vaccine had already been manufactured and shipped to the National Institutes of Health for the beginning of its Phase I clinical trial. This is — as the country and the world are rightly celebrating — the fastest timeline of development in the history of vaccines. It also means that for the entire span of the pandemic in this country, which has already killed more than 250,000 Americans, we had the tools we needed to prevent it .</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327h0001t3g6fnkphsf6c@published" data-word-count="108">To be clear, I don’t want to suggest that Moderna should have been allowed to <a href="https://nymag.com/intelligencer/2020/12/what-we-know-about-u-s-covid-19-vaccine-distribution-plan.html">roll out its vaccine</a> in February or even in May, when interim results from its Phase I trial demonstrated its basic safety. “That would be like saying we put a man on the moon and then asking the very same day, ‘What about going to Mars?’ ” says Nicholas Christakis, who directs Yale’s Human Nature Lab and whose new book, <a href="https://www.amazon.com/Apollos-Arrow-Profound-Enduring-Coronavirus/dp/0316628212?ascsubtag=%5B%5Din%5Bp%5Dckib2wrch00006wn9pez37kva&amp;tag=thestrategistsite-20" data-track-type="product-link" data-track-id=""><em>Apollo’s Arrow</em></a><em>,</em> sketches the way COVID-19 may shape our near-term future. Moderna’s speed was “astonishing,” Christakis says, though the design of other vaccines was nearly as fast: BioNTech with Pfizer, Johnson &amp; Johnson, AstraZeneca.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327lu001u3g6fymch6hvv@published" data-word-count="321">Could things have moved faster from design to deployment? Given the grim prospects for winter, it is tempting to wonder. Perhaps, in the future, we will. But given existing vaccine infrastructure, probably not. Already, as Baylor’s Peter Hotez pointed out to me, “Operation Warp Speed” meant running clinical trials simultaneously rather than sequentially, manufacturing the vaccine at the same time, and authorizing the vaccine under “emergency use” in December based only on preliminary data that doesn’t track the long-term durability of protection or even measure the vaccine’s effect on transmission (only how much it protects against disease). And as Georgetown virologist Angela Rasmussen told me, the name itself may have needlessly risked the trust of Americans already concerned about the safety of this, or any, vaccine. Indeed, it would have been difficult in May to find a single credentialed epidemiologist, vaccine researcher, or public-health official recommending a rapid vaccine rollout — though, it’s worth noting, as early as July the <em>MIT Technology Review</em> <a href="https://www.technologyreview.com/2020/07/29/1005720/george-church-diy-coronavirus-vaccine/">reported</a> that a group of 70 scientists in the orbit of Harvard and MIT, including “celebrity geneticist” George Church, were taking a totally DIY nasal-spray vaccine, never even intended to be tested, and developed by a personal genomics entrepreneur named Preston Estep (also the author of a self-help-slash-life-extension book called <em>The Mindspan Diet</em>). China began administering a vaccine to its military in June. Russia approved its version in August. And while most American scientists worried about the speed of those rollouts, and the risks they implied, our approach to the pandemic here raises questions, too, about the strange, complicated, often contradictory ways we approach matters of risk and uncertainty during a pandemic — and how, perhaps, we might think about doing things differently next time. That a vaccine was available for the entire brutal duration may be, to future generations trying to draw lessons from our death and suffering, the most tragic, and ironic, feature of this plague.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckic49y6s000s3g6fc7er99g8@published" data-word-count="249">For all of modern medical history, Christakis writes in <em>Apollo’s Arrow</em>, vaccines and cures for infectious disease have typically arrived, if they arrive, only in the end stage of the disease, once most of the damage had already been done and the death rate had dramatically declined. For measles, for scarlet fever, for tuberculosis, for typhoid, the miracle drugs didn’t bring rampant disease to a sudden end — they shut the door for good on outbreaks that had largely died out already. This phenomenon is called the McKeown hypothesis — that medical interventions tend to play only a small role compared to public-health measures, socioeconomic advances, and the natural dynamics of the disease as it spreads through a population. The new coronavirus vaccines have arrived at what counts as warp speed, but not in time to prevent what CDC director Robert Redfield predicts will be “the most difficult time in the public-health history of this nation,” and do not necessarily represent a reversal of the McKeown hypothesis: The country may still reach herd immunity through natural disease spread, Christakis says, at roughly the same time as the rollout of vaccines is completed. Redfield believes there may be 200,000 more American deaths to come. This would mean what Christakis calls a “once-in-a-century calamity” had unfolded start-to-finish between the time the solution had been found and the time we felt comfortable administering it. A half a million American lives would have been lost in the interim. Around the world, considerably more.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327nk001v3g6f7j0o7ebe@published" data-word-count="228">In weighing other risks and uncertainties, Americans have been much less cautious,<strong> </strong>and not just in the case of marching maskless into Wal-Marts. On March 28, on what would normally be considered very thin evidentiary ground, the FDA issued an emergency-use authorization for the drug hydroxychloroquine. On May 1, it issued an EUA for remdesevir. On August 23, it issued another for convalescent plasma (the practice of injecting antibodies from the blood of recovered patients into those sick with the disease). These were all speculative authorizations — gambles, without concrete evidence, that existing treatments which scientists and doctors had some reason to suspect might help with the treatment of COVID-19 would be both safe and effective. All of these bets were lost. None of them, in the end, proved effective. Hydroxychloroquine, famously, proved dangerous, too, increasing risk of death in patients receiving it. Just one drug, the steroid dexamethasone, has proven to be a worthwhile treatment for COVID-19 in a randomized control trial — though given too early, it too can be dangerous. And at least some of the threefold decline in COVID-19 fatality rates observed over the spring and summer, the University College of London disease geneticist Francois Balloux told me recently, can be attributed to doctors no longer trying so many experimental treatments and focusing instead on the basic, old-fashioned job of simply keeping patients alive.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327q5001w3g6f5uhz1qb5@published" data-word-count="306">The treatment dilemmas facing physicians and patients in the early stages of a novel pandemic are, of course, not the same as the dilemma of rushing a new vaccine to a still-healthy population — we defer to the judgment of desperate patients, with physicians inclined to try to help them, but not to the desires of vaccine candidates, no matter how desperate. An unsafe vaccine, like the one for polio that killed ten and paralyzed 200 in 1955, could cause medical disaster and public-health backlash — though, as Balloux <a href="https://twitter.com/ballouxfrancois/status/1334226473327206400?s=11">points out</a>, since none of the new coronavirus vaccines use real viral material, that kind of accident, which affected one in a thousand recipients, would be impossible. (These days, one adverse impact in a million is the rule-of-thumb threshold of acceptability.) An ineffective vaccine could also give false security to those receiving it, thereby helping spread the disease by providing population-scale license to irresponsible behavior (indoor parties, say, or masklessness). But on other matters of population-level guidance, our messaging about risk has been erratic all year, too. In February and March, we were warned against the use of masks, in part on the grounds that a false sense of security would lead to irresponsible behavior — on balance, perhaps the most consequential public-health mistake in the whole horrid pandemic. In April, with schools already shut, we closed playgrounds. In May, beaches — unable or unwilling to live with even the very-close-to-zero risk of socializing outside (often shaming those who gathered there anyway). But in September, we opened bars and restaurants and gyms, inviting pandemic spread even as we knew the seasonality of the disease would make everything much riskier in the fall. The whole time, we also knew that the Moderna vaccine was essentially safe. We were just waiting to know for sure that it worked, too.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327rq001x3g6fnu0bfbq7@published" data-word-count="221">None of the scientists I spoke to for this story were at all surprised by either outcome — all said they expected the vaccines were safe and effective all along. Which has made a number of them wonder whether, in the future, at least, we might find a way to do things differently — without even thinking in terms of trade-offs. Rethinking our approach to vaccine development, they told me, could mean moving faster without moving any more recklessly. A layperson might look at the 2020 timelines and question whether, in the case of an onrushing pandemic, a lengthy Phase III trial — which tests for efficacy — is necessary. But the scientists I spoke to about the way this pandemic may reshape future vaccine development were more focused on how to accelerate or skip Phase I, which tests for safety. More precisely, they thought it would be possible to do all the research, development, preclinical testing, and Phase I trials for new viral pandemics before those new viruses had even emerged — to have those vaccines sitting on the shelf and ready to go when they did. They also thought it was possible to do this for nearly the entire universe of potential future viral pandemics — at least 90 percent of them, one of them told me, and likely more.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327tn001y3g6fqth82bzy@published" data-word-count="95">As Hotez explained to me, the major reason this vaccine timeline has shrunk is that much of the research and preclinical animal testing was done in the aftermath of the 2003 SARS pandemic (that is, for instance, how we knew to target the spike protein). This would be the model.<strong> </strong>Scientists have a very clear sense of which virus families have pandemic potential, and given the resemblance of those viruses, can develop not only vaccines for all of them but also ones that could easily be tweaked to respond to new variants within those families.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckic4qvva000x3g6frxsy4szl@published" data-word-count="151">“We do this every year for influenza,” Rasmussen says. “We don’t know which influenza viruses are going to be circulating, so we make our best guess. And then we formulate that into a vaccine using essentially the same technology platform that all the other influenza vaccines are based on.” The whole process takes a few months, and utilizes a “platform” that we already know is basically safe. With enough funding, you could do the same for viral pandemics, and indeed conduct Phase I trials for the entire set of possible future outbreaks before any of them made themselves known to the public. In the case of a pandemic produced by a new strain in these families, you might want to do some limited additional safety testing, but because the most consequential adverse effects take place in the days right after the vaccine is given, that additional diligence could be almost immediate.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327xq001z3g6fvrzh5ilv@published" data-word-count="221">According to Florian Krammer, a vaccine scientist at Mount Sinai, you could do all of this at a cost of about $20 million to $30 million per vaccine and, ideally, would do so for between 50 and 100 different viruses — enough, he says, to functionally cover all the phylogenies that could give rise to pandemic strains in the future. (“It’s extremely unlikely that there is something out there that doesn’t belong to one of the known families, that would have been flying under the radar,” he says. “I wouldn’t be worried about that.”) In total, he estimates, the research and clinical trials necessary to do this would cost between $1 billion and $3 billion. So far this year, the U.S. government has spent more than $4 trillion on pandemic relief. Functionally, it’s a drop in the bucket, though Krammer predicts our attention, and the funding, will move on once this pandemic is behind us, leaving us no more prepared for the next one. When he compares the cost of such a project to the Pentagon’s F-35 — you could build vaccines for five potential pandemics for the cost of a single plane, and vaccines for all of them for a fraction of the cost of that fighter-jet program as a whole — he isn’t signaling confidence it will happen, but the opposite.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib327zd00203g6fkbpbhei9@published" data-word-count="179">Krammer spent the early months of the pandemic focused on serological testing — it was his lab that gave New York City its first clear picture of just how far the pandemic had spread through the five boroughs in the spring— but recently, he has turned his attention to how to accelerate the timeline of vaccine delivery. In <a href="https://www.cell.com/med/fulltext/S2666-6340(20)30027-1">a just-published paper in <em>Cell</em></a><em>,</em> he suggests it isn’t just that Phase I clinical work and the larger, longer Phase II safety trials which could be done preemptively, entirely before the arrival of new pandemics. Some Phase III efficacy testing, he says, could be done then, as well — especially for existing rather than novel strains. “To look for immunogenicity”—whether scientists can provoke the right immune response — “you don’t even have to develop the vaccine,” he says. “You can make antigens in the research center and just test it — that’s pretty inexpensive.” And if a Phase III trial were deemed necessary, it could start just weeks after the disease was identified and conclude in as soon as ten weeks.</p>
<p class="clay-paragraph" data-editable="text" data-uri="nymag.com/intelligencer/_components/clay-paragraph/instances/ckib3283j00213g6fg1wb034c@published" data-word-count="102">If we do all that, he says, the entire timeline could be compressed to as few as three months. The production and distribution of a vaccine adds considerable cost, bureaucracy, and even some chaos, as we’re likely about to see. But three months from the design of the Moderna vaccine was April 13. The second and third surges, the return to school and the long-dreaded fall, 225,000 more deaths and 50 million more infections — all of that still lay ahead. Shave another month off somehow and you’re at March 13, the day the very first person in New York City died.</p>
</div>

+ 528
- 0
cache/2021/388cf40eae756175ee87c9bf7a1548c4/index.html
File diff suppressed because it is too large
View File


+ 361
- 0
cache/2021/388cf40eae756175ee87c9bf7a1548c4/index.md
File diff suppressed because it is too large
View File


+ 163
- 0
cache/2021/3d3e8962a6319ee4d41a75b1cd5abd38/index.html
File diff suppressed because it is too large
View File


+ 13
- 0
cache/2021/3d3e8962a6319ee4d41a75b1cd5abd38/index.md
File diff suppressed because it is too large
View File


+ 400
- 0
cache/2021/5f1c22e9a41d209ff84218b3d6faf676/index.html View File

@@ -0,0 +1,400 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the <title>
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2 (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://berthub.eu/articles/posts/part-2-reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/">

<body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">

<article>
<header>
<h1>Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="https://berthub.eu/articles/posts/part-2-reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>All BNT162b2 vaccine data on this page is sourced from this <a href="https://mednet-communities.net/inn/db/media/docs/11889.doc" target="_blank">World Health
Organization
document</a>.</p>

<blockquote>
<p>This is a living page, shared already so people can get going! But
check back frequently for updates.</p>
</blockquote>

<p><em>Translation</em>:
<a href="https://renaudguerin.net/posts/partie-2-explorons-le-code-source-du-vaccin-biontech-pfizer/" target="_blank">Français</a>
/ <a href="https://msakai.github.io/bnt162b2/part-2-reverse-engineering-source-code-of-the-biontech-pfizer-vaccine.ja/" target="_blank">日本語</a></p>

<p>In short: the vaccine mRNA has been optimized by the manufacturer by
changing bits of RNA from (say) <code>UUU</code> to <code>UUC</code>, and people would like to
understand the logic behind these changes. This challenge is quite close to what
cryptologists and reverse engineering people encounter regularly. On this
page, you’ll find all the details you need to get cracking to reverse
engineer just HOW the vaccine has been optimized.</p>

<p>I thought this would just be a fun puzzle, but I have just been informed that
figuring out the optimization procedure &amp; documenting it is tremendously
important for researchers around the world, as this would help them design
code for proteins and vaccines.</p>

<p>So, if you want to help vaccine research, do read on!</p>

<h2 id="the-leader-board">The leader board</h2>

<p>Here are the current best entrants to the optimization algorithm (average of 20 runs):</p>

<h2 id="biontech">BioNTech</h2>

<p>We should all be very grateful that BioNTech has shared this data with us.
And of course we should also be grateful to the many many researchers and
lab workers that worked for decades to bring the state of the art to the
point that such a vaccine could be developed. It is marvelous.</p>

<p>Because it is so marvelous, I want to understand everything about the
vaccine. I wrote a page <a href="https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/" target="_blank">Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2
Vaccine</a>
that describes in some detail what is in the mRNA of the vaccine. It helps
to read this page before continuing, I promise you it will be interesting.</p>

<p>The post left open some questions however, and this is where it gets
fascinating.</p>

<h2 id="the-codon-optimization">The codon optimization</h2>

<p>The vaccine contains RNA code for a very <em>slightly</em> modified copy of the
SARS-CoV-2 S protein.</p>

<p>The RNA code of the vaccine itself however is <em>highly</em> modified from the viral original!
This has been done by the manufacturer, based on their understanding of
nature.</p>

<p>And from what we understand, these modifications make the vaccine <strong>much
much more</strong> effective. It would be a lot of fun to understand these
modifications. It might for example explain why the Moderna vaccine needs
100 micrograms and the BioNTech vaccine only 30 micrograms.</p>

<p>Here is the beginning of the S protein in both the virus and the BNT162b2
vaccine RNA code. Exclamation marks denote differences.</p>

<pre><code>Virus: AUG UUU GUU UUU CUU GUU UUA UUG CCA CUA GUC UCU AGU CAG UGU GUU
Vaccine: AUG UUC GUG UUC CUG GUG CUG CUG CCU CUG GUG UCC AGC CAG UGU GUG
! ! ! ! ! ! ! ! ! ! ! ! !
</code></pre>

<p>RNA is a string (literally) of RNA characters, <code>A</code>, <code>C</code>, <code>G</code> and <code>U</code>. There is no
physical framing on there, but it makes sense to analyse it in groups of
three.</p>

<p>Each group (called a codon) maps to an amino acid (denoted by a capital
letter). A string of amino acids is a protein. Here is what that looks
like:</p>

<pre><code>Virus: AUG UUU GUU UUU CUU GUU UUA UUG CCA CUA GUC UCU AGU CAG UGU GUU
M F V F L V L L P L V S S Q C V
Vaccine: AUG UUC GUG UUC CUG GUG CUG CUG CCU CUG GUG UCC AGC CAG UGU GUG
! ! ! ! ! ! ! ! ! ! ! ! !
</code></pre>

<p>Here we can see that while the codons are different, the amino acid version
is the same. There are 4*4*4 codons but only 20 amino acids. This means you
can typically change every codon into one of two others, and still code for
the same amino acid.</p>

<p>So in the second codon, <code>UUU</code> was changed to <code>UUC</code>. This is a net addition
of one ‘C’ to the vaccine. The third codon changed from <code>GUU</code> to <code>GUG</code>, which is
a net addition of one <code>G</code>.</p>

<p><strong>It is known that a higher fraction of <code>G</code> and <code>C</code> characters improves the
efficiency of an mRNA vaccine</strong>.</p>

<p>Now, if that was all there was to it, this could be the end of this page.
“The algorithm is change codons so we get more G and C in there”. But then
we meet the 9th codon which changes <code>CCA</code> to <code>CCU</code>.</p>

<p>Throughout the ~4000 characters of the vaccine, this happens many times.</p>

<h2 id="our-challenge">Our challenge</h2>

<p>The goal is: find an algorithm that modifies the ‘wild type’ RNA code into
the BNT162b2 one. Because everyone would like to understand how to turn
viral RNA into an effective vaccine. The algorithm does not need to
reproduce the <em>exact</em> RNA code of course, but it would be super nice if it
came up with something very similar, while also being brief.</p>

<p>To help you, I have provided the data in a number of forms, as described on
<a href="https://github.com/berthubert/bnt162b2" target="_blank">the GitHub page</a>.</p>

<blockquote>
<p>Note that in these files the <code>U</code> mentioned above appears as a <code>T</code>. <code>U</code> and
<code>T</code> are the RNA and DNA manifestations of the same information.</p>
</blockquote>

<p>The easiest place to start might be the
‘<a href="https://github.com/berthubert/bnt162b2/blob/master/side-by-side.csv" target="_blank">side-by-side.csv</a>‘
file. This lists the original and modified version of each codon, side by
side:</p>

<pre><code>abspos,codonOrig,codonVaccine
0,ATG,ATG
3,TTT,TTC
6,GTT,GTG
...
3813,TAC,TAC
3816,ACA,ACA
3819,TAA,TGA
</code></pre>

<p>There is also an equivalency table that shows wich codons can be
interchanged without changing the amino acid output. Please find this in
<a href="https://github.com/berthubert/bnt162b2/blob/master/codon-table-grouped.csv" target="_blank">codon-table-grouped.csv</a>.
There is also a visual version
<a href="https://en.wikipedia.org/wiki/DNA_and_RNA_codon_tables#Standard_DNA_codon_table" target="_blank">here</a>.</p>

<h2 id="a-sample-algorithm">A sample algorithm</h2>

<p>On the <a href="https://github.com/berthubert/bnt162b2" target="_blank">GitHub repository</a> you can
find
<a href="https://github.com/berthubert/bnt162b2/blob/master/3rd-gc.go" target="_blank">3rd-gc.go</a>
(and
<a href="https://github.com/berthubert/bnt162b2/blob/master/3rd-gc.py" target="_blank">3rd-gc.py</a>).</p>

<p>These implement a simple strategy that works like this:</p>

<ul>
<li>If a virus codon already ended on G or C, copy it to the vaccine mRNA</li>
<li>If not, replace last nucleotide in codon by a G, see if the amino acid
still matches, if so, copy to the vaccine mRNA</li>
<li>Try the same with a C</li>
<li>Otherwise copy as is</li>
</ul>

<p>Or in <code>golang</code>:</p>

<pre><code>// base case, don't do anything
our = vir

// don't do anything if codon ends on G or C already
if(vir[2] == 'G' || vir[2] =='C') {
fmt.Printf("Codon ended on G or C already, not doing anything.")
} else {
prop = vir[:2]+"G"
fmt.Printf("Attempting G substitution, new candidate '%s'. ", prop)
if(c2s[vir] == c2s[prop]) {
fmt.Printf("Amino acid still the same, done!")
our = prop
} else {
fmt.Printf("Oops, amino acid changed. Trying C, new candidate '%s'. ", prop)
prop = vir[:2]+"C"
if(c2s[vir] == c2s[prop]) {
fmt.Printf("Amino acid still the same, done!")
our=prop
}

}

}
</code></pre>

<p>This achieves a rather poor 53.1% match with the BioNTech RNA vaccine, but
it is a start.</p>

<p>When you design your algorithm, be sure to only base your choices on the
virus RNA. Do not peek into the BioNTech RNA!</p>

<p>If you have achieved a score beyond 53.1% please email a link to your code
to bert@hubertnet.nl (or <a href="https://twitter.com/PowerDNS_Bert" target="_blank">@PowerDNS_Bert</a>
and I’ll put it on the leader board at the top of this page!</p>

<h2 id="things-that-will-help">Things that will help</h2>

<p>As with every form of reverse engineering or cryptanalysis, it helps to
understand what we are looking at.</p>

<h2 id="gc-ratio">GC ratio</h2>

<p>We know that one goal of the ‘codon optimization’ is to get more <code>C</code>s and
<code>G</code>s into the vaccine version of the RNA. However, there is also a limit to
that. In DNA, which is also used to manufacture the vaccine, <code>G</code> and <code>C</code>
bind together strongly, to the point that if you put too many of these
‘nucleotides’ in there, the DNA will no longer be replicated efficiently.</p>

<p>So some modifications may actually happen to manage <em>down</em> the GC percentage of a
stretch of DNA if it was getting too high.</p>

<p>I <a href="https://twitter.com/PowerDNS_Bert/status/1344036143961169920" target="_blank">tweeted about this</a> earlier.</p>

<h2 id="codon-optimization">Codon optimization</h2>

<p>Some codons are rare in human DNA, or in certain cells. It may be that some
codons are replaced by other ones simply because they are more frequently
used by some cells.</p>

<p>I <a href="https://twitter.com/PowerDNS_Bert/status/1344400081802448897" target="_blank">tweeted about this</a>
earlier.</p>

<h2 id="rna-folding">RNA folding</h2>

<p>We’ve been looking at codons up to here. The RNA itself however does not
know about codons, there are no markers that say where a codon begins and
ends. The first codon on a protein however is always ATG (or AUG in RNA).</p>

<p>RNA curls up into a shape. This shape might help evade the immune system or
it might improve translation into amino acids. This only depends on the
sequence of RNA nucleotides and not on specific codons.</p>

<p>You can submit RNA sequences to <a href="http://rna.tbi.univie.ac.at/cgi-bin/RNAWebSuite/RNAfold.cgi" target="_blank">this server of the Institute for
Theoretical Chemistry at the University of
Vienna</a> and it
will fold RNA for you. This is a very advanced server that does meticulous
calculations.</p>

<p>This <a href="https://en.wikipedia.org/wiki/Nucleic_acid_structure_prediction" target="_blank">Wikipedia
page</a>
describes how this works.</p>

<p>It may be that some optimizations improve folding.</p>

<p>I am also told that this paper by Moderna (another mRNA vaccine
manufacturer) may be relevant:
<a href="https://www.pnas.org/content/116/48/24075" target="_blank">mRNA structure regulates protein expression through changes in functional
half-life</a>.</p>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="/david/log/" title="Accès au flux RSS">🤖</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
<abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend>Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 252
- 0
cache/2021/5f1c22e9a41d209ff84218b3d6faf676/index.md View File

@@ -0,0 +1,252 @@
title: Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2
url: https://berthub.eu/articles/posts/part-2-reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/
hash_url: 5f1c22e9a41d209ff84218b3d6faf676

<p>All BNT162b2 vaccine data on this page is sourced from this <a href="https://mednet-communities.net/inn/db/media/docs/11889.doc" target="_blank">World Health
Organization
document</a>.</p>

<blockquote>
<p>This is a living page, shared already so people can get going! But
check back frequently for updates.</p>
</blockquote>

<p><em>Translation</em>:
<a href="https://renaudguerin.net/posts/partie-2-explorons-le-code-source-du-vaccin-biontech-pfizer/" target="_blank">Français</a>
/ <a href="https://msakai.github.io/bnt162b2/part-2-reverse-engineering-source-code-of-the-biontech-pfizer-vaccine.ja/" target="_blank">日本語</a></p>

<p>In short: the vaccine mRNA has been optimized by the manufacturer by
changing bits of RNA from (say) <code>UUU</code> to <code>UUC</code>, and people would like to
understand the logic behind these changes. This challenge is quite close to what
cryptologists and reverse engineering people encounter regularly. On this
page, you’ll find all the details you need to get cracking to reverse
engineer just HOW the vaccine has been optimized.</p>

<p>I thought this would just be a fun puzzle, but I have just been informed that
figuring out the optimization procedure &amp; documenting it is tremendously
important for researchers around the world, as this would help them design
code for proteins and vaccines.</p>

<p>So, if you want to help vaccine research, do read on!</p>

<h2 id="the-leader-board">The leader board</h2>

<p>Here are the current best entrants to the optimization algorithm (average of 20 runs):</p>



<h2 id="biontech">BioNTech</h2>

<p>We should all be very grateful that BioNTech has shared this data with us.
And of course we should also be grateful to the many many researchers and
lab workers that worked for decades to bring the state of the art to the
point that such a vaccine could be developed. It is marvelous.</p>

<p>Because it is so marvelous, I want to understand everything about the
vaccine. I wrote a page <a href="https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/" target="_blank">Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2
Vaccine</a>
that describes in some detail what is in the mRNA of the vaccine. It helps
to read this page before continuing, I promise you it will be interesting.</p>

<p>The post left open some questions however, and this is where it gets
fascinating.</p>

<h2 id="the-codon-optimization">The codon optimization</h2>

<p>The vaccine contains RNA code for a very <em>slightly</em> modified copy of the
SARS-CoV-2 S protein.</p>

<p>The RNA code of the vaccine itself however is <em>highly</em> modified from the viral original!
This has been done by the manufacturer, based on their understanding of
nature.</p>

<p>And from what we understand, these modifications make the vaccine <strong>much
much more</strong> effective. It would be a lot of fun to understand these
modifications. It might for example explain why the Moderna vaccine needs
100 micrograms and the BioNTech vaccine only 30 micrograms.</p>

<p>Here is the beginning of the S protein in both the virus and the BNT162b2
vaccine RNA code. Exclamation marks denote differences.</p>

<pre><code>Virus: AUG UUU GUU UUU CUU GUU UUA UUG CCA CUA GUC UCU AGU CAG UGU GUU
Vaccine: AUG UUC GUG UUC CUG GUG CUG CUG CCU CUG GUG UCC AGC CAG UGU GUG
! ! ! ! ! ! ! ! ! ! ! ! !
</code></pre>

<p>RNA is a string (literally) of RNA characters, <code>A</code>, <code>C</code>, <code>G</code> and <code>U</code>. There is no
physical framing on there, but it makes sense to analyse it in groups of
three.</p>

<p>Each group (called a codon) maps to an amino acid (denoted by a capital
letter). A string of amino acids is a protein. Here is what that looks
like:</p>

<pre><code>Virus: AUG UUU GUU UUU CUU GUU UUA UUG CCA CUA GUC UCU AGU CAG UGU GUU
M F V F L V L L P L V S S Q C V
Vaccine: AUG UUC GUG UUC CUG GUG CUG CUG CCU CUG GUG UCC AGC CAG UGU GUG
! ! ! ! ! ! ! ! ! ! ! ! !
</code></pre>

<p>Here we can see that while the codons are different, the amino acid version
is the same. There are 4*4*4 codons but only 20 amino acids. This means you
can typically change every codon into one of two others, and still code for
the same amino acid.</p>

<p>So in the second codon, <code>UUU</code> was changed to <code>UUC</code>. This is a net addition
of one ‘C’ to the vaccine. The third codon changed from <code>GUU</code> to <code>GUG</code>, which is
a net addition of one <code>G</code>.</p>

<p><strong>It is known that a higher fraction of <code>G</code> and <code>C</code> characters improves the
efficiency of an mRNA vaccine</strong>.</p>

<p>Now, if that was all there was to it, this could be the end of this page.
“The algorithm is change codons so we get more G and C in there”. But then
we meet the 9th codon which changes <code>CCA</code> to <code>CCU</code>.</p>

<p>Throughout the ~4000 characters of the vaccine, this happens many times.</p>

<h2 id="our-challenge">Our challenge</h2>

<p>The goal is: find an algorithm that modifies the ‘wild type’ RNA code into
the BNT162b2 one. Because everyone would like to understand how to turn
viral RNA into an effective vaccine. The algorithm does not need to
reproduce the <em>exact</em> RNA code of course, but it would be super nice if it
came up with something very similar, while also being brief.</p>

<p>To help you, I have provided the data in a number of forms, as described on
<a href="https://github.com/berthubert/bnt162b2" target="_blank">the GitHub page</a>.</p>

<blockquote>
<p>Note that in these files the <code>U</code> mentioned above appears as a <code>T</code>. <code>U</code> and
<code>T</code> are the RNA and DNA manifestations of the same information.</p>
</blockquote>

<p>The easiest place to start might be the
‘<a href="https://github.com/berthubert/bnt162b2/blob/master/side-by-side.csv" target="_blank">side-by-side.csv</a>‘
file. This lists the original and modified version of each codon, side by
side:</p>

<pre><code>abspos,codonOrig,codonVaccine
0,ATG,ATG
3,TTT,TTC
6,GTT,GTG
...
3813,TAC,TAC
3816,ACA,ACA
3819,TAA,TGA
</code></pre>

<p>There is also an equivalency table that shows wich codons can be
interchanged without changing the amino acid output. Please find this in
<a href="https://github.com/berthubert/bnt162b2/blob/master/codon-table-grouped.csv" target="_blank">codon-table-grouped.csv</a>.
There is also a visual version
<a href="https://en.wikipedia.org/wiki/DNA_and_RNA_codon_tables#Standard_DNA_codon_table" target="_blank">here</a>.</p>

<h2 id="a-sample-algorithm">A sample algorithm</h2>

<p>On the <a href="https://github.com/berthubert/bnt162b2" target="_blank">GitHub repository</a> you can
find
<a href="https://github.com/berthubert/bnt162b2/blob/master/3rd-gc.go" target="_blank">3rd-gc.go</a>
(and
<a href="https://github.com/berthubert/bnt162b2/blob/master/3rd-gc.py" target="_blank">3rd-gc.py</a>).</p>

<p>These implement a simple strategy that works like this:</p>

<ul>
<li>If a virus codon already ended on G or C, copy it to the vaccine mRNA</li>
<li>If not, replace last nucleotide in codon by a G, see if the amino acid
still matches, if so, copy to the vaccine mRNA</li>
<li>Try the same with a C</li>
<li>Otherwise copy as is</li>
</ul>

<p>Or in <code>golang</code>:</p>

<pre><code>// base case, don't do anything
our = vir

// don't do anything if codon ends on G or C already
if(vir[2] == 'G' || vir[2] =='C') {
fmt.Printf("Codon ended on G or C already, not doing anything.")
} else {
prop = vir[:2]+"G"
fmt.Printf("Attempting G substitution, new candidate '%s'. ", prop)
if(c2s[vir] == c2s[prop]) {
fmt.Printf("Amino acid still the same, done!")
our = prop
} else {
fmt.Printf("Oops, amino acid changed. Trying C, new candidate '%s'. ", prop)
prop = vir[:2]+"C"
if(c2s[vir] == c2s[prop]) {
fmt.Printf("Amino acid still the same, done!")
our=prop
}
}

}
</code></pre>

<p>This achieves a rather poor 53.1% match with the BioNTech RNA vaccine, but
it is a start.</p>

<p>When you design your algorithm, be sure to only base your choices on the
virus RNA. Do not peek into the BioNTech RNA!</p>

<p>If you have achieved a score beyond 53.1% please email a link to your code
to bert@hubertnet.nl (or <a href="https://twitter.com/PowerDNS_Bert" target="_blank">@PowerDNS_Bert</a>
and I’ll put it on the leader board at the top of this page!</p>

<h2 id="things-that-will-help">Things that will help</h2>

<p>As with every form of reverse engineering or cryptanalysis, it helps to
understand what we are looking at.</p>

<h2 id="gc-ratio">GC ratio</h2>

<p>We know that one goal of the ‘codon optimization’ is to get more <code>C</code>s and
<code>G</code>s into the vaccine version of the RNA. However, there is also a limit to
that. In DNA, which is also used to manufacture the vaccine, <code>G</code> and <code>C</code>
bind together strongly, to the point that if you put too many of these
‘nucleotides’ in there, the DNA will no longer be replicated efficiently.</p>

<p>So some modifications may actually happen to manage <em>down</em> the GC percentage of a
stretch of DNA if it was getting too high.</p>

<p>I <a href="https://twitter.com/PowerDNS_Bert/status/1344036143961169920" target="_blank">tweeted about this</a> earlier.</p>

<h2 id="codon-optimization">Codon optimization</h2>

<p>Some codons are rare in human DNA, or in certain cells. It may be that some
codons are replaced by other ones simply because they are more frequently
used by some cells.</p>

<p>I <a href="https://twitter.com/PowerDNS_Bert/status/1344400081802448897" target="_blank">tweeted about this</a>
earlier.</p>

<h2 id="rna-folding">RNA folding</h2>

<p>We’ve been looking at codons up to here. The RNA itself however does not
know about codons, there are no markers that say where a codon begins and
ends. The first codon on a protein however is always ATG (or AUG in RNA).</p>

<p>RNA curls up into a shape. This shape might help evade the immune system or
it might improve translation into amino acids. This only depends on the
sequence of RNA nucleotides and not on specific codons.</p>

<p>You can submit RNA sequences to <a href="http://rna.tbi.univie.ac.at/cgi-bin/RNAWebSuite/RNAfold.cgi" target="_blank">this server of the Institute for
Theoretical Chemistry at the University of
Vienna</a> and it
will fold RNA for you. This is a very advanced server that does meticulous
calculations.</p>

<p>This <a href="https://en.wikipedia.org/wiki/Nucleic_acid_structure_prediction" target="_blank">Wikipedia
page</a>
describes how this works.</p>

<p>It may be that some optimizations improve folding.</p>

<p>I am also told that this paper by Moderna (another mRNA vaccine
manufacturer) may be relevant:
<a href="https://www.pnas.org/content/116/48/24075" target="_blank">mRNA structure regulates protein expression through changes in functional
half-life</a>.</p>

+ 340
- 0
cache/2021/9c9968045ffe697a08dc13df854247f1/index.html View File

@@ -0,0 +1,340 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the <title>
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>I should have loved biology (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://jsomers.net/i-should-have-loved-biology/">

<body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">

<article>
<header>
<h1>I should have loved biology</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="https://jsomers.net/i-should-have-loved-biology/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>I should have loved biology but I found it to be a lifeless recitation of names: the Golgi apparatus and the Krebs cycle; mitosis, meiosis; DNA, RNA, mRNA, tRNA.</p>

<p>In the textbooks, astonishing facts were presented without astonishment. Someone probably told me that every cell in my body has the same DNA. But no one shook me by the shoulders, saying how crazy that was. I needed Lewis Thomas, who wrote in <em>The Medusa and the Snail</em>:</p>

<blockquote>
<p>For the real amazement, if you wish to be amazed, is this process. You start out as a single cell derived from the coupling of a sperm and an egg; this divides in two, then four, then eight, and so on, and at a certain stage there emerges a single cell which has as all its progeny the human brain. The mere existence of such a cell should be one of the great astonishments of the earth. People ought to be walking around all day, all through their waking hours calling to each other in endless wonderment, talking of nothing except that cell.</p>
</blockquote>

<p>I wish my high school biology teacher had asked the class how an embryo could possibly differentiate—and then paused to let us really think about it. The whole subject is in the answer to that question. A chemical gradient in the embryonic fluid is enough of a signal to slightly alter the gene expression program of some cells, not others; now the embryo knows “up” from “down”; cells at one end begin producing different proteins than cells at the other, and these, in turn, release more refined chemical signals; ...; soon, you have brain cells and foot cells.</p>

<p>How come we memorized chemical formulas but didn’t talk about that? It was only in college, when I read Douglas Hofstadter’s <em>Gödel, Escher, Bach</em>, that I came to understand cells as recursively self-modifying programs. The language alone was evocative. It suggested that the embryo—DNA making RNA, RNA making protein, protein regulating the transcription of DNA into RNA—was like a small Lisp program, with macros begetting macros begetting macros, the source code containing within it all of the instructions required for life on Earth. Could anything more interesting be imagined?</p>

<p>Someone should have said this to me:</p>

<blockquote>
<p>Imagine a flashy spaceship lands in your backyard. The door opens and you are invited to investigate everything to see what you can learn. The technology is clearly millions of years beyond what we can make.</p>
<p>This is biology.</p>
<p><em>–Bert Hubert, <a href="https://berthub.eu/articles/posts/immune-system/">“Our Amazing Immune System”</a></em></p>
</blockquote>

<p>In biology class, biology wasn’t presented as a quest for the secrets of life. The textbooks wrung out the questing. We were nowhere acquainted with real biologists, the real questions they had, the real experiments they did to answer them. We were just given their conclusions.</p>

<figure>
<div style="text-align: center;"><a href="https://user-images.githubusercontent.com/21294/94627410-73b6c680-028b-11eb-9501-d7453af56106.png" target="_blank"><img src="https://user-images.githubusercontent.com/21294/94627410-73b6c680-028b-11eb-9501-d7453af56106.png" alt="" style=""/></a></div><figcaption><a href="http://biochemical-pathways.com/#/map/1">The Roche Biochemical Pathways Poster</a></figcaption>
</figure>

<figure>
<div style="text-align: center;"><img src="https://www.scifimoviezone.com/imageextrat/contact021.jpg" alt="" /></div><figcaption>Plans for an alien machine, in <em>Contact</em></figcaption>
</figure>

<p>For instance I never learned that a man named Oswald Avery, in the 1940s, puzzled over two cultures of <em>Streptococcus</em> bacteria. One had a rough texture when grown in a dish; the other was smooth, and glistened. Avery noticed that when he mixed the smooth strain with the rough strain, every generation after was smooth, too. Heredity in a dish. What made it work? This was one of the most exciting mysteries of the time—in fact of all time.</p>

<p>Most experts thought that protein was somehow responsible, that traits were encoded soupily, via differing concentrations of chemicals. Avery suspected a role for nucleic acid. So, he did an experiment, one we could have replicated on our benches in school. Using just a centrifuge, water, detergent, and acid, he purified nucleic acid from his smooth strep culture. Precipitated with alcohol, it became fibrous. He added a tiny bit of it to the rough culture, and lo, that culture became smooth in the following generations. This fibrous stuff, then, was “the transforming principle”—the long-sought agent of heredity. Avery’s experiment set off a frenzy of work that, a decade later, ended in the discovery of the double helix.</p>

<p>In his <a href="https://www.maa.org/external_archive/devlin/LockhartsLament.pdf">“Mathematician’s Lament,”</a> Paul Lockhart describes how school cheapens mathematics by robbing us of the questions. We’re not just asked, hey, how much of the triangle takes up the box?</p>

<p><div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94513448-b5446480-01ec-11eb-9089-f569f311c12b.png" style="border: none;"/></div></p>

<p>That’s a puzzle we might delight in. (If you drop a vertical from the top of the triangle, you end up with two rectangles cut in half; you discover that the area inside the triangle is equal to the area outside.) Instead, we’re told that if you ever find yourself wanting the area of a triangle, here’s the procedure:</p>

<p><div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94513467-bffef980-01ec-11eb-91a2-70fab3176a0a.png" /></div></p>

<p>Biology is like that, but worse because it’s a messier subject. The facts seem extra arbitrary. We’re told to distinguish “lipid bilayers” from “endoplasmic reticula” without understanding why we care about either in the first place.</p>

<p>Enormous subjects are best approached in thin, deep slices. I discovered this when first learning how to program. The textbooks never worked; it all only started to click when I started to do little projects for myself. The project wasn’t just motivation but an organizing principle, a magnet to arrange the random iron filings I picked up along the way. I’d care to learn about some abstract concept, like “memoization,” because I needed it to solve my problem; and these concepts would lose their abstractness in the light of my example.</p>

<p>Biology is no different. Learning begins with questions. How do embryos differentiate? Why are my eyes blue? How does a hamster turn cheese into muscle? Why does the coronavirus make some people much sicker than others?</p>

<p style="text-align: center;">*</p>

<p>A few months ago, I started a <a href="https://www.newyorker.com/magazine/2020/11/09/how-the-coronavirus-hacks-the-immune-system">magazine assignment</a> to answer some questions about SARS-CoV-2 and the immune system. I encountered paragraphs like this:</p>

<blockquote>
<!--CR jsomers: all the certainty -->
<p>In low-MOI infections (MOI, 0.2), exogenous expression of ACE2 enabled SARS-CoV-2 to replicate and comprise ~54% of the total reads mapping more than 300x coverage across the ~30-kb genome (Figures 1A and 1B). Western blot analyses corroborated these RNA-seq data… It is noteworthy that, despite this dramatic increase in viral load, we observed neither activation of TBK1, the kinase responsible for IFN-I and IFN-III expression, nor induction of STAT1 and MX1, IFN-I-stimulated genes (Figure S1A; Sharma et al., 2003)…</p>
<p>–<a href="https://www.cell.com/cell/pdf/S0092-8674(20)30489-X.pdf">“Imbalanced Host Response to SARS-CoV-2 Drives Development of COVID-19,” <em>Cell</em></a></p>
</blockquote>

<p>It was hard to get through a sentence without having to consult Wikipedia. In immunology in particular the nomenclature is expansive. One sentence might refer to “leukocytes,” the next to monocytes, the next to lymphocytes. There are a lot of squares-and-rectangles situations: all interleukins are cytokines, but not all cytokines are interleukins?</p>

<p>I’ve never come across a subject so fractal in its complexity. It reminds me of computing that way. A day of programming might involve constructing an elaborate regular expression, investigating a file descriptor leak, debugging a race condition in the application you just wrote, and thinking through the interface of a module. Everywhere you look—the compiler, the shell, the CPU, the DOM—is an abstraction hiding lifetimes of work. Biology is like this, just much, much worse, because living systems aren’t intentionally designed. It’s all a big slop of global mutable state. Control is achieved by upregulating this thing while turning down the promoter of that thing’s repressor. You think you know how something works—like when I thought I had a handle on the neutrophil, an important front-line player in the innate immune system—only to learn that it comes in several flavors, and more are still being discovered, and some of them seem to do the opposite of the ones you thought you knew. Everything in biology is like this. It’s all exceptions to the rule.</p>

<p>But biology, like computing, has a bottom, and the bottom is not abstract. It’s physical. It’s shapes bumping into each other. In fact the great revelation of twentieth-century molecular biology was the coupling of structure to function. An aperiodic crystal that forms paired helices is the natural store of heredity <em>because</em> of its ability to curl up and unwind and double itself with complements. Hemoglobin, the first protein studied in full crystallographic detail, was shown to be an efficient store of energy <em>because</em> of how oxygen atoms snap into its body like Legos, each snap widening the remaining slots, so that it loads itself up practically at a gulp. Most proteins are like this. The ones that drive locomotion twist like little motors; the ones that contract muscles climb and compress each other. Cells, too, are constantly in conversation, and the language they speak is shape. It’s keys entering locks: a protein might straddle the cell membrane, and when a cytokine (that’s a kind of signaling molecule) docks with it, it changes its shape, so that its grip loosens on some other molecule on the interior side of the membrane, as though fumbling a football—that football might be a signal itself, on its way to the nucleus.</p>

<p>I think my understanding of biology was too flow-charty in high school. I knew that <em>DNA → RNA → protein</em> and that this was called “gene expression,” but I was confused on the basics, like, how did genes actually “turn on”? And once they were on, were they on for good? It’s clearer when you think physically. Mammalian DNA isn’t laid out as one long double helix; it’s tightly coiled and coiled again, like this, around little circular proteins called histones:</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94510096-ecfade80-01e3-11eb-848e-8a0c76dd0956.png" alt="" /></div><figcaption>DNA curled around histones. Image from <a href="https://www.youtube.com/watch?v=Rn9sRkkqGT4">this Moderna video</a>, at 1:10</figcaption>
</figure>

<p>The structure of the resulting fiber has an effect on which genes are expressed. This is because the little molecular machine that transcribes DNA into RNA has to actually <a href="https://youtu.be/5MfSYnItYvg?t=39">ride along the helix</a>, and it can only ride along some parts of it, namely the parts that aren’t <a href="https://youtu.be/gbSIBhFwQ4s">curled up out of sight</a>. “Expressing” a gene just means that at a given moment, the machine is accessing a specific portion of DNA, resulting in lots of RNA transcripts, resulting in lots of the protein that the gene codes for. Kink the fiber a bit and you change what the machine can see, thus changing the distribution of proteins it produces. You have “reprogrammed” the cell. (There are many ways to control gene expression, maybe the most common being “repressors” that park somewhere on the DNA, physically blocking the transcription machinery.)</p>

<p>One of the workhorse techniques in modern biology, called <a href="https://youtu.be/fCd6B5HRaZ8">RNA sequencing</a>, or RNA-seq for short, takes a frozen cell and counts the RNA transcripts inside it. In effect you get a snapshot of all the proteins being expressed at that moment. The result is literally a big table mapping genes to transcript counts. You see that being one kind of cell versus another—or being in one kind of cellular mood versus another, say in health versus disease—is just a matter of having a different distribution across this table. RNA-seq results are <a href="https://www.nature.com/articles/nbt.2594">often</a> represented as vectors in high-dimensional space, the counts in the table forming the coordinates; cells move through this expression space as they self-regulate and adapt to their environment.</p>

<p style="text-align: center;">*</p>

<p>How do you develop a physical understanding of biology? I like pictures. One of my favorite books is called <a href="https://www.springer.com/gp/book/9780387849249"><em>The Machinery of Life</em></a>, by David Goodsell. It’s full of gorgeous hand-drawn illustrations. Here a bacterium’s flagellar motor is shown in context, then zoomed in on in an inset, with a third picture highlighting its functional elements:</p>

<p><img class="special" src="https://user-images.githubusercontent.com/21294/36645281-38d56c2a-1a34-11e8-82bd-0d574d6d5dae.png" style="float: left;width: 196px; /*margin-left: -113px;*/"></p>

<p><img class="special" src="https://user-images.githubusercontent.com/21294/36645283-45e9b1fa-1a34-11e8-96ff-5e84cafe11f6.png" style="float: left;width: 196px;margin-left: 20px;"></p>

<p><img class="special" src="https://user-images.githubusercontent.com/21294/94501488-ed897a00-01cf-11eb-8343-384f14e8b33b.jpg" style="position: relative;left: 456px;width: 196px;top: -353px;margin-bottom: -232px;"></p>

<p>What makes the book work is that it’s basically a re-introduction to molecular biology with the following premise: the cell is <a href="https://www.righto.com/2011/07/cells-are-very-fast-and-crowded-places.html">a very fast and crowded place</a>, full of little machines, most of them protein, which you understand by taking a close look. It does an especially terrific job through insets like the above relating things at different scales. “Imagine your room filled with grains of rice. That will give you an idea of the billion or so cells that make up your fingertip.”</p>

<p>The writing is very good. It somehow gets you imagining the <em>motion</em> of these machines. It’s tempting when thinking about the cellular world to simply miniaturize our own; but at the cellular scale things behave weirdly. Movement is essentially by random diffusion. “The motions and the interactions of biological molecules are completely dominated by the surrounding water molecules… Inside the cell, [a] protein is battered from all sides by water molecules. It bounces back and forth, always at great speed, but takes a long time to get anywhere.”</p>

<p><div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94513322-6ac2e800-01ec-11eb-86ef-076e01b73216.jpg" /></div></p>

<p>It turns out that random diffusion is an incredibly slow way to travel large distances, but an incredibly fast way to explore at short distances. Being a protein inside a cell is like being at a crowded house party where it might take an hour to get across the room, but by the time you get there you’ve bumped into everybody six hundred thousand times.</p>

<p>This point is made beautifully in another favorite book of mine, <a href="https://www.springer.com/gp/book/9780387482750"><em>A Computer Scientist’s Guide to Cell Biology</em></a>, by William W. Cohen:</p>

<blockquote>
<p>Molecules that come close to an organelle tend to remain close to it for a while, and brush against it many times—Figure 20 gives some intuitions as to why this is true.</p>
</blockquote>

<p><div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94501182-3a208580-01cf-11eb-9896-145bfc03838a.png" /></div></p>

<blockquote>
<p>The result of this is that if receptors for a protein p cover even a small fraction of the surface of an organelle, the organelle will be surprisingly efficient at recognizing p. As an example, if only 0.02% of a typical eukaryotic cell’s surface has a receptor for p, the cell will be about half as efficient as if the entire surface were coated with receptors for p.</p>
</blockquote>

<p>This is the kind of fact that instantly clarifies how biology could possibly work. “Cell-sized objects thus have a ‘high bandwidth,’” Cohen writes. “They can recognize or absorb hundreds of different chemical signals, even if they are bounded by membranes.”</p>

<p>Cohen’s book is pitched as an attempt to distill what he learned in acquiring a “reading knowledge” of biology—enough to be able to follow along with a paper in <em>Cell</em>. He’s very good at explaining methods: how do biologists know what they know? For a computer scientist, a biologist’s methods can seem insane; the trouble comes from the fact that cells are too small, too numerous, too complex to analyze the way a programmer would, say in a step-by-step debugger. What biologists mostly do is stuff like:</p>

<ul class="incremental">
<li>Spin things to 15,000 Gs in centrifuges to separate pieces having different densities.</li>
<li>Separate things of different sizes using gels and magnets. (“Gel electrophoresis.”)</li>
<li>Take one of those gels and blot it with special paper to splay the parts out. Then wash the paper with an antibody that binds to a specific protein. Finally, wash the paper with <em>another</em> antibody that binds to the first one, and fluoresces when it does so. See where the meta-antibody lights up—that’s the protein you were looking for. (I think I’m describing a “Western blot.”)</li>
<li>Use the fluorescent antibody trick to tag cells expressing one or more proteins of interest. Then squeeze the cells through a tube so small that only one fits at a time. As each cell passes by, shine a laser through it to read its fluorescent tags, and use an electric charge to redirect it to a particular bin. Now you can sort and count cells that match your criteria. (“<a href="https://www.youtube.com/watch?v=EQXPJ7eeesQ">Flow cytometry</a>.”)</li>
<li>Genetically alter microorganisms to make molecular machines to spec; systematically turn off one gene at a time in a cell line and see what changes; edit the genome of a whole animal, and observe its life.</li>
</ul>

<p>Cohen found, and I have too, that in trying to acquire a reading knowledge of biology it’s almost more useful to study the methods than any individual facts. That’s because the methods are highly conserved across studies. <em>Everybody</em> does Western blots. <em>Everybody</em> does flow cytometry and RNA-seq. You’ll see this stuff in every paper. (Or variations on the same themes: separation, sorting, selection, genetic manipulation.)</p>

<p>So that’s the foundation. Or almost: I have left for last my favorite resource of all, an incredible book called <em><a href="https://www.cshlpress.com/default.tpl?cart=1601425278428641528&fromlink=T&linkaction=full&linksortby=oop_title&--eqSKUdatarq=294">The Eighth Day of Creation: Makers of the Revolution in Biology</a></em>, by Horace Freeland Judson. Parts of this book were serialized in the New Yorker in the 1970s. It is the <em>Power Broker</em> of biology, a tomic masterwork. It is not just comprehensive—Judson had hundreds of conversations with Francis Crick, with Jacques Monod and François Jacob, with their friends and spouses and colleagues; he read every paper, he read all their letters—but it pulls no punches scientifically. Judson always just describes the real thing.</p>

<p>And he emphasizes wrong turns. For example, before the discovery of tRNA—the adapter molecules that link triplets of RNA bases to the amino acids they code for—there was much confusion. It was widely believed that there had to be some kind of punctuation, because how else would one know where to start transcribing, or how to delimit one codon from the next? Certain mental models were ingrained: a going theory was that RNA formed specially shaped pockets for the different amino acids. The idea was that if you zoomed in on each triplet or quartet or whatever (the scheme was then unknown), it would always form the same unique shape that only one kind of amino acid could fit into. The amino acid chain would be formed right there alongside the RNA strand, using it almost as a mold. This was thought to happen in the nucleus. The idea that protein synthesis happened via an adapter, and that the nucleic acids therefore acted less like a mold than a digital code, more purely information—this was a major surprise.</p>

<blockquote>
<p>Sitting on the grass at Woods Hole, Crick was talking about genes and proteins, in particular about his assumption that they were colinear and Benzer and Brenner’s plan to show as much, when Ephrussi took him aback by asking how he knew that amino acids were not put in their primary sequence by something in the cytoplasm. . . . “I don’t think Boris necessarily believed it, but it was an idea he thought wasn’t impossible.”</p>
<p>. . .</p>
<p>Crick also cast his skeptical eye over Watson and Rich’s attempts to build models of RNA. “Of course, you realize that our ideas on that were totally wrong. We thought that RNA had some structure with the twenty cavities, it was that period. Mm-hmm. Unfortunately people have forgotten what it is we didn’t know at the time.”</p>
</blockquote>

<p>Put another way, the book gives us a view of science <em>before</em> discovery. It is a practitioner’s view of the subject. It is the opposite of a textbook.</p>

<p style="text-align: center;">*</p>

<p>Trying to study the immune system has gotten me into a <a href="http://worrydream.com">Bret Victor</a> sort of mood, wondering what could be done, or built, to make understanding this subject easier. A few things come to mind:</p>

<p>There are some incredible YouTube explainers. <a href="https://www.youtube.com/channel/UC6QYFutt9cluQ3uSM963_KQ">Ninja Nerd Science</a>’s videos on the immune system were a miracle—all delivered by a kid in grad school. He is a genius. What he does so well is what Goodsell, in that <em>Machinery of Life</em> book, does so well, what those famous <a href="https://www.youtube.com/watch?v=wJyUtbn0O5Y">“Inner Life of a Cell”</a> 3D animations do so well: he helps you “see the unseeable.”</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/99346396-877db280-2862-11eb-96ee-f680cc549b14.png" alt="" style=""/></a></div><figcaption><a href="https://www.youtube.com/channel/UC6QYFutt9cluQ3uSM963_KQ">Ninja Nerd Lectures YouTube channel</a></figcaption>
</figure>

<p>But I wonder whether it should be easier for regular people to create useful illustrations. Consider how easy it is to write, tooling-wise: on the web, you are only ever one click away from a Markdown-enabled textarea that allows you to create and publish pretty, hyperlinked documents. Anyone with a keyboard can contribute a few sentences to Wikipedia or answer a question on Stack Exchange. Drawing, by contrast, is hard, and animating is at least an order of magnitude harder. And yet these media are essential for understanding biological processes.</p>

<p>So what do we do?</p>

<p>It’s telling that when I was recently on a Zoom with a PhD student who was explaining RNA-seq, he pulled out his iPad Pro and essentially made a Khan Academy lecture as he talked, drawing along the way. These tools need to become more common and cheaper.</p>

<p>But we also need more software like <a href="https://web.archive.org/web/20200925063749/https://ami.org/professional-resources/expert-techniques/129-pattern-brushes-in-adobe-illustrator">pattern brushes in Adobe Illustrator</a> and <a href="https://biorender.com/">BioRender</a> to make it un-tedious to draw complex objects. We need more software like <a href="https://clarafi.com/tools/mmaya/">Molecular Maya</a>, but simplified even further, à la Victor’s <a href="http://worrydream.com/#!/StopDrawingDeadFish">Stop Drawing Dead Fish</a>, to make animating accessible to anyone who can gesture.</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/99431123-3c9e8200-28d8-11eb-928e-2fb154df69c2.png" alt="" style=""/></a></div><figcaption><a href="https://web.archive.org/web/20200925063749/https://ami.org/professional-resources/expert-techniques/129-pattern-brushes-in-adobe-illustrator">Quickly draw an endothelial lining with pattern brushes in Adobe Illustrator</a></figcaption>
</figure>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/99346530-d88da680-2862-11eb-89d2-84df12a63d06.png" alt="" style=""/></a></div><figcaption><a href="https://clarafi.com/training/intro-mmaya-dsdna-kit/">Molecular Maya’s double-stranded DNA kit</a></figcaption>
</figure>

<p>Using vector graphics and Undo history, it should be possible to make collaboratively editable images, i.e., images that can be slowly improved as part of a knowledge project like Wikipedia or Stack Exchange.</p>

<p>I want to be able to take a screenshot of the whiteboard in a Ninja Nerd lecture—a big beautiful diagram of the players in the adaptive immune system—and lasso sections of it, linking to sub-diagrams, some filled in by me, some by others, illustrating each of the parts in turn. We should have big, collaboratively edited zoomable “maps”—hierarchical diagrams—that are easy to navigate, work in standard browsers, are embeddable in blog posts, and so on.</p>

<p>Of course we need to teach more people how to draw. It’s an underrated skill. And how to write vividly, as in the wonderful books above.</p>

<p>But biology is uniquely suited to simulation—it’s a world of machines that are too small to see. The trouble is, it requires too much specialized skill to create three-dimensional interactive simulations. We need a toolkit that’s like <a href="https://mockmechanics.com/">MockMechanics</a>, or Minecraft, that maybe even <em>is</em> Minecraft, but focused on biology. Or something much better.</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94638623-64924180-02a8-11eb-8cf8-a2a4d5380139.png" alt="" style=""/></a></div><figcaption><a href="https://americanhistory.si.edu/collections/search/object/nmah_334939">Watson and Crick’s metal-and-wire model of the double helix</a></figcaption>
</figure>

<p>It’s no coincidence that Watson and Crick depended for their discovery on a literal physical model that was <a href="https://americanhistory.si.edu/collections/search/object/nmah_334939">machined</a> for them specially. Victor’s Dynamicland <a href="http://worrydream.com/cdg/ResearchAgenda-v0.19-poster.pdf">imagines</a> an immersive collaborative space in which such models can be built—now that we have computers—as quickly as you can have a conversation.</p>

<p>This is exactly what I wanted as I was writing my immune system article. I wanted to conjure models I could play with in my hand. I wanted a museum where I could walk around inside the epithelium during an immune response. I wanted to put ideas into physical space, like on a pinboard—TLRs go <em>here</em>, with the other innate armament; CD4+ T cells are <em>there</em>, in the adaptive world—but I wanted it to be as searchable, copy-pasteable, shareable, and composable as text.</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94639098-71636500-02a9-11eb-8aec-3d01ccea1ba7.png" alt="" style=""/></a></div><figcaption><a href="http://worrydream.com/cdg/ResearchAgenda-v0.19-poster.pdf">Bret Victor’s vision of dynamic tools for thinking</a></figcaption>
</figure>

<p>I think we also need inspiration. There is a romance in biology, as in any other science, that a movie like <em>Good Will Hunting</em> could bring out. We need heroes. Whoever delivers us from this pandemic in the form of a slam dunk vaccine, or a cheap quick reliable test, should become a household name, not for their own glory but for our kids—a Feynman for them to dream about someday becoming.</p>

<h2>Reading list</h2>

<ul>
<li><em><a href="https://www.springer.com/gp/book/9780387849249">The Machinery of Life</a></em>, David Goodsell</li>
<li><em><a href="https://www.springer.com/gp/book/9780387482750">A Computer Scientist’s Guide to Cell Biology</a></em>, William W. Cohen</li>
<li><em><a href="https://www.cshlpress.com/default.tpl?cart=1601425278428641528&fromlink=T&linkaction=full&linksortby=oop_title&--eqSKUdatarq=294">The Eighth Day of Creation: Makers of the Revolution in Biology</a></em>, Horace Freeland Judson</li>
<li><em><a href="https://www.amazon.com/Medusa-Snail-Notes-Biology-Watcher/dp/0140243194">The Medusa and the Snail: More Notes of a Biology Watcher</a></em>, Lewis Thomas</li>
</ul>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="/david/log/" title="Accès au flux RSS">🤖</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
<abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend>Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 135
- 0
cache/2021/9c9968045ffe697a08dc13df854247f1/index.md View File

@@ -0,0 +1,135 @@
title: I should have loved biology
url: https://jsomers.net/i-should-have-loved-biology/
hash_url: 9c9968045ffe697a08dc13df854247f1

<p>I should have loved biology but I found it to be a lifeless recitation of names: the Golgi apparatus and the Krebs cycle; mitosis, meiosis; DNA, RNA, mRNA, tRNA.</p>
<p>In the textbooks, astonishing facts were presented without astonishment. Someone probably told me that every cell in my body has the same DNA. But no one shook me by the shoulders, saying how crazy that was. I needed Lewis Thomas, who wrote in <em>The Medusa and the Snail</em>:</p>
<blockquote>
<p>For the real amazement, if you wish to be amazed, is this process. You start out as a single cell derived from the coupling of a sperm and an egg; this divides in two, then four, then eight, and so on, and at a certain stage there emerges a single cell which has as all its progeny the human brain. The mere existence of such a cell should be one of the great astonishments of the earth. People ought to be walking around all day, all through their waking hours calling to each other in endless wonderment, talking of nothing except that cell.</p>
</blockquote>
<p>I wish my high school biology teacher had asked the class how an embryo could possibly differentiate—and then paused to let us really think about it. The whole subject is in the answer to that question. A chemical gradient in the embryonic fluid is enough of a signal to slightly alter the gene expression program of some cells, not others; now the embryo knows “up” from “down”; cells at one end begin producing different proteins than cells at the other, and these, in turn, release more refined chemical signals; ...; soon, you have brain cells and foot cells.</p>
<p>How come we memorized chemical formulas but didn’t talk about that? It was only in college, when I read Douglas Hofstadter’s <em>Gödel, Escher, Bach</em>, that I came to understand cells as recursively self-modifying programs. The language alone was evocative. It suggested that the embryo—DNA making RNA, RNA making protein, protein regulating the transcription of DNA into RNA—was like a small Lisp program, with macros begetting macros begetting macros, the source code containing within it all of the instructions required for life on Earth. Could anything more interesting be imagined?</p>
<p>Someone should have said this to me:</p>
<blockquote>
<p>Imagine a flashy spaceship lands in your backyard. The door opens and you are invited to investigate everything to see what you can learn. The technology is clearly millions of years beyond what we can make.</p>
<p>This is biology.</p>
<p><em>–Bert Hubert, <a href="https://berthub.eu/articles/posts/immune-system/">“Our Amazing Immune System”</a></em></p>
</blockquote>
<p>In biology class, biology wasn’t presented as a quest for the secrets of life. The textbooks wrung out the questing. We were nowhere acquainted with real biologists, the real questions they had, the real experiments they did to answer them. We were just given their conclusions.</p>
<figure>
<div style="text-align: center;"><a href="https://user-images.githubusercontent.com/21294/94627410-73b6c680-028b-11eb-9501-d7453af56106.png" target="_blank"><img src="https://user-images.githubusercontent.com/21294/94627410-73b6c680-028b-11eb-9501-d7453af56106.png" alt="" style=""/></a></div><figcaption><a href="http://biochemical-pathways.com/#/map/1">The Roche Biochemical Pathways Poster</a></figcaption>
</figure>
<figure>
<div style="text-align: center;"><img src="https://www.scifimoviezone.com/imageextrat/contact021.jpg" alt="" /></div><figcaption>Plans for an alien machine, in <em>Contact</em></figcaption>
</figure>
<p>For instance I never learned that a man named Oswald Avery, in the 1940s, puzzled over two cultures of <em>Streptococcus</em> bacteria. One had a rough texture when grown in a dish; the other was smooth, and glistened. Avery noticed that when he mixed the smooth strain with the rough strain, every generation after was smooth, too. Heredity in a dish. What made it work? This was one of the most exciting mysteries of the time—in fact of all time.</p>
<p>Most experts thought that protein was somehow responsible, that traits were encoded soupily, via differing concentrations of chemicals. Avery suspected a role for nucleic acid. So, he did an experiment, one we could have replicated on our benches in school. Using just a centrifuge, water, detergent, and acid, he purified nucleic acid from his smooth strep culture. Precipitated with alcohol, it became fibrous. He added a tiny bit of it to the rough culture, and lo, that culture became smooth in the following generations. This fibrous stuff, then, was “the transforming principle”—the long-sought agent of heredity. Avery’s experiment set off a frenzy of work that, a decade later, ended in the discovery of the double helix.</p>
<p>In his <a href="https://www.maa.org/external_archive/devlin/LockhartsLament.pdf">“Mathematician’s Lament,”</a> Paul Lockhart describes how school cheapens mathematics by robbing us of the questions. We’re not just asked, hey, how much of the triangle takes up the box?</p>
<p><div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94513448-b5446480-01ec-11eb-9089-f569f311c12b.png" style="border: none;"/></div></p>
<p>That’s a puzzle we might delight in. (If you drop a vertical from the top of the triangle, you end up with two rectangles cut in half; you discover that the area inside the triangle is equal to the area outside.) Instead, we’re told that if you ever find yourself wanting the area of a triangle, here’s the procedure:</p>
<p><div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94513467-bffef980-01ec-11eb-91a2-70fab3176a0a.png" /></div></p>
<p>Biology is like that, but worse because it’s a messier subject. The facts seem extra arbitrary. We’re told to distinguish “lipid bilayers” from “endoplasmic reticula” without understanding why we care about either in the first place.</p>
<p>Enormous subjects are best approached in thin, deep slices. I discovered this when first learning how to program. The textbooks never worked; it all only started to click when I started to do little projects for myself. The project wasn’t just motivation but an organizing principle, a magnet to arrange the random iron filings I picked up along the way. I’d care to learn about some abstract concept, like “memoization,” because I needed it to solve my problem; and these concepts would lose their abstractness in the light of my example.</p>
<p>Biology is no different. Learning begins with questions. How do embryos differentiate? Why are my eyes blue? How does a hamster turn cheese into muscle? Why does the coronavirus make some people much sicker than others?</p>
<p style="text-align: center;">*</p>
<p>A few months ago, I started a <a href="https://www.newyorker.com/magazine/2020/11/09/how-the-coronavirus-hacks-the-immune-system">magazine assignment</a> to answer some questions about SARS-CoV-2 and the immune system. I encountered paragraphs like this:</p>
<blockquote>
<!--CR jsomers: all the certainty -->
<p>In low-MOI infections (MOI, 0.2), exogenous expression of ACE2 enabled SARS-CoV-2 to replicate and comprise ~54% of the total reads mapping more than 300x coverage across the ~30-kb genome (Figures 1A and 1B). Western blot analyses corroborated these RNA-seq data… It is noteworthy that, despite this dramatic increase in viral load, we observed neither activation of TBK1, the kinase responsible for IFN-I and IFN-III expression, nor induction of STAT1 and MX1, IFN-I-stimulated genes (Figure S1A; Sharma et al., 2003)…</p>
<p>–<a href="https://www.cell.com/cell/pdf/S0092-8674(20)30489-X.pdf">“Imbalanced Host Response to SARS-CoV-2 Drives Development of COVID-19,” <em>Cell</em></a></p>
</blockquote>
<p>It was hard to get through a sentence without having to consult Wikipedia. In immunology in particular the nomenclature is expansive. One sentence might refer to “leukocytes,” the next to monocytes, the next to lymphocytes. There are a lot of squares-and-rectangles situations: all interleukins are cytokines, but not all cytokines are interleukins?</p>
<p>I’ve never come across a subject so fractal in its complexity. It reminds me of computing that way. A day of programming might involve constructing an elaborate regular expression, investigating a file descriptor leak, debugging a race condition in the application you just wrote, and thinking through the interface of a module. Everywhere you look—the compiler, the shell, the CPU, the DOM—is an abstraction hiding lifetimes of work. Biology is like this, just much, much worse, because living systems aren’t intentionally designed. It’s all a big slop of global mutable state. Control is achieved by upregulating this thing while turning down the promoter of that thing’s repressor. You think you know how something works—like when I thought I had a handle on the neutrophil, an important front-line player in the innate immune system—only to learn that it comes in several flavors, and more are still being discovered, and some of them seem to do the opposite of the ones you thought you knew. Everything in biology is like this. It’s all exceptions to the rule.</p>
<p>But biology, like computing, has a bottom, and the bottom is not abstract. It’s physical. It’s shapes bumping into each other. In fact the great revelation of twentieth-century molecular biology was the coupling of structure to function. An aperiodic crystal that forms paired helices is the natural store of heredity <em>because</em> of its ability to curl up and unwind and double itself with complements. Hemoglobin, the first protein studied in full crystallographic detail, was shown to be an efficient store of energy <em>because</em> of how oxygen atoms snap into its body like Legos, each snap widening the remaining slots, so that it loads itself up practically at a gulp. Most proteins are like this. The ones that drive locomotion twist like little motors; the ones that contract muscles climb and compress each other. Cells, too, are constantly in conversation, and the language they speak is shape. It’s keys entering locks: a protein might straddle the cell membrane, and when a cytokine (that’s a kind of signaling molecule) docks with it, it changes its shape, so that its grip loosens on some other molecule on the interior side of the membrane, as though fumbling a football—that football might be a signal itself, on its way to the nucleus.</p>
<p>I think my understanding of biology was too flow-charty in high school. I knew that <em>DNA → RNA → protein</em> and that this was called “gene expression,” but I was confused on the basics, like, how did genes actually “turn on”? And once they were on, were they on for good? It’s clearer when you think physically. Mammalian DNA isn’t laid out as one long double helix; it’s tightly coiled and coiled again, like this, around little circular proteins called histones:</p>
<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94510096-ecfade80-01e3-11eb-848e-8a0c76dd0956.png" alt="" /></div><figcaption>DNA curled around histones. Image from <a href="https://www.youtube.com/watch?v=Rn9sRkkqGT4">this Moderna video</a>, at 1:10</figcaption>
</figure>
<p>The structure of the resulting fiber has an effect on which genes are expressed. This is because the little molecular machine that transcribes DNA into RNA has to actually <a href="https://youtu.be/5MfSYnItYvg?t=39">ride along the helix</a>, and it can only ride along some parts of it, namely the parts that aren’t <a href="https://youtu.be/gbSIBhFwQ4s">curled up out of sight</a>. “Expressing” a gene just means that at a given moment, the machine is accessing a specific portion of DNA, resulting in lots of RNA transcripts, resulting in lots of the protein that the gene codes for. Kink the fiber a bit and you change what the machine can see, thus changing the distribution of proteins it produces. You have “reprogrammed” the cell. (There are many ways to control gene expression, maybe the most common being “repressors” that park somewhere on the DNA, physically blocking the transcription machinery.)</p>
<p>One of the workhorse techniques in modern biology, called <a href="https://youtu.be/fCd6B5HRaZ8">RNA sequencing</a>, or RNA-seq for short, takes a frozen cell and counts the RNA transcripts inside it. In effect you get a snapshot of all the proteins being expressed at that moment. The result is literally a big table mapping genes to transcript counts. You see that being one kind of cell versus another—or being in one kind of cellular mood versus another, say in health versus disease—is just a matter of having a different distribution across this table. RNA-seq results are <a href="https://www.nature.com/articles/nbt.2594">often</a> represented as vectors in high-dimensional space, the counts in the table forming the coordinates; cells move through this expression space as they self-regulate and adapt to their environment.</p>
<p style="text-align: center;">*</p>
<p>How do you develop a physical understanding of biology? I like pictures. One of my favorite books is called <a href="https://www.springer.com/gp/book/9780387849249"><em>The Machinery of Life</em></a>, by David Goodsell. It’s full of gorgeous hand-drawn illustrations. Here a bacterium’s flagellar motor is shown in context, then zoomed in on in an inset, with a third picture highlighting its functional elements:</p>
<p><img class="special" src="https://user-images.githubusercontent.com/21294/36645281-38d56c2a-1a34-11e8-82bd-0d574d6d5dae.png" style="float: left;width: 196px; /*margin-left: -113px;*/"></p>
<p><img class="special" src="https://user-images.githubusercontent.com/21294/36645283-45e9b1fa-1a34-11e8-96ff-5e84cafe11f6.png" style="float: left;width: 196px;margin-left: 20px;"></p>
<p><img class="special" src="https://user-images.githubusercontent.com/21294/94501488-ed897a00-01cf-11eb-8343-384f14e8b33b.jpg" style="position: relative;left: 456px;width: 196px;top: -353px;margin-bottom: -232px;"></p>
<p>What makes the book work is that it’s basically a re-introduction to molecular biology with the following premise: the cell is <a href="https://www.righto.com/2011/07/cells-are-very-fast-and-crowded-places.html">a very fast and crowded place</a>, full of little machines, most of them protein, which you understand by taking a close look. It does an especially terrific job through insets like the above relating things at different scales. “Imagine your room filled with grains of rice. That will give you an idea of the billion or so cells that make up your fingertip.”</p>
<p>The writing is very good. It somehow gets you imagining the <em>motion</em> of these machines. It’s tempting when thinking about the cellular world to simply miniaturize our own; but at the cellular scale things behave weirdly. Movement is essentially by random diffusion. “The motions and the interactions of biological molecules are completely dominated by the surrounding water molecules… Inside the cell, [a] protein is battered from all sides by water molecules. It bounces back and forth, always at great speed, but takes a long time to get anywhere.”</p>
<p><div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94513322-6ac2e800-01ec-11eb-86ef-076e01b73216.jpg" /></div></p>
<p>It turns out that random diffusion is an incredibly slow way to travel large distances, but an incredibly fast way to explore at short distances. Being a protein inside a cell is like being at a crowded house party where it might take an hour to get across the room, but by the time you get there you’ve bumped into everybody six hundred thousand times.</p>
<p>This point is made beautifully in another favorite book of mine, <a href="https://www.springer.com/gp/book/9780387482750"><em>A Computer Scientist’s Guide to Cell Biology</em></a>, by William W. Cohen:</p>
<blockquote>
<p>Molecules that come close to an organelle tend to remain close to it for a while, and brush against it many times—Figure 20 gives some intuitions as to why this is true.</p>
</blockquote>
<p><div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94501182-3a208580-01cf-11eb-9896-145bfc03838a.png" /></div></p>
<blockquote>
<p>The result of this is that if receptors for a protein p cover even a small fraction of the surface of an organelle, the organelle will be surprisingly efficient at recognizing p. As an example, if only 0.02% of a typical eukaryotic cell’s surface has a receptor for p, the cell will be about half as efficient as if the entire surface were coated with receptors for p.</p>
</blockquote>
<p>This is the kind of fact that instantly clarifies how biology could possibly work. “Cell-sized objects thus have a ‘high bandwidth,’” Cohen writes. “They can recognize or absorb hundreds of different chemical signals, even if they are bounded by membranes.”</p>
<p>Cohen’s book is pitched as an attempt to distill what he learned in acquiring a “reading knowledge” of biology—enough to be able to follow along with a paper in <em>Cell</em>. He’s very good at explaining methods: how do biologists know what they know? For a computer scientist, a biologist’s methods can seem insane; the trouble comes from the fact that cells are too small, too numerous, too complex to analyze the way a programmer would, say in a step-by-step debugger. What biologists mostly do is stuff like:</p>
<ul class="incremental">
<li>Spin things to 15,000 Gs in centrifuges to separate pieces having different densities.</li>
<li>Separate things of different sizes using gels and magnets. (“Gel electrophoresis.”)</li>
<li>Take one of those gels and blot it with special paper to splay the parts out. Then wash the paper with an antibody that binds to a specific protein. Finally, wash the paper with <em>another</em> antibody that binds to the first one, and fluoresces when it does so. See where the meta-antibody lights up—that’s the protein you were looking for. (I think I’m describing a “Western blot.”)</li>
<li>Use the fluorescent antibody trick to tag cells expressing one or more proteins of interest. Then squeeze the cells through a tube so small that only one fits at a time. As each cell passes by, shine a laser through it to read its fluorescent tags, and use an electric charge to redirect it to a particular bin. Now you can sort and count cells that match your criteria. (“<a href="https://www.youtube.com/watch?v=EQXPJ7eeesQ">Flow cytometry</a>.”)</li>
<li>Genetically alter microorganisms to make molecular machines to spec; systematically turn off one gene at a time in a cell line and see what changes; edit the genome of a whole animal, and observe its life.</li>
</ul>
<p>Cohen found, and I have too, that in trying to acquire a reading knowledge of biology it’s almost more useful to study the methods than any individual facts. That’s because the methods are highly conserved across studies. <em>Everybody</em> does Western blots. <em>Everybody</em> does flow cytometry and RNA-seq. You’ll see this stuff in every paper. (Or variations on the same themes: separation, sorting, selection, genetic manipulation.)</p>
<p>So that’s the foundation. Or almost: I have left for last my favorite resource of all, an incredible book called <em><a href="https://www.cshlpress.com/default.tpl?cart=1601425278428641528&fromlink=T&linkaction=full&linksortby=oop_title&--eqSKUdatarq=294">The Eighth Day of Creation: Makers of the Revolution in Biology</a></em>, by Horace Freeland Judson. Parts of this book were serialized in the New Yorker in the 1970s. It is the <em>Power Broker</em> of biology, a tomic masterwork. It is not just comprehensive—Judson had hundreds of conversations with Francis Crick, with Jacques Monod and François Jacob, with their friends and spouses and colleagues; he read every paper, he read all their letters—but it pulls no punches scientifically. Judson always just describes the real thing.</p>

<p>And he emphasizes wrong turns. For example, before the discovery of tRNA—the adapter molecules that link triplets of RNA bases to the amino acids they code for—there was much confusion. It was widely believed that there had to be some kind of punctuation, because how else would one know where to start transcribing, or how to delimit one codon from the next? Certain mental models were ingrained: a going theory was that RNA formed specially shaped pockets for the different amino acids. The idea was that if you zoomed in on each triplet or quartet or whatever (the scheme was then unknown), it would always form the same unique shape that only one kind of amino acid could fit into. The amino acid chain would be formed right there alongside the RNA strand, using it almost as a mold. This was thought to happen in the nucleus. The idea that protein synthesis happened via an adapter, and that the nucleic acids therefore acted less like a mold than a digital code, more purely information—this was a major surprise.</p>
<blockquote>
<p>Sitting on the grass at Woods Hole, Crick was talking about genes and proteins, in particular about his assumption that they were colinear and Benzer and Brenner’s plan to show as much, when Ephrussi took him aback by asking how he knew that amino acids were not put in their primary sequence by something in the cytoplasm. . . . “I don’t think Boris necessarily believed it, but it was an idea he thought wasn’t impossible.”</p>
<p>. . .</p>
<p>Crick also cast his skeptical eye over Watson and Rich’s attempts to build models of RNA. “Of course, you realize that our ideas on that were totally wrong. We thought that RNA had some structure with the twenty cavities, it was that period. Mm-hmm. Unfortunately people have forgotten what it is we didn’t know at the time.”</p>
</blockquote>
<p>Put another way, the book gives us a view of science <em>before</em> discovery. It is a practitioner’s view of the subject. It is the opposite of a textbook.</p>

<p style="text-align: center;">*</p>

<p>Trying to study the immune system has gotten me into a <a href="http://worrydream.com">Bret Victor</a> sort of mood, wondering what could be done, or built, to make understanding this subject easier. A few things come to mind:</p>
<p>There are some incredible YouTube explainers. <a href="https://www.youtube.com/channel/UC6QYFutt9cluQ3uSM963_KQ">Ninja Nerd Science</a>’s videos on the immune system were a miracle—all delivered by a kid in grad school. He is a genius. What he does so well is what Goodsell, in that <em>Machinery of Life</em> book, does so well, what those famous <a href="https://www.youtube.com/watch?v=wJyUtbn0O5Y">“Inner Life of a Cell”</a> 3D animations do so well: he helps you “see the unseeable.”</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/99346396-877db280-2862-11eb-96ee-f680cc549b14.png" alt="" style=""/></a></div><figcaption><a href="https://www.youtube.com/channel/UC6QYFutt9cluQ3uSM963_KQ">Ninja Nerd Lectures YouTube channel</a></figcaption>
</figure>

<p>But I wonder whether it should be easier for regular people to create useful illustrations. Consider how easy it is to write, tooling-wise: on the web, you are only ever one click away from a Markdown-enabled textarea that allows you to create and publish pretty, hyperlinked documents. Anyone with a keyboard can contribute a few sentences to Wikipedia or answer a question on Stack Exchange. Drawing, by contrast, is hard, and animating is at least an order of magnitude harder. And yet these media are essential for understanding biological processes.</p>
<p>So what do we do?</p>
<p>It’s telling that when I was recently on a Zoom with a PhD student who was explaining RNA-seq, he pulled out his iPad Pro and essentially made a Khan Academy lecture as he talked, drawing along the way. These tools need to become more common and cheaper.</p>

<p>But we also need more software like <a href="https://web.archive.org/web/20200925063749/https://ami.org/professional-resources/expert-techniques/129-pattern-brushes-in-adobe-illustrator">pattern brushes in Adobe Illustrator</a> and <a href="https://biorender.com/">BioRender</a> to make it un-tedious to draw complex objects. We need more software like <a href="https://clarafi.com/tools/mmaya/">Molecular Maya</a>, but simplified even further, à la Victor’s <a href="http://worrydream.com/#!/StopDrawingDeadFish">Stop Drawing Dead Fish</a>, to make animating accessible to anyone who can gesture.</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/99431123-3c9e8200-28d8-11eb-928e-2fb154df69c2.png" alt="" style=""/></a></div><figcaption><a href="https://web.archive.org/web/20200925063749/https://ami.org/professional-resources/expert-techniques/129-pattern-brushes-in-adobe-illustrator">Quickly draw an endothelial lining with pattern brushes in Adobe Illustrator</a></figcaption>
</figure>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/99346530-d88da680-2862-11eb-89d2-84df12a63d06.png" alt="" style=""/></a></div><figcaption><a href="https://clarafi.com/training/intro-mmaya-dsdna-kit/">Molecular Maya’s double-stranded DNA kit</a></figcaption>
</figure>

<p>Using vector graphics and Undo history, it should be possible to make collaboratively editable images, i.e., images that can be slowly improved as part of a knowledge project like Wikipedia or Stack Exchange.</p>
<p>I want to be able to take a screenshot of the whiteboard in a Ninja Nerd lecture—a big beautiful diagram of the players in the adaptive immune system—and lasso sections of it, linking to sub-diagrams, some filled in by me, some by others, illustrating each of the parts in turn. We should have big, collaboratively edited zoomable “maps”—hierarchical diagrams—that are easy to navigate, work in standard browsers, are embeddable in blog posts, and so on.</p>
<p>Of course we need to teach more people how to draw. It’s an underrated skill. And how to write vividly, as in the wonderful books above.</p>
<p>But biology is uniquely suited to simulation—it’s a world of machines that are too small to see. The trouble is, it requires too much specialized skill to create three-dimensional interactive simulations. We need a toolkit that’s like <a href="https://mockmechanics.com/">MockMechanics</a>, or Minecraft, that maybe even <em>is</em> Minecraft, but focused on biology. Or something much better.</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94638623-64924180-02a8-11eb-8cf8-a2a4d5380139.png" alt="" style=""/></a></div><figcaption><a href="https://americanhistory.si.edu/collections/search/object/nmah_334939">Watson and Crick’s metal-and-wire model of the double helix</a></figcaption>
</figure>

<p>It’s no coincidence that Watson and Crick depended for their discovery on a literal physical model that was <a href="https://americanhistory.si.edu/collections/search/object/nmah_334939">machined</a> for them specially. Victor’s Dynamicland <a href="http://worrydream.com/cdg/ResearchAgenda-v0.19-poster.pdf">imagines</a> an immersive collaborative space in which such models can be built—now that we have computers—as quickly as you can have a conversation.</p>

<p>This is exactly what I wanted as I was writing my immune system article. I wanted to conjure models I could play with in my hand. I wanted a museum where I could walk around inside the epithelium during an immune response. I wanted to put ideas into physical space, like on a pinboard—TLRs go <em>here</em>, with the other innate armament; CD4+ T cells are <em>there</em>, in the adaptive world—but I wanted it to be as searchable, copy-pasteable, shareable, and composable as text.</p>

<figure>
<div style="text-align: center;"><img src="https://user-images.githubusercontent.com/21294/94639098-71636500-02a9-11eb-8aec-3d01ccea1ba7.png" alt="" style=""/></a></div><figcaption><a href="http://worrydream.com/cdg/ResearchAgenda-v0.19-poster.pdf">Bret Victor’s vision of dynamic tools for thinking</a></figcaption>
</figure>

<p>I think we also need inspiration. There is a romance in biology, as in any other science, that a movie like <em>Good Will Hunting</em> could bring out. We need heroes. Whoever delivers us from this pandemic in the form of a slam dunk vaccine, or a cheap quick reliable test, should become a household name, not for their own glory but for our kids—a Feynman for them to dream about someday becoming.</p>

<h2>Reading list</h2>
<ul>
<li><em><a href="https://www.springer.com/gp/book/9780387849249">The Machinery of Life</a></em>, David Goodsell</li>
<li><em><a href="https://www.springer.com/gp/book/9780387482750">A Computer Scientist’s Guide to Cell Biology</a></em>, William W. Cohen</li>
<li><em><a href="https://www.cshlpress.com/default.tpl?cart=1601425278428641528&fromlink=T&linkaction=full&linksortby=oop_title&--eqSKUdatarq=294">The Eighth Day of Creation: Makers of the Revolution in Biology</a></em>, Horace Freeland Judson</li>
<li><em><a href="https://www.amazon.com/Medusa-Snail-Notes-Biology-Watcher/dp/0140243194">The Medusa and the Snail: More Notes of a Biology Watcher</a></em>, Lewis Thomas</li>
</ul>

+ 2552
- 0
cache/2021/cfcd10768187ce1c3e598136cd8838b2/index.html
File diff suppressed because it is too large
View File


+ 2396
- 0
cache/2021/cfcd10768187ce1c3e598136cd8838b2/index.md
File diff suppressed because it is too large
View File


+ 220
- 0
cache/2021/dcba97f9e4bd70b1a152b9498dc5711c/index.html View File

@@ -0,0 +1,220 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the <title>
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>Risk: micromorts, microCOVIDs, and skydiving (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="http://interconnected.org/home/2020/09/01/microcovids">

<body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">

<article>
<header>
<h1>Risk: micromorts, microCOVIDs, and skydiving</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="http://interconnected.org/home/2020/09/01/microcovids" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<div class="f5 f4-l measure-wide">
<p class="measure f5 f4-l lh-copy black-70">There’s a standard way to understand the relative danger of any activity. A <strong>micromort</strong> is <q>a unit of risk defined as one-in-a-million chance of death</q> (<a href="https://en.wikipedia.org/wiki/Micromort">Wikipedia</a>). For example:</p>
<ul class="list ph0 ph0-ns bulleted-list">
<li class="measure f5 f4-l lh-copy black-70">skydiving is 8 micromorts per jump</li>
<li class="measure f5 f4-l lh-copy black-70">running a marathon: 26 micromorts</li>
<li class="measure f5 f4-l lh-copy black-70">1 micromort: walking 17 miles, or driving 230 miles</li>
</ul>
<p class="measure f5 f4-l lh-copy black-70">Generally being alive averages out at 24 micromorts/day.</p>
<p class="measure f5 f4-l lh-copy black-70">Assuming a 1% mortality risk, <a href="https://www.nytimes.com/2020/05/22/well/live/putting-the-risk-of-covid-19-in-perspective.html">being infected with Covid-19 is 10,000 micromorts</a>.</p>
<p class="measure f5 f4-l lh-copy black-70">But what about the risk of catching Covid in the first place?</p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">The <a href="https://www.microcovid.org">microCOVID project</a>: <q>1 microCOVID = a one-in-a-million chance of getting COVID.</q></p>
<p class="measure f5 f4-l lh-copy black-70">From the <a href="https://www.microcovid.org/paper">white paper</a>:</p>
<blockquote cite="https://www.microcovid.org/paper/2-riskiness" class="quoteback bl bw1 pl2 b--light-red ml0 italic i" data-author="The microCOVID Project" data-title='We measure the riskiness of interactions in "microCOVIDs"'>
<p class="measure f5 f4-l lh-copy black-70">For example, if you live in a region where about 1 in 1,000 people currently has COVID, then you could calculate based on studies of other indoor interactions … that meeting a friend for coffee indoors has about a 1 in 17,000 chance of giving you COVID. Such small numbers are hard to think about, so we can use microCOVIDs instead. Your coffee date would be about 60 microCOVIDs. …</p>
<p class="measure f5 f4-l lh-copy black-70">One benefit of using microCOVIDs is that you can straightforwardly add up microCOVIDs to estimate your risk over longer periods of time.</p>

</blockquote>
<p class="measure f5 f4-l lh-copy black-70"><strong><a href="https://www.microcovid.org/calculator">There’s a calculator for regular activities</a></strong> (try it!) from which I can see that</p>
<ul class="list ph0 ph0-ns bulleted-list">
<li class="measure f5 f4-l lh-copy black-70">going out to buy groceries is 20 microCOVIDs</li>
<li class="measure f5 f4-l lh-copy black-70">having a small party, indoors, with no masks is 3,000 microCOVIDs</li>
<li class="measure f5 f4-l lh-copy black-70">a 30 minute commute on the train is 100-200 microCOVIDs</li>
</ul>
<p class="measure f5 f4-l lh-copy black-70">The calculator takes into account the virus prevalence where you live.</p>
<p class="measure f5 f4-l lh-copy black-70">So I might decide that I have a risk-tolerance of 10,000 microCOVIDs per year (i.e. a 1% chance of contracting Covid per year). That is, I really don’t want to get Covid, but I’m also not prepared to never, ever leave the house.</p>
<p class="measure f5 f4-l lh-copy black-70">That gives me a budget of a little under 200 microCOVIDs per week. And I can measure my activities against that.</p>
<p class="measure f5 f4-l lh-copy black-70">(I’m not sure, from the calculator, how to account for household risk: do we have this budget between us, or each?)</p>
<p class="measure f5 f4-l lh-copy black-70">I find these kind of calculators useful to educate my intuition.</p>
<p class="measure f5 f4-l lh-copy black-70">For example, an outdoor restaurant is only 30 microCOVIDs vs 500 indoors. A significant difference! Especially against my weekly budget of 200. Commuting via public transport is out if I want to do anything else. Useful to know.</p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">Back in May, I was speculating about <a href="/home/2020/05/12/pandemic_mirror_worlds">realtime, hyperlocal pandemic forecasts</a>:</p>
<blockquote class="bl bw1 pl2 b--light-red ml0 italic i">
<p class="measure f5 f4-l lh-copy black-70">Maybe your phone could track your location and give you a live exposure number over the day, like a badge? It’s 2pm and you’re at 40 co-rads today. We recommend you leave before rush hour and take this 20 co-rad route home, also WASH YOUR HANDS.</p>
</blockquote>
<p class="measure f5 f4-l lh-copy black-70">And this microCOVID calculator is the foundation of this. If you could automatically plug in realtime regional prevalence figures, you’d be able to make a risk assessment like <em>short journey on the bus</em> vs <em>slow journey walking.</em></p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">The <em>framing</em> of the microCOVID project gives me pause: it’s about personal risk.</p>
<p class="measure f5 f4-l lh-copy black-70">But there are three distinct reasons why I follow the government lockdown advice:</p>
<ul class="list ph0 ph0-ns bulleted-list">
<li class="measure f5 f4-l lh-copy black-70"><strong>risk to my personal/household,</strong> which is the focus of the microCOVID project</li>
<li class="measure f5 f4-l lh-copy black-70"><strong>risk to others I might meet.</strong> I don’t want to accidentally infect my mum, for example</li>
<li class="measure f5 f4-l lh-copy black-70"><strong>society</strong> a.k.a. public health – we beat this pandemic through collective action, by bringing down <strong><em>Re</em></strong>, the <a href="https://theconversation.com/coronavirus-is-the-r-number-still-useful-138542">effective reproduction number</a>.</li>
</ul>
<p class="measure f5 f4-l lh-copy black-70"><em>Re</em> isn’t a measure of prevalence. It’s a measure of how easily the virus spreads. It spreads more easily when people are meeting lots of other people without masks; it spreads less easily when social contact is reduced.</p>
<p class="measure f5 f4-l lh-copy black-70">If <em>Re</em> is below 1, prevalence decreases; above 1, and it goes up.</p>
<p class="measure f5 f4-l lh-copy black-70">I think of society as a whole having an <em>Re</em> budget. The figure I heard, at the beginning of lockdown, was that we needed to reduce in-person social interactions by 75%. I assume that social interactions are the key factor in <em>Re</em> (or at least, were believed to be at the time). Other factors might be: % people wearing masks; proportion of unique vs repeat people encountered.</p>
<p class="measure f5 f4-l lh-copy black-70">There are some people we <em>need</em> to spend against the <em>Re</em> budget: health workers, anyone involved in the grocery supply chain, and other <a href="/home/2020/04/09/neutron_bombs">key workers</a>. I am happy to reduce my in-person interactions by, say, 90% if that means that key workers need to reduce by only 60%.</p>
<p class="measure f5 f4-l lh-copy black-70">Is there a translation between microCOVIDs and <em>Re?</em> I don’t know. Maybe +100 microCOVIDs/week/person in a region with a population density of such-and-such contributes +0.1 to <em>Re.</em></p>
<p class="measure f5 f4-l lh-copy black-70">I’d love to have that connection between personal activity and social good.</p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">This pandemic has given us a whole new vocabulary around virality that wasn’t commonplace before. I wonder how we’ll use it in the future?</p>
<p class="measure f5 f4-l lh-copy black-70">How many micro-RTs does one of my tweets have, where 1 micro-RT is a one in a million chance of it going viral?</p>
<p class="measure f5 f4-l lh-copy black-70">Can we measure the effective reproduction rate of a given social media influencer?</p>
<p class="measure f5 f4-l lh-copy black-70">And so on.</p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">I mentioned skydiving at the top of this post <em>(8 micromorts).</em> Of course, there are also externalities. And that reminds me of something else I read:</p>
<p class="measure f5 f4-l lh-copy black-70">In the UK, skydiving is a common way to raise money for charity.</p>
<p class="measure f5 f4-l lh-copy black-70">BUT…</p>
<blockquote class="bl bw1 pl2 b--light-red ml0 italic i">
<p class="measure f5 f4-l lh-copy black-70">The injury rate in charity-parachutists was 11% at an average cost of 3751 Pounds per casualty. Sixty-three percent of casualties who were charity-parachutists required hospital admission, representing a serious injury rate of 7%, at an average cost of 5781 Pounds per patient. The amount raised per person for charity was 30 Pounds. <strong>Each pound raised for charity cost the NHS 13.75 Pounds in return.</strong></p>
</blockquote>
<p class="measure f5 f4-l lh-copy black-70">Conclusion: <q>Parachuting for charity costs more money than it raises.</q></p>
<p class="measure f5 f4-l lh-copy black-70"><em>Here’s the paper:</em></p>
<p class="measure f5 f4-l lh-copy black-70">Lee CT, Williams P, Hadden WA. <a href="https://pubmed.ncbi.nlm.nih.gov/10476298/">Parachuting for charity: is it worth the money? A 5-year audit of parachute injuries in Tayside and the cost to the NHS.</a> <em>Injury.</em> 1999;30(4):283-287. </p>
</div>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="/david/log/" title="Accès au flux RSS">🤖</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
<abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend>Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 70
- 0
cache/2021/dcba97f9e4bd70b1a152b9498dc5711c/index.md View File

@@ -0,0 +1,70 @@
title: Risk: micromorts, microCOVIDs, and skydiving
url: http://interconnected.org/home/2020/09/01/microcovids
hash_url: dcba97f9e4bd70b1a152b9498dc5711c

<div class="f5 f4-l measure-wide">
<p class="measure f5 f4-l lh-copy black-70">There’s a standard way to understand the relative danger of any activity. A <strong>micromort</strong> is <q>a unit of risk defined as one-in-a-million chance of death</q> (<a href="https://en.wikipedia.org/wiki/Micromort">Wikipedia</a>). For example:</p>
<ul class="list ph0 ph0-ns bulleted-list">
<li class="measure f5 f4-l lh-copy black-70">skydiving is 8 micromorts per jump</li>
<li class="measure f5 f4-l lh-copy black-70">running a marathon: 26 micromorts</li>
<li class="measure f5 f4-l lh-copy black-70">1 micromort: walking 17 miles, or driving 230 miles</li>
</ul>
<p class="measure f5 f4-l lh-copy black-70">Generally being alive averages out at 24 micromorts/day.</p>
<p class="measure f5 f4-l lh-copy black-70">Assuming a 1% mortality risk, <a href="https://www.nytimes.com/2020/05/22/well/live/putting-the-risk-of-covid-19-in-perspective.html">being infected with Covid-19 is 10,000 micromorts</a>.</p>
<p class="measure f5 f4-l lh-copy black-70">But what about the risk of catching Covid in the first place?</p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">The <a href="https://www.microcovid.org">microCOVID project</a>: <q>1 microCOVID = a one-in-a-million chance of getting COVID.</q></p>
<p class="measure f5 f4-l lh-copy black-70">From the <a href="https://www.microcovid.org/paper">white paper</a>:</p>
<blockquote cite="https://www.microcovid.org/paper/2-riskiness" class="quoteback bl bw1 pl2 b--light-red ml0 italic i" data-author="The microCOVID Project" data-title='We measure the riskiness of interactions in "microCOVIDs"'>
<p class="measure f5 f4-l lh-copy black-70">For example, if you live in a region where about 1 in 1,000 people currently has COVID, then you could calculate based on studies of other indoor interactions … that meeting a friend for coffee indoors has about a 1 in 17,000 chance of giving you COVID. Such small numbers are hard to think about, so we can use microCOVIDs instead. Your coffee date would be about 60 microCOVIDs. …</p>
<p class="measure f5 f4-l lh-copy black-70">One benefit of using microCOVIDs is that you can straightforwardly add up microCOVIDs to estimate your risk over longer periods of time.</p>

</blockquote>
<p class="measure f5 f4-l lh-copy black-70"><strong><a href="https://www.microcovid.org/calculator">There’s a calculator for regular activities</a></strong> (try it!) from which I can see that</p>
<ul class="list ph0 ph0-ns bulleted-list">
<li class="measure f5 f4-l lh-copy black-70">going out to buy groceries is 20 microCOVIDs</li>
<li class="measure f5 f4-l lh-copy black-70">having a small party, indoors, with no masks is 3,000 microCOVIDs</li>
<li class="measure f5 f4-l lh-copy black-70">a 30 minute commute on the train is 100-200 microCOVIDs</li>
</ul>
<p class="measure f5 f4-l lh-copy black-70">The calculator takes into account the virus prevalence where you live.</p>
<p class="measure f5 f4-l lh-copy black-70">So I might decide that I have a risk-tolerance of 10,000 microCOVIDs per year (i.e. a 1% chance of contracting Covid per year). That is, I really don’t want to get Covid, but I’m also not prepared to never, ever leave the house.</p>
<p class="measure f5 f4-l lh-copy black-70">That gives me a budget of a little under 200 microCOVIDs per week. And I can measure my activities against that.</p>
<p class="measure f5 f4-l lh-copy black-70">(I’m not sure, from the calculator, how to account for household risk: do we have this budget between us, or each?)</p>
<p class="measure f5 f4-l lh-copy black-70">I find these kind of calculators useful to educate my intuition.</p>
<p class="measure f5 f4-l lh-copy black-70">For example, an outdoor restaurant is only 30 microCOVIDs vs 500 indoors. A significant difference! Especially against my weekly budget of 200. Commuting via public transport is out if I want to do anything else. Useful to know.</p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">Back in May, I was speculating about <a href="/home/2020/05/12/pandemic_mirror_worlds">realtime, hyperlocal pandemic forecasts</a>:</p>
<blockquote class="bl bw1 pl2 b--light-red ml0 italic i">
<p class="measure f5 f4-l lh-copy black-70">Maybe your phone could track your location and give you a live exposure number over the day, like a badge? It’s 2pm and you’re at 40 co-rads today. We recommend you leave before rush hour and take this 20 co-rad route home, also WASH YOUR HANDS.</p>
</blockquote>
<p class="measure f5 f4-l lh-copy black-70">And this microCOVID calculator is the foundation of this. If you could automatically plug in realtime regional prevalence figures, you’d be able to make a risk assessment like <em>short journey on the bus</em> vs <em>slow journey walking.</em></p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">The <em>framing</em> of the microCOVID project gives me pause: it’s about personal risk.</p>
<p class="measure f5 f4-l lh-copy black-70">But there are three distinct reasons why I follow the government lockdown advice:</p>
<ul class="list ph0 ph0-ns bulleted-list">
<li class="measure f5 f4-l lh-copy black-70"><strong>risk to my personal/household,</strong> which is the focus of the microCOVID project</li>
<li class="measure f5 f4-l lh-copy black-70"><strong>risk to others I might meet.</strong> I don’t want to accidentally infect my mum, for example</li>
<li class="measure f5 f4-l lh-copy black-70"><strong>society</strong> a.k.a. public health – we beat this pandemic through collective action, by bringing down <strong><em>Re</em></strong>, the <a href="https://theconversation.com/coronavirus-is-the-r-number-still-useful-138542">effective reproduction number</a>.</li>
</ul>
<p class="measure f5 f4-l lh-copy black-70"><em>Re</em> isn’t a measure of prevalence. It’s a measure of how easily the virus spreads. It spreads more easily when people are meeting lots of other people without masks; it spreads less easily when social contact is reduced.</p>
<p class="measure f5 f4-l lh-copy black-70">If <em>Re</em> is below 1, prevalence decreases; above 1, and it goes up.</p>
<p class="measure f5 f4-l lh-copy black-70">I think of society as a whole having an <em>Re</em> budget. The figure I heard, at the beginning of lockdown, was that we needed to reduce in-person social interactions by 75%. I assume that social interactions are the key factor in <em>Re</em> (or at least, were believed to be at the time). Other factors might be: % people wearing masks; proportion of unique vs repeat people encountered.</p>
<p class="measure f5 f4-l lh-copy black-70">There are some people we <em>need</em> to spend against the <em>Re</em> budget: health workers, anyone involved in the grocery supply chain, and other <a href="/home/2020/04/09/neutron_bombs">key workers</a>. I am happy to reduce my in-person interactions by, say, 90% if that means that key workers need to reduce by only 60%.</p>
<p class="measure f5 f4-l lh-copy black-70">Is there a translation between microCOVIDs and <em>Re?</em> I don’t know. Maybe +100 microCOVIDs/week/person in a region with a population density of such-and-such contributes +0.1 to <em>Re.</em></p>
<p class="measure f5 f4-l lh-copy black-70">I’d love to have that connection between personal activity and social good.</p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">This pandemic has given us a whole new vocabulary around virality that wasn’t commonplace before. I wonder how we’ll use it in the future?</p>
<p class="measure f5 f4-l lh-copy black-70">How many micro-RTs does one of my tweets have, where 1 micro-RT is a one in a million chance of it going viral?</p>
<p class="measure f5 f4-l lh-copy black-70">Can we measure the effective reproduction rate of a given social media influencer?</p>
<p class="measure f5 f4-l lh-copy black-70">And so on.</p>
<hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
<p class="measure f5 f4-l lh-copy black-70">I mentioned skydiving at the top of this post <em>(8 micromorts).</em> Of course, there are also externalities. And that reminds me of something else I read:</p>
<p class="measure f5 f4-l lh-copy black-70">In the UK, skydiving is a common way to raise money for charity.</p>
<p class="measure f5 f4-l lh-copy black-70">BUT…</p>
<blockquote class="bl bw1 pl2 b--light-red ml0 italic i">
<p class="measure f5 f4-l lh-copy black-70">The injury rate in charity-parachutists was 11% at an average cost of 3751 Pounds per casualty. Sixty-three percent of casualties who were charity-parachutists required hospital admission, representing a serious injury rate of 7%, at an average cost of 5781 Pounds per patient. The amount raised per person for charity was 30 Pounds. <strong>Each pound raised for charity cost the NHS 13.75 Pounds in return.</strong></p>
</blockquote>
<p class="measure f5 f4-l lh-copy black-70">Conclusion: <q>Parachuting for charity costs more money than it raises.</q></p>
<p class="measure f5 f4-l lh-copy black-70"><em>Here’s the paper:</em></p>
<p class="measure f5 f4-l lh-copy black-70">Lee CT, Williams P, Hadden WA. <a href="https://pubmed.ncbi.nlm.nih.gov/10476298/">Parachuting for charity: is it worth the money? A 5-year audit of parachute injuries in Tayside and the cost to the NHS.</a> <em>Injury.</em> 1999;30(4):283-287. </p>
</div>

+ 292
- 0
cache/2021/e8ebcfcc0dbd4336a82f618a1bd1a818/index.html View File

@@ -0,0 +1,292 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the <title>
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>DNA Chisel - a versatile sequence optimizer (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://edinburgh-genome-foundry.github.io/DnaChisel/">

<body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">

<article>
<header>
<h1>DNA Chisel - a versatile sequence optimizer</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="https://edinburgh-genome-foundry.github.io/DnaChisel/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>DNA Chisel (complete documentation <a class="reference external" href="https://edinburgh-genome-foundry.github.io/DnaChisel/">here</a>)
is a Python library for optimizing DNA sequences with respect to a set of
constraints and optimization objectives. It comes with over 15 classes of
sequence specifications which can be composed to, for instance, codon-optimize
genes, meet the constraints of a commercial DNA provider, avoid homologies
between sequences, tune GC content, or all of this at once!</p>

<p>DNA Chisel also allows users to define their own specifications in Python,
making the library suitable for a large range of automated sequence design
applications, and complex custom design projects. It can be used as a Python
library, a command-line interface, or a <a class="reference external" href="https://cuba.genomefoundry.org/sculpt_a_sequence">web application</a>.</p>

<div class="section" id="example-of-use">
<h2>Example of use</h2>
<div class="section" id="defining-a-problem-via-scripts">
<h3>Defining a problem via scripts</h3>
<p>In this basic example we generate a random sequence and optimize it so that</p>
<ul class="simple">
<li><p>It will be rid of BsaI sites.</p></li>
<li><p>GC content will be between 30% and 70% on every 50bp window.</p></li>
<li><p>The reading frame at position 500-1400 will be codon-optimized for <em>E. coli</em>.</p></li>
</ul>
<p>Here is the code to achieve that:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">dnachisel</span> <span class="kn">import</span> <span class="o">*</span>

<span class="c1"># DEFINE THE OPTIMIZATION PROBLEM</span>

<span class="n">problem</span> <span class="o">=</span> <span class="n">DnaOptimizationProblem</span><span class="p">(</span>
<span class="n">sequence</span><span class="o">=</span><span class="n">random_dna_sequence</span><span class="p">(</span><span class="mi">10000</span><span class="p">),</span>
<span class="n">constraints</span><span class="o">=</span><span class="p">[</span>
<span class="n">AvoidPattern</span><span class="p">(</span><span class="s2">"BsaI_site"</span><span class="p">),</span>
<span class="n">EnforceGCContent</span><span class="p">(</span><span class="n">mini</span><span class="o">=</span><span class="mf">0.3</span><span class="p">,</span> <span class="n">maxi</span><span class="o">=</span><span class="mf">0.7</span><span class="p">,</span> <span class="n">window</span><span class="o">=</span><span class="mi">50</span><span class="p">),</span>
<span class="n">EnforceTranslation</span><span class="p">(</span><span class="n">location</span><span class="o">=</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">1400</span><span class="p">))</span>
<span class="p">],</span>
<span class="n">objectives</span><span class="o">=</span><span class="p">[</span><span class="n">CodonOptimize</span><span class="p">(</span><span class="n">species</span><span class="o">=</span><span class="s1">'e_coli'</span><span class="p">,</span> <span class="n">location</span><span class="o">=</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">1400</span><span class="p">))]</span>
<span class="p">)</span>

<span class="c1"># SOLVE THE CONSTRAINTS, OPTIMIZE WITH RESPECT TO THE OBJECTIVE</span>

<span class="n">problem</span><span class="o">.</span><span class="n">resolve_constraints</span><span class="p">()</span>
<span class="n">problem</span><span class="o">.</span><span class="n">optimize</span><span class="p">()</span>

<span class="c1"># PRINT SUMMARIES TO CHECK THAT CONSTRAINTS PASS</span>

<span class="k">print</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">constraints_text_summary</span><span class="p">())</span>
<span class="k">print</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">objectives_text_summary</span><span class="p">())</span>
</pre></div>
</div>
<p>DnaChisel implements advanced constraints such as the preservation of coding
sequences, or the inclusion or exclusion of advanced patterns (see
<a class="reference external" href="https://edinburgh-genome-foundry.github.io/DnaChisel/ref/builtin_specifications.html">this page</a>
for an overview of available specifications), but it is also easy to implement
our own constraints and objectives as subclasses of <code class="docutils literal notranslate"><span class="pre">dnachisel.Specification</span></code>.</p>
</div>
<div class="section" id="defining-a-problem-via-genbank-features">
<h3>Defining a problem via Genbank features</h3>
<p>You can also define a problem by annotating directly a Genbank as follows:</p>
<p align="center">
<img alt="report" title="report" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/DnaChisel/master/docs/_static/images/example_sequence_map.png">
<br><br>
</p><p>I this record:</p>
<ul class="simple">
<li><p>Constraints (colored in blue in the illustration) are features of type
<code class="docutils literal notranslate"><span class="pre">misc_feature</span></code> with a prefix <code class="docutils literal notranslate"><span class="pre">@</span></code> followed
by the name of the constraints and its parameters, which are the same as in
python scripts.</p></li>
<li><p>Optimization objectives (colored in yellow in the illustration) are features
of type <code class="docutils literal notranslate"><span class="pre">misc_feature</span></code> with a prefix <code class="docutils literal notranslate"><span class="pre">~</span></code> followed by the name of the
constraints and its parameters.</p></li>
</ul>
<p>The file can be directly fed to the <a class="reference external" href="https://cuba.genomefoundry.org/sculpt_a_sequence">web app</a>
or processed via the command line interface:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Output the result to "optimized_record.gb"</span>
dnachisel annotated_record.gb optimized_record.gb
</pre></div>
</div>
<p>Or via a Python script:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">dnachisel</span> <span class="kn">import</span> <span class="n">DnaOptimizationProblem</span>
<span class="n">problem</span> <span class="o">=</span> <span class="n">DnaOptimizationProblem</span><span class="o">.</span><span class="n">from_record</span><span class="p">(</span><span class="s2">"my_record.gb"</span><span class="p">)</span>
<span class="n">problem</span><span class="o">.</span><span class="n">optimize_with_report</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="s2">"report.zip"</span><span class="p">)</span>
</pre></div>
</div>
<p>By default, only the built-in specifications of DnaChisel can be used in the
annotations, however it is easy to add your own specifications to the Genbank
parser, and build applications supporting custom specifications on top of
DnaChisel.</p>
</div>
<div class="section" id="reports">
<h3>Reports</h3>
<p>DnaChisel also implements features for verification and troubleshooting. For
instance by generating optimization reports:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">problem</span><span class="o">.</span><span class="n">optimize_with_report</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="s2">"report.zip"</span><span class="p">)</span>
</pre></div>
</div>
<p>Here is an example of summary report:</p>
<p align="center">
<img alt="report" title="report" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/DnaChisel/master/docs/_static/images/report_screenshot.png">
<br><br>
</p></div>
</div>

<div class="section" id="how-it-works">
<h2>How it works</h2>
<p>DnaChisel hunts down every constraint breach and suboptimal region by
recreating local version of the problem around these regions. Each type of
constraint can be locally <em>reduced</em> and solved in its own way, to ensure fast
and reliable resolution.</p>
<p>Below is an animation of the algorithm in action:</p>
<p align="center">
<img alt="DNA Chisel algorithm" title="DNA Chisel" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/DnaChisel/master/docs/_static/images/dnachisel_algorithm.gif">
<br>
</p></div>

<div class="section" id="installation">
<h2>Installation</h2>
<p>You can install DnaChisel through PIP:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">dnachisel</span><span class="p">[</span><span class="n">reports</span><span class="p">]</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">[reports]</span></code> suffix will install some heavier libraries
(Matplotlib, PDF reports, sequenticon) for report generation,
you can omit it if you just want to use DNA chisel to edit sequences and
generate genbanks (for any interactive use, reports are highly recommended).</p>
<p>Alternatively, you can unzip the sources in a folder and type</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">install</span>
</pre></div>
</div>
<p>Optionally, also install Bowtie to be able to use <code class="docutils literal notranslate"><span class="pre">AvoidMatches</span></code> (which
removes short homologies with existing genomes). On Ubuntu:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">bowtie</span>
</pre></div>
</div>
</div>

<div class="section" id="more-biology-software">
<h2>More biology software</h2>
<a class="reference external image-reference" href="https://edinburgh-genome-foundry.github.io/"><img alt="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Edinburgh-Genome-Foundry.github.io/master/static/imgs/logos/egf-codon-horizontal.png" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Edinburgh-Genome-Foundry.github.io/master/static/imgs/logos/egf-codon-horizontal.png"></a>
<p>DNA Chisel is part of the <a class="reference external" href="https://edinburgh-genome-foundry.github.io/">EGF Codons</a> synthetic biology software suite for DNA design, manufacturing and validation.</p>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="/david/log/" title="Accès au flux RSS">🤖</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
<abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend>Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 138
- 0
cache/2021/e8ebcfcc0dbd4336a82f618a1bd1a818/index.md View File

@@ -0,0 +1,138 @@
title: DNA Chisel - a versatile sequence optimizer
url: https://edinburgh-genome-foundry.github.io/DnaChisel/
hash_url: e8ebcfcc0dbd4336a82f618a1bd1a818

<p>DNA Chisel (complete documentation <a class="reference external" href="https://edinburgh-genome-foundry.github.io/DnaChisel/">here</a>)
is a Python library for optimizing DNA sequences with respect to a set of
constraints and optimization objectives. It comes with over 15 classes of
sequence specifications which can be composed to, for instance, codon-optimize
genes, meet the constraints of a commercial DNA provider, avoid homologies
between sequences, tune GC content, or all of this at once!</p>
<p>DNA Chisel also allows users to define their own specifications in Python,
making the library suitable for a large range of automated sequence design
applications, and complex custom design projects. It can be used as a Python
library, a command-line interface, or a <a class="reference external" href="https://cuba.genomefoundry.org/sculpt_a_sequence">web application</a>.</p>
<div class="section" id="example-of-use">
<h2>Example of use</h2>
<div class="section" id="defining-a-problem-via-scripts">
<h3>Defining a problem via scripts</h3>
<p>In this basic example we generate a random sequence and optimize it so that</p>
<ul class="simple">
<li><p>It will be rid of BsaI sites.</p></li>
<li><p>GC content will be between 30% and 70% on every 50bp window.</p></li>
<li><p>The reading frame at position 500-1400 will be codon-optimized for <em>E. coli</em>.</p></li>
</ul>
<p>Here is the code to achieve that:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">dnachisel</span> <span class="kn">import</span> <span class="o">*</span>

<span class="c1"># DEFINE THE OPTIMIZATION PROBLEM</span>

<span class="n">problem</span> <span class="o">=</span> <span class="n">DnaOptimizationProblem</span><span class="p">(</span>
<span class="n">sequence</span><span class="o">=</span><span class="n">random_dna_sequence</span><span class="p">(</span><span class="mi">10000</span><span class="p">),</span>
<span class="n">constraints</span><span class="o">=</span><span class="p">[</span>
<span class="n">AvoidPattern</span><span class="p">(</span><span class="s2">"BsaI_site"</span><span class="p">),</span>
<span class="n">EnforceGCContent</span><span class="p">(</span><span class="n">mini</span><span class="o">=</span><span class="mf">0.3</span><span class="p">,</span> <span class="n">maxi</span><span class="o">=</span><span class="mf">0.7</span><span class="p">,</span> <span class="n">window</span><span class="o">=</span><span class="mi">50</span><span class="p">),</span>
<span class="n">EnforceTranslation</span><span class="p">(</span><span class="n">location</span><span class="o">=</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">1400</span><span class="p">))</span>
<span class="p">],</span>
<span class="n">objectives</span><span class="o">=</span><span class="p">[</span><span class="n">CodonOptimize</span><span class="p">(</span><span class="n">species</span><span class="o">=</span><span class="s1">'e_coli'</span><span class="p">,</span> <span class="n">location</span><span class="o">=</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">1400</span><span class="p">))]</span>
<span class="p">)</span>

<span class="c1"># SOLVE THE CONSTRAINTS, OPTIMIZE WITH RESPECT TO THE OBJECTIVE</span>

<span class="n">problem</span><span class="o">.</span><span class="n">resolve_constraints</span><span class="p">()</span>
<span class="n">problem</span><span class="o">.</span><span class="n">optimize</span><span class="p">()</span>

<span class="c1"># PRINT SUMMARIES TO CHECK THAT CONSTRAINTS PASS</span>

<span class="k">print</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">constraints_text_summary</span><span class="p">())</span>
<span class="k">print</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">objectives_text_summary</span><span class="p">())</span>
</pre></div>
</div>
<p>DnaChisel implements advanced constraints such as the preservation of coding
sequences, or the inclusion or exclusion of advanced patterns (see
<a class="reference external" href="https://edinburgh-genome-foundry.github.io/DnaChisel/ref/builtin_specifications.html">this page</a>
for an overview of available specifications), but it is also easy to implement
our own constraints and objectives as subclasses of <code class="docutils literal notranslate"><span class="pre">dnachisel.Specification</span></code>.</p>
</div>
<div class="section" id="defining-a-problem-via-genbank-features">
<h3>Defining a problem via Genbank features</h3>
<p>You can also define a problem by annotating directly a Genbank as follows:</p>
<p align="center">
<img alt="report" title="report" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/DnaChisel/master/docs/_static/images/example_sequence_map.png">
<br><br>
</p><p>I this record:</p>
<ul class="simple">
<li><p>Constraints (colored in blue in the illustration) are features of type
<code class="docutils literal notranslate"><span class="pre">misc_feature</span></code> with a prefix <code class="docutils literal notranslate"><span class="pre">@</span></code> followed
by the name of the constraints and its parameters, which are the same as in
python scripts.</p></li>
<li><p>Optimization objectives (colored in yellow in the illustration) are features
of type <code class="docutils literal notranslate"><span class="pre">misc_feature</span></code> with a prefix <code class="docutils literal notranslate"><span class="pre">~</span></code> followed by the name of the
constraints and its parameters.</p></li>
</ul>
<p>The file can be directly fed to the <a class="reference external" href="https://cuba.genomefoundry.org/sculpt_a_sequence">web app</a>
or processed via the command line interface:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Output the result to "optimized_record.gb"</span>
dnachisel annotated_record.gb optimized_record.gb
</pre></div>
</div>
<p>Or via a Python script:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">dnachisel</span> <span class="kn">import</span> <span class="n">DnaOptimizationProblem</span>
<span class="n">problem</span> <span class="o">=</span> <span class="n">DnaOptimizationProblem</span><span class="o">.</span><span class="n">from_record</span><span class="p">(</span><span class="s2">"my_record.gb"</span><span class="p">)</span>
<span class="n">problem</span><span class="o">.</span><span class="n">optimize_with_report</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="s2">"report.zip"</span><span class="p">)</span>
</pre></div>
</div>
<p>By default, only the built-in specifications of DnaChisel can be used in the
annotations, however it is easy to add your own specifications to the Genbank
parser, and build applications supporting custom specifications on top of
DnaChisel.</p>
</div>
<div class="section" id="reports">
<h3>Reports</h3>
<p>DnaChisel also implements features for verification and troubleshooting. For
instance by generating optimization reports:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">problem</span><span class="o">.</span><span class="n">optimize_with_report</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="s2">"report.zip"</span><span class="p">)</span>
</pre></div>
</div>
<p>Here is an example of summary report:</p>
<p align="center">
<img alt="report" title="report" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/DnaChisel/master/docs/_static/images/report_screenshot.png">
<br><br>
</p></div>
</div>
<div class="section" id="how-it-works">
<h2>How it works</h2>
<p>DnaChisel hunts down every constraint breach and suboptimal region by
recreating local version of the problem around these regions. Each type of
constraint can be locally <em>reduced</em> and solved in its own way, to ensure fast
and reliable resolution.</p>
<p>Below is an animation of the algorithm in action:</p>
<p align="center">
<img alt="DNA Chisel algorithm" title="DNA Chisel" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/DnaChisel/master/docs/_static/images/dnachisel_algorithm.gif">
<br>
</p></div>
<div class="section" id="installation">
<h2>Installation</h2>
<p>You can install DnaChisel through PIP:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">dnachisel</span><span class="p">[</span><span class="n">reports</span><span class="p">]</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">[reports]</span></code> suffix will install some heavier libraries
(Matplotlib, PDF reports, sequenticon) for report generation,
you can omit it if you just want to use DNA chisel to edit sequences and
generate genbanks (for any interactive use, reports are highly recommended).</p>
<p>Alternatively, you can unzip the sources in a folder and type</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">install</span>
</pre></div>
</div>
<p>Optionally, also install Bowtie to be able to use <code class="docutils literal notranslate"><span class="pre">AvoidMatches</span></code> (which
removes short homologies with existing genomes). On Ubuntu:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">bowtie</span>
</pre></div>
</div>
</div>

<div class="section" id="more-biology-software">
<h2>More biology software</h2>
<a class="reference external image-reference" href="https://edinburgh-genome-foundry.github.io/"><img alt="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Edinburgh-Genome-Foundry.github.io/master/static/imgs/logos/egf-codon-horizontal.png" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Edinburgh-Genome-Foundry.github.io/master/static/imgs/logos/egf-codon-horizontal.png"></a>
<p>DNA Chisel is part of the <a class="reference external" href="https://edinburgh-genome-foundry.github.io/">EGF Codons</a> synthetic biology software suite for DNA design, manufacturing and validation.</p>

+ 241
- 0
cache/2021/fe75ef80663602733dbe24cc717f257b/index.html View File

@@ -0,0 +1,241 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the <title>
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>The race for coronavirus vaccines: a graphical guide (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://www.nature.com/articles/d41586-020-01221-y">

<body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">

<article>
<header>
<h1>The race for coronavirus vaccines: a graphical guide</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="https://www.nature.com/articles/d41586-020-01221-y" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>More than 90 vaccines are being developed against SARS-CoV-2 by research teams in companies and universities across the world. Researchers are trialling different technologies, some of which haven’t been used in a licensed vaccine before. At least six groups have already begun injecting formulations into volunteers in safety trials; others have started testing in animals. <i>Nature</i>’s graphical guide explains each vaccine design.</p>

<figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how the body develops immunity to coronavirus." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935546.png">
<figcaption>
<p class="figure__caption sans-serif"><span class="mr10">Graphics: Nik Spencer/<i>Nature</i></span><span></span></p>
</figcaption>
</div>
</figure>

<h2><b>SARS-CoV-2 vaccines: a variety of approaches</b></h2>

<p>All vaccines aim to expose the body to an antigen that won’t cause disease, but will provoke an immune response that can block or kill the virus if a person becomes infected. There are at least eight types being tried against the coronavirus, and they rely on different viruses or viral parts.</p>

<figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graph that shows the number of coronavirus vaccines in development." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935130.png">
<figcaption>
<p class="figure__caption sans-serif"><span class="mr10">Sources: <i>Nature</i> analysis based on: WHO COVID-19 Vaccine Landscape/Milken Institute COVID-19 Treatment and Vaccine Tracker/T. Thanh Le <i>et al. Nature Rev. Drug. Disc</i>. <a href="http://doi.org/ggrnbr" data-track="click" data-label="http://doi.org/ggrnbr" data-track-category="body text link">http://doi.org/ggrnbr</a> (2020)/F. Amanat &amp; F. Krammer <i>Immunity</i> <b>52</b>, 583–589 (2020)/W. Shang <i>et al. npj Vaccines</i> <b>5</b>, 18 (2020).</span><span></span></p>
</figcaption>
</div>
</figure>

<h2>Virus vaccines</h2>

<p>At least seven teams are developing vaccines using the virus itself, in a weakened or inactivated form. Many existing vaccines are made in this way, such as those against measles and polio, but they require extensive safety testing. Sinovac Biotech in Beijing has started to test an inactivated version of SARS-CoV-2 in humans.</p>

<figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how weakened or inactivated coronavirus can be used in a vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935124.png">
<figcaption>
<p class="figure__caption sans-serif"><span></span></p>
</figcaption>
</div>
</figure>

<h2>Viral-vector vaccines</h2>

<p>Around 25 groups say they are working on viral-vector vaccines. A virus such as measles or adenovirus is genetically engineered so that it can produce coronavirus proteins in the body. These viruses are weakened so they cannot cause disease. There are two types: those that can still replicate within cells and those that cannot because key genes have been disabled.</p>

<figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how viral vectors containing coronavirus genes can be used in a vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935122.png">
<figcaption>
<p class="figure__caption sans-serif"><span></span></p>
</figcaption>
</div>
</figure>

<h2>Nucleic-acid vaccines</h2>

<p>At least 20 teams are aiming to use genetic instructions (in the form of DNA or RNA) for a coronavirus protein that prompts an immune response. The nucleic acid is inserted into human cells, which then churn out copies of the virus protein; most of these vaccines encode the virus’s spike protein.</p>

<figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how coronavirus genetic material can be used in a vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935118.png">
<figcaption>
<p class="figure__caption sans-serif"><span></span></p>
</figcaption>
</div>
</figure>

<h2>Protein-based vaccines</h2>

<p>Many researchers want to inject coronavirus proteins directly into the body. Fragments of proteins or protein shells that mimic the coronavirus’s outer coat can also be used.</p>

<figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how coronavirus proteins can be used in a vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935126.png">
<figcaption>
<p class="figure__caption sans-serif"><span></span></p>
</figcaption>
</div>
</figure>

<h2><b>Industry trials</b></h2>

<p>More than 70% of the groups leading vaccine research efforts are from industrial or private firms. Clinical trials start with small safety studies in animals and people, followed by much larger trials to determine whether a vaccine generates an immune response. Researchers are accelerating these steps and hope to have a vaccine ready in 18 months.</p>

<figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graph that shows the types of developers from different regions of the world that are developing a coronavirus vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935120.png">
<figcaption>
<p class="figure__caption sans-serif"><span class="mr10">Source: Fig. 2 in T. Thanh Le <i>et al</i>. <i>Nature Rev. Drug. Disc</i>. <a href="http://doi.org/ggrnbr" data-track="click" data-label="http://doi.org/ggrnbr" data-track-category="body text link">http://doi.org/ggrnbr</a> (2020).</span><span></span></p>
</figcaption>
</div>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil">🏠</a> •
<a href="/david/log/" title="Accès au flux RSS">🤖</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
<abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend>Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 53
- 0
cache/2021/fe75ef80663602733dbe24cc717f257b/index.md View File

@@ -0,0 +1,53 @@
title: The race for coronavirus vaccines: a graphical guide
url: https://www.nature.com/articles/d41586-020-01221-y
hash_url: fe75ef80663602733dbe24cc717f257b

<p>More than 90 vaccines are being developed against SARS-CoV-2 by research teams in companies and universities across the world. Researchers are trialling different technologies, some of which haven’t been used in a licensed vaccine before. At least six groups have already begun injecting formulations into volunteers in safety trials; others have started testing in animals. <i>Nature</i>’s graphical guide explains each vaccine design.</p><figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how the body develops immunity to coronavirus." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935546.png">
<figcaption>
<p class="figure__caption sans-serif"><span class="mr10">Graphics: Nik Spencer/<i>Nature</i></span><span></span></p>
</figcaption>
</div>
</figure><h2><b>SARS-CoV-2 vaccines: a variety of approaches</b></h2><p>All vaccines aim to expose the body to an antigen that won’t cause disease, but will provoke an immune response that can block or kill the virus if a person becomes infected. There are at least eight types being tried against the coronavirus, and they rely on different viruses or viral parts.</p><figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graph that shows the number of coronavirus vaccines in development." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935130.png">
<figcaption>
<p class="figure__caption sans-serif"><span class="mr10">Sources: <i>Nature</i> analysis based on: WHO COVID-19 Vaccine Landscape/Milken Institute COVID-19 Treatment and Vaccine Tracker/T. Thanh Le <i>et al. Nature Rev. Drug. Disc</i>. <a href="http://doi.org/ggrnbr" data-track="click" data-label="http://doi.org/ggrnbr" data-track-category="body text link">http://doi.org/ggrnbr</a> (2020)/F. Amanat &amp; F. Krammer <i>Immunity</i> <b>52</b>, 583–589 (2020)/W. Shang <i>et al. npj Vaccines</i> <b>5</b>, 18 (2020).</span><span></span></p>
</figcaption>
</div>
</figure><h2>Virus vaccines</h2><p>At least seven teams are developing vaccines using the virus itself, in a weakened or inactivated form. Many existing vaccines are made in this way, such as those against measles and polio, but they require extensive safety testing. Sinovac Biotech in Beijing has started to test an inactivated version of SARS-CoV-2 in humans.</p><figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how weakened or inactivated coronavirus can be used in a vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935124.png">
<figcaption>
<p class="figure__caption sans-serif"><span></span></p>
</figcaption>
</div>
</figure><h2>Viral-vector vaccines</h2><p>Around 25 groups say they are working on viral-vector vaccines. A virus such as measles or adenovirus is genetically engineered so that it can produce coronavirus proteins in the body. These viruses are weakened so they cannot cause disease. There are two types: those that can still replicate within cells and those that cannot because key genes have been disabled.</p><figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how viral vectors containing coronavirus genes can be used in a vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935122.png">
<figcaption>
<p class="figure__caption sans-serif"><span></span></p>
</figcaption>
</div>
</figure><h2>Nucleic-acid vaccines</h2><p>At least 20 teams are aiming to use genetic instructions (in the form of DNA or RNA) for a coronavirus protein that prompts an immune response. The nucleic acid is inserted into human cells, which then churn out copies of the virus protein; most of these vaccines encode the virus’s spike protein.</p><figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how coronavirus genetic material can be used in a vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935118.png">
<figcaption>
<p class="figure__caption sans-serif"><span></span></p>
</figcaption>
</div>
</figure><h2>Protein-based vaccines</h2><p>Many researchers want to inject coronavirus proteins directly into the body. Fragments of proteins or protein shells that mimic the coronavirus’s outer coat can also be used.</p><figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graphic that shows how coronavirus proteins can be used in a vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935126.png">
<figcaption>
<p class="figure__caption sans-serif"><span></span></p>
</figcaption>
</div>
</figure><h2><b>Industry trials</b></h2><p>More than 70% of the groups leading vaccine research efforts are from industrial or private firms. Clinical trials start with small safety studies in animals and people, followed by much larger trials to determine whether a vaccine generates an immune response. Researchers are accelerating these steps and hope to have a vaccine ready in 18 months.</p><figure class="figure">
<div class="embed intensity--high">
<img class="" alt="A graph that shows the types of developers from different regions of the world that are developing a coronavirus vaccine." src="//media.nature.com/lw800/magazine-assets/d41586-020-01221-y/d41586-020-01221-y_17935120.png">
<figcaption>
<p class="figure__caption sans-serif"><span class="mr10">Source: Fig. 2 in T. Thanh Le <i>et al</i>. <i>Nature Rev. Drug. Disc</i>. <a href="http://doi.org/ggrnbr" data-track="click" data-label="http://doi.org/ggrnbr" data-track-category="body text link">http://doi.org/ggrnbr</a> (2020).</span><span></span></p>
</figcaption>
</div>

+ 22
- 0
cache/2021/index.html View File

@@ -69,6 +69,8 @@
<li><a href="/david/cache/2020/3d37e77a601b6dd7043bbb17a4a2d199/" title="Accès à l’article dans le cache local : Le compromis de la vulgarisation">Le compromis de la vulgarisation</a> (<a href="https://tanialouis.fr/2020/12/27/le-compromis-de-la-vulgarisation/" title="Accès à l’article original distant : Le compromis de la vulgarisation">original</a>)</li>
<li><a href="/david/cache/2020/9c9968045ffe697a08dc13df854247f1/" title="Accès à l’article dans le cache local : I should have loved biology">I should have loved biology</a> (<a href="https://jsomers.net/i-should-have-loved-biology/" title="Accès à l’article original distant : I should have loved biology">original</a>)</li>
<li><a href="/david/cache/2020/66ef8e7fa0942fc975723f7df4d932e9/" title="Accès à l’article dans le cache local : Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine">Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine</a> (<a href="https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/" title="Accès à l’article original distant : Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine">original</a>)</li>
<li><a href="/david/cache/2020/5f4b0220be54d83f711a78b356c73a68/" title="Accès à l’article dans le cache local : Carnets Web de La Grange">Carnets Web de La Grange</a> (<a href="https://www.la-grange.net/2021/01/05/newsletter" title="Accès à l’article original distant : Carnets Web de La Grange">original</a>)</li>
@@ -77,24 +79,44 @@
<li><a href="/david/cache/2020/b19c86fa9c66389e26495165b442d0c0/" title="Accès à l’article dans le cache local : L’emprise de la machine : une critique décroissanciste de la domination technique">L’emprise de la machine : une critique décroissanciste de la domination technique</a> (<a href="https://polemos-decroissance.org/lemprise-de-la-machine-une-critique-decroissanciste-de-la-domination-technique/" title="Accès à l’article original distant : L’emprise de la machine : une critique décroissanciste de la domination technique">original</a>)</li>
<li><a href="/david/cache/2020/1cb1c46e0a1adcd0917179a214a16e0a/" title="Accès à l’article dans le cache local : DNA seen through the eyes of a coder (or, If you are a hammer, everything looks like a nail)">DNA seen through the eyes of a coder (or, If you are a hammer, everything looks like a nail)</a> (<a href="https://berthub.eu/articles/posts/amazing-dna/" title="Accès à l’article original distant : DNA seen through the eyes of a coder (or, If you are a hammer, everything looks like a nail)">original</a>)</li>
<li><a href="/david/cache/2020/352d2966ecda7a68cbf97efbc691d017/" title="Accès à l’article dans le cache local : Facebook’s Unknowable Megascale">Facebook’s Unknowable Megascale</a> (<a href="https://daringfireball.net/2020/12/facebook_unknowable_megascale" title="Accès à l’article original distant : Facebook’s Unknowable Megascale">original</a>)</li>
<li><a href="/david/cache/2020/99c13c692ec7f2217311fdea482e8792/" title="Accès à l’article dans le cache local : Newsletters">Newsletters</a> (<a href="https://www.robinrendle.com/essays/newsletters" title="Accès à l’article original distant : Newsletters">original</a>)</li>
<li><a href="/david/cache/2020/dcba97f9e4bd70b1a152b9498dc5711c/" title="Accès à l’article dans le cache local : Risk: micromorts, microCOVIDs, and skydiving">Risk: micromorts, microCOVIDs, and skydiving</a> (<a href="http://interconnected.org/home/2020/09/01/microcovids" title="Accès à l’article original distant : Risk: micromorts, microCOVIDs, and skydiving">original</a>)</li>
<li><a href="/david/cache/2020/e8ebcfcc0dbd4336a82f618a1bd1a818/" title="Accès à l’article dans le cache local : DNA Chisel - a versatile sequence optimizer">DNA Chisel - a versatile sequence optimizer</a> (<a href="https://edinburgh-genome-foundry.github.io/DnaChisel/" title="Accès à l’article original distant : DNA Chisel - a versatile sequence optimizer">original</a>)</li>
<li><a href="/david/cache/2020/388cf40eae756175ee87c9bf7a1548c4/" title="Accès à l’article dans le cache local : No, Really, mRNA Vaccines Are Not Going To Affect Your DNA">No, Really, mRNA Vaccines Are Not Going To Affect Your DNA</a> (<a href="https://www.deplatformdisease.com/blog/no-really-mrna-vaccines-are-not-going-to-affect-your-dna" title="Accès à l’article original distant : No, Really, mRNA Vaccines Are Not Going To Affect Your DNA">original</a>)</li>
<li><a href="/david/cache/2020/fe75ef80663602733dbe24cc717f257b/" title="Accès à l’article dans le cache local : The race for coronavirus vaccines: a graphical guide">The race for coronavirus vaccines: a graphical guide</a> (<a href="https://www.nature.com/articles/d41586-020-01221-y" title="Accès à l’article original distant : The race for coronavirus vaccines: a graphical guide">original</a>)</li>
<li><a href="/david/cache/2020/22172cf6d8f4f1e910ed6599b3557c8a/" title="Accès à l’article dans le cache local : Les élevages de visons en Chine à l’origine du Covid-19 ? Les indices s’accumulent">Les élevages de visons en Chine à l’origine du Covid-19 ? Les indices s’accumulent</a> (<a href="https://reporterre.net/Les-elevages-de-visons-en-Chine-a-l-origine-du-Covid-19-Les-indices-s-accumulent" title="Accès à l’article original distant : Les élevages de visons en Chine à l’origine du Covid-19 ? Les indices s’accumulent">original</a>)</li>
<li><a href="/david/cache/2020/837e11a57aa3ddcba084963c247f45a6/" title="Accès à l’article dans le cache local : What Is Going To Happen In 2021">What Is Going To Happen In 2021</a> (<a href="https://avc.com/2021/01/what-is-going-to-happen-in-2021/" title="Accès à l’article original distant : What Is Going To Happen In 2021">original</a>)</li>
<li><a href="/david/cache/2020/1039b631578007d23759a99c2238cda9/" title="Accès à l’article dans le cache local : Biohacking Lite">Biohacking Lite</a> (<a href="https://karpathy.github.io/2020/06/11/biohacking-lite/" title="Accès à l’article original distant : Biohacking Lite">original</a>)</li>
<li><a href="/david/cache/2020/3d3e8962a6319ee4d41a75b1cd5abd38/" title="Accès à l’article dans le cache local : How the novel coronavirus has evolved">How the novel coronavirus has evolved</a> (<a href="https://graphics.reuters.com/HEALTH-CORONAVIRUS/EVOLUTION/yxmpjqkdzvr/index.html" title="Accès à l’article original distant : How the novel coronavirus has evolved">original</a>)</li>
<li><a href="/david/cache/2020/5f1c22e9a41d209ff84218b3d6faf676/" title="Accès à l’article dans le cache local : Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2">Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2</a> (<a href="https://berthub.eu/articles/posts/part-2-reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/" title="Accès à l’article original distant : Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2">original</a>)</li>
<li><a href="/david/cache/2020/f1df3d5f1720e137130581d5a2b8549f/" title="Accès à l’article dans le cache local : Built to Last">Built to Last</a> (<a href="https://logicmag.io/care/built-to-last/" title="Accès à l’article original distant : Built to Last">original</a>)</li>
<li><a href="/david/cache/2020/78f2e167938eb4bfa6747503aefe45c1/" title="Accès à l’article dans le cache local : We Quit Our Jobs to Build a Cabin-Everything Went Wrong">We Quit Our Jobs to Build a Cabin-Everything Went Wrong</a> (<a href="https://www.outsideonline.com/2415766/friends-diy-cabin-build-washington" title="Accès à l’article original distant : We Quit Our Jobs to Build a Cabin-Everything Went Wrong">original</a>)</li>
<li><a href="/david/cache/2020/28242a5ba209770efabfdbe5a6718719/" title="Accès à l’article dans le cache local : Des chasseurs massacrent sadiquement des sangliers à l’arme blanche">Des chasseurs massacrent sadiquement des sangliers à l’arme blanche</a> (<a href="https://reporterre.net/Des-chasseurs-massacrent-sadiquement-des-sangliers-a-l-arme-blanche" title="Accès à l’article original distant : Des chasseurs massacrent sadiquement des sangliers à l’arme blanche">original</a>)</li>
<li><a href="/david/cache/2020/cfcd10768187ce1c3e598136cd8838b2/" title="Accès à l’article dans le cache local : Bad News Wrapped in Protein: Inside the Coronavirus Genome">Bad News Wrapped in Protein: Inside the Coronavirus Genome</a> (<a href="https://www.nytimes.com/interactive/2020/04/03/science/coronavirus-genome-bad-news-wrapped-in-protein.html" title="Accès à l’article original distant : Bad News Wrapped in Protein: Inside the Coronavirus Genome">original</a>)</li>
<li><a href="/david/cache/2020/aeb0a60038b91bf1fbbbd39b358366fb/" title="Accès à l’article dans le cache local : ☕️ Journal : Statu quo">☕️ Journal : Statu quo</a> (<a href="https://oncletom.io/2021/01/05/statu-quo/" title="Accès à l’article original distant : ☕️ Journal : Statu quo">original</a>)</li>
<li><a href="/david/cache/2020/595df9c1f986df0678e4fc7d6aa34ef1/" title="Accès à l’article dans le cache local : Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?">Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?</a> (<a href="https://www.lepoint.fr/high-tech-internet/qui-sont-les-dix-auteurs-de-sf-de-la-red-team-du-ministere-des-armees-04-12-2020-2404230_47.php" title="Accès à l’article original distant : Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?">original</a>)</li>
<li><a href="/david/cache/2020/30069f97e4aa989a1d89fe8d88538da8/" title="Accès à l’article dans le cache local : We Had the COVID-19 Vaccine the Whole Time">We Had the COVID-19 Vaccine the Whole Time</a> (<a href="https://nymag.com/intelligencer/2020/12/moderna-covid-19-vaccine-design.html" title="Accès à l’article original distant : We Had the COVID-19 Vaccine the Whole Time">original</a>)</li>
</ul>
</main>


Loading…
Cancel
Save