<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Methylation &amp; Colitis</title>
<link>https://sandrisper-rgb.github.io/methylation/posts/</link>
<atom:link href="https://sandrisper-rgb.github.io/methylation/posts/index.xml" rel="self" type="application/rss+xml"/>
<description>Methods explainers, comparisons, and practical analysis guidance</description>
<generator>quarto-1.10.18</generator>
<lastBuildDate>Mon, 31 Aug 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>What Ranking Does to a Correlation</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <dc:creator>Ravi Kalia</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/beyond-correlation-association-vs-concordance/</link>
  <description><![CDATA[ 





<section id="the-conclusion-first" class="level2 lead-panel">
<h2 class="anchored" data-anchor-id="the-conclusion-first">The conclusion first</h2>
<p>Every figure on this page is built from GEO series <strong>GSE81211</strong> <span class="citation" data-cites="gse81211">(Kang, Bae, Han, Kim, Kim, and Yi, 2016)</span>: Illumina 450K methylation on colonic mucosa from three people without inflammatory bowel disease and eight with ulcerative colitis, plus one colon cancer cell line. 478,440 CpGs survive with no missing values.</p>
<ol type="1">
<li><strong>The correlation is useless before you do anything to it.</strong> Across all 478,440 CpGs, every pair of the eleven mucosa samples correlates between <img src="https://latex.codecogs.com/png.latex?0.957"> and <img src="https://latex.codecogs.com/png.latex?0.990">. Two people with ulcerative colitis average <img src="https://latex.codecogs.com/png.latex?0.983">. A person with colitis and a person without average <img src="https://latex.codecogs.com/png.latex?0.975">. That gap — <strong>0.008</strong> — is the entire visible effect of the disease.</li>
<li><strong>Ranking does not fix it.</strong> Swap every value for its rank and the same comparison gives <img src="https://latex.codecogs.com/png.latex?0.981"> against <img src="https://latex.codecogs.com/png.latex?0.973">. The gap is still 0.008. Reaching for Spearman because Pearson looked suspicious buys you nothing here.</li>
<li><strong>What ranking buys is immunity to the scale you chose.</strong> Converting beta values to M-values — a step in almost every methylation pipeline — moves Pearson’s <img src="https://latex.codecogs.com/png.latex?r"> by <img src="https://latex.codecogs.com/png.latex?0.002"> on average across the mucosa pairs, and by <img src="https://latex.codecogs.com/png.latex?0.031"> for the cancer line. It moves Spearman’s <img src="https://latex.codecogs.com/png.latex?%5Crho"> by <img src="https://latex.codecogs.com/png.latex?2%20%5Ctimes%2010%5E%7B-11%7D">, which is to say it cannot move it at all.</li>
<li><strong>Ranking starts to earn its keep once you choose the CpGs.</strong> On the 10% most variable probes, the gap between same-group and cross-group pairs is <img src="https://latex.codecogs.com/png.latex?0.100"> under Pearson and <img src="https://latex.codecogs.com/png.latex?0.150"> under Spearman. Narrow to the top 1% and both gaps go <em>negative</em>.</li>
</ol>
</section>
<p><img src="https://sandrisper-rgb.github.io/methylation/media/illustrations/cover-methylation-statistics.webp" class="science-visual img-fluid" alt="Abstract illustration of overlapping statistical distributions"></p>
<section id="everything-correlates-with-everything" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="everything-correlates-with-everything">Everything correlates with everything</h2>
<p>Take two colonic biopsies, measure methylation at half a million CpGs, and ask how well they agree. The answer is <img src="https://latex.codecogs.com/png.latex?r%20=%200.98">. Take two biopsies from people with different disease status and ask again: <img src="https://latex.codecogs.com/png.latex?r%20=%200.98">. Take the two most dissimilar mucosa samples in the whole series and you still get <img src="https://latex.codecogs.com/png.latex?r%20=%200.96">.</p>
<figure class="rank-figure column-page figure" aria-label="Correlation between every pair of samples, computed on the values and on their ranks">
<div id="rk-heatpair" class="rk-heatpair">

</div>

<figcaption>
Every pair of the twelve samples — N1–N3 without colitis, U1–U8 with ulcerative colitis, HCT a colon cancer cell line — across all 478,440 CpGs. Hover any cell for its value. The eleven-by-eleven mucosa block is one flat colour under both coefficients, and swapping values for ranks does not change that. The only contrast either panel can produce is the sample that did not come from a person.
</figcaption>
</figure>
<p>These are the samples from the panel study that reported a set of newly hypermethylated genes in ulcerative colitis <span class="citation" data-cites="kang2016ucpanel">(Kang, Bae, Han, Kim, Kim, and Yi, 2016)</span>, so there is a real signal in them somewhere. It is simply not what a whole-array correlation reports.</p>
<p>The matrix is not lying. Those samples genuinely are that similar: they are all human colon, and the methylome of human colon is largely fixed regardless of who is inflamed. The problem is that <img src="https://latex.codecogs.com/png.latex?0.98"> is being read as evidence of similarity when it is mostly a statement about the <em>shape</em> of the numbers.</p>
</section>
<section id="the-values-are-stacked-at-the-ends" class="level2">
<h2 class="anchored" data-anchor-id="the-values-are-stacked-at-the-ends">The values are stacked at the ends</h2>
<p>A methylation beta value is the fraction of molecules methylated at one CpG: 0 means none, 1 means all. Biology does not spread those fractions evenly.</p>
<figure class="rank-figure figure" aria-label="Distribution of beta values across the eleven mucosa samples">
<div class="rk-hist">
<div id="rk-histogram">

</div>
<div class="rk-axis">
<span>0.0</span><span>0.25</span><span>0.5</span><span>0.75</span><span>1.0</span>
</div>
<p class="rk-axis-title">
methylation fraction (beta)
</p>
</div>
<figcaption>
All 478,440 CpGs pooled across the eleven mucosa samples. Two peaks — one near 0.06, a broader one near 0.84 — with a shallow valley between them. Just over half of every measurement sits below 0.2 or above 0.8.
</figcaption>
</figure>
<p>Most CpGs are switched firmly off or firmly on. That produces two dense clouds a long way apart on both axes, and two distant clouds produce a high correlation <em>by construction</em> — before any biology is involved. The coefficient is mostly reporting that both samples agree about which CpGs are the “off” ones, which is a fact about being human colon, not about being inflamed.</p>
</section>
<section id="ranking-does-not-rescue-it" class="level2">
<h2 class="anchored" data-anchor-id="ranking-does-not-rescue-it">Ranking does not rescue it</h2>
<p>The standard reflex when a correlation looks untrustworthy is to rank the data. Sort the CpGs from least to most methylated, replace each value with its position in that order, and correlate the positions instead. That is all Spearman’s <img src="https://latex.codecogs.com/png.latex?%5Crho"> is: Pearson’s <img src="https://latex.codecogs.com/png.latex?r">, computed after ranking.</p>
<p>It changes almost nothing here. The mucosa pairs go from a mean of <img src="https://latex.codecogs.com/png.latex?0.980"> to <img src="https://latex.codecogs.com/png.latex?0.977">, and the disease gap stays at 0.008. Ranking removes the influence of <em>how far apart</em> the two clouds are, but the ordering was never in dispute — both samples put the same CpGs at the bottom and the same CpGs at the top. The clouds were an accurate picture of genuine agreement about ordering. Ranking cannot subtract a problem that was not there.</p>
<p>This is worth stating plainly, because the reflex is so common: <strong>a rank correlation is not a more conservative version of a correlation.</strong> It answers a different question, and on this data the two questions happen to have nearly the same answer.</p>
</section>
<section id="what-ranking-does-guarantee" class="level2">
<h2 class="anchored" data-anchor-id="what-ranking-does-guarantee">What ranking does guarantee</h2>
<p>Here is what ranking is actually for.</p>
<p>Nobody tests for differential methylation on beta values. Beta is bounded between 0 and 1 and its variance collapses at both ends, so the standard move is the M-value: the log-odds of being methylated. It stretches the crowded ends of the scale out and leaves the middle roughly where it was. It measures the same molecules; it just puts them on a different ruler.</p>
<p>Change the ruler and Pearson’s <img src="https://latex.codecogs.com/png.latex?r"> changes. Across the mucosa pairs it shifts by <img src="https://latex.codecogs.com/png.latex?0.002"> on average, and for the cancer line it moves from <img src="https://latex.codecogs.com/png.latex?0.715"> to <img src="https://latex.codecogs.com/png.latex?0.746"> — a shift of <img src="https://latex.codecogs.com/png.latex?0.031">, more than ten times larger. Nothing was remeasured. The only thing that changed was which axis the same data was plotted against.</p>
<p>Spearman’s <img src="https://latex.codecogs.com/png.latex?%5Crho"> does not move at all — by <img src="https://latex.codecogs.com/png.latex?2%20%5Ctimes%2010%5E%7B-11%7D">, which is floating-point noise rather than a real difference. The M-value transform is <em>monotone</em>: it can stretch the scale but it cannot reorder anything, and rank correlation sees only the order.</p>
<p>That is the honest division of labour. Pearson’s <img src="https://latex.codecogs.com/png.latex?r"> is partly a claim about your data and partly a claim about the units you happened to store it in. Spearman’s <img src="https://latex.codecogs.com/png.latex?%5Crho"> is only ever a claim about ordering. If your analysis would give a different answer depending on whether the pipeline handed you beta or M, that is a fact worth knowing before you publish.</p>
<div class="callout callout-style-default callout-note callout-titled" title="One detail">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Note</span>One detail
</div>
</div>
<div class="callout-body-container callout-body">
<p>The M-value is undefined at beta = 0 and beta = 1, which a 450K array does reach. The values here are clipped to <img src="https://latex.codecogs.com/png.latex?%5B0.001,%200.999%5D"> first, which is the usual guard. Ranks are always computed from the beta values, so the clip cannot quietly reorder anything.</p>
</div>
</div>
</section>
<section id="watch-it-happen" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="watch-it-happen">Watch it happen</h2>
<p>Two samples, 3,000 CpGs drawn at random from the 478,440. <strong>Pearson’s <img src="https://latex.codecogs.com/png.latex?r"> is computed on whatever is currently plotted</strong> — so pressing <em>Ranks</em> makes the number travel, in real time, from Pearson to Spearman, because that is the whole of the difference between them.</p>
<p>The <em>beta / M-value</em> switch is the other half of the argument: in the value view it moves <img src="https://latex.codecogs.com/png.latex?r"> and leaves <img src="https://latex.codecogs.com/png.latex?%5Crho"> alone, and in the rank view it does nothing whatsoever, because the picture is already made of orderings.</p>
<div id="rk-widget" class="rank-widget column-page">
<div class="rk-controls">
<div class="rk-control">
<label for="rk-x">Horizontal</label><select id="rk-x"></select>
</div>
<div class="rk-control">
<label for="rk-y">Vertical</label><select id="rk-y"></select>
</div>
<div class="rk-control">
<span class="rk-label">Plot</span>
<div class="rk-toggle" aria-label="Plot values or ranks">
<button type="button" data-rank="value" aria-pressed="true">
Values
</button>
<button type="button" data-rank="rank" aria-pressed="false">
Ranks
</button>
</div>
</div>
<div class="rk-control">
<span class="rk-label">Scale</span>
<div class="rk-toggle" aria-label="Beta or M-value scale">
<button type="button" data-scale="beta" aria-pressed="true">
Beta
</button>
<button type="button" data-scale="mval" aria-pressed="false">
M-value
</button>
</div>
</div>
<div class="rk-control">
<label for="rk-filter">CpGs kept</label><input type="range" id="rk-filter" min="0" max="7" step="1" value="0">
</div>
</div>
<div class="rk-main">
<div class="rk-canvas-wrap">
<canvas id="rk-canvas" width="620" height="470" aria-label="Scatter plot of two methylation profiles, switching between measured values and ranks">
</canvas>
<p class="rk-hint">
Showing <span id="rk-n">—</span> CpGs — <span id="rk-kept">—</span>.
</p>
</div>
<div class="rk-readout">
<div class="rk-stat">
<div class="rk-stat-name">
Pearson <em>r</em>, as plotted
</div>
<div id="rk-r" class="rk-stat-value">
—
</div>
<div class="rk-stat-note">
Follows the picture. Slides onto <em>ρ</em> when the plot is ranked.
</div>
</div>
<div class="rk-stat">
<div class="rk-stat-name">
Spearman <em>ρ</em>
</div>
<div id="rk-rho" class="rk-stat-value is-frozen">
—
</div>
<div class="rk-stat-note">
Identical in every view, on either scale.
</div>
</div>
</div>
</div>
</div>
<p>The widget recomputes on its own 3,000-CpG sample, so its numbers land near — not exactly on — the whole-array figures quoted in the prose.</p>
</section>
<section id="where-ranking-starts-to-pay" class="level2">
<h2 class="anchored" data-anchor-id="where-ranking-starts-to-pay">Where ranking starts to pay</h2>
<p>The disease signal was never going to survive being averaged over half a million CpGs, most of which have nothing to do with inflammation. Throw the uninformative ones away and the picture changes. Below, <em>gap</em> is how much more two samples from the same group agree than two samples from different groups — the thing a correlation would need to see for it to be worth computing.</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>CpGs kept</th>
<th style="text-align: right;">Number</th>
<th style="text-align: right;">Pearson gap</th>
<th style="text-align: right;">Spearman gap</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>all</td>
<td style="text-align: right;">478,440</td>
<td style="text-align: right;">+0.008</td>
<td style="text-align: right;">+0.008</td>
</tr>
<tr class="even">
<td>most variable 50%</td>
<td style="text-align: right;">239,220</td>
<td style="text-align: right;">+0.031</td>
<td style="text-align: right;">+0.036</td>
</tr>
<tr class="odd">
<td>most variable 25%</td>
<td style="text-align: right;">119,610</td>
<td style="text-align: right;">+0.065</td>
<td style="text-align: right;">+0.086</td>
</tr>
<tr class="even">
<td>most variable 10%</td>
<td style="text-align: right;">47,844</td>
<td style="text-align: right;">+0.100</td>
<td style="text-align: right;"><strong>+0.150</strong></td>
</tr>
<tr class="odd">
<td>most variable 5%</td>
<td style="text-align: right;">23,922</td>
<td style="text-align: right;">+0.080</td>
<td style="text-align: right;">+0.115</td>
</tr>
<tr class="even">
<td>most variable 2%</td>
<td style="text-align: right;">9,569</td>
<td style="text-align: right;">−0.007</td>
<td style="text-align: right;">−0.016</td>
</tr>
<tr class="odd">
<td>most variable 1%</td>
<td style="text-align: right;">4,785</td>
<td style="text-align: right;">−0.077</td>
<td style="text-align: right;">−0.079</td>
</tr>
</tbody>
</table>
<p>Two things happen at once. The gap grows as the CpG set narrows, and it grows <em>faster under ranking</em> — at the top 10% the rank-based gap is half again as large as the value-based one. This is where Spearman earns its place: once the constant, uninformative CpGs are gone, what is left is a handful of probes with large swings, and Pearson spends its attention on the size of those swings while Spearman only asks whether the samples agree about direction.</p>
<p>Then it reverses. Somewhere between the top 5% and the top 2% the gap turns negative — samples from the <em>same</em> group now correlate less than samples from different ones. Nothing biological changed at that threshold. The set simply got small enough that a few probes dominate, and the coefficient starts describing those probes rather than the samples. The filter that made the signal visible will, pushed a little further, manufacture the opposite one.</p>
<p>The widget shows one pair at a time rather than the group average, but the effect is visible in it. At the top 10%, Normal 1 against Normal 2 reads <img src="https://latex.codecogs.com/png.latex?%5Crho%20=%200.84"> while Normal 1 against UC 1 reads <img src="https://latex.codecogs.com/png.latex?0.60">. Push the slider to the top 1% and roughly thirty CpGs remain, at which point the readout is describing those thirty probes.</p>
</section>
<section id="what-ranking-throws-away" class="level2">
<h2 class="anchored" data-anchor-id="what-ranking-throws-away">What ranking throws away</h2>
<p>Ranking costs you something, and the cancer cell line shows what.</p>
<p>HCT116 is the one sample here that is genuinely, structurally different from the rest. Its Pearson correlation with the mucosa samples is <img src="https://latex.codecogs.com/png.latex?0.715">; its Spearman correlation is <img src="https://latex.codecogs.com/png.latex?0.676">. Under ranks it looks <em>further</em> from the mucosa samples than it does under values, because a rank correlation cannot see that its disagreements are concentrated in a comparatively small number of CpGs with very large differences. A rank knows that one sample is higher than another. It does not know by how much.</p>
<p>That matters because “do these two measurements agree?” and “do these two measurements rank things the same way?” are different questions, and only the first is a question about <strong>concordance</strong>. A tissue assay and a plasma assay could rank every participant identically and still disagree about every value — one reading systematically half the other. Spearman would report a perfect result. The assays would not be interchangeable.</p>
<p>The same caution applies in the other direction, to grouping. Every number in this post is computed <em>within</em> a defined comparison: normal against normal, colitis against colitis, normal against colitis. Pool them and the disease difference dissolves into an average. Pooling groups is the fastest way to manufacture — or erase — a correlation, and no choice of coefficient protects against it. That is a design decision, not a statistical one.</p>
</section>
<section id="for-this-study" class="level2">
<h2 class="anchored" data-anchor-id="for-this-study">For this study</h2>
<ul>
<li>Report a correlation with the CpG set attached. “<img src="https://latex.codecogs.com/png.latex?%5Crho%20=%200.98"> across all probes” and “<img src="https://latex.codecogs.com/png.latex?%5Crho%20=%200.80"> across the 10% most variable” describe the same samples and mean opposite things.</li>
<li>Fix the probe filter before looking at the outcome. The table above shows how far a threshold can be pushed until it produces whatever answer is wanted.</li>
<li>For tissue–plasma agreement, a rank correlation answers whether the two assays order participants the same way. It does not answer whether they can be substituted for one another. If the claim is substitution, the magnitudes have to be compared directly.</li>
<li>State whether coefficients were computed on beta or M-values. It changes Pearson and it cannot change Spearman, so saying which one was used is enough to make the number reproducible.</li>
</ul>
<div class="callout callout-style-default callout-tip callout-titled" title="Reproducing this">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Tip</span>Reproducing this
</div>
</div>
<div class="callout-body-container callout-body">
<p><code>prepare-data.py</code> in this post’s directory downloads the GSE81211 series matrix from GEO, computes every number quoted above on the full 478,440 CpGs, and writes the committed <code>methylation-subset.json</code> that the figures and widget read. It is not run when the site builds; this page executes no code. Re-run it by hand to regenerate the data:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb1-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">source</span> .venv/bin/activate</span>
<span id="cb1-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">python</span> posts/beyond-correlation-association-vs-concordance/prepare-data.py</span></code></pre></div></div>
<p>The random subset behind the widget is drawn with a fixed seed, so it is identical on every run.</p>
</div>
</div>
<script src="ranking.js" defer=""></script>
</section>
<section id="references" class="level2">
<h2 class="anchored" data-anchor-id="references">References</h2>
<div id="refs" class="references csl-bib-body">
<div id="ref-gse81211" class="csl-entry">
Keunsoo Kang, Jin-Han Bae, Kyudong Han, Eun Soo Kim, Tae-Oh Kim, and Joo Mi Yi. (2016). <a href="https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE81211">Genome-wide methylation approach identifies a novel hypermethylated gene panel in ulcerative colitis</a>.
</div>
<div id="ref-kang2016ucpanel" class="csl-entry">
Keunsoo Kang, Jin-Han Bae, Kyudong Han, Eun Soo Kim, Tae-Oh Kim, and Joo Mi Yi. (2016). A genome-wide methylation approach identifies a new hypermethylated gene panel in ulcerative colitis. <em>International Journal of Molecular Sciences</em>. <a href="https://doi.org/10.3390/ijms17081291">https://doi.org/10.3390/ijms17081291</a>.
</div>
</div>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>statistics</category>
  <category>correlation</category>
  <category>methylation</category>
  <category>colitis</category>
  <category>methods</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/beyond-correlation-association-vs-concordance/</guid>
  <pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/cover-methylation-statistics.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>What is a Biological Signature?</title>
  <dc:creator>Ravi Kalia</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/what-is-a-biological-signature/</link>
  <description><![CDATA[ 





<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://sandrisper-rgb.github.io/methylation/posts/what-is-a-biological-signature/cover.webp" class="science-visual img-fluid figure-img" alt="A dense field of genes, proteins, metabolites, and molecular measurements passes through a selection funnel to become a compact molecular fingerprint"></p>
<figcaption>Thousands of molecular measurements narrowing into a small biological signature.</figcaption>
</figure>
</div>
<div class="callout callout-style-default callout-note callout-titled" title="Cross-post">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Note</span>Cross-post
</div>
</div>
<div class="callout-body-container callout-body">
<p>This article was originally published on the <a href="https://project-delphi.github.io/ml-blog/posts/what-is-a-biological-signature/">Project Delphi ML Blog</a>.</p>
</div>
</div>
<div class="lead-panel">
<p>A <strong>signature</strong> is a short list of measured molecular features (genes, proteins, or metabolites) that distinguishes one condition from another.</p>
</div>
<p>It is feature selection on wide, small-<img src="https://latex.codecogs.com/png.latex?n"> data: tens of thousands of genes, tens of patients. A model given all features will fit noise.</p>
<figure class="signature-figure column-page figure" aria-label="A large cloud of measured biological features passes through a selection funnel and becomes a compact five-feature signature">
<div class="signature-funnel">
<div class="signature-stage">
<span class="signature-kicker">Measure wide</span>

</div>

<div class="signature-stage signature-panel">
<span class="signature-kicker">Keep the stable signal</span>
<div class="signature-chips">
<div class="signature-chip">
Gene 04
</div>
<div class="signature-chip">
CpG 17
</div>
<div class="signature-chip">
Protein 09
</div>
<div class="signature-chip">
Gene 31
</div>
<div class="signature-chip">
Metabolite 06
</div>
</div>
</div>
</div>
<figcaption>
Feature selection is compression with a biological purpose: reduce thousands of measurements to a small panel without throwing away the distinction that matters.
</figcaption>
</figure>
<section id="procedure" class="level2 page-columns page-full" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="procedure"><span class="header-section-number">1</span> Procedure</h2>
<ol type="1">
<li><strong>Measure wide.</strong> Every feature on every sample.</li>
<li><strong>Find the groups.</strong> Use known labels, or let clustering propose groups.</li>
<li><strong>Select.</strong> Score features by group separation:
<ul>
<li><em><img src="https://latex.codecogs.com/png.latex?t">-test:</em> distance between group means relative to within-group scatter.</li>
<li><em>Mutual information:</em> how much the feature tells you about group membership.</li>
<li><em>Penalized models</em> (lasso, elastic net): drop features by charging a cost for each one used.</li>
</ul></li>
<li><strong>Validate on held-out data.</strong> Redo selection <strong>inside</strong> each cross-validation fold.</li>
</ol>
<p>Selecting on all samples, then testing on a “held-out” subset, leaks the selection. <a href="https://doi.org/10.1073/pnas.102102699">Ambroise and McLachlan (2002)</a> showed that this bias drives reported error toward zero; nested selection raises it again.</p>
<figure class="signature-figure column-page figure" aria-label="Comparison of leaky and honest validation workflows">
<div class="validation-compare">
<div class="validation-path validation-path-leaky">
<h3 class="anchored">
Leaky validation
</h3>
<div class="validation-flow">
<div class="validation-step">
All samples
</div>
<span class="validation-arrow">→</span>
<div class="validation-step">
Select features
</div>
<span class="validation-arrow">→</span>
<div class="validation-step">
Cross-validate
</div>
</div>
<p class="validation-verdict">
<strong>Too optimistic:</strong> the held-out samples already influenced which features were chosen.
</p>
</div>
<div class="validation-path validation-path-honest">
<h3 class="anchored">
Honest validation
</h3>
<div class="validation-flow">
<div class="validation-step">
Training fold
</div>
<span class="validation-arrow">→</span>
<div class="validation-step">
Select features
</div>
<span class="validation-arrow">→</span>
<div class="validation-step">
Held-out fold
</div>
</div>
<p class="validation-verdict">
<strong>Defensible:</strong> every fold repeats selection before the untouched samples are evaluated.
</p>
</div>
</div>
<figcaption>
The held-out fold must remain invisible to every outcome-informed step—not only model fitting, but also feature screening, tuning, scaling, and imputation.
</figcaption>
</figure>
</section>
<section id="canonical-example-golub-leukemia" class="level2 page-columns page-full" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="canonical-example-golub-leukemia"><span class="header-section-number">2</span> Canonical example: Golub leukemia</h2>
<p>ALL and AML are two acute leukemias that look similar under a microscope and take opposite chemotherapies. Diagnosis used to rest on four specialist lab tests.</p>
<p><a href="https://doi.org/10.1126/science.286.5439.531">Golub et al.&nbsp;(1999)</a> measured 6,817 genes in 38 acute-leukemia samples.</p>
<ul>
<li>Unsupervised clustering, given no disease labels, nearly recovered the split (one group 24 ALL + 1 AML; the other 10 AML + 3 ALL).</li>
<li>A 50-gene predictor was then tested on 34 independent samples from other banks.</li>
</ul>
<p>Fifty features out of 6,817 is a signature.</p>
<div class="signature-number-grid column-page" aria-label="Key numbers from the Golub leukemia study">
<div class="signature-number">
<strong>6,817</strong><span>genes measured in the discovery experiment</span>
</div>
<div class="signature-number">
<strong>50</strong><span>genes retained in the predictive signature</span>
</div>
<div class="signature-number">
<strong>34</strong><span>fresh samples used for independent testing</span>
</div>
</div>
<p>The same four steps apply to environmental DNA (a few marker sequences implying a species was present) and to exoplanet spectra (gases inconsistent with abiotic chemistry).</p>
</section>
<section id="references" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="references"><span class="header-section-number">3</span> References</h2>
<ul>
<li>Ambroise, C. &amp; McLachlan, G. J. (2002). <a href="https://doi.org/10.1073/pnas.102102699">Selection bias in gene extraction on the basis of microarray gene-expression data</a>. <em>PNAS</em>.</li>
<li>Golub, T. R. et al.&nbsp;(1999). <a href="https://doi.org/10.1126/science.286.5439.531">Molecular classification of cancer: class discovery and class prediction by gene expression monitoring</a>. <em>Science</em> 286(5439):531–537.</li>
<li>Guyon, I. &amp; Elisseeff, A. (2003). <a href="https://www.jmlr.org/papers/v3/guyon03a.html">An introduction to variable and feature selection</a>. <em>JMLR</em>.</li>
<li>Meinshausen, N. &amp; Bühlmann, P. (2010). <a href="https://doi.org/10.1111/j.1467-9868.2010.00740.x">Stability selection</a>. <em>JRSS-B</em>.</li>
</ul>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>biology</category>
  <category>genomics</category>
  <category>machine learning</category>
  <category>statistics</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/what-is-a-biological-signature/</guid>
  <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/posts/what-is-a-biological-signature/cover.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>Could a blood draw ever replace part of a colonoscopy?</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/clinical-applications-of-methylation-siga-fingerprint/</link>
  <description><![CDATA[ 





<p>In 2024 the United States gained two new non-invasive options for colorectal cancer screening: a cell-free DNA blood test <span class="citation" data-cites="chung2024shield">(<span class="nocase">Chung, Gray, Singh, and others</span>, 2024)</span> and a next-generation multitarget stool DNA test <span class="citation" data-cites="imperiale2024mtsdna">(<span class="nocase">Imperiale, Porter, Zella, and others</span>, 2024)</span>. Neither is available to the patients this project studies. Both are indicated for adults at <strong>average risk</strong>, and inflammatory bowel disease—chronic ulcerative colitis included—sits in the contraindication list precisely because these tests were never clinically evaluated in that population. The people at highest risk of colitis-associated colorectal cancer are the people carved out of every approved non-invasive test.</p>
<section id="what-this-post-is" class="level2 lead-panel">
<h2 class="anchored" data-anchor-id="what-this-post-is">What this post is</h2>
<p>A structured walk through the clinical questions an integrated methylation + sIgA signal would have to answer before it could change anything in a gastroenterology clinic. It is a <strong>hypothetical care-pathway analysis</strong>, written for clinicians. Nothing here reports performance from this cohort; the study is exploratory, cross-sectional, and has 18 participants.</p>
</section>
<section id="what-happens-today-to-a-patient-with-20-years-of-ulcerative-colitis" class="level2">
<h2 class="anchored" data-anchor-id="what-happens-today-to-a-patient-with-20-years-of-ulcerative-colitis">What happens today to a patient with 20 years of ulcerative colitis?</h2>
<p>They enter a colonoscopic surveillance programme. Guidelines converge on periodic examination of the whole colon with high-definition endoscopy, targeted biopsy of any visible lesion, and—depending on risk factors such as primary sclerosing cholangitis, prior neoplasia, active inflammation, or a foreshortened colon—additional random biopsies <span class="citation" data-cites="laine2015scenic murthy2021dysplasia">(<span class="nocase">Laine, Kaltenbach, Barkun, and others</span>, 2015; Murthy, Feuerstein, Nguyen, and Velayos, 2021)</span>. The interval is set by a risk stratification that leans on inflammation history and endoscopic appearance rather than on any molecular measurement.</p>
<p>The programme works, but only partly. In the longest-running surveillance cohort published, 1,375 patients with ulcerative colitis were followed for 15,234 patient-years and 72 developed colorectal cancer, an incidence of 4.7 per 1,000 patient-years; rates of advanced and interval cancer fell across four decades, yet cancers kept appearing between examinations, and 37.5% of the cancers found were accompanied by synchronous cancer or spatially separate dysplasia <span class="citation" data-cites="choi2015surveillance">(<span class="nocase">Choi, Rutter, Askari, and others</span>, 2015)</span>. Across 96,447 Danish and Swedish patients with ulcerative colitis, colorectal cancer incidence remained elevated against matched population controls (HR 1.66, 95% CI 1.57–1.76), as did cancer-specific mortality (HR 1.59, 95% CI 1.46–1.72) <span class="citation" data-cites="olen2020ucrisk">(<span class="nocase">Olén, Erichsen, Sachs, and others</span>, 2020)</span>.</p>
</section>
<section id="why-isnt-colonoscopy-already-the-answer" class="level2">
<h2 class="anchored" data-anchor-id="why-isnt-colonoscopy-already-the-answer">Why isn’t colonoscopy already the answer?</h2>
<p>Because the thing being hunted is often invisible. Colitis-associated neoplasia arises in a field of chronically injured mucosa, is frequently flat rather than polypoid, and can be multifocal. The blunt summary from the ENDCaP-C investigators is that despite surveillance protocols, half of cases progress to cancer before neoplasia is detected <span class="citation" data-cites="beggs2019endcapc">(<span class="nocase">Beggs, Mehta, Deeks, and others</span>, 2019)</span>. Chromoendoscopy improves detection—in the St Mark’s cohort it was twice as effective as white-light endoscopy at finding dysplasia <span class="citation" data-cites="choi2015surveillance">(<span class="nocase">Choi, Rutter, Askari, and others</span>, 2015)</span>—but adoption is uneven, it lengthens the procedure, and it does not make a diffuse molecular field change visible to the eye.</p>
<p>There is also the part of the problem that has nothing to do with optics. Surveillance colonoscopy requires bowel preparation, sedation, a day lost, an endoscopy slot, and a pathologist. Those are real constraints anywhere and binding constraints in a health system with limited endoscopic capacity, which is directly relevant to a Colombian cohort. Any test that could tell a clinician <em>which</em> patients most need the next slot would be doing useful work even if it never replaced a single procedure.</p>
<div id="cell-fig-zoom" class="cell" data-fig-height="6.4" data-fig-width="14" data-execution_count="2">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.4</span>))</span>
<span id="cb1-2">ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">16</span>), ylim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.4</span>))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.axis(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"off"</span>)</span>
<span id="cb1-3">ax.set_facecolor(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>)</span>
<span id="cb1-4"></span>
<span id="cb1-5">vp_x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">12.0</span>]</span>
<span id="cb1-6">VW, VY, VH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span></span>
<span id="cb1-7"></span>
<span id="cb1-8"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># connector wedges between viewports</span></span>
<span id="cb1-9"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>):</span>
<span id="cb1-10">    x0 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> vp_x[i] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VW<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> x1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> vp_x[i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]</span>
<span id="cb1-11">    ax.add_patch(Polygon([(x0, VY), (x0, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VH), (x1, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.86</span>), (x1, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.14</span>)],</span>
<span id="cb1-12">                         closed<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pale, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>))</span>
<span id="cb1-13">    ax.text((x0 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> x1) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"zoom"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,</span>
<span id="cb1-14">            color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">90</span>)</span>
<span id="cb1-15"></span>
<span id="cb1-16"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> vp_x:</span>
<span id="cb1-17">    ax.add_patch(FancyBboxPatch((x, VY), VW, VH, boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.04"</span>,</span>
<span id="cb1-18">                                fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb1-19"></span>
<span id="cb1-20"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 1 · colon segment with an inflamed field</span></span>
<span id="cb1-21">cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> vp_x[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-22">ax.add_patch(FancyBboxPatch((cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>, boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.06"</span>,</span>
<span id="cb1-23">                            fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#F6E3DE"</span>, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb1-24">ax.add_patch(FancyBboxPatch((cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.05</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>, boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.04"</span>,</span>
<span id="cb1-25">                            fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>))</span>
<span id="cb1-26"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> dx <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> (<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.62</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.62</span>):</span>
<span id="cb1-27">    ax.add_patch(Ellipse((cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> dx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.67</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.42</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.55</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>))</span>
<span id="cb1-28">ax.text(cx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.72</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Long-standing pancolitis"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.5</span>)</span>
<span id="cb1-29">ax.text(cx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.55</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"the endoscopist's view"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb1-30"></span>
<span id="cb1-31"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 2 · mucosa and crypts</span></span>
<span id="cb1-32">cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> vp_x[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-33"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> j, dx <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">enumerate</span>((<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.05</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.53</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.53</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.05</span>)):</span>
<span id="cb1-34">    distorted <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (j <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-35">    ax.add_patch(FancyBboxPatch((cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> dx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.16</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.32</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">not</span> distorted <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.15</span>,</span>
<span id="cb1-36">                                boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.03"</span>,</span>
<span id="cb1-37">                                fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#DDEDEA"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">not</span> distorted <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#F6E3DE"</span>,</span>
<span id="cb1-38">                                ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">not</span> distorted <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> coral, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.4</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb1-39">ax.add_patch(Rectangle((cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.42</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.16</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gold, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb1-40">ax.annotate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"branched, shortened crypt"</span>, xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.53</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.05</span>),</span>
<span id="cb1-41">            ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,</span>
<span id="cb1-42">            arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>))</span>
<span id="cb1-43">ax.text(cx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.55</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mucosa · architecture"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb1-44"></span>
<span id="cb1-45"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 3 · epithelial cell and nucleus</span></span>
<span id="cb1-46">cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> vp_x[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-47">ax.add_patch(Ellipse((cx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.65</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.85</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#DDEDEA"</span>, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb1-48">ax.add_patch(Circle((cx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.65</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.66</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>))</span>
<span id="cb1-49"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> _ <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>):</span>
<span id="cb1-50">    a <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> rng.uniform(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> np.pi)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> r <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> rng.uniform(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.48</span>)</span>
<span id="cb1-51">    ax.plot([cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> r <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> np.cos(a) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.07</span>, cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> r <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> np.cos(a) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.07</span>],</span>
<span id="cb1-52">            [VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.65</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> r <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> np.sin(a), VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.65</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> r <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> np.sin(a) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.05</span>],</span>
<span id="cb1-53">            color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gold, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb1-54">ax.annotate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"nucleus"</span>, xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.05</span>), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.95</span>),</span>
<span id="cb1-55">            color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,</span>
<span id="cb1-56">            arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>))</span>
<span id="cb1-57">ax.text(cx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.55</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"cell state · cell of origin"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb1-58"></span>
<span id="cb1-59"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 4 · CpG island at a panel promoter</span></span>
<span id="cb1-60">cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> vp_x[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-61">ax.plot([cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>, cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>], [VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.55</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.55</span>], color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.4</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, solid_capstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round"</span>)</span>
<span id="cb1-62">ax.add_patch(FancyBboxPatch((cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.15</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.32</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.46</span>, boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.03"</span>,</span>
<span id="cb1-63">                            fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gold, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.35</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb1-64">ax.text(cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.40</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.06</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"CpG island"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a6a1f"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb1-65">ax.add_patch(FancyArrowPatch((cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.45</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.55</span>), (cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.3</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.55</span>), arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>,</span>
<span id="cb1-66">                             mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">13</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>))</span>
<span id="cb1-67">ax.text(cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.9</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.06</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"gene body"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb1-68">meth <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]</span>
<span id="cb1-69"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> k, m <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">enumerate</span>(meth):</span>
<span id="cb1-70">    px <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> cx <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.10</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.21</span></span>
<span id="cb1-71">    ax.plot([px, px], [VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.55</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.02</span>], color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.1</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-72">    ax.add_patch(Circle((px, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.10</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.088</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> m <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,</span>
<span id="cb1-73">                        ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> m <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> navy, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.3</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>))</span>
<span id="cb1-74">ax.text(cx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.62</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"one EM-seq read, CpG by CpG"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>)</span>
<span id="cb1-75">ax.text(cx, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.55</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"methylation · the measured layer"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb1-76"></span>
<span id="cb1-77">legend <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, markeredgecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,</span>
<span id="cb1-78">                 markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"methylated CpG"</span>),</span>
<span id="cb1-79">          Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>, markeredgecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy,</span>
<span id="cb1-80">                 markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"unmethylated CpG"</span>)]</span>
<span id="cb1-81">ax.legend(handles<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>legend, loc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"upper left"</span>, bbox_to_anchor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.005</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>), frameon<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>,</span>
<span id="cb1-82">          fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.8</span>, ncol<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, handletextpad<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>)</span>
<span id="cb1-83"></span>
<span id="cb1-84">titles <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1 · Colon segment"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2 · Mucosa and crypts"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"3 · Epithelial cell"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"4 · Promoter CpGs"</span>]</span>
<span id="cb1-85">notes <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Visible inflammation.</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Dysplasia is often flat</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">and not visible at all."</span>,</span>
<span id="cb1-86">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Histology sees architecture</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">and grade, one biopsy site</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">at a time."</span>,</span>
<span id="cb1-87">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Cell identity and state.</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Also what cfDNA carries</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">out of the tissue."</span>,</span>
<span id="cb1-88">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Read-level methylation:</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">measurable in tissue DNA</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">and in plasma cfDNA."</span>]</span>
<span id="cb1-89"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x, t, n <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">zip</span>(vp_x, titles, notes):</span>
<span id="cb1-90">    ax.text(x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.32</span>, t, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.5</span>)</span>
<span id="cb1-91">    ax.text(x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, VY <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.55</span>, n, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#3c4a52"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.8</span>, linespacing<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.45</span>)</span>
<span id="cb1-92"></span>
<span id="cb1-93">ax.add_patch(FancyArrowPatch((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.55</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">15.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.55</span>), arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">16</span>,</span>
<span id="cb1-94">                             color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.4</span>))</span>
<span id="cb1-95"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x, s <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">zip</span>([vp_x[i] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> VW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)], [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"≈ 30 cm"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"≈ 1 mm"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"≈ 10 µm"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"≈ 300 bp"</span>]):</span>
<span id="cb1-96">    ax.text(x, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.78</span>, s, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>)</span>
<span id="cb1-97">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.05</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"One participant, four scales — the endoscope resolves the first two"</span>,</span>
<span id="cb1-98">        ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">12.5</span>)</span>
<span id="cb1-99">fig.tight_layout()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> fig.savefig(OUT <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure-1-zoom-cascade.png"</span>, dpi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">220</span>, bbox_inches<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tight"</span>)</span>
<span id="cb1-100">plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-zoom" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-zoom-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/clinical-applications-of-methylation-siga-fingerprint/index_files/figure-html/fig-zoom-output-1.png" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-zoom-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: From the endoscopist’s field of view to a single CpG. The methylation signal is a property of individual DNA molecules; it is not something that can be seen, and that is precisely why it might add information to an examination that relies on sight.
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="which-clinical-problem-is-actually-unsolved" class="level2">
<h2 class="anchored" data-anchor-id="which-clinical-problem-is-actually-unsolved">Which clinical problem is actually unsolved?</h2>
<p>The gap is specific and it is a coverage gap, not a technology gap. A blood-based cell-free DNA test detected colorectal cancer with 83% sensitivity at 90% specificity for advanced neoplasia in 7,861 average-risk adults, though sensitivity for advanced precancerous lesions was only 13% <span class="citation" data-cites="chung2024shield">(<span class="nocase">Chung, Gray, Singh, and others</span>, 2024)</span>. The next-generation stool DNA test reached 93.9% sensitivity for cancer and 43.4% for advanced precancerous lesions in 20,176 participants, at 90.6% specificity for advanced neoplasia <span class="citation" data-cites="imperiale2024mtsdna">(<span class="nocase">Imperiale, Porter, Zella, and others</span>, 2024)</span>. These are strong screening tests. They are also, by label, for people whose colons are not chronically inflamed—and chronic inflammation is exactly the condition that changes both the biology and the base rate.</p>
<p>So the unsolved problem is not “detect colorectal cancer non-invasively”; that problem now has approved answers for the general population. The unsolved problem is <strong>risk stratification inside an already-high-risk group whose mucosa is abnormal by definition</strong>. A patient with 20 years of extensive colitis does not need to be told they are at elevated risk—they already know. They need to know whether <em>this year</em> their colon is carrying a molecular field change that warrants a closer look, and no approved test speaks to that question.</p>
</section>
<section id="why-a-14-gene-fingerprint-rather-than-a-single-marker" class="level2">
<h2 class="anchored" data-anchor-id="why-a-14-gene-fingerprint-rather-than-a-single-marker">Why a 14-gene fingerprint rather than a single marker?</h2>
<p>Because the two things a clinician would want to separate—inflammation and neoplastic drift—are not separable by one locus. The panel deliberately spans several biological programmes: immune activation and restraint (<strong>CD86, IL10, NLRC4, NLRP3, SIGLEC5, CLMP</strong>), epithelial cohesion (<strong>CDH1, CLMP</strong>), the cell-cycle brake (<strong>CDKN2A</strong>), trophic signalling (<strong>GDNF</strong>), and neoplasia-associated markers with weaker mechanistic annotation (<strong>FOXE1, SYNE1, FAM217B, KIAA1614, RIBC2</strong>). The <a href="../../posts/reactome-gene-relations-colitis-colon-cancer/index.html">Reactome synthesis</a> shows why that spread matters and where the annotation runs out; the <a href="../../posts/silenced-and-inflammatory-genes-in-colitis.html">individual gene profiles</a> give the evidence behind each.</p>
<p>The precedent for multiplexing is direct. In the ENDCaP-C validation, a five-marker methylation panel detected pre-cancerous and invasive neoplasia in neoplastic mucosa with an AUC of 0.83, while a four-marker panel applied to <em>non-neoplastic</em> mucosa predicted associated bowel neoplasia with an AUC of 0.68—modest, but non-zero, from tissue that looked normal <span class="citation" data-cites="beggs2019endcapc">(<span class="nocase">Beggs, Mehta, Deeks, and others</span>, 2019)</span>. Methylation of TUBB6 discriminated dysplastic from non-dysplastic tissue with an AUC of 0.84, including in apparently normal field mucosa downstream of a lesion <span class="citation" data-cites="beggs2018tubb6">(<span class="nocase">Beggs, James, Caldwell, and others</span>, 2018)</span>. A field signal that survives in normal-looking mucosa is exactly the kind of signal that could in principle survive into plasma.</p>
</section>
<section id="why-validate-the-same-fingerprint-in-tissue-and-plasma" class="level2">
<h2 class="anchored" data-anchor-id="why-validate-the-same-fingerprint-in-tissue-and-plasma">Why validate the same fingerprint in tissue <em>and</em> plasma?</h2>
<p>Because they answer different halves of the question. Colonic tissue anchors the signal anatomically: if a differential methylation region shows up in the biopsy, it is at least coming from the organ of interest. Plasma is the specimen a clinic could realistically draw every six months, but it is a mixture—leukocyte-derived cell-free DNA usually dominates, and a colonic epithelial signal has to be detected against that background. Neither view is sufficient alone, which is why the study collects both from the same participant; the reasoning is set out in <a href="../../posts/why-pair-tissue-and-plasma.html">why pair tissue and plasma</a>.</p>
<p>Pairing turns concordance into an internal validation gate rather than an assumption. If a region is differentially methylated in tissue and the same direction of change is visible in that participant’s plasma, the plasma signal has an anatomical explanation. If it is visible only in tissue, the assay may lack sensitivity at realistic tumour or epithelial fractions. If it is visible only in plasma, the likeliest explanation is cell-of-origin contamination, not a discovery. Each of those three outcomes is informative, and only the paired design can tell them apart.</p>
<div id="cell-fig-assay" class="cell" data-fig-height="7" data-fig-width="14" data-execution_count="3">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.0</span>))</span>
<span id="cb2-2">ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">17.4</span>), ylim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.axis(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"off"</span>)</span>
<span id="cb2-3"></span>
<span id="cb2-4">BW, BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.05</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span></span>
<span id="cb2-5">cols <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.35</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.75</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.55</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.95</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">12.35</span>]</span>
<span id="cb2-6">lane <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>: <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.10</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>: <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.10</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>: <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.30</span>}</span>
<span id="cb2-7">GX, GW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">14.95</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.05</span></span>
<span id="cb2-8"></span>
<span id="cb2-9"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> box(x, y, txt, fc, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">None</span>, tc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"solid"</span>, fs<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.8</span>, w<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>BW, h<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>BH):</span>
<span id="cb2-10">    ax.add_patch(FancyBboxPatch((x, y), w, h, boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.06"</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>fc,</span>
<span id="cb2-11">                                ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ec <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> ec <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span>, linestyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ls, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb2-12">    ax.text(x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> w <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> h <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, txt, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>tc,</span>
<span id="cb2-13">            weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>fs, linespacing<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb2-14"></span>
<span id="cb2-15"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> arrow(x0, y0, x1, y1, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.9</span>, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-"</span>):</span>
<span id="cb2-16">    ax.add_patch(FancyArrowPatch((x0, y0), (x1, y1), arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>,</span>
<span id="cb2-17">                                 color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>col, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>lw, linestyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ls, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb2-18"></span>
<span id="cb2-19"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># lane bands</span></span>
<span id="cb2-20"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> name, y <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> lane.items():</span>
<span id="cb2-21">    width <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">14.4</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> name <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.65</span></span>
<span id="cb2-22">    ax.add_patch(Rectangle((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.15</span>, y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.42</span>), width, BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.84</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pale, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.55</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>))</span>
<span id="cb2-23"></span>
<span id="cb2-24"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># tissue lane</span></span>
<span id="cb2-25">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Colonic</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">biopsy"</span>, teal)</span>
<span id="cb2-26">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PANAMAX 48</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">genomic DNA"</span>, teal)</span>
<span id="cb2-27">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"UltraShear</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">fragmentation"</span>, gold, tc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy)</span>
<span id="cb2-28">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NEBNext</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">EM-seq"</span>, navy)</span>
<span id="cb2-29">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NovaSeq 6000</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">paired-end"</span>, navy)</span>
<span id="cb2-30">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fastp → bwa-meth</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">→ MethylDackel"</span>, navy)</span>
<span id="cb2-31"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>):</span>
<span id="cb2-32">    arrow(cols[i] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW, lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, cols[i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb2-33"></span>
<span id="cb2-34"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># plasma lane</span></span>
<span id="cb2-35">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Blood draw</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(plasma)"</span>, coral)</span>
<span id="cb2-36">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PANAMAX 48</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">cfDNA"</span>, coral)</span>
<span id="cb2-37">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"no shearing —</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">native inserts kept"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, tc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"dashed"</span>)</span>
<span id="cb2-38">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NEBNext</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">EM-seq"</span>, navy)</span>
<span id="cb2-39">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NovaSeq 6000</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">paired-end"</span>, navy)</span>
<span id="cb2-40">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fastp → bwa-meth</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">→ MethylDackel"</span>, navy)</span>
<span id="cb2-41"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>):</span>
<span id="cb2-42">    arrow(cols[i] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW, lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, cols[i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral)</span>
<span id="cb2-43"></span>
<span id="cb2-44"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># serum lane</span></span>
<span id="cb2-45">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Blood draw</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(serum)"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#B4762F"</span>)</span>
<span id="cb2-46">box(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"sIgA sandwich</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">ELISA"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#B4762F"</span>)</span>
<span id="cb2-47">arrow(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW, lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>], lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#B4762F"</span>)</span>
<span id="cb2-48"></span>
<span id="cb2-49"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># convergence</span></span>
<span id="cb2-50">box(GX, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.55</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"DSS</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">DML / DMR</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">+ integration"</span>, navy, w<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>GW, h<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.10</span>, fs<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.6</span>)</span>
<span id="cb2-51"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> y, c <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>], teal), (lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>], coral)]:</span>
<span id="cb2-52">    arrow(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW, y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, GX, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.65</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.90</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c)</span>
<span id="cb2-53">arrow(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW, lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, GX <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> GW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>,</span>
<span id="cb2-54">      col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#B4762F"</span>, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)))</span>
<span id="cb2-55">arrow(GX <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> GW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, GX <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> GW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.55</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#B4762F"</span>, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)))</span>
<span id="cb2-56"></span>
<span id="cb2-57">ax.text(GX <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> GW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.95</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Paired concordance gate"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb2-58">ax.text(GX <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> GW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.28</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"same direction in tissue</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">and plasma, same person?"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,</span>
<span id="cb2-59">        color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#3c4a52"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.4</span>, linespacing<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.4</span>)</span>
<span id="cb2-60"></span>
<span id="cb2-61">ax.annotate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"cfDNA is never sheared — insert size</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">is itself a measurement"</span>,</span>
<span id="cb2-62">            xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>]), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.95</span>),</span>
<span id="cb2-63">            ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,</span>
<span id="cb2-64">            arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>))</span>
<span id="cb2-65">ax.annotate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue DNA is sheared on purpose,</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">to match library input"</span>,</span>
<span id="cb2-66">            xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, lane[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cols[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BW <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.90</span>),</span>
<span id="cb2-67">            ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a6a1f"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,</span>
<span id="cb2-68">            arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gold, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>))</span>
<span id="cb2-69"></span>
<span id="cb2-70"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> name, label, col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tissue"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TISSUE"</span>, teal), (<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"plasma"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PLASMA cfDNA"</span>, coral),</span>
<span id="cb2-71">                         (<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SERUM"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#B4762F"</span>)]:</span>
<span id="cb2-72">    ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.22</span>, lane[name] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> BH <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.52</span>, label, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>col, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>)</span>
<span id="cb2-73"></span>
<span id="cb2-74">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.32</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"One collection episode · two specimens from the same participant · one integrated model"</span>,</span>
<span id="cb2-75">        ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.5</span>, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb2-76">fig.tight_layout()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> fig.savefig(OUT <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure-2-clinical-workflow.png"</span>, dpi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">220</span>, bbox_inches<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tight"</span>)</span>
<span id="cb2-77">plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-assay" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-assay-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/clinical-applications-of-methylation-siga-fingerprint/index_files/figure-html/fig-assay-output-1.png" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-assay-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;2: One participant, three specimens, one integrated readout. Tissue DNA is deliberately sheared and plasma cfDNA is not, because native insert-size distribution is the raw material for any later fragmentomic analysis. The paired concordance check is the gate, not an afterthought.
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="what-does-serum-siga-add-that-methylation-cannot" class="level2">
<h2 class="anchored" data-anchor-id="what-does-serum-siga-add-that-methylation-cannot">What does serum sIgA add that methylation cannot?</h2>
<p>It measures a different thing. Methylation reports on cell state and cell of origin; secretory IgA reports on the mucosal immune barrier and its interaction with the microbiota. In a clinic, the practical value of an orthogonal axis is discrimination between two situations that look similar on an inflammatory marker alone: a colon that is inflamed, and a colon that is inflamed <em>and</em> drifting. If methylation and sIgA move together in all patients, sIgA adds little; if they dissociate in a subgroup, that dissociation is the clinically interesting signal. The <a href="../../siga-methods.html">assay and rationale</a> set out how it is measured here.</p>
<p>Two caveats have to travel with any sIgA claim. First, this study measures <strong>serum</strong> sIgA, which is accessible but is not the same measurement as secretory IgA at the intestinal surface or in stool—that distinction is stated plainly in the <a href="../../approach.html">methylation vs sIgA comparison</a> and it does not go away when the result is convenient. Second, a serum immune marker is dynamic: infection, treatment, and systemic immune state all move it. That makes it a plausible complement to a durable epigenetic signal and a poor substitute for one.</p>
</section>
<section id="where-would-such-a-test-sit-in-a-care-pathway" class="level2">
<h2 class="anchored" data-anchor-id="where-would-such-a-test-sit-in-a-care-pathway">Where would such a test sit in a care pathway?</h2>
<p>Three placements are worth distinguishing, because they have different evidence requirements. <strong>Triage before colonoscopy</strong> would use the test to prioritise scarce endoscopy slots—it needs high sensitivity and tolerates modest specificity, because the downstream action is a procedure the patient was going to need eventually. <strong>Surveillance-interval personalisation</strong> would use a persistently negative result to justify extending an interval, and that is the most demanding use: it requires prospective, longitudinal evidence that a negative result predicts absence of progression, not merely absence of current dysplasia. <strong>Post-treatment or post-resection monitoring</strong> would track the signal over time within one patient, where each person is their own baseline and the relevant question is change rather than an absolute threshold.</p>
<p>None of these is a replacement for colonoscopy, and the framing matters clinically. A methylation field signal, by construction, says something about the state of the mucosa as a whole; it does not localise a lesion, and a positive result still ends in an endoscope. The realistic ambition is to change <em>who gets scoped next and when</em>, not to remove the procedure from the pathway.</p>
<div id="cell-fig-pathway" class="cell" data-fig-height="7.2" data-fig-width="14" data-execution_count="4">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>))</span>
<span id="cb3-2">ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">16</span>), ylim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.4</span>))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.axis(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"off"</span>)</span>
<span id="cb3-3"></span>
<span id="cb3-4"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> pbox(x, y, w, h, txt, fc, tc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"solid"</span>, fs<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.0</span>):</span>
<span id="cb3-5">    ax.add_patch(FancyBboxPatch((x, y), w, h, boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.07"</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>fc, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ec,</span>
<span id="cb3-6">                                lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.7</span>, linestyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ls, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb3-7">    ax.text(x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> w <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> h <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, txt, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>tc, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,</span>
<span id="cb3-8">            fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>fs, linespacing<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb3-9"></span>
<span id="cb3-10"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> parrow(x0, y0, x1, y1, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-"</span>, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>):</span>
<span id="cb3-11">    ax.add_patch(FancyArrowPatch((x0, y0), (x1, y1), arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>,</span>
<span id="cb3-12">                                 color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>col, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>lw, linestyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ls, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb3-13"></span>
<span id="cb3-14"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- current pathway</span></span>
<span id="cb3-15">ax.add_patch(Rectangle((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.55</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">15.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.55</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pale, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.6</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>))</span>
<span id="cb3-16">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.35</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.86</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TODAY  ·  evidence-supported practice"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb3-17">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.4</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Long-standing</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">extensive UC"</span>, teal)</span>
<span id="cb3-18">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Risk stratification</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">from history and</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">endoscopic appearance"</span>, teal)</span>
<span id="cb3-19">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Surveillance</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">colonoscopy at a</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">fixed interval"</span>, teal)</span>
<span id="cb3-20">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.4</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Targeted ± random</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">biopsy"</span>, teal)</span>
<span id="cb3-21">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">13.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Histology</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">decides"</span>, navy)</span>
<span id="cb3-22"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x0, x1 <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.6</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.0</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.4</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">12.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">13.6</span>)]:</span>
<span id="cb3-23">    parrow(x0, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.78</span>, x1, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.78</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal)</span>
<span id="cb3-24"></span>
<span id="cb3-25"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># divider</span></span>
<span id="cb3-26">ax.plot([<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">15.8</span>], [<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.25</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.25</span>], color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.1</span>, linestyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)))</span>
<span id="cb3-27">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.42</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"everything below this line is hypothetical"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray,</span>
<span id="cb3-28">        fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb3-29"></span>
<span id="cb3-30"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- hypothesised pathway</span></span>
<span id="cb3-31">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.35</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.78</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"HYPOTHESISED  ·  would require prospective validation"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,</span>
<span id="cb3-32">        weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb3-33">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.4</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.95</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Same patient,</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">same clinic visit"</span>, coral)</span>
<span id="cb3-34">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.95</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Blood draw:</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">cfDNA methylation</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">panel + serum sIgA"</span>, coral)</span>
<span id="cb3-35">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.95</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Integrated</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">risk score"</span>, navy)</span>
<span id="cb3-36"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x0, x1 <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.6</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>)]:</span>
<span id="cb3-37">    parrow(x0, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.58</span>, x1, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.58</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral)</span>
<span id="cb3-38"></span>
<span id="cb3-39">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.50</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.20</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Signal present → bring colonoscopy forward,</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">chromoendoscopy, extended sampling"</span>, gold, tc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, fs<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.0</span>)</span>
<span id="cb3-40">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.65</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.20</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Signal absent → maintain the guideline interval</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(never: skip surveillance)"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>, tc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"dashed"</span>, fs<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.0</span>)</span>
<span id="cb3-41">parrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.90</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.10</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gold)</span>
<span id="cb3-42">parrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.30</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.25</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)))</span>
<span id="cb3-43">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.42</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.20</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"positive"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a6a1f"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb3-44">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.32</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.42</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"negative"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb3-45"></span>
<span id="cb3-46">pbox(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.4</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.35</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.15</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Repeat at each visit — within-person change,</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">not a single absolute threshold"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,</span>
<span id="cb3-47">     tc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"dashed"</span>, fs<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.0</span>)</span>
<span id="cb3-48">parrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.45</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.95</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.45</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.50</span>, col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)))</span>
<span id="cb3-49"></span>
<span id="cb3-50">ax.annotate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"the test reprioritises the queue;</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">it does not remove the procedure"</span>,</span>
<span id="cb3-51">            xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.70</span>), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.72</span>), ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.2</span>,</span>
<span id="cb3-52">            weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.3</span>,</span>
<span id="cb3-53">                                           connectionstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"arc3,rad=-0.28"</span>))</span>
<span id="cb3-54">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.15</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Where a methylation + sIgA score could enter the surveillance pathway"</span>,</span>
<span id="cb3-55">        ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">12.5</span>)</span>
<span id="cb3-56">fig.tight_layout()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> fig.savefig(OUT <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure-4-care-pathway.png"</span>, dpi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">220</span>, bbox_inches<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tight"</span>)</span>
<span id="cb3-57">plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-pathway" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-pathway-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/clinical-applications-of-methylation-siga-fingerprint/index_files/figure-html/fig-pathway-output-1.png" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-pathway-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;3: Current surveillance pathway (top) and the hypothesised augmented pathway (bottom). The lower row is a design proposal, not a validated algorithm: every arrow below the divider would require prospective evidence that does not yet exist.
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="what-performance-would-it-actually-need-to-change-a-decision" class="level2">
<h2 class="anchored" data-anchor-id="what-performance-would-it-actually-need-to-change-a-decision">What performance would it actually need to change a decision?</h2>
<p>There is a published bar to clear. Medicare’s national coverage determination for colorectal cancer screening tests (<a href="https://www.cms.gov/medicare-coverage-database/view/ncd.aspx?NCDId=281">NCD 210.3</a>) requires a blood-based biomarker screening test to show at least <strong>74% sensitivity</strong> for colorectal cancer and at least <strong>90% specificity</strong>, based on the pivotal studies in FDA labelling, and covers such a test once every three years. That bar was calibrated against average-risk screening, and a surveillance test for high-risk colitis would ultimately need its own threshold—but it is the only concrete number the field has, and it is a reasonable place to start reasoning.</p>
<p>Specificity is the constraint that bites, and how hard it bites depends on prevalence—which in surveillance is neither negligible nor well pinned down. Reported per-procedure dysplasia detection varies widely with population and technique: a real-world Latin American surveillance series spanning Colombia, Costa Rica, Peru, Ecuador and the Dominican Republic found dysplasia in 12.5% of 144 surveillance colonoscopies, with digital chromoendoscopy detecting roughly five times more than white light <span class="citation" data-cites="parraizquierdo2025latam">(<span class="nocase">Parra-Izquierdo, Otero-Regino, Juliao-Baños, and others</span>, 2025)</span>, while population-based cohorts report considerably lower rates <span class="citation" data-cites="choi2015surveillance">(<span class="nocase">Choi, Rutter, Askari, and others</span>, 2015)</span>. That spread matters more than any single figure, and it cuts in the technology’s favour: a surveillance population is enriched relative to average-risk screening, so the same test yields a better positive predictive value here than it would in a screening programme.</p>
<p>The arithmetic is still worth seeing before a test is called “accurate”. At 5% prevalence, a test with 85% sensitivity and 90% specificity returns a positive predictive value near 31%—about three colonoscopies per true finding. At the 12.5% observed in that Latin American series, the same test returns roughly 55%. Figure&nbsp;4 shows the whole curve rather than a single operating point, because the honest answer depends on which population is being tested.</p>
<div class="callout callout-style-default callout-warning callout-titled" title="Simulation disclaimer">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Warning</span>Simulation disclaimer
</div>
</div>
<div class="callout-body-container callout-body">
<p>Panels (b) and (c) of Figure&nbsp;4 contain <strong>no data from this study or any other</strong>. Panel (b) is drawn from a binormal model at chosen AUC values to illustrate the shape of the trade-off. Panel (c) is exact arithmetic — Bayes’ rule applied to stated sensitivity and specificity — and is true of any test with those characteristics, including tests that do not exist.</p>
</div>
</div>
<div class="callout callout-style-default callout-important callout-titled" title="What panel (a) is—and is not">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Important</span>What panel (a) is—and is not
</div>
</div>
<div class="callout-body-container callout-body">
<p>Panel (a) encodes the <strong>direction</strong> of methylation change reported in the cited literature for each panel gene, on a schematic scale. It is a reading of published findings <span class="citation" data-cites="kang2016ucpanel papadia2014foxesyne saito2011ucmethylation hsieh1998p16 wheeler2001cdh1">(Kang, Bae, Han, Kim, Kim, and Yi, 2016; <span class="nocase">Papadia, Louwagie, Del Rio, Grooteclaes, Coruzzi, Montana, Novelli, Bordi, de’ Angelis, Bassett, Bigley, Warren, Atkin, and Forbes</span>, 2014; Saito, Kato, Hiraoka, Horii, Suzuki, Higashi, Kaji, Kondo, and Yamamoto, 2011; Hsieh, Klump, Holzmann, Borchard, Gregor, and Porschen, 1998; Wheeler, Kim, Efstathiou, Ilyas, Mortensen, and Bodmer, 2001)</span>, not a measurement from this cohort, and the magnitudes carry no quantitative meaning.</p>
</div>
</div>
<div id="cell-fig-results" class="cell" data-fig-height="5.6" data-fig-width="15" data-execution_count="5">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb4-1">genes <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"CD86"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"IL10"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NLRC4"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NLRP3"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SIGLEC5"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"CLMP"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"CDH1"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"CDKN2A"</span>,</span>
<span id="cb4-2">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"GDNF"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"FOXE1"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SYNE1"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"FAM217B"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"KIAA1614"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"RIBC2"</span>]</span>
<span id="cb4-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># schematic direction: negative = hypomethylated, positive = hypermethylated</span></span>
<span id="cb4-4">direction <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> pd.DataFrame(</span>
<span id="cb4-5">    {<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Healthy"</span>: [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>,</span>
<span id="cb4-6">     <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"UC (high risk)"</span>: [<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.6</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.6</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.4</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span>],</span>
<span id="cb4-7">     <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"CRC"</span>: [<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.4</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.6</span>]},</span>
<span id="cb4-8">    index<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>genes)</span>
<span id="cb4-9"></span>
<span id="cb4-10"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> roc_from_auc(auc, n<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>):</span>
<span id="cb4-11">    <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">"""Binormal ROC with equal variances: the curve implied by a given AUC."""</span></span>
<span id="cb4-12">    <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> scipy.stats <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> norm</span>
<span id="cb4-13">    mu <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> np.sqrt(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> norm.ppf(auc)</span>
<span id="cb4-14">    fpr <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> np.linspace(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1e-4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1e-4</span>, n)</span>
<span id="cb4-15">    tpr <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> norm.cdf(norm.ppf(fpr) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> mu)</span>
<span id="cb4-16">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> fpr, tpr</span>
<span id="cb4-17"></span>
<span id="cb4-18"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> ppv(se, sp, prev):</span>
<span id="cb4-19">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> se <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> prev <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> (se <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> prev <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> sp) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> prev))</span>
<span id="cb4-20"></span>
<span id="cb4-21"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> pv <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.05</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.125</span>):</span>
<span id="cb4-22">    v <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> ppv(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.90</span>, pv)</span>
<span id="cb4-23">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"prevalence </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>pv<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.1%}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">: PPV </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>v<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.3f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;"> → </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> v<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.1f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;"> colonoscopies per true positive"</span>)</span>
<span id="cb4-24"></span>
<span id="cb4-25">fig, axes <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.6</span>),</span>
<span id="cb4-26">                         gridspec_kw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"width_ratios"</span>: [<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>]})</span>
<span id="cb4-27"></span>
<span id="cb4-28"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># (a) direction map</span></span>
<span id="cb4-29">axa <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> axes[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb4-30">sns.heatmap(direction, ax<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>axa, cmap<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"RdBu_r"</span>, center<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, vmin<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, vmax<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,</span>
<span id="cb4-31">            cbar_kws<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"label"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"hypo  ←   direction   →  hyper"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"shrink"</span>: <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.72</span>},</span>
<span id="cb4-32">            linewidths<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.6</span>, linecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>, annot<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb4-33">axa.set_title(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"(a) Reported direction of change"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, loc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.5</span>)</span>
<span id="cb4-34">axa.set_xlabel(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> axa.tick_params(axis<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"x"</span>, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>, labelsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>)</span>
<span id="cb4-35">axa.tick_params(axis<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"y"</span>, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, labelsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>)</span>
<span id="cb4-36"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i, g <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">enumerate</span>(genes):</span>
<span id="cb4-37">    mark <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"▼"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> direction[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"UC (high risk)"</span>].iloc[i] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"▲"</span></span>
<span id="cb4-38">    axa.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.02</span>, i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, mark, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>,</span>
<span id="cb4-39">             color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> mark <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"▼"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> coral, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, clip_on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb4-40">axa.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.0</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.22</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"schematic, from published reports — not measured here"</span>,</span>
<span id="cb4-41">         transform<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>axa.transAxes, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.4</span>, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb4-42"></span>
<span id="cb4-43"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># (b) illustrative ROC</span></span>
<span id="cb4-44">axb <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> axes[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]</span>
<span id="cb4-45">axb.set_facecolor(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> axb.grid(alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>)</span>
<span id="cb4-46"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> auc, lab, col, lw <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.78</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"methylation panel"</span>, teal, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.4</span>),</span>
<span id="cb4-47">                          (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.64</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serum sIgA alone"</span>, gold, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>),</span>
<span id="cb4-48">                          (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.86</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"combined"</span>, coral, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.8</span>)]:</span>
<span id="cb4-49">    f, t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> roc_from_auc(auc)</span>
<span id="cb4-50">    axb.plot(f, t, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>col, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>lw, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>lab<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;"> (AUC </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>auc<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">)"</span>)</span>
<span id="cb4-51">axb.plot([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>], color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gray, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, linestyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)))</span>
<span id="cb4-52">axb.add_patch(Rectangle((<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.74</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.10</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.26</span>, fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.13</span>, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.4</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb4-53">axb.annotate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Medicare bar for a blood test:</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">≥74</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">% s</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">ensitivity, ≥90</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">% s</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">pecificity"</span>,</span>
<span id="cb4-54">             xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.10</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.80</span>), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.33</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.52</span>), fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,</span>
<span id="cb4-55">             arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>))</span>
<span id="cb4-56">axb.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), ylim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.02</span>), xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1 − specificity"</span>, ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"sensitivity"</span>)</span>
<span id="cb4-57">axb.set_title(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"(b) Illustrative discrimination"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, loc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.5</span>)</span>
<span id="cb4-58">axb.legend(loc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"lower right"</span>, bbox_to_anchor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.10</span>), frameon<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>)</span>
<span id="cb4-59">axb.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.97</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.05</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"simulated shapes — no data"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.4</span>,</span>
<span id="cb4-60">         style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb4-61"></span>
<span id="cb4-62"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># (c) PPV vs prevalence</span></span>
<span id="cb4-63">axc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> axes[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>]</span>
<span id="cb4-64">axc.set_facecolor(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> axc.grid(alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>)</span>
<span id="cb4-65">prev <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> np.linspace(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.005</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.20</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">300</span>)</span>
<span id="cb4-66"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> se, sp, col, ls <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.90</span>, coral, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-"</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.95</span>, teal, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-"</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.74</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.90</span>, gray, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)))]:</span>
<span id="cb4-67">    axc.plot(prev <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>, ppv(se, sp, prev) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>col, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.4</span>, linestyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ls,</span>
<span id="cb4-68">             label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"se </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>se<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;"> · sp </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>sp<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb4-69">axc.axvspan(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">12.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gold, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.16</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb4-70">axc.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">97</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"reported dysplasia detection</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">per surveillance colonoscopy</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(population-based → referral)"</span>,</span>
<span id="cb4-71">         ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a6a1f"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.4</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb4-72">axc.axvline(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">12.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a6a1f"</span>, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, linestyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)), zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb4-73"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> p0, dx, dy <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.05</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.125</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">14.2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">34</span>)]:</span>
<span id="cb4-74">    y0 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> ppv(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.90</span>, p0) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span></span>
<span id="cb4-75">    axc.plot([p0 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>], [y0], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, ms<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>)</span>
<span id="cb4-76">    axc.annotate(<span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"PPV </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>y0<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.0f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">%  →  </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> y0<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.1f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;"> scopes</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">per true positive"</span>,</span>
<span id="cb4-77">                 xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(p0 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>, y0), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(dx, dy), fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,</span>
<span id="cb4-78">                 arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.3</span>))</span>
<span id="cb4-79">axc.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>), ylim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>), xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"prevalence in the tested population (%)"</span>,</span>
<span id="cb4-80">        ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"positive predictive value (%)"</span>)</span>
<span id="cb4-81">axc.set_title(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"(c) Why specificity dominates"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, loc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.5</span>)</span>
<span id="cb4-82">axc.legend(loc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"lower right"</span>, frameon<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.6</span>)</span>
<span id="cb4-83"></span>
<span id="cb4-84">fig.tight_layout()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> fig.savefig(OUT <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure-3-performance.png"</span>, dpi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">220</span>, bbox_inches<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tight"</span>)</span>
<span id="cb4-85">plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-stdout">
<pre><code>prevalence 5.0%: PPV 0.309 → 3.2 colonoscopies per true positive
prevalence 12.5%: PPV 0.548 → 1.8 colonoscopies per true positive</code></pre>
</div>
<div class="cell-output cell-output-display">
<div id="fig-results" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-results-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/clinical-applications-of-methylation-siga-fingerprint/index_files/figure-html/fig-results-output-2.png" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-results-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;4: (a) Direction of methylation change reported in the literature for each panel gene. (b) Illustrative discrimination for methylation alone, sIgA alone, and the two combined, with the Medicare blood-test operating region marked. (c) Positive predictive value against prevalence — exact arithmetic, showing why specificity dominates in a low-prevalence surveillance setting.
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="how-does-this-compare-with-what-is-already-on-the-market" class="level2">
<h2 class="anchored" data-anchor-id="how-does-this-compare-with-what-is-already-on-the-market">How does this compare with what is already on the market?</h2>
<p>The table below is a <strong>clinical-indication</strong> landscape; the <a href="../../technology.html">cfDNA technology landscape</a> covers the same companies from the platform side. Read the <em>indicated population</em> column first—it is where the gap lives.</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>Test / platform</th>
<th>Specimen</th>
<th>Signal</th>
<th>Status</th>
<th>Indicated population</th>
<th>Relevance and gap for UC surveillance</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><a href="https://www.exactsciences.com/newsroom/press-releases/fda-approves-exact-sciences-cologuard-plus-test">Cologuard Plus</a> (Exact Sciences)</td>
<td>Stool</td>
<td>Methylated DNA markers + haemoglobin</td>
<td>FDA-approved Oct 2024</td>
<td>Average risk, ≥45</td>
<td>93.9% cancer sensitivity, 43.4% for advanced precancerous lesions <span class="citation" data-cites="imperiale2024mtsdna">(<span class="nocase">Imperiale, Porter, Zella, and others</span>, 2024)</span>. IBD is a listed contraindication; the test was not evaluated in inflamed mucosa.</td>
</tr>
<tr class="even">
<td><a href="https://guardanthealth.com/products/tests-for-cancer-screening/">Shield</a> (Guardant Health)</td>
<td>Plasma</td>
<td>cfDNA (methylation and related features)</td>
<td>FDA-approved Jul 2024</td>
<td>Average risk, ≥45</td>
<td>83% cancer sensitivity, 90% specificity, 13% for advanced precancerous lesions <span class="citation" data-cites="chung2024shield">(<span class="nocase">Chung, Gray, Singh, and others</span>, 2024)</span>. Proves a blood test can be approved; says nothing about UC.</td>
</tr>
<tr class="odd">
<td>Epi proColon (methylated SEPT9)</td>
<td>Plasma</td>
<td>Single methylation marker</td>
<td>Earlier-generation blood test</td>
<td>Average-risk screening</td>
<td>48.2% sensitivity, 91.5% specificity, 11.2% for advanced adenoma <span class="citation" data-cites="church2014sept9">(<span class="nocase">Church, Wandell, Lofton-Day, and others</span>, 2014)</span>. The clearest evidence that one marker is not enough.</td>
</tr>
<tr class="even">
<td><a href="https://grail.com/">Galleri</a> (GRAIL)</td>
<td>Plasma</td>
<td>Targeted methylation, multi-cancer</td>
<td>Laboratory-developed test</td>
<td>Adults at elevated cancer risk; complements screening</td>
<td>51.5% overall sensitivity at 99.5% specificity; 16.8% at stage I <span class="citation" data-cites="klein2021mced">(<span class="nocase">Klein, Richards, Cohn, and others</span>, 2021)</span>. Built for many cancers at high specificity, not for one organ at high sensitivity.</td>
</tr>
<tr class="odd">
<td><a href="https://delfidiagnostics.com/technology/fragmentomics/">DELFI</a></td>
<td>Plasma</td>
<td>Genome-wide fragmentation</td>
<td>Research / commercial development</td>
<td>Cancer detection research</td>
<td>Fragmentomics is a complementary cfDNA feature <span class="citation" data-cites="cristiano2019delfi">(<span class="nocase">Cristiano, Leal, Phallen, and others</span>, 2019)</span>. Inflammation itself perturbs fragmentation, so a colitis cohort needs its own baseline.</td>
</tr>
<tr class="even">
<td><a href="https://tagomics.com/organ-health">LiquiPath / Activace</a> (Tagomics)</td>
<td>Plasma</td>
<td>Cell-type methylation atlas deconvolution</td>
<td>Early access, drug-safety monitoring</td>
<td>Organ-injury monitoring</td>
<td>The closest analogue to tissue-of-origin deconvolution; company-reported and not independently validated for colon.</td>
</tr>
<tr class="odd">
<td><a href="https://prometheuslabs.com/monitr-crohns-disease/biomarkers/">Monitr / Endoscopic Healing Index</a> (Prometheus)</td>
<td>Serum</td>
<td>13-protein panel</td>
<td>Laboratory-developed test</td>
<td>Crohn’s disease</td>
<td>AUROC 0.962 in biologic-naive early disease but 0.693 in chronic disease <span class="citation" data-cites="dhaens2020ehi">(<span class="nocase">D’Haens, Kelly, Battat, and others</span>, 2020)</span>. Measures inflammation, not neoplastic drift — and it is a Crohn’s test.</td>
</tr>
<tr class="even">
<td>Fecal calprotectin</td>
<td>Stool</td>
<td>Neutrophil protein</td>
<td>Routine clinical use</td>
<td>IBD activity monitoring</td>
<td>Pooled sensitivity 0.88, specificity 0.73 for endoscopic activity <span class="citation" data-cites="mosli2015calprotectin">(<span class="nocase">Mosli, Zou, Garg, and others</span>, 2015)</span>. Excellent for inflammation; silent on dysplasia.</td>
</tr>
<tr class="odd">
<td>Chromoendoscopy + targeted biopsy</td>
<td>Colon</td>
<td>Visual + histology</td>
<td>Guideline-recommended</td>
<td>IBD surveillance</td>
<td>The reference standard <span class="citation" data-cites="laine2015scenic murthy2021dysplasia">(<span class="nocase">Laine, Kaltenbach, Barkun, and others</span>, 2015; Murthy, Feuerstein, Nguyen, and Velayos, 2021)</span>. Twice as effective as white light for dysplasia, and still misses field change <span class="citation" data-cites="choi2015surveillance">(<span class="nocase">Choi, Rutter, Askari, and others</span>, 2015)</span>.</td>
</tr>
<tr class="even">
<td><strong>This project</strong></td>
<td>Tissue + plasma + serum</td>
<td>14-gene methylation, paired, plus serum sIgA</td>
<td><strong>Exploratory, 18 participants</strong></td>
<td>High-risk UC (research only)</td>
<td>Addresses the population everything above excludes. Has produced no performance estimate, and cannot until it is much larger.</td>
</tr>
</tbody>
</table>
</section>
<section id="what-would-make-it-fail" class="level2">
<h2 class="anchored" data-anchor-id="what-would-make-it-fail">What would make it fail?</h2>
<p>Four things, in rough order of likelihood. <strong>Inflammation confounds methylation</strong>: several panel genes were nominated because they change with disease severity, which is exactly what makes them poor at distinguishing “severely inflamed” from “neoplastically drifting”. <strong>Leukocyte cfDNA dominates plasma</strong>: if the colonic epithelial fraction is small, a real tissue signal may simply be undetectable at achievable sequencing depth, and tissue-of-origin deconvolution becomes a prerequisite rather than a refinement. <strong>Batch and pre-analytics masquerade as biology</strong>: collection tube, processing delay, freeze–thaw, and library batch can all generate group differences in a cohort this size. <strong>The cohort is too small for the question</strong>: with 18 participants across three groups, this design can estimate effect sizes and check assay behaviour; it cannot estimate sensitivity, and any classifier trained on it will overfit.</p>
<p>There is also a conceptual limit that no amount of data removes. A field-change marker reports on the state of the mucosa, not the location of a lesion. Even a well-performing test would end in a colonoscopy, and its value would have to be argued in terms of <em>better-targeted</em> endoscopy rather than <em>less</em> endoscopy.</p>
</section>
<section id="what-is-the-shortest-credible-path-to-a-clinic" class="level2">
<h2 class="anchored" data-anchor-id="what-is-the-shortest-credible-path-to-a-clinic">What is the shortest credible path to a clinic?</h2>
<p>Each rung requires a different study, and the study described on this site sits on the first. Association—do the signals differ across groups?—is answerable now. Discrimination in held-out data needs a cohort perhaps an order of magnitude larger, with pre-specified regions and honest resampling. Prognosis needs longitudinal follow-up in a surveillance programme, because the clinically relevant outcome is progression, not cross-sectional group membership. Clinical utility needs a comparison against the current pathway, and reimbursement needs performance characteristics documented in a form a payer recognises.</p>
<div class="cell" data-layout-align="default">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode default code-with-copy"><code class="sourceCode default"><span id="cb6-1">flowchart LR</span>
<span id="cb6-2">  A["1 · Association&lt;br/&gt;signals differ across groups"] --&gt; B["2 · Discrimination&lt;br/&gt;held-out and external cohorts"]</span>
<span id="cb6-3">  B --&gt; C["3 · Prognosis&lt;br/&gt;prospective surveillance follow-up"]</span>
<span id="cb6-4">  C --&gt; D["4 · Clinical utility&lt;br/&gt;better decisions than current care"]</span>
<span id="cb6-5">  D --&gt; E["5 · Deployment&lt;br/&gt;CLIA / regulatory / coverage"]</span>
<span id="cb6-6"></span>
<span id="cb6-7">  classDef now fill:#dcefee,stroke:#167d78,color:#123b5d;</span>
<span id="cb6-8">  classDef next fill:#f7efe1,stroke:#c58b2c,color:#3c2d16;</span>
<span id="cb6-9">  classDef far fill:#123b5d,stroke:#123b5d,color:#fff;</span>
<span id="cb6-10">  class A now;</span>
<span id="cb6-11">  class B,C next;</span>
<span id="cb6-12">  class D,E far;</span></code></pre></div></div>
</details>
<div class="cell-output-display">
<div>
<p></p><figure class="figure"><p></p>
<div>
<pre class="mermaid mermaid-js">flowchart LR
  A["1 · Association&lt;br/&gt;signals differ across groups"] --&gt; B["2 · Discrimination&lt;br/&gt;held-out and external cohorts"]
  B --&gt; C["3 · Prognosis&lt;br/&gt;prospective surveillance follow-up"]
  C --&gt; D["4 · Clinical utility&lt;br/&gt;better decisions than current care"]
  D --&gt; E["5 · Deployment&lt;br/&gt;CLIA / regulatory / coverage"]

  classDef now fill:#dcefee,stroke:#167d78,color:#123b5d;
  classDef next fill:#f7efe1,stroke:#c58b2c,color:#3c2d16;
  classDef far fill:#123b5d,stroke:#123b5d,color:#fff;
  class A now;
  class B,C next;
  class D,E far;
</pre>
</div>
<p></p></figure><p></p>
</div>
</div>
</div>
<p>The honest summary is that the clinical problem is real, well-characterised, and unaddressed by any approved test, and that this project is at rung one of five. That is a reason to be precise about which rung each claim belongs to, not a reason to discount the question.</p>
<div class="callout callout-style-default callout-important callout-titled" title="Translation boundary">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Important</span>Translation boundary
</div>
</div>
<div class="callout-body-container callout-body">
<p>This post describes clinical problems an integrated methylation and sIgA signal <em>could</em> address if it validated. It reports no performance from this cohort, provides no medical advice, and is not evidence that methylation or serum sIgA predicts an individual’s cancer risk. Nothing here supports substituting any measurement for colonoscopic surveillance in inflammatory bowel disease. The named commercial tests are described by their published indications and evidence; none is endorsed, and none is indicated for ulcerative colitis surveillance.</p>
</div>
</div>
<p><a href="../../posts/index.html">Back to Field Notes →</a> · <a href="../../technology.html">cfDNA technology landscape →</a> · <a href="../../approach.html">Methylation vs sIgA →</a></p>
<section id="references" class="level4">




</section>
</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-chung2024shield" class="csl-entry">
<span class="nocase">Daniel C. Chung, Darrell M. Gray, Harminder Singh, and others</span>. (2024). A cell-free DNA blood-based test for colorectal cancer screening. <em>New England Journal of Medicine</em>. <a href="https://doi.org/10.1056/NEJMoa2304714">https://doi.org/10.1056/NEJMoa2304714</a>.
</div>
<div id="ref-imperiale2024mtsdna" class="csl-entry">
<span class="nocase">Thomas F. Imperiale, Kyle Porter, Julia Zella, and others</span>. (2024). Next-generation multitarget stool DNA test for colorectal cancer screening. <em>New England Journal of Medicine</em>. <a href="https://doi.org/10.1056/NEJMoa2310336">https://doi.org/10.1056/NEJMoa2310336</a>.
</div>
<div id="ref-laine2015scenic" class="csl-entry">
<span class="nocase">Loren Laine, Tonya Kaltenbach, Alan Barkun, and others</span>. (2015). SCENIC international consensus statement on surveillance and management of dysplasia in inflammatory bowel disease. <em>Gastroenterology</em>. <a href="https://doi.org/10.1053/j.gastro.2015.01.031">https://doi.org/10.1053/j.gastro.2015.01.031</a>.
</div>
<div id="ref-murthy2021dysplasia" class="csl-entry">
Sanjay K. Murthy, Joseph D. Feuerstein, Geoffrey C. Nguyen, and Fernando S. Velayos. (2021). AGA clinical practice update on endoscopic surveillance and management of colorectal dysplasia in inflammatory bowel diseases: Expert review. <em>Gastroenterology</em>. <a href="https://doi.org/10.1053/j.gastro.2021.05.063">https://doi.org/10.1053/j.gastro.2021.05.063</a>.
</div>
<div id="ref-choi2015surveillance" class="csl-entry">
<span class="nocase">Chang-Ho Ryan Choi, Matthew D. Rutter, Alan Askari, and others</span>. (2015). Forty-year analysis of colonoscopic surveillance program for neoplasia in ulcerative colitis: An updated overview. <em>American Journal of Gastroenterology</em>. <a href="https://doi.org/10.1038/ajg.2015.65">https://doi.org/10.1038/ajg.2015.65</a>.
</div>
<div id="ref-olen2020ucrisk" class="csl-entry">
<span class="nocase">Ola Olén, Rune Erichsen, Michael C. Sachs, and others</span>. (2020). Colorectal cancer in ulcerative colitis: A scandinavian population-based cohort study. <em>The Lancet</em>. <a href="https://doi.org/10.1016/S0140-6736(19)32545-0">https://doi.org/10.1016/S0140-6736(19)32545-0</a>.
</div>
<div id="ref-beggs2019endcapc" class="csl-entry">
<span class="nocase">Andrew D. Beggs, Samir Mehta, Jonathan J. Deeks, and others</span>. (2019). Validation of epigenetic markers to identify colitis associated cancer: Results of module 1 of the ENDCAP-c study. <em>EBioMedicine</em>. <a href="https://doi.org/10.1016/j.ebiom.2018.11.034">https://doi.org/10.1016/j.ebiom.2018.11.034</a>.
</div>
<div id="ref-beggs2018tubb6" class="csl-entry">
<span class="nocase">Andrew D. Beggs, Jonathan James, Germaine Caldwell, and others</span>. (2018). Discovery and validation of methylation biomarkers for ulcerative colitis associated neoplasia. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1093/ibd/izy119">https://doi.org/10.1093/ibd/izy119</a>.
</div>
<div id="ref-parraizquierdo2025latam" class="csl-entry">
<span class="nocase">Viviana Parra-Izquierdo, William Otero-Regino, Fabian Juliao-Baños, and others</span>. (2025). Dysplasia and colorectal cancer surveillance in ulcerative colitis patients in latin america: Real-world data. <em>Crohn’s &amp; Colitis 360</em>. <a href="https://doi.org/10.1093/crocol/otae081">https://doi.org/10.1093/crocol/otae081</a>.
</div>
<div id="ref-kang2016ucpanel" class="csl-entry">
Keunsoo Kang, Jin-Han Bae, Kyudong Han, Eun Soo Kim, Tae-Oh Kim, and Joo Mi Yi. (2016). A genome-wide methylation approach identifies a new hypermethylated gene panel in ulcerative colitis. <em>International Journal of Molecular Sciences</em>. <a href="https://doi.org/10.3390/ijms17081291">https://doi.org/10.3390/ijms17081291</a>.
</div>
<div id="ref-papadia2014foxesyne" class="csl-entry">
<span class="nocase">Cinzia Papadia, Joost Louwagie, Paolo Del Rio, Madeleine Grooteclaes, Alessandro Coruzzi, Chiara Montana, Marco Novelli, Cesare Bordi, Gian Luigi de’ Angelis, Paul Bassett, Joseph Bigley, Bryan Warren, Wendy Atkin, and Alastair Forbes</span>. (2014). FOXE1 and SYNE1 genes hypermethylation panel as promising biomarker in colitis-associated colorectal neoplasia. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1097/01.MIB.0000435443.07237.ed">https://doi.org/10.1097/01.MIB.0000435443.07237.ed</a>.
</div>
<div id="ref-saito2011ucmethylation" class="csl-entry">
Shunsuke Saito, Jun Kato, Sakiko Hiraoka, Joichiro Horii, Hideyuki Suzuki, Reiji Higashi, Eisuke Kaji, Yoshitaka Kondo, and Kazuhide Yamamoto. (2011). DNA methylation of colon mucosa in ulcerative colitis patients: Correlation with inflammatory status. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1002/ibd.21573">https://doi.org/10.1002/ibd.21573</a>.
</div>
<div id="ref-hsieh1998p16" class="csl-entry">
C. J. Hsieh, B. Klump, K. Holzmann, F. Borchard, M. Gregor, and R. Porschen. (1998). <a href="https://pubmed.ncbi.nlm.nih.gov/9731506/">Hypermethylation of the p16INK4a promoter in colectomy specimens of patients with long-standing and extensive ulcerative colitis</a>. <em>Cancer Research</em>.
</div>
<div id="ref-wheeler2001cdh1" class="csl-entry">
J. M. Wheeler, H. C. Kim, J. A. Efstathiou, M. Ilyas, N. J. Mortensen, and W. F. Bodmer. (2001). Hypermethylation of the promoter region of the e-cadherin gene (CDH1) in sporadic and ulcerative colitis associated colorectal cancer. <em>Gut</em>. <a href="https://doi.org/10.1136/gut.48.3.367">https://doi.org/10.1136/gut.48.3.367</a>.
</div>
<div id="ref-church2014sept9" class="csl-entry">
<span class="nocase">Timothy R. Church, Michael Wandell, Catherine Lofton-Day, and others</span>. (2014). Prospective evaluation of methylated SEPT9 in plasma for detection of asymptomatic colorectal cancer. <em>Gut</em>. <a href="https://doi.org/10.1136/gutjnl-2012-304149">https://doi.org/10.1136/gutjnl-2012-304149</a>.
</div>
<div id="ref-klein2021mced" class="csl-entry">
<span class="nocase">E. A. Klein, D. Richards, A. Cohn, and others</span>. (2021). Clinical validation of a targeted methylation-based multi-cancer early detection test using an independent validation set. <em>Annals of Oncology</em>. <a href="https://doi.org/10.1016/j.annonc.2021.05.806">https://doi.org/10.1016/j.annonc.2021.05.806</a>.
</div>
<div id="ref-cristiano2019delfi" class="csl-entry">
<span class="nocase">Stephen Cristiano, Alessandro Leal, Jillian Phallen, and others</span>. (2019). Genome-wide cell-free DNA fragmentation in patients with cancer. <em>Nature</em>. <a href="https://doi.org/10.1038/s41586-019-1272-6">https://doi.org/10.1038/s41586-019-1272-6</a>.
</div>
<div id="ref-dhaens2020ehi" class="csl-entry">
<span class="nocase">Geert D’Haens, Orlaith Kelly, Robert Battat, and others</span>. (2020). Development and validation of a test to monitor endoscopic activity in patients with crohn’s disease based on serum levels of proteins. <em>Gastroenterology</em>. <a href="https://doi.org/10.1053/j.gastro.2019.10.034">https://doi.org/10.1053/j.gastro.2019.10.034</a>.
</div>
<div id="ref-mosli2015calprotectin" class="csl-entry">
<span class="nocase">Mahmoud H. Mosli, Guangyong Zou, Sushil K. Garg, and others</span>. (2015). C-reactive protein, fecal calprotectin, and stool lactoferrin for detection of endoscopic activity in symptomatic inflammatory bowel disease patients: A systematic review and meta-analysis. <em>American Journal of Gastroenterology</em>. <a href="https://doi.org/10.1038/ajg.2015.120">https://doi.org/10.1038/ajg.2015.120</a>.
</div>
</div></section></div> ]]></description>
  <category>clinical translation</category>
  <category>liquid biopsy</category>
  <category>ulcerative colitis</category>
  <category>colorectal cancer</category>
  <category>biomarkers</category>
  <category>sIgA</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/clinical-applications-of-methylation-siga-fingerprint/</guid>
  <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/posts/clinical-applications-of-methylation-siga-fingerprint/images/figure-1-zoom-cascade.png" medium="image" type="image/png" height="65" width="144"/>
</item>
<item>
  <title>From EM-seq reads to an integrated study matrix</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/alignment-and-bioinformatics-for-genomics-experts.html</link>
  <description><![CDATA[ 





<section id="scope" class="level2 lead-panel">
<h2 class="anchored" data-anchor-id="scope">Scope</h2>
<p>This is the technical handoff from paired-end EM-seq FASTQs and ELISA plate readings to analysis-ready participant features. The genomics branch uses conversion-aware alignment and retains methylated/total counts; the sIgA branch is a separate quantitative assay that joins only after its own calibration and QC.</p>
</section>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://sandrisper-rgb.github.io/methylation/media/illustrations/genomics-alignment-integration.png" class="science-visual img-fluid figure-img" alt="Detailed biomedical workflow from colon cells and plasma cfDNA through enzymatic methyl sequencing, paired-read alignment, CpG and fragment analysis, plus a separate triplicate ELISA path converging on a participant feature matrix"></p>
<figcaption>The study has two processing lanes: tissue/plasma EM-seq becomes aligned CpG and fragment features, while serum sIgA becomes a calibrated ELISA value. They meet at the de-identified participant matrix.</figcaption>
</figure>
</div>
<section id="assay-topology" class="level2">
<h2 class="anchored" data-anchor-id="assay-topology">Assay topology</h2>
<p>For each of the <a href="../research.html#planned-design">18 planned participants</a>, the design links colonic tissue DNA, plasma cfDNA, and serum sIgA. The sequencing libraries are not interchangeable:</p>
<ul>
<li><strong>Tissue DNA</strong> is extracted from a heterogeneous biopsy and intentionally fragmented during library preparation. Its methylation is biologically interpretable; its insert-size distribution is largely a laboratory product.</li>
<li><strong>Plasma cfDNA</strong> arrives pre-fragmented by in-vivo release, nucleosome protection, and nuclease cleavage. If preparation preserves molecule geometry, paired alignments support methylation plus native fragmentomics.</li>
<li><strong>Serum sIgA</strong> is measured by ELISA. No sIgA sequence reads enter the genomics workflow.</li>
</ul>
<p>Three laboratory technical replicates from a participant remain nested under that participant. They provide reproducibility and QC information, not additional biological degrees of freedom.</p>
</section>
<section id="end-to-end-flow" class="level2">
<h2 class="anchored" data-anchor-id="end-to-end-flow">End-to-end flow</h2>
<div class="cell" data-layout-align="default">
<div class="cell-output-display">
<div>
<p></p><figure class="figure"><p></p>
<div>
<pre class="mermaid mermaid-js">flowchart TD
  subgraph DNA[EM-seq branch]
    T[Tissue DNA&lt;br/&gt;controlled shearing] --&gt; L[EM-seq library]
    P[Native plasma cfDNA] --&gt; L
    L --&gt; Q[Paired FASTQ&lt;br/&gt;fastp + FastQC/MultiQC]
    Q --&gt; A[bwa-meth&lt;br/&gt;GRCh38 alignment]
    A --&gt; B[Sorted/indexed BAM&lt;br/&gt;read groups + duplicate/QC]
    B --&gt; MB[M-bias + conversion&lt;br/&gt;diagnostics]
    MB --&gt; C[MethylDackel&lt;br/&gt;methylated/total CpG counts]
    C --&gt; BS[BSseq/count matrices]
    BS --&gt; DSS[DSS DML/DMR contrasts]
    B --&gt; F[Plasma-only native&lt;br/&gt;fragment features]
  end

  subgraph ELISA[sIgA branch]
    S[Serum] --&gt; W[Standards, blanks,&lt;br/&gt;controls + replicate wells]
    W --&gt; OD[Blank-corrected OD]
    OD --&gt; CAL[Calibration curve +&lt;br/&gt;dilution correction]
    CAL --&gt; IG[One reviewed sIgA&lt;br/&gt;estimate + QC]
  end

  DSS --&gt; J[Participant-level feature matrix]
  F --&gt; J
  IG --&gt; J
  X[Clinical group, inflammation,&lt;br/&gt;covariates + batch] --&gt; J
</pre>
</div>
<p></p></figure><p></p>
</div>
</div>
</div>
</section>
<section id="sample-sheet-and-identity-are-first-class-data" class="level2">
<h2 class="anchored" data-anchor-id="sample-sheet-and-identity-are-first-class-data">1. Sample sheet and identity are first-class data</h2>
<p>Before sequence processing, a machine-readable manifest should bind <code>participant_id</code>, specimen, technical replicate, library, lane, read files, collection time, extraction batch, library batch, and clinical group. The participant identifier—not the library name—is the join key used in analysis.</p>
<p>Identity and contamination checks should be resolved before group modeling. Replicates must agree genetically where informative, and tissue/plasma labels should not be inferred from filenames alone. No clinical identifier belongs in public analysis artifacts.</p>
</section>
<section id="em-seq-chemistry-changes-what-alignment-means" class="level2">
<h2 class="anchored" data-anchor-id="em-seq-chemistry-changes-what-alignment-means">2. EM-seq chemistry changes what alignment means</h2>
<p>NEBNext EM-seq protects modified cytosines through TET2 oxidation and T4-BGT glucosylation, then APOBEC converts unmodified cytosines so they are read as thymine after amplification <span class="citation" data-cites="vaisvila2021emseq">(<span class="nocase">Vaisvila, Ponnaluri, Sun, and others</span>, 2021)</span>. Standard EM-seq therefore reports protected <strong>5mC + 5hmC</strong> rather than separating them.</p>
<p>The aligner must tolerate conversion-induced C→T and complementary G→A differences. <a href="https://github.com/brentp/bwa-meth"><code>bwa-meth</code></a> presents a BWA-MEM-based conversion-aware mapping path against GRCh38 and emits conventional SAM/BAM coordinates for downstream tools.</p>
</section>
<section id="fastq-and-alignment-qc" class="level2">
<h2 class="anchored" data-anchor-id="fastq-and-alignment-qc">3. FASTQ and alignment QC</h2>
<p>Adapter/quality trimming with <code>fastp</code> should produce both cleaned reads and per-library JSON/HTML metrics. The point is not maximal trimming; it is removal of demonstrated adapter/read-through and low-quality tails without erasing short cfDNA molecules.</p>
<p>After alignment, retain at least:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>Metric</th>
<th>Why it matters</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>total and retained read pairs</td>
<td>library yield and differential attrition</td>
</tr>
<tr class="even">
<td>mapped and properly paired fraction</td>
<td>trustworthy coordinates and inserts</td>
</tr>
<tr class="odd">
<td>MAPQ distribution</td>
<td>ambiguous mapping and repetitive regions</td>
</tr>
<tr class="even">
<td>duplicate fraction</td>
<td>independent library complexity</td>
</tr>
<tr class="odd">
<td>insert-size distribution by specimen</td>
<td>plasma nucleosomal pattern; tissue shearing QC</td>
</tr>
<tr class="even">
<td>mitochondrial/off-target fraction</td>
<td>sample and preparation behavior</td>
</tr>
<tr class="odd">
<td>spike-in conversion controls</td>
<td>incomplete conversion or overconversion</td>
</tr>
<tr class="even">
<td>read-cycle methylation/M-bias</td>
<td>end repair or position-specific bias</td>
</tr>
</tbody>
</table>
<p>Coordinate sorting, indexing, read-group completeness, flag statistics, and duplicate policy must be consistent across libraries. Group must not be confounded with lane or preparation batch.</p>
</section>
<section id="m-bias-aware-methylation-extraction" class="level2">
<h2 class="anchored" data-anchor-id="m-bias-aware-methylation-extraction">4. M-bias-aware methylation extraction</h2>
<p><a href="https://github.com/dpryan79/MethylDackel"><code>MethylDackel</code></a> can inspect per-cycle methylation bias and extract strand-aware cytosine calls from the BAM. End trimming parameters should be chosen from the observed M-bias profile and fixed by library class, rather than tuned to maximize group separation.</p>
<p>The irreducible per-CpG record is:</p>
<pre class="text"><code>chr  pos  strand/context  methylated_count  unmethylated_count  total_coverage</code></pre>
<p>CHG/CHH calls and spike-ins are useful conversion diagnostics even when biological inference is restricted to CpG sites. Filters should address MAPQ, base quality, overlapping mate double-counting, duplicates, extreme depth, blacklisted/problematic loci, strand combination, and minimum sample coverage. Every transformation should be represented in a QC report and a versioned callable-loci mask.</p>
</section>
<section id="replicates-become-count-aware-matrices" class="level2">
<h2 class="anchored" data-anchor-id="replicates-become-count-aware-matrices">5. Replicates become count-aware matrices</h2>
<p>After technical-replicate QC, valid sequencing replicates can be combined at the evidence level where the laboratory design supports pooling:</p>
<p><img src="https://latex.codecogs.com/png.latex?M_%7Bgi%7D=%5Csum_r%20M_%7Bgir%7D,%5Cqquad%20N_%7Bgi%7D=%5Csum_r%20N_%7Bgir%7D."></p>
<p>This preserves the difference between, for example, 5/10 and 50/100. Averaging replicate beta values would discard that precision structure. If technical batches are scientifically important or replicates are not exchangeable, keep them explicit in a hierarchical model instead.</p>
<p>The analysis object should retain genomic ranges, <img src="https://latex.codecogs.com/png.latex?M">, <img src="https://latex.codecogs.com/png.latex?N">, sample metadata, callable status, technical provenance, and specimen type. Tissue and plasma can share coordinates without being forced into the same coverage filter.</p>
</section>
<section id="differential-methylation-and-regions" class="level2">
<h2 class="anchored" data-anchor-id="differential-methylation-and-regions">6. Differential methylation and regions</h2>
<p>For raw EM-seq counts, DSS supplies a beta-binomial, dispersion-shrunk route from CpGs to DMLs and DMRs. Pre-specified contrasts are UC versus healthy, CRC versus healthy, and CRC versus UC, with a parsimonious design for batch and defensible covariates.</p>
<p>DMR output should retain:</p>
<ul>
<li>genomic interval and number of contributing CpGs;</li>
<li>direction and magnitude of methylation difference;</li>
<li>test statistic, raw p-value, and FDR;</li>
<li>coverage/callability by group and specimen;</li>
<li>gene, promoter, enhancer, CpG-island, and pathway annotations; and</li>
<li>whether direction agrees in matched tissue and plasma.</li>
</ul>
<p><a href="../posts/limma-versus-dss-for-methylation.html">The limma-versus-DSS comparison</a> explains why coverage belongs in the primary likelihood and includes a runnable real-data example.</p>
</section>
<section id="plasma-fragmentomics-branches-from-bamnot-from-tissue-inserts" class="level2">
<h2 class="anchored" data-anchor-id="plasma-fragmentomics-branches-from-bamnot-from-tissue-inserts">7. Plasma fragmentomics branches from BAM—not from tissue inserts</h2>
<p>Properly paired, primary plasma alignments can yield template length, left/right end coordinates, end motifs, window coverage, and TSS-centered footprints. Deduplication, clipping, MAPQ, read overlap, and conversion-aware sequence interpretation must be specified. End motifs observed after conversion chemistry are not automatically equivalent to motifs from ordinary WGS.</p>
<p>Fragment features should be aggregated before participant-level modeling: length-bin proportions, short/long ratios, nucleosomal modes, regional end counts, and normalized coverage around locked regions. Tissue insert sizes should remain library QC unless native tissue fragmentation was preserved by a distinct protocol.</p>
</section>
<section id="siga-processing-is-a-separate-quantitative-pipeline" class="level2">
<h2 class="anchored" data-anchor-id="siga-processing-is-a-separate-quantitative-pipeline">8. sIgA processing is a separate quantitative pipeline</h2>
<p>The serum assay begins with plate layout: standards, blanks, controls, participant wells, dilution, replicate, plate, and position. The presentation describes a seven-point 1.250-to-0 µg/ml development curve with reported <img src="https://latex.codecogs.com/png.latex?R%5E2=0.959">; that number alone does not validate a plate.</p>
<p>A reproducible processing path should:</p>
<ol type="1">
<li>subtract or model blank signal;</li>
<li>fit the pre-specified calibration function, commonly a validated 4PL/5PL form where appropriate;</li>
<li>back-calculate concentration and apply the dilution factor;</li>
<li>check standard recovery, monotonicity, residuals, controls, and plate drift;</li>
<li>compute replicate CV and apply pre-specified repeat/failure rules;</li>
<li>flag values below LLOQ, above ULOQ, or saturated rather than silently imputing them; and</li>
<li>emit one reviewed participant estimate plus replicate- and plate-level provenance.</li>
</ol>
<pre class="text"><code>participant_id  siga_concentration  replicate_cv  plate  censor_flag  qc
P001            0.73                0.021         A01    NONE         PASS</code></pre>
<p>sIgA is then joined to methylation/fragment features by participant ID. It should not be normalized like a sequencing count matrix or treated as a surrogate for local mucosal IgA.</p>
</section>
<section id="the-contract-between-pipelines" class="level2">
<h2 class="anchored" data-anchor-id="the-contract-between-pipelines">9. The contract between pipelines</h2>
<p>The final integration layer should be narrow and explicit:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>Output object</th>
<th>Unit</th>
<th>Typical columns</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>methylation regions</td>
<td>participant × DMR</td>
<td>estimate, coverage, uncertainty, specimen</td>
</tr>
<tr class="even">
<td>fragment summary</td>
<td>participant × feature</td>
<td>normalized count/proportion, plasma QC</td>
</tr>
<tr class="odd">
<td>sIgA summary</td>
<td>participant</td>
<td>concentration, CV, censor/QC flags</td>
</tr>
<tr class="even">
<td>phenotype table</td>
<td>participant</td>
<td>group, inflammation, covariates, batch</td>
</tr>
</tbody>
</table>
<p>Joining all rows into one table does not remove their different error models. High-dimensional discovery occurs with count-aware methods; sIgA and fragment summaries enter association or small integrated models only after QC and dimension reduction.</p>
<div class="callout callout-style-default callout-important callout-titled" title="Expert takeaway">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Important</span>Expert takeaway
</div>
</div>
<div class="callout-body-container callout-body">
<p>The pipeline preserves the observation model at every handoff: converted paired reads become coordinate-aware methylated/total counts; only native plasma alignments become fragmentomics; ELISA wells become one calibrated sIgA estimate; and all technical replicates collapse to—or are modeled under—the participant, the biological unit.</p>
</div>
</div>
<p><a href="../research.html">See the complete study design →</a> · <a href="../posts/three-data-streams-one-study.html">Inspect example processed tables →</a> · <a href="../posts/study-for-machine-learning-scientists.html">Read the ML framing →</a> · <a href="../posts/study-for-statisticians.html">Read the statistical framing →</a> · <a href="../sequencing-methods.html">Open the sequencing methods page →</a></p>
</section>
<section id="references" class="level2">
<h2 class="anchored" data-anchor-id="references">References</h2>
<div id="refs" class="references csl-bib-body">
<div id="ref-vaisvila2021emseq" class="csl-entry">
<span class="nocase">Romualdas Vaisvila, Vamsi K. C. Ponnaluri, Zhe Sun, and others</span>. (2021). Enzymatic methyl sequencing detects DNA methylation at single-base resolution from picograms of DNA. <em>Genome Research</em>. <a href="https://doi.org/10.1101/gr.266551.120">https://doi.org/10.1101/gr.266551.120</a>.
</div>
</div>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>bioinformatics</category>
  <category>alignment</category>
  <category>EM-seq</category>
  <category>cfDNA</category>
  <category>sIgA</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/alignment-and-bioinformatics-for-genomics-experts.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/genomics-alignment-integration.png" medium="image" type="image/png" height="81" width="144"/>
</item>
<item>
  <title>CD86: the context-setting signal for T-cell activation</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-cd86.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>CD86 is displayed by antigen-presenting cells and binds <strong>CD28</strong> to support T-cell co-stimulation and <strong>CTLA-4</strong> to help restrain responses. Its meaning depends on timing, receptor availability, and the activation state of both cells.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>CD86 available</strong></p>
<p>Antigen recognition receives a context signal that can support or regulate T-cell activation.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>CD86 reduced</strong></p>
<p>T-cell priming may weaken, but inflammatory output can also change because CTLA-4 engagement is lost.</p>
</div>
</div>
<p>The UC hypomethylation signal is biologically compatible with abundant/activated antigen-presenting cells, but does not prove CD86 overexpression. Bulk biopsy composition is a major competing explanation.</p>
</section>
<section id="what-the-evidence-adds" class="level2">
<h2 class="anchored" data-anchor-id="what-the-evidence-adds">What the evidence adds</h2>
<p>CD86 is not simply an “on” switch. CD28 and CTLA-4 share CD80/CD86 ligands but drive different outcomes, and B7-2/CD86 tends to appear early during antigen-presenting-cell activation <span class="citation" data-cites="sharpe2002b7">(Sharpe and Freeman, 2002)</span>. More recent cell-biological work shows that CTLA-4 can physically remove CD86 from neighboring cells by transendocytosis; defects in that process can contribute to autoimmunity <span class="citation" data-cites="kennedy2022cd86">(<span class="nocase">Kennedy, Waters, Rowshanravan, and others</span>, 2022)</span>. A biopsy methylation value therefore sits several regulatory steps upstream of the biologically relevant quantity: receptor engagement at an APC–T-cell contact.</p>
</section>
<section id="biomarker-interpretation" class="level2">
<h2 class="anchored" data-anchor-id="biomarker-interpretation">Biomarker interpretation</h2>
<p>A useful CD86 result would distinguish within-cell epigenetic change from recruitment of CD86-positive dendritic cells, monocytes, or B cells. Paired single-cell or spatial expression, immune-cell proportions, and protein localization would make a bulk DMR interpretable. Until then, CD86 hypomethylation is best described as an immune-state candidate marker, not evidence of net CD28 or CTLA-4 signaling.</p>
<details>
<summary>
<strong>Best paired measurements</strong>
</summary>
Cell-type-resolved methylation, CD86 RNA/protein, APC abundance, CD28/CTLA-4 context, and tissue inflammatory state.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/942">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-sharpe2002b7" class="csl-entry">
Arlene H. Sharpe and Gordon J. Freeman. (2002). The B7–CD28 superfamily. <em>Nature Reviews Immunology</em>. <a href="https://doi.org/10.1038/nri727">https://doi.org/10.1038/nri727</a>.
</div>
<div id="ref-kennedy2022cd86" class="csl-entry">
<span class="nocase">Alan Kennedy, Erin Waters, Behzad Rowshanravan, and others</span>. (2022). Differences in CD80 and CD86 transendocytosis reveal CD86 as a key target for CTLA-4 immune regulation. <em>Nature Immunology</em>. <a href="https://doi.org/10.1038/s41590-022-01289-w">https://doi.org/10.1038/s41590-022-01289-w</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>CD86</category>
  <category>adaptive immunity</category>
  <category>methylation</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-cd86.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>CDH1: E-cadherin and the architecture of an epithelium</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-cdh1.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>CDH1 encodes <strong>E-cadherin</strong>, a calcium-dependent adhesion protein central to epithelial adherens junctions. Its cytoplasmic partners connect cell–cell adhesion to the actin cytoskeleton and intersect with β-catenin biology.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>E-cadherin at junctions</strong></p>
<p>Epithelial cells maintain cohesion, polarity, and organized tissue boundaries.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>CDH1 reduced or lost</strong></p>
<p>Adhesion weakens; motility, invasion, and epithelial plasticity may increase.</p>
</div>
</div>
<p>In inflamed colon, junction disruption can arise without CDH1 promoter methylation, and bulk expression can change with epithelial loss. In neoplasia, CDH1 silencing may cooperate with many other alterations; it is not sufficient by itself.</p>
</section>
<section id="evidence-in-colitis-associated-neoplasia" class="level2">
<h2 class="anchored" data-anchor-id="evidence-in-colitis-associated-neoplasia">Evidence in colitis-associated neoplasia</h2>
<p>In a small study of 14 UC-associated and 14 sporadic colorectal cancers, CDH1 promoter hypermethylation occurred in 57% and 36%, respectively, and methylation correlated with reduced E-cadherin protein <span class="citation" data-cites="wheeler2001cdh1">(Wheeler, Kim, Efstathiou, Ilyas, Mortensen, and Bodmer, 2001)</span>. A separate UC colectomy series found CDH1 methylation higher in actively inflamed than paired quiescent mucosa, with active inflammation remaining associated after multivariable analysis <span class="citation" data-cites="saito2011ucmethylation">(Saito, Kato, Hiraoka, Horii, Suzuki, Higashi, Kaji, Kondo, and Yamamoto, 2011)</span>. Together these studies support both inflammation-linked field change and cancer-associated silencing, but their small, selected tissue cohorts do not establish prospective predictive performance.</p>
</section>
<section id="why-localization-matters" class="level2">
<h2 class="anchored" data-anchor-id="why-localization-matters">Why localization matters</h2>
<p>Total E-cadherin abundance can look preserved while the protein is internalized or displaced from lateral junctions. An informative assay should therefore combine exact promoter CpGs with epithelial-cell RNA, membrane-localized protein, β-catenin distribution, and permeability—not methylation alone.</p>
<details>
<summary>
<strong>Best evidence chain</strong>
</summary>
Promoter DMR → lower CDH1 RNA → reduced/mislocalized E-cadherin protein → altered junction and permeability phenotype, all in the same relevant cells.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/999">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-wheeler2001cdh1" class="csl-entry">
J. M. Wheeler, H. C. Kim, J. A. Efstathiou, M. Ilyas, N. J. Mortensen, and W. F. Bodmer. (2001). Hypermethylation of the promoter region of the e-cadherin gene (CDH1) in sporadic and ulcerative colitis associated colorectal cancer. <em>Gut</em>. <a href="https://doi.org/10.1136/gut.48.3.367">https://doi.org/10.1136/gut.48.3.367</a>.
</div>
<div id="ref-saito2011ucmethylation" class="csl-entry">
Shunsuke Saito, Jun Kato, Sakiko Hiraoka, Joichiro Horii, Hideyuki Suzuki, Reiji Higashi, Eisuke Kaji, Yoshitaka Kondo, and Kazuhide Yamamoto. (2011). DNA methylation of colon mucosa in ulcerative colitis patients: Correlation with inflammatory status. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1002/ibd.21573">https://doi.org/10.1002/ibd.21573</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>CDH1</category>
  <category>epithelial barrier</category>
  <category>cancer</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-cdh1.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>CDKN2A: two tumour-suppressor programs in one locus</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-cdkn2a.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>The CDKN2A locus encodes distinct proteins through alternative reading frames. <strong>p16INK4a</strong> inhibits CDK4/6 to keep RB growth control engaged; <strong>p14ARF</strong> helps stabilize p53 by opposing MDM2.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>CDKN2A programs active</strong></p>
<p>Damaged or stressed cells face senescence, arrest, or p53-linked safeguards.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>Promoter/locus disabled</strong></p>
<p>RB and/or p53 safeguards weaken, making inappropriate proliferation easier.</p>
</div>
</div>
<p>Deletion, mutation, and promoter methylation can disable this locus in cancer. In long-standing UC, methylation can be a field-change marker, but a methylated read does not prove both products are lost or that a clone will become malignant.</p>
</section>
<section id="evidence-across-the-uc-field" class="level2">
<h2 class="anchored" data-anchor-id="evidence-across-the-uc-field">Evidence across the UC field</h2>
<p>An early colectomy study sampled 89 sites from three patients with long-standing extensive UC. p16<sup>INK4a</sup> promoter hypermethylation was detected in 12.7% of nondysplastic samples, 70% of dysplastic samples, and every sampled carcinoma <span class="citation" data-cites="hsieh1998p16">(Hsieh, Klump, Holzmann, Borchard, Gregor, and Porschen, 1998)</span>. The gradient is consistent with an early field alteration, but the patient count was only three and multiple sites from one colon are not independent patients.</p>
<p>The biology is also stage-dependent: regenerative UC crypts can induce p16 as a stress-associated “emergency brake” before epigenetic loss occurs. That makes protein interpretation non-monotonic—high p16 may mark stress or senescence, whereas promoter-silenced clones may later lose the safeguard. Exact promoter and isoform resolution is essential.</p>
<details>
<summary>
<strong>Required resolution</strong>
</summary>
Identify the promoter/transcript affected, verify p16/p14 RNA and protein, map the epithelial clone, and assess RB/p53 pathway state.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/1029">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-hsieh1998p16" class="csl-entry">
C. J. Hsieh, B. Klump, K. Holzmann, F. Borchard, M. Gregor, and R. Porschen. (1998). <a href="https://pubmed.ncbi.nlm.nih.gov/9731506/">Hypermethylation of the p16INK4a promoter in colectomy specimens of patients with long-standing and extensive ulcerative colitis</a>. <em>Cancer Research</em>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>CDKN2A</category>
  <category>tumour suppressor</category>
  <category>methylation</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-cdkn2a.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>CLMP: an adhesion molecule with intestinal consequences</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-clmp.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>CLMP encodes an immunoglobulin-superfamily cell-adhesion protein associated with cell–cell contacts and epithelial organization. Biallelic human loss-of-function variants are linked to congenital short-bowel syndrome, making intestinal relevance more than a pathway guess.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>CLMP at cell contacts</strong></p>
<p>Supports organized epithelial relationships and intestinal development.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>CLMP function lost</strong></p>
<p>Severe developmental intestinal phenotypes can occur; adult inflammatory downregulation may be subtler and is not equivalent to a germline knockout.</p>
</div>
</div>
<p>The presentation’s UC finding is hypomethylation, not demonstrated loss. Depending on locus, lower methylation could accompany more expression, less expression, or a changing mix of epithelial and immune cells.</p>
</section>
<section id="strong-genetics-limited-adult-colitis-evidence" class="level2">
<h2 class="anchored" data-anchor-id="strong-genetics-limited-adult-colitis-evidence">Strong genetics, limited adult-colitis evidence</h2>
<p>The clearest causal evidence comes from rare biallelic loss-of-function disease and mouse models, not UC. Human congenital short-bowel syndrome combines impaired intestinal elongation and frequent malrotation; experimental work also links CLMP loss to disturbed smooth-muscle gap-junction signaling and peristalsis <span class="citation" data-cites="rathjen2023clmp">(Rathjen and Jüttner, 2023)</span>. That establishes intestinal importance but does not imply that modest adult mucosal methylation differences recreate a developmental syndrome.</p>
</section>
<section id="what-would-make-it-relevant-to-uc" class="level2">
<h2 class="anchored" data-anchor-id="what-would-make-it-relevant-to-uc">What would make it relevant to UC?</h2>
<p>The first question is cellular: epithelial, stromal, smooth-muscle, and enteric-neural compartments could contribute very different signals. Spatial CLMP protein plus CpG-resolved methylation and expression should precede barrier claims. Adult organoid perturbation could then test epithelial adhesion, while contractility models would be needed for the motility hypothesis.</p>
<details>
<summary>
<strong>How to test barrier relevance</strong>
</summary>
Measure CLMP in epithelial cells, junction localization, transepithelial resistance, permeability, and wound repair while resolving the associated CpGs.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/79827">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-rathjen2023clmp" class="csl-entry">
Fritz G. Rathjen and René Jüttner. (2023). The IgSF cell adhesion protein CLMP and congenital short bowel syndrome. <em>International Journal of Molecular Sciences</em>. <a href="https://doi.org/10.3390/ijms24065719">https://doi.org/10.3390/ijms24065719</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>CLMP</category>
  <category>epithelial barrier</category>
  <category>methylation</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-clmp.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>FAM217B: an honest gene profile at the edge of knowledge</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-fam217b.html</link>
  <description><![CDATA[ 





<section id="why-fam217b-is-in-the-study" class="level2">
<h2 class="anchored" data-anchor-id="why-fam217b-is-in-the-study">Why FAM217B is in the study</h2>
<p>In the UC study highlighted by the presentation, <strong>FAM217B promoter hypermethylation coincided with lower RNA expression</strong>. The panel was discovered on 450K arrays in 8 UC and 3 control tissues and technically validated in a larger UC series <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC5000688/">Kang et al.</a>.</p>
<p>The primary study used 3 normal controls and 8 UC tissues for array discovery, then methylation-specific PCR and bisulfite sequencing in 79 UC samples. FAM217B was one of three promoters selected for validation, and bulk qRT-PCR supported lower transcript abundance <span class="citation" data-cites="kang2016ucpanel">(Kang, Bae, Han, Kim, Kim, and Yi, 2016)</span>. This is discovery-plus-technical-validation evidence, not an independent diagnostic validation cohort, and the design did not resolve cell composition.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>Promoter accessible</strong></p>
<p>FAM217B transcript can be produced.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>Promoter hypermethylated</strong></p>
<p>Lower transcript was observed in UC tissue; downstream consequences remain unknown.</p>
</div>
</div>
</section>
<section id="what-does-it-do" class="level2">
<h2 class="anchored" data-anchor-id="what-does-it-do">What does it do?</h2>
<p>The scientifically important answer is: <strong>its human function is not established</strong>. <a href="https://www.ncbi.nlm.nih.gov/gene/63939">NCBI Gene</a> classifies it as protein coding and places the product in cytosol and nucleoplasm; curated pathway-level mechanism is lacking. “Family with sequence similarity” is a naming placeholder, not a functional description.</p>
</section>
<section id="what-happens-if-expression-stops" class="level2">
<h2 class="anchored" data-anchor-id="what-happens-if-expression-stops">What happens if expression stops?</h2>
<p>No credible colon-specific loss-of-function mechanism can currently be asserted. Silencing could be biologically consequential, neutral, a marker of altered cell composition, or a passenger of inflammatory chromatin remodeling. The correct experiment is to confirm methylation–RNA–protein coupling in defined cell types and perturb the gene in an appropriate epithelial model.</p>
</section>
<section id="biomarker-status" class="level2">
<h2 class="anchored" data-anchor-id="biomarker-status">Biomarker status</h2>
<p>FAM217B is presently more defensible as a candidate <em>state marker</em> than as a mechanistic driver. A useful next study would preregister CpGs and thresholds, include inflammation-matched non-UC controls, validate in an external cohort, and report whether the marker adds information beyond histology, medication, age, and epithelial fraction.</p>
<details>
<summary>
<strong>What would move the mechanism forward?</strong>
</summary>
Single-cell localization, CRISPRi/CRISPR knockout, rescue, epithelial barrier phenotyping, and replicated tissue–plasma methylation are more informative than pathway guesses based on the name.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/63939">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-kang2016ucpanel" class="csl-entry">
Keunsoo Kang, Jin-Han Bae, Kyudong Han, Eun Soo Kim, Tae-Oh Kim, and Joo Mi Yi. (2016). A genome-wide methylation approach identifies a new hypermethylated gene panel in ulcerative colitis. <em>International Journal of Molecular Sciences</em>. <a href="https://doi.org/10.3390/ijms17081291">https://doi.org/10.3390/ijms17081291</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>FAM217B</category>
  <category>methylation</category>
  <category>ulcerative colitis</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-fam217b.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>FOXE1: a developmental transcription factor used as a methylation marker</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-foxe1.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>FOXE1 encodes a forkhead transcription factor with established roles in thyroid and craniofacial development. Its promoter methylation has also been investigated as a marker in several cancers and in colitis-associated neoplasia.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>FOXE1 expressed in its developmental context</strong></p>
<p>Coordinates lineage-specific transcriptional programs.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>FOXE1 methylated in colon samples</strong></p>
<p>May be a robust epigenetic marker even if the downstream colon-specific mechanism is unclear.</p>
</div>
</div>
<p>This distinction matters: a locus can classify tissue state because its methylation is reproducible, without its protein being a driver in that tissue. The cited UC panel paper reported FOXE1 methylation in a subset of UC samples but did not establish functional silencing as a progression mechanism.</p>
</section>
<section id="the-tissue-biomarker-evidence" class="level2">
<h2 class="anchored" data-anchor-id="the-tissue-biomarker-evidence">The tissue biomarker evidence</h2>
<p>Papadia et al.&nbsp;tested FOXE1 and SYNE1 promoter methylation in 93 people with long-standing IBD under surveillance plus 30 controls. FOXE1 methylation was absent from controls and detected in 60% of colitis-associated colorectal cancers; frequency rose across the ordered disease groups <span class="citation" data-cites="papadia2014foxesyne">(<span class="nocase">Papadia, Louwagie, Del Rio, Grooteclaes, Coruzzi, Montana, Novelli, Bordi, de’ Angelis, Bassett, Bigley, Warren, Atkin, and Forbes</span>, 2014)</span>. This supports association with neoplastic state, but the cross-sectional study does not show how early the signal appears or whether it improves prospective surveillance.</p>
</section>
<section id="driver-or-passenger" class="level2">
<h2 class="anchored" data-anchor-id="driver-or-passenger">Driver or passenger?</h2>
<p>FOXE1 has strong lineage-specific functions in thyroid and craniofacial development, whereas a colon epithelial regulon has not been established. For biomarker development, reproducible locus methylation may be enough. For a causal claim, the chain must extend through colon-cell FOXE1 expression, target-gene regulation, perturbation, and rescue.</p>
<details>
<summary>
<strong>Biomarker versus driver test</strong>
</summary>
Confirm colon-cell expression and regulons before proposing a driver role; assess replicated methylation and prospective outcome association for biomarker use.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/2304">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-papadia2014foxesyne" class="csl-entry">
<span class="nocase">Cinzia Papadia, Joost Louwagie, Paolo Del Rio, Madeleine Grooteclaes, Alessandro Coruzzi, Chiara Montana, Marco Novelli, Cesare Bordi, Gian Luigi de’ Angelis, Paul Bassett, Joseph Bigley, Bryan Warren, Wendy Atkin, and Alastair Forbes</span>. (2014). FOXE1 and SYNE1 genes hypermethylation panel as promising biomarker in colitis-associated colorectal neoplasia. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1097/01.MIB.0000435443.07237.ed">https://doi.org/10.1097/01.MIB.0000435443.07237.ed</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>FOXE1</category>
  <category>transcription factor</category>
  <category>biomarker</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-foxe1.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>GDNF: trophic signaling across nerves, stroma, and epithelium</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-gdnf.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>GDNF is a secreted trophic ligand best known for supporting neuronal survival and development through GFRα co-receptors and RET signaling. It is especially relevant to the enteric nervous system, while stromal, neural, epithelial, and tumour contexts can respond differently.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>GDNF signaling available</strong></p>
<p>Supports survival, differentiation, and tissue–nerve communication in suitable receptor-bearing cells.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>GDNF reduced</strong></p>
<p>Trophic support may decline; the phenotype depends on which cell supplied and received the signal.</p>
</div>
</div>
<p>Promoter methylation in UC-associated literature is interesting, but “GDNF off” cannot be translated into one universal cancer effect. RET signaling can be beneficial in normal development yet co-opted in malignancy.</p>
</section>
<section id="what-uc-tissue-studies-show" class="level2">
<h2 class="anchored" data-anchor-id="what-uc-tissue-studies-show">What UC tissue studies show</h2>
<p>In 28 UC colectomy specimens, GDNF methylation was higher in actively inflamed than paired quiescent mucosa, and active inflammation remained an independent correlate in the authors’ model <span class="citation" data-cites="saito2011ucmethylation">(Saito, Kato, Hiraoka, Horii, Suzuki, Higashi, Kaji, Kondo, and Yamamoto, 2011)</span>. This supports inflammation-associated epigenetic remodeling, but it does not show that GDNF protein or RET signaling fell in the same cells. Indeed, inflammatory tissue can contain simultaneous ligand induction in one compartment and promoter methylation in another.</p>
</section>
<section id="a-spatial-signaling-problem" class="level2">
<h2 class="anchored" data-anchor-id="a-spatial-signaling-problem">A spatial signaling problem</h2>
<p>GDNF is secreted, so bulk abundance cannot identify sender and receiver. Spatial RNA/protein should map GDNF-producing stromal or neural cells against GFRA1/RET-bearing targets, followed by phospho-RET and downstream ERK/AKT readouts. Only then can methylation be linked to loss of trophic signaling rather than tissue-composition change.</p>
<details>
<summary>
<strong>Resolve the signaling circuit</strong>
</summary>
Measure ligand source, GFRA/RET receptor expression, phospho-RET pathway activity, spatial context, and methylation–expression coupling.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/2668">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-saito2011ucmethylation" class="csl-entry">
Shunsuke Saito, Jun Kato, Sakiko Hiraoka, Joichiro Horii, Hideyuki Suzuki, Reiji Higashi, Eisuke Kaji, Yoshitaka Kondo, and Kazuhide Yamamoto. (2011). DNA methylation of colon mucosa in ulcerative colitis patients: Correlation with inflammatory status. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1002/ibd.21573">https://doi.org/10.1002/ibd.21573</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>GDNF</category>
  <category>signaling</category>
  <category>intestinal biology</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-gdnf.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>IL10: the intestinal immune brake</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-il10.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p><strong>IL10</strong> encodes a cytokine that limits excessive inflammatory programs, including antigen-presentation and pro-inflammatory cytokine output, while supporting aspects of B-cell biology. Its receptor activates JAK–STAT signaling. The <a href="https://www.ncbi.nlm.nih.gov/gene/3586">NCBI Gene summary</a> highlights its essential intestinal immunoregulatory role in knockout studies.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>IL-10 signaling</strong></p>
<p>Immune activation is restrained; tissue-damaging responses can resolve.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>IL-10 pathway lost</strong></p>
<p>Uncontrolled intestinal inflammation can follow; human IL-10/IL-10R defects cause severe early-onset enterocolitis.</p>
</div>
</div>
</section>
<section id="how-to-read-this-studys-methylation-signal" class="level2">
<h2 class="anchored" data-anchor-id="how-to-read-this-studys-methylation-signal">How to read this study’s methylation signal</h2>
<p>The presentation lists IL10 among hypomethylated immune genes in severe UC. That does not guarantee more IL10 RNA or protein: the result depends on CpG location, responding cell type, and immune-cell abundance. IL10 may rise as a compensatory brake during inflammation even when disease remains active.</p>
</section>
<section id="human-causal-evidence" class="level2">
<h2 class="anchored" data-anchor-id="human-causal-evidence">Human causal evidence</h2>
<p>The strongest evidence for pathway necessity is genetic rather than epigenetic. Biallelic IL10RA or IL10RB variants that abolished IL-10-induced STAT3 phosphorylation were identified in children with severe infantile-onset enterocolitis; patient immune cells released excessive inflammatory cytokines <span class="citation" data-cites="glocker2009il10r">(<span class="nocase">Glocker, Kotlarz, Boztug, and others</span>, 2009)</span>. These rare monogenic cases establish that intact IL-10 signaling is essential, but they should not be equated with common adult UC or with a modest IL10 DMR.</p>
</section>
<section id="what-to-measure-next" class="level2">
<h2 class="anchored" data-anchor-id="what-to-measure-next">What to measure next</h2>
<p>IL-10 concentration alone is insufficient because abundant ligand can coexist with receptor resistance. A useful paired assay would measure cell-specific IL10 transcription, secreted protein, IL10RA/IL10RB abundance, and phospho-STAT3 after ex vivo stimulation. That separates compensatory production from effective anti-inflammatory signaling.</p>
<details>
<summary>
<strong>Measurements needed</strong>
</summary>
Resolve the DMR location, cell composition, IL10 transcript, circulating/local protein, and STAT3 pathway response before claiming functional activation.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/3586">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-glocker2009il10r" class="csl-entry">
<span class="nocase">Erik-Oliver Glocker, Daniel Kotlarz, Kaan Boztug, and others</span>. (2009). Inflammatory bowel disease and mutations affecting the interleukin-10 receptor. <em>New England Journal of Medicine</em>. <a href="https://doi.org/10.1056/NEJMoa0907206">https://doi.org/10.1056/NEJMoa0907206</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>IL10</category>
  <category>immunity</category>
  <category>ulcerative colitis</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-il10.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>KIAA1614: a candidate link to polarity, still largely uncharacterized</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-kiaa1614.html</link>
  <description><![CDATA[ 





<section id="why-it-appeared" class="level2">
<h2 class="anchored" data-anchor-id="why-it-appeared">Why it appeared</h2>
<p><strong>KIAA1614</strong> had the highest methylation frequency of the three validated promoter-panel genes in the cited UC series, with reduced RNA expression <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC5000688/">Kang et al.</a>.</p>
<p>The underlying evidence came from a small 450K discovery set (8 UC, 3 controls), followed by targeted technical validation in 79 UC samples and bulk qRT-PCR <span class="citation" data-cites="kang2016ucpanel">(Kang, Bae, Han, Kim, Kim, and Yi, 2016)</span>. “Highest frequency” therefore refers to this selected panel and cohort; it is not a population prevalence estimate or an independently validated clinical sensitivity.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>Expressed</strong></p>
<p>Predicted participation in cell polarity, localization, and the centrosome cycle.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>Expression reduced</strong></p>
<p>A plausible polarity phenotype exists, but it has not been demonstrated in UC epithelium.</p>
</div>
</div>
</section>
<section id="function-and-loss" class="level2">
<h2 class="anchored" data-anchor-id="function-and-loss">Function and loss</h2>
<p><a href="https://www.ncbi.nlm.nih.gov/gene/57710">NCBI’s curated record</a> lists predicted involvement in centrosome cycle, establishment or maintenance of cell polarity, and regulation of cellular localization, with predicted activity at the apical membrane, cortex, and nucleus. Much of this annotation is computational rather than direct human intestinal evidence.</p>
<p>If genuine loss disrupted epithelial polarity, one could imagine altered apical–basal organization or repair. That is a <strong>testable hypothesis</strong>, not a result. Lower bulk-tissue RNA could also reflect fewer expressing cells rather than repression within each cell.</p>
</section>
<section id="biomarker-before-mechanism" class="level2">
<h2 class="anchored" data-anchor-id="biomarker-before-mechanism">Biomarker before mechanism</h2>
<p>Near-term work should treat the locus as a candidate classifier: lock the assayed CpGs, test inflammation-matched disease controls, and validate externally. Mechanistic work can proceed in parallel, but predicted Gene Ontology annotations should not be used as evidence that KIAA1614 controls colon polarity.</p>
<details>
<summary>
<strong>Best next experiment</strong>
</summary>
Localize KIAA1614 in colon cell types, perturb it in polarized organoids, and measure junction placement, centrosomes, wound closure, and rescue while confirming the promoter methylation state.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/57710">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-kang2016ucpanel" class="csl-entry">
Keunsoo Kang, Jin-Han Bae, Kyudong Han, Eun Soo Kim, Tae-Oh Kim, and Joo Mi Yi. (2016). A genome-wide methylation approach identifies a new hypermethylated gene panel in ulcerative colitis. <em>International Journal of Molecular Sciences</em>. <a href="https://doi.org/10.3390/ijms17081291">https://doi.org/10.3390/ijms17081291</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>KIAA1614</category>
  <category>methylation</category>
  <category>ulcerative colitis</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-kiaa1614.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>NLRC4: detecting bacterial invasion machinery</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-nlrc4.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>NAIP proteins recognize bacterial flagellin or type-III secretion-system components and recruit NLRC4 to assemble an inflammasome. Caspase-1 activation then promotes IL-1-family cytokine maturation and pyroptotic defense.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>NAIP–NLRC4 intact</strong></p>
<p>Invasive bacterial structures can trigger rapid epithelial/innate defense.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>NLRC4 lost</strong></p>
<p>Defense against relevant pathogens may weaken; excessive inflammatory injury may also fall.</p>
</div>
</div>
<p>NLRC4 and NLRP3 are not redundant synonyms: their upstream triggers differ. Hypomethylation in severe UC may mark immune-cell abundance or regulatory change, but it does not demonstrate inflammasome activity.</p>
</section>
<section id="what-is-distinctive-about-nlrc4" class="level2">
<h2 class="anchored" data-anchor-id="what-is-distinctive-about-nlrc4">What is distinctive about NLRC4</h2>
<p>NAIPs provide ligand recognition and nucleate NLRC4 oligomerization; bacterial flagellin and type-III-secretion-system proteins are canonical triggers. Reactome curates this neighborhood as the IPAF inflammasome <span class="citation" data-cites="milacic2024reactome">(<span class="nocase">Milacic, Beavers, Conley, and others</span>, 2024)</span>. The response can rapidly activate caspase-1 and expel or kill infected cells. Human and mouse NAIP repertoires differ, so ligand specificity cannot always be transferred directly between species.</p>
</section>
<section id="relevance-and-evidence-gap-in-uc" class="level2">
<h2 class="anchored" data-anchor-id="relevance-and-evidence-gap-in-uc">Relevance and evidence gap in UC</h2>
<p>NLRC4 is biologically plausible where barrier breach increases bacterial access, but a severe-UC DMR does not identify ligand, assembled complex, or cellular source. Demonstrating the pathway requires sensor-specific stimulation or complex capture alongside cleaved caspase-1, gasdermin D, IL-18/IL-1β, and epithelial versus myeloid localization. Without those measurements, the locus is an inflammatory-context marker.</p>
<details>
<summary>
<strong>Interpret with NLRP3, not as NLRP3</strong>
</summary>
Measure sensor-specific triggers and complexes, caspase-1 products, pyroptosis, and cellular origin. A shared downstream cytokine is not proof of which inflammasome fired.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/58484">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-milacic2024reactome" class="csl-entry">
<span class="nocase">Marija Milacic, Deidre Beavers, Patrick Conley, and others</span>. (2024). The reactome pathway knowledgebase 2024. <em>Nucleic Acids Research</em>. <a href="https://doi.org/10.1093/nar/gkad1025">https://doi.org/10.1093/nar/gkad1025</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>NLRC4</category>
  <category>inflammasome</category>
  <category>mucosal immunity</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-nlrc4.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>NLRP3: a danger sensor with a two-sided intestinal role</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-nlrp3.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>NLRP3 can assemble an inflammasome with ASC and caspase-1 after appropriate priming and activation signals. The complex matures IL-1β and IL-18 and can trigger gasdermin-D-dependent pyroptosis.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>Controlled NLRP3 activity</strong></p>
<p>Supports danger sensing, antimicrobial defense, and context-dependent tissue repair.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>NLRP3 absent</strong></p>
<p>Some inflammatory injury may decrease, but host defense and repair signals can also weaken.</p>
</div>
</div>
<p>Too much activity can amplify chronic inflammation; too little is not universally beneficial. The presentation’s hypomethylation observation does not establish inflammasome assembly, which requires protein, localization, priming, and a second activation signal.</p>
</section>
<section id="evidence-in-human-ibd" class="level2">
<h2 class="anchored" data-anchor-id="evidence-in-human-ibd">Evidence in human IBD</h2>
<p>A small clinical study reported increased NLRP3-inflammasome-associated transcripts and activity in Crohn’s disease and in long-standing UC <span class="citation" data-cites="papin2017nlrp3">(Lazaridis and Germanidis, 2017)</span>. The result supports pathway engagement in subsets of IBD, but blood or bulk-tissue readouts cannot specify whether epithelial cells, macrophages, neutrophils, or another compartment is responsible.</p>
</section>
<section id="two-signals-several-outputs" class="level2">
<h2 class="anchored" data-anchor-id="two-signals-several-outputs">Two signals, several outputs</h2>
<p>Canonical activation typically separates transcriptional priming from a second stimulus such as ion flux, organelle stress, or extracellular ATP. Therefore NLRP3 RNA, promoter accessibility, ASC specks, caspase-1 cleavage, cytokine maturation, and pyroptosis answer different questions. A strong study measures several of them in the same cell type and relates them to disease activity and treatment.</p>
<details>
<summary>
<strong>Functional readouts</strong>
</summary>
NLRP3 protein, ASC specks, cleaved caspase-1, mature IL-1β/IL-18, gasdermin D cleavage, and cell-type localization.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/114548">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-papin2017nlrp3" class="csl-entry">
Nikolaos Lazaridis and Georgios Germanidis. (2017). Activation of NLRP3 inflammasome in inflammatory bowel disease: Differences between crohn’s disease and ulcerative colitis. <em>Digestive Diseases and Sciences</em>. <a href="https://doi.org/10.1007/s10620-017-4650-7">https://doi.org/10.1007/s10620-017-4650-7</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>NLRP3</category>
  <category>inflammasome</category>
  <category>ulcerative colitis</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-nlrp3.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>RIBC2: a ciliary protein candidate in a non-ciliated methylation story</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-ribc2.html</link>
  <description><![CDATA[ 





<section id="the-signal" class="level2">
<h2 class="anchored" data-anchor-id="the-signal">The signal</h2>
<p>The highlighted UC study found <strong>RIBC2 promoter hypermethylation and reduced transcript abundance</strong> <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC5000688/">Kang et al.</a>.</p>
<p>The UC evidence is one small discovery/technical-validation pipeline: 8 UC and 3 control tissues on 450K arrays, targeted testing in 79 UC samples, and bulk transcript measurement <span class="citation" data-cites="kang2016ucpanel">(Kang, Bae, Han, Kim, Kim, and Yi, 2016)</span>. It supports a reproducible locus within that study, not a validated cilia mechanism or clinical test.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>RIBC2 present</strong></p>
<p>In vertebrate model work, Ribc2 localizes to motile-cilia axonemes and supports organized beating.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>Ribc2 disrupted</strong></p>
<p>Xenopus experiments showed disorganized axonemes and impaired ciliary beating.</p>
</div>
</div>
<p>The functional evidence comes from an <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC3889689/">RFX2 ciliogenesis study</a>, not UC colon. The ordinary colonic surface epithelium is not a classic motile-ciliated tissue, so importing that phenotype directly would be misleading. RIBC2 may mark a cell population, have a different intracellular role, or be an epigenetic passenger here.</p>
<p>In the cited <em>Xenopus</em> work, RIBC2 was an RFX2-dependent multiciliated-cell gene; knockdown disrupted axonemal organization and ciliary beating <span class="citation" data-cites="chung2014ribc2">(Chung, Kwon, Tu, Brooks, Gupta, Meyer, Baker, Marcotte, and Wallingford, 2014)</span>. That is valuable functional evidence with a sharp tissue boundary. Its best use here is to generate localization experiments, not to fill an unobserved step in UC pathogenesis.</p>
</section>
<section id="if-expression-stops-in-this-context" class="level2">
<h2 class="anchored" data-anchor-id="if-expression-stops-in-this-context">If expression stops in this context</h2>
<p>The answer remains unknown. Confirm which colonic cells express RIBC2, whether the protein is present, and whether promoter methylation explains within-cell repression. A methylation biomarker can be useful even when its encoded protein is not mechanistically central.</p>
<details>
<summary>
<strong>Evidence boundary</strong>
</summary>
“Cilia-related in a vertebrate model” is supported. “RIBC2 loss damages the UC epithelial barrier” is not yet supported.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/26150">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-kang2016ucpanel" class="csl-entry">
Keunsoo Kang, Jin-Han Bae, Kyudong Han, Eun Soo Kim, Tae-Oh Kim, and Joo Mi Yi. (2016). A genome-wide methylation approach identifies a new hypermethylated gene panel in ulcerative colitis. <em>International Journal of Molecular Sciences</em>. <a href="https://doi.org/10.3390/ijms17081291">https://doi.org/10.3390/ijms17081291</a>.
</div>
<div id="ref-chung2014ribc2" class="csl-entry">
Mei-I Chung, Taekyoung Kwon, Fang Tu, Elizabeth R. Brooks, Richa Gupta, Matthew Meyer, Jason C. Baker, Edward M. Marcotte, and John B. Wallingford. (2014). Coordinated genomic control of ciliogenesis and cell movement by RFX2. <em>eLife</em>. <a href="https://doi.org/10.7554/eLife.01439">https://doi.org/10.7554/eLife.01439</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>RIBC2</category>
  <category>methylation</category>
  <category>cilia</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-ribc2.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>SIGLEC5: reading sialic-acid identity with an inhibitory receptor</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-siglec5.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>SIGLEC-5 is a sialic-acid-binding receptor expressed mainly on myeloid cells. Its cytoplasmic inhibitory motifs recruit phosphatases that dampen activation when the receptor engages appropriate sialylated ligands. It operates in a complicated locus alongside activating SIGLEC-14, whose similar extracellular region can complicate interpretation.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>Inhibitory signal intact</strong></p>
<p>Myeloid activation is tuned rather than simply switched on.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>SIGLEC5 reduced</strong></p>
<p>Inhibitory tone may fall, but phenotype depends on ligands, cell type, and SIGLEC14 genotype/expression.</p>
</div>
</div>
</section>
<section id="relevance-here" class="level2">
<h2 class="anchored" data-anchor-id="relevance-here">Relevance here</h2>
<p>Hypomethylation in inflamed UC tissue could reflect altered regulation <strong>or more SIGLEC5-expressing myeloid cells</strong>. Bulk methylation cannot distinguish these explanations. Expression, cell deconvolution, and locus-aware genotyping are important.</p>
</section>
<section id="the-paired-receptor-complication" class="level2">
<h2 class="anchored" data-anchor-id="the-paired-receptor-complication">The paired-receptor complication</h2>
<p>SIGLEC-5 carries inhibitory ITIM motifs, whereas the closely related SIGLEC-14 signals through DAP12. Human genetic variation can produce a SIGLEC14-null fusion genotype, changing the balance between receptors with similar ligand-binding domains. Functional work with group B <em>Streptococcus</em> showed that this paired system can alter neutrophil inflammatory responses <span class="citation" data-cites="ali2014siglecs">(<span class="nocase">Ali, Fong, Carlin, and others</span>, 2014)</span>.</p>
</section>
<section id="consequence-for-a-uc-biomarker" class="level2">
<h2 class="anchored" data-anchor-id="consequence-for-a-uc-biomarker">Consequence for a UC biomarker</h2>
<p>An assay that does not resolve cell type and the SIGLEC5/SIGLEC14 locus can misattribute both methylation and expression. The most informative design combines genotype-aware mapping, neutrophil/monocyte abundance, receptor-specific protein reagents, ligand sialylation, and downstream phosphatase or DAP12 signaling.</p>
<details>
<summary>
<strong>Why “less methylation = more inhibition” is too simple</strong>
</summary>
The CpG may not control the promoter, RNA may not track it, receptor occupancy matters, and the paired activating Siglec changes the biological balance.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/8778">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-ali2014siglecs" class="csl-entry">
<span class="nocase">S. R. Ali, J. J. Fong, A. F. Carlin, and others</span>. (2014). Siglec-5 and siglec-14 are polymorphic paired receptors that modulate neutrophil and amnion signaling responses to group b streptococcus. <em>Journal of Experimental Medicine</em>. <a href="https://doi.org/10.1084/jem.20131853">https://doi.org/10.1084/jem.20131853</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>SIGLEC5</category>
  <category>innate immunity</category>
  <category>methylation</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-siglec5.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>SYNE1: mechanically linking the nucleus to the cell</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/gene-syne1.html</link>
  <description><![CDATA[ 





<section id="function" class="level2">
<h2 class="anchored" data-anchor-id="function">Function</h2>
<p>SYNE1 is a very large gene encoding nesprin-1 isoforms. Through the LINC complex, major isoforms connect the nuclear envelope to cytoskeletal systems, contributing to nuclear positioning, mechanics, and cellular organization.</p>
<div class="gene-mechanism">
<div class="gene-state">
<p><strong>Nesprin-1 network intact</strong></p>
<p>Mechanical information and nuclear position are coordinated with the cytoskeleton.</p>
</div>
<div class="gene-flow-arrow">
<p>→</p>
</div>
<div class="gene-state gene-state-off">
<p><strong>Relevant isoform lost</strong></p>
<p>Nuclear architecture, positioning, migration, or mechanotransduction may change—depending strongly on isoform and cell type.</p>
</div>
</div>
<p>Because SYNE1 is enormous and has many isoforms, “SYNE1 methylated” is underspecified. A CpG may mark one promoter or transcript without silencing the entire locus. Its value in colitis-associated neoplasia may be biomarker-like rather than a direct driver mechanism.</p>
</section>
<section id="evidence-as-a-neoplasia-marker" class="level2">
<h2 class="anchored" data-anchor-id="evidence-as-a-neoplasia-marker">Evidence as a neoplasia marker</h2>
<p>In 93 people with long-standing IBD plus 30 controls, Papadia et al.&nbsp;found SYNE1 promoter methylation absent in controls and present in 80% of colitis-associated colorectal cancers, with frequency increasing across disease groups <span class="citation" data-cites="papadia2014foxesyne">(<span class="nocase">Papadia, Louwagie, Del Rio, Grooteclaes, Coruzzi, Montana, Novelli, Bordi, de’ Angelis, Bassett, Bigley, Warren, Atkin, and Forbes</span>, 2014)</span>. That makes the assayed region a plausible tissue marker, but the cross-sectional design did not establish prospective prediction or functional loss of nesprin-1.</p>
</section>
<section id="why-gene-size-changes-the-question" class="level2">
<h2 class="anchored" data-anchor-id="why-gene-size-changes-the-question">Why gene size changes the question</h2>
<p>SYNE1 uses alternative promoters and extensive splicing. Giant nesprin-1 can bridge actin to SUN proteins in the LINC complex, while shorter isoforms have different domains and distributions <span class="citation" data-cites="starr2018linc">(Starr and Fridolfsson, 2010)</span>. Validation must therefore report genomic coordinates and transcript consequences; a gene-level label hides the actual molecular hypothesis.</p>
<details>
<summary>
<strong>Necessary annotation</strong>
</summary>
Report exact CpGs, promoter/isoform, transcript expression, nesprin-1 protein localization, and nuclear-shape/mechanics phenotype.
</details>
<p><a href="../posts/silenced-and-inflammatory-genes-in-colitis.html">Back to the gene overview →</a> · <a href="https://www.ncbi.nlm.nih.gov/gene/23345">NCBI Gene →</a></p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-papadia2014foxesyne" class="csl-entry">
<span class="nocase">Cinzia Papadia, Joost Louwagie, Paolo Del Rio, Madeleine Grooteclaes, Alessandro Coruzzi, Chiara Montana, Marco Novelli, Cesare Bordi, Gian Luigi de’ Angelis, Paul Bassett, Joseph Bigley, Bryan Warren, Wendy Atkin, and Alastair Forbes</span>. (2014). FOXE1 and SYNE1 genes hypermethylation panel as promising biomarker in colitis-associated colorectal neoplasia. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1097/01.MIB.0000435443.07237.ed">https://doi.org/10.1097/01.MIB.0000435443.07237.ed</a>.
</div>
<div id="ref-starr2018linc" class="csl-entry">
Daniel A. Starr and Heather N. Fridolfsson. (2010). Interactions between nuclei and the cytoskeleton are mediated by SUN-KASH nuclear-envelope bridges. <em>Annual Review of Cell and Developmental Biology</em>. <a href="https://doi.org/10.1146/annurev-cellbio-100109-104037">https://doi.org/10.1146/annurev-cellbio-100109-104037</a>.
</div>
</div></section></div> ]]></description>
  <category>gene profile</category>
  <category>SYNE1</category>
  <category>nuclear envelope</category>
  <category>biomarker</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/gene-syne1.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/pathway-network.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>More mitochondria, less efficient respiration</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/mitochondrial-biogenesis-ros-colitis-cancer/</link>
  <description><![CDATA[ 





<p>An inflamed epithelial cell can make more mitochondria while extracting less useful energy from each one. That apparent paradox matters because respiratory-chain stress is not only a consequence of inflammation: it can become an amplifier. Higher mitochondrial turnover and electron flow create more opportunities for reactive oxygen species (ROS) to damage mitochondrial DNA (mtDNA), weaken oxidative phosphorylation (OXPHOS), and release signals that keep mucosal immunity active. Over years of repeated injury and repair, that loop can help create a tissue environment permissive to colitis-associated colorectal cancer.</p>
<section id="mitochondrial-biogenesis-in-inflammation" class="level2">
<h2 class="anchored" data-anchor-id="mitochondrial-biogenesis-in-inflammation">Mitochondrial biogenesis in inflammation</h2>
<p>Mitochondrial biogenesis is coordinated rather than spontaneous. PGC-1α coactivates nuclear respiratory factors including NRF1; these induce TFAM and other proteins needed to replicate, package, and transcribe mtDNA. Inflammatory and redox signals can engage this repair-and-replacement program, although cytokines such as TNF-α and IL-6 can also suppress or distort it depending on dose, timing, cell type, and disease stage. Thus, biogenesis is better understood as a stress response than as proof of healthy respiration <span class="citation" data-cites="cherry2015biogenesis cunningham2016pgc1a">(Cherry and Piantadosi, 2015; Cunningham, Vincent, Sodhi, Novak, Ranganathan, Egan, Stolz, Rogers, Firek, Morowitz, Gittes, Zuckerbraun, Hackam, and Mollen, 2016)</span>. Figure&nbsp;1 shows the compensatory logic.</p>
<div id="cell-fig-biogenesis" class="cell" data-fig-height="5.3" data-fig-width="11" data-execution_count="1">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> pathlib <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Path</span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> numpy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> np</span>
<span id="cb1-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> pandas <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> pd</span>
<span id="cb1-4"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb1-5"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> seaborn <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> sns</span>
<span id="cb1-6"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> matplotlib.patches <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Circle, Ellipse, FancyBboxPatch, FancyArrowPatch, Rectangle</span>
<span id="cb1-7"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> scipy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> stats</span>
<span id="cb1-8"></span>
<span id="cb1-9">OUT <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Path(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"images"</span>)</span>
<span id="cb1-10">OUT.mkdir(exist_ok<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-11">sns.set_theme(style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"whitegrid"</span>, context<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"notebook"</span>)</span>
<span id="cb1-12">navy, teal, coral, gold, pale <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#17324D"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#17807E"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#D95D4F"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#E5A93D"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#EAF3F2"</span></span>
<span id="cb1-13"></span>
<span id="cb1-14">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.3</span>))</span>
<span id="cb1-15">ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">12</span>), ylim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.axis(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"off"</span>)</span>
<span id="cb1-16">steps <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.65</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.75</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TNF-α · IL-6</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">redox stress"</span>, coral),</span>
<span id="cb1-17">         (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.15</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.65</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.75</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PGC-1α"</span>, teal),</span>
<span id="cb1-18">         (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.65</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.75</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NRF1"</span>, teal),</span>
<span id="cb1-19">         (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.85</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.65</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.75</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TFAM + mtDNA</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">replication"</span>, teal)]</span>
<span id="cb1-20"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x, y, w, h, txt, col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> steps:</span>
<span id="cb1-21">    ax.add_patch(FancyBboxPatch((x,y),w,h,boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=.08"</span>,fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>col,ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>))</span>
<span id="cb1-22">    ax.text(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>w<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>h<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>,txt,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb1-23"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.55</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.4</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.25</span>]:</span>
<span id="cb1-24">    ax.add_patch(FancyArrowPatch((x,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.03</span>),(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.55</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.03</span>),arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>,mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">16</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb1-25"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> cx, label, count <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Before: fewer"</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>),(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.0</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"After: more"</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>)]:</span>
<span id="cb1-26">    ax.add_patch(Circle((cx,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.15</span>),<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.65</span>,fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#F7FAFC"</span>,ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb1-27">    coords <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [(cx<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.75</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>(i<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.65</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>(i<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">//</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(count)]</span>
<span id="cb1-28">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> mx,my <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> coords:</span>
<span id="cb1-29">        ax.add_patch(Ellipse((mx,my),<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.7</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.34</span>,angle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>,fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gold,ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.4</span>))</span>
<span id="cb1-30">        ax.plot([mx<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.2</span>,mx<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.2</span>],[my,my],color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb1-31">    ax.text(cx,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.2</span>,label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">" mitochondria"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy)</span>
<span id="cb1-32">ax.add_patch(FancyArrowPatch((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.55</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.15</span>),(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.15</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.15</span>),arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>,mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">22</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>))</span>
<span id="cb1-33">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.85</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.5</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"compensatory</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">biogenesis"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>teal,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb1-34">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.85</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.65</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"More organelles ≠ more efficient OXPHOS"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb1-35">fig.tight_layout()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> fig.savefig(OUT<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure-1-biogenesis.png"</span>,dpi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">220</span>,bbox_inches<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tight"</span>)</span>
<span id="cb1-36">plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-biogenesis" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-biogenesis-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/mitochondrial-biogenesis-ros-colitis-cancer/index_files/figure-html/fig-biogenesis-output-1.png" width="1041" height="493" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-biogenesis-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Inflammatory signaling can engage the PGC-1α–NRF1–TFAM biogenesis program, increasing mitochondrial number without guaranteeing respiratory quality.
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="why-cox3-and-nd1-are-vulnerable" class="level2">
<h2 class="anchored" data-anchor-id="why-cox3-and-nd1-are-vulnerable">Why COX3 and ND1 are vulnerable</h2>
<p>MT-ND1 encodes a core membrane subunit of Complex I, where electrons enter from NADH; MT-CO3 encodes cytochrome-c-oxidase subunit III in Complex IV, where oxygen is reduced. Both genes reside on the compact mitochondrial genome. Compared with nuclear DNA, mtDNA is not organized in canonical histone chromatin, has a narrower repair repertoire, and lies close to respiratory ROS production. Those features make oxidative lesions and replication errors consequential, but not uniquely confined to these two genes: COX3 and ND1 are mechanistically useful sentinels within a genome-wide vulnerability <span class="citation" data-cites="nishikawa2005mtdna turrens2003ros">(Nishikawa, Oshitani, Matsumoto, Nishigami, Arakawa, and Inoue, 2005; Turrens, 2003)</span>. Their ETC positions are highlighted in Figure&nbsp;2.</p>
<div id="cell-fig-etc" class="cell" data-fig-height="5.2" data-fig-width="11" data-execution_count="2">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.2</span>))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">12</span>),ylim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.axis(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"off"</span>)</span>
<span id="cb2-2">ax.add_patch(Rectangle((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.2</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.25</span>),<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">11.6</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>,fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#DCECF2"</span>,ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8BAAB5"</span>,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>))</span>
<span id="cb2-3">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.35</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.75</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Intermembrane space"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.35</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.85</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Matrix"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy)</span>
<span id="cb2-4">xs<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.3</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.2</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.8</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.6</span>]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> labels<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Complex I</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">ND1"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Complex II"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Complex III"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Complex IV</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">COX3"</span>]</span>
<span id="cb2-5"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x,lbl <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">zip</span>(xs,labels):</span>
<span id="cb2-6">    hi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> x <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.3</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.6</span>)</span>
<span id="cb2-7">    ax.add_patch(FancyBboxPatch((x,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>),<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.45</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.1</span>,boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=.08"</span>,fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> hi <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> navy,ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb2-8">    ax.text(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.725</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.05</span>,lbl,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb2-9"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> a,b <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.78</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.05</span>),(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.68</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.65</span>),(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.28</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.45</span>)]:</span>
<span id="cb2-10">    ax.add_patch(FancyArrowPatch((a,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.05</span>),(b,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.05</span>),arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>,mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>gold,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.5</span>))</span>
<span id="cb2-11">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.9</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.55</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"electron flow  →  O₂ → H₂O"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb2-12"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.5</span>]:</span>
<span id="cb2-13">    ax.add_patch(FancyArrowPatch((x,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.05</span>),(x,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>),arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>,mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb2-14">    ax.text(x,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.95</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ROS leak"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb2-15">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.9</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.55</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"MT-ND1 and MT-CO3: mtDNA-encoded"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">13</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb2-16">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.9</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.05</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"no canonical histone protection · limited repair repertoire · near ROS source"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy)</span>
<span id="cb2-17">fig.tight_layout()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> fig.savefig(OUT<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure-2-etc.png"</span>,dpi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">220</span>,bbox_inches<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tight"</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-etc" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-etc-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/mitochondrial-biogenesis-ros-colitis-cancer/index_files/figure-html/fig-etc-output-1.png" width="1041" height="484" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-etc-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;2: Electron flow through the inner mitochondrial membrane. MT-ND1 in Complex I and MT-CO3 in Complex IV are mtDNA-encoded; ROS leakage is shown at the principal Complex I and III sites.
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="the-ros-feedback-loop" class="level2">
<h2 class="anchored" data-anchor-id="the-ros-feedback-loop">The ROS feedback loop</h2>
<p>Greater ETC throughput can raise electron leakage, especially when respiratory complexes are damaged or substrate supply exceeds downstream capacity. ROS then damage mtDNA, including MT-CO3 and MT-ND1; dysfunctional complexes lower coupling efficiency and can generate still more ROS. Permeabilized or dying cells release mtDNA and mitochondrial formyl peptides, adding immune stimulation to metabolic failure <span class="citation" data-cites="turrens2003ros boyapati2018damp">(Turrens, 2003; Boyapati, Dorward, Tamborska, Kalla, Ventham, Doherty, Whitfield, Gray, Loane, Rossi, Satsangi, and Ho, 2018)</span>. This is the cycle summarized in Figure&nbsp;3. It is a plausible integrated mechanism, not proof that every arrow occurs in every cell at every stage.</p>
<div id="cell-fig-loop" class="cell" data-fig-height="8" data-fig-width="10" data-execution_count="3">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>),ylim<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.5</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.8</span>))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> ax.axis(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"off"</span>)</span>
<span id="cb3-2">nodes<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Inflammation"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Biogenesis"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ETC activity"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ROS"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA damage</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">COX3 / ND1"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"OXPHOS decline"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"DAMP release"</span>]</span>
<span id="cb3-3">angles<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>np.linspace(np.pi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>,np.pi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>np.pi,<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(nodes),endpoint<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> pts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[]</span>
<span id="cb3-4"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i,(lab,a) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">enumerate</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">zip</span>(nodes,angles)):</span>
<span id="cb3-5">    x,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.25</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>np.cos(a),<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.25</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>np.sin(a)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> pts.append((x,y))</span>
<span id="cb3-6">    col<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> lab <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> (<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ROS"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA damage</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">COX3 / ND1"</span>) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> teal</span>
<span id="cb3-7">    ax.add_patch(FancyBboxPatch((x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.38</span>),<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.76</span>,boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=.08"</span>,fc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>col,ec<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>))</span>
<span id="cb3-8">    ax.text(x,y,lab,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb3-9"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (x1,y1),(x2,y2) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">zip</span>(pts,pts[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>:]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>pts[:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]):</span>
<span id="cb3-10">    ax.add_patch(FancyArrowPatch((x1,y1),(x2,y2),connectionstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"arc3,rad=-.13"</span>,arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>,mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>,shrinkA<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">45</span>,shrinkB<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">45</span>))</span>
<span id="cb3-11">ax.text(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"self-reinforcing</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">mitochondrial stress"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>,fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>)</span>
<span id="cb3-12">ax.add_patch(FancyArrowPatch((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.0</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.1</span>),(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.25</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.35</span>),arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>,mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb3-13">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.05</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"chronic colitis"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb3-14">ax.add_patch(FancyArrowPatch((<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.45</span>),(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.1</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.45</span>),arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-|&gt;"</span>,mutation_scale<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb3-15">ax.text(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.55</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.05</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"genomic instability</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">→ colon cancer risk"</span>,ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb3-16">fig.tight_layout()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> fig.savefig(OUT<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure-3-feedback-loop.png"</span>,dpi<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">220</span>,bbox_inches<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tight"</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-loop" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-loop-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/mitochondrial-biogenesis-ros-colitis-cancer/index_files/figure-html/fig-loop-output-1.png" width="945" height="753" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-loop-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;3: A proposed feed-forward loop linking inflammation, mitochondrial turnover, respiratory stress, DAMP release, chronic colitis, and cancer risk.
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="link-to-colitis" class="level2">
<h2 class="anchored" data-anchor-id="link-to-colitis">Link to colitis</h2>
<p>The intestinal epithelium depends heavily on mitochondrial metabolism to maintain ion transport, mucus production, tight-junction renewal, and rapid repair. Respiratory dysfunction therefore weakens the barrier while inflammatory infiltrates increase oxidant exposure. Released mtDNA, with bacterial-like CpG motifs, can signal through TLR9; cytosolic oxidized mtDNA can also promote NLRP3 inflammasome activation. Mitochondrial formyl peptides recruit and activate innate immune cells. In active IBD, plasma and fecal mtDNA, circulating formyl peptides, damaged mucosal mitochondria, and TLR9-positive lamina propria cells have all been observed together, supporting—without by itself proving—a self-sustaining DAMP circuit <span class="citation" data-cites="boyapati2018damp">(Boyapati, Dorward, Tamborska, Kalla, Ventham, Doherty, Whitfield, Gray, Loane, Rossi, Satsangi, and Ho, 2018)</span>.</p>
</section>
<section id="direct-evidence-from-oxphos-protein-studies" class="level2">
<h2 class="anchored" data-anchor-id="direct-evidence-from-oxphos-protein-studies">Direct evidence from OXPHOS protein studies</h2>
<p>Schneider et al.&nbsp;examined 286 colonic biopsies from 124 pediatric and adult participants with Crohn’s disease, ulcerative colitis, or no IBD. Immunohistochemistry measured representative subunits from all five OXPHOS complexes plus VDAC1 as a marker of mitochondrial mass. Inflamed IBD mucosa showed disease-, age-, and compartment-dependent changes, including reduced epithelial respiratory-complex staining and altered VDAC1. This is unusually direct tissue-level evidence that respiratory machinery and mitochondrial mass change in inflamed colon <span class="citation" data-cites="schneider2022oxphos">(Schneider, Özsoy, Zimmermann, Brunner, Feichtinger, Mayr, Kofler, Neureiter, Klieser, Aigner, Schütz, Stummer, Sperl, and Weghuber, 2022)</span>. It complements sequencing studies, which identify mtDNA alterations but generally infer rather than directly measure respiratory protein function. Earlier biochemical work likewise reported ETC-complex dysfunction in UC mucosa <span class="citation" data-cites="santhanam2012etc">(Santhanam, Rajamanickam, Motamarry, Ramakrishna, Amirtharaj, Ramachandran, Pulimood, and Venkatraman, 2012)</span>.</p>
</section>
<section id="link-to-colon-cancer" class="level2">
<h2 class="anchored" data-anchor-id="link-to-colon-cancer">Link to colon cancer</h2>
<p>Repeated oxidative injury can damage nuclear as well as mitochondrial DNA while proliferative repair expands altered epithelial clones. Nishikawa et al.&nbsp;found higher mucosal 8-OHdG and mtDNA mutation frequencies in UC and colitic cancer <span class="citation" data-cites="nishikawa2005mtdna">(Nishikawa, Oshitani, Matsumoto, Nishigami, Arakawa, and Inoue, 2005)</span>; MitoChip analysis also detected somatic mtDNA changes in gastrointestinal preneoplasia <span class="citation" data-cites="sui2006mitochip">(Sui, Zhou, Wang, Canto, Lee, Eshleman, Montgomery, Sidransky, Califano, and Maitra, 2006)</span>. Circulating MT-ND1 copy number and variants have consequently been explored as CRC biomarkers <span class="citation" data-cites="xu2021mtnd1">(Xu, Zhou, Yuan, Su, Li, Lu, Zhang, Cai, and Han, 2021)</span>.</p>
<p>This does not mean “cancer equals failed OXPHOS.” In a staged CRC cell-line model, advanced cells retained substantial oxidative metabolism and acquired greater metabolic flexibility, alongside altered mitochondrial networks <span class="citation" data-cites="legge2024crcmetabolism">(Legge, Collard, Stanko, Hoskin, Holt, Bull, Kollareddy, Bellamy, Groves, Ma, Hazelwood, Qualtrough, Amulic, Malik, Williams, Jones, and Vincent, 2024)</span>. Separately, 5-FU-resistant colon-cancer cells shifted toward OXPHOS dependence, connecting mitochondrial plasticity to chemoresistance <span class="citation" data-cites="denise2015oxphos">(Denise, Paoli, Calvani, Taddei, Giannoni, Kopetz, Kazmi, Morelli, Pettazzoni, Sacco, Caselli, Vanoni, Landriscina, Cirri, and Chiarugi, 2015)</span>. The apparent contrast is temporal and selective: inflamed mucosa may lose respiratory capacity, whereas surviving neoplastic clones can rewire or restore mitochondrial metabolism. Baker et al.&nbsp;add a crucial qualification: mtDNA mutations rose in UC preneoplasia but tended to be negatively selected in established cancers <span class="citation" data-cites="baker2019mtdna">(Baker, Nachmanson, Kumar, Emond, Ussakli, Brentnall, Kennedy, and Risques, 2019)</span>. The trajectory is therefore non-monotonic.</p>
</section>
<section id="toy-data-analysis" class="level2">
<h2 class="anchored" data-anchor-id="toy-data-analysis">Toy data analysis</h2>
<div class="callout callout-style-default callout-warning callout-titled" title="Simulation disclaimer">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Warning</span>Simulation disclaimer
</div>
</div>
<div class="callout-body-container callout-body">
<p>Every number below is simulated for pedagogical illustration. None comes from a patient, clinical cohort, GEO record, or the cited studies; the simulations reproduce only broad qualitative patterns and cannot estimate biological effect sizes.</p>
</div>
</div>
<section id="relative-mtdna-copy-number" class="level3">
<h3 class="anchored" data-anchor-id="relative-mtdna-copy-number">Relative mtDNA copy number</h3>
<p>This two-group simulation follows the requested means and variances and is loosely motivated by the heterogeneous mtDNA-copy-number/IBD literature, including causal-inference evidence in Crohn’s disease <span class="citation" data-cites="cai2023mtdnacn">(Cai, Li, Liang, Zhang, Xu, Dong, Weng, and Yu, 2023)</span>. Tissue injury can deplete mtDNA even when surviving cells activate compensatory biogenesis, so direction depends on specimen, cell mixture, timing, and normalization.</p>
<div id="cell-fig-copy-number" class="cell" data-fig-height="5" data-fig-width="7" data-execution_count="4">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb4-1">rng <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> np.random.default_rng(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20260825</span>)</span>
<span id="cb4-2">copy <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> pd.DataFrame({</span>
<span id="cb4-3">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"group"</span>: np.repeat([<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Healthy"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Inflamed / IBD"</span>], <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>),</span>
<span id="cb4-4">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_copy_number"</span>: np.r_[rng.normal(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">205</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">70</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>), rng.normal(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">95</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>)]</span>
<span id="cb4-5">})</span>
<span id="cb4-6">t_copy, p_copy <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> stats.ttest_ind(copy.loc[copy.group<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Healthy"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_copy_number"</span>], copy.loc[copy.group<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Inflamed / IBD"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_copy_number"</span>], equal_var<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb4-7"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"Welch t = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>t_copy<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">; p = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>p_copy<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.3g}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb4-8">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>))</span>
<span id="cb4-9">sns.violinplot(data<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>copy,x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"group"</span>,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_copy_number"</span>,inner<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">None</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#B9DCD8"</span>,ax<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax)</span>
<span id="cb4-10">sns.boxplot(data<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>copy,x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"group"</span>,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_copy_number"</span>,width<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.25</span>,showfliers<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"white"</span>,ax<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax)</span>
<span id="cb4-11">sns.stripplot(data<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>copy,x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"group"</span>,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_copy_number"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy,alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.7</span>,jitter<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.16</span>,size<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,ax<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax)</span>
<span id="cb4-12">ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>,ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Relative mtDNA copy number (a.u.)"</span>,title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"Welch p = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>p_copy<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2g}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb4-13">sns.despine()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-stdout">
<pre><code>Welch t = 6.50; p = 8.17e-08</code></pre>
</div>
<div class="cell-output cell-output-display">
<div id="fig-copy-number" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-copy-number-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/mitochondrial-biogenesis-ros-colitis-cancer/index_files/figure-html/fig-copy-number-output-2.png" width="613" height="436" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-copy-number-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;4: Simulated relative mtDNA copy number in healthy and inflamed colon (n = 30 per group). Points are synthetic.
</figcaption>
</figure>
</div>
</div>
</div>
<p>In this synthetic draw, inflamed tissue has lower relative mtDNA copy number (Welch p reported above), illustrating depletion despite a possible compensatory biogenesis signal.</p>
</section>
<section id="ros-and-cox3nd1-mutation-frequency" class="level3">
<h3 class="anchored" data-anchor-id="ros-and-cox3nd1-mutation-frequency">ROS and COX3/ND1 mutation frequency</h3>
<p>The next simulation encodes a positive association inspired by oxidative-adduct and mtDNA-mutation findings in UC mucosa <span class="citation" data-cites="nishikawa2005mtdna">(Nishikawa, Oshitani, Matsumoto, Nishigami, Arakawa, and Inoue, 2005)</span>.</p>
<div id="cell-fig-ros-mutation" class="cell" data-fig-height="5" data-fig-width="7" data-execution_count="5">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb6-1">ros <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> rng.uniform(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.15</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">50</span>)</span>
<span id="cb6-2">mut <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> np.clip(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.02</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.15</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>ros <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rng.normal(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.025</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">50</span>),<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">None</span>)</span>
<span id="cb6-3">fit <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> stats.linregress(ros,mut)</span>
<span id="cb6-4">ros_df <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> pd.DataFrame({<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ROS"</span>:ros,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Mutation frequency"</span>:mut})</span>
<span id="cb6-5"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"R² = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>fit<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>rvalue<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.3f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">; slope p = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>fit<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>pvalue<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.3g}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb6-6">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>))</span>
<span id="cb6-7">sns.regplot(data<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ros_df,x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ROS"</span>,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Mutation frequency"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>coral,scatter_kws<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"s"</span>:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">42</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"alpha"</span>:<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.75</span>},ax<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax)</span>
<span id="cb6-8">ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Relative ROS level (a.u.)"</span>,ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"COX3 + ND1 mutation frequency"</span>,title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"R² = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>fit<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>rvalue<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">; p = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>fit<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>pvalue<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2g}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb6-9">sns.despine()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-stdout">
<pre><code>R² = 0.738; slope p = 1.4e-15</code></pre>
</div>
<div class="cell-output cell-output-display">
<div id="fig-ros-mutation" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-ros-mutation-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/mitochondrial-biogenesis-ros-colitis-cancer/index_files/figure-html/fig-ros-mutation-output-2.png" width="606" height="458" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-ros-mutation-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;5: Simulated ROS level versus combined COX3/ND1 mutation frequency (n = 50), with ordinary least-squares fit and 95% confidence band.
</figcaption>
</figure>
</div>
</div>
</div>
<p>The simulated regression is positive, as constructed; it demonstrates how correlation and uncertainty would be displayed, not a measured dose-response.</p>
</section>
<section id="mtdna-damp-marker-across-disease-activity" class="level3">
<h3 class="anchored" data-anchor-id="mtdna-damp-marker-across-disease-activity">mtDNA DAMP marker across disease activity</h3>
<p>This simulation mirrors the direction of the active-IBD plasma/fecal mtDNA finding, with deliberately greater heterogeneity in active disease <span class="citation" data-cites="boyapati2018damp">(Boyapati, Dorward, Tamborska, Kalla, Ventham, Doherty, Whitfield, Gray, Loane, Rossi, Satsangi, and Ho, 2018)</span>.</p>
<div id="cell-fig-damp-severity" class="cell" data-fig-height="5" data-fig-width="8" data-execution_count="6">
<details class="code-fold">
<summary>Show reproducible Python code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb8-1">groups <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Non-IBD"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Mild / inactive IBD"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Active IBD"</span>]</span>
<span id="cb8-2">damp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> pd.DataFrame({<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"group"</span>:np.repeat(groups,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">24</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_DAMP"</span>:np.r_[rng.normal(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">24</span>),rng.normal(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">31</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">24</span>),rng.normal(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">62</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">24</span>)]})</span>
<span id="cb8-3">samples<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[damp.loc[damp.group<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span>g,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_DAMP"</span>] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> g <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> groups]</span>
<span id="cb8-4">f_damp,p_damp<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>stats.f_oneway(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>samples)</span>
<span id="cb8-5"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"One-way ANOVA F = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>f_damp<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2f}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">; p = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>p_damp<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.3g}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb8-6">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>))</span>
<span id="cb8-7">sns.boxplot(data<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>damp,x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"group"</span>,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_DAMP"</span>,hue<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"group"</span>,palette<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#AFC5D5"</span>,gold,coral],legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>,showfliers<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>,ax<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax)</span>
<span id="cb8-8">sns.stripplot(data<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>damp,x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"group"</span>,y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA_DAMP"</span>,color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>navy,alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.6</span>,jitter<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.18</span>,size<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>,ax<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax)</span>
<span id="cb8-9">ax.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span>(xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>,ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"mtDNA DAMP marker (a.u.)"</span>,title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"One-way ANOVA p = </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>p_damp<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:.2g}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb8-10">sns.despine()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-stdout">
<pre><code>One-way ANOVA F = 92.22; p = 3.21e-20</code></pre>
</div>
<div class="cell-output cell-output-display">
<div id="fig-damp-severity" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-damp-severity-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://sandrisper-rgb.github.io/methylation/posts/mitochondrial-biogenesis-ros-colitis-cancer/index_files/figure-html/fig-damp-severity-output-2.png" width="675" height="436" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-damp-severity-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;6: Simulated mtDNA DAMP marker across non-IBD, mild/inactive IBD, and active IBD groups (n = 24 each).
</figcaption>
</figure>
</div>
</div>
</div>
<p>The synthetic group difference increases with activity and variance, matching the intended illustration rather than estimating a clinical threshold.</p>
</section>
</section>
<section id="emerging-methods-em-seq-as-a-future-tool" class="level2">
<h2 class="anchored" data-anchor-id="emerging-methods-em-seq-as-a-future-tool">Emerging methods: EM-seq as a future tool</h2>
<p>Enzymatic methyl-sequencing (EM-seq) measures cytosine methylation; it is not a mutation assay and therefore is not a direct extension of COX3/ND1 mutation-biomarker studies. Traditional bisulfite conversion is harsh, fragments DNA, and can bias recovery and mapping—problems that are particularly relevant to low-input, low-methylation mtDNA. EM-seq uses milder enzymatic conversion and preserves more usable molecules <span class="citation" data-cites="vaisvila2021emseq">(<span class="nocase">Vaisvila, Ponnaluri, Sun, and others</span>, 2021)</span>. Targeted plasma cfDNA EM-seq has already supported an HCC classifier in 596 samples, based on nuclear differentially methylated CpGs <span class="citation" data-cites="guo2023hcc">(Guo, Zheng, Li, Li, Xiao, Zheng, Zhu, Xu, He, Zhang, Chen, Qiu, Jiang, Liu, and Chen, 2023)</span>. Applying it specifically to mitochondrial methylation in plasma from colitis or CRC is promising but forward-looking: to our knowledge, no published study has yet established that application.</p>
</section>
<section id="biomarkers-and-methods-at-a-glance" class="level2">
<h2 class="anchored" data-anchor-id="biomarkers-and-methods-at-a-glance">Biomarkers and methods at a glance</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>Study</th>
<th>Focus</th>
<th>Methods &amp; data</th>
<th>Key biomarker</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Nishikawa et al. <span class="citation" data-cites="nishikawa2005mtdna">(Nishikawa, Oshitani, Matsumoto, Nishigami, Arakawa, and Inoue, 2005)</span></td>
<td>mtDNA mutation accumulation in UC-associated cancer</td>
<td>Mucosal biopsy sequencing + 8-OHdG oxidative stress assay</td>
<td>8-OHdG, mtDNA mutation frequency</td>
</tr>
<tr class="even">
<td>Sui et al.&nbsp;(MitoChip study) <span class="citation" data-cites="sui2006mitochip">(Sui, Zhou, Wang, Canto, Lee, Eshleman, Montgomery, Sidransky, Califano, and Maitra, 2006)</span></td>
<td>mtDNA mutations in GI preneoplasia incl.&nbsp;colitis-dysplasia</td>
<td>Whole mitochondrial genome microarray sequencing (MitoChip) on preneoplastic tissue vs.&nbsp;matched normal</td>
<td>Somatic mtDNA sequence alterations</td>
</tr>
<tr class="odd">
<td>Baker et al., <em>Mol Cancer Res</em> 2019 <span class="citation" data-cites="baker2019mtdna">(Baker, Nachmanson, Kumar, Emond, Ussakli, Brentnall, Kennedy, and Risques, 2019)</span></td>
<td>mtDNA mutation dynamics from UC to cancer</td>
<td>Duplex Sequencing (ultra-accurate NGS) on 46 colon biopsies across dysplastic stages</td>
<td>Clonal/subclonal mtDNA mutation burden</td>
</tr>
<tr class="even">
<td>Boyapati et al., <em>Inflamm Bowel Dis</em> 2018 <span class="citation" data-cites="boyapati2018damp">(Boyapati, Dorward, Tamborska, Kalla, Ventham, Doherty, Whitfield, Gray, Loane, Rossi, Satsangi, and Ho, 2018)</span></td>
<td>mtDNA as a released inflammatory DAMP in active IBD</td>
<td>Fecal/plasma mtDNA quantification, formylpeptide detection, TLR9+ cell counts</td>
<td>Circulating/fecal mtDNA + TLR9 expression</td>
</tr>
<tr class="odd">
<td>Xu et al., <em>Bosn J Basic Med Sci</em> 2021 <span class="citation" data-cites="xu2021mtnd1">(Xu, Zhou, Yuan, Su, Li, Lu, Zhang, Cai, and Han, 2021)</span></td>
<td>Circulating MT-ND1 as a CRC biomarker</td>
<td>Droplet digital PCR on plasma cfDNA, variant + copy number analysis</td>
<td>Plasma cfDNA MT-ND1 copy number &amp; variants</td>
</tr>
<tr class="even">
<td>Cai et al., <em>Sci Rep</em> 2023 <span class="citation" data-cites="cai2023mtdnacn">(Cai, Li, Liang, Zhang, Xu, Dong, Weng, and Yu, 2023)</span></td>
<td>mtDNA copy number and IBD risk</td>
<td>Mendelian randomization (MR-Egger, IVW, weighted median) meta-analysis</td>
<td>Genetically predicted mtDNA copy number</td>
</tr>
<tr class="odd">
<td>Schneider et al., <em>Mediators Inflamm</em> 2022 <span class="citation" data-cites="schneider2022oxphos">(Schneider, Özsoy, Zimmermann, Brunner, Feichtinger, Mayr, Kofler, Neureiter, Klieser, Aigner, Schütz, Stummer, Sperl, and Weghuber, 2022)</span></td>
<td>Direct OXPHOS protein and mitochondrial mass changes in IBD tissue</td>
<td>Immunohistochemistry for all 5 OXPHOS complexes + VDAC1 on 286 biopsies from 124 subjects (CD, UC, controls)</td>
<td>OXPHOS complex expression + VDAC1 (mitochondrial mass)</td>
</tr>
<tr class="even">
<td>Targeted EM-seq/HCC study, 2023 <span class="citation" data-cites="guo2023hcc">(Guo, Zheng, Li, Li, Xiao, Zheng, Zhu, Xu, He, Zhang, Chen, Qiu, Jiang, Liu, and Chen, 2023)</span></td>
<td>Plasma cfDNA methylation detection via enzymatic conversion (methodological reference, not colitis/CRC-specific)</td>
<td>Targeted EM-seq + capture on 596 plasma samples, methylation-based classifier</td>
<td>Panel of differentially methylated CpGs (nuclear, not mtDNA)</td>
</tr>
</tbody>
</table>
<section id="references" class="level4">




</section>
</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body">
<div id="ref-cherry2015biogenesis" class="csl-entry">
Anne D. Cherry and Claude A. Piantadosi. (2015). Regulation of mitochondrial biogenesis and its intersection with inflammatory responses. <em>Antioxidants &amp; Redox Signaling</em>. <a href="https://doi.org/10.1089/ars.2014.6200">https://doi.org/10.1089/ars.2014.6200</a>.
</div>
<div id="ref-cunningham2016pgc1a" class="csl-entry">
Katie E. Cunningham, Gabriel Vincent, Chhinder P. Sodhi, Elizabeth A. Novak, S. Ranganathan, Christine E. Egan, Donna B. Stolz, Martha B. Rogers, Brian Firek, Michael J. Morowitz, George K. Gittes, Brian S. Zuckerbraun, David J. Hackam, and Kevin P. Mollen. (2016). Peroxisome proliferator-activated receptor-<span><img src="https://latex.codecogs.com/png.latex?%5Cgamma"></span> coactivator 1-<span><img src="https://latex.codecogs.com/png.latex?%5Calpha"></span> (PGC1<span><img src="https://latex.codecogs.com/png.latex?%5Calpha"></span>) protects against experimental murine colitis. <em>Journal of Biological Chemistry</em>. <a href="https://doi.org/10.1074/jbc.M115.688812">https://doi.org/10.1074/jbc.M115.688812</a>.
</div>
<div id="ref-nishikawa2005mtdna" class="csl-entry">
Masanori Nishikawa, Nobuhide Oshitani, Tetsuya Matsumoto, Takahiro Nishigami, Tetsuo Arakawa, and Masayasu Inoue. (2005). Accumulation of mitochondrial DNA mutation with colorectal carcinogenesis in ulcerative colitis. <em>British Journal of Cancer</em>. <a href="https://doi.org/10.1038/sj.bjc.6602664">https://doi.org/10.1038/sj.bjc.6602664</a>.
</div>
<div id="ref-turrens2003ros" class="csl-entry">
Julio F. Turrens. (2003). Mitochondrial formation of reactive oxygen species. <em>The Journal of Physiology</em>. <a href="https://doi.org/10.1113/jphysiol.2003.049478">https://doi.org/10.1113/jphysiol.2003.049478</a>.
</div>
<div id="ref-boyapati2018damp" class="csl-entry">
Ray K. Boyapati, David A. Dorward, Arina Tamborska, Rahul Kalla, Nicholas T. Ventham, Michael K. Doherty, Phil D. Whitfield, Mohini Gray, Jason Loane, Adriano G. Rossi, Jack Satsangi, and Gwo-Tzer Ho. (2018). Mitochondrial DNA is a pro-inflammatory damage-associated molecular pattern released during active IBD. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1093/ibd/izy095">https://doi.org/10.1093/ibd/izy095</a>.
</div>
<div id="ref-schneider2022oxphos" class="csl-entry">
Anna M. Schneider, Mihriban Özsoy, Franz A. Zimmermann, Susanne M. Brunner, René G. Feichtinger, Johannes A. Mayr, Barbara Kofler, Daniel Neureiter, Eckhard Klieser, Elmar Aigner, Sebastian Schütz, Nathalie Stummer, Wolfgang Sperl, and Daniel Weghuber. (2022). Expression of oxidative phosphorylation complexes and mitochondrial mass in pediatric and adult inflammatory bowel disease. <em>Mediators of Inflammation</em>. <a href="https://doi.org/10.1155/2022/9151169">https://doi.org/10.1155/2022/9151169</a>.
</div>
<div id="ref-santhanam2012etc" class="csl-entry">
Srikanth Santhanam, Sankar Rajamanickam, Aditya Motamarry, B. S. Ramakrishna, J. G. Amirtharaj, A. Ramachandran, Anna Pulimood, and Anuradha Venkatraman. (2012). Mitochondrial electron transport chain complex dysfunction in the colonic mucosa in ulcerative colitis. <em>Inflammatory Bowel Diseases</em>. <a href="https://doi.org/10.1002/ibd.22926">https://doi.org/10.1002/ibd.22926</a>.
</div>
<div id="ref-sui2006mitochip" class="csl-entry">
Guoping Sui, Shaoyu Zhou, Jean Wang, Marcia Canto, Edward E. Lee, James R. Eshleman, Elizabeth A. Montgomery, David Sidransky, Joseph A. Califano, and Anirban Maitra. (2006). Mitochondrial DNA mutations in preneoplastic lesions of the gastrointestinal tract: A biomarker for the early detection of cancer. <em>Molecular Cancer</em>. <a href="https://doi.org/10.1186/1476-4598-5-73">https://doi.org/10.1186/1476-4598-5-73</a>.
</div>
<div id="ref-xu2021mtnd1" class="csl-entry">
Yong Xu, Jing Zhou, Qing Yuan, Jin Su, Qiang Li, Xin Lu, Lin Zhang, Zhe Cai, and Jing Han. (2021). Quantitative detection of circulating MT-ND1 as a potential biomarker for colorectal cancer. <em>Bosnian Journal of Basic Medical Sciences</em>. <a href="https://doi.org/10.17305/bjbms.2021.5576">https://doi.org/10.17305/bjbms.2021.5576</a>.
</div>
<div id="ref-legge2024crcmetabolism" class="csl-entry">
Danny N. Legge, Tracey J. Collard, Ewelina Stanko, Ashley J. Hoskin, Amy K. Holt, Caroline J. Bull, Madhu Kollareddy, Jake Bellamy, Sarah Groves, Eric H. Ma, Emma Hazelwood, David Qualtrough, Borko Amulic, Karim Malik, Ann C. Williams, Nicholas Jones, and Emma E. Vincent. (2024). Identifying targetable metabolic dependencies across colorectal cancer progression. <em>Molecular Metabolism</em>. <a href="https://doi.org/10.1016/j.molmet.2024.102037">https://doi.org/10.1016/j.molmet.2024.102037</a>.
</div>
<div id="ref-denise2015oxphos" class="csl-entry">
Corti Denise, Paolo Paoli, Maura Calvani, Maria Letizia Taddei, Elisa Giannoni, Scott Kopetz, Syed Mohammad Ali Kazmi, Maria Pia Morelli, Piergiorgio Pettazzoni, Elena Sacco, Anna Caselli, Marco Vanoni, Matteo Landriscina, Paolo Cirri, and Paola Chiarugi. (2015). 5-fluorouracil resistant colon cancer cells are addicted to OXPHOS to survive and enhance stem-like traits. <em>Oncotarget</em>. <a href="https://doi.org/10.18632/oncotarget.5991">https://doi.org/10.18632/oncotarget.5991</a>.
</div>
<div id="ref-baker2019mtdna" class="csl-entry">
Kelsey T. Baker, Deborah Nachmanson, Sumeet Kumar, Mary J. Emond, Cemal Ussakli, Teresa A. Brentnall, Scott R. Kennedy, and Rosa A. Risques. (2019). Mitochondrial DNA mutations are associated with ulcerative colitis preneoplasia but tend to be negatively selected in cancer. <em>Molecular Cancer Research</em>. <a href="https://doi.org/10.1158/1541-7786.MCR-18-0520">https://doi.org/10.1158/1541-7786.MCR-18-0520</a>.
</div>
<div id="ref-cai2023mtdnacn" class="csl-entry">
Xianlei Cai, Xueying Li, Chao Liang, Miaozun Zhang, Yuan Xu, Zhebin Dong, Yihui Weng, and Weiming Yu. (2023). Mitochondrial DNA copy number is associated with crohn’s disease: A comprehensive mendelian randomization analysis. <em>Scientific Reports</em>. <a href="https://doi.org/10.1038/s41598-023-48175-5">https://doi.org/10.1038/s41598-023-48175-5</a>.
</div>
<div id="ref-vaisvila2021emseq" class="csl-entry">
<span class="nocase">Romualdas Vaisvila, Vamsi K. C. Ponnaluri, Zhe Sun, and others</span>. (2021). Enzymatic methyl sequencing detects DNA methylation at single-base resolution from picograms of DNA. <em>Genome Research</em>. <a href="https://doi.org/10.1101/gr.266551.120">https://doi.org/10.1101/gr.266551.120</a>.
</div>
<div id="ref-guo2023hcc" class="csl-entry">
Ping Guo, Hailing Zheng, Yihan Li, Yuntong Li, Yue Xiao, Jin Zheng, Xingqiang Zhu, Huan Xu, Zhi He, Qian Zhang, Jinchun Chen, Mingshan Qiu, Min Jiang, Pingguo Liu, and Hongliang Chen. (2023). Hepatocellular carcinoma detection via targeted enzymatic methyl sequencing of plasma cell-free DNA. <em>Clinical Epigenetics</em>. <a href="https://doi.org/10.1186/s13148-022-01420-6">https://doi.org/10.1186/s13148-022-01420-6</a>.
</div>
</div></section></div> ]]></description>
  <category>mitochondria</category>
  <category>colitis</category>
  <category>colorectal cancer</category>
  <category>oxidative stress</category>
  <category>biomarkers</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/mitochondrial-biogenesis-ros-colitis-cancer/</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Protocol 2: blood processing into plasma and serum aliquots</title>
  <dc:creator>Methylation &amp; Colitis team</dc:creator>
  <link>https://sandrisper-rgb.github.io/methylation/posts/protocol-blood-processing.html</link>
  <description><![CDATA[ 





<section id="purpose" class="level2">
<h2 class="anchored" data-anchor-id="purpose">Purpose</h2>
<p>One blood collection produces two distinct analytical materials. <strong>Plasma</strong> supplies cell-free DNA for EM-seq and fragmentomics; <strong>serum</strong> supplies sIgA for ELISA. Tube type, clotting, centrifugation, transfer, delay, temperature, freeze–thaw history, aliquot volume, and visible hemolysis belong in the data record.</p>
<div class="cell" data-layout-align="default">
<div class="cell-output-display">
<div>
<p></p><figure class="figure"><p></p>
<div>
<pre class="mermaid mermaid-js">flowchart LR
  B[Blood collection] --&gt; P[Plasma aliquots]
  B --&gt; S[Serum aliquots]
  P --&gt; C[cfDNA extraction]
  S --&gt; E[sIgA ELISA]
</pre>
</div>
<p></p></figure><p></p>
</div>
</div>
</div>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>Fraction</th>
<th>Immediate output</th>
<th>Later data</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>plasma</td>
<td>labeled, frozen aliquots with processing metadata</td>
<td>cfDNA yield, methylation counts, plasma fragment features</td>
</tr>
<tr class="even">
<td>serum</td>
<td>labeled, frozen aliquots with processing metadata</td>
<td>replicate OD and calibrated sIgA concentration</td>
</tr>
</tbody>
</table>
</section>
<section id="qc-gate" class="level2">
<h2 class="anchored" data-anchor-id="qc-gate">QC gate</h2>
<p>Processing must prevent cellular carryover into plasma: leukocyte lysis can swamp rare colon-derived cfDNA and distort fragment sizes. Serum conditions must be consistent enough that plate differences are not proxies for clinical group.</p>
<div class="callout callout-style-default callout-important callout-titled" title="Plasma is not serum">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Important</span>Plasma is not serum
</div>
</div>
<div class="callout-body-container callout-body">
<p>The fractions are not interchangeable. Plasma cfDNA is sequenced; serum sIgA is measured optically. They meet only after independent QC.</p>
</div>
</div>
<p><a href="../posts/protocol-cohort-and-consent.html">Previous: cohort manifest →</a> · <a href="../posts/protocol-panamax-cfdna.html">Next: PANAMAX cfDNA extraction →</a> · <a href="../posts/protocol-siga-elisa.html">sIgA branch →</a></p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>protocol</category>
  <category>blood processing</category>
  <category>plasma</category>
  <category>serum</category>
  <guid>https://sandrisper-rgb.github.io/methylation/posts/protocol-blood-processing.html</guid>
  <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://sandrisper-rgb.github.io/methylation/media/illustrations/three-data-streams.png" medium="image" type="image/png" height="81" width="144"/>
</item>
</channel>
</rss>
