单个样本NGS数据如何做拷贝数变异分析呢

  • PDF

  • R Script

读其文档的时候发现,是可以针对单个样本进行拷贝数变异分析的,代码如下:

  1. library(seqCNA)

  2. data(seqsumm_HCC1143)

  3. head(seqsumm_HCC1143)

  4. dim(seqsumm_HCC1143)

  5. tail(seqsumm_HCC1143)

  6. ## 200Kb windows to calculate the GC content and counts.

  7. rco = readSeqsumm(tumour.data=seqsumm_HCC1143)

  8. rco = applyFilters(rco, trim.filter=1, mapq.filter=2)

  9. rco = runSeqnorm(rco)

  10. rco = runGLAD(rco)

  11. plotCNProfile(rco)

  12. rco = applyThresholds(rco, seq(-0.8,4,by=0.8), 1)

  13. plotCNProfile(rco)

  14. summary(rco)

  15. head(rco@output)

  16. writeCNProfile(rco,'./')

虽然其算法比较复杂,但是用法很简单,对input的数据进行了多步骤处理,而且其input数据本身是比较简单的,如下:

  1. > head(seqsumm_HCC1143)

  2.  chrom win.start reads.gc reads.mapq counts

  3. 1  chr1     0e+00    0.551      1.691   1199

  4. 2  chr1     2e+05    0.534      0.620    824

  5. 3  chr1     4e+05    0.457      0.831   8469

  6. 4  chr1     6e+05    0.545      6.479   1459

  7. 5  chr1     8e+05    0.720     31.619   1094

  8. 6  chr1     1e+06    0.766     38.205    976

  9. > dim(seqsumm_HCC1143)

  10. [1] 5314    5

  11. > tail(seqsumm_HCC1143)

  12.     chrom win.start reads.gc reads.mapq counts

  13. 5309  chr5 179800000    0.559     35.081   1946

  14. 5310  chr5 180000000    0.568     35.668   1970

  15. 5311  chr5 180200000    0.545     34.427   1790

  16. 5312  chr5 180400000    0.572     34.286   1569

  17. 5313  chr5 180600000    0.586     22.844   1591

  18. 5314  chr5 180800000    0.562      0.319    845

就是对单个样本的bam文件进行200kb的窗口进行滑动计算每个窗口的gc含量,该窗口区域覆盖的reads数量,还有比对的质量值,很容易写脚本进行计算。

  1. GENOME='/home/jianmingzeng/reference/genome/human_g1k_v37/human_g1k_v37.fasta'

  2. bam='ESCC13-T1_recal.bam'

  3. samtools mpileup -f $GENOME $bam |\

  4. perl -alne '{$pos=int($F[1]/200000); $key="$F[0]\t$pos";$GC{$key}++ if $F[2]=~/[GC]/;$counts_sum{$key}+=$F[3];$number{$key}++;}END{print "$_\t$number{$_}\t$GC{$_}\t$counts_sum{$_}" foreach keys %number}' |\

  5. sort -k1,1 -k 2,2n >T1.windows

得到的结果如下:

  1. head GC_stat.10k.txt

  2. chr1    1   7936    3885    582219

  3. chr1    2   2123    934 88167

  4. chr1    3   1969    169 28729

  5. chr1    4   3556    593 48724

  6. chr1    5   8828    2582    176627

  7. chr1    6   8229    2290    117675

  8. chr1    7   8794    438 156158

  9. chr1    8   10000   723 211816

  10. chr1    9   9077    2421    247285

  11. chr1    10  9415    1661    371830

前面两行是窗口的坐标,第几号染色体的第几个窗口,后面3行是数据,分别是每个窗口的测到的碱基数,GC碱基数,测序总深度。

然后走seqCNA流程

  1. library(seqCNA)

  2. a=read.table('wgs/GC_stat.10k.txt',fill = T)

  3. a=na.omit(a)

  4. a$GC = a[,4]/a[,3]

  5. a$depth = a[,5]/a[,3]

  6. a = a[a$depth<100,]

  7. plot(a$GC,a$depth)

  8. a=a[,c(1,2,6,5)]

  9. colnames(a)=c('chrom','win.start','reads.gc','counts')

  10. a$counts=floor(a$counts/150)

  11. a$reads.mapq=30

  12. library(seqCNA)  

  13. head(a)

  14. dim(a)

  15. tail(a)

  16. a$win.start=a$win.start*10000

  17. a=a[a$chrom %in% paste0('chr',c(1:22,'X','Y')),]

  18. a=a[a$win.start>0,]

  19. a=a[a$counts>0,]

  20. a=a[a$reads.gc>0,]

  21. a=a[,c(1:3,5,4)]

  22. ## 200Kb windows to calculate the GC content and counts.

  23. rco = readSeqsumm(tumour.data=a)

  24. rco = applyFilters(rco, trim.filter=1, mapq.filter=2)

  25. rco = runSeqnorm(rco)

  26. rco = runGLAD(rco)

  27. plotCNProfile(rco)

  28. rco = applyThresholds(rco, seq(-0.8,4,by=0.8), 1)

  29. plotCNProfile(rco)

  30. summary(rco)

  31. head(rco@output)

  32. writeCNProfile(rco,'./')

分析结果汇总信息:

  1. Basic information:

  2.  SeqCNAInfo object with 306397 10Kbp-long windows.

  3.  PEM information is not available.

  4.  Paired normal is not available.

  5.  Genome and build unknown (chromosomes chr1 to chrY).

  6. Total filtered windows: 23717.

  7. The profile is normalized and segmented.

  8. Copy numbers called from 1 to 8.

  9.  CN1:34924 windows.

  10.  CN2:95226 windows.

  11.  CN3:116829 windows.

  12.  CN4:35047 windows.

  13.  CN5:554 windows.

  14.  CN6:100 windows.

  15.  CN7:0 windows.

  16.  CN8:0 windows.

单个样本的CNV结果如图

为什么要计算GC含量呢

这个是二代测序本身的技术限制,很容易探究到测序深度和GC含量是显著相关的,代码如下:

  1. a=read.table('T1.windows')

  2. a$GC = a[,4]/a[,3]

  3. a$depth = a[,5]/a[,3]

  4. a = a[a$depth<100,]

  5. plot(a$GC,a$depth)

  6. library(ggplot2)

  7. # GET EQUATION AND R-SQUARED AS STRING

  8. # SOURCE: http://goo.gl/K4yh

  9. lm_eqn <- function(x,y){

  10. m <- lm(y ~ x);

  11. eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,

  12. list(a = format(coef(m)[1], digits = 2),

  13. b = format(coef(m)[2], digits = 2),

  14. r2 = format(summary(m)$r.squared, digits = 3)))

  15. as.character(as.expression(eq));

  16. }

  17. p=ggplot(a,aes(GC,depth)) + geom_point() +

  18. geom_smooth(method='lm',formula=y~x)+

  19. geom_text(x = 0.5, y = 100, label = lm_eqn(a$GC , a$depth), parse = TRUE)

  20. p=p+theme_set(theme_set(theme_bw(base_size=20)))

  21. p=p+theme(text=element_text(face='bold'),

  22. axis.text.x=element_text(angle=30,hjust=1,size =15),

  23. plot.title = element_text(hjust = 0.5) ,

  24. panel.grid = element_blank(),

  25. #panel.border = element_blank()

  26. )

  27. print(p)

可以很明显看到GC含量和测序深度是高度相关的

GC含量和测序深度

WES的CNV探究-conifer软件使用

(0)

相关推荐

  • circMTO1吸附miR-9参与肝癌发展

    样本来源 289例HCC和癌旁样本(7对样本用于芯片检测) 技术手段 circRNA芯片.circRIP(circRNA pull down).FISH .IHC.qPCR 为了进一步验证,研究者在2 ...

  • LAG-3 expression in of MEL and G/GEJC

    早前更新了Relatlimab在MEL临床成功和 Lag-3 Franchise Update ,很少看到LAG-3表达情况的研究,这次小贵子自己更新了一个LAG-3在黑瘤和G/GEJC中的表达 ht ...

  • 利用本地安全策略全面禁止360等特定厂商软件的安装与运行

    各位不知道有没有这种经历,机子让别人玩了一上午,回来发现,自己干干净净的系统多了一堆某某安全助手,某某杀毒,某某手机助手等等,最可恨的还是不知一系列的,如果360和TX.金山.瑞星之流同时装上,这时候 ...

  • 软硬酸碱理论及在合成中应用

    科学家在研究亲核反应时发现某些亲电中心如RCO+.H+等很容易和某些不易极化的试剂如F-.OH-等反应,而另一些亲电中心如R+.Br+等很容易和一些易极化的试剂如I-.CN-等反应,故提出了酸碱的硬度 ...

  • 使用inferCNV来推断airway转录组数据的拷贝数变异

    前面我们介绍了单细胞转录组表达矩阵可以推断CNV的文献出处及历史,也简单过了一半broad开发的inferCNV软件,但是只运行了其测试数据,远远不够.单细胞转录组数据分析CNV使用broad出品的i ...

  • 使用inferCNV来推断CCLE转录组数据的拷贝数变异

    前面我们介绍了单细胞转录组表达矩阵可以推断CNV的文献出处及历史,也简单过了broad开发的inferCNV软件,在其提供的测试数据上面成功运行了,也测试了airway这个转录组数据,但是效果不好,现 ...

  • 同事作弊,一键做完前期分析,连各种数据都导好了?

    | 每天5分钟,学习最新的设计知识 | 你不会还在用PS或AI慢慢画前期分析吧?天呐,这样又慢,而且数据还很容易出错.如果想做这样的分析图,没个一两天你怕是做不完了. 文末附前期分析数据可视化神器 前 ...

  • 真正的实战经验 用几个数据解决做红油的一个关键环节

    红油,绝对可以说是一种让人又爱又恨的存在! 稍微对餐饮有些了解的人都知道,红油是四川.重庆.陕西等地各种风靡全国的小吃的核心点,可以说一锅好的红油直接就可以决定调味的档次. 但为什么说又爱又恨呢?因为 ...

  • 案例分享丨数据安全保护从数据分级做起

    数据是学校的核心资产和战略资源,保障数据安全已成为网络安全工作中的普遍共识和现实需求. 然而在高校的传统认识中,数据安全只是网络信息安全的一个组成部分,而网络信息安全又只是信息化建设的一个组成部分,信 ...

  • 拷贝数变异(CNV)

    人类基因组由23对染色体中的60亿个碱基(或核苷酸)组成. 正常人类基因组成分通常是以2个拷贝存在,分别来自父母. 拷贝数变异(CNV)是由基因组发生重排而导致的,一般指长度为1kb以上的基因组大片段 ...

  • 掌握用户数据,做精准化营销!一物一码3.0让品牌“无法抄袭”

    数据是钢,分析是铸造.如果你想制造出一件好兵器,二者缺一不可.如果其中存在一个短板,你可能就会因为一件烂兵器而死在战场上.品牌商只有掌握大量的用户数据后进行合理化分析,部署最佳的营销战略,做最好精准化 ...

  • 腾讯数据科学家手把手教你做用户行为分析(案例:出行选择)

    导读:生活中的选择行为无处不在,数据分析师面对的商业场景也存在大量的用户选择问题.系统.科学地研究用户选择问题,得到选择行为背后的客观规律并基于这些规律提出业务优化策略,这些能力对于数据分析师非常重要 ...

  • QIAcuity数字PCR如何实现拷贝数变异的精准检测

    拷贝数变异 (Copy Number Variation, CNV) 是由基因组发生重排而导致的,一般指长度为1kb以上的基因组大片段的拷贝数增加或者减少[1].拷贝数变异是人类许多疾病(如肿瘤.遗传 ...