Rのhaplo.statsの使い方(2)ハプロタイプ推定
- 推定アルゴリズム
- EMベース
- EMとの相違は、
- 推定の過程で、設定閾値に満たない頻度のハプロタイプを除去する
- 推定の初めから、全多型の作るハプロタイプ空間を相手にせずに、解析多型数を増やしながら進める(SNPHAP by David Clayton http://www-gene.cimr.cam.ac.uk/clayton/software/snphap.txt:SNPHAPと同様)
- EMとの相違は、
- EMベース
- 使用法
- 入力は2方法
- (1)個人別のdiploidジェノタイプデータと、多型名データを入力する
- (2)同一ジェノタイプの個人について、人数をカウントし、diploidジェノタイプデータとその人数、および、多型名データをを入力する
- さまざまな入力形式に対応できるように作られているが、それが、かえって、使用法のオフィシャル説明文をわかりにくくしているので、思い切って、入力フォーマットを次のように固定したテキストファイルで所有しているものとする
- 入力方法(1)と(2)とでは、圧倒的に(2)の方が早い
- 入力方法(1)の場合
- 入力は2方法
1 1 0 0 1 1 9 9
0 1 0 1 0 0 1 1
1 1 0 1 0 0 0 0
9 9 0 1 1 1 0 1
- 多型名データファイル
- Haploviewの.infoファイルと同形式とする
- 行数は多型数、列数は2
- 第1カラムは多型名、第2カラムは多型位置
- タブ区切り
- サンプルファイル(4多型)"snp.info"
SNP34 47063263
SNP56 47063331
SNP62 47063675
SNP78 47067844
- 実行
- コマンドは以下の5つ
library(haplo.stats)
geno<-read.table("genotype.txt",FALSE,"\t")
label1<-read.table("snp.info",FALSE,"\t")
save.em.keep<-haplo.em(geno,locus.label=label1$V1,miss.val=9)
print.haplo.em(save.em.keep)
- 第1コマンドでhaplo.statsパッケージの読み込み
- 第2コマンドでgenotypeデータをgenoオブジェクトに取り込み
- 第3コマンドで、多型名データをlabel1オブジェクトに取り込み
- 第4コマンドで推定実行(ジェノタイプデータをgenoで引渡し、多型名とlabel1オブジェクトの第1列(label1$V1)で渡している。不明値は9なので、miss.val=9と指定している)
- 第5コマンドで結果の表示 そのサンプル(10SNP,251人の結果。最上段はハプロタイプ名(この場合は1,2,...10)、2段目からハプロタイプIDとその多型のアレルと推定頻度。最下段は推定にあたって出た値(詳細、省略)
> print.haplo.em(save.em.keep)
============================================================================================================
Haplotypes
============================================================================================================1 2 3 4 5 6 7 8 9 10 hap.freq
1 0 0 0 0 0 0 0 0 0 0 0.06834
2 0 0 0 0 0 1 0 0 0 0 0.00244
3 1 0 0 1 1 0 0 0 0 1 0.51803
4 1 0 0 1 1 0 0 0 1 0 0.02763
5 1 0 0 1 1 0 1 0 0 0 0.37622
6 1 0 0 1 1 0 1 1 0 0 0.00228
7 1 0 1 1 1 0 1 0 0 0 0.00258
8 1 0 1 1 1 0 1 1 0 0 0.00002
9 1 1 0 1 1 0 1 0 0 0 0.00111
10 1 1 0 1 1 0 1 1 0 0 0.00002
11 1 1 1 1 1 0 1 0 0 0 0.00132
12 1 1 1 1 1 0 1 1 0 0 0.00002
============================================================================================================
Details
============================================================================================================lnlike = -369.8037
lr stat for no LD = 312.1477 , df = 1 , p-val = 0
1 1 0 0 1 1 9 9
0 1 0 1 0 0 1 1
1 1 0 1 0 0 0 0
9 9 0 1 1 1 0 1
- ジェノタイプパターン別人数ファイル"weight.txt"(第1パターンに3人、第2、3パターンに2人、第4パターンに1人の計、3+2+2+1=8人)
3
2
2
1
- 多型名データファイルは、(1)と同じ
- Haploviewの.infoファイルと同形式とする
- 行数は多型数、列数は2
- 第1カラムは多型名、第2カラムは多型位置
- タブ区切り
- サンプルファイル(4多型)"snp.info"
SNP34 47063263
SNP56 47063331
SNP62 47063675
SNP78 47067844
- 実行
- コマンドは以下の6つ
library(haplo.stats)
geno<-read.table("genotype_w.txt",FALSE,"\t")
weight1<-read.table("weight.txt",FALSE,"\t")
label1<-read.table("snp.info",FALSE,"\t")
save.em.keep<-haplo.em(geno,locus.label=label1$V1,weight=weight1,miss.val=9)
print.haplo.em(save.em.keep)
- 第1コマンドでhaplo.statsパッケージの読み込み
- 第2コマンドでgenotypeパターン別人数のデータをweightオブジェクトに取り込み
- 第3コマンドでgenotypeデータをgenoオブジェクトに取り込み
- 第4コマンドで、多型名データをlabel1オブジェクトに取り込み
- 第5コマンドで推定実行(ジェノタイプデータをgenoで引渡し、多型名とlabel1オブジェクトの第1列(label1$V1)で渡している。不明値は9なので、miss.val=9と指定している。パターン別人数をweight=weight1として渡している)
- 第6コマンドで結果の表示 そのサンプル(10SNP,41パターンに分かれる251人の結果。最上段はハプロタイプ名(この場合は1,2,...10)、2段目からハプロタイプIDとその多型のアレルと推定頻度。最下段は推定にあたって出た値(詳細、省略)
- (1)でのサンプル出力と元データは同一。推定ハプロタイプ頻度がわずかに異なることと、推定にあたっての尤度などが異なることに注意。
> print.haplo.em(save.em.keep)
============================================================================================================
Haplotypes
============================================================================================================1 2 3 4 5 6 7 8 9 10 hap.freq
1 0 0 0 0 0 0 0 0 0 0 0.06834
2 0 0 0 0 0 1 0 0 0 0 0.00244
3 1 0 0 1 1 0 0 0 0 1 0.51803
4 1 0 0 1 1 0 0 0 1 0 0.02763
5 1 0 0 1 1 0 1 0 0 0 0.37622
6 1 0 0 1 1 0 1 1 0 0 0.00230
7 1 0 1 1 1 0 1 0 0 0 0.00258
8 1 0 1 1 1 0 1 1 0 0 0.00001
9 1 1 0 1 1 0 1 0 0 0 0.00103
10 1 1 0 1 1 0 1 1 0 0 0.00001
11 1 1 1 1 1 0 1 0 0 0 0.00140
12 1 1 1 1 1 0 1 1 0 0 0.00001
============================================================================================================
Details
============================================================================================================lnlike = -369.8035
lr stat for no LD = -491.8254 , df = 1 , p-val = 1