structure图绘制(三)----structure图的绘制
2019-10-08 本文已影响0人
bcl_hx
如何用经过格式转换形成的bed,bim,fam格式的文件绘制简单的structure图呢?下面将开始介绍admixtrue软件的使用以及如何用输出的结果在R中绘图。
1.admixture中进行数据处理
(1)登录服务器,传文件
首先,你可以通过FileZilla把bed,bim,fam格式的文件传到服务器上(也可用代码传)。然后打开终端登录服务器,代码如下:
ssh root(用户名)@服务器地址
password(密码)
cd /usr/hx/test/ //地址为你把文件传到服务器上放的地方。
file
(2) 选择合适的k值
比如, 想要k值选择1,2,3,4,5, 6,7,8可以写为:
cd /usr/hx/admixture_linux-1.3.0/ //cd到你所存放admixture_linux-1.3.0的位置。
for K in 1 2 3 4 5 6 7 8 ; do /usr/hx/admixture_linux-1.3.0/admixture --cv /usr/hx/admixture_linux-1.3.0/merge/merge.bed $K | tee log${K}.out; done //注:do后面的路径为你安装admixture的路径,merge.bed为你要跑到文件,K值可以根据你的要求做调整,其他的参数不需要改。
跑完之后生成out、Q、P格式文件。
然后用grep查看*out文件中的CV error(交叉验证的误差值)。最小的那个即为最合适的K值(注:由于测试用SNP文件少,所以导致k一直都在减少,下面以K=4为例绘图)。
grep -h CV *out
2.R studio中绘制图形
将服务器上的merge(即跑的文件).4(即最佳k值).Q下载到电脑上(FileZilla)即可。
打开R studio 输入以下代码即可完成绘图。注:rainbow(?)括号内的值与k同。
ta1 = read.table("/Users/bcl/Desktop/structure/merge.4.Q") //路径为你所下载的文件所在的。
head(ta1)
barplot(t(as.matrix(ta1)),col = rainbow(4),
xlab = "Individual",
ylab = "Ancestry",
border = NA)