How to Read These Heatmaps
What Are EAMs?
EAM stands for Emergency Action Message. These are coded messages broadcast over high-frequency (HF) radio by the United States military's High Frequency Global Communications System (HFGCS), a network of transmitter stations that can reach receivers anywhere in the world.
Each EAM is a string of uppercase letters and numbers. They are transmitted in the clear (unencrypted at the radio level), but their contents are encoded—only the intended recipients know what a given message means. Radio hobbyists routinely log these broadcasts, and over time a large collection accumulates.
These heatmaps are a tool for exploring structural patterns in that collection: recurring regularities that suggest the messages follow an underlying format rather than being purely random.
What This Tool Does
Each heatmap page shows all logged EAMs that share the same character length. The "55 Character EAMs" page, for example, shows every message that is exactly 55 characters long.
The tool analyzes these same-length messages as a group and looks for places where the same characters, sequences, or relationships appear again and again—across different messages or within individual ones—in ways that are unlikely to happen by chance. When it finds patterns, it highlights them with colors. Each color represents a different type of pattern.
The Heatmap Bar
At the top of each page is a horizontal bar that stays visible as you scroll. This is the aggregate heatmap. Each column represents one character position (position 1, position 2, etc.), and the brightness of each column reflects how much pattern activity was detected at that position across all messages on the page.
Dark columns indicate few or no patterns. Those positions likely hold unpredictable data—encrypted content, random identifiers, and so on.
Bright columns indicate many messages share structural patterns at that position. This suggests the position has a defined role in the message format: a fixed field, a check character, a predictable delimiter.
Pattern Colors
When a character is part of a detected pattern, it is highlighted in one of five colors:
- Blue — Exact Repeat. A sequence of two or more characters that appears more than once in the same message.
- Green — Gapped Repeat. A sequence that repeats within the message, but with one or more wildcard positions (characters that differ between the two occurrences).
- Purple — Hot Position Pair. Single characters at two positions that match each other across many different messages.
- Pink — Quadruple Repeat. Four or more identical characters in a row.
- Coral — Partial Quad. Two or three identical characters in a row, at a position where other messages tend to have quadruple repeats.
Exact Repeats (Blue)
The most common pattern type. The tool scans each message for substrings—sequences of consecutive characters—that appear more than once within that same message. In bioinformatics, a substring of length k is called a k-mer ("mer" just means "part," so a 3-mer is a three-character part).
Longer repeats are generally more significant. A 2-character match in a long message could easily happen by chance, while a 5-character match is far less likely to be coincidental. The tool uses a confidence score to account for this (see Confidence Filtering below).
Gapped Repeats (Green)
Similar to exact repeats, but with flexibility. A gapped pattern is a sequence that repeats in the message where most characters match, but one or more positions act as wildcards—they can differ between the two occurrences.
The wildcard characters (X and Y above) are not highlighted—only the matching positions get green. These patterns must be at least four characters long and often reflect structured fields where some positions are fixed and others vary, like a template with fill-in-the-blank slots.
Hot Position Pairs (Purple)
This is the only pattern type that looks across messages rather than within a single one. The tool compares all messages of the same length and asks: are there two positions that tend to hold the same character as each other, message after message?
Msg 2: ...pos 15 = K ... pos 28 = K
Msg 3: ...pos 15 = B ... pos 28 = B
Msg 4: ...pos 15 = 4 ... pos 28 = 8 (no match, no highlight)
The threshold is 30%: the characters at the two positions must match in at least 30% of messages within a group to qualify. The specific character changes from message to message, but the relationship persists—the two positions are structurally linked. This suggests they may be computed from the same input, or one is derived from the other.
Quadruple Repeats (Pink)
The simplest pattern: four or more of the same character in a row (e.g., AAAA). In a random 36-character alphabet (A–Z plus 0–9), a run of four identical characters is quite rare. When it happens, it likely reflects something deliberate in the encoding—padding, a separator, or a special marker.
Partial Quads (Coral)
Sometimes a message has a double or triple repeat (like AA or BBB) at a position where other messages of the same length tend to have full quadruple repeats. The coral highlight means: "this position is a known quad-repeat zone, and this message has a partial match here." A double repeat at an arbitrary position would not be highlighted—it only triggers when the position is structurally significant across the broader message set.
How the Analysis Works
- Group by length. All logged EAMs are sorted by character count. Each unique length gets its own page. Position-based analysis only makes sense when position 15 in one message corresponds to position 15 in another, so same-length grouping is essential.
- Identify hot position pairs. Within each group, the tool checks every possible pair of positions to see if they tend to hold matching characters. Pairs that match in at least 30% of messages are flagged as "hot." This is a cross-message analysis.
- Scan each message for within-message patterns. Each individual message is checked for exact repeating substrings, gapped repeats, quadruple runs, and partial quads.
- Score confidence. Short repeats in long messages are often coincidental—the birthday paradox makes collisions surprisingly likely. The tool estimates the probability of each pattern occurring by chance and assigns a confidence weight accordingly. Low-confidence patterns appear dimmer; very weak ones are filtered out.
- Consolidate and prioritize. When multiple patterns overlap at the same position, the most informative one is displayed. Priority order, highest to lowest: Quad Repeat > Partial Quad > Gapped > Exact > Hot Pair. In certain cases, a strong hot pair can override a weaker exact repeat when the exact repeat isn't fully corroborated by cross-message evidence.
- Render. The results are assembled into the interactive page, with the aggregate bar at top and per-message colored characters below.
Interacting with the Pages
Click a highlighted character in any message. Every other message that shares the same pattern at that position will light up with a white outline, and non-matching messages will dim. This is the fastest way to see how widespread a pattern is. For purple (hot pair) patterns, clicking is especially useful: it shows every message where the two linked positions match.
Click a dot (the colored circle to the left of each message). This highlights all messages in the same group, so you can see which messages were classified together.
Filter controls let you show or hide specific groups using checkboxes. Useful for isolating one group at a time.
Sort controls let you switch between grouped ordering (messages organized by group, then by time) and chronological ordering (all messages in time order).
Navigation: arrows move to adjacent message lengths, the dropdown jumps to a specific length, and the "Index" link returns to the overview page.
Groups and Dots
Messages of the same length are further divided into groups based on shared characteristics. Grouping helps identify families of messages that may follow different sub-formats within the same overall length.
● Group 1 ● Group 2 ● Group 3 ● Group 4 ● Group 5 ● Unclassified
The dot next to each message reflects its group. Messages that couldn't be confidently assigned get a gray dot and are labeled "Unclassified."
Confidence Filtering
Not all detected patterns are equally meaningful. A 2-character substring repeating in a 142-character message is not very surprising—with that many characters and only 36 possible values, short collisions are statistically expected. A 5-character repeat in the same message is far more noteworthy.
The tool handles this with two tiers of scoring:
Tier 1 — Statistical baseline. The tool estimates how likely a repeat of a given length is to occur by chance in a message of a given size (using a concept from probability theory called the birthday paradox). Shorter repeats in longer messages score lower.
Tier 2 — Cross-message corroboration. If the positions where a repeat occurs also show up as hot pairs across the full set of messages, the tool boosts confidence. A repeat that aligns with a known structural relationship is less likely to be a coincidence.
Low-confidence patterns appear at reduced opacity (more transparent). Brighter, more opaque highlights are the ones most worth paying attention to.
Tips for Reading the Data
Start with the heatmap bar. Look for bright columns—those are the structurally active positions. Positions that stay dark across many message lengths likely carry unpredictable data.
Look for consistency across messages. A pattern that appears in one message might be coincidence. A pattern at the same positions across dozens of messages is almost certainly structural. Click highlighted characters to check how many messages share the pattern.
Compare across lengths. Some structural features may persist across different message lengths (e.g., the first few positions might always serve as a callsign field). Jump between length pages to check.
Pay attention to opacity. Bright, solid highlights are high-confidence. Faint, transparent highlights are statistically weaker.
Purple is special. Purple highlights are the only ones validated across the entire message corpus rather than within a single message. They represent structural relationships between positions—arguably the most interesting finding, because they suggest the encoding scheme has internal dependencies where one part of the message is determined by another.
ヒートマップの読み方
EAMとは
EAMはEmergency Action Message(緊急行動メッセージ)の略称です。アメリカ軍の高周波グローバル通信システム(HFGCS)—世界中の受信機に到達可能な送信局ネットワーク—を通じて、高周波(HF)無線で放送される暗号化メッセージです。
各EAMは大文字のアルファベットと数字で構成された文字列です。電波自体は暗号化されずに送信されますが、内容は符号化されており、意図された受信者のみがメッセージの意味を理解できます。無線愛好家がこれらの放送を日常的に記録しており、時間の経過とともに大量のメッセージが蓄積されています。
このヒートマップは、蓄積されたメッセージの中に存在する構造的パターン—メッセージが純粋にランダムではなく、何らかのフォーマットに従っていることを示唆する規則性—を探索するためのツールです。
このツールの機能
各ヒートマップページは、同じ文字数を持つすべてのEAMを表示します。たとえば「55文字のEAM」ページには、ちょうど55文字のメッセージがすべて表示されます。
ツールはこれらの同一文字数のメッセージをグループとして分析し、同じ文字、配列、または関係性が偶然とは考えにくい形で繰り返し出現する箇所を探します。パターンが見つかると、色で強調表示されます。各色は異なる種類のパターンを表しています。
ヒートマップバー
各ページの上部には、スクロールしても表示され続ける横長のバーがあります。これが集約ヒートマップです。各列はメッセージの1つの文字位置(位置1、位置2など)に対応し、列の明るさはページ上のすべてのメッセージにおいて、その位置でどれだけのパターンが検出されたかを反映しています。
暗い列は、パターンがほとんどまたは全く検出されなかったことを示します。おそらく暗号化されたデータやランダムな識別子など、予測不可能なデータが含まれている位置です。
明るい列は、多くのメッセージがその位置で構造的パターンを共有していることを示します。その位置がメッセージフォーマットにおいて特定の役割(固定フィールド、チェック文字、予測可能な区切り文字など)を持っていることを示唆しています。
パターンの色分け
文字が検出されたパターンの一部である場合、5つの色のいずれかで強調表示されます。
- 青 — 完全一致リピート。同一メッセージ内で2回以上出現する、2文字以上の連続した配列。
- 緑 — ギャップ付きリピート。メッセージ内で繰り返される配列だが、1つ以上の位置がワイルドカード(2つの出現箇所で異なる文字)として機能する。
- 紫 — ホットポジションペア。多くの異なるメッセージにわたって、2つの位置の文字が互いに一致する。
- ピンク — 4連続リピート。同じ文字が4つ以上連続して出現する。
- コーラル — 部分的4連続。他のメッセージで4連続リピートが頻出する位置において、同じ文字が2つまたは3つ連続して出現する。
完全一致リピート (青)
最も一般的なパターンです。ツールは各メッセージを走査し、同じメッセージ内で2回以上出現する部分文字列(連続した文字の配列)を探します。バイオインフォマティクスでは、長さkの部分文字列をk-mer(k連結文字)と呼びます(「mer」は「部分」の意味で、3-merは3文字の部分を指します)。
より長いリピートほど重要性が高くなります。長いメッセージでの2文字の一致は偶然起きやすい一方、5文字の一致が偶然である可能性ははるかに低くなります。ツールはこれを信頼度スコアで考慮しています(下記の信頼度フィルタリングを参照)。
ギャップ付きリピート (緑)
完全一致リピートに似ていますが、柔軟性があります。ギャップ付きパターンは、ほとんどの文字は一致するが、1つ以上の位置がワイルドカードとして機能する(2つの出現箇所で異なりうる)配列です。
ワイルドカード文字(上の例ではXとY)は強調表示されません。一致する位置のみが緑色になります。これらのパターンは4文字以上の長さが必要で、一部の位置が固定で他が可変となる構造化フィールド(穴埋め式のテンプレートのようなもの)を反映していることが多いです。
ホットポジションペア (紫)
単一メッセージ内ではなく、メッセージ間を横断して分析する唯一のパターンタイプです。ツールは同じ文字数のすべてのメッセージを比較し、次の問いに答えます:メッセージごとに、同じ文字を保持する傾向がある2つの位置は存在するか?
Msg 2: ...pos 15 = A ... pos 28 = A
Msg 3: ...pos 15 = 2 ... pos 28 = 2
Msg 4: ...pos 15 = X ... pos 28 = Q(不一致、強調表示なし)
閾値は30%です。グループ内のメッセージの少なくとも30%で2つの位置の文字が一致する必要があります。具体的な文字はメッセージごとに変わりますが、関係性(2つの位置が等しいこと)は維持されます。これは2つの位置が構造的にリンクしていることを示唆しており、同じ入力から計算されるか、一方が他方から導出される可能性があります。
4連続リピート (ピンク)
最も単純なパターンです。同じ文字が4つ以上連続して出現します(例:AAAA)。ランダムな36文字のアルファベット(A〜Zおよび0〜9)において、同じ文字が4つ連続する確率は非常に低いです。これが発生する場合、符号化における意図的な要素—パディング、区切り、特殊マーカーなど—を反映している可能性が高いです。
部分的4連続 (コーラル)
同じ文字数の他のメッセージで完全な4連続リピートが頻出する位置に、2つまたは3つの連続する同一文字(例:AAやBBB)が存在する場合があります。コーラル色の強調は「この位置は4連続リピートが発生しやすい構造的に重要な場所であり、このメッセージにはそこに部分的な一致がある」ことを意味します。任意の位置にある2文字の繰り返しは強調表示されません—その位置がメッセージ集合全体にわたって構造的に重要である場合にのみ検出されます。
分析の仕組み
- 文字数でグループ化。すべてのEAMを文字数で分類します。各文字数が個別のページを持ちます。位置ベースの分析は、あるメッセージの位置15が別のメッセージの位置15と対応する場合にのみ意味を持つため、同一文字数でのグループ化は不可欠です。
- ホットポジションペアの特定。各グループ内で、すべての位置の組み合わせについて、一致する文字を持つ傾向があるかを確認します。メッセージの30%以上で一致するペアが「ホット」としてフラグ付けされます。これはメッセージ間の分析です。
- 各メッセージのパターン走査。各メッセージについて、完全一致する部分文字列、ギャップ付きリピート、4連続リピート、部分的4連続を検出します。
- 信頼度スコアリング。長いメッセージでの短いリピートは偶然の産物であることが多く、誕生日のパラドックスにより衝突は驚くほど高い確率で発生します。ツールは各パターンが偶然発生する確率を推定し、信頼度の重みを付与します。低信頼度のパターンはより薄く表示され、非常に弱いものは除外されます。
- 統合と優先順位付け。同じ位置に複数のパターンが重なる場合、最も情報量の多いものが表示されます。優先順位(高い順):4連続リピート > 部分的4連続 > ギャップ付き > 完全一致 > ホットペア。特定の状況では、強いホットペア(紫)がメッセージ間の証拠で十分に裏付けられていない弱い完全一致リピート(青)を上書きすることがあります。
- レンダリング。結果がインタラクティブなページに組み立てられ、上部に集約バー、下部にメッセージごとの色付き文字が表示されます。
ページの操作方法
強調表示された文字をクリックすると、同じ位置で同じパターンを共有する他のすべてのメッセージが白い輪郭線で強調表示され、一致しないメッセージは薄くなります。パターンがどの程度広範に存在するかを確認する最も手軽な方法です。紫(ホットペア)パターンでは特に有用で、リンクされた2つの位置が一致するすべてのメッセージを表示します。
ドットをクリック(各メッセージの左にある色付きの丸)すると、同じグループのすべてのメッセージが強調表示されます。
フィルターコントロールでは、チェックボックスを使って特定のグループの表示・非表示を切り替えることができます。
ソートコントロールでは、グループ別の順序(グループごと、次に時系列)と時系列順序(グループに関係なく全メッセージを時間順に表示)を切り替えることができます。
ナビゲーション:矢印で隣接する文字数のページに移動し、ドロップダウンで特定の文字数にジャンプできます。「Index」リンクで全体の一覧ページに戻ります。
グループとドット
同じ文字数のメッセージは、共有する特徴に基づいてさらにグループに分類されます。グループ化により、同じ文字数の中でも異なるサブフォーマットに従うメッセージのファミリーを特定できます。
● グループ1 ● グループ2 ● グループ3 ● グループ4 ● グループ5 ● 未分類
各メッセージの横にあるドットはそのグループを反映しています。自信を持って分類できなかったメッセージは灰色のドットで「未分類」と表示されます。
信頼度フィルタリング
検出されたパターンがすべて等しく意味があるわけではありません。142文字のメッセージ内で2文字の部分文字列が繰り返されても、それほど驚くことではありません—それだけの文字数と36種類の値しかない状況では、短い衝突は統計的に予想される範囲内です。一方、同じメッセージで5文字のリピートが見つかれば、はるかに注目に値します。
ツールは2段階のスコアリングでこれに対応しています。
第1段階 — 統計的ベースライン。確率論の誕生日のパラドックスという概念を用いて、特定のサイズのメッセージで特定の長さのリピートが偶然発生する確率を推定します。長いメッセージでの短いリピートほどスコアが低くなります。
第2段階 — メッセージ間の裏付け。リピートが発生する位置がメッセージ集合全体でホットペアとしても検出される場合、ツールは信頼度を引き上げます。既知の構造的関係性と一致するリピートは、偶然である可能性が低いためです。
低信頼度のパターンは透明度が高く(より薄く)表示されます。明るく不透明な強調表示ほど、注目する価値が高いパターンです。
データの読み方のコツ
ヒートマップバーから始める。明るい列を探しましょう—それらが構造的に活発な位置です。多くの文字数にわたって暗いままの位置は、おそらく予測不可能なデータを含んでいます。
メッセージ間の一貫性を見る。1つのメッセージにしか現れないパターンは偶然かもしれません。数十のメッセージにわたって同じ位置に現れるパターンは、ほぼ確実に構造的なものです。強調表示された文字をクリックして、何件のメッセージがそのパターンを共有しているか確認しましょう。
文字数間で比較する。一部の構造的特徴は異なる文字数のメッセージ間で持続する場合があります(たとえば、最初の数位置が常にコールサインフィールドとして機能するなど)。文字数ページ間を移動して確認しましょう。
透明度に注意する。明るく不透明な強調表示は高信頼度です。薄く透明な強調表示は統計的に弱いものです。
紫は特別。紫の強調表示は、単一メッセージ内ではなく、メッセージ集合全体にわたって検証された唯一のパターンです。位置間の構造的関係性を表しており、符号化方式にメッセージの一部が別の部分によって決定される内部依存性があることを示唆しています—おそらく最も興味深い発見と言えるでしょう。