根據vcf文件計算SNP密度并用circlize可視化結果

參考

收集vcftools所有用法

命令
vcftools --vcf snp.bialles.vcf --SNPdensity 100000 --out StatResults/SNPdensity

100000 是指定窗口長度
--out 是輸出文件的前綴

使用R語言中的circlize包畫圖

參考

用circlize包繪制circos plot

代碼

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(8,"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 in 1:8){
  highlight.sector(sector.index = paste0("LG",i),col=col[i])
  circos.text(CELL_META$xcenter, CELL_META$ycenter,
              labels = paste0("LG",i),
              sector.index = paste0("LG",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.trackPlotRegion(factors=df$Chr,y=df$Y)
circos.trackHist(df$Chr,df$X,col=col)
circos.clear()

結果


image.png

還想實現的其他功能:

  • 想開一個口子用倆給每一圈添加文字標簽,如何用代碼實現還不太清楚,想到一個解決辦法是多加一條染色體,然后出圖后手工編輯將這條染色體刪除掉,然后添加文字標簽

  • 如何填加一圈柱形圖呢?

  • vcftools計算SNP密度的時候是否可以設置滑動窗口?

歡迎大家關注我的公眾號
小明的數據分析筆記本

公眾號二維碼.jpg

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容