ミトコンドリア・シミュレータ その4

たけ(tk)GGB03124@nifty.ne.jp

 大三元さんからのリクエストがあったので・・、
  
  「ある二人の人物のmtDNAがN個違う場合に、その両人の母系の遠い
祖先が分岐したのはいつ頃と推定できるか」
  
というような計算をしてみました。(ベースになっているのは、2000年
9月頃にニフティの古代史の会議室 nifty:FREKI/MES/14/2112 にアップし
たものです)。

  おおざっぱな結論を言ってしまえば・・、

  十中八九(じゅっちゅうはっく)でよければ・・、

  変異がなければ、3万5000年前より後に分岐した。
  変異が一つなら、1万年前から5万年前の間に分岐した。
  変異が2個なら、1万5000年前から7万年前の間に分岐した。
  変異が3個なら、2万5000年前から9万年前の間に分岐した。
  変異が4個なら、3万5000年前から11万年前の間に分岐した。
  変異が5個なら、4万5000年前から13万年前の間に分岐した。
  
てな感じになります。

  「十中八九(じゅっちゅうはっく)」というのは「前後10%の可能性を
除いた80%の部分の範囲」では、という意味です。これはどういうことか
というと、5回答えた場合に1回は間違っている、という意味でもあります。

  5回に1回はずれでは精度が低すぎるから、「前後1%を除いた98%以
上の確率で言える」ように答えたい、と言うのであれば、表の1%と99%
の範囲をみればよいです。「変異が3個ある場合には5000年前(☆)か
ら14万年前(★)の間に分岐したことがほぼ確実」と言えるでしょう。
しかし、13万5000年などという長期間で答えたのでは、納得してくれ
る人は少ないでしょうね。意味があると言えばあるけど・・。そこら辺の評
価は読者にお任せします。

 変異が一つだから平均1万4000年前に分岐したはずだ、といっても、
実際には1世代前に分岐した(この二人は姉妹)かも知れない。し、9万年
前(△)に遡らなければ同一の母親にたどり着かないかも知れない(1.03% の
確率でその可能性がある)。したがって、本当のことは全然分からない。け
れども、確率としては平均やだいたいの範囲は計算できる、ということです。

 「ねえ、今度のテスト何点とれた?」
  「クラスの平均点は55点だったよ」
  「だから、平均じゃなくて君は何点取ったのさ」
  「クラスの人の得点分布をみると、十中八九、40点から70点というと
 ころかな」
 「いいたくないの?」
  「もらってすぐ捨てちゃったし、忘れちゃった」
  「・・・」

  では、結果として出てきた表をあげておきます。数字だらけで目眩がしま
すね。
  
  十中八九(じゅっちゅうはっく)でよければ、ということで10%のライ
ンに「----」、90%のラインに「====」を引いておきました。

  累積(%)        0     1     2     3     4     5     6     7 
nen   5000 :  30.04   9.02   1.59   0.19   0.02   0.00   0.00   0.00 
                     -----         ☆☆☆
nen  10000 :  51.06  21.65   6.05   1.25   0.21   0.03   0.00   0.00 
                            -----
nen  15000 :  65.76  34.91  13.07   3.75   0.88   0.17   0.03   0.00 
nen  20000 :  76.05  47.27  21.81   7.91   2.36   0.60   0.13   0.03 
                                   -----
nen  25000 :  83.25  58.08  31.36  13.60   4.90   1.50   0.40   0.10 
nen  30000 :  88.29  67.16  40.99  20.47   8.58   3.08   0.97   0.27 
              =====                       -----
nen  35000 :  91.81  74.56  50.16  28.11  13.36   5.48   1.97   0.63 
nen  40000 :  94.27  80.48  58.53  36.09  19.06   8.75   3.54   1.28 
                                                 -----
nen  45000 :  95.99  85.14  65.95  44.04  25.46  12.87   5.76   2.31 
nen  50000 :  97.20  88.76  72.35  51.67  32.28  17.75   8.68   3.83 
                     =====                              -----
nen  55000 :  98.04  91.55  77.77  58.78  39.26  23.25  12.31   5.89 
nen  60000 :  98.63  93.68  82.29  65.23  46.18  29.20  16.58   8.54 
                                                               -----
nen  65000 :  99.04  95.29  86.00  70.97  52.85  35.41  21.42  11.79 
nen  70000 :  99.33  96.51  89.01  75.98  59.13  41.71  26.70  15.62 
                            =====
nen  75000 :  99.53  97.42  91.42  80.30  64.92  47.93  32.29  19.95 
nen  80000 :  99.67  98.09  93.34  83.96  70.16  53.93  38.05  24.72 
nen  85000 :  99.77  98.60  94.86  87.04  74.83  59.62  43.85  29.82 
nen  90000 :  99.84  98.97  96.05  89.59  78.94  64.92  49.57  35.14 
                     △△△        =====
nen  95000 :  99.89  99.25  96.98  91.69  82.51  69.78  55.10  40.58 
nen 100000 :  99.92  99.45  97.70  93.41  85.57  74.17  60.37  46.03 
nen 105000 :  99.95  99.60  98.25  94.80  88.18  78.10  65.30  51.40 
                                          =====
nen 110000 :  99.97  99.71  98.67  95.91  90.38  81.56  69.87  56.59 
nen 115000 :  99.98  99.79  99.00  96.80  92.21  84.59  74.04  61.56 
nen 120000 :  99.99  99.85  99.25  97.51  93.73  87.20  77.81  66.24 
nen 125000 :  99.99  99.89  99.44  98.07  94.99  89.45  81.18  70.59 
                                                 =====
nen 130000 : 100.00  99.92  99.58  98.52  96.02  91.36  84.16  74.60 
nen 135000 : 100.00  99.95  99.69  98.86  96.85  92.98  86.77  78.26 
                                   ★★★
nen 140000 : 100.00  99.96  99.77  99.13  97.53  94.33  89.05  81.55 
                                                        =====
nen 145000 : 100.00  99.97  99.83  99.34  98.07  95.46  91.01  84.51 
nen 150000 : 100.00  99.98  99.87  99.50  98.51  96.40  92.70  87.12 
nen 155000 : 100.00  99.99  99.91  99.63  98.86  97.17  94.13  89.42 
                                                               =====
nen 160000 : 100.00  99.99  99.93  99.72  99.13  97.81  95.34  91.44 
nen 165000 : 100.00 100.00  99.95  99.80  99.35  98.32  96.37  93.18 
nen 170000 : 100.00 100.00  99.96  99.86  99.52  98.74  97.22  94.69 
nen 175000 : 100.00 100.00  99.97  99.90  99.66  99.08  97.93  95.98 
nen 180000 : 100.00 100.00  99.98  99.93  99.76  99.35  98.52  97.08 
nen 185000 : 100.00 100.00  99.99  99.96  99.85  99.57  99.01  98.01 
nen 190000 : 100.00 100.00  99.99  99.97  99.91  99.75  99.41  98.79 
nen 195000 : 100.00 100.00 100.00  99.99  99.96  99.89  99.73  99.45 
nen 200000 : 100.00 100.00 100.00 100.00 100.00 100.00 100.00 100.00 
  

ミトコンドリア・シミュレータ その3 へ戻る ミトコンドリア・シミュレータ その5 へ  (↓にまだ、続きがあります)
 上の表は「累積」の表ですが、その前提となったのは下の「分布」の表です。 これを見ると、「平均1万4000年」(と言われている)の倍数の辺り peek が入っていることが分かります。  「peek の頃に分岐した可能性が一番高い」と言うことは出来ますが、変異 が一個の場合でも高々14%程度に確率で当たるにすぎません。これは、さい ころを2個振ったときに出た目の合計が7である確率(1/6=16.7%) より低いのです。 分布(%) 0 1 2 3 4 5 6 7 nen 5000 : 30.04 9.02 1.59 0.19 0.02 0.00 0.00 0.00 nen 10000 : 21.02 12.63 4.46 1.06 0.19 0.03 0.00 0.00 peek nen 15000 : 14.71 13.25 7.02 2.50 0.67 0.14 0.03 0.00 nen 20000 : 10.29 12.36 8.74 4.16 1.48 0.42 0.10 0.02 nen 25000 : 7.20 10.81 9.56 5.68 2.54 0.91 0.27 0.07 peek nen 30000 : 5.04 9.08 9.63 6.87 3.68 1.58 0.57 0.18 nen 35000 : 3.52 7.41 9.17 7.64 4.78 2.40 1.00 0.36 nen 40000 : 2.46 5.92 8.38 7.98 5.70 3.27 1.57 0.65 peek nen 45000 : 1.72 4.66 7.42 7.95 6.39 4.12 2.22 1.03 nen 50000 : 1.21 3.62 6.40 7.63 6.82 4.88 2.92 1.51 nen 55000 : 0.84 2.79 5.42 7.11 6.98 5.50 3.62 2.06 peek nen 60000 : 0.59 2.13 4.52 6.45 6.92 5.95 4.28 2.65 nen 65000 : 0.41 1.61 3.71 5.74 6.67 6.21 4.84 3.25 nen 70000 : 0.29 1.21 3.01 5.02 6.28 6.30 5.28 3.83 peek nen 75000 : 0.20 0.91 2.41 4.32 5.79 6.22 5.59 4.34 nen 80000 : 0.14 0.68 1.92 3.67 5.24 6.01 5.76 4.77 peek nen 85000 : 0.10 0.51 1.52 3.08 4.67 5.69 5.80 5.10 nen 90000 : 0.07 0.38 1.19 2.55 4.11 5.30 5.72 5.32 nen 95000 : 0.05 0.28 0.93 2.10 3.57 4.86 5.53 5.44 nen 100000 : 0.03 0.20 0.72 1.71 3.06 4.39 5.27 5.45 nen 105000 : 0.03 0.15 0.55 1.39 2.61 3.92 4.94 5.36 nen 110000 : 0.02 0.11 0.43 1.11 2.20 3.46 4.57 5.20 nen 115000 : 0.01 0.08 0.33 0.89 1.83 3.03 4.17 4.96 nen 120000 : 0.01 0.06 0.25 0.71 1.52 2.62 3.77 4.68 nen 125000 : 0.00 0.04 0.19 0.56 1.26 2.25 3.37 4.36 nen 130000 : 0.00 0.03 0.14 0.44 1.03 1.91 2.98 4.01 nen 135000 : 0.00 0.02 0.11 0.35 0.84 1.62 2.62 3.65 nen 140000 : 0.00 0.02 0.08 0.27 0.68 1.36 2.27 3.30 nen 145000 : 0.00 0.01 0.06 0.21 0.54 1.13 1.96 2.95 nen 150000 : 0.00 0.01 0.05 0.16 0.44 0.94 1.69 2.62 nen 155000 : 0.00 0.01 0.03 0.13 0.35 0.77 1.43 2.30 nen 160000 : 0.00 0.00 0.03 0.10 0.28 0.63 1.21 2.01 nen 165000 : 0.00 0.00 0.02 0.08 0.22 0.52 1.02 1.75 nen 170000 : 0.00 0.00 0.01 0.06 0.17 0.42 0.86 1.50 nen 175000 : 0.00 0.00 0.01 0.04 0.14 0.34 0.71 1.29 nen 180000 : 0.00 0.00 0.01 0.03 0.11 0.27 0.59 1.10 nen 185000 : 0.00 0.00 0.01 0.03 0.08 0.22 0.49 0.93 nen 190000 : 0.00 0.00 0.00 0.02 0.06 0.18 0.40 0.79 nen 195000 : 0.00 0.00 0.00 0.01 0.05 0.14 0.32 0.66 nen 200000 : 0.00 0.00 0.00 0.01 0.04 0.11 0.27 0.55
 「分布」の表の前に計算したのが、 「ある二人がN年前に分岐したとしたら、現在いくつの変異があるか」 の分布の表です。  この表では横方向の合計が100%になります。この表を再計算して縦方 向が100%になるように再計算したのが「分布」の表で、さらに、「分布」 を累計したのが「累積」の表になります。 peek に関しては上の「分布」と一致していることが分かるでしょう。 なお、この表で分かるとおり、変異が2個以上の場合20万年までの計算 でも0%(0.01%未満)になっていません。従って、「これを縦計算した場 合には1%以上の可能性(20万年以上の可能性)が無視されてしまってい ます。その点で、上記の「分布」「累積」の表は完全ではありませんのでご 注意ください。      0   1   2   3 4 5 6 7 8   9 5000 69.96% 25.00% 4.45% 0.53% 0.05% 0.00% 0.00% 0.00% 0.00% 0.00% 10000 48.95% 34.99% 12.48% 2.97% 0.53% 0.08% 0.01% 0.00% 0.00% 0.00% peek 15000 34.25% 36.72% 19.66% 7.01% 1.87% 0.40% 0.07% 0.01% 0.00% 0.00% 20000 23.96% 34.25% 24.46% 11.64% 4.15% 1.18% 0.28% 0.06% 0.01% 0.00% 25000 16.76% 29.95% 26.75% 15.91% 7.10% 2.53% 0.75% 0.19% 0.04% 0.01% peek 30000 11.73% 25.15% 26.95% 19.24% 10.30% 4.41% 1.57% 0.48% 0.13% 0.03% 35000 8.20% 20.52% 25.66% 21.39% 13.36% 6.68% 2.78% 0.99% 0.31% 0.09% 40000 5.74% 16.40% 23.45% 22.34% 15.95% 9.11% 4.34% 1.77% 0.63% 0.20% peek 45000 4.01% 12.91% 20.76% 22.25% 17.88% 11.49% 6.15% 2.82% 1.13% 0.40% 50000 2.81% 10.04% 17.93% 21.36% 19.07% 13.62% 8.10% 4.13% 1.84% 0.73% 55000 1.96% 7.72% 15.18% 19.89% 19.53% 15.35% 10.04% 5.63% 2.76% 1.20% peek 60000 1.37% 5.90% 12.64% 18.06% 19.36% 16.59% 11.85% 7.25% 3.88% 1.85% 65000 0.96% 4.47% 10.38% 16.07% 18.65% 17.32% 13.40% 8.88% 5.15% 2.66% 70000 0.67% 3.36% 8.42% 14.04% 17.55% 17.56% 14.63% 10.45% 6.53% 3.62% 75000 0.47% 2.52% 6.76% 12.08% 16.18% 17.34% 15.48% 11.85% 7.93% 4.72% 80000 0.33% 1.88% 5.38% 10.26% 14.66% 16.75% 15.96% 13.03% 9.30% 5.90% 85000 0.23% 1.40% 4.25% 8.61% 13.07% 15.87% 16.06% 13.93% 10.57% 7.13% 90000 0.16% 1.04% 3.33% 7.15% 11.49% 14.78% 15.84% 14.54% 11.68% 8.34% 95000 0.11% 0.77% 2.60% 5.88% 9.98% 13.55% 15.33% 14.86% 12.60% 9.50% 100000 0.08% 0.56% 2.01% 4.80% 8.57% 12.25% 14.59% 14.89% 13.29% 10.55% 105000 0.06% 0.41% 1.55% 3.88% 7.29% 10.94% 13.68% 14.65% 13.74% 11.45% 110000 0.04% 0.30% 1.19% 3.12% 6.14% 9.66% 12.65% 14.20% 13.95% 12.18% 115000 0.03% 0.22% 0.91% 2.50% 5.13% 8.44% 11.55% 13.56% 13.93% 12.71% 120000 0.02% 0.16% 0.69% 1.99% 4.26% 7.30% 10.44% 12.78% 13.70% 13.04% 125000 0.01% 0.12% 0.53% 1.57% 3.51% 6.27% 9.33% 11.90% 13.28% 13.18% 130000 0.01% 0.09% 0.40% 1.24% 2.87% 5.33% 8.26% 10.96% 12.72% 13.12% 135000 0.01% 0.06% 0.30% 0.97% 2.34% 4.51% 7.25% 9.98% 12.04% 12.90% 140000 0.00% 0.05% 0.23% 0.75% 1.89% 3.78% 6.30% 9.01% 11.26% 12.52% 145000 0.00% 0.03% 0.17% 0.59% 1.52% 3.15% 5.44% 8.06% 10.43% 12.01% 150000 0.00% 0.02% 0.13% 0.45% 1.22% 2.61% 4.67% 7.15% 9.57% 11.40% 155000 0.00% 0.02% 0.09% 0.35% 0.97% 2.15% 3.97% 6.29% 8.71% 10.71% 160000 0.00% 0.01% 0.07% 0.27% 0.77% 1.77% 3.36% 5.50% 7.85% 9.97% 165000 0.00% 0.01% 0.05% 0.21% 0.61% 1.44% 2.83% 4.77% 7.03% 9.21% 170000 0.00% 0.01% 0.04% 0.16% 0.48% 1.17% 2.37% 4.11% 6.24% 8.43% 175000 0.00% 0.00% 0.03% 0.12% 0.38% 0.95% 1.97% 3.52% 5.51% 7.65% 180000 0.00% 0.00% 0.02% 0.09% 0.30% 0.76% 1.63% 3.00% 4.83% 6.90% 185000 0.00% 0.00% 0.02% 0.07% 0.23% 0.61% 1.35% 2.54% 4.20% 6.17% 190000 0.00% 0.00% 0.01% 0.05% 0.18% 0.49% 1.11% 2.15% 3.64% 5.49% 195000 0.00% 0.00% 0.01% 0.04% 0.14% 0.39% 0.90% 1.80% 3.14% 4.85% 200000 0.00% 0.00% 0.01% 0.03% 0.11% 0.31% 0.74% 1.50% 2.69% 4.27%
ミトコンドリア・シミュレータ その3 へ戻る ミトコンドリア・シミュレータ その5 へ  (↓にまだ、続きがあります)
 では、これらの計算をしたスクリプトを紹介しておきます。 計算方法は nifty:FREKI/MES/14/2107 で早傘さんに教えてもらった次の 方法です。 》;(1) 計算式はどうなっているのでしょうか?。 》 》変異の発生頻度  7/10^8(変異/座位/年) に 》500座位を掛けて 35/10^6(変異/年) 》1世代28年として 35*28/10^6=0.00098(変異/世代) 》端数を丸めて 0.001(変異/世代)とする 》 》a世代の間にb回の変異が起こる確率は、 》 》combin(a,b)*0.001^b*0.999^(a-b) 》###( combin(a,b) は、a個からb個を取出す"組合せ")### 》 》同一先祖に由来する2者のC年後の異なり字数を計算する場合 》 》a=C*2/28=C/14 として計算することになりますが、僕の場合は、 》aを切りのよい数にして、C=14a として表を作成しました(だから1400年の倍数 》になっている) 》 》;(2)1000年(できれば500年)単位で、2万年くらいまでを計 》; 算した表を突くっていただけないでしょうか?。 》 》以上の計算式をワークシートに設定すれば、いくらでも表が作れると思います 》 》;(3)下の表では、横軸の合計が100%になっていますが(分岐時期 》; から変異数を推定する方法)、縦軸の合計が100%になるように 》; はできないでしょうか?。(変異数から分岐時期を推定する方法)。 》 》まずは、確率が十分に小さくなるまで長い年数まで、表を縦に伸ばす。(異なり 》字数1の場合は7000世代程度で十分か。理想は1世代刻みだが、面倒なので、僕は 》確率の変化が少ないところでは200世代刻み、変化が多いところでは50世代刻みに 》しました) 》 》縦の合計を出し、(刻みが一定でない場合は、重みを付けて集計する) 》それで、各年代の確率を割り、範囲で集計すれば各期間の確率が計算でき 》ます。 -- #!ruby $fact_data = { 0 => 1 } def fact100(n) f = $fact_data[n] return f if f f = n * fact(n-1) $fact_data.store( n,f ) return f end def fact(n) return 1 if n == 0 f = 1 while n>0 return f*fact100(n-1) if ( n % 100 ) == 1 f *= n n -= 1 end return f end def combin(a,b) ## combination fact(a,b)/fact(a-b) end ##a世代の間にb回の変異が起こる確率は、 ## ##combin(a,b)*0.001^b*0.999^(a-b) ###( combin(a,b) は、a個からb個を取出す"組合せ")### def heni(a,b) combin(a,b)*(0.00098**b)*(0.99902**(a-b)) end def heni_str(nen,sedai) format( "%6.2f%" , (heni( nen/14 , sedai)*100.0) ) end ##for nen in [2800,5600,11200,16800] for i in 1..20 nen = i*5000 print "%6d" % nen for sedai in 0..8 print heni_str( nen,sedai) end puts end --  これを実行すると、一番下の横方向の分布表が出てきます。
 横方向の分布表を初期データとして、縦方向の分布表、累積表を出したの は次のスクリプトです。 -- #!ruby require "phi" ; include Phi s = <<EOS 5000 69.96% 25.00% 4.45% 0.53% 0.05% 0.00% 0.00% 0.00% 0.00% 0.00% 10000 48.95% 34.99% 12.48% 2.97% 0.53% 0.08% 0.01% 0.00% 0.00% 0.00% 15000 34.25% 36.72% 19.66% 7.01% 1.87% 0.40% 0.07% 0.01% 0.00% 0.00% 20000 23.96% 34.25% 24.46% 11.64% 4.15% 1.18% 0.28% 0.06% 0.01% 0.00% 25000 16.76% 29.95% 26.75% 15.91% 7.10% 2.53% 0.75% 0.19% 0.04% 0.01% 30000 11.73% 25.15% 26.95% 19.24% 10.30% 4.41% 1.57% 0.48% 0.13% 0.03% 35000 8.20% 20.52% 25.66% 21.39% 13.36% 6.68% 2.78% 0.99% 0.31% 0.09% 40000 5.74% 16.40% 23.45% 22.34% 15.95% 9.11% 4.34% 1.77% 0.63% 0.20% 45000 4.01% 12.91% 20.76% 22.25% 17.88% 11.49% 6.15% 2.82% 1.13% 0.40% 50000 2.81% 10.04% 17.93% 21.36% 19.07% 13.62% 8.10% 4.13% 1.84% 0.73% 55000 1.96% 7.72% 15.18% 19.89% 19.53% 15.35% 10.04% 5.63% 2.76% 1.20% 60000 1.37% 5.90% 12.64% 18.06% 19.36% 16.59% 11.85% 7.25% 3.88% 1.85% 65000 0.96% 4.47% 10.38% 16.07% 18.65% 17.32% 13.40% 8.88% 5.15% 2.66% 70000 0.67% 3.36% 8.42% 14.04% 17.55% 17.56% 14.63% 10.45% 6.53% 3.62% 75000 0.47% 2.52% 6.76% 12.08% 16.18% 17.34% 15.48% 11.85% 7.93% 4.72% 80000 0.33% 1.88% 5.38% 10.26% 14.66% 16.75% 15.96% 13.03% 9.30% 5.90% 85000 0.23% 1.40% 4.25% 8.61% 13.07% 15.87% 16.06% 13.93% 10.57% 7.13% 90000 0.16% 1.04% 3.33% 7.15% 11.49% 14.78% 15.84% 14.54% 11.68% 8.34% 95000 0.11% 0.77% 2.60% 5.88% 9.98% 13.55% 15.33% 14.86% 12.60% 9.50% 100000 0.08% 0.56% 2.01% 4.80% 8.57% 12.25% 14.59% 14.89% 13.29% 10.55% 105000 0.06% 0.41% 1.55% 3.88% 7.29% 10.94% 13.68% 14.65% 13.74% 11.45% 110000 0.04% 0.30% 1.19% 3.12% 6.14% 9.66% 12.65% 14.20% 13.95% 12.18% 115000 0.03% 0.22% 0.91% 2.50% 5.13% 8.44% 11.55% 13.56% 13.93% 12.71% 120000 0.02% 0.16% 0.69% 1.99% 4.26% 7.30% 10.44% 12.78% 13.70% 13.04% 125000 0.01% 0.12% 0.53% 1.57% 3.51% 6.27% 9.33% 11.90% 13.28% 13.18% 130000 0.01% 0.09% 0.40% 1.24% 2.87% 5.33% 8.26% 10.96% 12.72% 13.12% 135000 0.01% 0.06% 0.30% 0.97% 2.34% 4.51% 7.25% 9.98% 12.04% 12.90% 140000 0.00% 0.05% 0.23% 0.75% 1.89% 3.78% 6.30% 9.01% 11.26% 12.52% 145000 0.00% 0.03% 0.17% 0.59% 1.52% 3.15% 5.44% 8.06% 10.43% 12.01% 150000 0.00% 0.02% 0.13% 0.45% 1.22% 2.61% 4.67% 7.15% 9.57% 11.40% 155000 0.00% 0.02% 0.09% 0.35% 0.97% 2.15% 3.97% 6.29% 8.71% 10.71% 160000 0.00% 0.01% 0.07% 0.27% 0.77% 1.77% 3.36% 5.50% 7.85% 9.97% 165000 0.00% 0.01% 0.05% 0.21% 0.61% 1.44% 2.83% 4.77% 7.03% 9.21% 170000 0.00% 0.01% 0.04% 0.16% 0.48% 1.17% 2.37% 4.11% 6.24% 8.43% 175000 0.00% 0.00% 0.03% 0.12% 0.38% 0.95% 1.97% 3.52% 5.51% 7.65% 180000 0.00% 0.00% 0.02% 0.09% 0.30% 0.76% 1.63% 3.00% 4.83% 6.90% 185000 0.00% 0.00% 0.02% 0.07% 0.23% 0.61% 1.35% 2.54% 4.20% 6.17% 190000 0.00% 0.00% 0.01% 0.05% 0.18% 0.49% 1.11% 2.15% 3.64% 5.49% 195000 0.00% 0.00% 0.01% 0.04% 0.14% 0.39% 0.90% 1.80% 3.14% 4.85% 200000 0.00% 0.00% 0.01% 0.03% 0.11% 0.31% 0.74% 1.50% 2.69% 4.27% EOS a = [] s.each{|line| if /^\D*(\d+)\D+(\d+\.\d+)\D+(\d+\.\d+)\D+(\d+\.\d+)\D+(\d+\.\d+)\D+(\d+\.\d+)\D+(\d+\.\d+)\D+(\d+\.\d+)\D+(\d+\.\d+)/ =~ line a << [$2, $3, $4, $5, $6, $7, $8, $9].collect{|s| s.to_f } end } sums = [0,0,0,0,0,0,0,0] maxs = [0,0,0,0,0,0,0,0] a.each{|arr| arr.each_with_index{ |val,i| sums[i] += val maxs[i] = val if val > maxs[i] } } b = [] c = [] d = [0,0,0,0,0,0,0,0] h = [] a.each{ |arr| f = [] g = [] arr.each_with_index{ |val,i| e = val / sums[i] d[i] += e f << e g << val / maxs[i] } b << f c << d.dup h << g } def dsp a a.each_with_index{ |aa,i| nen = (i+1)*5000 print "nen %6d : " % nen print aa.collect{|n| "%6.2f " % (n*100.0) } , "\n" } end dsp b dsp c dsp h
ミトコンドリア・シミュレータ その3 へ戻る ミトコンドリア・シミュレータ その5