manta分析SV的结果有点懵

染色体SV (Structural Variation)变异包含Insertion、Deletion、Duplication、Inversions、Translocation等5大类结构变异,其中最后一种变异类型要复杂一些,又可以细分染色体内、染色体间、是否反转等情况。目前分析SV的软件,在鉴定结构变异的底层逻辑是借助reads的比对情况,如pair-reads的比对方向是否一致,split-reads的比对结果。那么,首先要知道reads比对到参考基因组后会有哪些情况,如下图,展示了illumina平台pair-end测序的reads比对后,reads的方向情况:

split-reads可以理解为一条reads比对到两个不同的地方,或者只有一边的部分能比对上。软件借助这些信息,识别潜在的SV断点并确定突变的类型。各种变异类型与reads比对情况之间的关系如下图所示:

目前做SV分析的软件有很多,这里介绍的是Manta,该软件由illumina开发,根据文献的结果来看软件的效果不错。下图展示了软件包括的全部过程:

虽然流程图看着挺复杂,但软件使用起来确实挺简单的,不过,像Manta这样第一步先生成运行脚本的软件确实很少见。

configManta.py --bam normal_bqsr.bam --tumorBam tumor_bqsr.bam --referenceFasta genome.fasta --runDir sv_result

./manta/sv_result/runWorkflow.py -m local -j 6 -g 100

软件生成的运行脚本文件名字统一都是runWorkflow.py,多个样本时一定指定到不同的文件夹里,可以用样本名作为结果目录。如果后续想要在IGV展示结果,可以在生成脚本的时候添加--generateEvidenceBam参数生成变异的bam文件。结果文件夹会生成好几个文件,每个文件的解释如下:

Manta虽然可以检测Insertions、Deletions、、Tandem Duplications、Inversions、Interchromosomal Translocations五种类型,但在结果文件里面却只有四种,可用下面的命令快速查看:

zcat somaticSV.vcf.gz | grep -v "^#" | grep -w "PASS" | cut -f 3 | tr ":" "\t" | cut -f 1 | sort | uniq -c

# 结果如下
350 MantaBND
40 MantaDEL
25 MantaDUP
45 MantaINS

另外三种都可以根据名称对应到变异类型,BND (breakend)看着就有点懵了。软件默认结果里将Inversions、Interchromosomal Translocations变异的结果都以断点的形式记录,例如一个Inversions由四个断点的记录组成:

chr1    17124941        MantaBND:1445:0:1:1:3:0:0       T       [chr1:234919886[T       999     PASS    SVTYPE=BND;MATEID=MantaBND:1445:0:1:1:3:0:1;CIPOS=0,1;HOMLEN=1;HOMSEQ=T;INV5;EVENT=MantaBND:1445:0:1:0:0:0:0;JUNCTION_QUAL=254;BND_DEPTH=107;MATE_BND_DEPTH=100 GT:FT:GQ:PL:PR:SR       0/1:PASS:999:999,0,999:65,8:15,51
chr1    17124948        MantaBND:1445:0:1:0:0:0:0       T       T]chr1:234919824]       999     PASS    SVTYPE=BND;MATEID=MantaBND:1445:0:1:0:0:0:1;INV3;EVENT=MantaBND:1445:0:1:0:0:0:0;JUNCTION_QUAL=999;BND_DEPTH=109;MATE_BND_DEPTH=83      GT:FT:GQ:PL:PR:SR       0/1:PASS:999:999,0,999:60,2:0,46
chr1    234919824       MantaBND:1445:0:1:0:0:0:1       G       G]chr1:17124948]        999     PASS    SVTYPE=BND;MATEID=MantaBND:1445:0:1:0:0:0:0;INV3;EVENT=MantaBND:1445:0:1:0:0:0:0;JUNCTION_QUAL=999;BND_DEPTH=83;MATE_BND_DEPTH=109      GT:FT:GQ:PL:PR:SR       0/1:PASS:999:999,0,999:60,2:0,46
chr1    234919885       MantaBND:1445:0:1:1:3:0:1       A       [chr1:17124942[A        999     PASS    SVTYPE=BND;MATEID=MantaBND:1445:0:1:1:3:0:0;CIPOS=0,1;HOMLEN=1;HOMSEQ=A;INV5;EVENT=MantaBND:1445:0:1:0:0:0:0;JUNCTION_QUAL=254;BND_DEPTH=100;MATE_BND_DEPTH=107 GT:FT:GQ:PL:PR:SR       0/1:PASS:999:999,0,999:65,8:15,51

可以利用软件提供的脚本convertInversion.py,将原始结果的BND转换一下:

convertInversion.py ~/software/samtools genome.fasta somaticSV.vcf.gz | gzip -c >somaticSV.convert.vcf.gz

上面展示的Inversions结果变成了下面所示的两条记录,所以,如果要统计Inversions的变异数,这两个记录只能算作一个:

chr1    17124940        MantaINV:1445:0:1:1:3:0 C       <INV>   999     PASS    END=234919885;SVTYPE=INV;SVLEN=217794945;CIPOS=0,1;CIEND=-1,0;HOMLEN=1;HOMSEQ=T;EVENT=MantaINV:1445:0:1:0:0:0;JUNCTION_QUAL=254;INV5    GT:FT:GQ:PL:PR:SR       0/1:PASS:999:999,0,999:65,8:15,51
chr1    17124948        MantaINV:1445:0:1:0:0:0 T       <INV>   999     PASS    END=234919824;SVTYPE=INV;SVLEN=217794876;EVENT=MantaINV:1445:0:1:0:0:0;JUNCTION_QUAL=999;INV3   GT:FT:GQ:PL:PR:SR        0/1:PASS:999:999,0,999:60,2:0,46

有意思的是,Interchromosomal Translocations的结果转换后还是以BND的形式保存。不过,这里面分成染色体内和染色体间易位,具体看断点是否在发生在不同染色体间。第三列为断点的ID,如MantaINV:1445:0:1:1:3:0,该值是唯一的,记录了断点的情况,具体每个部分的含义如下:

从图上的解释来看,LocusID为SV在断点图上的标识,Node1ID、Node2ID分别标识了SV在断点图上的节点,由此可以推测这三个标识相同应该表示同一个变异,从上面的结果也同样可以看出。如果是这样的话,那么就可以据此统计易位的结果了。

除此之外,结果中的ALT表示方法也不容易理解,BND为断点的两个记录,CHROM、POS中为一个断点位置,在ALT中为另外一个断点位置。[...[......]...]分别表示易位序列发生在mate断点位置的5‘端还是3'端。

以上解释不确定是否正确,如果发现有问题的话可以告知一下。原以为SV很好分析,没成想看到Manta结果的时候整蒙圈了,生成的结果居然有点像半成品,想要成熟的结果还需要再深加工一下。更多信息可以阅读软件文档:https://github.com/Illumina/manta/blob/master/docs/userGuide/README.md

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容