<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Meta-Science on Hunter Heidenreich | Senior AI Research Scientist</title><link>https://hunterheidenreich.com/tags/meta-science/</link><description>Recent content in Meta-Science on Hunter Heidenreich | Senior AI Research Scientist</description><image><title>Hunter Heidenreich | Senior AI Research Scientist</title><url>https://hunterheidenreich.com/img/avatar.webp</url><link>https://hunterheidenreich.com/img/avatar.webp</link></image><generator>Hugo -- 0.163.3</generator><language>en-US</language><copyright>2026 Hunter Heidenreich</copyright><lastBuildDate>Sat, 22 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hunterheidenreich.com/tags/meta-science/index.xml" rel="self" type="application/rss+xml"/><item><title>The Most Connected State Pair Is a PDF Setting</title><link>https://hunterheidenreich.com/posts/most-connected-pair-of-states/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid>https://hunterheidenreich.com/posts/most-connected-pair-of-states/</guid><description>A CC0 corpus of US state legislation got its text-reuse cutoff from a parenthetical example. Classifying all 2,968,117 pairs above it, 26.46% are PDF artifacts.</description><content:encoded><![CDATA[<p>State legislatures copy each other. They copy from each other&rsquo;s bills, and they
copy from the interest groups that write model legislation and shop it around
statehouses. This is not a fringe phenomenon nor is it a partisan one: when
somebody <a href="https://www.kdd.org/kdd2016/papers/files/adf0831-burgessA.pdf">built a tool to measure
it</a>, a
conservative umbrella group and a liberal one had almost
identical hit rates (~9%). It is simply how a lot of policy travels in
America.</p>
<p>Measuring it requires finding bills that share text. Political scientists do this to
estimate how policy diffuses between states; journalists have done it to
<a href="https://publicintegrity.org/politics/state-politics/copy-paste-legislate/how-we-uncovered-10000-times-lawmakers-introduced-copycat-model-bills-and-why-it-matters/">identify model bills moving between
statehouses</a>.
A method everyone in this lineage uses is the one biologists use to align gene
sequences (<a href="https://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm">Smith-Waterman local
alignment</a>):
take two bills, find the longest run of matching words, score it for similarity.</p>
<p>Because this is unsupervised, you&rsquo;ll need a cutoff.
Score everything against everything and you have hundreds
of millions of bill pairs with a number attached; somewhere on that scale is the
line between coincidence and copying. <strong>Where you put that line is where every
downstream finding comes from</strong>, because every count of how much two states share
is computed over the pairs above it.</p>
<p>Here is the scale, and here is a line:</p>















<figure class="post-figure center ">
    <img src="/img/most-connected-pair-of-states/score-scale.svg"
         alt="A bar chart of all 228 million scored bill pairs bucketed by alignment score, on a logarithmic count axis, with a dashed vertical rule marking the cutoff of 50. The two buckets below the rule hold 169 million and 53 million pairs; everything above it is orders of magnitude smaller."
         title="A bar chart of all 228 million scored bill pairs bucketed by alignment score, on a logarithmic count axis, with a dashed vertical rule marking the cutoff of 50. The two buckets below the rule hold 169 million and 53 million pairs; everything above it is orders of magnitude smaller."
         
         
         loading="lazy"
         class="post-image">
    
    <figcaption class="post-caption">Almost everything scores near zero, which is what you would expect. The interesting population is the thin tail to the right.</figcaption>
    
</figure>

<p>The line sits on the steep slope rather than out in the quiet part of the
distribution, so moving it a little moves the population a lot: 53 million pairs
sit in the bucket immediately below it.</p>
<h2 id="data-and-a-threshold">Data and a Threshold</h2>
<p>This data is from a <a href="https://doi.org/10.7910/DVN/CZ25GF">CC0 corpus of state bills</a>.
<a href="https://doi.org/10.1111/psj.12257">The accompanying paper&rsquo;s</a> conclusion advises future
scholars to work in the upper quantiles, and says that for searching out bill pairs &ldquo;this can be done
through thresholding on high alignment scores <strong>(e.g., 50+)</strong> to indicate the
presence of highly similar policy proposals in legislation.&rdquo;
That said, they acknowledge that such thresholding &ldquo;may discard informative variation,&rdquo; and assert that
high-score thresholding &ldquo;would focus the analysis on bill pairs
that reliably contain very similar policy enactments, and pose little risk of a
false positive.&rdquo;</p>
<p>That is a balanced statement about high-score thresholding in
general, not necessarily a recommendation of 50.
Read strictly, that advice is about <strong>searching out</strong> bill pairs: producing
candidates worth a human&rsquo;s attention. Anybody who opens a candidate and finds a
PostScript block will throw it away, which is a fair defence of the sentence as
written.</p>
<p>Unfortunately, it stops working at scale. The cutoff selects 2,968,117 pairs, which is not a set
anybody reads, and the point of a scored corpus is that the score stands in for
the reading. So the question is what the cutoff hands you when nobody looks.</p>
<p>I classified the aligned text of every one of those <strong>2,968,117 pairs</strong>.
<strong>785,330 of them, 26.46%, are not legislative text at all.</strong></p>
<h2 id="what-is-actually-up-there">What Is Actually Up There</h2>
<p>They are page furniture: the line numbers printed down a page margin, the rule
that separates a bill&rsquo;s summary from its body, and a block of PDF printer
settings that was never meant to be read by anyone. Text extraction turned them
into words. Two bills produced by the same software then &ldquo;share&rdquo; those words, and
the aligner scores it like any other match.</p>















<figure class="post-figure center ">
    <img src="/img/most-connected-pair-of-states/score-distribution.svg"
         alt="The same bar chart of all 228 million scored bill pairs by alignment score, now with each bar split into legislative text in blue and page furniture in orange. The buckets below the cutoff are almost entirely blue. Every bucket above it carries a substantial orange segment, and the 250 to 499 bucket is 75 percent orange."
         title="The same bar chart of all 228 million scored bill pairs by alignment score, now with each bar split into legislative text in blue and page furniture in orange. The buckets below the cutoff are almost entirely blue. Every bucket above it carries a substantial orange segment, and the 250 to 499 bucket is 75 percent orange."
         
         
         loading="lazy"
         class="post-image">
    
    <figcaption class="post-caption"><strong>Below the line, 0.21% of pairs are page furniture. Above it, 26.46%.</strong> The cutoff does not merely fail to screen the artifact out. It enriches for it by a factor of <strong>127</strong>, because page furniture is precisely what the instrument rewards: a long, exact, contiguous match.</figcaption>
    
</figure>

<p>That is the part I did not expect. The artifact is not sprinkled through the
corpus and then swept up incidentally by the cutoff. <strong>It is concentrated almost
entirely in the region the cutoff selects.</strong> A block of printer settings shared
between two documents is the most perfect match in the whole corpus.</p>
<h2 id="it-manufactures-edges">It Manufactures Edges</h2>
<p>If the artifact were spread evenly it would inflate a denominator and leave the
ranking of state pairs alone. It is not spread evenly. A quirk of drafting or
scanning software belongs to a <strong>jurisdiction</strong>, so the damage lands on the pairs
that jurisdiction belongs to.</p>
<blockquote>
<p><strong>Ranked by how many above-threshold pairs they share, the most connected pair
of states in this data is Arizona and Nevada, by a factor of nine over the
runner-up. 99.9% of those pairs are two PDFs agreeing about their printer
settings.</strong></p>
</blockquote>
<table>
	<thead>
			<tr>
					<th style="text-align: right">rank</th>
					<th>dyad</th>
					<th style="text-align: right">pairs</th>
					<th style="text-align: right">artifact share</th>
					<th style="text-align: right">rank after removal</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: right">1</td>
					<td><code>az-nv</code></td>
					<td style="text-align: right">460,447</td>
					<td style="text-align: right"><strong>99.9%</strong></td>
					<td style="text-align: right"><strong>754</strong></td>
			</tr>
			<tr>
					<td style="text-align: right">2</td>
					<td><code>hi-md</code></td>
					<td style="text-align: right">48,994</td>
					<td style="text-align: right"><strong>94.5%</strong></td>
					<td style="text-align: right"><strong>201</strong></td>
			</tr>
			<tr>
					<td style="text-align: right">3</td>
					<td><code>hi-ks</code></td>
					<td style="text-align: right">47,788</td>
					<td style="text-align: right"><strong>96.0%</strong></td>
					<td style="text-align: right"><strong>302</strong></td>
			</tr>
			<tr>
					<td style="text-align: right">4</td>
					<td><code>il-ms</code></td>
					<td style="text-align: right">43,295</td>
					<td style="text-align: right">0.0%</td>
					<td style="text-align: right">1</td>
			</tr>
			<tr>
					<td style="text-align: right">5</td>
					<td><code>nj-ny</code></td>
					<td style="text-align: right">41,433</td>
					<td style="text-align: right">0.02%</td>
					<td style="text-align: right">2</td>
			</tr>
			<tr>
					<td style="text-align: right">6</td>
					<td><code>hi-wi</code></td>
					<td style="text-align: right">37,767</td>
					<td style="text-align: right"><strong>98.8%</strong></td>
					<td style="text-align: right"><strong>856</strong></td>
			</tr>
	</tbody>
</table>
<p>Strip the artifacts and Arizona-Nevada falls from rank 1 to rank 754 of 1,247.
Nine of the top twenty dyads leave the top 100.</p>
<p><strong>Two caveats on that table:</strong></p>
<ul>
<li>Ranking by raw pair count rewards states with many
bills and good text coverage, and coverage in this corpus varies by 100
percentage points across states. This means the ranking is volume-sensitive before any
artifact enters it.</li>
<li>The removal column only subtracts,
so it cannot show a dyad crossing <em>into</em> the top 100 from underneath.</li>
</ul>
<p><strong>And one thing I am not claiming.</strong> This ranking is mine. The paper&rsquo;s own dyadic
validation regresses an aggregate alignment score on diffusion ties across 1,225
state pairs; it does not rank dyads by above-threshold count, and I have not
re-estimated any published result. I would expect the contamination to survive a
change of statistic, since 460,447 pairs at roughly 440 apiece is a great deal of
mass in any sum over <code>az-nv</code>, but I have not run that version and it is not what
the census shows.</p>
<p>What the census shows is narrower and needs no model: threshold this deposit at
a number its own paper offers, and the highest-degree edge in the resulting
network is an extraction artifact.</p>
<h2 id="where-it-comes-from">Where It Comes From</h2>
<p>The blocks are not spread across the corpus. Scanning all 571,554 bills finds
them in 3,551 Arizona bills, 3,178 Nevada bills, one Delaware bill, and nowhere
else. So I fetched the original PDFs from both legislatures and re-extracted
them.</p>
<p><strong>These PDFs carry an embedded file attachment holding the Acrobat Distiller job
options used to produce them</strong>, Flate-compressed inside a <code>/Type /EmbeddedFile</code>
stream. For one Arizona bill, decompressing that attachment gives 14,581 bytes
against the 14,580 characters sitting in the corpus for that same bill. Opening
<code>&lt;&lt;</code>, closing <code>&gt;&gt; setpagedevice</code>, indentation and all 220 newlines included. The
two are identical once the attachment&rsquo;s trailing newline comes off.</p>
<p><strong>The corpus&rsquo;s text extraction emitted PDF file attachments as document text.</strong>
Not a font problem, not an encoding problem, and not a property of the source
documents. <a href="https://poppler.freedesktop.org/"><code>pdftotext</code></a> walks page content
and ignores attachments, which is why
it reproduces the block <strong>0 times in 92</strong> from documents that demonstrably
contain it.</p>
<p>Two details make this worse than a scoring problem.
Smith-Waterman is not a cheap algorithm to run.
So to reduce the number of bills one runs this alignment scoring for,
resesarchers first perform a coarse retrieval stage to pre-filter comparisons
to those with the highest similarity as determined by bag-of-words methods (like BM-25).
The block also <strong>wins the
retrieval</strong>: a bill carrying one spends 15.00% of its
candidate slots on other bills carrying one, against a 1.36% base rate, and a
candidate that retrieval never returned was never scored at all.</p>
<p>The paper anticipated the general worry. Bills are compared against the 500
nearest neighbours Elasticsearch returns, and the authors checked that cap by
re-running at 1,000, concluding it introduces no selection bias &ldquo;because the set
of bills that result in modest or large text reuse scores is always smaller than
500.&rdquo; That reasoning holds when the top 500 is filled by candidates competing on
legislative language. <strong>What the crowding number shows is a population where the
premise is doubtful</strong>: across the 6,700 queries carrying a distiller block, an
elevenfold enrichment means a large share of those slots is won on a string that
is not language at all. I have not re-run the authors&rsquo; check, so this is a reason
to think it deserves re-running on the artifact-carrying subset, not a finding
that it fails.</p>
<p>And <strong>the bias cannot be signed</strong>. A distiller block is appended after the page
text, so excising it can only lower a score. A line-number run sits <em>between</em> two
passages of prose, so excising it joins them and the score <strong>rises</strong>, by up to 63
points.
The artifact invents reuse in the pairs it creates and conceals reuse in the
pairs it interrupts.</p>
<h2 id="the-problem-no-cleaning-fixes">The Problem No Cleaning Fixes</h2>
<p>Everything above is a defect. A better extractor and a screening pass fix all of
it, and anything built on stripped text is recoverable.</p>
<p>The pairs that survive every screen have a separate problem, and this one is a
property of the measure rather than of this corpus. It survives perfect text.</p>
<p><strong>Two states implementing the same federal statute share text word for word, and
neither one copied the other.</strong> The alignment is exact. The reuse is real. It
just does not run between the two states in the edge.</p>
<h3 id="who-did-the-reading">Who Did the &ldquo;Reading&rdquo;</h3>
<p>I tried a language model first.
<a href="https://huggingface.co/MiniMaxAI/MiniMax-M3">MiniMax M3</a> labelled every prose
pair in my
sample, three times over, and on the 477 where all three passes parsed, its
verdicts flipped on <strong>33.5%</strong>.</p>
<p>Where it broke is the useful part. The instability was worst exactly at the bar,
around 57% stable in the 50 to 99 band against 100% above 500, which left two
readings the run could not separate: either the model was unreliable on hard
cases, or pairs near the bar are genuinely undecidable from the text.</p>
<p>So I read 80 of the pairs again on a blinded page, stratified toward the 50 to
99 band where the instability lived, with score, bill ids and jurisdictions
hidden. And so did Claude Opus, on the identical page.
Whereas M3 had been the arms-length instrument, prompted and run
in batch, Claude was the model I had been working the audit with in Claude Code.
It knew my hypotheses and had already seen some of these spans.</p>
<p><strong>The agreement number below is not an inter-rater statistic.</strong>
It is a person and a model that shared a hypothesis, labelling the same
page. I am reporting it because the structure of the disagreement turned out to
matter more than its size, and because the answer to the question the M3 run
could not settle came out of it: agreement held at <strong>77.4%</strong> in the 50 to 99
band, roughly flat where M3&rsquo;s own stability had collapsed. Pairs near the bar are
decidable. The unreliable instrument was the model that kept changing its mind.</p>
<table>
	<thead>
			<tr>
					<th>what the pair turned out to be</th>
					<th style="text-align: right">pairs</th>
					<th></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>shared source by <strong>either</strong> standard</td>
					<td style="text-align: right">52</td>
					<td>65%</td>
			</tr>
			<tr>
					<td>generic formula for <strong>both</strong></td>
					<td style="text-align: right">9</td>
					<td>11%</td>
			</tr>
			<tr>
					<td>federal or uniform origin, <strong>named by Claude Opus</strong></td>
					<td style="text-align: right">18</td>
					<td><strong>23%</strong></td>
			</tr>
			<tr>
					<td>I could not tell, Claude called it shared source</td>
					<td style="text-align: right">1</td>
					<td>1%</td>
			</tr>
	</tbody>
</table>
<p><strong>No reading makes this class mostly boilerplate.</strong> The stricter reading still
puts two thirds of it on unambiguous shared source. The 11% both call generic
is what you would guess: enacting clauses, appropriation formulae, quorum
boilerplate, bill titles on unrelated subjects. The pairs that survive the
artifact screen are, in the main, real reuse.</p>
<p>The third row is the finding and the weakest row in the table.
Every pair I called shared source, Claude did too. The
split is not about where a line was drawn. Instead, the model could name an upstream
source and I could not.
Text you cannot place reasonably looks like it might be generic.</p>
<h3 id="the-names-are-the-result-not-the-labels">The Names Are the Result, Not the Labels</h3>
<p>A name is checkable in a way a label is not.</p>
<p>Claude named 37 upstream sources across the 80 pairs. <strong>I checked eight of them
against published law</strong>, choosing the ones the finding leans on hardest:</p>
<table>
	<thead>
			<tr>
					<th></th>
					<th></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Verified verbatim</strong></td>
					<td><a href="https://www.law.cornell.edu/uscode/text/18/2510">18 U.S.C. 2510(12)</a>; FDCPA <a href="https://www.law.cornell.edu/uscode/text/15/1692k">15 U.S.C. 1692k(c)</a>; Model Penal Code 223.1(2)(c); <a href="https://www.law.cornell.edu/uscode/text/8/1611">8 U.S.C. 1611(b)</a>, including its three-clause structure; <a href="https://www.juvenilecompact.org/compact-statute/article-iii-the-interstate-commission-for-juveniles">Interstate Compact for Juveniles article III</a>, across seven state codes; <a href="https://www.uniformlaws.org/committees/community-home?CommunityKey=a5b28eee-3971-498c-bfd9-6e43118ae346">Uniform Unsworn Foreign Declarations Act</a> definitions, across five; the $500 / $5,000 portable electronics insurance penalty structure, in Delaware and Massachusetts codes, though the NAIC model number Claude named was not confirmed</td>
			</tr>
			<tr>
					<td><strong>Partial</strong></td>
					<td><a href="https://www.ecfr.gov/current/title-49/section-383.51">49 CFR 383.51</a>, confirmed as the governing rule and the right offence class, exact wording not recovered</td>
			</tr>
			<tr>
					<td><strong>Refuted</strong></td>
					<td>none</td>
			</tr>
	</tbody>
</table>
<p><strong>Seven verbatim, one partial, none refuted, and all eight sit in the disputed
column.</strong> That is the result. Text that a careful reader calls generic formula is
sometimes a named federal act reproduced word for word, and unlike every
similarity score in this corpus, that is a claim a stranger can destroy with a
search engine.</p>
<p><strong>The twenty-nine unchecked names are not evidence</strong>, and the reason is on the
record. On a control pair reading <em>this act shall be known and may be cited as
the school protection act</em>, M3 confidently named an ALEC model act, the Liberty
Preservation Act, which has nothing to do with it. A model asked to name a source
will produce a plausible one whether or not it exists. The eight are worth
something precisely because they were checked; the rest are leads.</p>
<h3 id="the-part-that-survives-a-clean-corpus">The Part That Survives a Clean Corpus</h3>
<p>A threshold on text similarity is selecting two different phenomena and cannot
tell them apart. States adopting a private model act is policy diffusion, which
is what the measure was built to find. States independently implementing the same
federal statute is mandated uniformity, which is a different causal story with the
same textual signature. The alignment is equally exact in both cases, which is
precisely why no score separates them. A higher threshold does not help. A better
aligner does not help. Cleaning the text does not help, because there is nothing
wrong with the text.</p>
<p>And the error has structure, which is what makes it bite. States differ in how
much federal law they implement and how fast, so <strong>a diffusion network built on
this measure counts federal conformity as interstate influence</strong>, and it does so
unevenly across exactly the dyads people draw conclusions from.</p>
<p><strong>None of which is news to the diffusion literature.</strong> Vertical influence,
federal mandates and common exposure are long-standing confounds in that field,
and there are methods built to handle them. The narrow claim is the one worth
making, and it is about the instrument: <strong>a text-reuse score offers no purchase
on the distinction at all</strong>, because the two cases have an identical textual
signature. Whatever a researcher does about common exposure, they have to do it
from outside this measure, and a network drawn straight from alignment scores
carries the confound with no way to see it.</p>
<p>The fix is a <strong>labelled source</strong>: to know whether copying ran between the two
jurisdictions in your edge, you have to know <em>what</em> was copied.</p>
<h3 id="how-far-that-goes-and-how-far-it-does-not">How Far That Goes, and How Far It Does Not</h3>
<p><strong>The sample is not the population.</strong> The 80 pairs were drawn to over-represent
the 50 to 99 band, so the 23% is a rate within a deliberately skewed draw and I
would not quote it as a corpus rate. Read it as context for the eight verified
names rather than as the finding.</p>
<p><strong>There is one human in this design.</strong> Me, not blind, holding the hypothesis
while labelling. Everything else in the reading pipeline was a model. What that
design can establish is bounded, and what it did establish is the checkable half:
eight names, seven exact.</p>
<p><strong>What the 80 pairs support</strong> is that the distinction exists, that it is not
rare, and that where it has been tested it holds. How large it is corpus-wide is
unmeasured, and a second human annotator who had never read this audit is the
thing that would change it. That is not a run I can do, so the
<a href="https://github.com/hunter-heidenreich/page-furniture/blob/main/observations/annotate-2026-08-06.html">blinded page</a>
and <a href="https://github.com/hunter-heidenreich/page-furniture/blob/main/results/adjudication-2026-08-22.md">both sets of labels</a>
ship with the code, and somebody else can.</p>
<h2 id="so-would-a-language-model-have-helped">So, Would a Language Model Have Helped?</h2>
<p>I came at this wanting to know whether a language model was useful for
legislative text reuse. Having spent the time, the answer is yes, and not where
I expected.</p>
<p>The contamination needed no model at all. It is a defect: a few dozen lines of
pattern matching find every class, removal is lossless because each one is
self-delimiting, and anything built on stripped text is recoverable.</p>
<p>The uniformity confound is the opposite. It is not removable at any threshold and
a better similarity score will not touch it. What would separate it is knowing
what was copied, which is a provenance question, and provenance is the kind of
question a language model is actually good at.</p>
<p>It was the one thing both models did well here. Asked to name upstream sources,
M3 produced the Uniform Controlled Substances Act, the Streamlined Sales and Use
Tax Agreement, the Uniform Vehicle Code, 18 U.S.C. 2510, and those names were
<strong>more durable than its own verdicts</strong>, agreeing across passes 77% of the time
against 66.5% for the labels. None of that batch was checked against published
law. The eight that were checked came from the blinded run and seven were exact.</p>
<p>With the condition from the section above attached, and it is not a small one:
the behaviour that produces a correct name also produces the ALEC misfire, and
nothing in the output tells you which one you are holding. Only a check does.</p>
<p>That is the whole thing in miniature:</p>
<blockquote>
<p>A similarity label is an opinion. A named source is a claim. Only the second
kind can be refuted.</p>
</blockquote>
<p>A wrong name announces itself the moment somebody checks it. A wrong similarity
score is invisible forever. The second failure mode is the one you want.</p>
<p>So the honest next artifact here is not a better detector. It is a <strong>labelled
source corpus</strong>, built by something that can propose a name and verified by
somebody who checks it.</p>
<h2 id="if-you-use-this-deposit">If You Use This Deposit</h2>
<p>Strip all three classes before thresholding. Each is self-delimiting, so removal
is exact rather than heuristic.</p>
<table>
	<thead>
			<tr>
					<th>class</th>
					<th>what to look for</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Distiller blocks</td>
					<td>self-delimiting, <code>&lt;&lt;</code> to <code>&gt;&gt; setpagedevice</code></td>
			</tr>
			<tr>
					<td>Line-number runs</td>
					<td>twelve or more consecutive <strong>bare</strong> integers</td>
			</tr>
			<tr>
					<td>Typographic rules</td>
					<td>twelve or more consecutive tokens of <code>-</code>, <code>_</code>, <code>=</code>, <code>*</code></td>
			</tr>
	</tbody>
</table>
<p>Three things that are easy to get wrong. <strong>Do not just exclude Arizona and
Nevada</strong>, because the other two classes cover more dyads than the distiller block
does. <strong>Treat Hawaii separately</strong>, because its text is OCR-damaged underneath the
artifact, that damage is what its source documents actually say, and neither
removal nor re-extraction fixes it. And <strong>before removing a run, check that it
ascends by one</strong>, because a run that ascends on every second position is a
statutory rate schedule with a counter threaded through it, and excising it
deletes enacted numbers.</p>
<p><strong>Do not trust a high threshold to be safe either.</strong> The most reassuring number
here, that the band above 500 is 99.1% clean, is an accident: the distiller blocks
stop scoring at 442 only because Arizona ran Distiller 8.2.5 and Nevada ran 6.0,
so the two job-options files agree only through their shared prefix. Two
jurisdictions on the same version would share a byte-identical 14,500-character
block, which aligns into the thousands.</p>
<h2 id="the-full-audit">The Full Audit</h2>
<p>The writeup behind all of this is a technical report: the four independent
instruments, the removal experiment and its label-blind control, the scrape-era
census that explains why the damage partitions by legislative session rather than
by state, the limitations including a cluster bootstrap that widens my own
headline interval by a factor of five, and an appendix of the four things earlier
drafts got wrong. It is at
<a href="https://github.com/hunter-heidenreich/page-furniture/blob/main/REPORT.md">REPORT.md in the page-furniture repo</a>,
alongside the screen itself and the dated results file behind every number here.</p>
<p><strong>The 80-pair adjudication is in there too.</strong> The
<a href="https://github.com/hunter-heidenreich/page-furniture/blob/main/results/adjudication-2026-08-22.md">per-pair record</a>
has every pair, both labels, the upstream act Claude named where it named one,
and which eight I checked against published law. The 29 unchecked names are
published as well, because a name nobody has checked is a lead, and I would
rather ship it as one than quietly drop it.</p>
<h2 id="attribution">Attribution</h2>
<p>The corpus was collected by <a href="https://openstates.org/">Open States</a> and assembled
by Burgess et al. It is CC0; US legislative text is uncopyrightable at origin
under <a href="https://www.law.cornell.edu/supremecourt/text/18-1150"><em>Georgia v. Public.Resource.Org</em>
(2020)</a>.</p>
<blockquote>
<p>Burgess, Matthew, Eugenia Giraudy, Julian Katz-Samuels, Joe Walsh, Derek
Willis, Lauren Haynes, and Rayid Ghani. &ldquo;The Legislative Influence Detector:
Finding Text Reuse in State Legislation.&rdquo; <em>Proceedings of the 22nd ACM SIGKDD
International Conference on Knowledge Discovery and Data Mining</em>, 57-66, 2016,
<a href="https://doi.org/10.1145/2939672.2939697">doi:10.1145/2939672.2939697</a>.</p>
</blockquote>
<p>The deposit measured here is Linder, Fridolin J., &ldquo;Replication Data for:
Measuring Policy Similarity Through Bill Text Reuse&rdquo;, Harvard Dataverse,
<a href="https://doi.org/10.7910/DVN/CZ25GF">doi:10.7910/DVN/CZ25GF</a>, accompanying
Linder, Desmarais, Burgess and Giraudy, &ldquo;Text as Policy: Measuring Policy
Similarity through Bill Text Reuse&rdquo;, <em>Policy Studies Journal</em>,
<a href="https://doi.org/10.1111/psj.12257">doi:10.1111/psj.12257</a>. The prior art is
Citron, Daniel T. and Paul Ginsparg, &ldquo;Patterns of text reuse in a scientific
corpus&rdquo;, <em>PNAS</em> 112(1):25-30, 2015,
<a href="https://doi.org/10.1073/pnas.1415135111">doi:10.1073/pnas.1415135111</a>.</p>
]]></content:encoded></item><item><title>Review of OCSR Techniques and Models (Musazade 2022)</title><link>https://hunterheidenreich.com/notes/chemistry/optical-structure-recognition/benchmarks/musazade-ocsr-review-2022/</link><pubDate>Thu, 18 Dec 2025 00:00:00 +0000</pubDate><guid>https://hunterheidenreich.com/notes/chemistry/optical-structure-recognition/benchmarks/musazade-ocsr-review-2022/</guid><description>Systematization of OCSR evolution from rule-based systems to deep learning, highlighting the paradigm shift to image captioning approaches.</description><content:encoded><![CDATA[<h2 id="systematization-of-ocsr-evolution">Systematization of OCSR Evolution</h2>
<p>This is a <strong>Systematization</strong> paper ($\Psi_{\text{Systematization}}$). It organizes existing literature into two distinct evolutionary phases: <strong>Rule-based systems</strong> (1990s-2010s) and <strong>Machine Learning-based systems</strong> (2015-present). It synthesizes performance metrics across these paradigms to highlight the shift from simple classification to &ldquo;image captioning&rdquo; (sequence generation).</p>
<p><strong>Justification</strong>: The paper focuses on &ldquo;organizing and synthesizing existing literature&rdquo; and answers the core question: &ldquo;What do we know?&rdquo; The dominant contribution is systematization based on several key indicators:</p>
<ol>
<li>
<p><strong>Survey Structure</strong>: The paper explicitly structures content by categorizing the field into two distinct historical and methodological groups: &ldquo;Rule-based systems&rdquo; and &ldquo;ML-based systems&rdquo;. It traces the &ldquo;evolution of approaches from rule-based structure analyses to complex statistical models&rdquo;, moving chronologically from early tools like OROCS and OSRA (1990s-2000s) to modern Deep Learning approaches like DECIMER and Vision Transformers.</p>
</li>
<li>
<p><strong>Synthesis of Knowledge</strong>: The paper aggregates performance metrics from various distinct studies into unified comparison tables (Table 1 for rule-based and Table 2 for ML-based). It synthesizes technical details of different models, explaining how specific architectures (CNNs, LSTMs, Attention mechanisms) are applied to the specific problem of Optical Chemical Structure Recognition (OCSR).</p>
</li>
<li>
<p><strong>Identification of Gaps</strong>: The authors dedicate specific sections to &ldquo;Gaps of rule-based systems&rdquo; and &ldquo;Gaps of ML-based systems&rdquo;. It concludes with recommendations for future development, such as the need for &ldquo;standardized datasets&rdquo; and specific improvements in image augmentation and evaluation metrics.</p>
</li>
</ol>
<h2 id="motivation-for-digitization-in-cheminformatics">Motivation for Digitization in Cheminformatics</h2>
<p>The primary motivation is the need to digitize vast amounts of chemical knowledge locked in non-digital formats (e.g., scanned PDFs, older textbooks). This is challenging because:</p>
<ol>
<li><strong>Representational Variety</strong>: A single chemical formula can be drawn in many visually distinct ways (e.g., different orientations, bond styles, fonts).</li>
<li><strong>Legacy Data</strong>: Older documents contain noise, low resolution, and disconnected strokes that confuse standard computer vision models.</li>
<li><strong>Lack of Standardization</strong>: There is no centralized database or standardized benchmark for evaluating OCSR performance, making comparison difficult.</li>
</ol>
<h2 id="key-insights-and-the-paradigm-shift">Key Insights and the Paradigm Shift</h2>
<p>The paper provides a structured comparison of the &ldquo;evolution&rdquo; of OCSR, specifically identifying the pivot point where the field moved from object detection to <strong>NLP-inspired sequence generation</strong>.</p>
<p>Key insights include:</p>
<ul>
<li><strong>The Paradigm Shift</strong>: Identifying that OCSR has effectively become an &ldquo;image captioning&rdquo; problem where the &ldquo;caption&rdquo; is a <a href="/notes/chemistry/molecular-representations/notations/smiles/">SMILES</a> or <a href="/notes/chemistry/molecular-representations/notations/inchi-2013/">InChI</a> string.</li>
<li><strong>Metric Critique</strong>: It critically analyzes the flaws in current evaluation metrics, noting that Levenshtein Distance (LD) is better than simple accuracy but still fails to capture semantic chemical severity (e.g., mistaking &ldquo;F&rdquo; for &ldquo;S&rdquo; is worse than a wrong digit).</li>
<li><strong>Hybrid Potential</strong>: Despite the dominance of ML, the authors argue that rule-based heuristics are still valuable for post-processing validation (e.g., checking element order, sequence structure, and formula correspondence).</li>
</ul>
<h2 id="comparative-analysis-of-rule-based-vs-ml-systems">Comparative Analysis of Rule-Based vs. ML Systems</h2>
<p>As a review paper, it aggregates experimental results from primary sources. It compares:</p>
<ul>
<li><strong>Rule-based systems</strong>: OSRA, chemoCR, Imago, Markov Logic OCSR, and various heuristic approaches.</li>
<li><strong>ML-based systems</strong>: DECIMER (multiple versions), MSE-DUDL, ICMDT (Image Captioning Model based on Deep Transformer-in-Transformer), and other BMS Kaggle competition solutions.</li>
</ul>
<p>It contrasts these systems using:</p>
<ul>
<li><strong>Datasets</strong>: BMS (synthetic, 4M images), PubChem (synthetic), U.S. Patents (real-world scanned).</li>
<li><strong>Metrics</strong>: Tanimoto similarity (structural overlap) and Levenshtein distance (string edit distance).</li>
</ul>
<h2 id="outcomes-critical-gaps-and-recommendations">Outcomes, Critical Gaps, and Recommendations</h2>
<ol>
<li><strong>Transformers are SOTA</strong>: Attention-based encoder-decoder models outperform CNN-RNN hybrids. DECIMER 1.0 achieved 96.47% Tanimoto $= 1.0$ on its test set using an EfficientNet-B3 encoder and Transformer decoder.</li>
<li><strong>Data Hungry</strong>: Modern approaches require massive datasets (millions of images) and significant compute. DECIMER 1.0 trained on 39M images for 14 days on TPU, while the original DECIMER took 27 days on a single GPU. Rule-based systems required neither large data nor heavy compute but hit a performance ceiling.</li>
<li><strong>Critical Gaps</strong>:
<ul>
<li><strong>Super-atoms</strong>: Current models struggle with abbreviated super-atoms (e.g., &ldquo;Ph&rdquo;, &ldquo;COOH&rdquo;).</li>
<li><strong>Stereochemistry</strong>: 3D information (wedges/dashes) is often lost or misinterpreted.</li>
<li><strong>Resolution</strong>: Models are brittle to resolution changes; some require high-res, others fail if images aren&rsquo;t downscaled.</li>
</ul>
</li>
<li><strong>Recommendation</strong>: Future systems should integrate &ldquo;smart&rdquo; pre-processing (denoising without cropping) and use domain-specific distance metrics. The authors also note that post-processing formula validation (checking element order, sequence structure, and formula correspondence) increases accuracy by around 5-6% on average. They suggest exploring Capsule Networks as an alternative to CNNs, since capsules add position invariance through routing-by-agreement rather than max-pooling.</li>
</ol>
<h2 id="reproducibility">Reproducibility</h2>
<p>As a review paper, this work does not introduce original code, models, or datasets. The paper itself is open access via the Journal of Cheminformatics. This section summarizes the technical details of the systems reviewed.</p>
<h3 id="data">Data</h3>
<p>The review identifies the following key datasets used for training OCSR models:</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Dataset</th>
					<th style="text-align: left">Type</th>
					<th style="text-align: left">Size</th>
					<th style="text-align: left">Notes</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>BMS (Bristol-Myers Squibb)</strong></td>
					<td style="text-align: left">Synthetic</td>
					<td style="text-align: left">~4M images</td>
					<td style="text-align: left">2.4M train / 1.6M test. Used for Kaggle competition. Test images contain noise (salt &amp; pepper, blur) and rotations absent from training images.</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>PubChem</strong></td>
					<td style="text-align: left">Synthetic</td>
					<td style="text-align: left">~39M</td>
					<td style="text-align: left">Generated via CDK (Chemistry Development Kit). Used by DECIMER 1.0 (90/10 train/test split).</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>U.S. Patents (USPTO)</strong></td>
					<td style="text-align: left">Scanned</td>
					<td style="text-align: left">Variable</td>
					<td style="text-align: left">Real-world noise, often low resolution. One of several training sources for MSE-DUDL (alongside PubChem and Indigo, totaling 50M+ samples).</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>ChemInfty</strong></td>
					<td style="text-align: left">Scanned</td>
					<td style="text-align: left">869 images</td>
					<td style="text-align: left">Older benchmark used to evaluate rule-based systems (e.g., Markov Logic OCSR).</td>
			</tr>
	</tbody>
</table>
<h3 id="algorithms">Algorithms</h3>
<p>The review highlights the progression of algorithms:</p>
<ul>
<li><strong>Rule-Based</strong>: Hough transforms for bond detection, vectorization/skeletonization, and OCR for atom labels.</li>
<li><strong>Sequence Modeling</strong>:
<ul>
<li><strong>Image Captioning</strong>: Encoder (CNN/ViT) → Decoder (RNN/Transformer).</li>
<li><strong>Tokenization</strong>: Parsing InChI/SMILES into discrete tokens (e.g., splitting <code>C13</code> into <code>C</code>, <code>13</code>).</li>
<li><strong>Beam Search</strong>: Used in inference (typical $k=15-20$) to find the most likely chemical string.</li>
</ul>
</li>
</ul>
<h3 id="models">Models</h3>
<p>Key architectures reviewed:</p>
<ul>
<li><strong>DECIMER 1.0</strong>: Uses <strong>EfficientNet-B3</strong> (Encoder) and <strong>Transformer</strong> (Decoder). Predicts <a href="/notes/chemistry/molecular-representations/notations/selfies/">SELFIES</a> strings (more robust than <a href="/notes/chemistry/molecular-representations/notations/smiles/">SMILES</a>).</li>
<li><strong>Swin Transformer</strong>: Often used in Kaggle ensembles as the visual encoder due to better handling of variable image sizes.</li>
<li><strong>Grid LSTM</strong>: Used in older deep learning approaches (MSE-DUDL) to capture spatial dependencies.</li>
</ul>
<h3 id="evaluation">Evaluation</h3>
<p>Metrics standard in the field:</p>
<ul>
<li><strong>Levenshtein Distance (LD)</strong>: Edit distance between predicted and ground truth strings. Lower is better. Formally, for two sequences $a$ and $b$ (e.g. SMILES strings) of lengths $|a|$ and $|b|$, the recursive distance $LD(a, b)$ is bounded from $0$ to $\max(|a|, |b|)$.</li>
<li><strong>Tanimoto Similarity</strong>: Measures overlap of molecular fingerprints ($0.0 - 1.0$). Higher is better. DECIMER 1.0 achieved a Tanimoto of 0.99 on PubChem data (Table 2). Calculated as:
$$
\begin{aligned}
T(A, B) = \frac{N_c}{N_a + N_b - N_c}
\end{aligned}
$$
where $N_a$ and $N_b$ are the number of bits set to 1 in fingerprints $A$ and $B$, and $N_c$ is the number of common bits set to 1.</li>
<li><strong>1-1 Match Rate</strong>: Exact string matching (accuracy). For DECIMER 1.0, 96.47% of results achieved Tanimoto $= 1.0$.</li>
</ul>
<h3 id="hardware">Hardware</h3>
<ul>
<li><strong>Training Cost</strong>: High for SOTA. DECIMER 1.0 required ~14 days on TPU. The original DECIMER took ~27 days on a single NVIDIA GPU.</li>
<li><strong>Inference</strong>: Transformer models are heavy; rule-based systems run on standard CPUs but with lower accuracy.</li>
</ul>
<h2 id="paper-information">Paper Information</h2>
<p><strong>Citation</strong>: Musazade, F., Jamalova, N., &amp; Hasanov, J. (2022). Review of techniques and models used in optical chemical structure recognition in images and scanned documents. <em>Journal of Cheminformatics</em>, 14(1), 61. <a href="https://doi.org/10.1186/s13321-022-00642-3">https://doi.org/10.1186/s13321-022-00642-3</a></p>
<p><strong>Publication</strong>: Journal of Cheminformatics 2022</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bibtex" data-lang="bibtex"><span style="display:flex;"><span><span style="color:#a6e22e">@article</span>{musazadeReviewTechniquesModels2022,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">title</span> = <span style="color:#e6db74">{Review of Techniques and Models Used in Optical Chemical Structure Recognition in Images and Scanned Documents}</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">author</span> = <span style="color:#e6db74">{Musazade, Fidan and Jamalova, Narmin and Hasanov, Jamaladdin}</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">year</span> = <span style="color:#ae81ff">2022</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">month</span> = sep,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">journal</span> = <span style="color:#e6db74">{Journal of Cheminformatics}</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">volume</span> = <span style="color:#e6db74">{14}</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">number</span> = <span style="color:#e6db74">{1}</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">pages</span> = <span style="color:#e6db74">{61}</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">doi</span> = <span style="color:#e6db74">{10.1186/s13321-022-00642-3}</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>]]></content:encoded></item><item><title>AI &amp; Physical Sciences Taxonomy: A Seven-Vector Framework</title><link>https://hunterheidenreich.com/notes/research-methods/ai-physical-sciences-paper-taxonomy/</link><pubDate>Sat, 13 Dec 2025 00:00:00 +0000</pubDate><guid>https://hunterheidenreich.com/notes/research-methods/ai-physical-sciences-paper-taxonomy/</guid><description>Seven-vector framework for classifying research papers at the nexus of AI and physical sciences by dominant contribution type.</description><content:encoded><![CDATA[<h2 id="overview">Overview</h2>
<p>This is a personal working taxonomy, a lens I use to orient myself when reading papers, not a formal classification scheme. The categories are fuzzy in practice, and reasonable people will assign the same paper differently. The goal is clarity of thought, not consensus.</p>
<p>The taxonomy uses a <strong>superposition model</strong> where each paper is viewed as a linear combination of seven fundamental contribution types (basis vectors). Examples throughout draw primarily from chemistry and materials science, though the framework applies across physical sciences.</p>
<p>The framework helps answer: &ldquo;What is this paper&rsquo;s primary contribution?&rdquo; by identifying rhetorical patterns and structural elements that signal different research paradigms.</p>
<h2 id="core-principle-the-superposition-model">Core Principle: The Superposition Model</h2>
<p>All papers in this domain can be viewed as a <strong>superposition</strong> of fundamental contribution vectors. This is an analogy, not a formal mathematical claim: the seven types below are not linearly independent in the strict sense, and most papers project onto more than one.</p>
<p>Most papers exhibit a <strong>profile</strong> across multiple basis vectors, blending contribution types (e.g., Method + Theory). One vector usually provides the primary narrative thrust; secondary vectors supply the supporting evidence.</p>
<p>I tend to classify a paper by identifying its <strong>Primary Projection</strong> (the dominant contribution) and <strong>Secondary Projections</strong> (supporting work). When a paper seems to split evenly across two types, I look at which type&rsquo;s indicators dominate the abstract and section headings, and I treat the secondary projection as context that supports the primary narrative, not a co-equal claim.</p>
<h2 id="the-seven-basis-vectors-psi">The Seven Basis Vectors ($\Psi$)</h2>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Basis Vector</th>
					<th style="text-align: left">Alias/Focus</th>
					<th style="text-align: left">Core Question</th>
					<th style="text-align: left">Primary Output</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>1. $\Psi_{\text{Method}}$</strong></td>
					<td style="text-align: left">The Methodological Basis (Architecture/Algorithm)</td>
					<td style="text-align: left"><strong>What new mechanism does this introduce?</strong></td>
					<td style="text-align: left">New algorithm, architecture, or approximation</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>2. $\Psi_{\text{Theory}}$</strong></td>
					<td style="text-align: left">The Theoretical Basis (Formal Analysis)</td>
					<td style="text-align: left"><strong>Why does this work?</strong></td>
					<td style="text-align: left">Formal proof, generalization bound, or physical derivation</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>3. $\Psi_{\text{Resource}}$</strong></td>
					<td style="text-align: left">The Infrastructure Basis (Data/Software)</td>
					<td style="text-align: left"><strong>What resources are available?</strong></td>
					<td style="text-align: left">Dataset, benchmark, or open-source software ecosystem</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>4. $\Psi_{\text{Systematization}}$</strong></td>
					<td style="text-align: left">The Review Basis (Synthesis)</td>
					<td style="text-align: left"><strong>What do we know?</strong></td>
					<td style="text-align: left">Comprehensive survey or new organizing taxonomy (Systematization of Knowledge, SoK)</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>5. $\Psi_{\text{Position}}$</strong></td>
					<td style="text-align: left">The Sociological Basis (Perspective)</td>
					<td style="text-align: left"><strong>Where should the field go?</strong></td>
					<td style="text-align: left">Opinion piece, perspective, or critique of community practice</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>6. $\Psi_{\text{Discovery}}$</strong></td>
					<td style="text-align: left">The Empirical Discovery Basis</td>
					<td style="text-align: left"><strong>What new thing did we find?</strong></td>
					<td style="text-align: left">Experimentally or computationally validated material, molecule, or physical phenomenon</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>7. $\Psi_{\text{Application}}$</strong></td>
					<td style="text-align: left">The Transfer Basis (Domain Application)</td>
					<td style="text-align: left"><strong>Does this approach work here?</strong></td>
					<td style="text-align: left">Empirical evaluation of an existing method in a new scientific domain</td>
			</tr>
	</tbody>
</table>
<h2 id="assessment-guide-rhetorical-indicators">Assessment Guide: Rhetorical Indicators</h2>
<p>These rhetorical patterns tend to signal which vector dominates. They are heuristics, not rules; the goal is to notice what the paper is primarily arguing for, not to tick boxes.</p>
<h3 id="1-psi_textmethod-the-methodological-paper">1. $\Psi_{\text{Method}}$: The Methodological Paper</h3>
<p>Focuses on proposing a <strong>novel</strong> mechanism, architecture, or approximation (e.g., a new Transformer variant, a GNN with symmetry, a new DFT functional).</p>
<p><strong>Rhetorical Indicators:</strong></p>
<ul>
<li><strong>Ablation Study:</strong> Authors systematically remove components of their system to prove their specific innovation drives the performance gain. In physics venues, this often appears as parameter sensitivity analysis or direct comparison to prior potentials and functionals rather than a classic ablation table.</li>
<li><strong>Baseline Comparison:</strong> A prominent table comparing the new method against the <strong>State-of-the-Art (SOTA)</strong></li>
<li><strong>Pseudo-code:</strong> An explicit block detailing the algorithmic steps (e.g., for training, sampling, or inference)</li>
</ul>
<p><strong>Examples in the notes:</strong> <a href="/notes/machine-learning/generative-models/flow-matching-for-generative-modeling/">Flow Matching for Generative Modeling</a> (introduces a new continuous normalizing flow mechanism with ablations), <a href="/notes/chemistry/molecular-simulation/ml-potentials/mofflow/">MOFFlow</a> (novel SE(3) flow matching architecture for metal-organic frameworks with SOTA comparisons).</p>
<h3 id="2-psi_texttheory-the-theoretical-paper">2. $\Psi_{\text{Theory}}$: The Theoretical Paper</h3>
<p>Focuses on mathematical guarantees, proofs, or derivations from first principles.</p>
<p><strong>Rhetorical Indicators:</strong></p>
<ul>
<li><strong>Mathematical Proof Sections:</strong> Sections titled &ldquo;Theorem 1,&rdquo; &ldquo;Proof of Equivariance,&rdquo; or &ldquo;Formal Bounds&rdquo;</li>
<li><strong>Analysis of Limits/Capacity:</strong> Investigates the <strong>expressivity</strong> (e.g., comparing a GNN to the Weisfeiler-Lehman Test) or analyzes the geometry of the optimization landscape</li>
<li><strong>Generalization/OOD:</strong> Derives <strong>generalization bounds</strong> on test error or formally defines &ldquo;chemical space coverage&rdquo; for out-of-distribution (OOD) behavior</li>
<li><strong>Exact Constraints:</strong> Derives exact conditions that true physical functions (like the universal Density Functional) must satisfy</li>
</ul>
<p><strong>Examples in the notes:</strong> <a href="/notes/machine-learning/generative-models/convexity-principle-interacting-gases/">The Convexity Principle and Interacting Gases</a> (formal theoretical analysis connecting flow-based generative models to thermodynamic principles).</p>
<h3 id="3-psi_textresource-the-infrastructure-paper">3. $\Psi_{\text{Resource}}$: The Infrastructure Paper</h3>
<p>Focuses on creating and sharing foundational tools for the community.</p>
<p><strong>Rhetorical Indicators:</strong></p>
<ul>
<li><strong>Curation Description:</strong> Detailed steps on how data was generated, filtered, or curated (e.g., describing millions of CPU-hours of DFT calculations for a dataset like QM9). In physics contexts, this often takes the form of DFT protocol descriptions and computational settings rather than a formal &ldquo;datasheet.&rdquo;</li>
<li><strong>&ldquo;Datasheets&rdquo; and &ldquo;Data Cards&rdquo;:</strong> Inclusion of formal documentation detailing provenance, copyright, and potential biases in the data. In physics contexts, this often appears as detailed computational settings, DFT functional choices, and convergence criteria rather than a named datasheet document.</li>
<li><strong>Benchmark Definition:</strong> Argues that &ldquo;Metric X on Dataset Y&rdquo; is the correct proxy for progress in a specific scientific task</li>
</ul>
<p><strong>Examples in the notes:</strong> <a href="/notes/chemistry/molecular-design/generation/evaluation/molecular-sets-moses/">Molecular Sets (MOSES)</a> (releases a benchmark dataset and evaluation suite for molecular generation), <a href="/notes/chemistry/molecular-representations/notations/selfies-2023/">SELFIES 2023</a> (releases an updated molecular string representation standard with tooling and validation).</p>
<h3 id="4-psi_textsystematization-the-review-paper">4. $\Psi_{\text{Systematization}}$: The Review Paper</h3>
<p>Focuses on organizing and synthesizing existing literature.</p>
<p><strong>Rhetorical Indicators:</strong></p>
<ul>
<li><strong>Survey Structure:</strong> Follows a linear, often chronological, progression or is grouped by architecture (e.g., Variational Autoencoders (VAEs), GANs, Diffusion models)</li>
<li><strong>Systematization of Knowledge (SoK):</strong> A higher-order contribution that proposes a <strong>new taxonomy or a unified framework</strong> to connect disparate concepts</li>
<li><strong>Citation Density:</strong> References a large fraction of the relevant prior literature; often includes a comparison table spanning many prior works across years or venues</li>
</ul>
<p><strong>Examples in the notes:</strong> <a href="/notes/chemistry/molecular-simulation/classical-methods/embedded-atom-method-review-1993/">Embedded Atom Method Review (1993)</a> (organizes and contextualizes the body of work on EAM potentials into a coherent reference).</p>
<h3 id="5-psi_textposition-the-sociological-paper">5. $\Psi_{\text{Position}}$: The Sociological Paper</h3>
<p>Focuses on meta-science, arguing for a change in community norms, or critiquing systemic issues.</p>
<p>I see two subtypes come up often. The first is the <strong>roadmap/perspective</strong> paper: a constructive argument for where the field should focus, often written by senior researchers after a period of reflection. The second is the <strong>critique</strong> paper: a more adversarial argument that something the community is currently doing is wrong or counterproductive. Both share the same core signal (the argument itself is the contribution), but they have different tones and are often targeted at different audiences.</p>
<p><strong>Rhetorical Indicators:</strong></p>
<ul>
<li><strong>Venue/Track:</strong> Often found in &ldquo;Position Tracks&rdquo; or called &ldquo;Blue Sky&rdquo; or &ldquo;Forward Looking&rdquo; papers</li>
<li><strong>Argumentative Tone:</strong> Uses qualitative or quantitative analysis (meta-analysis) to argue for a shift in how research is conducted or funded (e.g., a paper arguing that AI contracts the focus of science)</li>
<li><strong>Argument as Contribution:</strong> The paper presents no new experimental findings; the primary contribution is the argument itself</li>
</ul>
<p><strong>Examples in the notes:</strong> <a href="/notes/computational-biology/fold-graciously/">Fold Graciously</a> (position paper arguing for a shift in how the protein folding community evaluates progress), <a href="/notes/chemistry/molecular-representations/notations/selfies-2022/">SELFIES 2022</a> (makes a normative argument for adopting SELFIES over SMILES for robust molecular generation; the paper also has Method and Resource characteristics, but the argument-first framing and advocacy tone push it toward Position for me).</p>
<h3 id="6-psi_textdiscovery-the-empirical-discovery-paper">6. $\Psi_{\text{Discovery}}$: The Empirical Discovery Paper</h3>
<p>Focuses on the discovery of novel scientific artifacts using AI/ML tools. The key criterion is experimental or higher-fidelity confirmation of the AI&rsquo;s prediction (wet-lab synthesis, physical characterization, or a higher-fidelity simulation), rather than performance on a held-out test set.</p>
<p><strong>Rhetorical Indicators:</strong></p>
<ul>
<li><strong>Structure:</strong> Follows a workflow: (1) Computational Screening (AI selects candidates), (2) <strong>Validation</strong> (wet-lab synthesis, physical characterization, or independent computational confirmation)</li>
<li><strong>Core Claim:</strong> The primary contribution is a <strong>new material, molecule, or physical finding</strong>, with the AI/ML part serving as the necessary first step</li>
<li><strong>Key Question:</strong> Does the AI&rsquo;s prediction hold true against an independent ground truth (e.g., a physical experiment or a higher-fidelity simulation)?</li>
</ul>
<p><strong>Examples in the notes:</strong> <a href="/notes/chemistry/molecular-simulation/surface-science/oxidation-reduction-oscillations-pt-sio2-1994/">Oxidation-Reduction Oscillations on Pt/SiO2 (1994)</a> (validates a computationally-predicted dynamic phenomenon against physical experiment).</p>
<h3 id="7-psi_textapplication-the-application-paper">7. $\Psi_{\text{Application}}$: The Application Paper</h3>
<p>Applies an existing method, architecture, or technique to a new scientific domain or task without introducing a new mechanism, dataset, or experimentally confirmed finding. The primary contribution is demonstrating feasibility or utility of transfer.</p>
<p><strong>Rhetorical Indicators:</strong></p>
<ul>
<li><strong>&ldquo;We Apply X to Y&rdquo; framing:</strong> The abstract explicitly names an existing method and a new domain; the contribution is the connection, not the method itself.</li>
<li><strong>Benchmark-style Results:</strong> Performance reported on domain-specific tasks using existing metrics; baselines are often simple (classical methods, prior domain tools) rather than ML SOTA.</li>
<li><strong>Absence of novelty claims:</strong> The paper does not argue for a new architecture, does not release a new dataset, and does not report a validated experimental discovery.</li>
</ul>
<p><strong>Examples in the notes:</strong> <a href="/notes/chemistry/llm-applications/benchmarking-llms-molecule-prediction/">Benchmarking LLMs for Molecular Property Prediction</a> (evaluates GPT-3.5, GPT-4, and Llama-2 on six existing OGB molecular tasks without modifying the models), <a href="/notes/chemistry/molecular-design/property-prediction/maxsmi-smiles-augmentation-property-prediction/">Maxsmi: SMILES Augmentation for Property Prediction</a> (systematic evaluation of five augmentation strategies with existing CNN/RNN architectures), <a href="/notes/chemistry/molecular-design/generation/evaluation/molecular-language-models-rnns-or-transformer/">RNNs vs Transformers for Molecular Generation Tasks</a> (empirical comparison of existing architectures on SMILES and SELFIES generation).</p>
<h2 id="edge-cases-and-disambiguation">Edge Cases and Disambiguation</h2>
<p>These are the pairs I find myself second-guessing most often. I&rsquo;ve written down how I tend to resolve them, not as rules, but as a record of my reasoning.</p>
<p><strong>Method vs. Discovery:</strong> The key question I ask is whether there is independent validation beyond a held-out test set. If the paper reports a wet-lab confirmation or a higher-fidelity simulation verifying the AI&rsquo;s output, I lean toward Discovery: the finding is real and the AI was the tool. If the architecture is the thing being argued for, and validation is limited to benchmarks, I lean toward Method. One edge case I see often in computational chemistry is ML-predicts + DFT-validates: no wet lab, but DFT is genuinely independent of the ML model. I treat this as Discovery if the DFT result is the claimed contribution, and Method if the ML model&rsquo;s performance against DFT is what&rsquo;s being argued for.</p>
<p><strong>Resource vs. Systematization:</strong> I think of this as artifact-first vs. interpretation-first. If the paper&rsquo;s main output is something you can download and use (a benchmark, a curated dataset, a software library), it&rsquo;s Resource. If the paper&rsquo;s main output is a new way of thinking about a body of literature (a taxonomy, a conceptual unification), it&rsquo;s Systematization. The presence of a clear benchmark definition with metrics tends to push toward Resource even when there is substantial review content.</p>
<p><strong>Application vs. Method:</strong> The cleanest distinguisher here is whether anything new was designed. If an existing method is taken off the shelf and pointed at a new domain, that&rsquo;s Application. If the domain&rsquo;s requirements motivated a modification to the method (even a small one), then there may be a legitimate Method component. Application papers often read as feasibility demonstrations; Method papers read as capability expansions.</p>
<p><strong>When I&rsquo;m still stuck:</strong> I look at three things in roughly this order: the abstract&rsquo;s final sentence (in my experience, especially in ML venues, authors tend to signal what they most want credit for in that last sentence), section heading vocabulary (presence of &ldquo;theorem,&rdquo; &ldquo;algorithm,&rdquo; &ldquo;dataset,&rdquo; &ldquo;survey,&rdquo; or &ldquo;we find&rdquo; is usually diagnostic), and venue track (position/perspective tracks, SoK tracks, and empirical tracks each carry strong prior signal). I treat the result as a best guess, not a verdict.</p>
<h2 id="applications">Applications</h2>
<p>This framework has been useful to me in a few concrete ways:</p>
<ul>
<li><strong>Organizing literature reviews:</strong> Knowing a paper&rsquo;s vector profile tells me where it belongs in a review&rsquo;s structure: whether it fits in the &ldquo;methods&rdquo; or &ldquo;findings&rdquo; or &ldquo;community context&rdquo; section, rather than forcing everything into chronological order.</li>
<li><strong>Understanding conference and journal acceptance criteria:</strong> Different venues weight vectors differently. Physics journals favor Discovery; ML venues favor Method and Theory; interdisciplinary venues like <em>Nature</em> or <em>Science</em> often weight Discovery heavily but also publish high-impact Position papers. Knowing this helps calibrate expectations.</li>
<li><strong>Identifying gaps in research portfolios:</strong> A collection that is heavy on Method but light on Resource or Discovery points to work that may lack empirical grounding or shared infrastructure. The vector breakdown makes these gaps visible.</li>
<li><strong>Recognizing different types of scientific contribution:</strong> Not everything that looks like a methods paper is one, and not everything that looks like a survey is one. The rhetorical patterns here help me notice when my first impression was wrong and reconsider what is actually being claimed.</li>
</ul>
<h2 id="on-site-enforcement">On-Site Enforcement</h2>
<p>Every <code>note_type: paper</code> entry on this site declares its Primary Projection through a single-valued <code>paper_types</code> frontmatter list. A schema validator rejects notes that omit this field or use values outside the seven canonical vectors, and the classification is surfaced as a Hugo taxonomy at <a href="/paper-types/">/paper-types/</a>. Browsing a vector landing page such as <a href="/paper-types/method/">/paper-types/method/</a> or <a href="/paper-types/systematization/">/paper-types/systematization/</a> is the fastest way to pull up every note that shares a contribution type.</p>
<p>Enforcement is deliberately single-select: it captures the Primary Projection only. Secondary vectors still exist in the text of each note, but the tag axis is chosen to discriminate between classes rather than to describe a paper exhaustively.</p>
]]></content:encoded></item></channel></rss>