专栏名称: 生信技能树
生物信息学学习资料分析,常见数据格式及公共数据库资料分享。常见分析软件及流程,基因检测及癌症相关动态。
目录
相关文章推荐
51好读  ›  专栏  ›  生信技能树

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

生信技能树  · 公众号  ·  · 2017-10-29 09:30

正文

在bioconductor上面看到一个R包 seqCNA

  • 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







请到「今天看啥」查看全文