2021-01-02根据vcf文件计算SNP密度并用circli
转载自:https://www.cnblogs.com/triple-y/p/10331449.html
收集vcftools所有用法
命令
vcftools --vcf snp.bialles.vcf --SNPdensity100000--outStatResults/SNPdensity
100000 是指定窗口长度
--out 是输出文件的前缀
使用R语言中的circlize包画图
参考
用circlize包绘制circos plot
https://www.jianshu.com/p/a87bcc1cb67b
代码
df<-read.table("SNPdensity.snpden",sep="\t",header=T)
head(df)
df<-df[,c(1,2,4)]
colnames(df)<-c("Chr","X","Y")
head(df)
df$X<-df$X/1000000
options(scipen=999)
library(circlize)
library(RColorBrewer)
col<-RColorBrewer::brewer.pal(12,"Paired")
circos.initialize(factors=df$Chr,x=df$X)
circos.trackPlotRegion(factors=df$Chr,y=df$Y,
panel.fun=function(x,y){
circos.axis()
},track.height =0.05)
for(i in1:12){
highlight.sector(sector.index = paste0("Chr",i),col=col[i])
circos.text(CELL_META$xcenter, CELL_META$ycenter,
labels = paste0("Chr",i),
sector.index = paste0("Chr",i),cex=0.5)
}
circos.trackPlotRegion(factors=df$Chr,y=df$Y)
circos.trackLines(df$Chr,df$X,df$Y,col=col)
circos.trackPlotRegion(factors=df$Chr,y=df$Y)
circos.trackPoints(df$Chr,df$X,df$Y,col=col,cex=0.5)
circos.trackHist(df$Chr,df$X,col=col)
circos.clear()
结果
image.png
还想实现的其他功能:
想开一个口子用俩给每一圈添加文字标签,如何用代码实现还不太清楚,想到一个解决办法是多加一条染色体,然后出图后手工编辑将这条染色体删除掉,然后添加文字标签
如何填加一圈柱形图呢?
vcftools计算SNP密度的时候是否可以设置滑动窗口?