[object Promise]
ACIM Atlas · Docs
← Back to Homepage
The Pipeline

Pass 5—Co-occurrence Analysis

Pass 5 asks a question that no earlier pass addresses: which motifs travel together?

Passes 1 through 4 build a rich picture of each motif individually—where it appears, how it develops, what role it plays, and what it means for the reader. But they do not examine the relationships between motifs. A reader looking at a motif trail page can see that Forgiveness appears in a large share of the Text’s sections, and that Happy Dream appears in relatively few. What they cannot see—until Pass 5—is that Happy Dream co-occurs with Forgiveness in the great majority of its appearances. That fact is not visible from either trail alone.

Pass 5 computes pairwise co-occurrence across all motifs and all units, producing a structural map of how motifs relate to one another: which pairs are tightly linked, which groups form clusters, and—perhaps most interestingly—where a motif that almost always accompanies another is conspicuously absent.

What it does

The earlier passes characterize motifs along two axes: their individual behavior across the corpus (Pass 3 metrics) and their narrative arc through the Text (Pass 2 trail synthesis). Neither captures the relational structure of the motif vocabulary—the fact that certain ideas in the Course consistently appear together while others rarely meet.

This relational structure matters because the Course teaches through layered repetition. When the Text discusses the body, it almost always includes sickness, illusions, and separation. When it discusses the Holy Instant, it almost always invokes the Holy Spirit and joining. These co-occurrences are not accidental—they reflect the Course’s own logic about which ideas are structurally linked. Pass 5 makes that logic visible.

It also surfaces the exceptions. When two motifs that nearly always co-occur are found apart, that absence is analytically interesting. It may reflect a deliberate isolation—the Course addressing one concept without its usual companion—or it may flag a section worth closer attention.

How it works

Pass 5 is executed by a single Node.js script operating on the Pass 1 occurrence data in the database. Like Pass 3, it involves no AI. It is pure computation.

Pairwise metrics

For every pair of active motifs, the script computes how many sections they share, how many of those shared sections have both motifs at high salience (≥ 0.3), and a co-occurrence ratio defined as:

co_occurrence_ratio = shared_sections / min(total_a, total_b)

This ratio measures how tightly the pair is linked relative to the smaller motif’s footprint. A ratio of 1.0 would mean that wherever the rarer motif appears, the other is always there too.

Strong pairs

A pair is classified as strong when its co-occurrence ratio is at least 0.5 and it shares at least 5 sections. These thresholds are editorial choices: high enough to exclude incidental overlap, low enough to surface meaningful relationships. Strong pairs form the backbone of the relational map.

Asymmetry

Co-occurrence is not always symmetric. A rarer motif may almost always appear alongside a more frequent one, while the more frequent motif accompanies the rarer one in only a fraction of its own appearances. The co-occurrence ratio (based on the smaller motif) captures the tightest direction of the relationship, but the directional probabilities—P(B|A) and P(A|B)—reveal which motif depends on which. Both directions are available to the site’s query layer.

Triads and clusters

Beyond pairs, the script identifies triads: groups of three motifs where all three pairs are individually strong. These triangles represent tightly interlocking concepts. It also finds larger clusters using a maximal clique algorithm: groups where every pair within the group is strong and no additional motif can be added without breaking that property.

These triads and clusters are currently excluded from the site because they feel a bit clinical. They may be incorporated at a later date.

Notable absences

For pairs with a particularly high directional probability (P(B|A) ≥ 0.6), the script identifies specific sections where motif A appears but motif B—which almost always accompanies it—is missing. Each absence receives a surprise score combining the conditional probability with the salience of the present motif. High scores mean the absence is genuinely unexpected.

These absences are among the most analytically interesting outputs of the pass. They surface places where the Course may be deliberately isolating a concept, or where the relationship between two ideas shifts in a way that warrants closer reading.

Notable absences are listed on each section page under a “What’s Missing” header.

What the data looks like after Pass 5

Every motif in the dataset now carries a fourth layer of characterization:

  1. Unit-level (Pass 1): where the motif appears and how it functions in each section.
  2. Trail-level (Pass 2): how the motif develops across the Text.
  3. Corpus-level (Pass 3): how the motif compares to other motifs in frequency and intensity.
  4. Relational (Pass 5): which other motifs it travels with, how tightly, and where those relationships break down.

This relational layer enables new kinds of questions: What motifs form a natural cluster around forgiveness? Which motifs almost never appear without the Holy Spirit? Where does the body appear without perception—and what does the Course do differently in those sections?

With Pass 5 complete, the pipeline ends. Every subsequent enhancement to the site draws on the data these six passes produced, without adding new analytical layers underneath.