用R語言對vcf文件進(jìn)行數(shù)據(jù)挖掘.7 測序深度覆蓋度

目錄

  1. 前言
  2. 方法簡介
  3. 從vcf文件里提取有用信息
  4. tidy vcfR
  5. vcf可視化1
  6. vcf可視化2
  7. 測序深度覆蓋度
  8. 窗口縮放
  9. 如何單獨(dú)分離染色體
  10. 利用vcf信息判斷物種染色體倍數(shù)
  11. CNV分析

vcf數(shù)據(jù)里除了位點(diǎn)的ATGC的對比,進(jìn)行純合/雜合判斷的以外袄简。還有一個重要的項(xiàng)目就是DP,測序深度。測序深度不僅是看測序質(zhì)量的重要參考,也是對染色體倍數(shù)體以及基因拷貝數(shù)進(jìn)行評估的重要指標(biāo)豺型。

現(xiàn)重復(fù)一下之前的操作奋蔚,讀取數(shù)據(jù),提取必要的數(shù)據(jù)拳话。

提取矩陣數(shù)據(jù)

一般的VCF文件都很大,用手動提取里面的信息肯定不大現(xiàn)實(shí)种吸。用vcfR就可以輕松實(shí)現(xiàn)弃衍。

library(vcfR)
## 
##    *****       ***   vcfR   ***       *****
##    This is vcfR 1.8.0.9000 
##      browseVignettes('vcfR') # Documentation
##      citation('vcfR') # Citation
##    *****       *****      *****       *****
vcf_file <- system.file("extdata", "pinf_sc50.vcf.gz", package = "pinfsc50")
vcf <- read.vcfR(vcf_file, verbose = FALSE)

查看一下R讀取的數(shù)據(jù)。

vcf
## ***** Object of Class vcfR *****
## 18 samples
## 1 CHROMs
## 22,031 variants
## Object size: 22.4 Mb
## 7.929 percent missing data
## *****        *****         *****
head(vcf)
## [1] "***** Object of class 'vcfR' *****"
## [1] "***** Meta section *****"
## [1] "##fileformat=VCFv4.1"
## [1] "##source=\"GATK haplotype Caller, phased with beagle4\""
## [1] "##FILTER=<ID=LowQual,Description=\"Low quality\">"
## [1] "##FORMAT=<ID=AD,Number=.,Type=Integer,Description=\"Allelic depths fo [Truncated]"
## [1] "##FORMAT=<ID=DP,Number=1,Type=Integer,Description=\"Approximate read  [Truncated]"
## [1] "##FORMAT=<ID=GQ,Number=1,Type=Integer,Description=\"Genotype Quality\">"
## [1] "First 6 rows."
## [1] 
## [1] "***** Fixed section *****"
##      CHROM              POS   ID REF  ALT QUAL      FILTER
## [1,] "Supercontig_1.50" "41"  NA "AT" "A" "4784.43" NA    
## [2,] "Supercontig_1.50" "136" NA "A"  "C" "550.27"  NA    
## [3,] "Supercontig_1.50" "254" NA "T"  "G" "774.44"  NA    
## [4,] "Supercontig_1.50" "275" NA "A"  "G" "714.53"  NA    
## [5,] "Supercontig_1.50" "386" NA "T"  "G" "876.55"  NA    
## [6,] "Supercontig_1.50" "462" NA "T"  "G" "1301.07" NA    
## [1] 
## [1] "***** Genotype section *****"
##      FORMAT           BL2009P4_us23             
## [1,] "GT:AD:DP:GQ:PL" "1|1:0,7:7:21:283,21,0"   
## [2,] "GT:AD:DP:GQ:PL" "0|0:12,0:12:36:0,36,427" 
## [3,] "GT:AD:DP:GQ:PL" "0|0:27,0:27:81:0,81,1117"
## [4,] "GT:AD:DP:GQ:PL" "0|0:29,0:29:87:0,87,1243"
## [5,] "GT:AD:DP:GQ:PL" "0|0:26,0:26:78:0,78,1034"
## [6,] "GT:AD:DP:GQ:PL" "0|0:23,0:23:69:0,69,958" 
##      DDR7602                     IN2009T1_us22              
## [1,] "1|1:0,6:6:18:243,18,0"     "1|1:0,8:8:24:324,24,0"    
## [2,] "0|0:20,0:20:60:0,60,819"   "0|0:16,0:16:48:0,48,650"  
## [3,] "0|0:26,0:26:78:0,78,1077"  "0|0:23,0:23:69:0,69,946"  
## [4,] "0|0:27,0:27:81:0,81,1158"  "0|0:32,0:32:96:0,96,1299" 
## [5,] "0|0:30,0:30:90:0,90,1242"  "0|0:41,0:41:99:0,122,1613"
## [6,] "0|0:36,0:36:99:0,108,1556" "0|0:35,0:35:99:0,105,1467"
##      LBUS5                       NL07434                    
## [1,] "1|1:0,6:6:18:243,18,0"     "1|1:0,12:12:36:486,36,0"  
## [2,] "0|0:20,0:20:60:0,60,819"   "0|0:28,0:28:84:0,84,948"  
## [3,] "0|0:26,0:26:78:0,78,1077"  "0|1:19,20:39:99:565,0,559"
## [4,] "0|0:27,0:27:81:0,81,1158"  "0|1:19,19:38:99:523,0,535"
## [5,] "0|0:30,0:30:90:0,90,1242"  "0|1:22,22:44:99:593,0,651"
## [6,] "0|0:36,0:36:99:0,108,1556" "0|1:29,25:54:99:723,0,876"
## [1] "First 6 columns only."
## [1] 
## [1] "Unique GT formats:"
## [1] "GT:AD:DP:GQ:PL"
## [1]

選取我們需要的部分也就是Genotype Section里的DP區(qū)域坚俗。

dp <- extract.gt(vcf, element='DP', as.numeric=TRUE)

測序深度箱狀圖

par(mar=c(8,4,1,1))
#boxplot(dp, las=3, col=c("#C0C0C0", "#808080"), ylab="Depth", log='y', las=2)
boxplot(dp, las=3, col=c("#C0C0C0", "#808080"), ylab="Depth", las=2)
abline(h=seq(0,1e4, by=100), col="#C0C0C088")

眾所周知箱狀圖的特點(diǎn)就是(boxplot)包含了所有的信息镜盯,包括異常值outlier。正因?yàn)檫@個原因猖败,這張圖很大程度上受到了這些異常值的影響速缆,變得非常難懂。自己看看還可以恩闻,用來發(fā)表文章的話肯定不行艺糜。

測序深度小提琴圖

經(jīng)過log2轉(zhuǎn)換,我們可以得到理想的效果。

library(reshape2)
library(ggplot2)
dpf <- melt(dp, varnames=c('Index', 'Sample'), value.name = 'Depth', na.rm=TRUE)
head(dpf)
dpf <- dpf[ dpf$Depth > 0,]
p <- ggplot(dpf, aes(x=Sample, y=Depth)) + geom_violin(fill="#C0C0C0", adjust=1.0,
                                                       scale = "count", trim=TRUE)
p <- p + theme_bw()
p <- p + theme(axis.title.x = element_blank(), 
               axis.text.x = element_text(angle = 60, hjust = 1, size=12))
p <- p + scale_y_continuous(trans=scales::log2_trans(), 
                            breaks=c(1, 10, 100, 800),
                            minor_breaks=c(1:10, 2:10*10, 2:8*100))
p <- p + theme(axis.title.y = element_text(size=12))
p <- p + theme( panel.grid.major.y=element_line(color = "#A9A9A9", size=0.6) )
p <- p + theme( panel.grid.minor.y=element_line(color = "#C0C0C0", size=0.2) )
p <- p + stat_summary(fun.y=median, geom="point", shape=23, size=2)
p

又或者不需要轉(zhuǎn)換倦踢,而是通過過濾數(shù)據(jù)來改善箱圖效果送滞。舉個例子,提取90%的信賴區(qū)間的數(shù)據(jù)來可視化辱挥。

sums <- apply(dp, MARGIN=2, quantile, probs=c(0.05, 0.95), na.rm=TRUE)
dp2 <- sweep(dp, MARGIN=2, FUN = "-", sums[1,])
dp[dp2 < 0] <- NA
dp2 <- sweep(dp, MARGIN=2, FUN = "-", sums[2,])
dp[dp2 > 0] <- NA
dp[dp < 4] <- NA
par(mar=c(8,4,1,1))
boxplot(dp, las=3, col=c("#C0C0C0", "#808080"), ylab="Depth")
abline(h=seq(0,200, by=20), col="#C0C0C088")

這樣也可以獲得類似的結(jié)果犁嗅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者晤碘。
  • 序言:七十年代末褂微,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子园爷,更是在濱河造成了極大的恐慌宠蚂,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件童社,死亡現(xiàn)場離奇詭異求厕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扰楼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門呀癣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弦赖,你說我怎么就攤上這事项栏。” “怎么了蹬竖?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵沼沈,是天一觀的道長。 經(jīng)常有香客問我币厕,道長列另,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任旦装,我火速辦了婚禮访递,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘同辣。我一直安慰自己,他們只是感情好惭载,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布旱函。 她就那樣靜靜地躺著,像睡著了一般描滔。 火紅的嫁衣襯著肌膚如雪棒妨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機(jī)與錄音券腔,去河邊找鬼伏穆。 笑死,一個胖子當(dāng)著我的面吹牛纷纫,可吹牛的內(nèi)容都是我干的枕扫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼辱魁,長吁一口氣:“原來是場噩夢啊……” “哼烟瞧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起染簇,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤参滴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锻弓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砾赔,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年青灼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暴心。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡聚至,死狀恐怖酷勺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扳躬,我是刑警寧澤脆诉,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站贷币,受9級特大地震影響击胜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜役纹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一偶摔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧促脉,春花似錦辰斋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旁仿,卻和暖如春藕夫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工毅贮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留办悟,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓滩褥,卻偏偏與公主長得像病蛉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铸题,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345

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