| Genehunter |
| Genehunterの概要 |
genehunter(新しいversion、genehunter 2が公開されている)は、中くらいまでの大きさの家系を分析する、極めて洗練されたパラメトリック連鎖解析、ノンパラメトリック連鎖解析のプログラムである。用いられているアルゴリズムはそれ以前のものとはかなり異る。古典的遺伝統計学の枠組を超えた、情報学的で近代的なアルゴリズムを用いている。
GenehunterはLander, Greenが開発したアルゴリズムに基づき、Kruglyak, Landerが書いたプログラムによるもので、これをinstallし、使用するのは比較的簡単である。実際に、遺伝子型と表現型のデータと家系情報を入れると、容易にロッド値、Z値などの値が得られる。しかし、用いられている理論は高度なものであり理解することは必ずしも容易ではない。このプログラムの使用については完全に理論は理解しなくても、入力の方法や、アルゴリズムの概要、出て来る値の正しい解釈を知っていなければならない。
GenehunterはC言語で書かれたプログラムであり、http://linkage.rockefeller.edu/soft/のリストからリンクさせダウンロードして自由に使用できる。Solaris、DEC Alpha用にコンパイルされた実行可能なファイルとしても得ることがで、その場合はそのまま用いることができるがソースコードをダウンロードして、各環境でコンパイルし使用することも可能である。
genehunterでは家系の遺伝子の動きを親の祖父由来と祖母由来のアレルのどちらが子へ伝えられるかで表す。そのような減数分裂の動きを継承ベクトル(inheritance vector)として定義する。継承ベクトルは親から子へ伝えられる減数分裂の数だけの因子を持つ列ベクトルである。継承ベクトルの数は座位数である。継承ベクトルの一つの配偶子に相当する因子を確率変数として座位順に見るとマルコフ過程と考えられる。しかし、継承ベクトルをマーカー座位や疾患関連座位の上だけでなく、至る点に定義することも可能である。この場合は連続マルコフ過程になる。
Genehunterは継承ベクトルの要素間の動きをマルコフ過程、しかもそれぞれの時間の情報が完全には与えられていない隠れマルコフ過程と考え、仮想的な疾患関連座位上の継承ベクトルの確率分布を、いくつかの座位上のみに与えられた不完全な遺伝子型データから計算する。そして、その確率分布と個体の表現型から採点関数によりパラメトリック連鎖解析のLODスコア、ノンパラメトリック連鎖(NPL)解析によるNPLスコアを計算する。
| Genehunterの目的 |
Genehunterは中くらいまでの大きさの多数の家系でパラメトリック、ノンパラメトリック連鎖解析の両方を行なうことができるソフトウェアである。さらに、genehunter 2ではTDTも行なうことができる。
パラメトリック連鎖解析の目的は比較的大きな家系で遺伝形式を仮定して、形質に関係する遺伝子座とマーカー遺伝子座の連鎖の有無を検定し、連鎖している場合は組み換え割合を推定することである。最もしばしば用いられるソフトウェアはLinkage packageであるが、この中の多点分析を行なうlinkmapプログラムは、座位数が増えると実行時間が極めて遅くなる。
これに比較してgenehunterはパラメトリック分析でも、座位数が増えても比較的速い速度で計算が可能である。
しかし、家系が大きくなりnon-founderの数が多くなるとlinkmapの方がgenehunterより速くなる。家系のfounderの数をf、non-founderの数をnとすると、genehunterでは 2n-fが16を超さない場合は分析が可能である。これは、継承ベクトルの事実上の要素の数が2n-fであるためである(本来2nなのであるが、founder由来のfは組み換えに関する情報を含まない)。
即ち、genehunterによる分析は中くらいの大きさの家系(2n-fが16を超えない)までであり、それより大きな家系はlinkmapを用いる。
Genehunterによるノンパラメトリック解析は罹患同胞対だけではなく、一家系に二人以上の患者がいるどのような(中くらい以下の大きさの)家系の分析に用いることができる。家系内の患者を二人ずつ比較する採点関数(ペア関数)と全部の患者を同時に比較する採点関数(全関数)を選択できる。
昔ながらの(とはいっても新しいが)罹患同胞対検索も行なうことが可能である(genehunter
2のみ)。
| Genehunterのダウンロードとインストール |
http://linkage.rockefeller.edu/soft/を参照し、そこにあるリストからリンクされているので容易にダウンロードできる。ダウンロードが終ったら、解凍、インストールを行ない、準備を進める。
オリジナルのgenehunterとgenehunter 2がダウンロード可能であるが、ここではgenehunter 2に基づいて解説する。
*はSunOS用(Solarisでも動く)、*はDEC Alpha用。他の場合はsrc/のdirectory内のsource
codeを用いてcompileしなおす。例えば、linuxで使えるようにするには、gccなどのC言語コンパイラーを用いる。正しくインストールすればlinux環境でも正常に動く。添付ファイルであるINSTALL
を良く読み、Makefileの内容を調整してインストールを行なう。
| Genehunterの入力ファイル |
Genehunterも通常の連鎖解析のプログラムと同様に、家系情報と形質とマーカーの情報を含んだファイル(通常、preファイル、またはpedigree
file: 家系ファイルと呼ぶ)と、遺伝子座に関する情報(通常、datファイル、または連鎖パラメータファイルと呼ぶ)を入力ファイルとして作成する。別項参照。
| Genehunterの使用法 |
分析の概要はghとタイプしてプログラムを開始し、続いて、次のコマンドを入力する。(以下は主としてgenehunter 2についての説明であり、genehunterでは実行できないコマンドもある)。
1. load *.datとタイプし、datデータを入力する。
2. scan 家系ファイル名 とタイプし、データの事前の解析を行なう。
このときの家系ファイルとは、Linkage
packageで用いられるped fileとは異なることに注意。Linkage packageではMakepedというプログラムを用いて、オリジナルの家系ファイルをpre
fileからped fileに変換する。genehunterでは、変換前のpre fileを用いる。
問題は、非常に大きな家系がある場合、genehunterはこれを取り扱えないことである。その場合は、いくつかの家族を除外して分析せざるを得ないが、その詳細については省略する。どうしても家族を除外したくない場合はlinkmapなどで分析を行なわざるを得ない。
scanコマンドにより、結果が出力されるが、その意味は後述。
3. postscript onとしてpostscriptファイルを今後の動作で生成させる。
4. total stat
scanコマンドが終った後に用いられる。scanコマンドと同じ項目を各列に持つが、それらの値をすべての家系で総合した値が得られる。また、postscriptオプションがonにセットされている場合は、postcriptファイルが出力される(内容については後述)。
5. その他
estimateとタイプすると罹患同胞対解析(Mapmaker/sibsと同様に)を行なう。
estimateに際してno diminance
varianceかどうかを質問される。通常はdominance varianceありの条件で計算すると良い。この部分はMapmaker/sibsのestimateコマンドと同じ。
exclude
Mapmaker/sibsと同様にexclusion mappingを行なう。
analysis
分析方法を選択する。Defaultではgenehunterはパラメトリック連鎖解析によるLOD値の計算と、ノンパラメトリック連鎖解析(NPL)の両方を行なうようにセットされている。analysisコマンドを用いればLOD、NPLの片方を選択できる。
count recs
このオプションをonとすると、scanの時に、観察されたデータから各区間で組み換えの数を数え、組み換えの期待値と観測値を表示する。ここで、期待値と観測値に大きな隔たりがある場合は、マップか家系データに誤りがある可能性がある。
haplotype
このオプションをonにすると、founderについて最も可能性が強いハプロタイプを出力する。
score
genehunterはパラメトリック連鎖解析とノンパラメトリック連鎖解析の両方を行なうが、ノンパラメトリック連鎖解析では、罹患個体間の同素遺伝子共有の尺度として採点関数(scoring
function)を定義する。これにより、遺伝形式によらない(即ちノンパラメトリック)連鎖解析が可能である。採点関数としてペア関数(pair
function)、全関数(all function)のどちらかを選択できる。ペア関数は罹患対についての同素遺伝子共有を計算するが、全関数は全罹患者についての同素遺伝子共有を同時に計算する。全関数を選択することが作成者によりすすめられている。
これらの統計量はメンデル遺伝からのずれを表し、疾患とマーカー座位が関係なければおおむね正規分布に従うことがわかっている。
use
連鎖パラメータファイルに書かれたmap以外のマップで分析を行なうときに用いる。
single point
onとすれば単点(実は二点)分析(通常は多点分析であるのでoffになっている)を行い、offとすれば多点分析を行なう。
map
function
Map functionをHaldane, Kosambiから選択できる。
increment
多点分析の場合、stepとdistanceを選択できる。increment set 5とすると、各マーカー座位間を5等分して、等分点でlod
scoreなどを計算する。
increment distance 1とすると、マーカー座位に係わらず、第一マーカー座位から1
cMの等間隔の点でlod scoreなどを計算する。
pairs used
罹患同胞対解析の場合、一家系に三人以上の罹患同胞が居る場合のpairの選択法を選ぶ。Defaultでは最初のペアのみが計算されるが、全ペアを計算する(比重補正あり、補正無し)、独立な複数のペアにして計算するなどのオプションを選ぶことができる。
off end
マーカー座位の最初と最後の端を超えて計算を行なう(多点分析のみ)。off end
10とすると10 cM超えて行なう。
max bits
前述のように、genehunterは一家系のfounder (f)、non-founder (n)の数が2n-fで16を超えると事実上計算できない。そのため、これが16を超えると継承ベクトルの次元を16にして計算を行なう。これはmax
bitsが16にセットされているためである。これをmax bitsを変化させることで変えることができる。本来、継承ベクトルの次元は2nであるが、fは組み換えに関する情報を含まないので省略できる。
discard
genehunterは大きな家系の分析が苦手である。discardオプションをonにするとscanコマンド実行の時、より情報の少ない家族員から除外する。もちろん、これにより検定力が低下することを覚悟すべきである。
skip large
このオプションをonにすると、max bitsの制限に従って、大きすぎる家系は全部除外される。offにすると大きすぎる家系の家族員を除外して、計算可能な状態にして計算を続ける。
units
出力をcMで行なうか、組み変え割合で行なうかを選択する。
tdt,
tdt2, tdt3, tdt4
TDT (transmission disequilibrium test)を行なう。tdt2, 3, 4はそれぞれ2,
3, 4座位のTDT解析を行なう。
6. ghの実行中に解らなくなったらhelpとタイプするとヘルプメニューがでる。例えば、off
endについてわからなければ、helpの後に簡単な説明がなされる。更に詳しくoff
endの事が知りたい場合はhelp off endとタイプする。
| Genehunterの出力データの解釈 |
2. total statの出力
total statの出力の意味はscanの出力と同じである。これが、それぞれの列について統計量等の合成値が出力される。また、postscriptオプションがonになっている場合は、次のpostscriptファイルが出力される。いずれも横軸は第一マーカー座位からの距離、縦軸はそれぞれの統計量である。
lod_plot.ps : パラメトリック連鎖解析によるLODスコア
npl_plot.ps: ノンパラメトリック連鎖解析によるNPL統計量
(オプションによりペア関数と全関数のどちらかが選ばれる)
info_content.ps: 情報含有量
3. estimateからの出力
genehunter 2ではMapmaker/sibsのような同胞対のIBDの最尤推定を行なう機能も含まれている(genehunterには無い)。estimateは罹患同胞対解析でIBDの最ゆう推定値を計算するコマンドである。genehunter
2では罹患同胞対QTL分析も行なえるので、estimateは罹患同胞対定性的分析を行なうコマンドと言うべきである。estimateコマンドによる出力はMapmaker
sibsのestimateによるものと同じである。
| Genehunterの理論の詳細 |
1. 継承ベクトル
Genehunterは多点分析をパラメトリック、ノンパラメトリック両方で行い、パラメトリック解析によるLOD score計算、ノンパラメトリック連鎖解析によるNPL統計量の計算、その他の解析を行なうソフトウェアである。
GenehunterにimplementされているアルゴリズムはLinkage package(パラメトリック解析)ともMapmaker/sibs(ノンパラメトリック解析)とも異なったものである。連鎖解析の基本は、まず家系から疾患とマーカーの継承のパターンの情報を抽出し、それを分析して形質に関係する遺伝子が存在するかをテストすることである。そのため、まず、家系に継承のパターンの情報を含む継承ベクトルを定義する。
継承ベクトルv(x)は、各点xについて、すべての非創設者(nonfounder)に与えられる2ビットの二進数の集合として定義され、
のp1は第一番目の非創始者の父由来の遺伝子が祖父由来の場合は0、祖母由来の場合は1とする。m1は同様に母由来の遺伝子について記載する。このベクトルをxのすべてについて考慮すれば、家系の多型の継承情報のすべてが記載される。
2. 継承分布
このベクトルのうち、可能なベクトル上での確率分布を考えると、遺伝子型のデータが全く無い状態ではこの確率分布は完全に平坦である(事前分布)。遺伝子型が判明した段階では、この確率分布が一様ではなくなる(事後分布)。特定のベクトルの上での確率分布を継承分布と呼ぶ。この継承分布を各点で計算することにより、lod scoreの計算や情報含有量の計算が可能である。
Genehunterでは継承パターンを、(これ以下、すべて書き換え)組み換えにより状態変換を起こすマルコフ連鎖としてとらえ、隠れマルコフモデルを用いて継承分布を計算する。
継承ベクトルは伝達される配偶子毎に2n-fビットの二進数で表される(もともとは2nなのであるが、founder由来の配偶子の情報には組み換えの情報は無い)。染色体上のある点 x の上の継承ベクトルをv(x)とすると、この特定の桁iは、その直前のxの継承ベクトルのi桁と、その間に組み換えが起きたかどうかによって決まる。このように継承ベクトルを連続的に動くxの関数として定義すると、推移行列が一定の連続斉次マルコフ過程となる。マーカー座位、及び疾患関連座位のみの継承ベクトルを考えれば、非連続非斉次マルコフ過程となる。
このように継承ベクトルの性格を把握すれば、あらゆる点上での継承ベクトルの確率分布を計算できる。全く情報が無い状態では、この分布は平坦である。即ち、0から
までのすべての継承ベクトルが等確率、
で分布する。次に、x
点上の情報のみによるv(x)の確率分布をベイズの定理により計算する。これにより、マーカー座位においては遺伝子型の情報が各個体に与えられているのでv(x)
の確率分布は平坦でなくなる。
次に、隠れマルコフ過程の前方ー後方条件化アプローチにより、すべての座位のデータの基での各点でのv(x)の確率分布を計算する。
3. 情報含有量マッピング
Genehunterでは情報含有量という概念を導入している。各、点での情報含有量の抽出は全事象を形成するすべての事象の確率から、エントロピーを計算することにより可能である。エントロピーはビットの単位となっている。事象 i (i=0,1, .. ,n)の確率をPiとすると、エントロピーは
で表されるが (ここでPiはi番目の事象の起こる確率)、
全く情報が無い場合は、点xにおけるv(x)上の確率分布は平坦であり、それぞれ1/2^(2n-f)なので、この時のエントロピーをE0とすると
E0=2n-f
もし、v(x)が一つの継承ベクトルwに確定すれば(この時、i=jとする)、Piはi=jの時のみ1となるので、
E=0
一般に
によりx点での情報含有量と定義する。ここで、E(x)は点xにおける多点継承分布のエントロピーである。
4. 採点関数
以上のように、全ての点xにおける継承分布が計算できたとして、疾患のあるなしに関する座位(形質座位)をどのように分析できるであろうか。Genehunterではパラメトリック連鎖解析とノンパラメトリック連鎖解析を統合した、採点関数(scoring function)という概念を導入している。
ある座位が形質座位であるかどうかの指標となる統計量、採点関数を定義する。パラメトリック連鎖解析もノンパラメトリック連鎖解析も、この採点関数の違いにより定義できると考えるのである。採点関数S(w, Φ)をx上の特定の継承ベクトルwについて、家系上の表現型Φの関数として定義する。
実際上は、x上でv(x)は確率分布を取るので、採点関数はv(x)上の継承分布を考慮したS(w, Φ)の期待値として表され、
パラメトリック連鎖解析の場合は、尤度比(即ち、xが疾患遺伝子座と考えたときのPhenotypeの尤度と、関係ないと考えたときの尤度の比)を継承ベクトルと表現型の関数と考え、採点関数になるようにすればよい。そして、x上の継承ベクトルが確定していれば、採点関数は、
ここで、P(Φ|v)は単に、特定の継承ベクトルvの条件下での観察された表現型Φの尤度である。Puniform(w)は均等分布の下でのwの確率である。
一般的には継承ベクトルは確定せず、継承分布が解っているので、それに従って、次の採点関数の期待値を計算する。
ここで、Pcomplete(w) は、すべての座位のデータの下でのwの事後確率である。この関数はLinkage packageなどで用いられている尤度比と同じものであることが証明される。
ノンパラメトリック連鎖解析では、この採点関数について、ペア関数 (Spair)と全関数 (Sall)を用いる。ペア関数は一つの家系の患者をペア毎に比較して、IBDの数を数える方法である。当然、継承ベクトルによりIBDは直ちに計算できる。ペア関数は、任意のペアから一つずつ対立遺伝子を採取した場合、それがIBDである対立遺伝子のペアの数と定義される。
全関数は「それぞれの患者から一つの対立遺伝子を選択することによってある集合をつくりあげる順列の平均数」と定義される。それは以下の式であり、hは、患者それぞれから一つの対立遺伝子を選択することによりできあがるある集合であり、bi(h)はi番目のfounderの対立遺伝子の数
(i=1, ...,2f) であり、aは患者数である。
いずれの関数を用いるにせよ、標準正規化したスコアを以下のように用いることができ
μとσはそれぞれ平坦分布(情報が全く無い場合)の時の平均と標準偏差である。当然、連鎖が無い場合のZの分布は平均0、分散1である。家系が複数の場合はγiをΣγi =1となるように指定して、
のようにする。一般に、家系数をmとしてγi = 1/√mを用いる。
5. 有意差検定
Z値の有意差検定は二つの方法による。厳密分布による検定では、連鎖無しの帰無仮説のもとでのZ値の分布を求め、それから危険率を計算する。
正規分布への近似による方法では、Z値から正規分布表により危険率を計算する。