A genome of ~220 bases is shattered into short, randomly-positioned reads — real shotgun sequencing has no control over where a read starts, only how many are drawn. The expected number of reads follows the Lander–Waterman equation:
N = C · L / R
C = coverage, L = genome length, R = read length
Each read then picks up random substitution errors at the chosen rate, exactly like a real sequencer's base-caller. The assembler never sees where a read came from — it only compares read sequences to each other. For every pair it slides the suffix of one against the prefix of the other, scoring the longest overlap whose mismatch rate stays under a tolerance threshold, then greedily chains the strongest, non-conflicting overlaps into contigs (a simplified overlap-layout-consensus assembler). Contigs are finally re-aligned to the true genome only to grade the result — real pipelines do the same when benchmarking an assembler against a reference.
- Read length — longer reads carry more overlap signal per pair and span repeats better, but shotgun libraries can only reach so far before diminishing returns.
- Coverage depth — how many reads sample each base on average; low-coverage stretches have a real chance of being missed entirely, leaving assembly gaps.
- Error rate — sequencing errors erode the overlap signal; past a threshold the assembler can no longer trust a true overlap and the contig breaks.
Real-world relevance: this greedy overlap chain is the conceptual core of classical genome assemblers (Celera, early SOAPdenovo) — modern tools add de Bruijn graphs and long-read scaffolding, but the overlap-detect-and-chain logic is the same idea visualized here.