參悟 Estimated Effective Migration Surface(EEMS)

入門

在比較早之前就看過一篇簡書

[EEMS推測生境內(nèi)生物的基因流 - 簡書 (jianshu.com)](http://www.reibang.com/p/9ef469ed7c98)

介紹過EEMS這款軟件咽瓷,點了收藏召烂,直接擱置。最近才慢慢參悟該軟件的使用沼琉,踩過很多坑北苟,所以直接介紹一下EEMS。

乍練

首先上官網(wǎng):https://github.com/dipetkov/eems
使用手冊在Documentation中打瘪,有更詳細(xì)的說明友鼻。

通曉

EMMS的安裝比較麻煩,每一個模塊都需要單獨編譯闺骚,這里只介紹我用到的三個模塊彩扔。

#EMMS 主體可以直接git clone 下載 略
#首先是軟件主命令 runeems_snps
#需要兩款其他軟件作為支持 
#Eigen進(jìn)行線性代數(shù)計算
https://eigen.tuxfamily.org/index.php?title=Main_Page
#下載后解壓 安裝過程直接 粘貼下來:
Let's call this directory 'source_dir' (where this INSTALL file is).
Before starting, create another directory which we will call 'build_dir'.
Do:
  cd build_dir
  cmake source_dir
  make install
The "make install" step may require administrator privileges.
You can adjust the installation destination (the "prefix")
by passing the -DCMAKE_INSTALL_PREFIX=myprefix option to cmake, as is
explained in the message that cmake prints at the end.

#Boost進(jìn)行隨機數(shù)生成和生境幾何形狀
https://www.boost.org/
(不記得了 可以google 一下 how to install boost)

#兩款軟件裝好后,找到/eems/runeems_snps/src Makefile
#修改依賴路徑 make 就好 例:
EIGEN_INC = /data/01/user152/software/eigen-3.2.10/eigeneigen/include/eigen3/
BOOST_LIB = /data/01/user152/software/boost/lib
BOOST_INC = /data/01/user152/software/boost/include

#然后是bed2diffs模塊的編譯
#需要先安裝  libplinkio (https://github.com/fadern/libplinkio)
#這個比較簡單僻爽,略
#同樣找到Makefile 修改依賴路徑(在src里) 例:
PLINKIO = /data/01/user152/software/plinkio
EXE = bed2diffs_v1
OBJ = bed2diffs_v1.o data.o

CXXFLAGS = -I/data/01/user152/software/plinkio/include -O3 -Wall -Werror -fopenmp
LDFLAGS = -lplinkio

#最后是plot模塊虫碉,跟著手冊裝就好
#遇到rgos裝不上的情況,去跟管理員py一下胸梆,讓root裝一下就ok了敦捧。

至此,軟件就搞定了碰镜。

小成

runeems_snp 需要三個主要輸入文件:
*.diffs 遺傳距離矩陣绞惦,可以通過VCF轉(zhuǎn)換
*.coord 采樣的坐標(biāo),經(jīng)緯度就可
*.outer 棲息地坐標(biāo)洋措,同經(jīng)緯度
現(xiàn)在我們一個個準(zhǔn)備輸入文件:

.diff

此處坑較多济蝉,務(wù)必注意
#首先要確定VCF中的個體是不是每個都有采樣信息,沒有的話需要刪掉,外群也需要刪掉王滤。
#可以用vcftools 刪除個體

#我在做的過程中做過很多次贺嫂,只介紹跑通的這次的做法,要問我為什么這么做雁乡,別問第喳,問就是這么做能跑通
1. 需要將VCF處理為下種模樣
1. 第一列需要都改為1
2. POS 順延
3. ID 為snp1 順延
#之后運行PLINK
plink --vcf sample.vcf --allow-extra-chr --maf 0.05 --recode --out sample
plink --noweb --file sample --allow-extra-chr --make-bed --maf 0.05 --allele1234  --out sample

生成的smple.[bed/bim/fam]就是下一步的生成文件。

bed2diffs_v1 --bfile  ./sample

會生成第一個輸入文件踱稍, sample.diffs

.coord

記錄個體采樣地理位置的文件:

'經(jīng)度' \t'緯度'
建議經(jīng)度在前曲饱,當(dāng)然緯度在前也可以,不過后面需要注意這個的前后順序

.outer

記錄棲息地位置的文件
說人話就是
把所有樣本包括進(jìn)去的一個地理范圍珠月,類似下圖



采樣地點都在范圍內(nèi)扩淀。
可以用此網(wǎng)站準(zhǔn)備改文件。

http://www.birdtheme.org/useful/v3tool.html

到此為止啤挎,最主要的三個文件也就準(zhǔn)備好了驻谆,還有一類可選的文件。詳細(xì)的可以閱讀手冊庆聘。

大成

輸入文件準(zhǔn)備好了就可以運行軟件了胜臊。是一個類似配置文件的形式。

#params-run.ini
datapath = ./data/sample  # 輸入文件前綴的路徑
mcmcpath = ./out   #輸出文件路徑
#gridpath =   #剛提到的可選的輸入文件前綴路徑
nIndiv =48  #個體數(shù)
nSites =5343964  #位點數(shù)
nDemes =700 #grid 網(wǎng)格數(shù)700我覺得有點太慢了伙判。象对。。宴抚。
diploid =true  #是否為二倍體
numMCMCIter =2000000
numBurnIter =1000000
numThinIter =9999
因為用到的是SNP數(shù)據(jù)织盼,三個輸入文件內(nèi)并不能體現(xiàn)位點數(shù),因此我用的是真實的位點數(shù)酱塔,可不可以瞎編我也不知道。
Demes 我理解的是最后網(wǎng)格數(shù)的多少危虱,越多越慢羊娃,示例為300好像,我采用700埃跷,具體見下圖蕊玷。
剩下的三個建議就默認(rèn)吧
#運行
runeems_snps --params params-run.ini

圓滿

輸出文件都有了,最重要的一點就是可視化弥雹。

###這里手冊里介紹的很詳細(xì)垃帅,不多加贅述
library("rEEMSplots")

eems_results <- file.path("out-1")  #輸出文件路徑
name_figures <- file.path("out")  #輸出圖片文件名前綴

eems.plots(mcmcpath = eems_results,
           plotpath = paste0(name_figures, "-output-PDFs"),  #輸出為PDF
           longlat = TRUE,  # TRUE 指經(jīng)度在前 緯度在后 FALSE反之
           out.png = FALSE, #輸出為PDF
           #add.grid = TRUE,  #可選輸入文件才有
           #col.grid = "gray90",  #可選輸入文件才有
           #lwd.grid = 2,  #可選輸入文件才有
           #add.outline = TRUE,  # 是否顯示邊界 (我覺得太丑了)
           #col.outline = "blue",
           #lwd.outline = 5,
           add.demes = TRUE,  #顯示demes
           col.demes = "red",
           pch.demes = 5,
           min.cex.demes = 0.5,
           max.cex.demes = 1.5
           )

最后結(jié)果大致這樣:


大道

判斷結(jié)果好不好的重要標(biāo)準(zhǔn)是: 模擬的模型是否收斂
可視化后有一個圖能用來判斷。
doc里是這么解釋的:


The eems.plots function in the rEEMSplots package generates a posterior trace plot. (a) This MCMC
chain obviously has not converged. (b) There is no indication that the MCMC chain has not converged. This is
not quite the same as there is evidence that the MCMC chain has converged. (c) To be confident that EEMS has
converged, we can run the MCMC sampler for more iterations. (d) Alternatively, to be confident that EEMS has
converged, we can run the MCMC sampler several times, each time starting from a different randomly initialized
parameter state.

說人話呢就是 最差也得是b圖的樣子剪勿。
為了達(dá)到收斂贸诚,有兩種方法

1. 多跑幾次,選最好的
2. 用上一次的結(jié)果作為下一次的輸入,循環(huán)
我們就草率的選2哈酱固!
#params-pre.ini
datapath = ./data/sample
mcmcpath = ./out
prevpath = ./out-1
#gridpath = 
nIndiv =48
nSites =5343964
nDemes =700
diploid =true
numMCMCIter =1000000
numBurnIter =0
numThinIter =9999

跑到能讓自己舒服的結(jié)果就好械念。
感謝 軟件作者 及 DumplingLucky 還有KZR

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者运悲。
  • 序言:七十年代末龄减,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子班眯,更是在濱河造成了極大的恐慌希停,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件署隘,死亡現(xiàn)場離奇詭異宠能,居然都是意外死亡,警方通過查閱死者的電腦和手機定踱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門棍潘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人崖媚,你說我怎么就攤上這事亦歉。” “怎么了畅哑?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵肴楷,是天一觀的道長。 經(jīng)常有香客問我荠呐,道長赛蔫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任泥张,我火速辦了婚禮呵恢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘媚创。我一直安慰自己渗钉,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布钞钙。 她就那樣靜靜地躺著鳄橘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芒炼。 梳的紋絲不亂的頭發(fā)上瘫怜,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音本刽,去河邊找鬼鲸湃。 笑死赠涮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唤锉。 我是一名探鬼主播世囊,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窿祥!你這毒婦竟也來了株憾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晒衩,失蹤者是張志新(化名)和其女友劉穎嗤瞎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體听系,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡贝奇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靠胜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掉瞳。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浪漠,靈堂內(nèi)的尸體忽然破棺而出陕习,到底是詐尸還是另有隱情,我是刑警寧澤址愿,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布该镣,位于F島的核電站,受9級特大地震影響响谓,放射性物質(zhì)發(fā)生泄漏损合。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一娘纷、第九天 我趴在偏房一處隱蔽的房頂上張望嫁审。 院中可真熱鬧,春花似錦赖晶、人聲如沸律适。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至棉圈,卻和暖如春涩堤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背分瘾。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工胎围, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吁系,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓白魂,卻偏偏與公主長得像汽纤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子福荸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容