読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

(42) 遺伝的組み換え

二組の遺伝子座で組み換えが起こる確率を組み換え価と呼びます。
以下の組み換え価のテーブルを例に、組み換え価から遺伝的距離を求めることを考えます。

遺伝子座の組 組み換え価(%)
a-b 50
a-c 15
a-d 38
a-e 8
b-c 50
b-d 13
b-e 50
c-d 50
c-e 7
d-e 45

距離に関してすべてを満足する解はないことが簡単にわかりますので、誤差を最小にするような戦略を取ります。
「遺伝的距離が短い組み換え価ほど信頼性がある」ことを以下の式のように考えます。

ここで、は遺伝的距離、は組み換え価です。誤差がで重み付けされていることがわかります。

では、誤差を最小にする遺伝的距離を求めてみましょう。

/* 7.3.7m */
load("lbfgs")$
  
s(d, p) := ((d/p)^2 - 1)^2$
err : s(a - b, 50) + s(a - c, 15) + s(a - d, 38) + s(a - e, 8) + s(b - c, 50) + s(b - d, 13) + s(b - e, 50) + s(c - d, 50) + s(c - e, 7) + s(d - e, 45)$
a : 0$
lbfgs(err, [b, c, d, e], [20, -10, 10, -10], 1e-10, [0, 0]);
*************************************************
  N=    4   NUMBER OF CORRECTIONS=25
       INITIAL VALUES
 F=  5.532392478329301D+00   GNORM=  3.773739653999518D-01
*************************************************
   I  NFN     FUNC                    GNORM                   STEPLENGTH
   1    3     4.024972021715997D+00   3.082270551178618D-01   1.324945666217556D+01  
  15   20     3.559124965332480D-01   1.914878855461264D-09   1.000000000000000D+00  
 THE MINIMIZATION TERMINATED WITHOUT DETECTING ERRORS.
 IFLAG = 0

使用した機能


遺伝的距離が求められました。

未参考文献

  1. Russell, Genetics