血統の数学 — 血量と近交係数
「奇跡の血量 18.75%」とは何の割合なのか。血量と Wright の近交係数を、遺伝子が親から子へ受け継がれる確率から導きます。Odin で書いた計算機の中身も読み解きます。
- 血統表の「代」の数え方とクロス (インブリード) の表記
- 血量 の意味と、それが「期待値」であること
- Wright の近交係数 を確率で導く
- 血量と近交係数が「違うもの」を測っていること
- Odin のコードとの対応
代とクロス
血統表では、父と母を 1 代、祖父母を 2 代、曾祖父母を 3 代 と数えます。 代前の祖先は 頭いて、それぞれの「枠」があります。
同じ祖先 が、父方の 代目と母方の 代目の両方に現れることを クロス (インブリード) と呼び、「 の 」と書きます。例えば「サンデーサイレンスの 3×4」は、父方の 3 代前と母方の 4 代前の両方にサンデーサイレンスがいる、という意味です。
血量 — その祖先の「割合」
子は、父と母からちょうど半分ずつ遺伝子を受け取ります。父も同じように両親から半分ずつ受け取っているので、子にとっての祖父の割合は 。これを繰り返すと
同じ祖先が 2 か所に現れれば、その割合を足します。
3×4 なら 。これが「奇跡の血量」と呼ばれる値です。
@(export)
blood_percent :: proc "c" (gen_sire_side, gen_dam_side: i32) -> f64 {
if !valid(gen_sire_side) || !valid(gen_dam_side) do return 0
return (half_pow(gen_sire_side) + half_pow(gen_dam_side)) * 100
}half_pow(n) は を、0.5 を 回掛けて計算します (WebAssembly で数学ライブラリを使わずに済むように)。valid は 1〜12 代以外を 0 として扱う入力チェックです。
さらに深く血量は「期待値」
「子は親から半分ずつ受け取る」は、平均の話です。実際には、両親から受け取る染色体は、減数分裂のときの組み換えによってランダムに混ざるので、祖父由来の遺伝子が正確に 25% になるわけではありません (兄弟でも違います)。血量 18.75% は「期待される割合」で、実際の割合はその周りにばらつきます。世代が遠いほど、0% (その祖先の遺伝子がまったく残っていない) になる可能性も出てきます。
近交係数 — 同じ遺伝子を 2 つ持つ確率
血量とは別に、育種学では 近交係数 を使います。これは
ある遺伝子の位置 (座位) で、父から来た遺伝子と母から来た遺伝子が、同じ祖先の同じ遺伝子のコピー である確率
です (「同祖的 (IBD)」と言います)。同じ遺伝子を 2 つ持つと、良い性質も悪い性質 (劣性の遺伝病など) も表に出やすくなります。
導き方
子 の父方の遺伝子が、祖先 までさかのぼる確率を考えます。
- 子の父方の遺伝子は、必ず父から来ています
- 父の遺伝子は、父の両親のどちらかから 1/2 の確率で来ています
- は父方の 代前なので、父から まで 回さかのぼります → 確率
母方も同じく 。両方とも に行き着いたとき、 が持つ 2 つの遺伝子のうち 同じ方 を受け継いでいる確率は です。(違う方でも、 自身が近親交配で生まれていれば、その 2 つが同祖的である確率 があります。) まとめると
アプリは (祖先自身は近親交配ではない) と仮定しています。
@(export)
inbreeding_coefficient :: proc "c" (gen_sire_side, gen_dam_side: i32) -> f64 {
if !valid(gen_sire_side) || !valid(gen_dam_side) do return 0
return half_pow(gen_sire_side + gen_dam_side - 1) * 100
}3×4 なら 。
Wright の公式は教科書では と書かれます。, は「父から まで」「母から まで」の世代数 (= , ) なので、 で同じ式です。 は、共通の祖先が複数いる (または同じ祖先への経路が複数ある) とき、経路ごとの値を足すという意味です。
血量と近交係数は別もの
| クロス | 血量 | 近交係数 | アプリの評価 |
|---|---|---|---|
| 2×3 | 37.5% | 6.25% | 濃い |
| 3×3 | 25.0% | 3.13% | 濃い |
| 2×5 | 28.1% | 1.56% | 濃い |
| 3×4 | 18.75% | 1.56% | ほどよい |
| 4×4 | 12.5% | 0.78% | ほどよい |
| 4×5 | 9.4% | 0.39% | 弱い |
2×5 と 3×3 を比べると、血量は 2×5 の方が多いのに、近交係数は 3×3 の方が大きい という逆転が起きます。
- 血量は「その祖先の遺伝子がどれだけ入っているか」(足し算)
- 近交係数は「同じ遺伝子が父方・母方の両方から来る確率」(掛け算)
で、2×5 は片方 (父方 2 代) に偏っているため、両方からそろう確率は低いのです。
評価のしきい値
@(export)
cross_rating :: proc "c" (gen_sire_side, gen_dam_side: i32) -> i32 {
b := blood_percent(gen_sire_side, gen_dam_side)
if b >= 25 do return 2
if b >= 12.5 do return 1
return 0
}血量 25% 以上を「濃い」、12.5% 以上を「ほどよい」としています。競馬の世界でよく言われる目安 (3×4 前後が「活力が出やすい」、2×3 より近いと「体質が弱くなりやすい」) に合わせた経験的な区切りで、遺伝学的な根拠のある線ではありません。
- 代前の祖先 1 頭分の割合は 。血量は出現ごとの割合の和
- 血量は「期待値」で、実際の遺伝子の割合はばらつく
- 近交係数 は「同じ遺伝子を 2 つ持つ確率」
- 血量は和、近交係数は積なので、順位が逆転することがある (2×5 と 3×3)
同じ祖先が父方 4 代目、母方 3 代目と 4 代目の 3 か所に出てくるとき、血量はいくつですか。近交係数 (経路ごとの和、) はいくつですか。
答えを見る
血量 。近交係数は「父方 1 か所 × 母方 2 か所」の 2 経路: 4×3 で 、4×4 で 。合計 。(母方どうしの 3 と 4 は同じ側なので経路になりません。)
3×4 の近交係数を半分にするには、クロスをどう変えればよいですか。
答えを見る
なので、 を 1 増やせば半分になります。3×5 または 4×4 ()。