NIPT

NIPT即非侵入性产前检测,适用于检测21、18、13号染色体的三体综合征。实际上,NIPT的分析流程与CNV的分析流程相似。主要的分析流程是先得到唯一比对的reads,再提取每条染色体的reads来做一个Z检验得到Z值,因为Z值在[-3, 3]这个范围的统计学意义上是占了99%,因此认为超出这个范围时就是阳性。各种背景知识这篇意见稿说的很清楚了。

测试数据可以使用NCBI的PRJNA400134。总共有3405个样本,是优讯医学上传的,可以随便下几十个来测试一下,虽然我也不知道哪个是阳性样本。

比对

使用bwa aln模式进行比对单端数据。

bwa aln -n 0 -e 0 -k 0 -t 16 hg19.fa s1.fq.gz > s1.sai
bwa samse -n -1 hg19.fa s1.sai s1.fq.gz > s1.sam

排序

samtools view s1.sam -bSh > s1.bam
samtools sort -@ 16 s1.bam -o s1.sorted.bam
samtools index s1.sorted.bam

过滤

samtools rmdup -s s1.sorted.bam s1.rmdups.bam
samtools view -F 4 s1.rmdups.bam -bSh > s1.final.bam
samtools index s1.final.bam

利用GC含量校正reads数

基本上现在的分析流程都会使用loess算法来进行校正,使用的是这篇论文的算法。 目前,也可以使用deeptools里现成的工具进行计算。deeptools需要2bit格式的参考基因。

wget http://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/faToTwoBit
chmod +x faToTwoBit
faToTwoBit hg19.fa hg19.2bit
computeGCBias -b s1.final.bam --effectiveGenomeSize 2864785220 -g hg19.2bit -l 75 -o s1.freq -p 16
correctGCBias -b s1.final.bam --effectiveGenomeSize 2864785220 -g hg19.2bit --GCbiasFrequenciesFile s1.freq -o s1.corect.bam -p 16

提取reads数

在校正后,可以使用samtools提取reads数

samtools idxstats s1.corect.bam | sed -n '2,25'p | cut -f 1,3 > s1.counts

重复操作

对于每个样本,都进行上述操作,这样就可以得到很多counts数。然后这个时候就可以自己愉快的用python或者R来计算每个样本的每个染色体的Z值啦。当然,在实际的操作上,我们需要的是30个以上的正常样本作为对照组,这时候再加入一个受测样本来算Z值。关于Z值怎么计算,请看上面的意见稿。真的不难呀。

用现成的

其实NIPT的现成工具还算多,亲身体验过觉得还不错的有R包NIPTeR,有WisecondorX。都是安装操作都简单的。

其他

国内还有两家公司说自己开发了新算法,可以看一看。

29120459

26534864