使用R語言包(LEA)【LEA示例】

1.R包的下載(R version 3.6)

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("LEA")

如果R版本是老版本的刻获,請查看網(wǎng)站Bioconductor release的要求進行R包下載。
注:具體怎么在R中進行操作在以下網(wǎng)站中有詳細說明炕婶。
http://membres-timc.imag.fr/Olivier.Francois/tutoRstructure.pdf

2.加載其他函數(shù)

source("http://membres-timc.imag.fr/Olivier.Francois/Conversion.R")
source("http://membres-timc.imag.fr/Olivier.Francois/POPSutilities.R")

3導入輸入文件

#struct2geno函數(shù)的講解
struct2geno(file = input.file, TESS = FALSE, diploid = TRUE, FORMAT = 2,
extra.row = 0, extra.col = 0, output = "./genotype.geno")

注:input.file(導入文件):structure或tess 2.3格式到LEA所使用的.geno和.lfmm格式。
TESS=FALSE:當額外的列包含所有不包含基因型信息的列時候為FALSE.
TESS=TRUE:當額外的列包含所有不包含基因型信息和地理信息的列時候為FALSE.
diploid=TRUE:代表為二倍體莱预。
FORMAT=2:意味著每個個體使用兩行數(shù)據(jù)對標記進行編碼柠掂。
FORMAT=1:意味著每個個體使用一行數(shù)據(jù)對標記進行編碼。
extra.row/.col:表示額外行/列數(shù)依沮。
"./genotype.geno":輸出文件的路徑涯贞。

4.使用R包進行群體結構分析

4.1example1:Allelic markers(等位基因標記)

  分析在歐洲二次contract后通過空間顯式結合模擬所產生的群體遺傳數(shù)據(jù)。在最初的一個分離的階段后危喉,一個物種開始從遙遠的南方殖民到歐洲宋渔,一些在伊利比亞群島,一些在土耳其辜限。第二次contract發(fā)生在中世紀的歐洲皇拣,靠近德國。數(shù)據(jù)由10個二倍體個體的60個族群樣本組成列粪,用100個等位基因標記對10個二倍體個體進行基因分型审磁。

4.1.1數(shù)據(jù)的下載和轉換

input.file = "http://membres-timc.imag.fr/Olivier.Francois/secondary_contact.str"
struct2geno(file = input.file, TESS = TRUE, diploid = TRUE, FORMAT = 2,
extra.row = 0, extra.col = 0, output = "secondary_contact.geno")

4.1.2k值設置

  k值的設置可以通過LEA包中的snmf函數(shù)設置完成谈飒。
library(LEA)
obj.snmf = snmf("secondary_contact.geno", K = 3, alpha = 100, project = "new")
qmatrix = Q(obj.snmf, K = 3)

4.1.3 600個個體祖先系數(shù)柱狀圖 {Q-matrix(用barplot呈現(xiàn))}

barplot(t(qmatrix), col = c("orange","violet","lightgreen"), border = NA, space = 0,
        xlab = "Individuals", ylab = "Admixture coefficients")

4.1.4 通過在歐洲地理地圖上疊加餅圖法進行admixture群體估計

  為達到這個目標岂座,我們需要讀取樣本的地理坐標和創(chuàng)建樣本標志符。
  共有60個群體樣本杭措,10個在每個群體中费什。
coord = read.table("coordinates.coord")
pop = rep(1:60, each = 10)
K = 3
Npop = length(unique(pop))
qpop = matrix(NA, ncol = K, nrow = Npop)
coord.pop = matrix(NA, ncol = 2, nrow = Npop)
for (i in unique(pop)){
qpop[i,] = apply(qmatrix[pop == i,], 2, mean)
coord.pop[i,] = apply(coord[pop == i,], 2, mean)}
library(mapplots)
plot(coord, xlab = "Longitude", ylab = "Latitude", type = "n")
map(add = T, col = "grey90", fill = TRUE)
for (i in 1:Npop){
add.pie(z = qpop[i,], x = coord.pop[i,1], y = coord.pop[i,2], labels = "",
col = c("orange","violet","lightgreen"))}
pop = scan("mypop.txt")

4.1.5 選擇集群數(shù)

在LEA里選擇集群數(shù)是基于交叉熵準則,這一準則也被admixture程序所使用手素。交叉熵準則基于一部分被掩蓋基因型的預測和交叉驗證的方法鸳址。更小的交叉熵準則的值通常意味著能夠更好的運行。我們執(zhí)行8個K值泉懦,然后選擇交叉熵的曲線到達平臺期時候的K值稿黍。
obj.snmf = snmf("/Users/bcl/secondary_contact.geno", K = 1:8, ploidy = 2, entropy = T,
alpha = 100, project = "new")

plot(obj.snmf, col = "blue4", cex = 1.4, pch = 19)

4.2example2:SNP data

接下來我們考慮來自于歐洲的擬南芥的SNP數(shù)據(jù).這些數(shù)據(jù)是從Horton等人所研究的大量數(shù)據(jù)中抽出來的一部分。調查了一號染色體上1096個近交生態(tài)型(52001個SNPs)的群體結構崩哩。

4.2.1SNP數(shù)據(jù)的下載

 數(shù)據(jù)保存在磁盤中巡球,并且還為每次加入加載單獨的坐標。
url = "http://membres-timc.imag.fr/Olivier.Francois/Arabidopsis/A_thaliana_chr1.geno"
download.file(url = url, destfile = "./A_thaliana_chr1.geno")
url = "http://membres-timc.imag.fr/Olivier.Francois/Arabidopsis/at_coord.coord"
download.file(url = url, destfile = "./at_coord.coord")

4.2.2使用snmf函數(shù)評估K值

  注:此時我們認為這些物種是這些數(shù)據(jù)的單倍體邓嘹。
obj.at = snmf("/Users/bcl/A_thaliana_chr1.geno", K = 1:10, ploidy = 1, entropy = T,
CPU = 1, project = "new")

plot(obj.at, col = "blue4", cex = 1.4, pch = 19)

4.2.3可視化K=5時候祖先系數(shù)矩陣

qmatrix = Q(obj.at, K =5)
  因為只有個別數(shù)據(jù)酣栈,沒有群體樣本。因此我們不能像第一個例子一樣使用圖表映射汹押。相反我們應該計算admixture系數(shù)的空間估計矿筝。我們在一個地理圖上表示空間預測。為達到這一目的棚贾,需要一個代表歐洲的光柵網(wǎng)格窖维。光柵可以從GIS應用程序下載或者網(wǎng)上榆综。
asc.raster="http://membres-timc.imag.fr/Olivier.Francois/RasterMaps/Europe.asc"
grid=createGridFromAsciiRaster(asc.raster)
constraints=getConstraintsFromAsciiRaster(asc.raster, cell_value_min=0)
coord.at = read.table("at_coord.coord")
接下來,我們使用POPSutilities.R函數(shù)組中的maps函數(shù)來執(zhí)行祖先系數(shù)的空間插值铸史。輸出一個漂亮顏色的admixture系數(shù)圖奖年。使用max選項,只有對祖先的最大貢獻在地圖的每個地理點上表示沛贪。
maps(matrix = qmatrix, coord.at, grid, constraints, method = "max",
main = "Ancestry coefficients", xlab = "Longitude", ylab = "Latitude", cex = .5)
map(add = T, interior = F)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末陋守,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子利赋,更是在濱河造成了極大的恐慌水评,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媚送,死亡現(xiàn)場離奇詭異中燥,居然都是意外死亡,警方通過查閱死者的電腦和手機塘偎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門疗涉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吟秩,你說我怎么就攤上這事咱扣。” “怎么了涵防?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵闹伪,是天一觀的道長。 經(jīng)常有香客問我壮池,道長偏瓤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任椰憋,我火速辦了婚禮厅克,結果婚禮上,老公的妹妹穿的比我還像新娘橙依。我一直安慰自己证舟,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布票编。 她就那樣靜靜地躺著褪储,像睡著了一般。 火紅的嫁衣襯著肌膚如雪慧域。 梳的紋絲不亂的頭發(fā)上鲤竹,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音,去河邊找鬼辛藻。 笑死碘橘,一個胖子當著我的面吹牛,可吹牛的內容都是我干的吱肌。 我是一名探鬼主播痘拆,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼氮墨!你這毒婦竟也來了纺蛆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤规揪,失蹤者是張志新(化名)和其女友劉穎桥氏,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猛铅,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡字支,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了奸忽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堕伪。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栗菜,靈堂內的尸體忽然破棺而出欠雌,到底是詐尸還是另有隱情,我是刑警寧澤苛萎,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布桨昙,位于F島的核電站检号,受9級特大地震影響腌歉,放射性物質發(fā)生泄漏。R本人自食惡果不足惜齐苛,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一翘盖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凹蜂,春花似錦馍驯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至擂煞,卻和暖如春混弥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背对省。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工蝗拿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晾捏,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓哀托,卻偏偏與公主長得像惦辛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仓手,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容